간단한 플러그인

13 views
Skip to first unread message

Jin Jun

unread,
Nov 25, 2011, 12:47:30 AM11/25/11
to narinwiki
플러그인을 구글코드 ( http://code.google.com/p/narinwiki-plugins/ ) 에 업데이트 합니다.

1. 확장 변수 플러그인 (진행중)

정해진 (또는 계산되는) 값을 문서보기에 뿌려주는 기능입니다.
예를들어, {{WIKINOW:FULL}} 은 현재시간을 'YYYY년 MM월 DD일 오후 hh:mm' 와 같은 포맷으로 변환해주거

{{WIKINAME}}은 $board[bo_subject] 즉, 게시판/위키 이름을 뿌려주는 형식입니다.
아주 간단한 기능이지만 이렇게 지정해놓으면 써먹을 곳이 있지 않을까 생각됩니다.
구현은 addVariableParser를 쭈욱 등록하고...
$variable_regs = array(
"wikinow"=>array("start_regx"=>"WIKINOW", "end_regx"=>"(:(.*))?"),
"fullpagename"=>array("start_regx"=>"FULLPAGENAME",
"end_regx"=>""),
"wikiname"=>array("start_regx"=>"WIKINAME", "end_regx"=>"")
);

foreach($variable_regs as $func => $v) {
$parser->addVariableParser(
...);
}

그리고 구현함수들, wikinow(), fullpagename(), wikiname().
사실 직관적인 이름들을 붙이는 것이 더 중요하겠죠.
dokuwiki에서는 별다른 표준?은 없는것 같아서, mediawiki에서 사용하는 것들 (영어 (http://
en.wikipedia.org/wiki/Help:Magic_words), 한글 (http://ko.wikipedia.org/
wiki/%EC%9C%84%ED%82%A4%EB%B0%B1%EA%B3%BC:%EA%B8%B0%EB%B3%B8_%ED%8B
%80) )이 있으니 그것으로 시작해볼까 합니다.


2. include 플러그인 (시험중)

다른 문서를 현재의 문서로 포함하는 기능이고, 문서의 일부(섹션단위)를 포함할 수도 있습니다.
예를 들어, {{page=/위키/환영인사}} 는 '/위키/환영인사' 문서를,
{{page=/위키/환영인사#회원}} 는 '/위키/환영인사' 문서의 '회원' 섹션을 가져옵니다.

단, 포함 대상 문서는 cache가 생성된 경우만 가져오도록 했습니다. 혹시 모를 무한루프를 방지하는 측면도 있고요.
구현은 맨땅에 헤딩한 것이라 어떨지는..


3. template 플러그인 (개발중)

예를 들어, {{template=/틀/상자?제목=상자제목&내용=상자 내용}} 은 미디아위키의 정보상자처럼 float:right
로 정보를 보여주는 형태입니다. 실제로 사용되는 형태는
http://ko.wikipedia.org/wiki/%ED%8B%80:%EB%85%B8%EB%B2%A8%EC%83%81_%EB%94%B1%EC%A7%80
를 참조하세요.
음.. byfun님이 알려주신 '다른 문서 포함' 코드 (
http://narin.byfun.com/wiki/narin.php?bo_table=wiki&doc=%2Fnarin%2F%EB%82%98%EB%A6%B0%EC%9C%84%ED%82%A4+%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8#유용한
코드 ) 는 parser 클래스를 wiki_class_load("Parser") 를 사용하는데, 그렇게 하면 원래 문서의
Parser와 충돌하는지 문제가 발생하더군요. 그래서 new NarinParser()로 생성해서 사용했습니다.

지금은, /틀/상자 문서에 문서를 꾸며주는 css와 html 을 다 넣어서, 사실 그다지 효율적이지는 않습니다.
아무래도 템플릿용 별도의 파서를 만들고, css와 html 구조를 틀문서간에 공유/상속해야 할것 같습니다. 갈길이 머네요.
^^;

* * *

별로 한것은 없는데 글이 길었습니다.
시간되시면 문제지적/개선 등 의견 부탁드립니다. ^^

Reply all
Reply to author
Forward
0 new messages