에서 기능을 몇가지 더 첨부하여 0.94에 맞게 제작된 패치노트입니다. :)
먼저 이 팁을 따라하기 전에 아래의 사항을 숙지하시고 패치를 하시기 바랍니다.
.
1. 누구누구의 덧글에 답변을 다는지 확인할 수 있게 끔 하였습니다.
2. 운영자가 답변덧글을 달아둔 덧글을 작성자가 삭제할 경우 답변덧글은 그대로 남아있고, 본래 덧글의 내용만 '작성자에 의해 삭제되었습니다.'로 바뀝니다.
3. 운영자에 의해 답변덧글이 있는 덧글을 삭제할 경우 답변덧글과 함께 DB에서 삭제됩니다.
4. 답변덧글 작성시, 이름, 암호, 홈페이지에 자동으로 내용을 채워줍니다.
index.php 파일
186번째 줄
[CODE]186 : <input type="hidden" name="c_body">
187 : <input type="hidden" name="c_reply">
188 : <input type="hidden" name="c_reply_num">[/CODE]
아래 두줄이 추가되었습니다.
inc_function.php 파일
63번째 줄
[CODE]63 : var $s_rp_rep;
64 : var $s_rp_rep_reply;[/CODE]
아래 한줄이 추가되었습니다.
92번째 줄
[CODE]92 : list($sval, $this->s_rp_rep) = cut_skintag($sval, "s_rp_rep");
93 : list($sval, $this->s_rp_rep_reply) = cut_skintag($sval, "s_rp_rep_reply");[/CODE]
아래 한줄이 추가되었습니다.
414~415번째 줄
[CODE]414 : where
415 : pno = $num and password!='reply'[/CODE]
441번째 줄
[CODE]441 : $bf2_rep = str_replace("[##_rp_rep_onclick_delete_##]", "onclick_delete('rp', '$num', '$no'); return false;", $bf2_rep);[/CODE]
아래에 아래의 소스를 추가하여 주세요.
[CODE]$rp_tmp = mysql_fetch_array(mysql_query("select count(*) from t3_".$dbid."_reply where pno='$pno' and password='reply' and ip='$no'"));
if($rp_tmp["count(*)"]>0) {
$reply_result = @mysql_query("select no, pno, name, homepage, body, regdate from t3_".$dbid."_reply where pno='$num' and password='reply' and ip='$no' order by no asc");
while(list($r_no, $r_pno, $r_name, $r_homepage, $r_body, $r_regdate)=@mysql_fetch_array($reply_result)) {
$bf2_rep_reply = $skin->s_rp_rep_reply;
if ($r_homepage) $r_name = "<a href=$r_homepage target=_blank>".str_tag_off($r_name)."</a>";
$r_body = nl2br(autolink(str_tag_off($r_body)));
$bf2_rep_reply = str_replace("[##_rp_rep_reply_name_##]", "<a name=r$r_no></a>".$r_name, $bf2_rep_reply);
$bf2_rep_reply = str_replace("[##_rp_rep_reply_date_##]", get_timevalue1($r_regdate)." ".get_timevalue3($r_regdate), $bf2_rep_reply);
$bf2_rep_reply = str_replace("[##_rp_rep_reply_desc_##]", $r_body, $bf2_rep_reply);
$bf2_rep_reply = str_replace("[##_rp_rep_reply_onclick_delete_##]", "onclick_delete('rp', '$num', '$r_no'); return false;", $bf2_rep_reply);
}
} else $bf2_rep_reply = "";
if(return_authority()&&$rp_tmp["count(*)"]==0) $reply = "<a onfocus=blur() href="javascript:void(0)" onclick="onclick_reply('$num','$no','".strip_tags($name)."'); return false;">답변</a>";
else $reply = "";
$bf2_rep = str_replace("[##_rp_rep_onclick_reply_##]", $reply, $bf2_rep);
$bf2_rep = str_replace("[##_s_rp_rep_reply_##]", $bf2_rep_reply, $bf2_rep);[/CODE]
462번째 줄
[CODE]462 : $bf1 = str_replace("[##_s_rp_rep_##]", $bf2, $bf1);
463 : $bf1 = str_replace("[##_s_rp_rep_reply_##]", "", $bf1);[/CODE]
아래 한줄이 추가되었습니다.
del_exe.php 파일
34번째 줄
[CODE]34 : put_query("delete from t3_".$dbid."_reply where no = '$num'");[/CODE]
을 삭제하시고 아래소스를 추가해주세요.
[CODE]$tmp = mysql_fetch_array(mysql_query("select count(*) from t3_".$dbid."_reply where password='reply' and ip = '$num'"));
$reply_num = $tmp["count(*)"];
if($reply_num==1) {
if(return_authority()) {
put_query("delete from t3_".$dbid."_reply where no = '$num'");
put_query("delete from t3_".$dbid."_reply where password='reply' and ip = '$num'");
} else {
put_query("update t3_".$dbid."_reply set body='작성자에 의해 삭제되었습니다.' where no = '$num'");
}
} else put_query("delete from t3_".$dbid."_reply where no = '$num'");[/CODE]
lib.js 파일
2번째 줄에 추가
[CODE]function onclick_reply(num,no,name) {
weblog.c_reply.value = no;
weblog.c_reply_num.value = num;
alert(name+'님의 덧글에 답글을 작성합니다.');
form_name = eval('document.weblog.c_name_'+num);
form_password = eval('document.weblog.c_password_'+num);
form_homepage = eval('document.weblog.c_homepage_'+num);
form_is_secret = eval('document.weblog.c_is_secret_'+num);
form_body = eval('document.weblog.c_body_'+num);
form_name.value = "알쯔";
form_password.value = "reply";
form_homepage.value = "http://blog.arzz.com";
form_is_secret.disabled = true; // 비밀덧글이 있는 스킨사용시. 그렇지 않다면 삭제.
form_body.focus();
} [/CODE]
form_name.value이나, form_homepage.value는 자신의 블로그에 맞게 수정하세요.
164번째 줄
[CODE]164 : function onclick_addexe(num, d_target, obj1, obj2, mode) {
165 : if(weblog.c_reply.value) {
166 : weblog.c_reply.value = '';
167 : weblog.c_reply_num.value = '';
168 : alert('덧글입력이 일반모드로 전환되었습니다.');
169 : } [/CODE]
165~169줄이 추가되었습니다.
211번째 줄
[CODE]211 : function onclick_insert_reply(form, num){
212 : if(weblog.c_reply.value&&weblog.c_reply_num.value!=num) {
213 : weblog.c_reply.value = '';
214 : weblog.c_reply_num.value = '';
215 : alert('답글을 달고자 하는 덧글을 찾을 수 없습니다.
답변덧글상태를 해제합니다. 다시 확인버튼을 누르세요.');
216 : return false;
217 : } [/CODE]
211~217줄이 추가되었습니다.
add_exe.php 파일
24번째 줄
[CODE]24 : if ($c_homepage == "http://") $c_homepage = "";
25 : if (!$c_reply) {
26 : $c_password = "password('$c_password')";
27 : $ip = $REMOTE_ADDR;
} else {
28 : $c_password = "'reply'";
29 : $ip = $c_reply;
30 : } [/CODE]
25~30줄이 추가되었습니다.
41번째 줄
[CODE]$num, '".str_tag_off($c_name)."', '".str_tag_off($c_homepage)."', '".str_tag_off($c_body)."', password('$c_password'), '$c_is_secret', '".time()."', '".$REMOTE_ADDR."'[/CODE]
을 아래와 같이 바꾸어줍니다.
[CODE]$num, '".str_tag_off($c_name)."', '".str_tag_off($c_homepage)."', '".str_tag_off($c_body)."', $c_password, '$c_is_secret', '".time()."', '".$ip."'[/CODE]
password('$c_password') 가 $c_password 로 '".$REMOTE_ADDR."'가 '".$ip."' 로 바뀌었습니다.
45번째 줄
[CODE]45 : check_query();
46 : echo "<script>parent.document.weblog.c_reply.value=''; parent.document.weblog.c_reply_num.value='';</script>";[/CODE]
46줄이 추가되었습니다.
skin.html 파일 - 이부분은 스킨마다 다르므로 대략적으로 설명합니다.
[CODE]<input type=text name="[##_rp_input_name_##]" value="[##_guest_name_##]">
<input type="password" name="[##_rp_input_password_##]" value="[##_rp_admin_check_##]"> [/CODE]
위와 같은 소스가 모여있는 곳의 적당한 곳(답변링크가 들어갈 부분으로 삭제버튼 근처)에 아래의 소스를 넣어주세요.
[CODE][##_rp_rep_onclick_reply_##][/CODE]
그리고 스킨파일의 [CODE]<s_rp_rep>html 소스</s_rp_rep>[/CODE] 사이에 중첩코멘트가 들어갈 부분에(직전정도) 아래의 소스를 넣어주세요.
[##_s_rp_rep_reply_##]
그런후 [CODE]<s_rp_rep_reply>중첩코멘트 디자인 html 소스</s_rp_rep_reply>[/CODE]로 감싸 중첩코멘트부분을 디자인해주세요.
[##_rp_rep_reply_name_##] : 중첩코멘트 이름
[##_rp_rep_reply_desc_##] : 중첩코멘트 내용
[##_rp_rep_reply_date_##] : 중첩코멘트 작성시간
[##_rp_rep_reply_onclick_delete_##] : 중첩코멘트 삭제링크
기존스킨의 코멘트출력부분을 참고하시면 쉽게 하실 수 있을거라 생각됩니다.
아래의 소스는 수정하지 않아도 기능상에는 문제가 없으나, 추가하시는 편이 블로그 이용에 편리합니다.
inc_presswork.php 파일
115~135번째 줄
[CODE]115 : function get_rctrp_rep() {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
135 : }[/CODE]
을 모두 삭제하신 후 아래의 소스를 추가하여 주세요.
[CODE]function get_rctrp_rep() {
global $db, $dbid, $p_rct_rp_cnt, $p_rct_rp_trunc;
unset($p);
$sql = "select no, pno, name, body, regdate, is_secret, homepage, ip, password from t3_".$dbid."_reply where password!='reply' order by no desc limit 0, $p_rct_rp_cnt";
// print $sql;
$result = @mysql_query($sql);
while(list($no, $pno, $name, $body, $regdate, $is_secret, $c_homepage) = @mysql_fetch_array($result)) {
$p_rep = $GLOBALS["skin"]->s_rctrp_rep;
$rp_tmp = mysql_fetch_array(mysql_query("select * from t3_".$dbid."_reply where pno='$pno' and password='reply' and ip='$no'"));
if($rp_tmp[no]) $reply = " <font class=nonedot><a onfocus=blur() href='index.php?pl=".$pno."#r".$rp_tmp[no]."'> <font size=1 face=verdana color=gray><b>Re : </b> ".get_timevalue0($rp_tmp[regdate], 2)."</a></font></font>";
else $reply = "";
$p_rep = str_replace("[##_rctrp_rep_reply_##]", $reply, $p_rep);
$p_rep = str_replace("[##_rctrp_rep_link_##]", "index.php?pl=$pno#r$no", $p_rep);
if($is_secret==1&&!return_authority()) {
$p_rep = str_replace("[##_rctrp_rep_desc_##]", "<font color=gray>비공개 댓글입니다.</font>", $p_rep);
$p_rep = str_replace("[##_rctrp_rep_name_##]", "비공개", $p_rep);
} else {
$p_rep = str_replace("[##_rctrp_rep_desc_##]", str_cut($body, $p_rct_rp_trunc, 0), $p_rep);
if($c_homepage) $p_rep = str_replace("[##_rctrp_rep_name_##]", "<font class=nonedot><a onfocus=blur() href='".$c_homepage."' target='_blank'><font color=black>".$name."</font></a></font>", $p_rep);
else $p_rep = str_replace("[##_rctrp_rep_name_##]", $name, $p_rep);
}
$p_rep = str_replace("[##_rctrp_rep_time_##]", get_timevalue0($regdate, 2), $p_rep);
$p .= $p_rep;
}
return $p;
}[/CODE]
skin.html 파일
스킨파일의 [CODE]<s_rctrp_rep>html 소스</s_rctrp_rep>[/CODE]로 감싸진 부분이 최근코멘트가 출력되는 부분의 디자인이고, 이 사이의 적당한 곳에 [##_rctrp_rep_reply_##]을 넣어주세요.
버그보고는 코멘트로 해주세요. 급하게 작성하다보니 에러확인을 못했습니다.
위의 4가지 경우에 대한 버그가 수정되었습니다.