addline.inc.php

サマリボタンを押すと指定文字列を追加するプラグイン
リビジョン0.13
対応バージョン1.4
投稿者sha
投稿日2003-07-30 (WED) 00:03:38

概要

  • ボタンやリンクを押すと、設定ページで指定した文字列を追加。
  • 行単位の追加。インライン型は同じ行内での文字列単位で追加も可能。
  • ボタンやリンクの表記も変更可。

説明

  • 画面のボタンを押すと、「:config/plugin/addline/設定」で、あらかじめ指定された文字列を追加します。
  • テーブルのフィールドを追加したりするのに便利です。自作プラグイン/attachref.inc.phpと一緒に使うと、画像ギャラリーっぽい雰囲気のページが作れます。
  • XHTML1.1 validation check済み

使用法

ブロック型プラグイン/インライン型プラグイン

  • 引数の仕様
    #addline(設定名,[above|below|up|down|btn:<ボタン名>|ltext:<左テキスト>|rtext:<右テキスト>])
    &addline(設定名,[before|after|above|below|up|down]){<リンク名>};
  • 引数の意味
    設定名: 「:config/plugin/addline/設定名」の指定
    above|below|up|down: #commentと同じで、追加するのがボタンの上か下かの指定
    btn: submitボタンに付ける名前
    ltext,rtext: submitボタンの左右につけるテキスト
    before,after: インライン型の場合に、追加するのがリンクの前(左)か後(右)の指定
    【注意】このインライン型でリンク名を変更する「{...}」引数を使った場合は、1行に1つの&addlineのみ用いてください。1行に複数書くと挿入する場所を間違えます。現在のPukiWikiが原因のようです
    ↑「cvs:make_link.phpのv1.54以降」で対応済み(dev:BugTrack/441参照)。

使用例

ブロック型
例えば、以下のように#addlineを用意すると、「add」ボタンを押す毎に、テーブルの下に設定に記載した内容が追加されていきます。任意の位置に添付&参照できる自作プラグイン/attachref.inc.phpと組み合わせると、ほら何か楽しそうでしょ?
ページ内での記載例とボタンを2回押した結果
|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|
|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|
#addline(テーブル1,above)
「:config/plugin/addline/テーブル1」の内容
|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|

インライン型
棒グラフ型簡易投票とか。
CENTER:「納豆は好きですか?」~
&addline(グラフ,before){【は い】};▲&addline(グラフ,after){【いいえ】};~
「:config/plugin/addline/グラフ」の内容
&heart;
【表示例】
「納豆は好きですか?」
&heart;&heart;&heart;&heart;&heart;【は い】▲【いいえ】&heart;&heart;

インライン型2
addline.inc.php.8からインライン型にもabove|below|up|downが指定できるようになりました。テーブル内に記述できるようになっただけでなく、クリックするリンクによって追加する行の内容を変えられます。下記は、[ハート追加]を1回、[リンク追加]を1回クリックした例。
|>|>|CENTER:~&addline(テーブル1,down){[リンク追加]};&addline(テーブル2,down){[ハート追加]};|
|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|&attachref(,zoom,90x90);|
|&heart;|&heart;|&heart;|
【表示例】
[リンク追加][ハート追加]
[添付][添付][添付]
&heart;&heart;&heart;
「:config/plugin/addline/テーブル2」の内容
|&heart;|&heart;|&heart;|

ダウンロード

  • ここに添付しました。御利用下さい。
  • fileaddline.inc.php.13 ←提供中
    リビジョン内容
    v0.13XHTML1.1 validation check済み
    v0.12debug/ページ名が文字化け
    v0.11debug/コメント行「//...」対応
    v0.10debug/リンク名指定にバグ
    v0.9ブロック型をセンタリング。引数位置無視。debug用秘密引数
    v0.8インライン型にabove,below,up,down引数を追加
    v0.7debug/configファイルが無いときにエラー出力
    v0.6debug/いっぱい(動作確認)
    v0.5整形済みテキスト対応(動作未確認)
    v0.4インライン型対応(動作未確認)
    v0.3ボタンの名前変更など対応
    v0.2:configファイル対応
    v0.1comment.inc.phpを利用して新規作成

コメント

  • sha 2003-07-30 (WED) 00:53:42

    バグ発見。1ページ内に複数の#addlineを使うと、&attachref;は、#addline内の&attachref;までカウントして場所を間違えます。場合によっては、#addline内の&attachref;まで置き換えてしまいます。これはどう対処したらよいのでしょうか???うまいこと、#addline内の&attachre;をquoteできればいいのですが、こういうときの一般的な方法はどうしたらよいのでしょうか?

  • sha 2003-07-30 (WED) 01:06:06

    同じバグが原因で、#addlineのbelowオプションは使わないで下さい。

  • sha 2003-07-30 (WED) 01:17:13

    「:config/plugin/addline/名前」とかで設定すればいいのかな?そうすれば複数行の追加を1度に出来るように書けるかもしれないし。。。でも、実装の仕方が分からない。。。

    • sha 2003-07-30 (WED) 13:15:54

      tracker.inc.phpを参考にして、そんな感じでやってみました。仕様変更。上のバグが解消したようです。

  • nao-pon 2003-08-02 (SAT) 15:59:42

    オプションでボタンに表示するテキストを指定できるようにしてはいかがでしょう。 :)
    例えば・・・ btn:この上に行追加 とか。

    こんな感じかな。(ついでに up と down も指定可能にしてあります。 :p )

       $btn_text = $_addline_messages['btn_submit'];
       if ( func_num_args() ){
           foreach ( func_get_args() as $opt ){
               if ( $opt === 'above' || $opt === 'up' ){
                   $above = 1;
               }
               else if (preg_match("/btn:(.+)/i",$opt,$args)){
                   $btn_text = htmlspecialchars($args[1]);
               }
               else if ( $opt === 'below' || $opt === 'down' ){
                   $above = 0;
               }
               else {
                   $configname = $opt;
               }
           }
       }
       
       $s_page = htmlspecialchars($vars['page']);
       
       $string = <<<EOD
    <form action="$script" method="post">
     <div>
      <input type="hidden" name="addline_no" value="$addline_no" />
      <input type="hidden" name="refer" value="$s_page" />
      <input type="hidden" name="plugin" value="addline" />
      <input type="hidden" name="above" value="$above" />
      <input type="hidden" name="digest" value="$digest" />
      <input type="hidden" name="configname"  value="$configname" />
      <input type="submit" name="addline" value="$btn_text" />
     </div>
    </form>
    EOD;
  • sha 2003-08-02 (SAT) 16:35:14

    追加してみました。addline.inc.php.3の動作確認をしてみてください(私は週末は動作確認できないので)。ついでに、submitボタンの左右のテキストもltext:<左テキスト>, rtext:<右テキスト>で指定できるようにしたつもりです。インライン型プラグインにするという手もあるんですけどね。

  • nao-pon 2003-08-02 (SAT) 18:08:36

    そうですね。ブロック型プラグインで呼び出したときは、フォームを表示して、インラインで呼び出したときは、テキストにリンクをつけるというのもいいかも。
    &addline(パラメーター){テキスト}; というような感じかな。

  • sha 2003-08-02 (SAT) 22:56:18

    というわけで作ってみました。addline.inc.php.4。例によって動作未確認です。

  • sha 2003-08-03 (SUN) 02:24:07

    debugです。addline.inc.php.5を添付。整形済みテキスト対応。動作未確認。ちなみに、ブロック型とインライン型で動作を変えてしまいました。ブロック型が行の追加なのに対して、インライン型は行内のテキスト追加を意識しています。これで、また違った使い方が出来そうです。例えば、棒グラフ型の投票とか。

  • sha 2003-08-03 (SUN) 07:22:59

    動作確認してdebugしました。addline.inc.php.6を御利用下さい。(これを機会に自分でPukiWIkiが使える環境を用意してみました。)

  • merlin 2003-08-03 (SUN) 12:48:28

    addline.inc.php.6 動きました。 config ペ-ジに該当ペ-ジが無いときの動作ですが 今は 何も起こらないですけど エラ-吐いた方がいいのかなぁ?

  • sha 2003-08-03 (SUN) 14:44:54

    あ、エラーが出てませんね。plugin_xxx_convert()とplugin_xxx_action()ではreturnで返す値の型が違うんですね。エラー出力で失敗していたようです。というわけで、エラー出力のdebugして、addline.inc.php.7にしました。

  • sha 2003-08-03 (SUN) 22:37:17

    インライン型で不具合発見。同じ行にある&addline;の順番がめちゃめちゃ。なぜ?左端から順に呼ばれるんじゃないのか?

    • sha 2003-08-03 (SUN) 23:53:27

      症状がわかった。「{...}」で引数を書くと、インライン型の呼ばれる順番が変わるんだ!なんだそりゃ!?これだと、attachref.inc.phpでも同様の現象が起こってしまう!

    • sha 2003-08-05 (TUE) 18:36:24

      この症状に関してはPukiWikiの問題で、「cvs:make_link.phpのv1.54以降」にて対応されました。「dev:BugTrack/441」を参照のこと。

  • sha 2003-08-05 (TUE) 22:35:54

    addline.inc.php.8でインライン型でもabove,below指定が出来るようになりました。同じ行の位置に対して、クリックするリンクによって追加する内容を変えられます。

  • sha 2003-08-11 (MON) 01:53:59

    懸案事項としては、現在は文字列をそのままページに書き出しているけど、1回評価した結果をページに書き出すモードがあるといいかも。引数にevalとかつけて。呼び出される度に表記が変わるプラグインなどで、表記を固定することができるかと思って。randommes.inc.phpとか。

  • sha 2003-08-11 (MON) 04:47:16

    懸案事項2としては、自分自身を書き換えるoverride機能かな?押すと&addline;自身が指定した文字列と置き換わるのです。何かに使えるかな?

  • ページが凍結されていても文字列を追加(ページを更新)できてしまうのは仕様なのでしょうか? -- 2006-01-24 (火) 19:55:18
  • ページ凍結は編集できないようにするのであってそのページの機能を無効にするものではありません。 -- 2006-01-24 (火) 20:09:57
  • 了解しました。凍結時はaddlineが無効になるのを期待していたので残念です。 -- 2006-01-26 (木) 03:01:43
  • プラグインの中を見ていませんが、数行加えると凍結時に更新できなくなるはずです*1。 -- 0? 2006-01-28 (土) 16:40:52
    1. plugin_addline_convert
      if (PKWK_READONLY || is_freeze($vars['page'])) {
      	return;
      }
    2. plugin_addline_action
      if (PKWK_READONLY || is_freeze($vars['refer')) {
      	return array('msg' => 'err.', 'body' => "<p>freeze or READONLY</p>");
      }
  • 興味深い状況ですが、このページにおけるvoteプラグインの「使用している」ボタンは、かなり前からスパム送信(側の動作テスト目的か何か)のために使用されている様です。voteプラグインを叩いたIPアドレスで過去の更新通知メールを検索すると、過去にスパムしか送信した事のないIPに行き当たる、ということで追認する事ができます。これを上手くブロックできる仕組みを考えないと、ブロックすることはできないでしょう。 -- henoheno 2006-11-29 (水) 22:16:29
  • スパムにつきコメントをコメントアウト -- [[]] 2006-12-19 (火) 02:17:45
    • ありがとうございます。ただ、ここ数日増えている彼らはcomenntプラグインを使った「かのように再編集したテキスト」を貼り付けているんですよ (^^; 。なので comment プラグインに関する操作は効果がありません。こちらがもう少しうまいことやらないと、また来るでしょう (なおcommentプラグインを経由してきているものについては大半をブロックしています) -- henoheno 2006-12-19 (火) 23:18:43

*1 $vars が変数に代入されている場合はそちらで構いません

添付ファイル: fileaddline.inc.php.13 3539件 [詳細]

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

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

OSDN