TITLE:リンク切れ・消失 自作プラグイン
*リンク切れ・消失 自作プラグイン [#a42d98db]
#contentsx
*paraedit.inc.php 0.6 [#h4ab39cf]
とりあえず[http://pukiwiki.sourceforge.jp/dev/?PukiWiki%2F1.3%2F%BC%AB%BA%EE%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%2FParaEdit PukiWiki/1.3/自作プラグイン/ParaEdit]で作者のサイトが消失して落とせないと困っているらしい。一応、別サイトで利用するときに落としたものがあったのでここに置きます。&br;
#table_edit2(form=text,textarea,edit=off){{{
|ダウンロード|バージョン|備考|h
|&ref(paraedit.inc.php);|0.6|作者サイトが消失したため、こちらで保存していたものを公開|
|&ref(paraedit_7a.inc.zip.tgz);|0.7a|PHP5.2.0以上の環境ではphp.iniの制限値範囲でしかページに文字を追加できない問題を修正&br;「テキストの整形ルール」のリンク定義を変更|
}}}

 見出し単位の編集が可能になります。(通常はページ単位)
**設置方法 [#o5e2457d]
''設置方法''&br;

''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) の書換え''
&br;
-次の一行に置換。(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の方がスマートな気が。


&br;
''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行目の後ろの方にある&color(Red){id=};の一文字前は半角の空白が一つあります。空白を入れ忘れると、通常ページのh2やh3等のタグが機能しなくなってしまいます・・ (T-T 

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

***編集リンクの挿入箇所を指定 [#c1805b4f]
''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「テキスト整形のルールを表示する」のリンクでエラー [#l61c6109]
(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);
に修正すると良いみたいです。 (^^;
--ちょっと補足:括弧の位置を、&color(Blue){cmd=edit};の&color(Red){直前};から&color(Red){直後};に移動しただけです。cmd=editの直前の括弧を消し忘れると、編集用のtextareaが表示されなくなる嬉しくないハプニングが (T-T
*コメント [#y9314b84]
- 設置方法は確かこんな感じだったと思うのですが、siteDev改造時の覚書から引っ張てきて戻しているので間違っていたらごめんなさい。(マテ -- [[taru]] &new{2006-10-18 (水) 21:54:45};
-- paraedit.inc.phpのソース中に説明書きがあったのか…orz。 -- [[taru]] &new{2006-10-19 (木) 00:29:46};
- paraedit 0.6 いただきました。助かりましたー   -- [[ちー  &heart; ]] &new{2007-02-20 (火) 17:37:17};
-- いえいえー (^^)  -- [[taru]] &new{2007-02-20 (火) 22:34:02};
- すごーーーーーく、助かりました。ありがとうございます -- [[たく &heart; ]] &new{2007-03-17 (土) 14:23:52};
- 全ての情報がこちらにそろっていたのに、お間抜けな私は気づかずこんな時間まで悩みまくりました(。ω。むきゅ~。とまれ、ミラー&解説感謝であります(。・_・。)b。 -- [[石掘る猫]] &new{2007-03-24 (土) 03:26:13};
- 頂きました。ここに来るまで上手くいかず悩んでました。。。ホントに感謝感謝です! -- [[藍旋]] &new{2007-05-01 (火) 00:59:04};
- 最後で解説している// 編集リンクの挿入箇所を指定 ですが、【paraedit.inc.phpの書き換え】と書いてくれると解り易いと思います。 -- [[kanti]] &new{2007-06-07 (木) 11:18:02};
-- ご指摘ありがとうございます。確かに解り難かったですね (^^; 追記しておきました。 -- [[taru]] &new{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を別の階層等に移動した場合にも動作してくれそうです。 -- [[ぃぉぃぉ]] &new{2007-06-29 (金) 02:45:43};
- このページに掛かってる制限を解除しましたので、再編集して頂けるとありがたいです。 -- [[taru]] &new{2007-06-29 (金) 08:30:32};
-- 再編集ありがとうございました。&br;こちらのページ内容は利用者で自由に編集できるように,このままにしておきますね。 -- [[taru]] &new{2007-06-30 (土) 11:26:05};
- このページのように鉛筆マーク位置につけるにはどうすれば良いですか? -- [[U]] &new{2007-10-03 (水) 16:20:45};
- こちらのサイトは[[PukiWiki Plus!>plus:FrontPage]]で提供されているPukiWikiの改造版です。&br;
[[PukiWiki Plus!>plus:FrontPage]]を使ってWikiサイトを構築するのであれば、pukiwiki.ini.phpの設定変更だけで鉛筆マークの見出し編集を利用できます。&br;本家PukiWikiで鉛筆マーク付見出し編集をしたい場合、次の方法が考えられるでしょう。&br;
+paraedit.inc.phpの改造&br;
''imageフォルダにparaedit.png画像を保存する''&br;
 *paraedit.png(鉛筆マーク)は、(&ref(http://taru.s223.xrea.com/wiki/image/plus/paraedit.png);)を保存して使ってください。&br;&br;
''Editと表示させている所を鉛筆マークに変更''&br;
 // 編集リンクの文字列・スタイルを指定
 //   %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>の後ろ
+okkezさんのサイトで提供されている[[本体改造パッチ>http://fullmetal.dip.jp/pukiwiki/?memo%2F%E6%94%B9%E9%80%A0%2Fparaedit.diff%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6]]を使って改造する。&br;
&br;
の2通りがあるかと思います。 -- [[taru]] &new{2007-10-03 (水) 20:23:39};
- 上のparaedit.inc.phpに鉛筆マークを表示する方法にて、いらないコード(スタイル変更用spanタグ)を消し忘れていたましたので修正しました。 -- [[taru]] &new{2007-10-13 (土) 14:59:16};
- 編集中に気づかず、ハマってしまった点を補足として追記しました。 (^^;  -- [[token]] &new{2007-10-07 (日) 18:04:06};
-- ありがとうございます。一番無難なのが変更内容をコピペして頂く事ですかねぇ、変更点が多いと入力ミスが増えますから。 -- [[taru]] &new{2007-10-07 (日) 18:39:42};
- かなり長いページ(3万文字程度)をこのプラグインで見出し編集しようとするとエラーも出ずに編集できないのですが、何か改善方法はありませんか? 長いページこそ見出し編集したいのに困っています・・・ -- [[go]] &new{2007-11-01 (木) 22:50:08};
- 以前にも同じような現象報告とサンプル([[pukiwiki.dev:PukiWiki/1.3/自作プラグイン/ParaEdit/動作しないサンプル]])があったので、私のテスト環境でも確認してみた事があるのですが、問題無く編集できます。&br;この事から予想するとしたらpraedit.inc.phpは通常の編集より負荷が掛かるらしいので、文字数以外にページ数も多いPukiWiki構築サイトではparaeditでの更新プログラム実行中にPHPの制限時間に引っかかってしまいPHPによる強制終了が実行されたのではないでしょうか?&br;もしかしたらPukiWiki公式サイトのように負荷の掛かる機能を削っていく事で、動作可能になるかもしれません。 -- [[taru]] &new{2007-11-02 (金) 00:07:54};
- 試してみたところ、PukiWiki 1.4.7、同じ量のページでPHP 4.4.2.だと問題なく、PHP 5.2.3.だと編集できなかったので、おっしゃるとおりPHPの問題のようですね。 -- [[go]] &new{2007-11-02 (金) 03:45:40};
- paraedit.inc.phpの変更で 「[parnum]&$1&amp」 が 「[parnum]$1&amp」 と、&が抜けています。 これが抜けてると「テキスト整形のルールを表示する」でエラーが起きる様です(1.4.7_notbで確認) -- [[へろへろ]] &new{2008-01-30 (水) 10:13:27};
- Pukiwiki1.4.6でparaeditを使っています。PHP5.2.5にあげたら編集エリアが表示されなくなってしまいました・・・paraeditをPHP5で稼動させている方はいらっしゃいますか? -- [[manbo]] &new{2008-03-03 (月) 14:45:27};
-- PHP5.2.5にバグありそうですね。ちょっと調べてみようかな・・・。 -- [[taru]] &new{2008-03-04 (火) 08:29:27};
-- 昨日寝ぼけながらPHP4の設定をコメントアウトしてPHP5フォルダにPHP5.2.5を突っ込んで環境構築、paraeditの動作確認してみました。この時 preg_match("/^(.*?)(<textarea .*?>)(.*?)(<\/textarea>.*)$/is", $body, $textareas);が正しく実行されていない事が判明していたので、検索してみると[[Hajime Miyauchi氏>http://www.mylab.jp/diary/20070122.html#p02]]のブログにそれっぽいメモが書かれていました。&br;

>[[PHP: 正規表現関数(Perl 互換) - Manual>http://jp.php.net/pcre]]
>
-pcre.backtrack_limit integer
 PCRE のバックトラック処理の制限値です。 
-pcre.recursion_limit integer&br;
 PCRE の再帰処理の制限値です。この値を大きくすると、 使用可能なプロセススタックを使い切ってしまい、
 (OS のスタックサイズの制限値に達して) PHP をクラッシュさせてしまうことに注意しましょう。

paraeditのソースコードを見ていると問題の部分は無駄な処理をしているところがある様なので、今晩にでも回避方法考えてみますね。
  -- [[taru]] &new{2008-03-04 (火) 12:41:42};
- とりあえず問題なさげに動いているようなので、置いておきます。
|&ref(paraedit.inc.zip.tgz);|PHP5.2.5 PukiWiki-1.4.7動作確認済み|
PHP5.2.0以上のバージョンご利用の方、動作確認お願いします。 -- [[taru]] &new{2008-03-04 (火) 23:16:47};
- PHP 5.2.5,Pukiwiki1.4.6で確認したところ、第三階層(***)を編集しようとしたときだけ、iframeの引数を勝手に書き換えてしまいまsita。 -- [[manbo]] &new{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]] &new{2008-03-05 (水) 15:10:26};
- あぁたぶんhtmlspecialcharsの処理入れ忘れてるからだと・・・。自宅に戻ったら修正作業しますorz。 -- [[taru]] &new{2008-03-05 (水) 17:29:28};
- 修正しました。動作確認お願いします。&ref(paraedit_7a.inc.zip.tgz); -- [[taru]] &new{2008-03-05 (水) 21:49:19};
- 対応ありがとうございます (^-^  が。。。ページ名長(wikiDirのファイル名215文字)+ページ数約600のサイトで動きません。現象は編集エリアが表示されずに、その見出しの内容がテキストで表示されるだけです。たとえば、InterWikiNameの見出しをクリックすると本来編集域が表示される場所に「  * InterWikiName [#bf2d416a] InterWiki用のサーバリストです。 [URL サーバ名] タイプの形式で記述してください。 」と表示されます。しかし、短いページ名+ページ数20程度のテスト環境では問題がなく動作しています(3/5に申告した文字置換現象は解消されています)。サイトによってうまく動かないという不具合は、過去に書かれていたようにPHP5の問題でparaeditの動作を阻害しているということでしょうか? -- [[manbo]] &new{2008-03-06 (木) 13:55:09};
- 追加報告です。ファイルサイズが大きい or ファイル名が長い ページを少しずつ消したところ、ファイル数520でparaeditが動くようになりました・・・公開済みのページを消すわけにはいかないので、根本解決にはならないのですが・・一応ご報告まで。とりあえずpukiwiki1.4.7に上げて改善するか試してみます -- [[manbo]] &new{2008-03-06 (木) 14:20:22};
- あぁすみません、多重投稿してしまいました (..;  -- [[manbo]] &new{2008-03-06 (木) 14:36:35};
- ページ内の文字数に影響する動作はPHP5.2.0からの制限設定値に影響した物です。&br;ページ数に影響した動作は、現象の起きる環境を構築してからでないと原因特定が難しいため、時間が掛かりそうです。 -- [[taru]] &new{2008-03-07 (金) 00:47:52};
- Windows2k Apache2.0.55 PHP5.2.5  PukiWiki-1.4.6 EUC-JPの環境下にてParaedit0.7aの動作テストを行いました。&br; ○設置ディレクトリまでの文字数:18文字&br; ○テスト用ファイル名の文字数:207文字(これ以上の文字追加はエラーになります)&br; ○テスト用に追加したファイル数:1000個&br;&br;''テスト結果'' paraeditの編集領域は問題無く表示される。編集を更新するとautolinkの影響でページに文字だけが表示されない問題が発生する(html装飾系は表示)。autolinkをoffにすると文字情報表示、paraedit編集は問題無く可能。 -- [[taru]] &new{2008-03-09 (日) 12:34:48};
-- 現状、上の報告で連絡頂いた問題点を再現する方法が難しくparaedit0.7のデバックが難しいです。連絡頂いた内容からすると、実行中にどこかの関数が制限値によりエラーをはいてbody表示用変数がエラーを含んだ結果の処理だと予想できるので、どの時点でつまずいたかがわかれば対策が取れるかもしれないのですが、闇雲にやるわけにいかないので厳しいですね。 (..;  -- [[taru]] &new{2008-03-09 (日) 12:45:43};
- 検証ありがとうございました。お手数をおかけすてすみません。Pukiwikiのバージョンアップをしようとしてファイルのdiffをして気がついたのですが、paraedit稼動のために本プラグインに加えて、[[edit.ini.phpのカスタマイズ:http://fullmetal.dip.jp/pukiwiki/?memo%2F%E6%94%B9%E9%80%A0%2Fparaedit.diff%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6]]をしていました。もしかしたらこの部分が悪さをしているのかも・・・VerUPの際にこの改造を外して試してみようと思います。 -- [[manbo]] &new{2008-03-10 (月) 10:37:19};
- うちでは(長いファイル名が存在しないためか)動作に問題ありません。これまでパラグラフ編集できなかったページができるようになって助かりました。ありがとうございました。 -- [[774RR]] &new{2008-03-11 (Tue) 17:23:45};
- おかげで設置できました。ありがとうございました。設置方法の説明の中で【paraedit.inc.php をplugin ディレクトリ (./plugin) に コピー】も書いていただけると、初心者的には助かります。 -- [[ichi]] &new{2008-04-25 (金) 19:54:26};
-- このページは制限を掛けてないので、出来れば気づいた方が編集して頂けると助かります。 -- [[taru]] &new{2008-04-25 (金) 20:03:38};
-- 了解です。遅くなりましたが、書き加えてみました。 -- [[ichi]] &new{2008-05-12 (月) 14:16:45};
-- ありがとうございました。 (^^)  -- [[taru]] &new{2008-05-12 (月) 19:16:52};

#comment

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