웹마스터 팁

기존에 사용하던 위키에서는 최근에 접속한 위키 페이지가 페이지 상단에 나타남으로써 기존에 이동했던 페이지는 쉽게 링크를 클릭해서 이동이 가능했었습니다.

XE를 위키를 사용하면서 기존 위키들과는 많이 차별화(?) 된 기능에 낯설기도 하네요

1이라는 페이지를 갔다가 2라는 페이지를 갔는데 다시 1로 가고 싶으면 페이지 리스트로 접속해서 1을 찾아서 접속해야 됩니다.
최소한 이렇게 자주 왔다 갔다 해야 되는 경우에는 쉽게 이동이 가능하도록 최근 5페이지까지 히스토리를 표시하도록 수정 해봤습니다.

 

1. /xe/modules/wki/wiki.view.php
 - line 165 ~ 179

function dispWikiContentView() {
            // 요청된 변수 값들을 정리
            $document_srl = Context::get('document_srl');
            $entry = Context::get('entry');
            $oDocumentModel = &getModel('document');
            if(!$document_srl && !$entry) {
                $entry = "Front Page";
                Context::set('entry', $entry);
                $document_srl = $oDocumentModel->getDocumentSrlByAlias($this->module_info->mid, $entry);
            }
   
            // document model 객체 생성
            /**
             * 요청된 문서 번호가 있다면 문서를 구함
             **/
            if($document_srl) {
                $oDocument = $oDocumentModel->getDocument($document_srl);

                // 해당 문서가 존재할 경우 필요한 처리를 함
                if($oDocument->isExists()) {

                    // 글과 요청된 모듈이 다르다면 오류 표시
                    if($oDocument->get('module_srl')!=$this->module_info->module_srl ) return $this->stop('msg_invalid_request');

                    // 관리 권한이 있다면 권한을 부여
                    if($this->grant->manager) $oDocument->setGrant();

                    if(!Context::get('entry')) Context::set('entry', $oDocument->getTitleText());

                    // 상담기능이 사용되고 공지사항이 아니고 사용자의 글도 아니면 무시

                // 요청된 문서번호의 문서가 없으면 document_srl null 처리 및 경고 메세지 출력
                } else {
                    Context::set('document_srl','',true);
                    $this->alertMessage('msg_not_founded');
                }

            /**
             * 요청된 문서 번호가 아예 없다면 빈 문서 객체 생성
             **/
            } else {
                $oDocument = $oDocumentModel->getDocument(0);
            }

            /**
             * 글 보기 권한을 체크해서 권한이 없으면 오류 메세지 출력하도록 처리
             **/
            if($oDocument->isExists()) {
                // 브라우저 타이틀에 글의 제목을 추가
                Context::addBrowserTitle($oDocument->getTitleText());

                // 조회수 증가 (비밀글일 경우 권한 체크)
                if(!$oDocument->isSecret() || $oDocument->isGranted()) $oDocument->updateReadedCount();

                // 비밀글일때 컨텐츠를 보여주지 말자.
                if($oDocument->isSecret() && !$oDocument->isGranted()) $oDocument->add('content',Context::getLang('thisissecret'));
                $this->setTemplateFile('view_document');
            }
            else
            {
                $this->setTemplateFile('create_document');
            }

            // 스킨에서 사용할 oDocument 변수 세팅
            Context::set('oDocument', $oDocument);
   $eCookie = explode(',',$_COOKIE['+ '+ 'WIKI']);     // WIKI라는 이름의 쿠키를 ,로 구분해서 자른다.
   $CC = count($eCookie);
   $history[] = array();    //배열생성
   $k=0;
   for($j=0;$j<$CC;$j++){
    if($eCookie[$j] != $oDocument->getTitleText() && $eCookie[$j] != '' && $k <= 4 ){  
     $wikiHistory .= $eCookie[$j].",";    // 쿠키로 저장할 값
     $history[$k] = $eCookie[$j];     // 배열로 저장
     $k++;
    }
   }
   //$history[$k] = $oDocument->getTitleText();
   $wikiHistory = $wikiHistory.$oDocument->getTitleText();    // 쿠키로 담을 값
   Context::set('oHistory',$history);     
   setcookie('WIKI',$wikiHistory);   // 쿠키로 저장
   

            /**
             * 사용되는 javascript 필터 추가
             **/
            Context::addJsFilter($this->module_path.'tpl/filter', 'insert_comment.xml');
       
            return new Object();
        }

 

위와 같이 해서 접속한 페이지 리스트를 쿠키로 저장하고  또 배열로 담아 view 페이지에서 사용할 수 있도록 하였습니다.

2. /xe/modules/wiki/skins/xe_wiki/header.html
 - line 54 ~ 68

<!--%import("css/wiki.css")-->
    <colorset">!--@if(!$module_info->colorset)-->
        colorset">{@$module_info->colorset = "white"}
    <!--@end-->
<div class="wikimain">
<div class="header">
    <!--@if($oDocument)-->
    <div class="title"><H1 class="pageTitle">{$entry}</H1></div>
    <div class="edit"><isExists())-->!--@if($oDocument->isExists())--><a href="{getUrl('act','dispWikiEditPage','entry',$entry)}">Edit</a><!--@end--></div>
    <!--@end-->
    <div class="go">
        <form action="{getUrl()}" method="get">
            <input type="hidden" name="mid" value="{$module_info->mid}" />
            <input type="text" class="inputTypeText w100" name="entry" />
            <span class="button"><input type="submit" value="Go" /></span>
        </form>
    </div>
