묻고답하기

0.2.5 에서 새로 생긴 "이 게시글을..." 팝업 기능을 스킨으로 적응시켜 보려고 합니다.
아마도~~ 모든 스킨 제작자들이 이 고민을 할 것이라고 생각되어 이 부분의 소스 분석으로 공론화 하려고 생각하여 글을 씁니다.

1. "이 게시글을..."을 클릭하면 대략 5가지 기능의 메뉴가 팝업창에 생기나 봅니다.
그래서 매우 중요한 기능이죠.

=================================================
/modules/document/ document.model.php 파일의 함수입니다.
=================================================

    class documentModel extends document {
        ~~기타생략~~
        /**
         * @brief 선택된 게시물의 팝업메뉴 표시
         *
         * 인쇄, 스크랩, 추천, 비추천, 신고 기능 추가
         **/
        function getDocumentMenu() {

            // 요청된 게시물 번호와 현재 로그인 정보 구함
            $document_srl = Context::get('target_srl');
            $mid = Context::get('+ '+ 'cur_mid');
            $logged_info = Context::get('logged_info');
            $act = Context::get('cur_act');
           
            // menu_list 에 "표시할글,target,url" 을 배열로 넣는다
            $menu_list = array();

            // trigger 호출
            ModuleHandler::triggerCall('document.getDocumentMenu', 'before', $menu_list);

            // 인쇄 버튼 추가
            $menu_str = Context::getLang('cmd_print');
            $menu_link = sprintf("%s?document_srl=%s&act=dispDocumentPrint",Context::getRequestUri(),$document_srl);
            $menu_list[] = sprintf("\n%s,%s,winopen('%s','MemberModifyInfo')", '' ,$menu_str, $menu_link);

            // 추천 버튼 추가
            $menu_str = Context::getLang('cmd_vote');
            $menu_link = sprintf("doCallModuleAction('+ 'document','procDocumentVoteUp','%s')", $document_srl);
            $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link);

            // 비추천 버튼 추가
            $menu_str = Context::getLang('cmd_vote_down');
            $menu_link = sprintf("doCallModuleAction('document','procDocumentVoteDown','%s')", $document_srl);
            $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link);

            // 신고 기능 추가
            $menu_str = Context::getLang('cmd_declare');
            $menu_link = sprintf("doCallModuleAction('document','procDocumentDeclare','%s')", $document_srl);
            $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link);

            // 회원이어야만 가능한 기능
            if($logged_info->member_srl) {

                // 스크랩 버튼 추가
                $menu_str = Context::getLang('cmd_scrap'+ ');
                $menu_link = sprintf("doCallModuleAction('+ 'member','procMemberScrapDocument','%s')", $document_srl);
                $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link);
            }

            // trigger 호출 (after)
            ModuleHandler::triggerCall('document.getDocumentMenu', 'after', $menu_list);

            // 정보를 저장
            $this->add("menu_list", implode("\n",$menu_list));
        }


이 중에서 새로 생긴 것은 비추천 인것 같습니다.
신고도 새로 생긴 것인가요?
어쨌든.
이거 두가지 기존에 만든 스킨에 기능 추가해 넣을라구 합니다 ㅋㅋ
근데 얄굳게도 스킨파일에는 해당 소스가 없네요.
그래서 디벼보기 시작했습니다.

