CardForm用のformを挿入します。
引数として指定したページformpageの内容に従いフォームを出力します。 このフォームにより入力された値は引数として渡したbasenameを元に、 bugtrackプラグインの様にbasename/数字というページに保存されます。 ただし、savepageが指定されていればsavepageに保存されます。
{{cardform formpage,basename,savepage}}
formpageではformtext、formsubmit等のプラグインを使って 実際のフォーム要素を配置します。 formstart,formendなどはcardformプラグインにより追加されるため、 これらのプラグインは置かないでください。
このフォームを使って送られたデータはbasename/数字というページに 保存されます。 ただし、CGIパラメータpageがある場合はその値が保存ページ名となります。 savepageがあればこの値をCGIパラメータpageに設定し、保存ページ名とします。
savepageを指定した場合、すでにそのページがあればその内容をフォームの 初期値とします。savepageがない、または指定されていない場合、basename/0と いうページがあればそのページ内容を初期値とします。
このフォームにより作られるページはbasename、もしくはformpageの内容を 元に作られます。 新しく作られるページは元のページの、%パラメータ名%またはパラメータ名に 対応するフォームプラグインをパラメータ値で置換した内容となります。 また、basenameというページがなければ::と:::を使ってCGIパラメータをすべて 保存します。
CGIパラメータは、ユーザが使う任意のパラメータのほか、幾つかの機能をもつ パラメータが存在します。以下にそれを説明します。
FreeStyle Wikiでカード型データベースを実現するプラグイン群です。
まず、データ入力用のフォームが必要です。
フォームの記述はformで始まるフォーム記述用のプラグインによって行ないます。
*名前: {{formtext name}} *年代: {{formselect age,10代,20代,30代,40代,50代}} *好きな物: {{formtext favor,size=30}} {{formsubmit 投票}}{{formreset リセット}}
これをFavoriteというページに保存します。 え?フォームが表示されない?それで正常です。慌てずに。
次にフォームを表示したい所に以下のように書きます。
{{cardform Favorite}}
これで、フォームを表示するためのプラグインcardformにより、 先ほどのフォームを記述したページをインクルードしフォームとして表示します。
先ほどのフォームに値を記入して投票ボタンを押してください。 そうするとFavorite/1というページができ、 先ほど入力した値が保存されていると思います。
先ほどの様に入力用フォームを配置したページを作ります。
以下のような内容をBugTrackFormというページに保存します。
,, ,投稿者,{{formtext user}} ,サマリ,"{{formtext subject,size=60}}" ,カテゴリ,"{{formselect categoly,本体,プラグイン,ドキュメント}}" ,優先度,"{{formselect rate,緊急,重要,普通,低}}" ,状態,"{{formselect stat,提案,着手,完了,リリース済,保留,却下}}" ,内容,"{{formtextarea msg,rows=10,cols=60}}" {{formsubmit 投票}}{{formreset リセット}}
次に、入力データを保存するページをレイアウトします。
!!!%subject% *投稿者: %user% *カテゴリ: %categoly% *優先度: %rate% *状態: %stat% *日時: %time% {{bugstate}} !!内容 %msg% !!コメント {{comment}}
これをBugTrack-testとして保存します。
それではフォームを使用してみましょう。
{{cardform BugTrackForm,BugTrack-test}}
入力されたデータの利用方法です。
利用方法1のフォームから入力した値を一覧表示するには次のように書きます。
{{cardlist Favorite,名前:*名前: ,年代:*年代: ,好きな物:*好きな物: ,}}
20代のデータのみ、名前順に表示したい場合は次のように書きます。
{{cardlist Favorite,*年代: ==20代,%sortby_alphabet%:*名前: ,名前:*名前: ,年代:*年代: ,好きな物:*好きな物: ,}}
わかりにくいですね。実はこの方法は推奨できません。 入力データを扱う場合は利用方法2の保存レイアウトを別にする方法を用いた方が わかりやすくなります。 利用方法2の場合、次のようになります。
{{cardlist BugTrack-test,%sortby_alphabet%:stat,ページ:%cardform_pagename%,カテゴリ:categoly,優先度:rate,状態:stat,投稿者:user,サマリ:subject}}
最初の「BugTrack-test」はBugTrack-test/数字ページが対象で、 そのフォーマットはページBugTrack-testが元になっている事を示しています。
次の「%sortby_alphabet%:stat」はstatをアルファベット順 (正確には文字コード順)にソートするという事です。
次の「ページ:%cardform_pagename%」からは実際の表示内容です。 この時、%cardform_pagename%はページ名を表します。
利用方法1で「20代の件数/全体の件数」という表示をしてみましょう。
{{cardcount Favorite,*年代: ==20代}}/{{cardcount Favorite}}
利用方法2の場合、次のようになります。
現在全{{cardcount BugTrack-test}}件中 {{cardcount BugTrack-test,stat提案}}件が提案状態で、 そのうち優先度が緊急は{{cardcount BugTrack-test,stat提案,rate==緊急}}件、 重要は{{cardcount BugTrack-test,stat提案,rate==重要}}件、 普通は{{cardcount BugTrack-test,stat提案,rate==普通}}件、 低は{{cardcount BugTrack-test,stat提案,rate==低}}件です。
http://aaa-www.net/~typer/cgi-bin/wiki.cgi/cardform?page=FrontPage にて、ここに上げた例を書いています。 おいおい、他の例なども書く予定です。
GPLとします。