</div>
<div class="clear"></div>
 <div class="readHeader">
  <div class="pageHistory">
   <!--@if($oDocument)-->
            <div class="userInfo">
    <getMemberSrl">!--@if(!$oDocument->getMemberSrl())-->
                <div class="author">last edited by
     <isExistsHomepage">!--@if($oDocument->isExistsHomepage())-->
      <a href="{$oDocument->getHomepageUrl()}">{$oDocument->getNickName()}</a>
                    <!--@else-->
      {$oDocument->getNickName()}
                    <!--@end-->
                </div>
                <!--@else-->
    <div class="author">last edited by
     <span class="member_{$oDocument->get('+ 'member_srl')}">{$oDocument->getNickName()}</span>
    </div>
                <!--@end-->
                <div class="date" title="{$lang->regdate}">
                    <strong>{$oDocument->getUpdate('Y.m.d')}</strong> {$oDocument->getUpdate('H:i:s')}
                </div>
            </div>
   <is_admin=='Y'" >!--@if($logged_info->is_admin=='Y')-->
   <div class="history">
    <a href="{getUrl('act','dispWikiHistory','document_srl',$oDocument->document_srl)}">View History</a>
   </div>
   <!--@end-->
         <!--@end-->
            <div class="links">
    <a href="{getUrl('act','dispWikiContent','entry','')}">Front Page</a>
                <a href="{getUrl('act','dispWikiTitleIndex','entry','','document_srl','')}">Title Index</a>
            </div>
            <div class="clear"></div>
        </div>
 <div class="clear"></div>
 <div class="readHeader">
  <div class="pageHistory">
   <!--@if($oDocument)-->
            <div class="userInfo">
                <div class="author">
    <!--@foreach($oHistory as $key => $val)-->
     <a href="/?mid={$mid}&entry={$val}">{$val}</a> =>
    <!--@end-->
    {$entry}
                </div>
            </div>
         <!--@end-->
            <div class="clear"></div>
        </div>
 <div class="clear"></div>
</div>
<div class="clear"></div>

위 소스에서 빨간 색 부분은 추가 된 부분이고. 주황색 부분은 다른 작업 때문에 수정한 부분이니 빨간색 부분만 추가하시면 됩니다.

아래와 같이 표시 됩니다. 현재 페이지를 제외하고는 클릭하면 해당 페이지로 이동 가능..
중간에 있는 부분은 회사 업무랑 관련된 링크라 제목 필터링 하였습니다. 양해 부탁드립니다.

wiki.JPG

 위키 사용하시는 분들에게 도움이 되시길 바라며
제로님 이런 기능좀 추가해 주세요

// 덧 : history기능은아직 미 구현인건가요??

태그 연관 글
  1. [2011/03/17] 묻고답하기 Wiki 1.2 업로드만 하면 접속이 안되네요 by Humade
제목 글쓴이 날짜
완벽하게 XE폴더를 url에서 접속하기 [2] 팬텀MW 2009.02.10
IIS에서 XE 설치 시 FTP 정보 등록에서 오류 조치 [4] impre 2009.02.20
lighttpd 에서 XE rewrite 기능 (.htaccess) 사용하기 [2] msl2246 2009.02.28
첨부파일의 외부 무단 링크 차단하기(XE) 게시판설정 [7] file 왕초보왕따 2009.03.02
svn 업으로 xe 최신본 유지하기 [2] file e~세상쉼터 2009.03.08
XE DB 백업한거 복원 하기 [2] 라르게덴 2009.03.17
왕초보용 xe 1.2.0 버전 사용 기본 레이아웃 좌측에 배너 삽입 방법. [7] 『june™』 2009.03.20
제로보드 XE나 개인 블로그에 GPS 로그(궤적)를 나타낸 구글맵 삽입하기 상오기 2009.03.21
xe 설치시 다음과 같은 오류가 생깁니다. Seung Hur 2009.04.02
제로보드4, xe 버전 바이러스에 대한 질문 [1] 투자혁명 2009.04.15
BNU님의 Planner XE 1.2 버젼(일정관리) [9] file 개돌 2009.04.21
초보 xe1.1.5에대한질문 [3] 울프 2009.04.26
XE 위키에 최근 접속 페이지 정보 출력 file 개돌 2009.04.27
XE 1.2.1에서 xe_default 게시판 스킨 사용시 IE에서 글입력폼이 안보일 때 [2] 현의느낌 2009.04.28
1.2.2 XE에디터에서 글쓸때 <p> <br> 자동 변환 단축키 [14] 샤릉해 2009.05.02
XE에 맞춤법 검사기를 링크해보자! [2] 개돌 2009.05.14
XE용 query xml 방식으로 일반 테이블도 접근 처리 하기 [1] 라르게덴 2009.06.18
지오피아 게임 제로보드 XE 연동 [5] file 다른사람 2009.06.30
무료 채팅 프로그램인데 꽤 유용하네요.. (xe와 닉네임 연동(넨네님 추가) [8] 리우  2009.07.10
xe 124 버전 파일첨부,다운로드 안되시는분들 ~! [7] file 일인자 2009.07.12