Top > PukiWiki > vanish

リンク切れ・消失 自作プラグイン Edit

paraedit.inc.php 0.6 Edit

とりあえずPukiWiki/1.3/自作プラグイン/ParaEditで作者のサイトが消失して落とせないと困っているらしい。一応、別サイトで利用するときに落としたものがあったのでここに置きます。

ダウンロードバージョン備考
fileparaedit.inc.php0.6作者サイトが消失したため、こちらで保存していたものを公開
fileparaedit_7a.inc.zip.tgz0.7aPHP5.2.0以上の環境ではphp.iniの制限値範囲でしかページに文字を追加できない問題を修正
「テキストの整形ルール」のリンク定義を変更
fileparaedit_8.inc.zip.tgz0.8 UTF-8Nで保存しました。(EUC-JPの環境で利用する方は文字コードを変更して使う必要があります。)
 pukiWiki1.4.7では利用できない参照定義があったので修正してみました。但し、この部分は消しても良いかもしれません。(function plugin_paraedit_init())
fileparaedit.inc.zip0.9split() を explode() に書き換え、fatal errorを回避した物
見出し単位の編集が可能になります。(通常はページ単位)

設置方法 Edit

設置方法

lib/pukiwiki.php に次のコードを追加

  • メイン処理(// Main)の直前に次の二行を追加。(paraedit 0.6以降)
    include_once('plugin/paraedit.inc.php');
    $post["msg"] = _plugin_paraedit_parse_postmsg($post["msg_before"], $post["msg"], $post["msg_after"]);
    バージョンによっては(1.4.7等、PLUGIN_DIRが定義されたバージョンでは)
    include_once(PLUGIN_DIR . 'paraedit.inc.php');
    $post["msg"] = _plugin_paraedit_parse_postmsg($post["msg_before"], $post["msg"], $post["msg_after"]);

skin (skin/pukiwiki.skin.ja.php) の書換え

  • 次の一行に置換。(PukiWiki1.3.5は一箇所、1.4rc3は二箇所)
  • pukiwiki 1.4.5の場合はskin/pukiwiki.skin.php内の二箇所を書き換えて下さい。

変更前

<?php echo $body ?>

変更後

<?php include_once 'plugin/paraedit.inc.php'; echo _plugin_paraedit_mkeditlink($body); ?>
  • (注意) InputHelper と ParaEdit を併用する場合は下記の様にして下さい。
    php include_once 'plugin/input_helper.inc.php'; include_once 'plugin/input_helper.inc.php';
    echo plugin_input_helper_echo( _plugin_paraedit_mkeditlink($body) );
  • 1.4.7の場合(他でも同じ方法でいけるのかも)
  • skin/pukiwiki.skin.php
    pkwk_common_headers();
    の直前あたりに
    // ParaEdit
    if(exist_plugin('paraedit')) {
       $body = _plugin_paraedit_mkeditlink($body);
    }
    を追加。↑のもinclude_onceよりexist_pluginの方がスマートな気が。


convert_html() の書換え

  • lib/convert_html.php の編集。class Heading extends Element 内にある、
    return $this->msg_top.
     $this->wrap(parent::toString(),'h'.$this->level," id=\"{$this->id}\"");
  • 上の二行を下の三行に置換。
    $paraedit_flag = (preg_match("/^content_1_/", $this->id)) ? ' paraedit_flag=on' : '';
    return $this->msg_top.
     $this->wrap(parent::toString(),'h'.$this->level," id=\"{$this->id}\"$paraedit_flag");
    • ちょっと補足:改変3行目の後ろの方にあるid=の一文字前は半角の空白が一つあります。空白を入れ忘れると、通常ページのh2やh3等のタグが機能しなくなってしまいます・・ (T-T

paraedit.inc.php をplugin ディレクトリ (./plugin) に コピー

  • ダウンロードしたファイルparaedit.inc.phpをpluginディレクトリに置いてください。

編集リンクの挿入箇所を指定 Edit

paraedit.inc.phpの書換え

  • 見出しの中、上、下と場所が簡単に変えられるよう3種類のコードが書かれているので見出しのの中に入れるように最初の「</h2>の前」の先頭にある//を削除して「<h2>の前」の先頭に//を加える。
    // 編集リンクの挿入箇所を指定
    //   <h2>header</h2> の時、$1:<h2>, $2:header, $3:</h2> となるので $link を
    //   好きな場所に移動
    // (例)
       define(_PARAEDIT_LINK_POS, '$1$2$link$3'); // </h2>の前
    //     define(_PARAEDIT_LINK_POS, '$link$1$2$3'); // <h2>の前
    //   define(_PARAEDIT_LINK_POS, '$1$2$3$link'); // </h2>の後ろ

PukiWiki1.4.7「テキスト整形のルールを表示する」のリンクでエラー Edit

(paraedit.inc.phpの編集)

// ヘルプ表示 : リンク書き換え
$body = preg_replace("/(cmd=edit&amp;help=true)/", "plugin=paraedit&amp;parnum=$vars[parnum]&$1&amp;refer=" . rawurlencode($vars[page]), $body);

// ヘルプ表示 : リンク書き換え
$body = preg_replace("/cmd=edit(&amp;help=true)/", "plugin=paraedit&amp;parnum=$vars[parnum]$1&amp;refer=" . rawurlencode($vars[page]), $body);

に修正すると良いみたいです。 (^^;

  • ちょっと補足:括弧の位置を、cmd=edit直前から直後に移動しただけです。cmd=editの直前の括弧を消し忘れると、編集用のtextareaが表示されなくなる嬉しくないハプニングが (T-T

コメント Edit

  • 設置方法は確かこんな感じだったと思うのですが、siteDev改造時の覚書から引っ張てきて戻しているので間違っていたらごめんなさい。(マテ -- taru 2006-10-18 (水) 21:54:45
    • paraedit.inc.phpのソース中に説明書きがあったのか…orz。 -- taru 2006-10-19 (木) 00:29:46
  • paraedit 0.6 いただきました。助かりましたー -- [[ちー [heart] ]] 2007-02-20 (火) 17:37:17
    • いえいえー (^^) -- taru 2007-02-20 (火) 22:34:02
  • すごーーーーーく、助かりました。ありがとうございます -- [[たく [heart] ]] 2007-03-17 (土) 14:23:52
  • 全ての情報がこちらにそろっていたのに、お間抜けな私は気づかずこんな時間まで悩みまくりました(。ω。むきゅ~。とまれ、ミラー&解説感謝であります(。・_・。)b。 -- 石掘る猫? 2007-03-24 (土) 03:26:13
  • 頂きました。ここに来るまで上手くいかず悩んでました。。。ホントに感謝感謝です! -- 藍旋? 2007-05-01 (火) 00:59:04
  • 最後で解説している// 編集リンクの挿入箇所を指定 ですが、【paraedit.inc.phpの書き換え】と書いてくれると解り易いと思います。 -- kanti? 2007-06-07 (木) 11:18:02
    • ご指摘ありがとうございます。確かに解り難かったですね (^^; 追記しておきました。 -- taru 2007-06-07 (木) 19:43:45
  • skinの書き換えで
    php include_once 'plugin/input_helper.inc.php'; include_once 'plugin/input_helper.inc.php';
    php include_once PLUGIN_DIR . 'input_helper.inc.php'; include_once PLUGIN_DIR . 'input_helper.inc.php';
    としておくと、index.phpを別の階層等に移動した場合にも動作してくれそうです。 -- ぃぉぃぉ? 2007-06-29 (金) 02:45:43
  • このページに掛かってる制限を解除しましたので、再編集して頂けるとありがたいです。 -- taru 2007-06-29 (金) 08:30:32
    • 再編集ありがとうございました。
      こちらのページ内容は利用者で自由に編集できるように,このままにしておきますね。 -- taru 2007-06-30 (土) 11:26:05
  • このページのように鉛筆マーク位置につけるにはどうすれば良いですか? -- U? 2007-10-03 (水) 16:20:45
  • こちらのサイトはPukiWiki Plus!で提供されているPukiWikiの改造版です。
    PukiWiki Plus!を使ってWikiサイトを構築するのであれば、pukiwiki.ini.phpの設定変更だけで鉛筆マークの見出し編集を利用できます。
    本家PukiWikiで鉛筆マーク付見出し編集をしたい場合、次の方法が考えられるでしょう。
  1. paraedit.inc.phpの改造
    imageフォルダにparaedit.png画像を保存する
     *paraedit.png(鉛筆マーク)は、(paraedit.png)を保存して使ってください。

    Editと表示させている所を鉛筆マークに変更
    // 編集リンクの文字列・スタイルを指定
    //   %s に URL が入る
    define(_EDIT_LINK, '<a href="%s"><img src="./image/paraedit.png" width="9" height="9" alt="Edit" title="Edit" /></a>');
    見出しの中、上、下と場所が簡単に変えられるよう3種類のコードが書かれているので見出しのの中に入れるように最初の「</h2>の前」の先頭にある//を削除して「<h2>の前」の先頭に//を加える。
    // 編集リンクの挿入箇所を指定
    //   <h2>header</h2> の時、$1:<h2>, $2:header, $3:</h2> となるので $link を
    //   好きな場所に移動
    // (例)
       define(_PARAEDIT_LINK_POS, '$1$2$link$3'); // </h2>の前
    //     define(_PARAEDIT_LINK_POS, '$link$1$2$3'); // <h2>の前
    //   define(_PARAEDIT_LINK_POS, '$1$2$3$link'); // </h2>の後ろ
  2. okkezさんのサイトで提供されている本体改造パッチを使って改造する。

    の2通りがあるかと思います。 -- taru 2007-10-03 (水) 20:23:39
  • 上のparaedit.inc.phpに鉛筆マークを表示する方法にて、いらないコード(スタイル変更用spanタグ)を消し忘れていたましたので修正しました。 -- taru 2007-10-13 (土) 14:59:16
  • 編集中に気づかず、ハマってしまった点を補足として追記しました。 (^^; -- token? 2007-10-07 (日) 18:04:06
    • ありがとうございます。一番無難なのが変更内容をコピペして頂く事ですかねぇ、変更点が多いと入力ミスが増えますから。 -- taru 2007-10-07 (日) 18:39:42
  • かなり長いページ(3万文字程度)をこのプラグインで見出し編集しようとするとエラーも出ずに編集できないのですが、何か改善方法はありませんか? 長いページこそ見出し編集したいのに困っています・・・ -- go? 2007-11-01 (木) 22:50:08
  • 以前にも同じような現象報告とサンプル(pukiwiki.dev:PukiWiki/1.3/自作プラグイン/ParaEdit/動作しないサンプル)があったので、私のテスト環境でも確認してみた事があるのですが、問題無く編集できます。
    この事から予想するとしたらpraedit.inc.phpは通常の編集より負荷が掛かるらしいので、文字数以外にページ数も多いPukiWiki構築サイトではparaeditでの更新プログラム実行中にPHPの制限時間に引っかかってしまいPHPによる強制終了が実行されたのではないでしょうか?
    もしかしたらPukiWiki公式サイトのように負荷の掛かる機能を削っていく事で、動作可能になるかもしれません。 -- taru 2007-11-02 (金) 00:07:54
  • 試してみたところ、PukiWiki 1.4.7、同じ量のページでPHP 4.4.2.だと問題なく、PHP 5.2.3.だと編集できなかったので、おっしゃるとおりPHPの問題のようですね。 -- go? 2007-11-02 (金) 03:45:40
  • paraedit.inc.phpの変更で 「[parnum]&$1&amp」 が 「[parnum]$1&amp」 と、&が抜けています。 これが抜けてると「テキスト整形のルールを表示する」でエラーが起きる様です(1.4.7_notbで確認) -- へろへろ? 2008-01-30 (水) 10:13:27
  • Pukiwiki1.4.6でparaeditを使っています。PHP5.2.5にあげたら編集エリアが表示されなくなってしまいました・・・paraeditをPHP5で稼動させている方はいらっしゃいますか? -- manbo? 2008-03-03 (月) 14:45:27
    • PHP5.2.5にバグありそうですね。ちょっと調べてみようかな・・・。 -- taru 2008-03-04 (火) 08:29:27
    • 昨日寝ぼけながらPHP4の設定をコメントアウトしてPHP5フォルダにPHP5.2.5を突っ込んで環境構築、paraeditの動作確認してみました。この時 preg_match("/^(.*?)(<textarea .*?>)(.*?)(<\/textarea>.*)$/is", $body, $textareas);が正しく実行されていない事が判明していたので、検索してみるとHajime Miyauchi氏のブログにそれっぽいメモが書かれていました。

PHP: 正規表現関数(Perl 互換) - Manual

  • pcre.backtrack_limit integer
    PCRE のバックトラック処理の制限値です。 
  • pcre.recursion_limit integer
    PCRE の再帰処理の制限値です。この値を大きくすると、 使用可能なプロセススタックを使い切ってしまい、
    (OS のスタックサイズの制限値に達して) PHP をクラッシュさせてしまうことに注意しましょう。

paraeditのソースコードを見ていると問題の部分は無駄な処理をしているところがある様なので、今晩にでも回避方法考えてみますね。   -- taru 2008-03-04 (火) 12:41:42

  • とりあえず問題なさげに動いているようなので、置いておきます。
    fileparaedit.inc.zip.tgzPHP5.2.5 PukiWiki-1.4.7動作確認済み
    PHP5.2.0以上のバージョンご利用の方、動作確認お願いします。 -- taru 2008-03-04 (火) 23:16:47
  • PHP 5.2.5,Pukiwiki1.4.6で確認したところ、第三階層(***)を編集しようとしたときだけ、iframeの引数を勝手に書き換えてしまいまsita。 -- manbo? 2008-03-05 (水) 15:09:10
  • |#iframe(http://hoge.co.jp/test.html,target="_blank",style="width:600px;height:200px;layout-grid-line:auto;")|  →  |#iframe(http://hoge.co.jp/test.html,target=***  のような感じです。***は伏字ではなく実際にparaeditが書き換えた文字列です。素人ゆえ現象報告しかできずすみません -- manbo? 2008-03-05 (水) 15:10:26
  • あぁたぶんhtmlspecialcharsの処理入れ忘れてるからだと・・・。自宅に戻ったら修正作業しますorz。 -- taru 2008-03-05 (水) 17:29:28
  • 修正しました。動作確認お願いします。fileparaedit_7a.inc.zip.tgz -- taru 2008-03-05 (水) 21:49:19
  • 対応ありがとうございます (^-^ が。。。ページ名長(wikiDirのファイル名215文字)+ページ数約600のサイトで動きません。現象は編集エリアが表示されずに、その見出しの内容がテキストで表示されるだけです。たとえば、InterWikiNameの見出しをクリックすると本来編集域が表示される場所に「 * InterWikiName [#bf2d416a] InterWiki用のサーバリストです。 [URL サーバ名] タイプの形式で記述してください。 」と表示されます。しかし、短いページ名+ページ数20程度のテスト環境では問題がなく動作しています(3/5に申告した文字置換現象は解消されています)。サイトによってうまく動かないという不具合は、過去に書かれていたようにPHP5の問題でparaeditの動作を阻害しているということでしょうか? -- manbo? 2008-03-06 (木) 13:55:09
  • 追加報告です。ファイルサイズが大きい or ファイル名が長い ページを少しずつ消したところ、ファイル数520でparaeditが動くようになりました・・・公開済みのページを消すわけにはいかないので、根本解決にはならないのですが・・一応ご報告まで。とりあえずpukiwiki1.4.7に上げて改善するか試してみます -- manbo? 2008-03-06 (木) 14:20:22
  • あぁすみません、多重投稿してしまいました (..; -- manbo? 2008-03-06 (木) 14:36:35
  • ページ内の文字数に影響する動作はPHP5.2.0からの制限設定値に影響した物です。
    ページ数に影響した動作は、現象の起きる環境を構築してからでないと原因特定が難しいため、時間が掛かりそうです。 -- taru 2008-03-07 (金) 00:47:52
  • Windows2k Apache2.0.55 PHP5.2.5 PukiWiki-1.4.6 EUC-JPの環境下にてParaedit0.7aの動作テストを行いました。
     ○設置ディレクトリまでの文字数:18文字
     ○テスト用ファイル名の文字数:207文字(これ以上の文字追加はエラーになります)
     ○テスト用に追加したファイル数:1000個

    テスト結果 paraeditの編集領域は問題無く表示される。編集を更新するとautolinkの影響でページに文字だけが表示されない問題が発生する(html装飾系は表示)。autolinkをoffにすると文字情報表示、paraedit編集は問題無く可能。 -- taru 2008-03-09 (日) 12:34:48
    • 現状、上の報告で連絡頂いた問題点を再現する方法が難しくparaedit0.7のデバックが難しいです。連絡頂いた内容からすると、実行中にどこかの関数が制限値によりエラーをはいてbody表示用変数がエラーを含んだ結果の処理だと予想できるので、どの時点でつまずいたかがわかれば対策が取れるかもしれないのですが、闇雲にやるわけにいかないので厳しいですね。 (..; -- taru 2008-03-09 (日) 12:45:43
  • 検証ありがとうございました。お手数をおかけすてすみません。Pukiwikiのバージョンアップをしようとしてファイルのdiffをして気がついたのですが、paraedit稼動のために本プラグインに加えて、edit.ini.phpのカスタマイズをしていました。もしかしたらこの部分が悪さをしているのかも・・・VerUPの際にこの改造を外して試してみようと思います。 -- manbo? 2008-03-10 (月) 10:37:19
  • うちでは(長いファイル名が存在しないためか)動作に問題ありません。これまでパラグラフ編集できなかったページができるようになって助かりました。ありがとうございました。 -- 774RR? 2008-03-11 (Tue) 17:23:45
  • おかげで設置できました。ありがとうございました。設置方法の説明の中で【paraedit.inc.php をplugin ディレクトリ (./plugin) に コピー】も書いていただけると、初心者的には助かります。 -- ichi? 2008-04-25 (金) 19:54:26
    • このページは制限を掛けてないので、出来れば気づいた方が編集して頂けると助かります。 -- taru 2008-04-25 (金) 20:03:38
    • 了解です。遅くなりましたが、書き加えてみました。 -- ichi? 2008-05-12 (月) 14:16:45
    • ありがとうございました。 (^^) -- taru 2008-05-12 (月) 19:16:52
  • ファイルをDLすると、頭に「<br /><b>Warning</b>: putenv()~」というのが混入しており、解凍出来ません。バイナリエディタで消してみましたが、どうやら後ろの方も削れてしまっているようです。 -- 2008-06-21 (土) 17:17:48
    • PukiWiki Plus! 本体を最新のSVNファイルに更新しました。 -- taru 2008-06-22 (日) 03:56:06
    • ありがとうございます。無事DL出来ました。 (^-^ -- 2008-06-24 (火) 18:35:47
  • PukiWiki 1.4.8_alpha + ParaEdit ver.0.7aにて運用中、ある時期から部分編集できなくなりました。ファイル名が長すぎるページを作ったのかもしれないと、ページ名を短く変更してみましたが動作は復活せず。結局"pcre.backtrack_limit""pcre.recursion_limit"の制限値を大きくし、動作を復活させてしまいました。 -- 774RR? 2008-07-31 (木) 09:51:11
    • あらら、制限値に影響しにくい構造にしたつもりだったけど、ページ中の文字数が大きいとダメなのかな・・・。 -- taru 2008-08-03 (日) 23:29:30
    • 部分編集ができなくなったきっかけと疑わしきページ名は38バイト、ページ内容は531バイトでした。部分編集は一度慣れてしまうとなしの状態には戻れませんね (^^; -- 774RR? 2008-08-20 (水) 10:20:03
  • PukiWiki1.4.7_UTF-8 + PHP5.2.3の環境で使おうとしているのですが、編集エリアが出現する筈の辺りが空っぽで、3つのエラーを吐かれてしまっているのですが、これは何が起きているのでしょうか? -- ざぶとん 2008-09-21 (日) 07:46:36
    Warning: include_once() [function.include-once]: URL file-access is disabled in the server configuration in /usr/local/apache/htdocs/userad/gdat/ad_f_utf8.p on line 17
    
    Warning: include_once(http://ad.land.to/banner_text.p?en=UTF-8) [function.include-once]: failed to open stream: no suitable wrapper could be found in /usr/local/apache/htdocs/userad/gdat/ad_f_utf8.p on line 17
    
    Warning: include_once() [function.include]: Failed opening 'http://ad.land.to/banner_text.p?en=UTF-8' for inclusion (include_path='.:/usr/local/lib/php') in /usr/local/apache/htdocs/userad/gdat/ad_f_utf8.p on line 17
    • ちなみに、通常のページ全体での編集だと、問題無く編集が出来ています。 -- ざぶとん 2008-09-21 (日) 07:51:12
    • 追記:上の方にあった5.2.0以降の対策版というのを導入してみた所、編集エリア無し・書式が崩れた状態で範囲内の内容が出現する、という状態になりました。3つのエラーは継続して出現しています。どうぞよろしくお願いします。 -- ざぶとん 2008-09-21 (日) 08:10:04
      • 3つのエラーは、広告挿入関連のようですね。paraedit自体とは関わりが無いようです。 -- 2008-09-21 (日) 12:15:30
  • 一番上にある7a版を解凍してプラグインフォルダに投下したら、index.phpへアクセスしようとしても、このファイルの内容が出力されるようになりました。使い方、何か間違えているのでしょうか? -- ざぶとん 2008-09-23 (火) 10:47:31
  • 一部修正してUTF-8用に保存したfileparaedit_8.inc.zip.tgzを添付しました。また、2008-09-21 (日) 12:15:30 の書き込みは、質問者とは別の方が助言回答として書いて頂いたものですね*1。 -- taru 2008-09-23 (火) 18:10:43
    • 7aは、UTF8へエンコードしてから入れていました。8を入れてみたところ、ファイルの内容出力は直っていましたが、見出し編集を試そうとしたら
      Runtime error
      Error message : $script: Already init
      …と、ランタイムエラーが発生しています。 -- ざぶとん 2008-09-24 (水) 06:06:12
  • ローカル環境下に上記条件(PukiWiki1.4.7(UTF-8)+PHP5.2.3)と同じ状態を用意して、こちらの作業手順で導入してみたら問題無く動いているのですが、何が起きているのでしょうか?
    paraeditの挙動に関わりを持つファイルが判ると、両方のファイルの内容を見比べる事で原因が判りそうな気がしなくもないのですが…。よろしくお願いします。 -- ざぶとん? 2008-09-24 (水) 06:48:38
    • PHP.iniのpcre.backtrack_limitとpcre.recursion_limitに数値を入れて「;」によるコメントアウトを削除したら、ごく普通に編集出来るようになりました。大変、お手数をお掛けしました。*2 -- ざぶとん(自己解決)? 2008-09-26 (金) 08:08:46
  • ありがたく使わせてもらっています。
    編集する時なのですが、プレビューを表示した場合に全ページ(編集画面含む)表示されてしまうのですが
    これも見出しごとに表示することはできましょうでしょうか?
    長いページですと、プレビューをした時にその項目を探さないといけないですし、また再編集しようとした時も全ページ編集になってしまいます。
    プレビュー、編集場所も完全に見出しごとになれば楽だなと感じまして、より便利になるかなと。
    あと、任意に編集可能場所を終了することができると最高ですね。
    例えば#owariと表記した以下からは見出しの編集に含まれないようになるとかです。
    長文で質問ばかりになりましたが、もしも少しいじるだけでできるのなら、教えてもらえるとありがたいです。 -- 2008-10-06 (月) 17:22:48
  • pukiwiki.dev:PukiWiki/1.3/自作プラグイン/ParaEditのページでも2007-07-08にコメントした通り、私はparaedit.inc.phpの機能拡張を引き継ぐ事は考えておりません。
    但し、ここに書いて置けば誰かが対策してくれるかもしれません。それに期待しましょう (^^; 。 -- taru 2008-10-08 (水) 00:50:18
  • 代替設置をありがとうございます。PukiWiki/1.3/自作プラグイン/ParaEdit からお邪魔しています。
    pukiwiki-1.4.7_notb_utf8+PHP 5.2.6 の環境で PukiWiki を運用しております。

    さて、こちらのサイトの他、こちら なども参考にしながら paraedit.inc.php(0.8) を利用しようとしているのですが、
    ◆pukiwiki.php, pukiwiki.skin.php, convert_html.php, paraedit.inc.php の4ファイルに変更を加えました。
    ◆[edit] の代わりに鉛筆の画像を表示する変更も加えました。
    ◆'plugin/ と 'image/ をそれぞれ PLUGIN_DIR . ' と IMAGE_DIR . ' に変更しました。

    以上のように手を加えて鉛筆マークをクリックしてみると
    Error message :
    
    Variable(s) not found: (Maybe the old *.ini.php?)
    $rss_max
    とエラーになってしまいます。

    これは、変数 $rss_max が定義されてない という意味のエラーメッセージのようですが、
    今回のコードの改変でその辺をいじっている場所を見つけることができませんでした。
    あれこれ検索してみましたが、よい回答を見つけることができずに困っています。
    解決のヒントでも結構ですので、何か情報を分けてください。長文、乱文にて失礼いたしました。 -- muchag? 2008-10-15 (水) 16:56:44
  • 全部、一度にやろうとせずに順を追って確認してから次の作業を行うようにして下さい。どの時点でエラーが発生しているかわかれば、自分で解決できる問題かもしれません。 -- taru 2008-10-16 (木) 08:34:45
  • ご指摘いただいたように、1つずつ試してみたところ、pukiwiki.ini.php を切り分けていたのが原因でした。
    pukiwiki.ini.php を元通りに統合することで解決しました。
    複数のPukiWikiで、固有の設定と共有の設定で分けたかったのですが、残念です。
    ありがとうございました。 -- muchag? 2008-10-17 (金) 02:09:57
  • PHP5.2.0からのpreg_matchの不具合で生じてしまう部分編集用のtextareaが表示されない件ですが、私もはまってました(tracker_plusプラグインでもpreg_matchの不具合ではまりました)。環境はpukiwiki-1.4.7+PHP 5.2.6です。整理すると、部分編集したいページの文字数が多いケースとWikiページが大量に作成されているケースで発生する可能性があります。後者の場合は、部分編集画面に表示される"--雛形とするページ--"の部分のHTMLタグが、(雛形の選択候補となる)Wikiページの数に比例して大きくなるのが原因です。1ページの文字数が大きくならない使い方をしている場合は、"--雛形とするページ--"を表示させないことで回避することができます。回避修正の方法は以下の2つ。-- kuro-nyan? 2009-08-07 (金) 00:25:05
    • default.ini.phpで雛型とするページを使用しない設定にする。
      $load_template_func = 0;
    • paraedit.inc.php(0.8の場合は124行目)のedit_form関数の引数に、雛形とするページを表示しない指定(第4引数をFALSE)をする。(Pukiwiki v1.3.5の場合は調べてません;;)
      $body = edit_form($get['page'], $textdata, FALSE, FALSE);  // v 1.4
      • この方法の場合、部分編集の時だけ、雛形とするページが使えなくなります。
  • 部分編集時に雛形ページに置き換える場面は少ないと思います。(雛形ページを持ってくる代替手段はあるので、部分編集ができなくなる方が不便) -- kuro-nyan?
  • 前者(部分編集したいページの文字数が多いケース)の場合も救済するには、preg_matchで指定している$body内の文字数を減らすことが考えられます。あまりキレイではありませんが、$bodyの内容を1行づつpreg_matchに渡す方法が考えられます。 -- kuro-nyan? 2009-08-07 (金) 01:23:34
    /* 132行目のpreg_match関数の処理を以下のように修正し、
    // Wikiページが増大した場合の不具合を解消
    	preg_match("/^(.*?)(<textarea .*?>)(___paraedit_taxtarea___)(<\/textarea>.*)$/is", $body, $textareas);
    */
    ////////////////////////
    	$hit_flag = 0;
    	$textareas[1] = "";
    	foreach (explode("\n", $body) as $line) {
    		if( $hit_flag != 0 ) {		// キーワード以降の行は[4]に入れる
    			$textareas[4] .= "\n".$line;
    			continue;
    		}
    		unset( $sep_line );
    		if( preg_match("/^(.*?)(<textarea .*?>)(___paraedit_taxtarea___)(<\/textarea>.*)$/is", $line, $sep_line ) != 0 ) {
    			// キーワードがあったら分割する
    			$textareas[1] .= $sep_line[1];
    			$textareas[2] = $sep_line[2];
    			$textareas[3] = $sep_line[3];
    			$textareas[4] = $sep_line[4];
    			$hit_flag = 1;
    			continue;
    		}
    		$textareas[1] .= $line."\n";
    	}
    	$textareas[0] = $body;
    	unset( $sep_line );
    	unset( $line );
    	unset( $hit_flag );
    ////////////////////////
    
  • paraedit0.8 のソースをぱっと見ただけなのですが、バグかもと疑問に思ったのでカキコ。plugin_paraedit_action() の中では$msg_now に対して「改行コードを書換え」をしていないのに、_plugin_paraedit_parse_postmsg() で$msg_now に「改行代替文字列を \n に変換」を実行する意味があるのでしょうか? -- 2010-02-16 (火) 11:17:50
    • その行は削除して問題無いと思います。残しておくと_PaRaeDiT_と書いたときにその文字列を改行(\n)に変換してくれます。 -- taru 2010-02-19 (金) 13:09:11
  • あの、このコメントのブラグインは何所でダウロードできるか?メールがお願いします。 -- チャルル? 2010-06-02 (三) 22:37:42
  • メールでの対応は極力しないようにしておりす。また上記に書かれたメールアドレスは2次利用される危険があるためページ上から削除させてもらいました。 -- taru 2010-06-03 (木) 01:15:12
  • コメントプラグインは標準のものを改造しています。参考までにdiary/2007-03-17#rd03126d -- taru 2010-06-03 (木) 01:28:16
  • PHP 5.4.5.になって、180行目:Deprecated: Function split() is deprecated というエラーが出て機能しないようになってしまいました。split() を explode() にするとエラーは消えますが動作はしません。動かす方法があったら教えてください。 -- izumi? 2012-09-30 (日) 05:11:54
  • 書き忘れ失礼。Pukiwikiのバージョンは1.4.7のutf8版です。 -- izumi? 2012-09-30 (日) 05:13:50
  • おねがい もtっとわかりやすくまとめてください  -- 2013-02-12 (火) 15:14:50
  • と、思ったけど なんら問題なく実装できました 上から順を追ってたどれば理解できますね めんどくさい人には不向きなページかも -- 2013-02-12 (火) 15:32:32
  • まだ十分動作確認できてませんが,PukiWiki-1.5.0-utf8 + PHP 5.4.30 で動きました. 「設置方法」からの修正点は,次の2点です.-- takataka? 2014-08-16 (土) 00:18:04
    1. lib/convert_html.php の記述が変更になっているので,次のようにする:
      return $this->msg_top .  $this->wrap(parent::toString(),
      'h' . $this->level, ' id="' . $this->id . '"');
      
      を次のように書き換え
      $paraedit_flag = (preg_match("/^content_1_/", $this->id)) ? ' paraedit_flag=on' : '';
      return $this->msg_top .  $this->wrap(parent::toString(),
      'h' . $this->level, ' id="' . $this->id . $paraedit_flag . '"');
      
    2. paraedit.inc.php 中2カ所で使われている split() が deprecated なので,explode() に書き換える

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS