DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


サイドバー

この翻訳は元のページよりも更新日が古く、内容が古い可能性があります。 変更点を参照して下さい。
このページの翻訳?:

DokuWiki について知る

開発

法人利用

我々のコミュニティ


FacebookTwitterや他のソーシャル・ネットワークからフォローしてください。

ja:plugin:pagemod

ページ変更プラグイン

互換性のある DokuWiki バージョン

Hrun, Ponder Stibbons

plugin フォームを利用して既存のページに情報を追加できるようにするプラグイン。Bureaucracy プラグインと一緒に動作します。

最終更新日
2014-11-10
種類
Syntax
リポジトリ
ソース
必要
bureaucracy

この拡張は二年以上更新されていません。もはや維持管理や対応がされておらず、互換性に問題がある可能性があります。

タグ create, editing, form, update

作者 Baseline IT

ダウンロードとインストール

ダウンロードして、拡張機能管理を使用してプラグインをダウンロード・インストールします。 手動でプラグインをインストールする方法はプラグインを参照してください。

概要

固有の方法で構造化データを繰り返しページに追加する方法を長い間望んでいたためこのプラグインを作成しました。 これの歴然とした例は、表へのデータの追加です。 適切に質問がなされ提示された場合、そのページのフォームは表の最後に追加行として提出された情報を追加します。

以下のように緩やかに動作します:

  1. フォームがページ上に存在します(Bureaucracy プラグインが作成します)
    • 変更対象のページとすることも別ページとすることも可能です。
    • このフォームは action pagemod <targetpage> <pagemod_id> という動作領域を含みます。
  2. 結果プレースホルダは、ターゲットページに用意しておきます。
    • このプレースホルダは <pagemod> </pagemod> タグで囲まれています。
  3. フォームに入力し提出します。その後、変数をフォームの値に置き換えたプレースホルダーのコピーを含むことによって、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

ja/plugin/pagemod.txt · 最終更新: 2015-08-22 14:34 by sawachan