DokuWiki

It's better when it's simple

ユーザ用ツール

サイト用ツール


ja:plugin:bureaucracy

Bureaucracy プラグイン

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

Binky, Weatherwax, ​"​Angua",​ "Adora Belle"

plugin 簡単にHTMLフォームを作成し、電子メールを使ってデータを収集したり、ページを作成するために利用する。

最終更新日
2014-07-28
種類
Syntax, Action
リポジトリ
ソース
競合
bureaucracyau, form

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

This extension is not in the 'plugin' or 'template' namespace and is therefore ignored.

類似 bureaucracyau, conform, contact, contactmodern, form, openas

タグ create, email, form, poll

必要とされるプラグイン calendoku, dirtylittlehelper, pagemod, qrcodescanner

bureaucracyプラグインは、DokuWiki の中に整然としたHTMLフォームを作成します。 入力フォーマットの検証を自動的にプラグインが処理し、コーディングが不要です。 ユーザ入力を、事前に設定したアドレスに電子メール送信したり、テンプレートを使用して新規ページ作成に使用できます。

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

上記のダウンロード URL からプラグイン管理を使用して、プラグインをダウンロード、インストールします。 プラグインを手動インストールするには、プラグインを参照して下さい。

変更履歴

推奨追加プラグイン

オープン Wiki 上で、スパムを回避するために CAPTCHA プラグインを使用することがあります。 CAPTCHA プラグインがインストールされている場合、bureaucracy プラグインはCAPTCHAチェックをフォームの実行処理の中に自動的に統合します。 DokuWiki がメール送信できない時、SwiftMail プラグインが役立ちます。 bureaucracy プラグインのテンプレートアクションを使用すると、利用し易くするために情報を組み立て保管する機能を、構造化データプラグインのdataentoryのテンプレートに追加することができます。dataentory では、フォームからの情報を配置するために、bureaucracy プラグインのプレースホルダーを利用できます。

追加アクション
注目すべき追加プラグインは、pagemod プラグインです。 bureaucracy プラグインに(現在のテンプレート機能やメール機能に加えて)既存のページにデータを追加するpagemodアクションを追加します。

追加フィールド
前記のように構造化データプラグインはテンプレートで便利になりますが、dataplugin 項目も提供します。 つまり、 構造化データプラグインの型と type aliases を持つ項目を作成できるようになります。 Some of these types has a nice layouting e.g. pagesuggestions or listing using predefined options from type aliases. を参照して下さい。

警告

簡単にスパムゲートウェイとして悪用される可能性があるため、CAPTCHAがない場合、このプラグインは閉鎖環境のwiki上でのみ使用すべきです。

使用方法

例を見てみましょう:

検証エラーのあるサンプルフォーム

<WRAP clear></WRAP>

<form>
Action mail me@example.com
Thanks "Thanks for submitting your valuable data."

Fieldset "A set of fields"
Textbox  "Employee Name" "=Your Name"
number "Your Age" >13 <99
email "Your E-Mail Address"
textbox "Occupation (optional)" !
password "Some password"

fieldset "even more fields"
select "Please select an option" "Peaches|Apples|Oranges"
static "Some static text that could be an agreement"
yesno "Read the agreement?"
textarea "Tell me about your self"
textbox "You need to write 'agree' here" /^agree$/
submit "Submit Query"
</form>

ご覧のように、データが送信されるべき電子メールアドレス、ユーザーがフォームを送信する時表示される感謝の文章を定義できます。 以下は、記入用の様々な項目です。

項目定義:

  • 項目は、タイプとラベルで定義されます。
    • fieldsetsubmit ボタンの場合、ラベルは省略できます。
  • select タイプのような項目は、三番目のパラメータが必要です。
  • 追加の制約は、主要なオプションの後に追加できます。
  • スペースが含まれている場合、引数を二重引用符で囲む必要があります。例: “S p a c e s”

プラグインは、項目のタイプと設定された制約でフォームの検証を行います。

