팁/튜토리얼

똥 남기는 모듈

2016.12.23 20:38
5,397
10

 

게시글 삭제 전

 

01.png

 

게시글 삭제 후

 

02.png

 

삭제된 게시글 (비)추천 방지

03.png

 

 

댓글 삭제 똥 남기기

 

04.png

 

 

 

 

유저가 작성한 게시글, 댓글, 대댓글을 삭제할 경우 "삭제된 게시글입니다" 와 같이 전환하는 모듈입니다.

일부 애니 사이트에서 사용중인 방식이길래 급하게 미러링했습니다.

유저가 아닌 (게시판)관리자가 삭제할 경우 정상적으로 삭제됩니다.

따로 설정페이지 같은건 없습니다

 

그냥 부처님 같은 마음으로 뿌려봅니다 ㅋㅋ;

 

+ 댓글에 대댓글이 달려 있을 경우 수정방지 기능이 포함되어 있습니다.

 

게시판 스킨단 삭제된 게시글 판별 예제 (스케치북 _read_nav.html)

{@

...

    $is_deleted = !($logged_info && $logged_info->is_admin == "Y") && preg_match('/<span.*?style=".*color:\s?#888888.*">/i', $oDocument->getTitle($mi->subject_cut_size)) ? TRUE : FALSE;

}

 

    <a cond="$is_logged" class="document_{$oDocument->document_srl} action bubble m_no" href="#popup_menu_area" onclick="return false;" title="{$lang->cmd_document_do}"><i class="fa fa-ellipsis-h"></i><b class="tx">{$lang->cmd_document_do}</b></a>
    <block cond="$oDocument->isEditable() && !$is_deleted">
    <a class="edit" href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl,'comment_srl','')}"><i class="ico_16px write"></i>{$lang->cmd_modify}</a>
    <a class="edit" href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl,'comment_srl','')}"><i class="ico_16px delete"></i>{$lang->cmd_delete} </a>
    </block>

 

 

개발환경 XE 1.8.27, php 5.6

 

https://github.com/huhani/xe-gamezot

 

 

 

 

 

+

https://github.com/huhani/xe-gamezot/commit/451ce4a974ef5a7b69d746fb696c58c6a165fa9e

파일이 첨부된 댓글 삭제시 계속 남아있는 현상 수정하였습니다
해당 행을 추가해주세요

댓글 59

  • 2017.02.18 05:06 #505151
    감사합니다.

    게시글도 댓글도 잘 적용되네요~
  • 2017.02.21 01:39 #507391

    한가지 추가하고 싶은 것이 있습니다.

    게시글 삭제시 tag 테이블에 들어갔던 이 삭제게시물의 문서번호로 들어간 태그를 삭제해 주고 싶은데요.
    -> 이유는 저희는 tag를 활용해서 문서에 해시태그 형태로 태그를 보여주고 있습니다. 그런데 다른 곳에서 태그를 눌러 조회하면 목록에 이 삭제된게시물입니다. 라는 게시물이 함께 조회가 되어서요. 게시물이 완전 삭제될 때는 태그관련 db가 모두 삭제가 되기 때문에...


    tag 모듈에 코드를 보니

    function triggerDeleteTag(&$obj)
    {
    $document_srl = $obj->document_srl;
    if(!$document_srl) return new Object();

    $args = new stdClass();
    $args->document_srl = $document_srl;
    return executeQuery('tag.deleteTag', $args);
    }




    <query id="deleteTag" action="delete">
    <tables>
    <table name="tags" />
    </tables>
    <conditions>
    <condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" />
    </conditions>
    </query>


    tags 테이블에서 이렇게 해당문서번호의 태그는 모두 지워주고 있습니다.



    -----------------------------------------------------------------------------------
    function triggerDeleteTag(&$obj)
    {
    $document_srl = $obj->document_srl;
    if(!$document_srl) return new Object();

    $args = new stdClass();
    $args->document_srl = $document_srl;
    return executeQuery('tag.deleteTag', $args);
    }


    이부분을 똥남기는모듈의 어떤 부분에 어떻게 고쳐 넣어야 할지 알 수 있을까요 ??

  • 2017.02.22 11:57 #509213
    $args = new stdClass();
    $args->document_srl = $document_srl;
    executeQuery('tag.deleteTag', $args);

    https://github.com/huhani/xe-gamezot/blob/master/gamezot.controller.php#L121
    같은 곳에 적당히 구겨넣으면 될 것 같습니다.
  • 2017.02.23 00:31 #509581
    감사합니다!
  • 2017.09.18 15:12 #738353
    왜 폴더를 modules 폴더에 올려놨는데 설치된 모듈리스트에 없을까요
  • 2018.01.15 22:22 #859772

    XE 최신코어에서 관리자페이지 혹은 게시글 관리에서 삭제된게시글 삭제가 실패가 발생합니다.

    댓글은 이미삭제된 댓글이라고 뜨고 삭제되지 않습니다.

    어디를 고쳐야 할까요?

  • 2018.12.20 02:22 #1131525
    xe 최신 버전에서는 작동하지 않나요? 써보고 싶은데 모듈에 넣어봐도 나오질 않네요 ㅠㅠ
  • 2018.12.20 02:26 #1131533
    잘 동작합니다. 다만 사용하시는 php 버전이 7.2 라면 Object 함수 중복 문제로 수정해줘야 하는 부분이 있습니다 7.1 이하는 상관없습니다.
  • 2018.12.20 06:16 #1131668
    성급해서 모듈이 진행되기전에 적용이 안되는걸로 착오가있었나봅니다 ㅠ.ㅠ 적용 잘됩니다 :D