코멘트에 비공개 옵션을 사용하기(수정) > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

코멘트에 비공개 옵션을 사용하기(수정) 정보

코멘트에 비공개 옵션을 사용하기(수정)

본문

하는일도 잘안풀리고 스트레스도 쌓이고 여차저차 하여 오늘은 맘먹고 코멘트로 별걸 다해봅니다.ㅡ,.ㅡ;

역시나 짜집기 전문이라 코드가 엉망이며 최적화를 부탁 드립니다.ㅋ

천상재회님의 도움으로 코드가 일부 수정이 되었습니다.
최종 수정일: 2006/12/01/ 16:30

적용방법
1,
게시판설정의 여유필드 9번에 on 이라고 넣어주며 필요시 변경 합니다.
2,
게시판스킨의 view_comment.skin.php 에서
 <?=$list[$i][content]?> <- 이코드 대신에 아래의 코드를 넣어 줍니다.


<? if ($list[$i]['wr_9']=="on") { $c_checked = "<span style='color:red; cursor: pointer;' class='small' title='비공개 코멘트 입니다.'>(?)</span>";}else{ $c_checked = "";}?>
<?=$c_checked?>
<?
if ($board['bo_9']=="on" && $list[$i]['wr_9']=="on") {
  if ($member['mb_id'] == $write['mb_id'] || $list[$i]['mb_id'] == $member['mb_id'] || $is_admin) {
?>
 <?=$list[$i][content]?>
<?
 }
 else
{
?>
 이코멘트는 비밀코멘트 이므로 원글 작성자와 댓글작성자 및 관리자만 보여집니다.
<?
 }
}
else
{
?>
 <?=$list[$i][content]?>
<?
}
?>

위코드를 적용후 아래의 코드를 찾아서(천상재회님)

<textarea id='save_comment_<?=$comment_id?>' style='display:none;'><?=get_text($list[$i][wr_content], 0)?></textarea></td>

아래처럼 바꾸어 줍니다.
<? if ($board['bo_9']=="on" ) { ?>
<input style='display:none;' id='save_comment_<?=$comment_id?>_wr_9' value='<?=$list[$i][wr_9]?>'>
<? } ?>
<textarea id='save_comment_<?=$comment_id?>' style='display:none;'>
<?
if ($board['bo_9']=="on" ) {
 if ($member['mb_id'] == $write['mb_id'] || $list[$i]['mb_id'] == $member['mb_id']  || $list[$i]['mb_id'] == $write['mb_id'] || $is_admin) {
?>
<?=get_text($list[$i][wr_content], 0)?>
<?
 }
 else
{
?>
이코멘트는 비밀코멘트 이므로 원글 작성자와 댓글작성자 및 관리자만 보여집니다.
<?
}
}
else
{
?> 
<?=get_text($list[$i][wr_content], 0)?>
<?
}
?>
</textarea></td>


위 코드를 넣은후 코멘트쓰기 부분의 적당한 위치에 아래코드를 넣어 줍니다.

<? if ($board['bo_9']=="on") { ?>
<input type=checkbox name="wr_9" id="wr_9" value="on"> 비밀글사용
<? } ?>


마지막으로 하단부의 스크립트 부분에서 아래의 코드를 찾은후
        // 코멘트 수정
        if (work == 'cu')
        {
            document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
            if (typeof char_count != 'undefined')
                check_byte('wr_content', 'char_count');
        }


위코드를 아래처럼 바꾸어 줍니다.


        // 코멘트 수정
        if (work == 'cu')
        {
            document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
  <? if ($board['bo_9']=="on" ) { ?>
if(document.getElementById('save_comment_' + comment_id + '_wr_9').value=='on') {
document.getElementById('wr_9').checked = true;
  }
  <? } ?>
            if (typeof char_count != 'undefined')
                check_byte('wr_content', 'char_count');
        }


참고사항:
이팁을 활용하여 원글에서 제어하는 방법은 아래의 링크를 참조 하시기 바랍니다.
http://sir.co.kr/bbs/tb.php/g4_qa/41544
추천
2

댓글 31개

수고하셨습니다....

이소스도 아래 소스와 마찬가지로 보강이 필요 합니다....이부분입니다...

<textarea id='save_comment_<?=$comment_id?>' style='display:none;'><?=get_text($list[$i][wr_content], 0)?></textarea>

이부분이 소스보기에 다 보입니다...^^

이부분도 처리를 해 주세용.....^^

수정 다 되면 추천합니다...아니면 절대 안함.....^^
감사합니다.^^ 그런데 한가지 문제가 보이는데 제능력 밖입니다.ㅜ
코멘트 수정시 이전에 비밀체크된 옵션이 풀리는데 해결 방법이 안보입니다.
해결해 주세~~~~~요.ㅠ.ㅠ
글쎄용....뭐 아무것도 모르는 상태에서 어찌 접근을 해야할지 고민입니다....ㅠ.ㅠ