項目

  • action
    • 最初のパラメータは、対応する操作(下記を参照)であることが必要です。
      現在対応しているのは mailtemplatepagemod プラグイン(このプラグインがインストールされている場合)です。
    • mail 型の場合の追加パラメータ:
      • データを送信する一つ以上の電子メールアドレス(必須項目)
    • template 型の場合の追加パラメータ:
      • テンプレートとして使用するページ名又は名前空間名(末尾がコロン)、又は名前空間テンプレートの対象として使用を試みる単独のアンダースコア _(必須項目)
      • 新規ページを作成する「名前空間:前置句」又は「名前空間:」(末尾がコロン)(任意項目)
      • 複数の項目を組合せてページ名にする場合、使用する区切り記号(任意項目)
  • thanks
    • フォームが送信された時に表示される文章の定義(任意項目)
  • fieldset
    • 項目の新しい組を作成
    • ラベルは任意項目
    • 上にある別の項目の値に応じて表示/非表示が可能(下記を参照)
      • 切替は二番目のパラメータに指定された項目に依存(任意項目)
      • 項目が設定されているか三番目のパラメータに指定した値と完全に一致した場合、
        fieldset は表示される(任意項目)
  • static
    • フォームに静的な文章を追加
  • wiki
    • static に似ているが、Wiki 構文として入力値を構文解析する
    • 計算コストが高いので、頻繁な使用は避けるべき
  • textbox
    • 一行の入力項目を作成
    • ラベルは必須項目
  • password
    • 一行の入力項目を作成
    • ラベルは必須項目
  • email
    • 一行の入力項目を作成
    • ラベルは必須項目
    • 入力がメールアドレスであることを検証
    • 一行の入力項目を作成
    • ラベルは必須項目
    • 入力が数値であることを検証
  • textarea
    • 複数行の入力項目を作成
    • ラベルは必須項目
    • 10行というデフォルトサイズから N 行へ変更するために
      xN という引数を使用( x23 )(任意項目)
    • checkbox を作成
    • ラベルは必須項目
    • yes と no のデフォルト値が必須( =true_value !false_value
  • select
    • 選択一覧を作成
    • ラベルは必須項目
    • 二番目の引数にパイプ “|” 文字区切りの選択項目が必須\\( “Peaches|Apples|Oranges”
  • hidden
    • 静的なデータの隠し項目を作成
    • ラベルは必須項目
    • デフォルト値パラメータが必須( “=some value”
  • hiddenautoinc
    • ラベルは必須項目
    • フォームを送信する毎に1ずつ増加する番号を持つ隠し項目を作成
  • submit
    • 送信ボタンを作成(必須項目)
    • ボタンラベルは任意項目
  • user / users
    • DokuWiki のユーザーかDokuWiki のユーザー一覧
    • ラベルは必須項目
    • 自動補完を提供
  • date
    • YYYY-MM-DD 形式の日付
    • ラベルは必須項目
    • 日付選択を提供
  • addpage page_tpl page_tgt
    • adds another page page_tgt based on a template page page_tpl
    • only for use with the template action
    • page_tpl is absolute path to template page
    • page_tgt is relative to destination of page created by action field. e.g. action field tries to create new:destination, then addpage will try to add new:destination:page_tgt
  • dataplugin(プラグインが必須)
    • 項目を表示するために構造化データプラグインが必須(を参照)
    • ラベルは必須項目
    • an additional parameter is starting by underscore _ for type of field, using dataplugin type syntax
      • datatypes with a type alias that defines 'valid values' will appear as a (multi)select field
      • otherwise it appears as usual textbox, sometimes with 機能追加 as datepicker and pagesuggestions
  • labels
    • パラメータはラベル変換用一覧の wiki ページ

制約とデフォルト値

  • > で始まり数字が続く場合、数字よりも入力データが大きい必要があります。
  • < で始まり数字が続く場合、数字よりも入力データが小さい必要があります。
  • = で始まる場合、デフォルト値を設定します。
  • 単一の 文字を使用した場合、項目は省略可能です。
  • 単一の@ 文字を使用した場合、値をテンプレートモードのページ名として使用します。
  • number 項目で ++ を使用した場合、フォームを実行するたびに自動的にインクリメントするカウンターになります。
  • / 文字で囲んだ正規表現は、項目を受け付ける前に正規表現に一致する必要があります(大文字と小文字を区別しない)。例:
    • /^[^\/:]+$/ ページ名に相応しい。/: 文字は許されません。
    • /^[0-9 \/()+\-]+$/ 電話番号に相応しい。数字と ()-+/ 文字だけが許されます。
  • データプラグイン項目の場合のみ、_ で始まる type alias を定義します。

外部ラベル名

デフォルトでは、提供されたすべてのラベルが使用されます。 例えば、フォームで表示され、テンプレートモードのプレースホルダとして使用されます。 場合によっては、項目名には単純な名前を使用し、フォーム上ではもっと一般的なラベルを表示したいかもしれません。

独立したwikiページにラベルの変換を定義し、labels 項目に、このページを設定することで達成できます。

<form>
action mail me@example.com
labels mylabels

fieldset "field"
textbox  "name"
number   "age" >13 <99
submit   "submit"
</form>

変換ページには label = translation の項目を持った wiki の番号なしリストがなくてはならない:

  * field  = Tell us about yourself"
  * name   = Your Name
  * age    = Your Age
  * submit = Send your Data

上記は、次のようなフォームになります:

Fieldset との依存関係

前の質問で特定の答えがあった場合のみ、フォームの一部を質問すべき場合があります。

Fieldset を使用して、そのような単純な依存関係を作成できます。

次の例を考えてみます:

<form>
action    mail me@example.com

fieldset  "Your Order"
textbox   "Your Name"
select    "What do you want"  "Car|Blimp"

fieldset  "Car Parameters" "What do you want" "Car"
number    "Number of Wheels"
textbox   "Extras"

fieldset  "Blimp Parameters" "What do you want" "Blimp"
select    "Filling" "Helium|Hot Air"
number    "Size"

fieldset  "Payment"
yesno     "Can you pay right now?"

fieldset  "Details" "Can you pay right now?"
textbox   "Name"
number    "Amount"

fieldset  "Confirm Order"
submit "Submit Query"
</form>

この例では、ユーザーは車や飛行船の注文を選択できます。 選択に応じて、第二または第三の fieldset を非表示または表示します。 fieldset の二番目のパラメータは、以前に定義された項目を参照する項目であり、三番目のパラメータは、fieldset を表示する条件となる項目の値です。 完全一致だけが対応しており、一番良いのは上記のようにこの機能と select 項目との組み合わせることです。

第四の fieldset の yesno 項目のチェックボックスに記入すると、第五の fieldset が表示され、正確な詳細情報を記入できます。 fieldset には三番目のパラメータが設定されていないので、参照項目が設定されれば確認されます。

リンクの事前設定項目

いくつかの事前設定項目と bureaucracy フォームをリンクしたいこともあります。 @で囲んだ項目名を使ってリンクにパラメータを追加することで、簡単に達成できる。

このページの前のセクションで orderform と呼ばれるフォームを想定してください。 これは熱飛行船を発注するためのフォームへリンクする方法です:

[[orderform?@What do you want@=Blimp&@Filling@=Hot Air|Order a Hot Air Blimp!]]

操作モード

bureaucracy は三つのことを実行します:

  1. 整ったフォームを表示する。
  2. ユーザー入力を検証する。
  3. 操作モードにユーザー入力を与える。

最後の工程はデータが処理される所です。 上記のように、どの操作を使用するかは action 項目で定義します。 現在、2つのモードに対応します:mailtemplate 。 追加モード(例:データベースにデータを格納する)は簡単に追加できます。

Mail モード

これは簡単な操作です。 全てのユーザー入力は、設定された電子メールアドレスに電子メールで送信されます。 使用方法は、上の例を参照してください。 スペース区切りの複数メールアドレス指定も可能です。

Template モード

指定されたページをテンプレートとして使用するこの操作は、定義されたプレースホルダーをユーザー入力で置き換え、wiki ページを作成します。 とても強力ですが、やや複雑な概念です。

action 行は以下のようになります:

action template [テンプレート] [宛先] [区切り記号]
  • テンプレートは単一のページ、または名前空間の全部(末尾がコロン)いずれかです。名前空間が指定された場合、含まれるサブ名前空間とページ全てが宛先にコピーされ、交換用のパターンは、すべてのページに適用されます。テンプレート名にアンダースコア(_)を指定すると、宛先の名前空間に設定された 名前空間テンプレート を使用しようとします。
  • 宛先は bureaucracy に新規ページの作成先を指示します。通常名前空間(末尾がコロン)です。詳細は次のセクションを参照して下さい。
  • 区切り記号 フォームの複数の項目値使用して新規ページ名を作成できます。この文字はこれらを連結する方法を定義します。(次のセクションの方法1を参照して下さい。)

宛先の定義

Template モードを使用する場合、結果のページを作成する場所を定義する必要があります。 複数の方法があります。

方法1:最も簡単な方法は、出力の名前空間を指定し、@ 文字を使用して名前に使う項目を指定することです。 次に例を示します:

<form>
action   template userstpl users: :

fieldset "Create Your User Page"
select   "What's your Continent?" "Europe|N. America|S. America|Asia|Australia" @
textbox  "What's your Name?" @
textarea "Enter a short bio" !
submit
</form>

これは大陸と名前の項目を使用して新規ページを作成します。 例えば、これらの項目に “Europe” と “Andi” を記入すると、結果のページは users:europe:andi になります。

方法2:結果のページ名をある程度詳細に制御したいこともあります。 宛先パラメータの中でプレースホルダを使用し、項目定義の中で @ 文字を指定をしないことで達成できます。

プレースホルダーは @@ 文字で囲んだ項目名です。 更に strftime パラメータが使用できます。 別の例を示します:

<form>
action   template userstpl "users:%Y:@@What's your Name?@@:start"

fieldset "Create Your User Page"
select   "What's your Continent?" "Europe|N. America|S. America|Asia|Australia"
textbox  "What's your Name?"
textarea "Enter a short bio" !
yesno    "Do have publication?"

fieldset "Add your publications" "Do have publication?"
textarea "Publications:"
addpage   users:publicationtemplate publications

fieldset "Finish"
submit
</form>

上記は、現在の年・私の名前に基づいて名前空間を作成し、以下の名前で開始ページを作成します:users:2012:andi:start

方法3:Fieldset との依存関係 と連動する時、fieldset が表示された場合は追加ページを追加し、fieldset が非表示の場合はページを省略したいこともあります。 特別な addpage 項目で実現できます。

質問の fieldset に追加するだけです:

addpage additionaltpl somepage

上の例の二番目の fieldset は、チェックボックスに応じて文書のページが追加されます。 追加ページのテンプレートは、次の絶対パスに置かれます:users:publicationtemplate yesno 項目が記入されれば、追加ページは users:2012:andy:start:publications に作成されます。

テンプレートの作成

テンプレートは、フォームと同じフィールドを含んでいる必要があり、他のプレースホルダーも利用可能です。

プレースホルダー 操作
@@Field label@@
##Field label##
フォーム内にユーザーが補充した実際の値で置換えられます。
@@Field label|Nice alternative@@ 空の項目だった場合、Nice alternative テキストが表示されます。
@NSBASE@ 新規ページの名前空間。
例:新規ページが foo:bar:baz:bang の場合、@NSBASE@baz になります。
%Y %F %a %Y-%m-%d… etc 現在の時刻を参照するための strftime パラメータ
%% % 文字に置換え。テンプレート内で偶発的な時間の置換えを回避するために必要
@ID@ @USER@ @MAIL@ … etc DokuWiki のテンプレート用置換パターンも利用可能です。

上の例の userstpl では、次のページを持つことができます:

====== @@What's your Name?@@ ======

I'm living in @@What's your Continent?@@. I'm a user since %Y-%m-%d.

@@Enter a short bio|FIXME please fill in your biography@@

結果は全てのユーザーデータで補充され次のようになります:

====== Andreas Gohr ======

I'm living in Europe. I'm a user since 2007-12-23.

It's me :-)

ACL の確認と runas オプション

デフォルトで、このプラグインはフォームに入力するユーザの権限を使用して、Template モードのアクセス制御リスト (ACL)を確認します。 これは、少なくともテンプレートに対する読込権限と新規ページを保存する名前空間に対する作成権限が、ユーザーに必要なことを意味します。

しかし、直接のアクセス権をあたえることなく、制限された名前空間にページを作成する方法を匿名ユーザーに与えたい場合があります。 ここが runas オプションの出番です。 設定管理の中でこのオプションにユーザー名を指定できます。 フォーム入力するユーザーとは無関係に、ここで指定したユーザーを常に使用して、上記の ACL を確認します。 この方法によって、ACL 管理でこの特定の仮想ユーザーに必要な権限を指定できます。

注意:runas ユーザーは存在する必要はありません。 実際には、非存在ユーザーを使用することをお勧めします。 存在する場合でも、ACL の確認は、ユーザーレベルの権限のみで実施され、ユーザーのグループは無視されます。

Checkbox 項目

Example code for checkbox 項目のコード例です:

yesno     "Are you happy?" "=Yes sir" "!No sir"

yesno     "Show fieldset?"
fieldset  "Shown on checking the box" "Show fieldset?"
textbox   "Share your praise"
  • Checkbox 項目は、チェックした場合 Yes sir、チェックしなかった場合 No sir のデフォルト値を返します。デフォルト値を省略すると、戻り値なしになります。
  • fieldset が yesno 項目を参照する場合、yesno の設定を確認する代わりに、三番目の引数は不要です。メールやテンプレートに yesno 項目からの値を返すことを望まない限り、fieldset が依存する yesno にはデフォルト値は不要です。

数字項目

number "One"
number "Two" ++
number "Third" >3 <40
hiddenautoinc "Four (notice: conflicts with Two)"
  • 数字項目 One は、数字のみを受け付けます
  • 数字項目 Two は、最後の番号を記憶し、1増分します。変更することも可能です。
  • 数字項目 Third は、3 と 40 の間の任意の数を受け付けます。
  • 数字項目 Four は、隠れ項目で、フォームが保存される度にインクリメントされます。(現時点では、この項目は自動インクリメント数字項目と競合します。同じフォーム上で組合せないでください。)

問題

バグや機能要求は Github バグ追跡に報告してください。

ja/plugin/bureaucracy.txt · 最終更新: 2014-08-15 16:07 by 106.136.13.74

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki