lineParser를 이용한 플러긴에 관한 질문

14 views
Skip to first unread message

Jin Jun

unread,
Nov 26, 2011, 8:16:43 AM11/26/11
to narinwiki
다른 종류의 Parser를 써보려고 테스트 하는 중, lineParser를 이용한 방법이 잘 되어서 질문드립니다.

예를들어,
++++ 를 사용하면 <hr/><hr/> 로 바꿔주는 플러긴을 만든다고 할때,

register() 함수안에

$parser->addLineParser(
$id = $this->plugin_info->getId()."_wiki_thickLine",
$klass = $this,
$regx = '^\+\+\+\+$',
$method = "wiki_twoHr");

그리고
public function wiki_twoHr($matches, $params)
{
$parser = &$params[parser]; // $params[parser] 는 참조변수로 전달됨
$parser->stop = true; // $parser 의 stop 을 true로 함으로써 다른 line
parser 들을 실행하지 않음
return "<hr/><hr/>";
}

로 했는데, 변환되지 않고 그대로 나오네요.
분명 어디선가 어처구니없는 실수를 했을텐데 모르겠네요.. ^^
도움 부탁드립니다.

Chongmyung Park

unread,
Nov 26, 2011, 10:31:24 AM11/26/11
to narinwiki
parser 에서 플러그인의 lineParser를 실행 안시켰네요.
정확히는 문단 나누는(<p> 태그) syntax에서 모두 캡쳐해서 다음 regex 가 실행이 안되는 문제가 있었습니다.

아래 두 파일을 교체하셔서 해보세요. 보여주신 플러그인 코드에는 문제가 없습니다.

http://code.google.com/p/narinwiki/source/browse/trunk/lib/narin.syntax.php
http://code.google.com/p/narinwiki/source/browse/trunk/lib/narin.Parser.class.php


플러그인 개발하시다가 필요한기능이나 버그 알려주세요.

Jin Jun

unread,
Nov 26, 2011, 3:03:51 PM11/26/11
to nari...@googlegroups.com
아주 빠른 애프터서비스? 감사드립니다. ^^