코멘트 업데이트 스킨에서 $w=='cu' 옵션으로 잡아줘 보시지요......^^
재회님께......
비밀로 설정된 코멘트를 수정을 클릭시 비밀글 사용하기 체크박스가
체크된 상태로 수정창이 나와야 하는데 처크가 안된 상태로 되는 현상을
체크가 되어있는 상태로 수정입력창이 나와야 하는데 그게 안된다는 겁니다.ㅜㅜ
헉~~~!

그거 적용하려면 몇 군데 더 손을 보아야 할것 같습니다....^^

위에 제가 댓글 드린 부분을 연구를 하시면 답이 나옵니당....^^
이부분에서 햇갈리는게 반복문 밖으로 나가버리는 위치라 헤메고 있답니다.^^
쿼리를 한번더 해야할듯 보이기두 하고....정신좀 차린후 다시봐야 겠네요.
수고하셨습니다.
헐랭이님. ^^

비밀글 기능을 활용했네요.
일전에 질답에 올라온 비슷한 질문을 보고 한번 만들어 본 기능과 같습니다.

댓글 1단계 까지는 글쓴이, 관리자, 코멘트 작성자까지 보여지는데까지는 쉬운데 다음 2단계 코멘트 부분부터 문제가 발생하여 답글을 남기지 못했습니다.

잠깐 테스트를 해보니 아주 좋은데 필요할 경우 원글 작성자의 답변 코멘트 부분은 손을 봐야 되겠네요.

^^
감사합니다.^^
사모님과 이쁜 공주님들은 모두 건강하시죠?

그리구 아래의 항목을 좀더 상세한 설명을 부탁드립니다.
제가 이해능력이 부족해서 무슨말인지 알아먹질 못합니다.ㅠ.ㅠ
 
(잠깐 테스트를 해보니 아주 좋은데 필요할 경우 원글 작성자의 답변 코멘트 부분은 손을 봐야 되겠네요.)
에고~~~
너무 건강해서 탈이랍니다. ^^

제가 말씀을 드렸던 부분은 비밀글로 코멘트를 작성할 경우 답변도 비밀글로 처리해야 할 경우가 있을거란 말이었습니다.

원글
->비밀글 코멘트 (1단계)
--->원글작성자의 코멘트 답변(2단계) (이 부분을 가능한 자동으로 비밀글로 처리를 하되 코멘트 1단계의 회원 아이디를 저장하든가 그외의 방법으로 1단계 회원에게만 보여지도록 하는게 어떨까 하는 의견이었습니다.)

물론, 쪽지를 이용하거나 메일을 이용하면 됩니다만 게시판을 활용한 방법이라면 게시판에서 처리를 하는게 바람직하지 않을까 하는 생각입니다.
제가 시도해본 바로는 2단계에서 풀어내지를 못해서 포기를 했었답니다.
ㅠㅠ.........

흰머리 몇가닥 더 생기려나요? ^^
현재 상태에선 원글 작성자일 경우 모든 코멘트를 볼수가 있으므로 개별적으로
부모 코멘트와 자식 코멘트와의 연결을 할 필요성을 못느끼는데요..ㅎㅎ이부분이
반드시 필요한 기능이라면 돌 머리를 쬐끔 굴려 봐야 겠네요.^^
ㅎㅎㅎ........

원글 작성자가 올라온 코멘트에 답변을 달 경우에 코멘트 작성자에게 보여지는 문제입니다.
코멘트를 작성한 누구나 답변을 볼수가 있다면 다음과 같은 문제가 있지요.

[원글이지유~~~]
1. 비밀입니다.
--> 답변내용 구구절절
2. 비밀입니다.
--> 답변내용 구구절절
3. 내 글이니께 봐야쥬~~~
--> 답변내용 구구절절

이런 경우라면? ^^
에구 ~ 이제서야 이해를 했습니다.^^
아래코멘트에 불당님이 제안하신 의견과 같은 내용인듯 합니다.

이걸 해결할려면 흰머리카락이 나는게 아니라
몽땅 빠질듯 싶습니다.우째거나 필요한 기능인게
확실한 만큼 도전은 해봐야지유..............ㅠㅠ
먼 산보고 귀경하다가 헐랭이님이 해결하시면 주워 가렵니다....호호호~~**

상기예는 특이한 케이스로 해당 글의 부모댓글의 비밀글 여부에 따라 제어가 되면 가능한 것으로 보입니다...

불가능은 아니나 다소 로직이 복잡해 지지요....

헐랭이님의 승리를 기원하며....화이팅~~~! 아자아자~~~~!
어느정도 해결이 된것 같습니다만 문제가 하나 생겼습니다.
코멘트 업데이트 파일에서 코드가 답변코멘트 인지 확인하는
코드와 코멘트 인서트후 생성하는 코드가 중복으로 되어 있기 때문에
스킨 자체에서 100% 해결할 방법이 안보입니다. $comment_id 요겁니다.
$comment_id 이걸로 답변코멘트용 코드를 만들고 있는데 중복이 되어 있네요.

상단에 아래처럼 되어 있고

    // 코멘트 답변
    if ($comment_id)
    {

인서트도 아래처럼 되어서

          wr_9 = '$wr_9',
            wr_10 = '$wr_10' ";
    sql_query($sql);
    $comment_id = mysql_insert_id();

하단에서 불러오는 코멘트 업데이트용 스킨에서 처리 불가능 입니다.
별수없이 원본 상단에 $comment_ids2 =$comment_id; 이걸 추가한후
해결은 되었습니다.ㅠㅠ
천상재회님의 도움으로 코드가 일부 수정이 되었습니다.
도움주신 천상재회님께 감사드립니다.^^
최종 수정일: 2006-12-01 16:30
헉~~!

if(document.getElementById('save_comment_' + comment_id + '_wr_9').value=='on') {



'save_comment_' + comment_id + '_wr_9'


부분이 없습니다...... 확인해 주십시오...

폼이라던지 외부로 나타낼 부분이 있어야 하지 않남유,,,,,?
감사합니다.^^

중간에 추가하고

아래처럼 바꾸어 줍니다.
<? if ($board['bo_9']=="on" ) { ?>
<input style='display:none;' id='save_comment_<?=$comment_id?>_wr_9' value='<?=$list[$i][wr_9]?>'>
<? } ?>
<textarea id='save_comment_<?=$comment_id?>' style='display:none;'>
생략


그리고 맨하단에

// 코멘트 수정
        if (work == 'cu')
        {
            document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
  <? if ($board['bo_9']=="on" ) { ?>
if(document.getElementById('save_comment_' + comment_id + '_wr_9').value=='on') {
document.getElementById('wr_9').checked = true;
  }
  <? } ?>
            if (typeof char_count != 'undefined')
                check_byte('wr_content', 'char_count');
        }



이렇게 되면 안되남유?ㅠㅠ
맘대루 하셔유......^^

질답에 댓글달아 포인트 챙기셔.....

팁올려서 포인트 챙기셔.......

천상재회는 지우 댓글 포인트나 챙기셔.....ㅠ.ㅠ


수고하셨습니다....^^
지금 제머리가 뒤죽박죽 혼란 스럽답니다. 어디서 꼬인건지....ㅠ
일단 원글처럼 적용한후 테스트 결과는 완벽한데 숨어있는 벌레가
있는지 쎄스코를 출동시켜서 라도 확인해 보겠습니다.
감사합니다.^^
헐랭이님 천상재회님 수고하셨습니다.

짝짝!~~~짝짝~~


장황한 코멘트 릴레이로 상황파악이 안되서 뭔지 모르겠다는...==3==3
글쓴이가 쓴 글에 A가 덧글을 붙였을때 그 덧글 밑에 붙은 글쓴이의 덧글만 A에게 보이고
다른 글쓴이가 쓴 덧 글들은 안보여야 합니다. 글쓴이가 자신의 글 밑에 달은 덧글을 당근
모두에게 보여야 하고... A의 덧글밑에 붙은 글쓴이의 덧글에 또 글쓴이가 덧글을 달면
그 덧글은 모두에게 보이는 것이 당연 합니다.

ㅋㅋ

(로직)
글쓴이가 쓴 원글은 항상 보인다.
글쓴이가 쓴 글밑에 A가 단 덧글은 글쓴이와 A에게만 보인다.
A의 덧글 밑에 달린 덧글은 A만 보인다.
위 내용을 다 적용시키려면 가능으 하겠으나 복잡한 로직이 추가 되어야 합니다....^^

숙제는 이 팁을 올리신 헐랭이님이 하셔야 겠네요...책임지세욧~~~~!
if ($member['mb_id'] == $write['mb_id'] || $list[$i]['mb_id'] == $member['mb_id']  || $list[$i]['mb_id'] == $write['mb_id'] || $is_admin) 이부분을 수정하면 될꺼 같아요.

다른부분은 그대로 두고... 로그인=글쓴이, 코멘트작성자=회원, 코멘트작성자=글쓴이, 운영자...에서 3번째 부분을 코멘트의 윗글 작성자=회원&&코멘트작성자=글쓴이...로 수정하면 될 것 같습니다. 그런데 잘 안되네요... -..-a

 if ($member['mb_id'] == $write['mb_id'] || $list[$i]['mb_id'] == $member['mb_id']  || ($list[$i]['wr_parent'] == $member['mb_id'] && $list[$i]['mb_id'] == $write['mb_id']) || $is_admin) {

그래서 DB를 보니까 wr_parent는 모두 원글의 id를 나타내고 있네요. -..-a

편하게 가려면... comment를 write할 때 안쓰는 field wr_9에 지금 덧글다는 글의 작성자 아이디를 추가하면 되지 않을까요??? 그러면....

 if ($member['mb_id'] == $write['mb_id'] || $list[$i]['mb_id'] == $member['mb_id']  || ($list[$i]['wr_9'] == $member['mb_id'] && $list[$i]['mb_id'] == $write['mb_id']) || $is_admin) {

문제는 comment를 쓸 때... wr_9 필드에 보고 있는 코멘트의 작성자를 넣는 것인데... 어렵네요. 어디를  손대야 하는 것인지...
전체 20 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT