XETOWN

분수 광장

특정한 주제 없이 자유로운 이야기를 나눌 수 있습니다.
조회 수 121 추천 수 0 댓글 11
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

세진님의 팁을 받으셨던 XE만세님의 팁으로부터 응용을 해봤습니다.

참고 링크: https://www.xpressengine.com/tip/22459465

 

원본 팁에선 페이지 새로고침이 있었는데, 여기선 #cmtPosition 요소만 새로고침을 적용해봤습니다.

아약스보드 안 쓰시는 분들한테는 도움이 될 수 있을 듯해요ㅋ

 

사용팁에 안 올리고 자유게시판에 올리는 건 아직 확신이 없어서요;;;

여건 되시는 분들, 시험 삼아 테스트해보시고 의견 주시면 감사하겠습니다

 

 

1. _comment.html에서 댓글에 댓글달기 링크(class="cmt_delete")에 다음의 onclick 속성을 추가

onclick="delComment('{$lang->confirm_delete}',{$comment->comment_srl});return false;"

 

2. board.js에 다음을 추가. 또는 _comment.html 파일 하단에 스크립트 태그로 추가

function delComment(msg, cmt_srl){
    var message = confirm(msg);
    if(message) {
        var params = new Array();
        params['comment_srl'] = cmt_srl;
        exec_xml('board','procBoardDeleteComment', params, function() {
            jQuery('#cmtPosition').load(location.href+' #cmtPosition');
            jQuery(document).scrollTop(jQuery('.fdb_lst_wrp').offset().top);
        })
    } else {
    }
};
  • ?
    후하니 2016.10.20 19:37:31

    댓글 페이지가 50개 단위로 나뉠 경우
    맨 마지막 51번째 댓글 삭제할때 cpage조정 따로 설정하셔야 할거에요

     

    그리고 비회원...

  • profile
    윤삼 2016.10.20 19:46:38
    헐, 그러네요. 이런 cpage...ㅋㅋㅋ
    비회원은 외부에선 사이트가 잠금 상태여서 이따 집에 들어가서 다시 확인해봐야겠네요.
    감사합니다~!
  • ?
    SimpleCode 2016.10.20 19:48:22
    댓글 페이징까지 다시 계산해야한다면 굉장히 머리아픕니다.

    그런 경우에는 그냥 페이지 번호로 나누는 것보다, "더보기" 버튼으로 넘겨보는 방식이 사용자 입장에서도 편할 거에요.
  • profile
    윤삼 2016.10.20 19:53:01

    아, 더보기가 있었죠~
    가뜩이나 식견도 좁은데, 좁은 창만 보고 있다보니ㅎㅎ
    감사합니다. 일단 이번 습작을 해내면 적용해봐야겠어요. 페이징은 더보기로!

  • profile
    윤삼 2016.10.20 20:21:08

    $cpage가 $oDocument->comment_page_navigation->last_page와 같고,
    목록상에서 count($oDocument->getComments())가 1일 때를 조심하면 되는 거겠죠?

    이 경우에 한해서 리로드되는 주소값의 cpage를 $cpage-1로 해주면 될 것 같은데...


    혹시 그 외에도 고려사항이 더 있을까요?

  • ?
    후하니 2016.10.20 21:05:39
    새 댓글 갱신속도가 많이 빠른 편이 아니라면
    var cpage = jQuery("#cmtPosition .bd_pg .this").text();
    if(cpage=="") cpage='1';

    var recomment_count = jQuery(".fdb_itm .re").length;
    var comment_count = jQuery(".fdb_itm").length-recomment_count; // Parent comment count

    if(cpage !=1 && ((jQuery(".fdb_itm").length == 1) || (comment_count == 1 && jQuery("#comment_"+comment_srl).attr("class").indexOf("re") ==-1) || (comment_count == 0 && jQuery(".fdb_itm").filter(':first').attr("id") == "comment_"+comment_srl))) cpage--;

    이런식으로 처리해도 별 문제없을겁니다
  • profile
    윤삼 2016.10.20 21:25:09

    으흑흑흑, 감격입니다ㅠㅠ

    대댓글 경우는 물론이고, 특히 cpage를 페이지네이션의 this 클래스에서 가져오는 건 진짜 감동 감동이에요ㅠㅠ

    도움 덕분에 아래와 같이 짜서 문제가 되는 부분이 해결됐습니다.

    (주소창에 cpage가 그대로 남는 경우에 대비해 pushState도 넣어봤어요ㅋ)

     

    function delComment(msg, cmt_srl){
        var message = confirm(msg);
        var cpage = jQuery('#cmtPosition .bd_pg .this').text();
        if(cpage=='') cpage='1';
        var recomment_count = jQuery('.fdb_itm .re').length;
        var comment_count = jQuery('.fdb_itm').length-recomment_count; // Parent comment count
        if(cpage != 1 && ((jQuery('.fdb_itm').length == 1) || (comment_count == 1 && jQuery('#comment_'+cmt_srl).attr('class').indexOf('re') ==-1) || (comment_count == 0 && jQuery('.fdb_itm').filter(':first').attr('id') == 'comment_'+comment_srl))) cpage--;
        if(message) {
            var params = new Array();
            params['comment_srl'] = cmt_srl;
            var url = current_url.setQuery('cpage',cpage);
            exec_xml('board','procBoardDeleteComment', params, function() {
                jQuery('#cmtPosition').load(url+' #cmtPosition');
                jQuery(document).scrollTop(jQuery('.fdb_lst_wrp').offset().top);
            })
            if(current_url.indexOf('cpage')!=-1) history.pushState('','',url);
        } else {
        }
    };

     

    이제 집에 가서 비회원의 경우 어떤 문제가 있는지 확인해보겠어요 ^^/

    (아마도 비밀번호 확인?)

  • profile
    윤삼 2016.10.20 23:45:12

    비회원의 경우, 비밀번호 입력창으로 안 넘어가고 권한이 없다는 경고창만 뜨고 마네요;;
    그래서 getCommentGrant 함수를 추가하셨던 거였는데...

    에잇!!

  • profile
    윤삼 2016.10.21 00:22:51

    일단은 $comment->isGranted()가 없으면 ajax로 원래의 href를 가져오는 다른 함수를 만들고,
    권한이 있으면 위의 delComment를 실행시키는 것으로 문제를 봉합(?)했습니다.

    이 때 $document_srl가 없는 경우(제가 블로그 형태로 꾸미고 있어서 문서번호가 주소창에 없는 경우가 있거든요) 비밀번호 입력창에서 문서번호가 누락되는 경우가 있는데,
    이 문제는 input_password_form.html에서 $comment_srl로 문서번호 불러오는 쿼리를 활용해서 땜빵ㅋ했구요.
    {@
    if(!$document_srl):
    $oCommentModel = getModel('comment');
    $comment = $oCommentModel->getComment($comment_srl);
    $document_srl = $comment->document_srl;
    endif;
    }

    이로써 비밀번호 입력시에 전체 새로고침이 안되게끔 하는 것만 남은 거 같은데,
    어째, 문제가 점점 산으로 가는 느낌입니다ㅠㅠ

  • ?
    후하니 2016.10.21 01:10:48

    아마도 결국은 코어수정까지 갈거라 예상됩니다
    저거 말고도 댓글 페이지가 50개로 나뉠때 51번째 댓글을 작성할 경우 또 따로 해당 작성 댓글이 위치한 comment page값을 가져와야 하는데 이 때 모듈이나 애드온의 힘이 필요합니다 ㅠㅠ

  • profile
    윤삼 2016.10.21 01:26:08
    역시 그렇군요.....
    슬픕니다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
