memo.inc.phpを表組の中で利用すると、内容が更新できない

メッセージ

(現象) memo.inc.php はブロック型のプラグインなので、 表組みの中でも利用可能だろうと組み込んで見たところ、 表示はできても、メモの内容の更新ができません。 (仕様と言われてしまえばそれまでなのですが (^^;)

(原因) plugin_memo_action()の内容を確認したところ、 プラグインの出現を判断している正規表現が、 「行頭に定義されている場合」 と決め打ちしているために、以上のような挙動になっていることを 確認しました。

(対策/修正案) listboxなど、表組みの中でも動作する自作プラグインを 参考にして修正案を作ってみました。ご検討をお願いします。

plugin_memo_action()
   :
   foreach($postdata_old as $line)
   {
-     if (preg_match("/^#memo\(?.*\)?$/", $line))
-     {
-        if ($memo_no == $vars['memo_no'])
-        {
-           $postdata .= "#memo($memo_body)\n";
-              $line = '';
-           }
-           ++$memo_no;
-     }
-     $postdata .= $line;
+
+     if(preg_match('/^(?:\/\/| )/', $line)) // Skip Comment lines
+        $postdata .= $line;
+        continue;
+     }
+
+     if(preg_match_all('/(?:#memo\(([^\)]*)\))/', $line,$matches,PREG_SET_ORDER))
+     {
+        $paddata = preg_split('/#memo\(([^\)]*)\)/', $line);
+        $line = $paddata[0];
+        foreach($matches as $i => $match)
+        {
+          $opt = $match[1];
+          if ($memo_no++ == $vars['memo_no'])
+             $opt = $memo_body;
+          $line .= "#memo($opt)" . $paddata[$i+1];
+        }
+     }
+     $postdata .= $line;


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-09-09 (木) 07:42:08
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.293 sec.

SourceForge