init
This commit is contained in:
commit
898b885c54
14 changed files with 1556 additions and 0 deletions
4
_common.php
Normal file
4
_common.php
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?
|
||||||
|
$g5_path = "../../..";
|
||||||
|
include_once("$g5_path/common.php");
|
||||||
|
?>
|
||||||
72
ajax.filter.php
Normal file
72
ajax.filter.php
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
<?
|
||||||
|
include_once("./_common.php");
|
||||||
|
|
||||||
|
if (!function_exists('convert_charset'))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
-----------------------------------------------------------
|
||||||
|
Charset 을 변환하는 함수
|
||||||
|
-----------------------------------------------------------
|
||||||
|
iconv 함수가 있으면 iconv 로 변환하고
|
||||||
|
없으면 mb_convert_encoding 함수를 사용한다.
|
||||||
|
둘다 없으면 사용할 수 없다.
|
||||||
|
*/
|
||||||
|
function convert_charset($from_charset, $to_charset, $str)
|
||||||
|
{
|
||||||
|
|
||||||
|
if( function_exists('iconv') )
|
||||||
|
return iconv($from_charset, $to_charset, $str);
|
||||||
|
elseif( function_exists('mb_convert_encoding') )
|
||||||
|
return mb_convert_encoding($str, $to_charset, $from_charset);
|
||||||
|
else
|
||||||
|
die("Not found 'iconv' or 'mbstring' library in server.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
header("Content-Type: text/html; charset={$g5['charset']}");
|
||||||
|
|
||||||
|
$subject = strtolower($_POST['subject']);
|
||||||
|
$content = strtolower(strip_tags($_POST['content']));
|
||||||
|
|
||||||
|
//euc-kr 일 경우 $config['cf_filter'] 를 utf-8로 변환한다.
|
||||||
|
if (strtolower($g5['charset']) == 'euc-kr')
|
||||||
|
{
|
||||||
|
//$subject = convert_charset('utf-8', 'cp949', $subject);
|
||||||
|
//$content = convert_charset('utf-8', 'cp949', $content);
|
||||||
|
$config['cf_filter'] = convert_charset('cp949', 'utf-8', $config['cf_filter']);
|
||||||
|
}
|
||||||
|
|
||||||
|
//$filter = explode(",", strtolower(trim($config['cf_filter'])));
|
||||||
|
// strtolower 에 의한 한글 변형으로 아래 코드로 대체 (곱슬최씨님이 알려 주셨습니다.)
|
||||||
|
$filter = explode(",", trim($config['cf_filter']));
|
||||||
|
for ($i=0; $i<count($filter); $i++)
|
||||||
|
{
|
||||||
|
$str = $filter[$i];
|
||||||
|
|
||||||
|
// 제목 필터링 (찾으면 중지)
|
||||||
|
$subj = "";
|
||||||
|
$pos = strpos($subject, $str);
|
||||||
|
if ($pos !== false)
|
||||||
|
{
|
||||||
|
if (strtolower($g5['charset']) == 'euc-kr')
|
||||||
|
$subj = convert_charset('utf-8', 'cp949', $str);//cp949 로 변환해서 반환
|
||||||
|
else
|
||||||
|
$subj = $str;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 내용 필터링 (찾으면 중지)
|
||||||
|
$cont = "";
|
||||||
|
$pos = strpos($content, $str);
|
||||||
|
if ($pos !== false)
|
||||||
|
{
|
||||||
|
if (strtolower($g5['charset']) == 'euc-kr')
|
||||||
|
$cont = convert_charset('utf-8', 'cp949', $str);//cp949 로 변환해서 반환
|
||||||
|
else
|
||||||
|
$cont = $str;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
die("{\"subject\":\"$subj\",\"content\":\"$cont\"}");
|
||||||
|
?>
|
||||||
17
inc.list_main.php
Normal file
17
inc.list_main.php
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<? if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
// 수정, 삭제 링크
|
||||||
|
$update_href = $delete_href = "";
|
||||||
|
// 로그인중이고 자신의 글이라면 또는 관리자라면 패스워드를 묻지 않고 바로 수정, 삭제 가능
|
||||||
|
if (($member['mb_id'] && ($member['mb_id'] == $write['mb_id'])) || $is_admin) {
|
||||||
|
$update_href = "./write.php?w=u&bo_table=$bo_table&wr_id={$lists[$ii]['wr_id']}&page=$page" . $qstr;
|
||||||
|
$delete_href = "javascript:del('./delete.php?bo_table=$bo_table&wr_id={$lists[$ii]['wr_id']}&page=$page".urldecode($qstr)."');";
|
||||||
|
if ($is_admin)
|
||||||
|
{
|
||||||
|
$delete_href = "javascript:del('./delete.php?bo_table=$bo_table&wr_id={$lists[$ii]['wr_id']}&token=$token&page=$page".urldecode($qstr)."');";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!$write['mb_id']) { // 회원이 쓴 글이 아니라면
|
||||||
|
$update_href = "./password.php?w=u&bo_table=$bo_table&wr_id={$lists[$ii]['wr_id']}&page=$page" . $qstr;
|
||||||
|
$delete_href = "./password.php?w=d&bo_table=$bo_table&wr_id={$lists[$ii]['wr_id']}&page=$page" . $qstr;
|
||||||
|
}
|
||||||
|
?>
|
||||||
150
inc.stat.php
Normal file
150
inc.stat.php
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
<?
|
||||||
|
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
if($is_admin){?>
|
||||||
|
<section id="clap_stat_box">
|
||||||
|
<a href="#clap_stat_box" onclick="$('#clap_wrap').slideToggle();return false;" class="ui-btn point small">▶ 통계</a>
|
||||||
|
<div id="clap_wrap">
|
||||||
|
<div class="clap_container">
|
||||||
|
<section class="clap_stat_weekly">
|
||||||
|
<h3 class="txt-center">지난 <span class="less">10</span><span class="full">14</span>일 (일별)</h3>
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<? $clap_wlist=array();
|
||||||
|
$h_max=5;
|
||||||
|
$cnt=13;
|
||||||
|
for($k=0;$k<14;$k++){
|
||||||
|
$this_day=date("Y-m-d",strtotime("today - {$k} day"));
|
||||||
|
$clap_w=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date,'%Y-%m-%d')='{$this_day}' and cl_val=''");
|
||||||
|
if($h_max<$clap_w['sum']) $h_max=$clap_w['sum'];
|
||||||
|
$clap_wlist[$cnt]['sum']=$clap_w['sum'];
|
||||||
|
$clap_wlist[$cnt]['day']=date("n/j",strtotime($this_day));
|
||||||
|
$cnt--;
|
||||||
|
}
|
||||||
|
$c_h=100/$h_max;
|
||||||
|
for($k=0;$k<14;$k++){
|
||||||
|
if($k==0) echo "<tr>";
|
||||||
|
?>
|
||||||
|
<td <?if($k<4) echo "class='old'";?>>
|
||||||
|
<p class="bar highlight" style="height:<?=$c_h * $clap_wlist[$k]['sum']?>%;"><i class="ui-btn small"><?=$clap_wlist[$k]['sum']?></i></p>
|
||||||
|
<p class="num"><?=$clap_wlist[$k]['day']?></p>
|
||||||
|
</td>
|
||||||
|
<? if($k==13) echo "</tr>";}
|
||||||
|
?></tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
<section class="clap_stat_daily">
|
||||||
|
<h3 class="txt-center"><?=G5_TIME_YMD?> (오늘)</h3>
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<?
|
||||||
|
$h_max=5;
|
||||||
|
$clap_dlist=array();
|
||||||
|
for($k=0;$k<24;$k++){
|
||||||
|
$this_hour=G5_TIME_YMD." ".sprintf('%02d',$k);
|
||||||
|
$clap_d=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date,'%Y-%m-%d %H')='{$this_hour}' and cl_val=''");
|
||||||
|
if ($h_max<$clap_d['sum']) $h_max=$clap_d['sum'];
|
||||||
|
$clap_dlist[$k]=$clap_d['sum'];
|
||||||
|
}
|
||||||
|
$c_h=100/$h_max;
|
||||||
|
for($k=0;$k<24;$k++) {
|
||||||
|
if($k==0) echo "<tr>";
|
||||||
|
?>
|
||||||
|
<td>
|
||||||
|
<p class="bar highlight" style="height:<?=$c_h * $clap_dlist[$k]?>%;"><i class="ui-btn small"><?=$clap_dlist[$k]?></i></p>
|
||||||
|
<p class="num"><?=$k?></p>
|
||||||
|
</td>
|
||||||
|
<?
|
||||||
|
if($k==11) echo "</tr><tr>";
|
||||||
|
if($k==23) echo "</tr>";
|
||||||
|
}?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
<section class="clap_stat_daily">
|
||||||
|
<h3 class="txt-center"><?=date("Y-m-d",strtotime("yesterday"))?> (어제)</h3>
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<?
|
||||||
|
$h_max=5;
|
||||||
|
$clap_dlist=array();
|
||||||
|
for($k=0;$k<24;$k++){
|
||||||
|
$this_hour=date("Y-m-d",strtotime("yesterday"))." ".sprintf('%02d',$k);
|
||||||
|
$clap_d=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date,'%Y-%m-%d %H')='{$this_hour}' and cl_val=''");
|
||||||
|
if ($h_max<$clap_d['sum']) $h_max=$clap_d['sum'];
|
||||||
|
$clap_dlist[$k]=$clap_d['sum'];
|
||||||
|
}
|
||||||
|
$c_h=100/$h_max;
|
||||||
|
for($k=0;$k<24;$k++) {
|
||||||
|
if($k==0) echo "<tr>";
|
||||||
|
?>
|
||||||
|
<td>
|
||||||
|
<p class="bar highlight" style="height:<?=$c_h * $clap_dlist[$k]?>%;"><i class="ui-btn small"><?=$clap_dlist[$k]?></i></p>
|
||||||
|
<p class="num"><?=$k?></p>
|
||||||
|
</td>
|
||||||
|
<?
|
||||||
|
if($k==11) echo "</tr><tr>";
|
||||||
|
if($k==23) echo "</tr>";
|
||||||
|
}?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
<section class="clap_stat_daily">
|
||||||
|
<h3 class="txt-center"><?=date("Y-m-d",strtotime("today -2 day"))?> (2일전)</h3>
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<?
|
||||||
|
$h_max=5;
|
||||||
|
$clap_dlist=array();
|
||||||
|
for($k=0;$k<24;$k++){
|
||||||
|
$this_hour=date("Y-m-d",strtotime("today -2 day"))." ".sprintf('%02d',$k);
|
||||||
|
$clap_d=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date,'%Y-%m-%d %H')='{$this_hour}' and cl_val=''");
|
||||||
|
if ($h_max<$clap_d['sum']) $h_max=$clap_d['sum'];
|
||||||
|
$clap_dlist[$k]=$clap_d['sum'];
|
||||||
|
}
|
||||||
|
$c_h=100/$h_max;
|
||||||
|
for($k=0;$k<24;$k++) {
|
||||||
|
if($k==0) echo "<tr>";
|
||||||
|
?>
|
||||||
|
<td>
|
||||||
|
<p class="bar highlight" style="height:<?=$c_h * $clap_dlist[$k]?>%;"><i class="ui-btn small"><?=$clap_dlist[$k]?></i></p>
|
||||||
|
<p class="num"><?=$k?></p>
|
||||||
|
</td>
|
||||||
|
<?
|
||||||
|
if($k==11) echo "</tr><tr>";
|
||||||
|
if($k==23) echo "</tr>";
|
||||||
|
}?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
<section class="clap_stat_daily">
|
||||||
|
<h3 class="txt-center"><?=date("Y-m-d",strtotime("today -3 day"))?> (3일전)</h3>
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<?
|
||||||
|
$h_max=5;
|
||||||
|
$clap_dlist=array();
|
||||||
|
for($k=0;$k<24;$k++){
|
||||||
|
$this_hour=date("Y-m-d",strtotime("today -3 day"))." ".sprintf('%02d',$k);
|
||||||
|
$clap_d=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date,'%Y-%m-%d %H')='{$this_hour}' and cl_val=''");
|
||||||
|
if ($h_max<$clap_d['sum']) $h_max=$clap_d['sum'];
|
||||||
|
$clap_dlist[$k]=$clap_d['sum'];
|
||||||
|
}
|
||||||
|
$c_h=100/$h_max;
|
||||||
|
for($k=0;$k<24;$k++) {
|
||||||
|
if($k==0) echo "<tr>";
|
||||||
|
?>
|
||||||
|
<td>
|
||||||
|
<p class="bar highlight" style="height:<?=$c_h * $clap_dlist[$k]?>%;"><i class="ui-btn small"><?=$clap_dlist[$k]?></i></p>
|
||||||
|
<p class="num"><?=$k?></p>
|
||||||
|
</td>
|
||||||
|
<?
|
||||||
|
if($k==11) echo "</tr><tr>";
|
||||||
|
if($k==23) echo "</tr>";
|
||||||
|
}?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<?}?>
|
||||||
387
list.skin.php
Normal file
387
list.skin.php
Normal file
|
|
@ -0,0 +1,387 @@
|
||||||
|
<?
|
||||||
|
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
|
||||||
|
if($is_admin) set_session("ss_delete_token", $token = uniqid(time()));
|
||||||
|
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||||
|
|
||||||
|
$width=$board['bo_width'] ? $board['bo_width'] : 100;
|
||||||
|
if($width<=100) $width=$width."%";
|
||||||
|
else $width=$width."px";
|
||||||
|
|
||||||
|
|
||||||
|
$clap_max=10;
|
||||||
|
if($board['bo_1']!='') $clap_max=$board['bo_1'];
|
||||||
|
$clap_t=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date, '%Y-%m-%d')='".G5_TIME_YMD."' and cl_ip='{$_SERVER['REMOTE_ADDR']}'");
|
||||||
|
$cl_cnt=$clap_t['sum'];
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div id="page_board_content" style="max-width:<?=$width?>;margin:0 auto;">
|
||||||
|
|
||||||
|
<? if($admin_href){?><p class="txt-right"><a href="<?=$admin_href?>" class="ui-btn admin" target="_blank">관리자</a></p><hr class="padding"><?}?>
|
||||||
|
|
||||||
|
<?
|
||||||
|
$no_id='';
|
||||||
|
|
||||||
|
|
||||||
|
$get_notice=sql_fetch("select bo_notice from {$g5['board_table']} where bo_table='{$bo_table}'");
|
||||||
|
if($get_notice['bo_notice']!=''){
|
||||||
|
$notice_id=explode(",",$get_notice['bo_notice']);
|
||||||
|
$no_id=$notice_id[0];
|
||||||
|
|
||||||
|
$file=get_file($bo_table,$no_id);
|
||||||
|
$img_list = array();
|
||||||
|
$cnt=0;
|
||||||
|
for ($k=0;$k<$board['bo_upload_count'];$k++){
|
||||||
|
if($file[$k]['file']){
|
||||||
|
$img_list[$cnt]=G5_DATA_URL."/file/".$bo_table."/".$file[$k]['file'];
|
||||||
|
$cnt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(count($img_list)>0 && !$board['bo_3']){
|
||||||
|
shuffle($img_list);
|
||||||
|
?>
|
||||||
|
<div class="rand_img txt-center">
|
||||||
|
<img src="<?=$img_list[0]?>">
|
||||||
|
</div>
|
||||||
|
<?}?>
|
||||||
|
<?}?>
|
||||||
|
<br>
|
||||||
|
<!-- 상단 공지 부분 -->
|
||||||
|
<? if($board['bo_content_head']) { ?>
|
||||||
|
<div class="board-notice">
|
||||||
|
<?=stripslashes($board['bo_content_head']);?>
|
||||||
|
</div>
|
||||||
|
<hr class="padding" />
|
||||||
|
<? } ?>
|
||||||
|
<!-- 버튼 링크 -->
|
||||||
|
<?if($is_admin || $no_id){?>
|
||||||
|
<?if($no_id){
|
||||||
|
if(!$is_admin)
|
||||||
|
include_once($board_skin_path.'/update_hit.php');
|
||||||
|
?>
|
||||||
|
<div class="clap_box txt-center ">
|
||||||
|
<form name="clap" id="clap" action="<?=$board_skin_url?>/update_hit.php" method="post" enctype="multipart/form-data" onsubmit="return clap_submit(this)" autocomplete="off">
|
||||||
|
<input type="hidden" name="bo_table" value="<?=$bo_table?>">
|
||||||
|
<input type="hidden" name="clap_max" value="<?=$clap_max?>">
|
||||||
|
<input type="hidden" name="cl_cnt" value="<?=$cl_cnt?>">
|
||||||
|
<input type="hidden" name="return_url" value="<?=G5_BBS_URL?>/board.php?bo_table=<?=$bo_table?>">
|
||||||
|
<button type="submit" class="ui-btn point clap" >박수!</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<?}?>
|
||||||
|
<hr class="padding" />
|
||||||
|
<?if (!$no_id && $is_admin){?>
|
||||||
|
<p class="txt-center">* 통계 확인 및 웹박수 랜덤이미지 등록을 위해 아래 공지 체크후 메시지를 작성해주세요.<br>* 랜덤 이미지는 글 등록 후 수정(M)을 눌러 이미지를 업로드 해주시면 됩니다.<br>
|
||||||
|
* 공지글로 작성한 내용은 노출되지 않습니다.</p>
|
||||||
|
<hr class="padding">
|
||||||
|
<? } ?>
|
||||||
|
<? if ($write_href) { ?>
|
||||||
|
<div class="ui-write-area">
|
||||||
|
<? include ($board_skin_path."/write.php"); ?>
|
||||||
|
</div>
|
||||||
|
<hr class="padding">
|
||||||
|
<? } ?>
|
||||||
|
<div class="ui-qna-list">
|
||||||
|
<ul>
|
||||||
|
<?
|
||||||
|
$lists = array();
|
||||||
|
$cnt = 0;
|
||||||
|
for ($i=0; $i<count($list); $i++) {
|
||||||
|
if(!$list[$i]['is_notice'] && !$is_admin && $list[$i]['wr_comment']<1) continue;
|
||||||
|
if($list[$i]['is_notice'] && !$is_admin && strstr($list[$i]['wr_option'],'secret')) continue;
|
||||||
|
$lists[$cnt]=$list[$i];
|
||||||
|
$cnt++;
|
||||||
|
}
|
||||||
|
for ($ii=0; $ii < count($lists); $ii++) {
|
||||||
|
|
||||||
|
include "$board_skin_path/inc.list_main.php";
|
||||||
|
$lists[$ii]['datetime']=date('Y/m/d (H:i:s)', strtotime($lists[$ii]['wr_datetime']));
|
||||||
|
|
||||||
|
$is_open = false;
|
||||||
|
|
||||||
|
if(get_cookie('read_'.$lists[$ii]['wr_id']) == $lists[$ii]['wr_password']) {
|
||||||
|
$is_open = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$lists[$ii]['content'] = conv_content($lists[$ii]['wr_content'], 0, 'wr_content');
|
||||||
|
$lists[$ii]['content'] = search_font($stx, $lists[$ii]['content']);
|
||||||
|
?>
|
||||||
|
<li>
|
||||||
|
<div class="theme-box question">
|
||||||
|
<form name="fboardlist" method="post" action="<?=$board_skin_url?>/password.php" style="margin:0">
|
||||||
|
<input type="hidden" name="bo_table" value="<?=$bo_table?>">
|
||||||
|
<input type="hidden" name="sfl" value="<?=$sfl?>">
|
||||||
|
<input type="hidden" name="stx" value="<?=$stx?>">
|
||||||
|
<input type="hidden" name="spt" value="<?=$spt?>">
|
||||||
|
<input type="hidden" name="page" value="<?=$page?>">
|
||||||
|
<input type="hidden" name="wr_idx" value="<?=$lists[$ii]['wr_id']?>">
|
||||||
|
<input type="hidden" name="sw" value="">
|
||||||
|
|
||||||
|
<? if($lists[$ii]['is_notice']) { ?>
|
||||||
|
|
||||||
|
<? $clap_total=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']}");
|
||||||
|
$clap_today=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date,'%Y-%m-%d')='".G5_TIME_YMD."' and cl_val=''");
|
||||||
|
?>
|
||||||
|
<p id="stat_total"><em>오늘: <?=sprintf("%01d",$clap_today['sum'])?></em> / <em>전체: <?=sprintf("%01d",$clap_total['sum'])?></em></p>
|
||||||
|
<?if($is_admin){?>
|
||||||
|
<p class="notice">
|
||||||
|
<strong>
|
||||||
|
<? if(($member['mb_id'] && ($member['mb_id'] == $lists[$ii]['mb_id'])) || $is_admin) { ?>
|
||||||
|
<a href="<?=$delete_href?>">D</a>
|
||||||
|
<a href="<?=$update_href?>">M</a>
|
||||||
|
<? }?>
|
||||||
|
|
||||||
|
</strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<?
|
||||||
|
include_once($board_skin_path.'/inc.stat.php');
|
||||||
|
if($lists[$ii]['wr_file']>0){?>
|
||||||
|
<a href="#" onclick="$(this).next().slideToggle();return false;" class="ui-btn small">▶ 랜덤이미지 확인</a>
|
||||||
|
<p style="display:none;" class="txt-center">
|
||||||
|
<?
|
||||||
|
for ($k=0;$k<$board['bo_upload_count'];$k++){
|
||||||
|
if($file[$k]['file']){
|
||||||
|
?>
|
||||||
|
<img src="<?=G5_DATA_URL."/file/".$bo_table."/".$file[$k]['file']?>">
|
||||||
|
<?}?>
|
||||||
|
<?}?>
|
||||||
|
</p>
|
||||||
|
<?}else{ if(!$board['bo_3']){?>
|
||||||
|
<p class="txt-center">* 수정(M)을 눌러 웹박수 랜덤이미지를 등록 해주세요.</p>
|
||||||
|
<?} }?>
|
||||||
|
<?}?>
|
||||||
|
<? } else { ?>
|
||||||
|
<p>
|
||||||
|
<span class="date">
|
||||||
|
<?=$lists[$ii]['datetime']?>
|
||||||
|
</span>
|
||||||
|
<?if($is_admin){?><?=$lists[$ii]['wr_ip']?><?}?>
|
||||||
|
<strong>
|
||||||
|
<? if($is_admin) { ?>
|
||||||
|
<a href="<?=$delete_href?>">D</a>
|
||||||
|
<a href="javascript:comment_wri('comment_write', '<?=$lists[$ii]['wr_id']?>');">R</a>
|
||||||
|
<? } ?>
|
||||||
|
</strong>
|
||||||
|
</p>
|
||||||
|
<div class="qna-content <?=!$is_admin ? " guest" : "";?>">
|
||||||
|
<?if(!$board['bo_2'] || $is_admin){
|
||||||
|
if(strstr($lists[$ii]['wr_option'], 'secret')) { ?>
|
||||||
|
<span class="txt-point">[SECRET]</span><br />
|
||||||
|
<? } ?>
|
||||||
|
<?if((!strstr($lists[$ii]['wr_option'], 'secret')) || $is_admin) { ?>
|
||||||
|
<?= $lists[$ii]['content'] ?>
|
||||||
|
<? } } ?>
|
||||||
|
</div>
|
||||||
|
<? } ?>
|
||||||
|
</form>
|
||||||
|
<?
|
||||||
|
$wr_id = $lists[$ii]['wr_id'];
|
||||||
|
include ("$board_skin_path/view_comment.php");
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<? }
|
||||||
|
// 필터
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- 페이지 -->
|
||||||
|
|
||||||
|
<div class="ui-page">
|
||||||
|
<?
|
||||||
|
$add="";
|
||||||
|
if(!$is_admin)
|
||||||
|
$add="and wr_comment=1 ";
|
||||||
|
$total=sql_fetch("select count(distinct wr_id) as cnt from {$write_table} where wr_id=wr_parent {$add}");
|
||||||
|
$total_count=$total['cnt'];
|
||||||
|
$total_page = ceil($total_count / $page_rows); // 전체 페이지 계산
|
||||||
|
$from_record = ($page - 1) * $page_rows; // 시작 열을 구함
|
||||||
|
$write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, './board.php?bo_table='.$bo_table.$qstr.'&page=');
|
||||||
|
echo $write_pages;
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<?}?>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
//if ("<?=$sca?>") document.fcategory.sca.value = "<?=$sca?>";
|
||||||
|
if ("<?=$stx?>") {
|
||||||
|
document.fsearch.sfl.value = "<?=$sfl?>";
|
||||||
|
document.fsearch.sop.value = "<?=$sop?>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// HTML 로 넘어온 <img ... > 태그의 폭이 테이블폭보다 크다면 테이블폭을 적용한다.
|
||||||
|
function resize_image()
|
||||||
|
{
|
||||||
|
var target = document.getElementsByName('target_resize_image[]');
|
||||||
|
var image_width = parseInt("<?=$board['bo_image_width']?>");
|
||||||
|
var image_height = 0;
|
||||||
|
|
||||||
|
for(i=0; i<target.length; i++) {
|
||||||
|
// 원래 사이즈를 저장해 놓는다
|
||||||
|
target[i].tmp_width = target[i].width;
|
||||||
|
target[i].tmp_height = target[i].height;
|
||||||
|
// 이미지 폭이 테이블 폭보다 크다면 테이블폭에 맞춘다
|
||||||
|
if(target[i].width > image_width) {
|
||||||
|
image_height = parseFloat(target[i].width / target[i].height)
|
||||||
|
target[i].width = image_width;
|
||||||
|
target[i].height = parseInt(image_width / image_height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
window.onload = resize_image;
|
||||||
|
|
||||||
|
const bg = $(".question.theme-box").css("background-color");
|
||||||
|
$(".qna-content.guest, .qna-content.guest a").css({"color":bg,"opacity":1,"background-color":bg});
|
||||||
|
|
||||||
|
let clap_max=10;
|
||||||
|
<? if($board['bo_1']!=''){?>
|
||||||
|
clap_max=parseInt('<?=$board['bo_1']?>');
|
||||||
|
<?}?>
|
||||||
|
let clap_t=parseInt('<?=$clap_t['sum']?>');
|
||||||
|
|
||||||
|
<?if(!$is_admin){?>
|
||||||
|
$(document).keydown(function(event){
|
||||||
|
if( (event.ctrlKey == true && (event.keyCode == 78 || event.keyCode == 82)) || (event.keyCode == 116)) {
|
||||||
|
if(clap_max==0 || (clap_max>0 && clap_t<clap_max)){
|
||||||
|
alert("박수 감사합니다!");
|
||||||
|
}else{
|
||||||
|
event.keyCode = 0;
|
||||||
|
event.cancelBubble = true;
|
||||||
|
event.returnValue = false;
|
||||||
|
alert("박수는 하루에 "+clap_max+"번 까지 칠 수 있습니다.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
<?}?>
|
||||||
|
|
||||||
|
function clap_submit(f)
|
||||||
|
{
|
||||||
|
if(clap_max>0 && clap_t>=clap_max){
|
||||||
|
alert("박수는 하루에 "+clap_max+"번 까지 칠 수 있습니다.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function comment_wri(name, id) {
|
||||||
|
$('.modify_area').hide();
|
||||||
|
var layer = document.getElementById(name+id);
|
||||||
|
layer.style.display = (layer.style.display == "none")? "block" : "none";
|
||||||
|
}
|
||||||
|
function comment_delete(url)
|
||||||
|
{
|
||||||
|
if (confirm("이 코멘트를 삭제하시겠습니까?")) location.href = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<? if ($is_checkbox) { ?>
|
||||||
|
<script>
|
||||||
|
function all_checked(sw)
|
||||||
|
{
|
||||||
|
var f = document.fboardlist;
|
||||||
|
|
||||||
|
for (var i=0; i<f.length; i++) {
|
||||||
|
if (f.elements[i].name == "chk_wr_id[]")
|
||||||
|
f.elements[i].checked = sw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_confirm(str)
|
||||||
|
{
|
||||||
|
var f = document.fboardlist;
|
||||||
|
var chk_count = 0;
|
||||||
|
|
||||||
|
for (var i=0; i<f.length; i++) {
|
||||||
|
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
|
||||||
|
chk_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!chk_count) {
|
||||||
|
alert(str + "할 게시물을 하나 이상 선택하세요.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 선택한 게시물 삭제
|
||||||
|
function select_delete()
|
||||||
|
{
|
||||||
|
var f = document.fboardlist;
|
||||||
|
|
||||||
|
str = "삭제";
|
||||||
|
if (!check_confirm(str))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!confirm("선택한 게시물을 정말 "+str+" 하시겠습니까?\n\n한번 "+str+"한 자료는 복구할 수 없습니다"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
f.action = "./delete_all.php";
|
||||||
|
f.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 선택한 게시물 복사 및 이동
|
||||||
|
function select_copy(sw)
|
||||||
|
{
|
||||||
|
var f = document.fboardlist;
|
||||||
|
|
||||||
|
if (sw == "copy")
|
||||||
|
str = "복사";
|
||||||
|
else
|
||||||
|
str = "이동";
|
||||||
|
|
||||||
|
if (!check_confirm(str))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
|
||||||
|
|
||||||
|
f.sw.value = sw;
|
||||||
|
f.target = "move";
|
||||||
|
f.action = "./move.php";
|
||||||
|
f.submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function comment_box(co_id, wr_id) {
|
||||||
|
$('.modify_area').hide();
|
||||||
|
$('#c_'+co_id).find('.modify_area').show();
|
||||||
|
$('#c_'+co_id).find('.qna-comment-content').hide();
|
||||||
|
|
||||||
|
$('#save_co_comment_'+co_id).focus();
|
||||||
|
|
||||||
|
var modify_form = document.getElementById('frm_modify_comment');
|
||||||
|
modify_form.wr_id.value = wr_id;
|
||||||
|
modify_form.comment_id.value = co_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
function modify_commnet(co_id) {
|
||||||
|
var modify_form = document.getElementById('frm_modify_comment');
|
||||||
|
var wr_content = $('#save_co_comment_'+co_id).val();
|
||||||
|
var wr_option = '';
|
||||||
|
modify_form.wr_content.value = wr_content;
|
||||||
|
modify_form.wr_option.value = wr_option;
|
||||||
|
$('#frm_modify_comment').submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form name="modify_comment" id="frm_modify_comment" action="./write_comment_update.php" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
|
||||||
|
<input type="hidden" name="w" value="cu">
|
||||||
|
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||||
|
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||||
|
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||||
|
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||||
|
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||||
|
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||||
|
|
||||||
|
<input type="hidden" name="comment_id" value="">
|
||||||
|
<input type="hidden" name="wr_id" value="">
|
||||||
|
<input type="hidden" name="wr_option" value="" >
|
||||||
|
<textarea name="wr_content" style="display: none;"></textarea>
|
||||||
|
<button type="submit" style="display: none;"></button>
|
||||||
|
</form>
|
||||||
|
<? } ?>
|
||||||
14
readme.md
Normal file
14
readme.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
## Amber 용 게시판 Webclap 스킨
|
||||||
|
|
||||||
|
작성자: 대하 (Extra Shot)
|
||||||
|
원본주소: https://extrashot.tistory.com/77
|
||||||
|
|
||||||
|
모든 아보카도 버전에 호환됩니다.
|
||||||
|
|
||||||
|
## 설치방법
|
||||||
|
|
||||||
|
아보카도가 설치된 폴더의 하위 폴더인 `skin/board/` 에 `webclap` 라는 폴더를 생성하고 파일을 업로드합니다.
|
||||||
|
|
||||||
|
```
|
||||||
|
php 최소 버전: 5.6
|
||||||
|
```
|
||||||
127
style.css
Normal file
127
style.css
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
@charset "utf-8";
|
||||||
|
|
||||||
|
textarea {display:block;}
|
||||||
|
|
||||||
|
/* 본문 */
|
||||||
|
#page_board_content { padding: 0 10px; }
|
||||||
|
|
||||||
|
.board-notice { max-width: 430px; padding: 20px; margin: 0 auto; text-align: center;} /* 상단공지 */
|
||||||
|
|
||||||
|
.clap_box button.clap {height:40px;line-height:38px;} /* 박수! 버튼 */
|
||||||
|
|
||||||
|
.ui-write-box { /* 메시지 남기기 영역 */
|
||||||
|
position:relative;
|
||||||
|
margin: 0 auto;padding-right:101px;
|
||||||
|
width: 90%;
|
||||||
|
box-sizing:border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.ui-write-box textarea { /* 메시지 남기기 텍스트박스 */
|
||||||
|
width: 100%; height: 100px;
|
||||||
|
padding: 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.ui-write-box #btn_submit { /* 메시지 남기기 버튼 */
|
||||||
|
padding:30px 0;position:absolute;right:0;top:0;
|
||||||
|
width:100px;height:100px;line-height:20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-control { padding-top: 5px; overflow: hidden; text-align: right; }
|
||||||
|
.ui-control .files {position:relative;display:flex;margin:5px 0;}
|
||||||
|
.ui-control .files dt {width:100px;flex-shrink:0;}
|
||||||
|
.ui-control .files dd {margin:0;width:100%;}
|
||||||
|
|
||||||
|
.ui-qna-list { position: relative; clear: both; } /* 메시지 리스트 전체 영역 */
|
||||||
|
.ui-qna-list li { position: relative; padding: 15px 0; } /* 각 메시지 영역 */
|
||||||
|
.ui-qna-list li p { clear: both; margin: 0 0 10px; line-height: 1.5em;}
|
||||||
|
.ui-qna-list li p.txt-center {padding:20px 0 10px;}
|
||||||
|
.ui-qna-list li p.notice {margin:0;}
|
||||||
|
.ui-qna-list li p.notice strong {position:absolute;top:10px;right:15px;}
|
||||||
|
.ui-qna-list li p strong a {
|
||||||
|
display: block; padding: 2px 5px; margin-right:5px; float: right;
|
||||||
|
font-size:9px; font-family: 'dotum', sans-serif;font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-qna-list li .ui-btn.small {
|
||||||
|
margin-top:5px;margin-left:8px;padding:0 6px;
|
||||||
|
height:20px;line-height:18px;
|
||||||
|
font-size:11px; font-family:'dotum',sans-serif;
|
||||||
|
border-radius:2px;opacity:0.8;
|
||||||
|
}
|
||||||
|
.ui-qna-list li .qna-content.guest {opacity:0;}
|
||||||
|
.ui-qna-list li .qna-content.guest::selection {opacity:1;}
|
||||||
|
.ui-qna-list li .qna-content { margin:0 15px 5px; }
|
||||||
|
.ui-qna-list li .qna-content a { word-break:break-all; }
|
||||||
|
.ui-qna-list li .qna-comment-content { position:relative;padding:5px 15px; }
|
||||||
|
.ui-qna-list li .qna-comment-content p {padding:0;margin:0;}
|
||||||
|
|
||||||
|
.ui-qna-list li ul li { padding: 0; }
|
||||||
|
.ui-qna-list li ul li .clear {text-align:right;}
|
||||||
|
.ui-qna-list li ul li .clear a {display:inline-block;float:none;}
|
||||||
|
|
||||||
|
.ui-qna-list li div.ui-write-area { padding:5px 0 0; margin-bottom: 10px;}
|
||||||
|
.ui-qna-list li div.ui-write-area button { white-space:nowrap; height: 28px; line-height: 28px; padding: 0 25px; margin-top: 10px; }
|
||||||
|
|
||||||
|
.ui-qna-list .ui-qna-list-password label { padding-right: 10px; }
|
||||||
|
.ui-qna-list .ui-qna-list-password label.blur { text-shadow: none; }
|
||||||
|
.ui-qna-list .ui-qna-list-password input { position: relative; z-index: 1; }
|
||||||
|
.ui-qna-list .ui-qna-list-password button {
|
||||||
|
height: 28px; line-height: 28px; padding: 0 25px;
|
||||||
|
font-family: 'Dotum'; margin-left: -5px; border-left-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ui-qna-list .no-data { text-align: center; line-height: 100px; }
|
||||||
|
|
||||||
|
.search-box { clear: both; float: right; margin-bottom: 10px; }
|
||||||
|
|
||||||
|
|
||||||
|
/*통계 섹션*/
|
||||||
|
#clap_wrap {display:none;max-height:340px;overflow-y:auto;}
|
||||||
|
/* #clap_wrap::-webkit-scrollbar{display:none;} */
|
||||||
|
#stat_total {text-align:center;padding: 10px 0; font-size:13px;margin-bottom:0;}
|
||||||
|
.clap_container {display:flex;flex-wrap:wrap;justify-content:space-evenly;}
|
||||||
|
.clap_container section {display:flex; flex-direction: column;justify-content: space-between;margin:10px 0;}
|
||||||
|
#clap_wrap .clap_stat_daily {width:300px;}
|
||||||
|
#clap_wrap .clap_stat_weekly {width:65%;}
|
||||||
|
|
||||||
|
#clap_wrap h3 {margin-bottom:5px;padding:8px 0;background:rgba(100,100,100,0.1);}
|
||||||
|
#clap_wrap h3 .less {display:none;}
|
||||||
|
#clap_wrap table {width:100%; margin:0 auto;}
|
||||||
|
|
||||||
|
#clap_wrap table td {
|
||||||
|
position:relative;padding:0 0 18px;height:140px;
|
||||||
|
vertical-align:bottom; text-align:center; line-height:1;
|
||||||
|
font-family:'dotum',sans-serif;font-size:11px;
|
||||||
|
box-sizing:border-box;border-bottom:1px solid rgba(100,100,100,0.1);
|
||||||
|
}
|
||||||
|
#clap_wrap .clap_stat_weekly table td {height:280px;}
|
||||||
|
|
||||||
|
#clap_wrap table td p {line-height:18px; display:block; padding:0;margin:0 auto;}
|
||||||
|
#clap_wrap table td .bar {width:12px;cursor:pointer;}
|
||||||
|
#clap_wrap table td .bar i {
|
||||||
|
display:none;
|
||||||
|
position:absolute;bottom:30%;
|
||||||
|
white-space:nowrap;
|
||||||
|
transform:translateX(-50%);
|
||||||
|
opacity:1;
|
||||||
|
}
|
||||||
|
#clap_wrap table td .bar:hover i { display:block; }
|
||||||
|
#clap_wrap table td .num {position:absolute;bottom:0;left:0;right:0;height:18px;}
|
||||||
|
@media all and (max-width: 800px) {
|
||||||
|
#clap_wrap .clap_stat_weekly {width:100%;}
|
||||||
|
}
|
||||||
|
@media all and (max-width: 480px) {
|
||||||
|
.ui-control input[type="text"],
|
||||||
|
.ui-control input[type="password"] { display: block; clear: both; width: 100%; margin-top: 10px; }
|
||||||
|
.ui-qna-list li { padding: 10px 0; }
|
||||||
|
#clap_wrap table td.old {width:0;overflow:hidden;}
|
||||||
|
#clap_wrap h3 .less {display:inline;}
|
||||||
|
#clap_wrap h3 .full, #clap_wrap table td .num .year {display:none;}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media all and (max-width: 380px) {
|
||||||
|
.ui-qna-list .ui-qna-list-password { position: relative; padding-right: 90px; }
|
||||||
|
.ui-qna-list .ui-qna-list-password label { display: none; }
|
||||||
|
.ui-qna-list .ui-qna-list-password .ui-submit { position: absolute; top: 0; right: 0; width: 90px; }
|
||||||
|
.ui-qna-list .ui-qna-list-password input { width: 100%; }
|
||||||
|
}
|
||||||
13
update_hit.php
Normal file
13
update_hit.php
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?
|
||||||
|
//if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
include_once('./_common.php');
|
||||||
|
|
||||||
|
if($clap_max==0 || ($clap_max>0 && $cl_cnt<$clap_max)){
|
||||||
|
sql_query("insert into {$g5['clap_table']}
|
||||||
|
set cl_ip='{$_SERVER['REMOTE_ADDR']}',
|
||||||
|
cl_date='".date("Y-m-d H",strtotime(G5_TIME_YMDHIS))."'
|
||||||
|
");
|
||||||
|
}
|
||||||
|
if($return_url)
|
||||||
|
goto_url($return_url);
|
||||||
|
?>
|
||||||
7
view.skin.php
Normal file
7
view.skin.php
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?
|
||||||
|
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
|
||||||
|
set_session("ss_delete_token", $token = uniqid(time()));
|
||||||
|
|
||||||
|
goto_url("./board.php?bo_table=$bo_table" . $qstr);
|
||||||
|
?>
|
||||||
114
view_comment.php
Normal file
114
view_comment.php
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
<?php
|
||||||
|
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||||
|
|
||||||
|
$list = array();
|
||||||
|
|
||||||
|
$is_comment_write = false;
|
||||||
|
if ($member['mb_level'] >= $board['bo_comment_level'])
|
||||||
|
$is_comment_write = true;
|
||||||
|
|
||||||
|
// 코멘트 출력
|
||||||
|
$sql = " select * from {$write_table} where wr_parent = '{$wr_id}' and wr_is_comment = 1 order by wr_comment, wr_comment_reply ";
|
||||||
|
$result = sql_query($sql);
|
||||||
|
for ($i=0; $c_row=sql_fetch_array($result); $i++)
|
||||||
|
{
|
||||||
|
$list[$i] = $c_row;
|
||||||
|
|
||||||
|
//$list[$i]['name'] = get_sideview($c_row['mb_id'], cut_str($c_row['wr_name'], 20, ''), $c_row['wr_email'], $c_row['wr_homepage']);
|
||||||
|
|
||||||
|
$tmp_name = get_text(cut_str($c_row['wr_name'], $config['cf_cut_name'])); // 설정된 자리수 만큼만 이름 출력
|
||||||
|
if ($board['bo_use_sideview'])
|
||||||
|
$list[$i]['name'] = get_sideview($c_row['mb_id'], $tmp_name, $c_row['wr_email'], $c_row['wr_homepage']);
|
||||||
|
else
|
||||||
|
$list[$i]['name'] = '<span class="'.($c_row['mb_id']?'member':'guest').'">'.$tmp_name.'</span>';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 공백없이 연속 입력한 문자 자르기 (way 보드 참고. way.co.kr)
|
||||||
|
//$list[$i]['content'] = eregi_replace("[^ \n<>]{130}", "\\0\n", $c_row['wr_content']);
|
||||||
|
|
||||||
|
$list[$i]['content'] = $list[$i]['content1']= '비밀글 입니다.';
|
||||||
|
if (!strstr($c_row['wr_option'], 'secret') ||
|
||||||
|
$is_admin ||
|
||||||
|
($write['mb_id']==$member['mb_id'] && $member['mb_id']) ||
|
||||||
|
($c_row['mb_id']==$member['mb_id'] && $member['mb_id'])) {
|
||||||
|
$list[$i]['content1'] = $c_row['wr_content'];
|
||||||
|
$list[$i]['content'] = conv_content($c_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&bo_table='.$bo_table.'&wr_id='.$list[$i]['wr_id'].$qstr.'" class="s_cmt">댓글내용 확인</a>';
|
||||||
|
else {
|
||||||
|
$list[$i]['content'] = conv_content($c_row['wr_content'], 0, 'wr_content');
|
||||||
|
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$list[$i]['datetime'] = substr($c_row['wr_datetime'],2,14);
|
||||||
|
|
||||||
|
// 관리자가 아니라면 중간 IP 주소를 감춘후 보여줍니다.
|
||||||
|
$list[$i]['ip'] = $c_row['wr_ip'];
|
||||||
|
if (!$is_admin)
|
||||||
|
$list[$i]['ip'] = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", G5_IP_DISPLAY, $c_row['wr_ip']);
|
||||||
|
|
||||||
|
$list[$i]['is_reply'] = false;
|
||||||
|
$list[$i]['is_edit'] = false;
|
||||||
|
$list[$i]['is_del'] = false;
|
||||||
|
if ($is_comment_write || $is_admin)
|
||||||
|
{
|
||||||
|
$token = '';
|
||||||
|
|
||||||
|
if ($member['mb_id'])
|
||||||
|
{
|
||||||
|
if ($c_row['mb_id'] == $member['mb_id'] || $is_admin)
|
||||||
|
{
|
||||||
|
set_session('ss_delete_comment_'.$c_row['wr_id'].'_token', $token = uniqid(time()));
|
||||||
|
$list[$i]['del_link'] = './delete_comment.php?bo_table='.$bo_table.'&comment_id='.$c_row['wr_id'].'&token='.$token.'&page='.$page.$qstr;
|
||||||
|
$list[$i]['is_edit'] = true;
|
||||||
|
$list[$i]['is_del'] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!$c_row['mb_id']) {
|
||||||
|
$list[$i]['del_link'] = './password.php?w=x&bo_table='.$bo_table.'&comment_id='.$c_row['wr_id'].'&page='.$page.$qstr;
|
||||||
|
$list[$i]['is_del'] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen($c_row['wr_comment_reply']) < 5)
|
||||||
|
$list[$i]['is_reply'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 05.05.22
|
||||||
|
// 답변있는 코멘트는 수정, 삭제 불가
|
||||||
|
if ($i > 0 && !$is_admin)
|
||||||
|
{
|
||||||
|
if ($c_row['wr_comment_reply'])
|
||||||
|
{
|
||||||
|
$tmp_comment_reply = substr($c_row['wr_comment_reply'], 0, strlen($c_row['wr_comment_reply']) - 1);
|
||||||
|
if ($tmp_comment_reply == $list[$i-1]['wr_comment_reply'])
|
||||||
|
{
|
||||||
|
$list[$i-1]['is_edit'] = false;
|
||||||
|
$list[$i-1]['is_del'] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 코멘트수 제한 설정값
|
||||||
|
if ($is_admin)
|
||||||
|
{
|
||||||
|
$comment_min = $comment_max = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$comment_min = (int)$board['bo_comment_min'];
|
||||||
|
$comment_max = (int)$board['bo_comment_max'];
|
||||||
|
}
|
||||||
|
|
||||||
|
include($board_skin_path.'/view_comment.skin.php');
|
||||||
|
|
||||||
|
?>
|
||||||
107
view_comment.skin.php
Normal file
107
view_comment.skin.php
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
<?
|
||||||
|
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
?>
|
||||||
|
|
||||||
|
<script language="JavaScript">
|
||||||
|
// 글자수 제한
|
||||||
|
var char_min = parseInt(<?=$comment_min?>); // 최소
|
||||||
|
var char_max = parseInt(<?=$comment_max?>); // 최대
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- 코멘트 리스트 -->
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<!-- 코멘트 리스트 -->
|
||||||
|
<?
|
||||||
|
for ($i=0; $i<count($list); $i++) {
|
||||||
|
$comment_id = $list[$i]['wr_id'];
|
||||||
|
?>
|
||||||
|
|
||||||
|
<li id="c_<?=$comment_id?>">
|
||||||
|
<a name="c_<?=$comment_id?>"></a>
|
||||||
|
<a href="#c_<?=$comment_id?>" onclick="$(this).next().slideToggle(); return false;" class="ui-btn small">▶ 답변<?=$lists[$ii]['wr_comment']>1 ? $i+1:""?></a>
|
||||||
|
<div class="qna-comment-content" style="display:none;">
|
||||||
|
<!-- 코멘트 출력 -->
|
||||||
|
<?
|
||||||
|
if (strstr($list[$i]['wr_option'], "secret")) echo "<span style='color:#ff6600;'>*</span> ";
|
||||||
|
$str = $list[$i]['content'];
|
||||||
|
if (strstr($list[$i]['wr_option'], "secret"))
|
||||||
|
$str = "<span class='small' style='color:#ff6600;'>$str</span>";
|
||||||
|
|
||||||
|
$str = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp|mms)\:\/\/([^[:space:]]+)\.(mp3|wma|wmv|asf|asx|mpg|mpeg)\".*\<\/a\>\]/i", "<script>doc_write(obj_movie('$1://$2.$3'));</script>", $str);
|
||||||
|
$str = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp)\:\/\/([^[:space:]]+)\.(swf)\".*\<\/a\>\]/i", "<script>doc_write(flash_movie('$1://$2.$3'));</script>", $str);
|
||||||
|
$str = preg_replace("/\[\<a\s*href\=\"(http|https|ftp)\:\/\/([^[:space:]]+)\.(gif|png|jpg|jpeg|bmp)\"\s*[^\>]*\>[^\s]*\<\/a\>\]/i", "<img src='$1://$2.$3' id='target_resize_image[]' onclick='image_window(this);' border='0'>", $str);
|
||||||
|
echo $str;
|
||||||
|
$query_string = clean_query_string($_SERVER['QUERY_STRING']);
|
||||||
|
|
||||||
|
|
||||||
|
if($w == 'cu') {
|
||||||
|
$sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$comment_id' and wr_is_comment = '1' ";
|
||||||
|
$cmt = sql_fetch($sql);
|
||||||
|
if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id'])))
|
||||||
|
$cmt['wr_content'] = '';
|
||||||
|
$c_wr_content = $cmt['wr_content'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$c_edit_href = './board.php?'.$query_string.'&comment_id='.$comment_id.'&wr_id='.$wr_id.'w=cu';
|
||||||
|
|
||||||
|
?>
|
||||||
|
<? if ($list[$i]['is_edit']||$list[$i]['is_del']) { ?>
|
||||||
|
<p class="clear">
|
||||||
|
<strong>
|
||||||
|
<? if ($list[$i]['is_edit']) { ?><span><a href="javascript:comment_box('<? echo $comment_id ?>', '<?=$list[$ii]['wr_id']?>');">M</a></span><? } ?>
|
||||||
|
<? if ($list[$i]['is_del']) { ?><span><a href="javascript:comment_delete('<?=$list[$i]['del_link']?>');">D</a></span><?}?>
|
||||||
|
</strong>
|
||||||
|
</p>
|
||||||
|
<?}?>
|
||||||
|
<span id="edit_<? echo $comment_id ?>"></span><!-- 수정 -->
|
||||||
|
|
||||||
|
<input type="hidden" value="<? echo strstr($list[$i]['wr_option'],"secret") ?>" id="secret_comment_<? echo $comment_id ?>">
|
||||||
|
<textarea id="save_comment_<? echo $comment_id ?>" style="display:none"><? echo get_text($list[$i]['content1'], 0) ?></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<? if ($list[$i]['is_edit']) { ?>
|
||||||
|
<div class="modify_area" id="save_comment_<?php echo $comment_id ?>" style="display:none;">
|
||||||
|
<textarea id="save_co_comment_<?php echo $comment_id ?>" rows="4"><?php echo get_text($list[$i]['wr_content'], 0) ?></textarea>
|
||||||
|
|
||||||
|
<p class="txt-right"><button type="button" class="mod_comment ui-btn" onclick="modify_commnet('<?php echo $comment_id ?>'); return false;">수정</button></p>
|
||||||
|
</div>
|
||||||
|
<? } ?>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
<? } ?>
|
||||||
|
</ul>
|
||||||
|
<? if ($is_comment_write) {
|
||||||
|
if($w == '') $w = 'c';
|
||||||
|
?>
|
||||||
|
<div class="ui-write-area" id="comment_write<?=$lists[$ii]['wr_id']?>" style="display:none;">
|
||||||
|
<!-- 코멘트 입력테이블시작 -->
|
||||||
|
<form name="fviewcomment" method="post" action="./write_comment_update.php" autocomplete="off">
|
||||||
|
<input type="hidden" name="w" value="<? echo $w ?>" >
|
||||||
|
<input type="hidden" name="bo_table" value="<? echo $bo_table ?>">
|
||||||
|
<input type="hidden" name="wr_id" value="<? echo $wr_id ?>">
|
||||||
|
<input type="hidden" name="sca" value="<? echo $sca ?>">
|
||||||
|
<input type="hidden" name="sfl" value="<? echo $sfl ?>">
|
||||||
|
<input type="hidden" name="stx" value="<? echo $stx ?>">
|
||||||
|
<input type="hidden" name="spt" value="<? echo $spt ?>">
|
||||||
|
<input type="hidden" name="page" value="<? echo $page ?>">
|
||||||
|
|
||||||
|
|
||||||
|
<textarea id="wr_content<?=$comment_id?>" name="wr_content" rows="4" itemname="내용" required
|
||||||
|
<? if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?}?> style='width:100%; word-break:break-all;' class='tx'><?=$list[$i]['wr_content']?></textarea>
|
||||||
|
<? if ($comment_min || $comment_max) { ?><script type="text/javascript"> check_byte('wr_content', 'char_count'); </script><?}?>
|
||||||
|
|
||||||
|
<div class="txt-right" style="padding-bottom:5px;">
|
||||||
|
<button type="submit" class="ui-btn" accesskey='s'>입력</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<? } ?>
|
||||||
|
<script language='JavaScript'>
|
||||||
|
function fviewcomment_submit(f)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
413
write.php
Normal file
413
write.php
Normal file
|
|
@ -0,0 +1,413 @@
|
||||||
|
<?php
|
||||||
|
include_once('./_common.php');
|
||||||
|
include_once(G5_EDITOR_LIB);
|
||||||
|
|
||||||
|
if (!$board['bo_table']) {
|
||||||
|
alert('존재하지 않는 게시판입니다.', G5_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$bo_table) {
|
||||||
|
alert("bo_table 값이 넘어오지 않았습니다.\\nwrite.php?bo_table=code 와 같은 방식으로 넘겨 주세요.", G5_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
check_device($board['bo_device']);
|
||||||
|
|
||||||
|
$notice_array = explode(',', trim($board['bo_notice']));
|
||||||
|
|
||||||
|
if (!($w == '' || $w == 'u' || $w == 'r')) {
|
||||||
|
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($w == 'u' || $w == 'r') {
|
||||||
|
if ($write['wr_id']) {
|
||||||
|
// 가변 변수로 $wr_1 .. $wr_10 까지 만든다.
|
||||||
|
for ($i=1; $i<=10; $i++) {
|
||||||
|
$vvar = "wr_".$i;
|
||||||
|
$$vvar = $write['wr_'.$i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
alert("글이 존재하지 않습니다.\\n삭제되었거나 이동된 경우입니다.", G5_URL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($w == '') {
|
||||||
|
if ($wr_id) {
|
||||||
|
alert('글쓰기에는 \$wr_id 값을 사용하지 않습니다.', G5_BBS_URL.'/board.php?bo_table='.$bo_table);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($member['mb_level'] < $board['bo_write_level']) {
|
||||||
|
if ($member['mb_id']) {
|
||||||
|
alert('글을 쓸 권한이 없습니다.');
|
||||||
|
} else {
|
||||||
|
alert("글을 쓸 권한이 없습니다.\\n회원이시라면 로그인 후 이용해 보십시오.", './login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 음수도 true 인것을 왜 이제야 알았을까?
|
||||||
|
if ($is_member) {
|
||||||
|
$tmp_point = ($member['mb_point'] > 0) ? $member['mb_point'] : 0;
|
||||||
|
if ($tmp_point + $board['bo_write_point'] < 0 && !$is_admin) {
|
||||||
|
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글쓰기('.number_format($board['bo_write_point']).')가 불가합니다.\\n\\n포인트를 적립하신 후 다시 글쓰기 해 주십시오.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$title_msg = '글쓰기';
|
||||||
|
} else if ($w == 'u') {
|
||||||
|
// 김선용 1.00 : 글쓰기 권한과 수정은 별도로 처리되어야 함
|
||||||
|
//if ($member['mb_level'] < $board['bo_write_level']) {
|
||||||
|
if($member['mb_id'] && $write['mb_id'] == $member['mb_id']) {
|
||||||
|
;
|
||||||
|
} else if ($member['mb_level'] < $board['bo_write_level']) {
|
||||||
|
if ($member['mb_id']) {
|
||||||
|
alert('글을 수정할 권한이 없습니다.');
|
||||||
|
} else {
|
||||||
|
alert('글을 수정할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', './login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$len = strlen($write['wr_reply']);
|
||||||
|
if ($len < 0) $len = 0;
|
||||||
|
$reply = substr($write['wr_reply'], 0, $len);
|
||||||
|
|
||||||
|
// 원글만 구한다.
|
||||||
|
$sql = " select count(*) as cnt from {$write_table}
|
||||||
|
where wr_reply like '{$reply}%'
|
||||||
|
and wr_id <> '{$write['wr_id']}'
|
||||||
|
and wr_num = '{$write['wr_num']}'
|
||||||
|
and wr_is_comment = 0 ";
|
||||||
|
$row = sql_fetch($sql);
|
||||||
|
if ($row['cnt'] && !$is_admin)
|
||||||
|
alert('이 글과 관련된 답변글이 존재하므로 수정 할 수 없습니다.\\n\\n답변글이 있는 원글은 수정할 수 없습니다.');
|
||||||
|
|
||||||
|
// 코멘트 달린 원글의 수정 여부
|
||||||
|
$sql = " select count(*) as cnt from {$write_table}
|
||||||
|
where wr_parent = '{$wr_id}'
|
||||||
|
and mb_id <> '{$member['mb_id']}'
|
||||||
|
and wr_is_comment = 1 ";
|
||||||
|
$row = sql_fetch($sql);
|
||||||
|
if ($board['bo_count_modify'] && $row['cnt'] >= $board['bo_count_modify'] && !$is_admin)
|
||||||
|
alert('이 글과 관련된 댓글이 존재하므로 수정 할 수 없습니다.\\n\\n댓글이 '.$board['bo_count_modify'].'건 이상 달린 원글은 수정할 수 없습니다.');
|
||||||
|
|
||||||
|
$title_msg = '글수정';
|
||||||
|
} else if ($w == 'r') {
|
||||||
|
if ($member['mb_level'] < $board['bo_reply_level']) {
|
||||||
|
if ($member['mb_id'])
|
||||||
|
alert('글을 답변할 권한이 없습니다.');
|
||||||
|
else
|
||||||
|
alert('답변글을 작성할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', './login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||||
|
}
|
||||||
|
|
||||||
|
$tmp_point = isset($member['mb_point']) ? $member['mb_point'] : 0;
|
||||||
|
if ($tmp_point + $board['bo_write_point'] < 0 && !$is_admin)
|
||||||
|
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글답변('.number_format($board['bo_comment_point']).')가 불가합니다.\\n\\n포인트를 적립하신 후 다시 글답변 해 주십시오.');
|
||||||
|
|
||||||
|
//if (preg_match("/[^0-9]{0,1}{$wr_id}[\r]{0,1}/",$board['bo_notice']))
|
||||||
|
if (in_array((int)$wr_id, $notice_array))
|
||||||
|
alert('공지에는 답변 할 수 없습니다.');
|
||||||
|
|
||||||
|
//----------
|
||||||
|
// 4.06.13 : 비밀글을 타인이 열람할 수 있는 오류 수정 (헐랭이, 플록님께서 알려주셨습니다.)
|
||||||
|
// 코멘트에는 원글의 답변이 불가하므로
|
||||||
|
if ($write['wr_is_comment'])
|
||||||
|
alert('정상적인 접근이 아닙니다.');
|
||||||
|
|
||||||
|
// 비밀글인지를 검사
|
||||||
|
if (strstr($write['wr_option'], 'secret')) {
|
||||||
|
if ($write['mb_id']) {
|
||||||
|
// 회원의 경우는 해당 글쓴 회원 및 관리자
|
||||||
|
if (!($write['mb_id'] == $member['mb_id'] || $is_admin))
|
||||||
|
alert('비밀글에는 자신 또는 관리자만 답변이 가능합니다.');
|
||||||
|
} else {
|
||||||
|
// 비회원의 경우는 비밀글에 답변이 불가함
|
||||||
|
if (!$is_admin)
|
||||||
|
alert('비회원의 비밀글에는 답변이 불가합니다.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//----------
|
||||||
|
|
||||||
|
// 게시글 배열 참조
|
||||||
|
$reply_array = &$write;
|
||||||
|
|
||||||
|
// 최대 답변은 테이블에 잡아놓은 wr_reply 사이즈만큼만 가능합니다.
|
||||||
|
if (strlen($reply_array['wr_reply']) == 10)
|
||||||
|
alert('더 이상 답변하실 수 없습니다.\\n\\n답변은 10단계 까지만 가능합니다.');
|
||||||
|
|
||||||
|
$reply_len = strlen($reply_array['wr_reply']) + 1;
|
||||||
|
if ($board['bo_reply_order']) {
|
||||||
|
$begin_reply_char = 'A';
|
||||||
|
$end_reply_char = 'Z';
|
||||||
|
$reply_number = +1;
|
||||||
|
$sql = " select MAX(SUBSTRING(wr_reply, {$reply_len}, 1)) as reply from {$write_table} where wr_num = '{$reply_array['wr_num']}' and SUBSTRING(wr_reply, {$reply_len}, 1) <> '' ";
|
||||||
|
} else {
|
||||||
|
$begin_reply_char = 'Z';
|
||||||
|
$end_reply_char = 'A';
|
||||||
|
$reply_number = -1;
|
||||||
|
$sql = " select MIN(SUBSTRING(wr_reply, {$reply_len}, 1)) as reply from {$write_table} where wr_num = '{$reply_array['wr_num']}' and SUBSTRING(wr_reply, {$reply_len}, 1) <> '' ";
|
||||||
|
}
|
||||||
|
if ($reply_array['wr_reply']) $sql .= " and wr_reply like '{$reply_array['wr_reply']}%' ";
|
||||||
|
$row = sql_fetch($sql);
|
||||||
|
|
||||||
|
if (!$row['reply'])
|
||||||
|
$reply_char = $begin_reply_char;
|
||||||
|
else if ($row['reply'] == $end_reply_char) // A~Z은 26 입니다.
|
||||||
|
alert('더 이상 답변하실 수 없습니다.\\n\\n답변은 26개 까지만 가능합니다.');
|
||||||
|
else
|
||||||
|
$reply_char = chr(ord($row['reply']) + $reply_number);
|
||||||
|
|
||||||
|
$reply = $reply_array['wr_reply'] . $reply_char;
|
||||||
|
|
||||||
|
$title_msg = '글답변';
|
||||||
|
|
||||||
|
$write['wr_subject'] = 'Re: '.$write['wr_subject'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 그룹접근 가능
|
||||||
|
if (!empty($group['gr_use_access'])) {
|
||||||
|
if ($is_guest) {
|
||||||
|
alert("접근 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.", 'login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($is_admin == 'super' || $group['gr_admin'] == $member['mb_id'] || $board['bo_admin'] == $member['mb_id']) {
|
||||||
|
; // 통과
|
||||||
|
} else {
|
||||||
|
// 그룹접근
|
||||||
|
$sql = " select gr_id from {$g5['group_member_table']} where gr_id = '{$board['gr_id']}' and mb_id = '{$member['mb_id']}' ";
|
||||||
|
$row = sql_fetch($sql);
|
||||||
|
if (!$row['gr_id'])
|
||||||
|
alert('접근 권한이 없으므로 글쓰기가 불가합니다.\\n\\n궁금하신 사항은 관리자에게 문의 바랍니다.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 본인확인을 사용한다면
|
||||||
|
if ($config['cf_cert_use'] && !$is_admin) {
|
||||||
|
// 인증된 회원만 가능
|
||||||
|
if ($board['bo_use_cert'] != '' && $is_guest) {
|
||||||
|
alert('이 게시판은 본인확인 하신 회원님만 글쓰기가 가능합니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', 'login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($board['bo_use_cert'] == 'cert' && !$member['mb_certify']) {
|
||||||
|
alert('이 게시판은 본인확인 하신 회원님만 글쓰기가 가능합니다.\\n\\n회원정보 수정에서 본인확인을 해주시기 바랍니다.', G5_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($board['bo_use_cert'] == 'adult' && !$member['mb_adult']) {
|
||||||
|
alert('이 게시판은 본인확인으로 성인인증 된 회원님만 글쓰기가 가능합니다.\\n\\n성인인데 글쓰기가 안된다면 회원정보 수정에서 본인확인을 다시 해주시기 바랍니다.', G5_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($board['bo_use_cert'] == 'hp-cert' && $member['mb_certify'] != 'hp') {
|
||||||
|
alert('이 게시판은 휴대폰 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원정보 수정에서 휴대폰 본인확인을 해주시기 바랍니다.', G5_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($board['bo_use_cert'] == 'hp-adult' && (!$member['mb_adult'] || $member['mb_certify'] != 'hp')) {
|
||||||
|
alert('이 게시판은 휴대폰 본인확인으로 성인인증 된 회원님만 글읽기가 가능합니다.\\n\\n현재 성인인데 글읽기가 안된다면 회원정보 수정에서 휴대폰 본인확인을 다시 해주시기 바랍니다.', G5_URL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 글자수 제한 설정값
|
||||||
|
if ($is_admin || $board['bo_use_dhtml_editor'])
|
||||||
|
{
|
||||||
|
$write_min = $write_max = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$write_min = (int)$board['bo_write_min'];
|
||||||
|
$write_max = (int)$board['bo_write_max'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$g5['title'] = ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$title_msg;
|
||||||
|
|
||||||
|
$is_notice = false;
|
||||||
|
$notice_checked = '';
|
||||||
|
if ($is_admin && $w != 'r') {
|
||||||
|
$is_notice = true;
|
||||||
|
|
||||||
|
if ($w == 'u') {
|
||||||
|
// 답변 수정시 공지 체크 없음
|
||||||
|
if ($write['wr_reply']) {
|
||||||
|
$is_notice = false;
|
||||||
|
} else {
|
||||||
|
if (in_array((int)$wr_id, $notice_array)) {
|
||||||
|
$notice_checked = 'checked';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_html = false;
|
||||||
|
if ($member['mb_level'] >= $board['bo_html_level'])
|
||||||
|
$is_html = true;
|
||||||
|
|
||||||
|
$is_secret = $board['bo_use_secret'];
|
||||||
|
|
||||||
|
$is_mail = false;
|
||||||
|
if ($config['cf_email_use'] && $board['bo_use_email'])
|
||||||
|
$is_mail = true;
|
||||||
|
|
||||||
|
$recv_email_checked = '';
|
||||||
|
if ($w == '' || strstr($write['wr_option'], 'mail'))
|
||||||
|
$recv_email_checked = 'checked';
|
||||||
|
|
||||||
|
$is_name = false;
|
||||||
|
$is_password = false;
|
||||||
|
$is_email = false;
|
||||||
|
$is_homepage = false;
|
||||||
|
if ($is_guest || ($is_admin && $w == 'u' && $member['mb_id'] != $write['mb_id'])) {
|
||||||
|
$is_name = true;
|
||||||
|
$is_password = true;
|
||||||
|
$is_email = true;
|
||||||
|
$is_homepage = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_category = false;
|
||||||
|
$category_option = '';
|
||||||
|
if ($board['bo_use_category']) {
|
||||||
|
$ca_name = "";
|
||||||
|
if (isset($write['ca_name']))
|
||||||
|
$ca_name = $write['ca_name'];
|
||||||
|
$category_option = get_category_option($bo_table, $ca_name);
|
||||||
|
$is_category = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_link = false;
|
||||||
|
if ($member['mb_level'] >= $board['bo_link_level']) {
|
||||||
|
$is_link = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_file = false;
|
||||||
|
if ($member['mb_level'] >= $board['bo_upload_level']) {
|
||||||
|
$is_file = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$is_file_content = false;
|
||||||
|
if ($board['bo_use_file_content']) {
|
||||||
|
$is_file_content = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$file_count = (int)$board['bo_upload_count'];
|
||||||
|
|
||||||
|
$name = "";
|
||||||
|
$email = "";
|
||||||
|
$homepage = "";
|
||||||
|
if ($w == "" || $w == "r") {
|
||||||
|
if ($is_member) {
|
||||||
|
if (isset($write['wr_name'])) {
|
||||||
|
$name = get_text(cut_str(stripslashes($write['wr_name']),20));
|
||||||
|
}
|
||||||
|
$email = get_email_address($member['mb_email']);
|
||||||
|
$homepage = get_text(stripslashes($member['mb_homepage']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$html_checked = "";
|
||||||
|
$html_value = "";
|
||||||
|
$secret_checked = "";
|
||||||
|
|
||||||
|
if ($w == '') {
|
||||||
|
$password_required = 'required';
|
||||||
|
} else if ($w == 'u') {
|
||||||
|
$password_required = '';
|
||||||
|
|
||||||
|
if (!$is_admin) {
|
||||||
|
if (!($is_member && $member['mb_id'] == $write['mb_id'])) {
|
||||||
|
if (!check_password($wr_password, $write['wr_password'])) {
|
||||||
|
alert('비밀번호가 틀립니다.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$name = get_text(cut_str(stripslashes($write['wr_name']),20));
|
||||||
|
$email = get_email_address($write['wr_email']);
|
||||||
|
$homepage = get_text(stripslashes($write['wr_homepage']));
|
||||||
|
|
||||||
|
for ($i=1; $i<=G5_LINK_COUNT; $i++) {
|
||||||
|
$write['wr_link'.$i] = get_text($write['wr_link'.$i]);
|
||||||
|
$link[$i] = $write['wr_link'.$i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strstr($write['wr_option'], 'html1')) {
|
||||||
|
$html_checked = 'checked';
|
||||||
|
$html_value = 'html1';
|
||||||
|
} else if (strstr($write['wr_option'], 'html2')) {
|
||||||
|
$html_checked = 'checked';
|
||||||
|
$html_value = 'html2';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strstr($write['wr_option'], 'secret')) {
|
||||||
|
$secret_checked = 'checked';
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = get_file($bo_table, $wr_id);
|
||||||
|
if($file_count < $file['count'])
|
||||||
|
$file_count = $file['count'];
|
||||||
|
} else if ($w == 'r') {
|
||||||
|
if (strstr($write['wr_option'], 'secret')) {
|
||||||
|
$is_secret = true;
|
||||||
|
$secret_checked = 'checked';
|
||||||
|
}
|
||||||
|
|
||||||
|
$password_required = "required";
|
||||||
|
|
||||||
|
for ($i=1; $i<=G5_LINK_COUNT; $i++) {
|
||||||
|
$write['wr_link'.$i] = get_text($write['wr_link'.$i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
set_session('ss_bo_table', $_REQUEST['bo_table']);
|
||||||
|
set_session('ss_wr_id', $_REQUEST['wr_id']);
|
||||||
|
|
||||||
|
$subject = "";
|
||||||
|
if (isset($write['wr_subject'])) {
|
||||||
|
$subject = str_replace("\"", """, get_text(cut_str($write['wr_subject'], 255), 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
$content = '';
|
||||||
|
if ($w == '') {
|
||||||
|
$content = $board['bo_insert_content'];
|
||||||
|
} else if ($w == 'r') {
|
||||||
|
if (!strstr($write['wr_option'], 'html')) {
|
||||||
|
$content = "\n\n\n > "
|
||||||
|
."\n > "
|
||||||
|
."\n > ".str_replace("\n", "\n> ", get_text($write['wr_content'], 0))
|
||||||
|
."\n > "
|
||||||
|
."\n > ";
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$content = get_text($write['wr_content'], 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
$upload_max_filesize = number_format($board['bo_upload_size']) . ' 바이트';
|
||||||
|
|
||||||
|
$width = $board['bo_table_width'];
|
||||||
|
if ($width <= 100)
|
||||||
|
$width .= '%';
|
||||||
|
else
|
||||||
|
$width .= 'px';
|
||||||
|
|
||||||
|
|
||||||
|
$is_dhtml_editor = false;
|
||||||
|
$is_dhtml_editor_use = false;
|
||||||
|
$editor_content_js = '';
|
||||||
|
if(!is_mobile() || defined('G5_IS_MOBILE_DHTML_USE') && G5_IS_MOBILE_DHTML_USE)
|
||||||
|
$is_dhtml_editor_use = true;
|
||||||
|
|
||||||
|
// 모바일에서는 G5_IS_MOBILE_DHTML_USE 설정에 따라 DHTML 에디터 적용
|
||||||
|
if ($config['cf_editor'] && $is_dhtml_editor_use && $board['bo_use_dhtml_editor'] && $member['mb_level'] >= $board['bo_html_level']) {
|
||||||
|
$is_dhtml_editor = true;
|
||||||
|
|
||||||
|
if(is_file(G5_EDITOR_PATH.'/'.$config['cf_editor'].'/autosave.editor.js'))
|
||||||
|
$editor_content_js = '<script src="'.G5_EDITOR_URL.'/'.$config['cf_editor'].'/autosave.editor.js"></script>'.PHP_EOL;
|
||||||
|
}
|
||||||
|
$editor_html = editor_html('wr_content', $content, $is_dhtml_editor);
|
||||||
|
$editor_js = '';
|
||||||
|
$editor_js .= get_editor_js('wr_content', $is_dhtml_editor);
|
||||||
|
$editor_js .= chk_editor_js('wr_content', $is_dhtml_editor);
|
||||||
|
|
||||||
|
// 임시 저장된 글 수
|
||||||
|
$autosave_count = autosave_count($member['mb_id']);
|
||||||
|
|
||||||
|
$action_url = https_url(G5_BBS_DIR)."/write_update.php";
|
||||||
|
|
||||||
|
echo '<!-- skin : '.(G5_IS_MOBILE ? $board['bo_mobile_skin'] : $board['bo_skin']).' -->';
|
||||||
|
include_once ($board_skin_path.'/write.skin.php');
|
||||||
|
|
||||||
|
?>
|
||||||
122
write.skin.php
Normal file
122
write.skin.php
Normal file
|
|
@ -0,0 +1,122 @@
|
||||||
|
<?
|
||||||
|
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
|
||||||
|
$option = '';
|
||||||
|
$option_hidden = '';
|
||||||
|
if ($is_notice || $is_html || $is_secret || $is_mail) {
|
||||||
|
$option = '';
|
||||||
|
if ($is_notice && !$no_id) {
|
||||||
|
$option .= "\n".'<input type="checkbox" id="notice" name="notice" value="1" '.$notice_checked.'>'."\n".'<label for="notice">공지</label>';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($is_html) {
|
||||||
|
if ($is_dhtml_editor) {
|
||||||
|
$option_hidden .= '<input type="hidden" value="html1" name="html">';
|
||||||
|
} else {
|
||||||
|
//$option .= "\n".'<input type="checkbox" id="html" name="html" onclick="html_auto_br(this);" value="'.$html_value.'" '.$html_checked.'>'."\n".'<label for="html">html</label>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($is_secret) {
|
||||||
|
if ($is_secret==1) {
|
||||||
|
$option .= "\n".'<input type="checkbox" id="secret" name="secret" value="secret" '.$secret_checked.'>'."\n".'<label for="secret">비밀글</label>';
|
||||||
|
} else {
|
||||||
|
$option_hidden .= '<input type="hidden" name="secret" value="secret">';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($is_mail) {
|
||||||
|
$option .= "\n".'<input type="checkbox" id="mail" name="mail" value="mail" '.$recv_email_checked.'>'."\n".'<label for="mail">답변메일받기</label>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $option_hidden;
|
||||||
|
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);
|
||||||
|
$clap_o=sql_fetch("select sum(cl_cnt) as sum from {$g5['clap_table']} where date_format(cl_date, '%Y-%m-%d')='".G5_TIME_YMD."' and cl_ip='{$_SERVER['REMOTE_ADDR']}'");
|
||||||
|
?>
|
||||||
|
<form name="fwrite" id="fwrite" action="<?php echo $action_url ?>" onsubmit="return fwrite_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
|
||||||
|
<input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>">
|
||||||
|
<input type="hidden" name="w" value="<?php echo $w ?>">
|
||||||
|
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||||
|
<input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
|
||||||
|
<input type="hidden" name="sca" value="<?php echo $sca ?>">
|
||||||
|
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||||
|
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||||
|
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||||
|
<input type="hidden" name="sst" value="<?php echo $sst ?>">
|
||||||
|
<input type="hidden" name="sod" value="<?php echo $sod ?>">
|
||||||
|
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||||
|
<input type="hidden" name="wr_subject" value="박수">
|
||||||
|
<input type="text" name="wr_dum" value="" style="display:none;">
|
||||||
|
<?= $option_hidden ?>
|
||||||
|
|
||||||
|
<div class="ui-write-box">
|
||||||
|
<textarea id="content" name="wr_content" rows=6 itemname="내용" required><?=$content?></textarea>
|
||||||
|
<button type="submit" id="btn_submit" class="ui-btn point" accesskey='s'>메세지<br>남기기</button>
|
||||||
|
<div class="ui-control">
|
||||||
|
<?php echo $option ?>
|
||||||
|
<? if(!$is_member){ ?>
|
||||||
|
<input type="hidden" maxlength="20" name="wr_name" id="wr_name" placeholder="NAME" itemname="이름" required value="익명" />
|
||||||
|
<input type="hidden" maxlength="20" id="wr_password" name="wr_password" placeholder="PASSWORD" itemname="패스워드" value="<?=time();?>" <?=$password_required?> />
|
||||||
|
<? } ?>
|
||||||
|
<?if($is_admin && $w=='u') {?>
|
||||||
|
<?for($k=0;$k<$board['bo_upload_count'];$k++){?>
|
||||||
|
<dl class="files">
|
||||||
|
<dt>
|
||||||
|
<?php if($file[$k]['file']) { ?>
|
||||||
|
<a href="<?=G5_DATA_URL."/file/".$bo_table."/".$file[$k]['file']?>" target="_blank">
|
||||||
|
<img src="<?=G5_DATA_URL."/file/".$bo_table."/".$file[$k]['file']?>"></a>
|
||||||
|
<?}?>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<input type="file" name="bf_file[]" title="파일첨부 <?php echo $k+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" class="frm_file frm_input full">
|
||||||
|
<?php if ($is_file_content) { ?>
|
||||||
|
<input type="text" name="bf_content[]" value="<?php echo ($w == 'u') ? $file[$k]['bf_content'] : ''; ?>" title="파일 설명을 입력해주세요." class="frm_file frm_input" size="50">
|
||||||
|
<?php } ?>
|
||||||
|
<?php if($file[$k]['file']) { ?>
|
||||||
|
<input type="checkbox" id="bf_file_del<?php echo $k ?>" name="bf_file_del[<?php echo $k; ?>]" value="1"> <label for="bf_file_del<?php echo $k ?>"><?php echo $file[$k]['source'].'('.$file[$k]['size'].')'; ?> 파일 삭제</label>
|
||||||
|
<?php } ?>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
<?}?>
|
||||||
|
<?}?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
<?php if($write_min || $write_max) { ?>
|
||||||
|
// 글자수 제한
|
||||||
|
var char_min = parseInt(<?php echo $write_min; ?>); // 최소
|
||||||
|
var char_max = parseInt(<?php echo $write_max; ?>); // 최대
|
||||||
|
check_byte("wr_content", "char_count");
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
$("#wr_content").on("keyup", function() {
|
||||||
|
check_byte("wr_content", "char_count");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
<?php } ?>
|
||||||
|
function fwrite_submit(f)
|
||||||
|
{
|
||||||
|
<?if(!$is_admin){?>
|
||||||
|
let clap_max=10;
|
||||||
|
<? if($board['bo_1']!=''){?>
|
||||||
|
clap_max=parseInt('<?=$board['bo_1']?>');
|
||||||
|
<?}?>
|
||||||
|
let clap_t=parseInt('<?=$clap_o['sum']?>');
|
||||||
|
if(clap_max>0 && clap_t>=clap_max){
|
||||||
|
alert("박수는 하루에 "+clap_max+"번 까지 칠 수 있습니다.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
<?}?>
|
||||||
|
if(f.wr_dum.value!=''){
|
||||||
|
alert("스팸방지");
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
if(f.w!=u)
|
||||||
|
alert("메시지 감사합니다!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
9
write_update.skin.php
Normal file
9
write_update.skin.php
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?
|
||||||
|
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||||
|
|
||||||
|
if($w!=u && $notice!=1)
|
||||||
|
include_once($board_skin_path.'/update_hit.php');
|
||||||
|
|
||||||
|
// 자신만의 코드를 넣어주세요.
|
||||||
|
goto_url("./board.php?bo_table=$bo_table");
|
||||||
|
?>
|
||||||
Loading…
Reference in a new issue