화제의 글 자유 우리나라 소프트웨어의 문제점 5 updatefile 라엘 2017.02.25 141
4036 자유 autoset9을 사용하는게 맞나요? 2 그위에나는놈 2016.10.23 78
4035 자유 안녕하세요 신규 이용자라서 알 수 있는게 없네요 3 그위에나는놈 2016.10.23 101
4034 자유 네이버와 NHN 4 제이엔지 2016.10.22 203
4033 자유 이상하네요 ㅋㅋ 갑자기 게시판 레이아웃이 없음으로 바뀌는 경우가있나요? ㅋㅋㅋㅋ 투데이서버 2016.10.22 49
4032 자유 XEDITION 레이아웃이 확실히 무겁긴 무겁나보네요 1 file 김제니 2016.10.22 122
4031 자유 여러분들은 포인트를 어디에 사용할 수 있도록 하시나요?? 김제니 2016.10.22 38
4030 자유 cloudflare 같은 해외업체의 경우 영수증 발급해주나요? 세금문제. 3 투데이서버 2016.10.22 86
4029 자유 안녕하세요~ 2 김민철 2016.10.22 42
4028 자유 알림센터 3.0 버그는 어디다 제보해야할까요 ㅎㅎ 버그가잇음 4 투데이서버 2016.10.22 100
4027 자유 XE타운을 잠시 떠납니다, 흑 15 윤삼 2016.10.22 185
4026 자유 PHP 6.0대 버전은 어디로 증발하였는가... 10 투데이서버 2016.10.22 123
4025 자유 (수정)냉정한 평가 부탁드리겠습니다. 16 BlackTeddyBear 2016.10.22 116
4024 자유 라이센스 php5.5.9이상이라고하면 5.5.30버전에는 호환이 안되나여? 13 투데이서버 2016.10.21 72
4023 자유 구글 애드센스 페이지수준광고(페이지레벨광고) 재밌네요 ㅋ 3 file 웹지기 2016.10.21 122
4022 자유 오늘 문득 슈퍼캐시서버? 라는 것을 상상해 봤습니다. 14 웹지기 2016.10.21 134
4021 자유 공무원들 이메일이 어쩌구저쩌구@korea.kr인것을 보고.ㅎㅎㅎ 10 MIST 2016.10.21 153
4020 자유 만약 페이스북이 클라우드 플레어를 적용한다면 어떻게 될까요? 3 낙타 2016.10.21 69
4019 자유 그누보드에도 seo비슷한 모듈이 있나요? 6 가이더 2016.10.21 88
4018 자유 [Youtube] 질문 하는 방법. 1 람보 2016.10.21 60
» 자유 스케치북에서 새로고침 없는 댓글 삭제 11 윤삼 2016.10.20 121
Board Pagination Prev 1 ... 29 30 31 32 33 34 35 36 37 38 ... 235 Next
/ 235
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...