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

  • ページ: BugTrack
  • 投稿者: jjyun
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: プラグイン
  • 投稿日: 2004-09-04 (土) 08:08:29
  • バージョン:

メッセージ

(現象) 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;

  • 今までの実装がシンプルだっただけだと思いますよ :) -- henoheno 2004-09-04 (土) 15:18:37
  • 先日投稿した修正案だと、ページ内のコメント行をすべて消してしまう内容なっていたので修正しました。(修正箇所:Skip Comment Line の条件判定での処理部分) -- jjyun 2004-09-09 (木) 07:42:08

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

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.205 sec.

OSDN