目次
ページ変更プラグイン
ダウンロードとインストール
概要
固有の方法で構造化データを繰り返しページに追加する方法を長い間望んでいたためこのプラグインを作成しました。 これの歴然とした例は、表へのデータの追加です。 適切に質問がなされ提示された場合、そのページのフォームは表の最後に追加行として提出された情報を追加します。
以下のように緩やかに動作します:
- フォームがページ上に存在します(Bureaucracy プラグインが作成します)
- 変更対象のページとすることも別ページとすることも可能です。
- このフォームは
action pagemod <targetpage> <pagemod_id>
という動作領域を含みます。
- 結果プレースホルダは、ターゲットページに用意しておきます。
- このプレースホルダは
<pagemod> </pagemod>
タグで囲まれています。
- フォームに入力し提出します。その後、変数をフォームの値に置き換えたプレースホルダーのコピーを含むことによって、pagemod の動作はターゲットページを拡張します。
ここの機能は以下のとおりです:
- フォーム付きのページは、自分自身または別のページを更新できます。
- 各
<pagemod>
の囲みは id を持ち、ページの異なる部分を更新するために複数のフォームを使用できます。 - フォームは、ページの複数の部分を更新できます。
- 実行するフォームと同じ
pagemod_id
を全部の部分が持っている必要があります。
- 自分が書き込みアクセス権を持っていないページを更新することができます。
- フォームを経由してページを変更するためには、読み取りアクセスだけが必要です。(バグではなく特徴です。)
- フォームを経由して変更する以外の、ページ変更を防止できることを意味します。
- 結果ページの読み込み権限だけを持ち変更権限を持たなければ、フォームページは保護されます。
- 結果ページの読み込み権限がないと、フォーム経由の修正ができなくなります。
- 一度に複数ページを更新することは、各ページの動作領域を追加することで可能です。
これでおしまいです。
使用方法
フォーム構文
フォームの定義はBureaucracy プラグインを使います。 完全な構文のために確認して下さい。 このプラグインは以下を追加します:
<form> action pagemod <target namespace:page> <pagemod_id> <...various fields for submit...> submit </form>
Bureaucracy が pagemod 動作を利用するために、以下のパラメータで action pagemod を追加する必要があります:
target
: 対象ページ。認められる表記法:- 絶対ページ ID (例:
ページ
・名前空間:ページ名
) - 現在のページを基準にした相対ページ ID (例:
.:隣のページ名
) - _self フォームと同じページ名を表す
pagemod_id
: ページ内に複数の pagemod の囲みがある場合、記入してページに含める囲みをこれで識別します。
テンプレート構文
pagemod テンプレートの定義はページ内で次のコードを使用します:
<pagemod <pagemod_id> <params>> @@Field from form@@ や ##Field2 from form## のようなタグを変換するために Wiki 文章を解析します。 このセクションの内容は見えませんし、このページに表示されません。 </pagemod> 周囲の Wiki 文章。これは表示されます。
テーブルに行を追加するための実際の例:
文章と pagemod プレースホルダが最終行の表 ^ 表見出し1 ^ 表見出し2 ^ <pagemod table_adder output_before>| @@table value 1@@ | @@table value 2@@ | </pagemod>
pagemod の囲みは次で開始します:
<pagemod <pagemod_id> <params>>
where the following is true:
pagemod_id
: これは pagemod の ID です。フォームには pagemod_id があり、同じ ID を持つ全ての pagemod の囲みを変更します。params
: params は,
区切りで次のどちらかです:output_after
: pagemod の囲みの書き換え後に出力変換することを示します。デフォルト値ではありません。output_before
: これがデフォルト値です。pagemod の囲みの書き換え前に出力変換します。
pagemod の囲みは次で終了します:
</pagemod>
Wiki ページを見たとき、その内容は表示されません。 pagemod の囲みの内容変換は、Bureaucracy プラグインの代替機能を使用します。 だから、同じようなパターンが利用可能です。
メタ変数
メタ変数は pagemod プラグインの特殊な変数です。 メタ変数の値は、実行時にプラグインが生成します。 メタ変数は 以下のとおりです:
- @@meta.date@@ : dd/mm/yyyy 形式の現在日付
- @@meta.datetime@@ : ISO 8601 に従った現在日時
- @@meta.date.format.format@@ : 指定した形式で現在の日付。この format は、PHP date() 関数で使用されるものです。これを参照。(例:
@@meta.date.format.d/m/Y@@
は@@meta.date@@
と同じ結果です。) - @@meta.user.id@@ : フォームを実行したユーザー名
- @@meta.user.mail@@ : ユーザーのメールアドレス(判る場合)
- @@meta.user.name@@ : ユーザーのフルネーム(判る場合)
- @@meta.page.id@@ : ページの完全な ID
- @@meta.page.name@@ : ページのページ名
- @@meta.page.namespace@@ : ページの名前空間
新しいメタ情報タグの要望は、実装するために私に送って下さい。
FAQ
数字のインクリメントは可能ですか?
Bureaucracy プラグイン には number
項目と hiddenautoinc
があります。
実行が成功する度にカウンタを自動的にインクリメントします。
開発
Development を参照して下さい。
バグと機能要望
pagemod プラグインは、Bureaucracy プラグインと深く関連しています。 一般的な質問や問題についても、Bureaucracy プラグインのページと Bureaucracy の課題追跡を参照してください。
pagemod プラグインの問題や要望は https://github.com/rendezz/dokuwiki-pagemod/issues に報告してください。
使用事例
実例ページ集が利用可能です:
内容:
- フォームページ、または別のページを変更するフォーム
- 既存のテーブルの拡張
- リスト項目の追加
最小限のゲストブック
私は最小限のゲストブックのためにこのプラグインを使用しました。 私の wiki は誰でも編集できますが、小さなフォームを使ってメッセージを残すことを訪問者は歓迎したと思います。 実際の動作は http://windhoff.net/wiki/playground/playground を参照して下さい。 これの javascript 版が Disqus Plugin です。
======Guestbook===== ===== New Comment ===== <form> action pagemod _self add_comment fieldset "Write new comment" textbox "Name" /^((?!<\/nowiki>).)*$/ email "Email (optional)" /^((?!<\/nowiki>).)*$/ ! textarea "Comment" /^((?!<\/nowiki>).|\n)*$/ submit </form> ===== Comments ===== <pagemod add_comment output_after> //@@meta.date.format.r@@:// ^<nowiki>@@Name@@</nowiki> |<nowiki>@@Email (optional)| @@</nowiki>| |<nowiki>@@Comment@@</nowiki> || </pagemod>
— M. 2010/04/02