카카오톡 링크기능 추가 및 기타 버그 수정

This commit is contained in:
chicpro
2014-07-15 16:59:54 +09:00
parent d9b8d31225
commit 2658dde159
22 changed files with 121 additions and 13 deletions

View File

@ -177,6 +177,12 @@ if(!isset($config['cf_optimize_date'])) {
ADD `cf_optimize_date` date NOT NULL default '0000-00-00' AFTER `cf_popular_del` ", true);
}
// 카카오톡링크 api 키
if(!isset($config['cf_kakao_js_apikey'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_kakao_js_apikey` varchar(255) NOT NULL DEFAULT '' AFTER `cf_googl_shorturl_apikey` ", true);
}
if(!$config['cf_faq_skin']) $config['cf_faq_skin'] = "basic";
if(!$config['cf_mobile_faq_skin']) $config['cf_mobile_faq_skin'] = "basic";
@ -1056,6 +1062,10 @@ if ($config['cf_icode_id'] && $config['cf_icode_pw']) {
<td>
<input type="text" name="cf_googl_shorturl_apikey" value="<?php echo $config['cf_googl_shorturl_apikey'] ?>" id="cf_googl_shorturl_apikey" class="frm_input"> <a href="http://code.google.com/apis/console/" target="_blank" class="btn_frmline">API Key 등록하기</a>
</td>
<th scope="row"><label for="cf_kakao_js_apikey">카카오 Javascript API Key</label></th>
<td>
<input type="text" name="cf_kakao_js_apikey" value="<?php echo $config['cf_kakao_js_apikey'] ?>" id="cf_kakao_js_apikey" class="frm_input"> <a href="http://developers.kakao.com/" target="_blank" class="btn_frmline">앱 등록하기</a>
</td>
</tr>
</tbody>
</table>

View File

@ -127,6 +127,7 @@ $sql = " update {$g5['config_table']}
cf_icode_server_ip = '{$_POST['cf_icode_server_ip']}',
cf_icode_server_port = '{$_POST['cf_icode_server_port']}',
cf_googl_shorturl_apikey = '{$_POST['cf_googl_shorturl_apikey']}',
cf_kakao_js_apikey = '{$_POST['cf_kakao_js_apikey']}',
cf_facebook_appid = '{$_POST['cf_facebook_appid']}',
cf_facebook_secret = '{$_POST['cf_facebook_secret']}',
cf_twitter_key = '{$_POST['cf_twitter_key']}',

View File

@ -352,8 +352,8 @@ this.form.mb_intercept_date.value=this.form.mb_intercept_date.defaultValue; }">
<script>
function fmember_submit(f)
{
if (!f.mb_icon.value.match(/\.(gif|jp['e']g|png)$/i) && f.mb_icon.value) {
alert('아이콘이 이미지 파일이 아닙니다. (bmp 제외)');
if (!f.mb_icon.value.match(/\.gif$/i) && f.mb_icon.value) {
alert('아이콘은 gif 파일만 가능합니다.');
return false;
}

View File

@ -26,6 +26,15 @@ switch ($w) {
$return_url = './board.php?bo_table='.$bo_table;
}
break;
case 'sc' :
// 비밀번호 창에서 로그인 하는 경우 관리자 또는 자신의 글이면 바로 글보기로 감
if ($is_admin || ($member['mb_id'] == $write['mb_id'] && $write['mb_id']))
goto_url('./board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id);
else {
$action = './password_check.php';
$return_url = './board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id;
}
break;
default :
alert('w 값이 제대로 넘어오지 않았습니다.');
}

View File

@ -15,6 +15,19 @@ if ($w == 's') {
//set_session("ss_secret", "$bo_table|$wr[wr_num]");
set_session($ss_name, TRUE);
} else if ($w == 'sc') {
$qstr = 'bo_table='.$bo_table.'&amp;sfl='.$sfl.'&amp;stx='.$stx.'&amp;sop='.$sop.'&amp;wr_id='.$wr_id.'&amp;page='.$page;
$wr = get_write($write_table, $wr_id);
if (sql_password($wr_password) != $wr['wr_password'])
alert('비밀번호가 틀립니다.');
// 세션에 아래 정보를 저장. 하위번호는 비밀번호없이 보아야 하기 때문임.
$ss_name = 'ss_secret_comment_'.$bo_table.'_'.$wr['wr_id'];
//set_session("ss_secret", "$bo_table|$wr[wr_num]");
set_session($ss_name, TRUE);
} else
alert('w 값이 제대로 넘어오지 않았습니다.');

View File

@ -49,6 +49,15 @@ for ($i=0; $row=sql_fetch_array($result); $i++)
$list[$i]['content1'] = $row['wr_content'];
$list[$i]['content'] = conv_content($row['wr_content'], 0, 'wr_content');
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
} else {
$ss_name = 'ss_secret_comment_'.$bo_table.'_'.$list[$i]['wr_id'];
if(!get_session($ss_name))
$list[$i]['content'] = '<a href="./password.php?w=sc&amp;bo_table='.$bo_table.'&amp;wr_id='.$list[$i]['wr_id'].$qstr.'" class="s_cmt">댓글내용 확인</a>';
else {
$list[$i]['content'] = conv_content($row['wr_content'], 0, 'wr_content');
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
}
}
$list[$i]['datetime'] = substr($row['wr_datetime'],2,14);

View File

@ -478,7 +478,7 @@ if ($w == '' || $w == 'r') {
}
// 게시판그룹접근사용을 하지 않아야 하고 비회원 글읽기가 가능해야 하며 비밀글이 아니어야 합니다.
if (!$group['gr_use_access'] && $board['bO_read_level'] < 2 && !$secret) {
if (!$group['gr_use_access'] && $board['bo_read_level'] < 2 && !$secret) {
naver_syndi_ping($bo_table, $wr_id);
}

View File

@ -68,10 +68,14 @@ function array_map_deep($fn, $array)
// SQL Injection 대응 문자열 필터링
function sql_escape_string($str)
{
$pattern = G5_ESCAPE_PATTERN;
$replace = G5_ESCAPE_REPLACE;
if(defined('G5_ESCAPE_PATTERN') && defined('G5_ESCAPE_REPLACE')) {
$pattern = G5_ESCAPE_PATTERN;
$replace = G5_ESCAPE_REPLACE;
if($pattern)
$str = preg_replace($pattern, $replace, $str);
}
$str = preg_replace($pattern, $replace, $str);
$str = call_user_func('addslashes', $str);
return $str;

View File

@ -165,8 +165,8 @@ define('G5_DISPLAY_SQL_ERROR', TRUE);
define('G5_ESCAPE_FUNCTION', 'sql_escape_string');
// sql_escape_string 함수에서 사용될 패턴
define('G5_ESCAPE_PATTERN', '/(and|or).*(union|select|insert|update|delete|from|where|limit|create|drop).*/i');
define('G5_ESCAPE_REPLACE', '');
//define('G5_ESCAPE_PATTERN', '/(and|or).*(union|select|insert|update|delete|from|where|limit|create|drop).*/i');
//define('G5_ESCAPE_REPLACE', '');
// 게시판에서 링크의 기본개수를 말합니다.
// 필드를 추가하면 이 숫자를 필드수에 맞게 늘려주십시오.

View File

@ -294,6 +294,7 @@ CREATE TABLE IF NOT EXISTS `g5_config` (
`cf_facebook_secret` varchar(255) NOT NULL,
`cf_twitter_key` varchar(255) NOT NULL,
`cf_twitter_secret` varchar(255) NOT NULL,
`cf_kakao_js_apikey` varchar(255) NOT NULL,
`cf_1_subj` varchar(255) NOT NULL DEFAULT '',
`cf_2_subj` varchar(255) NOT NULL DEFAULT '',
`cf_3_subj` varchar(255) NOT NULL DEFAULT '',

10
js/kakaolink.js Normal file
View File

@ -0,0 +1,10 @@
function kakaolink_send(text, url)
{
// 카카오톡 링크 버튼을 생성합니다. 처음 한번만 호출하면 됩니다.
Kakao.Link.sendTalkLink({
webLink : {
text: String(text),
url: url // 앱 설정의 웹 플랫폼에 등록한 도메인의 URL이어야 합니다.
}
});
}

View File

@ -2640,7 +2640,7 @@ function get_search_string($stx)
$stx_pattern[] = '#\.*/+#';
$stx_pattern[] = '#\\\*#';
$stx_pattern[] = '#\.{2,}#';
$stx_pattern[] = '#[/\'\"%=*\#\(\)\|\+\-\&\!\$@~\{\}\[\]`;:\?\^\,]+#';
$stx_pattern[] = '#[/\'\"%=*\#\(\)\|\+\&\!\$~\{\}\[\]`;:\?\^\,]+#';
$stx_replace = array();
$stx_replace[] = '';

View File

@ -1,6 +1,20 @@
<?php
if (!defined('_GNUBOARD_')) exit;
// http://kr1.php.net/manual/en/function.curl-setopt-array.php 참고
if (!function_exists('curl_setopt_array')) {
function curl_setopt_array(&$ch, $curl_options)
{
foreach ($curl_options as $option => $value) {
if (!curl_setopt($ch, $option, $value)) {
return false;
}
}
return true;
}
}
// 네이버 신디케이션에 ping url 을 curl 로 전달합니다.
function naver_syndi_ping($bo_table, $wr_id)
{

View File

@ -216,6 +216,7 @@
#bo_vc a {color:#000;text-decoration:none}
#bo_vc p {padding:0 0 5px;line-height:1.8em}
#bo_vc p a {text-decoration:underline}
#bo_vc p a.s_cmt {text-decoration:none}
#bo_vc_empty {margin:0;padding:15px !important;text-align:center}
#bo_vc #bo_vc_winfo {float:left}
#bo_vc footer {zoom:1}

View File

@ -309,7 +309,12 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
<?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>
// sns 등록
$(function() {
$("#bo_vc_send_sns").load( "<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>" );
$("#bo_vc_send_sns").load(
"<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",
function() {
save_html = document.getElementById('bo_vc_w').innerHTML;
}
);
});
<?php } ?>
</script>

View File

@ -203,6 +203,7 @@
#bo_vc a {color:#000;text-decoration:none}
#bo_vc p {padding:0 0 5px;line-height:1.8em}
#bo_vc p a {text-decoration:underline}
#bo_vc p a.s_cmt {text-decoration:none}
#bo_vc_empty {margin:0;padding:15px !important;text-align:center}
#bo_vc #bo_vc_winfo {float:left}
#bo_vc footer {zoom:1}

View File

@ -309,7 +309,12 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
<?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>
// sns 등록
$(function() {
$("#bo_vc_send_sns").load( "<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>" );
$("#bo_vc_send_sns").load(
"<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",
function() {
save_html = document.getElementById('bo_vc_w').innerHTML;
}
);
});
<?php } ?>
</script>

View File

@ -21,8 +21,21 @@ $facebook_url = $sns_send.'&amp;sns=facebook';
$twitter_url = $sns_send.'&amp;sns=twitter';
$gplus_url = $sns_send.'&amp;sns=gplus';
?>
<?php if(G5_IS_MOBILE && $config['cf_kakao_js_apikey']) { ?>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<script src="<?php echo G5_JS_URL; ?>/kakaolink.js"></script>
<script>
// 사용할 앱의 Javascript 키를 설정해 주세요.
Kakao.init("<?php echo $config['cf_kakao_js_apikey']; ?>");
</script>
<?php } ?>
<ul id="bo_v_sns">
<li><a href="<?php echo $facebook_url; ?>" target="_blank"><img src="<?php echo G5_SNS_URL; ?>/icon/facebook.png" alt="페이스북으로 보내기"></a></li>
<li><a href="<?php echo $twitter_url; ?>" target="_blank"><img src="<?php echo G5_SNS_URL; ?>/icon/twitter.png" alt="트위터로 보내기"></a></li>
<li><a href="<?php echo $gplus_url; ?>" target="_blank"><img src="<?php echo G5_SNS_URL; ?>/icon/gplus.png" alt="구글플러스로 보내기"></a></li>
<?php if(G5_IS_MOBILE && $config['cf_kakao_js_apikey']) { ?>
<li><a href="javascript:kakaolink_send('<?php echo $sns_msg; ?>', '<?php echo urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); ?>');"><img src="<?php echo G5_SNS_URL; ?>/icon/kakaotalk.png" alt="카카오톡으로 보내기"></a>
<?php } ?>
</ul>

View File

@ -236,6 +236,7 @@ html.no-overflowscrolling #autosave_pop {height:auto;max-height:10000px !importa
#bo_vc a {color:#000;text-decoration:none}
#bo_vc p {padding:0 0 5px;line-height:1.8em}
#bo_vc p a {text-decoration:underline}
#bo_vc p a.s_cmt {text-decoration:none}
#bo_vc_empty {margin:0;padding:20px !important;text-align:center}
#bo_vc #bo_vc_winfo {float:left}
#bo_vc footer {zoom:1}

View File

@ -317,7 +317,12 @@ comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서
<?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>
// sns 등록
$(function() {
$("#bo_vc_send_sns").load( "<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>" );
$("#bo_vc_send_sns").load(
"<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",
function() {
save_html = document.getElementById('bo_vc_w').innerHTML;
}
);
});
<?php } ?>
</script>

View File

@ -229,6 +229,7 @@ html.no-overflowscrolling #autosave_pop {height:auto;max-height:10000px !importa
#bo_vc a {color:#000;text-decoration:none}
#bo_vc p {padding:0 0 5px;line-height:1.8em}
#bo_vc p a {text-decoration:underline}
#bo_vc p a.s_cmt {text-decoration:none}
#bo_vc_empty {margin:0;padding:20px !important;text-align:center}
#bo_vc #bo_vc_winfo {float:left}
#bo_vc footer {zoom:1}

View File

@ -317,7 +317,12 @@ comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서
<?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>
// sns 등록
$(function() {
$("#bo_vc_send_sns").load( "<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>" );
$("#bo_vc_send_sns").load(
"<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",
function() {
save_html = document.getElementById('bo_vc_w').innerHTML;
}
);
});
<?php } ?>
</script>