2. 대충 통빡으로 굴려서 procDocumentVoteDown 이 부분을 어트게 해서 넘겨주면 될 것 같네요.
아래 나오는 함수를 들여다 보면, getContent함수에 전달하는 $add_document_info  값이 기본으로 true로 되어 있네요
이 부분을 false로 하면 된다고 제로님이 언지를 주셨습니다.
(이 부분은 나인테일님 글에 댓글 주셨죠
http://www.zeroboard.com/15971318 )
=================================================
/modules/document/ document.item.php에 나오는 함수입니다.
=================================================

    class documentItem extends Object {
                ~~클래스 앞부분 생략~~
        function getContent($add_document_info = true) {
            if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret');

            $_SESSION['accessible'+ '][$this->document_srl] = true;

            $content = $this->get('content');

            // OL/LI 태그를 위한 치환 처리
            $content = preg_replace('!<(ol|ul|blockquote)>!is','<
\\1 style="margin-left:40px;">',$content);

            // url에 대해서 정규표현식으로 치환
            $content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1<a href="$2://$3" onclick="window.open(this.href);return false;">$2://$3</a>',' '.$content);
            if(!$add_document_info) return $content;

            $content = sprintf(
                    '<!--BeforeDocument(%d,%d)--><div class="document_%d_%d">%s</div><div class="document_popup_menu"><span class="document_popup_menu document_%d">%s</span></div><!--AfterDocument(%d,%d)-->',
                    $this->document_srl, $this->get('member_srl'),
                    $this->document_srl, $this->get('member_srl'),
                    $content,
                    $this->document_srl, Context::getLang('cmd_document_do'),
                    $this->document_srl, $this->get('member_srl'),
                    $this->document_srl, $this->get('member_srl')
            );
            return $content;
        }

으아~ content에 많이 붙었네요

보시다 시피 내용 뒤에 뭐를 붙입니다.
<span class="document_popup_menu document_%d">
지난번에 보니, 게시판에서 이름을 클릭할 경우 회원정보가 뜨는데 거기 실명이 공개되어서 그거 없애느라고 미니팝업 소스를 찾았었죠. 이것도 그것과 비슷할 거에요.
이 부분은 어트게 변형하겠죠? 
컴파일 할때 소스를 바꿔서 어트게 해 주는 것 같습니다. 이 부분은 아직 찾지를 못했습니다.


3. 통빡을 굴리기 위해서ㅋㅋ 기존에 사용하던 스킨 소스를 들여다 보겠습니다.
=================================================================
게시판 스킨의 view_document.html파일의 아랫부분을 변형해 쓰던 것입니다.
=================================================================

              <li class="listButton">
                  <
!--@if($oDocument->isEditable())-->
                  <!--수정-->
                  <a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_modify}</span></a>
                  <!--삭제-->
                  <a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_delete}</span></a>
                  <
!--@end-->
                  <!--프린트-->
                  <a href="{getUrl('','act','dispDocumentPrint','document_srl',$oDocument->document_srl)}" onclick="winopen(this.href);return false;" class="button"><span>{$lang->cmd_print}</span></a>
                  <!--스크렙-->
                  <
!--@if($is_logged)--><a href="#" onclick="doScrap({$oDocument->document_srl}); return false;" class="button"><span>{$lang->cmd_scrap}</span></a><!--@end-->
                  <!--리스트-->
                  <a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
                  <!--추천-->
                  <a href="#" onclick="doVote();return false;" class="button"><span>{$lang->cmd_vote}</span></a>
              </li>


음... 통빡이 잘 굴러가야 하는데 여기서 딱 멈췄네요

3. 통박굴리기
기존에 <추천>은 doVote(); 이걸로 하나만 하다가 procDocumentVoteUp /// 'procDocumentVoteDown 이렇게 두가지로 바뀐 거 같죠?
근데 내가 알기로는 doVote저거는 자바스크립트였던 거 같은데요
이거 초보 통빡으로 연결하기 좀 복잡하겠는데요

맨 위 소스랑 직접 연결해 볼께요

신고 procDocumentDeclare 이거는 비교할 게 없는...


추천 doVote();이거는 둘로 변함
procDocumentVoteUp
procDocumentVoteDown

예전 doScrap({$oDocument->document_srl});
변경 procMemberScrapDocument


에~ 근데 더이상 진도가 안나갑니다.

4. 질문

기존 소스를 어떻게 변경해야 될까요?

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
빵G select box에 링크를 넣는 방법은 없을까요?  
걷고있는그녀 사이트에 광고소스를 넣고 싶은데 위치좀 가르쳐주세요 [1] file 2013.04.22 by 송동우
김벡희 질문드립니다 ....  
김벡희 닉네임 출력 질문드립니다... [1] 2013.04.22 by 송동우
ㄲㅏ 꿍 제로보드 xe 1.3.0버젼 게시판 설치땜에 문의 드려요 [1] 2013.04.23 by 푸시아
걷고있는그녀 사이트 광고 넣고싶어요 ㅠ [1] file 2013.04.23 by 송동우
Fianna 특정 브라우저에서만 팝업 띄우기 [1] 2013.04.23 by 송동우
에엘 닉네임 수정 질문 [1] 2013.04.23 by 송동우
크르릉33 $logged_info->group_list 관련 질문! [1] 2013.04.23 by 송동우
태림씨야! xe migration empty page, 1.7.3.1  
스비라 member.model.php에서 member_info 구하기..  
최황삼 WNMP (Nginx)에서 XE 설치가 안됩니다. [2] file 2013.04.23 by 최황삼
김벡희 아이디로된 배너 클릭 시 포인트지급..  
마음의빈자리 가입 폼 관리에 아이디 항목이 없어졌습니다. file  
마법의가을 작성된 글을 관리자가 수정을 하면 글 작성자가 관리자로 바뀝니다. [1] 2013.04.23 by 몽실아빠
PEANUTSOUL 게시판 파일 첨부 오류 [1] file 2013.04.23 by ㅊㅇㅋㅋ
EvangelineA.K.Macdowell 하위 카테고리 사용시 상위 카테고리까지 출력하기.. [1] 2013.04.23 by 송동우
sohorang 카운터가 자정에 250부터 시작하네요.  
영구만세 혹시 XE로 누적기록이 가능할까요?  
헥토파신 윈도우 서버에서 백업 어떻게 해야하죠? [1] 2013.04.23 by ㅊㅇㅋㅋ
김태규887 페이지수정-표만들기 [1] file 2013.04.23 by ㅊㅇㅋㅋ
EFANY 접속 수 보이기 [1] 2013.04.23 by ㅊㅇㅋㅋ
o초코o 게시판을 이렇게는 못만드나요? [1] 2013.04.23 by ㅊㅇㅋㅋ
데코01 아이디찾기 에 주민번호 없애려면.. 어떻게 해야하나요? [1] 2013.04.23 by ㅊㅇㅋㅋ
o초코o 주소고정후 에러  
빛먹은고래™ 업그레이드 후 에러메세지입니다. 해결해주세요. [1] 2013.04.23 by ㅊㅇㅋㅋ
우냠냠냠 캐시파일 재생성이 되지않을때 어떻게하나요? [1] 2013.04.23 by ㅊㅇㅋㅋ
삐닦하년 구글검색.. [1] 2013.04.23 by ㅊㅇㅋㅋ
참치찌개 XMLHttpRequest 문의  
샤로아 레이아웃 글씨 색 수정 & 체크 항목 정렬 문의 드립니다. file