XETOWN

호수 공원

XE 사용에 대한 여러가지 정보들을 공유할 수 있습니다.
조회 수 429 추천 수 6 댓글 46
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

 

게시글 삭제 전

 

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

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

  • profile
    오징 2016.12.24 09:50:04
    부처님의 자비하심이 온누리에 울려퍼지는 크리스마스 되길...
    메리 크리스마스!
  • ?
    해태맛동산 2016.12.24 11:32:19
    와 좋은 자료 너무 감사합니다!
    즐거운 크리스마스 보내세요 ^_^.
  • profile
    socialskyo 2016.12.25 11:15:57
    와....닉행일치
    게다가 다른 어려운 설정 없이 그냥 바로 동작해버리는 군요!!
  • profile
    웹지기 2016.12.25 11:40:37
    글 / 댓글 삭제 시 포인트 반환 동작은 이루어지는지 궁금하네요.
  • profile
    socialskyo 2016.12.25 12:00:35
    포인트 반환이 안되는것 같네요.
  • profile
    웹지기 2016.12.25 12:24:01
    네. 그럴 것 같아 질문을 드렸는데요. 글 삭제나 댓글 삭제시와 동일한 액션이 아니니 아마 실제 삭제 act 가 실행되지 않으니 포인트차감이 진행되지 않을 것 같네요.

    커뮤니티에서 포인트부분 악용사례 또는 삭제에 대한 부담이 오히려 더 없어지는 부작용이 생길 우려도 있다는 것은 사전에 파악을 한 상태에서 사이트에 적용을 해야 할 요소 인 듯 합니다.
  • ?
    후하니 2016.12.25 12:26:13
    $oPointController = getController('point');
    $oPointController->setPoint($logged_info->member_srl, $깎을포인트값, 'minus');

    위 문장을 각각
    _triggerBeforeDeleteComment, _triggerBeforeDeleteDocument 함수에서

    $oFileController = getController('file');
    $output = $oFileController->deleteFiles($comment_srl);

    아래에다 추가해보세요
  • profile
    웹지기 2016.12.25 12:31:04
    코어에서 동작되는 실제 동작이 아니라면 적용이 어려울 듯 하니다. 각 게시판 마다 글 작성이나 댓글 작성시 부여했던 포인트가 모두 다르구요. 그 포인트 만큼만 차감해야 하는 동작이니 실제 코어 동작과정을 생략하면 문제가 생깁니다.

    또, 저희는 같은 글에 동일한 댓글은 첫회만 포인트를 지급하고 이후 포인트는 회수하는 애드온을 사용해서 더욱이 모든 댓글에 포인트를 회수하면 문제도 생기구요.

    좋은 자료 공개 감사합니다. 사소한 것일 수 있지만 나름 커뮤니티에서는 분쟁의 소지가 있어 언급해 드렷어요.
  • ?
    후하니 2016.12.25 12:35:04
    게시판마다 글 작성 포인트 다른건 따로 해당 게시판 설정 값에서 포인트 값을 가져오면 문제 없지만 짜기가 귀찮아서 ㅋㅋ;

    애드온 같은 경우 저라면 모듈에다 쓰까버리지 않을까 싶네요 =.=;;
  • profile
    웹지기 2016.12.25 12:36:18
    네. 개인적으로 사용목적으로 만드신 모듈이니 이해됩니다. 그럼에도 공개해주셔서 감사해요.
  • profile
    웹지기 2016.12.26 13:21:12

    모듈 설정값으로 차감은 어렵더라도 요거 댓글에만 그냥 일괄 포인트로 정해서 적용하려니 사이트 에러가 나는데요. 혹시 잘못된 곳이 있을까요?

     

    $oPointController->setPoint(Context::get('logged_info')->member_srl, 50, 'minus');

    이렇게 고치니 차감이 되네요.

     

  • profile
    웹지기 2016.12.26 11:00:38
    혹시 댓글 기능만 이용하려고 한다면
    https://github.com/huhani/xe-gamezot/blob/master/gamezot.controller.php#L15-L137

    이부분을 삭제나 주석처리만 하면 될까요???
  • ?
    후하니 2016.12.26 11:13:10

    저 부분 주석처리와
    triggerBeforeModuleProc함수에서 문서 관련 리턴 지우고
    class파일에 document관련 트리거 지우시면 될거에요
  • profile
    웹지기 2016.12.26 11:42:15

    한가지만 여쭙겠습니다. 말씀 하신 부분 주석처리하고 설치해서 적용했는데요.
    댓글 삭제 후 게시판 목록으로 빠져 나가던데요. 이게 의도 하신건가요?? 기존에 글삭제 댓글 삭제시 해당 문서 새로고침과 다르니 약간 어색하고 해서요.

     

    기존처럼 해당문서에서 새로고침만 되게 바꿀 수 있을까요 ?

  • ?
    후하니 2016.12.26 11:54:07
    사실 개인적으로 댓글 삭제 후 게시판쪽에서 AJAX처리를 해놔서 해당부분은 잘 모르겠네요.
    https://github.com/huhani/xe-gamezot/blob/master/gamezot.controller.php#L224
    일단 혹시나 싶어서 저 행은 수정했습니다.
  • profile
    웹지기 2016.12.26 11:58:12
    네. 감사합니다. 저도 문서번호를 추가해 볼까해서 고민중이었는데 답변해주셨네요. 감사합니다. 이렇게 하면 문서에서 코멘트의 페이지로 새로고침이 잘 될 것 같습니다.
  • profile
    고양이 2016.12.26 17:51:30

    자료 완전 감사합니다.

    혹시 대댓글이 있어도 댓글을 수정 할 수 있게 가능할까요?
    너무 억악하는것 같아서요 ~

  • profile
    웹지기 2016.12.26 19:05:11
    제가 언뜻 살펴본 바로는...
    https://github.com/huhani/xe-gamezot/blob/master/gamezot.controller.php#L159-L161

    이부분이 해당 대댓글이 있을 경우 메시지를 띄우고 리턴 시키는 코드로 보입니다. 이부분 주석처리해 보시고 테스트 해보세요.

    하지만 개인적으로는 오타나 이런 것을 수정하지 못하는 불편이 이를 제한해서 악의적이거나 혹은 나쁜 행동을 일삼는 의도를 가진 사람이 행동을 하지 못하게해서 얻는 공익적 효과가 더 크다고 봅니다. 운영자 마다 생각이 다른 것 이겠지만요.
    사실 여기 XE타운에도 묻고답하기에 댓글 달리고 대댓글 달리면 잠기는 기능이 생긴게 고약한 사람이 못된 짓 하고 난 후 생긴 기능이죠.

    전 이 모듈에서 채택한 대댓글 있을 시 수정은 못하고(조작금지) 차리리 삭제를 지원해 준 것이 굉장히 맘에 듭니다.
    누군가와 논쟁의 댓글을 시작했는데 글을 조작하지 못하니 차선으로 삭제를 선택했다는 것은 어느정도 싸움을 멈추게 해주는 것과 동시에 스스로 논리에서 졌다는 의미도 되기도 합니다. 하지만 수정을 가능하게 하고 삭제는 불가능한 현 구조에서는 결국 글을 수정하거나 또는 의미없는 쩜쩜쩜으로 만들어버리거나 하는 것을 하겟죠....

    물론 저도 급하게 작성하다 놓치거나 오타가 나거나 하는 등의 수정이 힘들어지는 부분에서는 불편할 것이라고는 생각하지만 그정도는 굉장히 빈도가 많지도 않고 그런 경우 다시 댓글로 첨언을 하거나 먼저 댓글에서 뭐가 잘못 적었다라고 설명하는 과정이 오히려 전.후 맥락을 쉽게 이해 할 수 있다고 봅니다.

    대댓글로 인해 원 댓글이 수정되는 경우 다시 대댓글 작성자가 이를 반영하지 않으면 오히려 대댓글 작성자가 이상해 질 경우도 많으니까요...
  • profile
    웹지기 2016.12.30 19:29:40
    혹시 컨텐츠 위젯의 스킨쪽에 삭제글 판별 할 수 잇는 변수를 사용할 방법이 있을까요 ?
  • profile
    웹지기 2016.12.30 20:09:37

     그리고 게시글 열람 페이지에서 확인하는

    {@
    $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;
    }

    이 코드가 동작하지 않아요.

    사용자정의 부분도 삭재글에서 가려야 하는데 위 코드가 동작하지 않아 못가리고 있네요.

  • ?
    후하니 2016.12.31 00:16:21

    위젯에서 제목 색상값을 따로 처리하는가봅니다 ㅠㅠ

    위젯쪽에서 제목 색상값도 가져와서 888888이면 삭제한 게시글로 해야할 것 같네요.

    아니면 문서 content 앞에서 21바이트 만큼은 <!--DeletedDocument--> 이면 삭제한 게시글로 해도 되요

  • profile
    웹지기 2016.12.31 00:23:00
    저 코드 넣으면 그리고 닫기가 이상해져요. 위젯에 넣은거 아니고 스케치북 스킨이에요.
  • ?
    후하니 2016.12.31 00:25:55
    {$is_deleted = !($logged_info && $logged_info->is_admin == "Y") && preg_match('/<span.*?style=".*color:\s?#888888.*">/i', $oDocument->getTitle()) ? TRUE : FALSE}
    이렇게 했는데도 에러가 나나요?
  • profile
    웹지기 2016.12.31 00:27:49
    {@
    $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;
    }
    이렇게 넣었구요. 에러가 난다기 보다는 삭제글로 확인이 안되고..
    에디터에서 보면 문서 하단까지 닫힘이 연결되어버립니다.
  • ?
    후하니 2016.12.31 00:28:39 Files첨부 (1)

    제목 없음.png

     

    아 맞다
    저거 _read.html 위에다 추가하였습니다

  • profile
    웹지기 2016.12.31 00:29:40
    네. 거기에 추가했지요.
  • profile
    웹지기 2016.12.31 00:31:39
    그럼 저도 보여주신 것 처럼

    기존에 있는 곳에
    $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;

    이것만 삽입해볼게요.
  • ?
    후하니 2016.12.31 00:38:49
    저 부분은 문법적으론 변수에다 TRUE FALSE만 반환하는거라 스킨이 이상하게 된다는건 다른곳에 문제가 아닌감 예상이 되는데
    음..
    php버전 때문인가

    $is_deleted = !($logged_info && $logged_info->is_admin == 'Y') && strpos($oDocument->getContent(100), '<!--DeletedDocument-->') ? TRUE : FALSE;

    이걸로 수정해보세요
  • profile
    웹지기 2016.12.31 00:44:48
    스킨이 이상한게 아니고 지금 노트패드++ 에서 코드 넣으면 아래 사진 처럼 되어서요. 이거로 해볼게요.
  • profile
    웹지기 2016.12.31 00:34:57
    근데 이상합니다. 이 코드만 삽입하면 문서 끝까지 닫힘이 연결되는게 에디터에서 보여져요...
  • ?
    후하니 2016.12.31 00:39:02

    설마 따움표랑 쌍따움표 문제일려나

    증상이 딱 문법에러인 것 같은데

  • profile

    IMG_20161231_0037322.jpg

     

  • profile
    웹지기 2016.12.31 00:42:45
    #888888.* 뒤에 쌍따옴표까지 지우면 문서 끝까지 닫힘은 연결은 사라집니다.
  • ?
    후하니 2016.12.31 00:44:27
    $is_deleted = !($logged_info && $logged_info->is_admin == 'Y') && strpos($oDocument->getContent(100), '<!--DeletedDocument-->') ? TRUE : FALSE;

    이걸로 바꿔보세요
    기능상으론 똑같습니다
  • profile
    웹지기 2016.12.31 00:45:51
    네. 이건 현재 편집기에서 닫힘이 이상없으니 이거로 추가해서 업로드해서 테스트 해보고 결과 알려드릴게요.
  • ?
    후하니 2016.12.31 00:46:12
  • profile
    웹지기 2016.12.31 00:50:35
    잘 됩니다. 이제 변수 활용이 가능해졋네요.

    그런데 컨텐츠위젯에서도 똑같이 사용할 수 있는 방법이 잇을까요?
    여차하면 메인페이지에서 삭제글 안보여줄 수도 있어서요. 늦은밤 감사합니다.
  • ?
    후하니 2016.12.31 00:53:56
    위젯에서 $oDocument->getContent() 불러오기 가능하다면 똑같이 먹히지 않을까 생각이 드네요
  • profile
    웹지기 2016.12.31 00:56:53

    위젯에서는 목록하고 같은 개념일텐데요.. 지금 알려주신 코드는 글읽기 화면이구요...

    참조해야 하는 곳도 해당 글의 제목이구요.

  • ?
    후하니 2016.12.31 00:59:26
    위젯에서 글색상 코드가 888888이고 제목이 "삭제된 게시글입니다" 로 판별하면 되지 않을까요
  • profile
    웹지기 2017.01.05 20:20:34
    글 삭제시 추천받은 포인트 환수 추가 어렵겠죠?
  • ?
    후하니 2017.01.06 05:48:28

    가능이야 하지만 개인적으로 그 정도까진 안 써서 ㅠㅠ

  • profile
    웹지기 2017.01.06 14:44:56
    질문을 통해 받은 답변을 토대로

    $voted_count = $oDocument->get('voted_count');
    $member_srl = $oDocument->get('member_srl');
    if($member_srl){
    $module_srl = $oDocument->get('module_srl');
    $oModuleModel = getModel('module');
    $config = $oModuleModel->getModuleConfig('point');
    $module_config = $oModuleModel->getModulePartConfig('point', $module_srl);
    $point = $module_config['insert_document'] ? $module_config['insert_document'] : 0;
    if($point){
    $oPointController = getController('point');
    $oPointController->setPoint($member_srl, $point, 'minus');
    }
    $board_vote = $module_config['voted'] ? $module_config['voted'] : 0;
    $voted_point = ($voted_count * $board_vote);
    if($voted_count){
    $oPointController = getController('point');
    $oPointController->setPoint($member_srl, $voted_point, 'minus');
    }
    }


    이렇게 처리했어요.
  • ?
    후하니 2017.01.07 18:01:21
    잘 작동한다면 문제없을듯 합니다 ㅎㅎ
  • profile
    고양이 2017.01.08 23:28:19
    @웹지기님 @후하니님 저거 깃허브 반영 가능할까요?
  • ?
    후하니 2017.01.09 09:01:02
    개인적으로 그렇게까지 깐깐하게 할 필요는 없는 것 같아서 음..
    애초에 어그로 방지차원에서 만든 모듈이라..
    많은 사람들이 필요로 하는 기능이라면 넣어야겠지만요 ㅋㅋ;

