댓글수정이 새로운 댓글로 입력됩니다.
본문
댓글을 수정하면 새로운 댓글로 입력됩니다.
/bbs/write_comment_update.php는 손도 안댔고, view_comment.skin.php에 블라인드 댓글 처리부분만 만들어 넣었습니다.
제가 수정한 부분은 9-17, 27, 47-51줄 입니다.
고수님들 도움을 부탁드립니다.
<section id="bo_vc">
<h2>댓글목록</h2>
<?php
$cmt_amt = count($list);
for ($i=0; $i<$cmt_amt; $i++) {
$comment_id = $list[$i]['wr_id'];
$cmt_depth = ""; // 댓글단계
$cmt_depth = strlen($list[$i]['wr_comment_reply']) * 20;
$cond_vc = $blind_msg = '';
if ($list[$i]['wr_blind']=='blind') {
$list[$i]['is_reply'] = $list[$i]['is_edit'] = '';
$cond_vc = ' class="blind_vc" ';
if (!$is_admin) {
$list[$i]['is_del'] = '';
$blind_msg = '블라인드 처리된 댓글입니다.';
}
}
$comment = $list[$i]['content'];
/*
if (strstr($list[$i]['wr_option'], "secret")) {
$str = $str;
}
*/
$comment = 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>", $comment);
$cmt_sv = $cmt_amt - $i + 1; // 댓글 헤더 z-index 재설정 ie8 이하 사이드뷰 겹침 문제 해결
?>
<article id="c_<?php echo $comment_id ?>" <?php echo $cond_vc; if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>
<header style="z-index:<?php echo $cmt_sv; ?>">
<h1><?php echo get_text($list[$i]['wr_name']); ?>님의 댓글</h1>
<?php echo $list[$i]['name'] ?>
<?php if ($cmt_depth) { ?><img src="<?php echo $board_skin_url ?>/img/icon_reply.gif" class="icon_reply" alt="댓글의 댓글"><?php } ?>
<?php if ($is_ip_view) { ?>
아이피
<span class="bo_vc_hdinfo"><?php echo $list[$i]['ip']; ?></span>
<?php } ?>
작성일
<span class="bo_vc_hdinfo"><time datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo $list[$i]['datetime'] ?></time></span>
<?php
include(G5_SNS_PATH.'/view_comment_list.sns.skin.php');
?>
</header>
<!-- 댓글 출력 -->
<p>
<?php if (strstr($list[$i]['wr_option'], "secret")) { ?><img src="<?php echo $board_skin_url; ?>/img/icon_secret.gif" alt="비밀글"><?php } ?>
<?php
if ($blind_msg)
echo $blind_msg;
else
echo $comment;
?>
</p>
<span id="edit_<?php echo $comment_id ?>"></span><!-- 수정 -->
<span id="reply_<?php echo $comment_id ?>"></span><!-- 답변 -->
<input type="hidden" value="<?php echo strstr($list[$i]['wr_option'],"secret") ?>" id="secret_comment_<?php echo $comment_id ?>">
<textarea id="save_comment_<?php echo $comment_id ?>" style="display:none"><?php echo get_text($list[$i]['content1'], 0) ?></textarea>
<?php if($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) {
$query_string = str_replace("&", "&", $_SERVER['QUERY_STRING']);
if($w == 'cu') {
$sql = " select wr_id, wr_content from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
$cmt = sql_fetch($sql);
$c_wr_content = $cmt['wr_content'];
}
$c_reply_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=c#bo_vc_w';
$c_edit_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
?>
<footer>
<ul class="bo_vc_act">
<?php if ($list[$i]['is_reply']) { ?><li><a href="<?php echo $c_reply_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'c'); return false;">답변</a></li><?php } ?>
<?php if ($list[$i]['is_edit']) { ?><li><a href="<?php echo $c_edit_href; ?>" onclick="comment_box('<?php echo $comment_id ?>', 'cu'); return false;">수정</a></li><?php } ?>
<?php if ($list[$i]['is_del']) { ?><li><a href="<?php echo $list[$i]['del_link']; ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
</ul>
</footer>
<?php } ?>
</article>
<?php } ?>
<?php if ($i == 0) { //댓글이 없다면 ?>
<p id="bo_vc_empty">등록된 댓글이 없습니다.</p>
<?php } ?>
</section>
답변 3
스킨 자체 문제입니다...
댓글쓸때 비밀글 기능이 빠져있을경우 생기는 현상입니다.
댓글 적는부분에서 원본 스킨 보고 비밀댓글 기능 추가 해보신후 다시 해보세요.
저도 같은 경험으로 고생좀 했는데 저의 경우는...
view_comment.skin.php 파일 중간쯤
...
<input type="hidden" name="w" value="<?php echo $w ?>" id="w">
... 이 값이 수정버튼을 클릭하면 아래 스크립트에서 'cu'로 변경 시켜 줍니다
<script>
function comment_box(comment_id, work) {
...
document.getElementById('w').value = work;
...
}
</script>
그런데 문제는 이 값이 변경이 안되는 겁니다.
원인은 include한 파일중에서 "w"란 id로 또 다른 오브젝트가 존재했기 때문이었지요
제 경우에는 특정 input값을 주석처리해서 그런 현상이 나타나네요.
view_comment.skin.php 에서는 주석처리가 아닌 숨김처리(display:none)로 해야 할 것 같습니다.