***minicalendar_viewer.inc.phpの改造は続く [#p9319480]
さてminicalendar_viewer.inc.php((このプラグイン名長いですね (^^; ))の動作と見た目は、ほぼ自分の目的通りになったわけですが、ここまで辿り着くのに''ごまかし・省略・後先考えない''を基本に押し進めてきました。(やっぱ動かないとねぇ)~
しかし、流石に今回改造に利用したwikinote.inc.phpに対して削除・追加は、それ本来の機能((単体での利用は微妙なものに・・・。私はminicalendar_viewerにしか使うつもりなかったので (^-^ ))を失わせるものでした。~
一応、この改造も整理して公開していこうと考えているので、''このままじゃまずい!''((もしかしたらwikinote.inc.phpを利用している方がこのサイトを見て改造した時、サイトイメージが崩れて使えねぇっと思うことでしょう))という事で、wikinote.inc.phpの動作に影響を与えないように改良してみました。
//cut
+当初wikinoteを利用するに当たって装飾タグ<ul><li>がごっつ邪魔だったので削除していました。これを消さないで取り込む方法は・・・
--やっぱり正規表現かな?しかし私は正規表現が全くわかりません。 (^^; とりあえず色々とyahooで調べて適当に作ってみました。
--minicalendar_viewer.inc.php
#expand(400){{{
#code(diff){{
if (PLUGIN_MINICALENDAR_VIEWER_COMMENT === TRUE) {
if (exist_plugin_inline('wikinote')) { //taru 06.08.18 if~
+ $wikinotepage = 'Note/' . $page;
+ $search_r = array ('@<ul[^>]*?>(.+?)</ul>@si', // ul を削除
+ '@<li[^>]*?>(.+?)</li>@si', // li タグを削除
+ '@<a href="[^>]*?>Article</a>@si', // Article リンクを削除
+ '@>Comment@si'); // Commentの置き換え
+ $replace_r = array ('$1',
+ '$1',
+ '',
+ '><img src="'.IMAGE_URI.'plus/comment.png" width="15" height="15" alt="Comment" title="Comment" />Comment' . "(" . log_count('update',$wikinotepage) . ")"
+ );
$comm = call_user_func(array(new PluginWikinote(array('templink')), 'convert'));
$comm = preg_replace(array("'<p>'si","'</p>'si"), array("",""), $comm );
- $tail .= str_replace('>Comment','><img src="'.IMAGE_URI.'plus/comment.png" width="15" height="15" alt="Comment" title="Comment" />Comment' . "(" . log_count('update',$wikinotepage) . ")",$comm);
+ $tail .= preg_replace($search_r, $replace_r, $comm);
}
}
}}
}}}
--と、まぁこんな感じにしたら何故かうまく動いている様子です。~
--ちなみにdo_plugin_convertを使わずにcall_user_func(array(new PluginWikinote(array('templink')), 'convert'));としているのは、wikinote内でグローバル変数が使われていたのでそこをコメントアウトするかこの方法を使うかしないとincludeした時に各ページのコメントリンクが同じなる現象が起きるからです。
+wikinoteのdefault_template_contentsに無理やりくっつけたNote生成元ページへのリンクはwikinoteの通常使用時に邪魔者でしかない。
#expand(400){{{
-ってことで上のコードで定義している
call_user_func(array(new PluginWikinote(array('templink')), 'convert'))
-は、当初
call_user_func(array(new PluginWikinote(), 'convert'))
-としていました。この'templink'オプションはwikinoteには元々存在していません。今回の改造で追加しました。
-'templink'オプションが有効になるようにwikinote.inc.phpを改造します。
#code(diff){{
function PluginWikinote($args)
{
// Modify here for default values
$this->options['prefix'] = 'Note/';
$this->options['mainlabel'] = 'Article';
$this->options['notelabel'] = 'Comment';
$this->options['except'] = '^$';
$this->options['noauto'] = FALSE;
+ $this->options['templink'] = FALSE; //taru 06.08.22
}}
#code(diff){{
// do not touch, users
global $vars;
$this->parse_options($args);
list($page, $notepage) = $this->parse_current($vars['page']);
$is_none = $this->is_none($page);
if ($is_none) {
$this->inline = '1';
$this->convert = '';
} else {
- $this->autocreate_wikinote($notepage);
+ $this->autocreate_wikinote($notepage,$page); //taru 06.08.18
if ($this->error != '') { return "<p>#$this->plugin(): $this->error.</p>"; }
}}
#code(diff){{
- function autocreate_wikinote($notepage)
+ function autocreate_wikinote($notepage,$page)
{
if ($this->options['noauto']) return;
if ($this->is_page($notepage)) return;
$contents = auto_template($notepage);
if ($contents == '') {
+ if ($this->options['templink']){ //taru 06.08.22
+ $contents = $this->default_template_contents . '[[' . $page . ']]'; //taru 06.08.18
+ } else {
$contents = $this->default_template_contents;
+ }
}
}}
}}}
+Articleのリンクをどうするか。これって消したいけど直接wikinoteから消すと一番問題になるのですよね。これは一番上に書いたコードで解決できてる事ですが、正規表現のサンプル見ながらとりあえずうまくいった感じです。 (^^;
# '@<a href="[^>]*?>Article</a>@si' を '' で置き換える事で削除しています。
***wikinote.inc.phpはちゃんと動くかな? [#c6ae9c15]
#wikinote(mainlabel=本文,notelabel=コメント)
#wikinote(mainlabel=本文,notelabel=コメント,noauto)