List of Articles
번호 분류 제목 글쓴이 날짜
공지 질문/답변 답변을 확실히 받기위한 질문자 지침서 21 람보 2015.12.31
화제의 글 자료공유 시간표 위젯 1.1.2배포합니다. 15 file 착한악마 2017.01.10
4213 질문/답변 웹하드 게시판 new 이준희 11:46
4212 질문/답변 가입한 날은 탈퇴하지 못하게 팁 관련 질문 new Chronos 09:47
4211 질문/답변 XE 1.8.29 를 PHP 7.1 과 MySQL 5.5 환경에서 설치시에 오류가 납니다. 3 new Paul 04:40
4210 질문/답변 contact us 모듈을 통해 관리자메일로 보내면 3 웹지기 2017.01.17
4209 질문/답변 서브도메인 요청 아이피 1 낙타 2017.01.17
4208 질문/답변  jQuery에서 ::after, ::before을 선택하고 싶습니다. 1 lun**** 2017.01.17
4207 자료공유 누리고 쇼핑몰모듈 Ver.1.1.15 2 update 람보 2017.01.17
4206 질문/답변 알림센터 알림 중복 알림 문제..ㅠㅠ 13 file 현님v 2017.01.17
4205 질문/답변 제목에 있는 저 따움표 "" 2 file 구미호 2017.01.17
4204 질문/답변 라이믹스 최신 버전에서 슈퍼캐시를 xe 공홈에서 쉬운 설치시 에러나왔어요.. ㅜ.ㅜ 4 update rurrurdl 2017.01.17
4203 질문/답변 이게 클라우드 플레어가 적용된건지 모르겠네요 8 낙타 2017.01.17
4202 질문/답변 제목박스에 [""] 쌍따움표 에러 수정 가능 할까요"" 4 구미호 2017.01.16
4201 XE 사용팁 카페24 가상서버 사용자 고급메일 발송모듈 우리메일 작동이 되지 않을 시 2 file yoon 2017.01.16
4200 질문/답변 로그인시 '기본 URL 설정이 안 되어 있습니다.'라는 메시지가 출력됩니다. 3 update 별하 2017.01.16
4199 질문/답변 로그인 히스토리 ip 관련 2 lis**** 2017.01.16
4198 XE 사용팁 대댓글 수신자 표기 2 3 GG 2017.01.16
4197 질문/답변 VPS에 XE 설치 문의드립니다. 3 Sraty 2017.01.16
4196 질문/답변 아이디 클릭 - 팝업창 없에기 2 file Katze 2017.01.16
4195 질문/답변 서버에서 XE의 XE_VALIDATOR_MESSAGE가 나오지 않습니다. 4 투정 2017.01.16
4194 질문/답변 클플 사용하고 계신분께 질문드립니다 (icn 국내망 문제) 3 이니그마 2017.01.16
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 211 Next
/ 211
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...