lineParser로 해보려는 것은, tablesoter (http://tablesorter.com/docs/) 를 적용하는 것입니다.
지금의 table 문법에 맨앞과 맨뒤에 ( 와 ) 를 덧붙이면,
현재의 table 처리 함수에서 클래스를 바꾸고 (첫번째) 헤더를 thead 에 넣기만 하는것입니다.
그래서 wiki_table() 함수를 (불필요한 부분 제외하고) 통채로 copy해서 plugin에 넣었습니다.

한가지 궁금한 점은,
tablesorter를 사용하기 위해서, css와 js ( $(document).ready 함수와 함께) 를 넣어야 하는데,
plugin callback 함수안에서 include_once 했습니다.
그런 방식이 맞는지 잘 모르겠습니다.
본문 보기에서는 잘 되는데, preview 에서는 안되는 문제가 있네요.  
뭐 중요한 문제는 아니고요.. 혹시 더 적합한 방법이 있다면 좋겠지만요.. ^^

Chongmyung Park

unread,
Nov 26, 2011, 4:57:33 PM11/26/11
to narinwiki
빌트인 플러그인인 lock 플러그인의 info.php 를 보시면,
install 기능을 사용하는 것이 있습니다. 그것을 참고하셔서..
(shouldInstall, shouldUninstall, install.. 등의 함수)

narinwiki/data/{$bo_table}/css
narinwiki/data/{$bo_table}/js

'위키관리 > 플러그인' 에서 install 을 하면 폴더에 필요한 js, css 파일을 작성하도록
플러그인 info 파일을 만들면 되겠습니다.

위 두개의 폴더에 있는 css, js 파일은 자동으로 위키에 포함되도록 되어있습니다.

요약하면 플러그인에서 필요한 js, css 파일은 install 기능을 이용해서 위 두 폴더에 넣으면 됩니다.
unInstall 할때는 삭제하도록 하고요.

Jin Jun

unread,
Nov 27, 2011, 11:23:34 AM11/27/11
to nari...@googlegroups.com
네 도움이 많이 되네요. 고맙습니다. ^^

css의 그림 화일이나 jquery plugin js 화일들은, 
install 때 해당 장소로 copy하고 uninstall 할때는 unlink 하면 되겠죠?

음.. 지금하다보니까, $this->plugin_path 가  narin.PluginInfo.clss의 path (= lib) 로 잡히네요.
일단 __construct 안의 parent::__construct(); 다음에 하드코딩으로 넣었습니다.

그리고, tableSorter의 경우, 사용권한 등 별다른 설정이 (아직은) 필요없어서 getSetting()을 사용하지 않았는데,
[삭제] 버튼은 getSetting()이 있어야 활성화되네요.  일단 구현되지 않은 테마선택을 넣어서 해결했습니다. ^^

한번 시험해 보시겠어요? ^^;

Chongmyung Park

unread,
Nov 27, 2011, 2:13:47 PM11/27/11
to narinwiki
폴더 이름을 tableSorter 로 하셨나요?
사용에 약간 문제가 있었는데..

lib/narin.Plugin.class.php 파일의 __construct 에서

$class_name = strtolower(substr(get_class($this), 11));
위 코드를
$class_name = substr(get_class($this), 11);
$class_name{0} = strtolower($class_name{0});
이렇게 고쳐야 할 것 같습니다.

폴더이름을 모두 소문자로 변환해서 읽어오도록 되어있어서.. 문제가 좀 있네요.
--
그리고 지금 사용중인 위키 알려주실 수 있나요?
공개 위키라면 '행복한 나린위키 사용자들' 에 알려주시면 감사하겠습니다 ^^;
--
하나 제안하자면 플러그인명이 tableSorter 보다는 sortableTable 이 어떨까 합니다.
표 플러그인이니 끝이 table 로끝나는게 더 자연스러워 보여서요.

Chongmyung Park

unread,
Nov 27, 2011, 2:14:18 PM11/27/11
to narinwiki
$this->plugin_path 는 곧 수정해야겠네요. T_T

Jin Jun

unread,
Nov 27, 2011, 2:25:36 PM11/27/11
to narinwiki

On Nov 27, 8:13 pm, Chongmyung Park <chongmyung.p...@gmail.com> wrote:
> 폴더 이름을 tableSorter 로 하셨나요?
> 사용에 약간 문제가 있었는데..

아 그랬군요.. 아마 제 경우에는 캐쉬에 남아있어서 작동했나 봅니다. ^^
이렇게 css내에 폴더를 만드는 것은 괜찮겠죠?
다른건 몰라도 이미지 화일들은 중복될 경우가 많고
일일히 prefix를 붙이기도 힘들것 같고요. ^^

>
> lib/narin.Plugin.class.php 파일의 __construct 에서
>
> $class_name = strtolower(substr(get_class($this), 11));
> 위 코드를
> $class_name = substr(get_class($this), 11);
> $class_name{0} = strtolower($class_name{0});
> 이렇게 고쳐야 할 것 같습니다.
>
> 폴더이름을 모두 소문자로 변환해서 읽어오도록 되어있어서.. 문제가 좀 있네요.
> --
> 그리고 지금 사용중인 위키 알려주실 수 있나요?
> 공개 위키라면 '행복한 나린위키 사용자들' 에 알려주시면 감사하겠습니다 ^^;

아직은 적용한 웹사이트는 없습니다.
그냥 로컬 wamp를 이용하고 있고요.
적용하게 되면 알려드릴께요. ^^

> --
> 하나 제안하자면 플러그인명이 tableSorter 보다는 sortableTable 이 어떨까 합니다.
> 표 플러그인이니 끝이 table 로끝나는게 더 자연스러워 보여서요.

저도 그게 첫 생각이었는데, 사용하는 jquery 플러그인 이름이 그래서 그냥 따랐습니다.
저도 sortableTable이 훨씬 자연스럽다고 생각합니다.. 아님 줄여선 그냥 sorTable.. -_-;

Chongmyung Park

unread,
Nov 27, 2011, 6:16:51 PM11/27/11
to narinwiki
info.php 파일에서

mkdir($this->data_css_img_path, 777);

이 부분을

mkdir($this->data_css_img_path, 0777);

이렇게 해주셔야 합니다.
권한설정이 잘못되서 폴더가 안지워지네요..
(권한변경 후 삭제했습니다)

Jin Jun

unread,
Nov 28, 2011, 7:54:44 AM11/28/11
to narinwiki
아이구.. wamp에서 테스트 하다보니 문제가 많네요. ^^;
지난번 폴더 이름 대소문자도 아무래도 윈도우즈라서 그냥 통과한듯..
다음에는 꼭 nix 환경에서 테스트 해보겠습니다.

On Nov 28, 12:16 am, Chongmyung Park <chongmyung.p...@gmail.com>
wrote:

Reply all
Reply to author
Forward
0 new messages