CardForm:カード型データベースのためのプラグイン群 !!!CardFormプラグイン全般について !!内容 FreeStyle Wikiでカード型データベースを実現するプラグイン群です。 :入力:プラグインにより(wiki書式の範囲で)自由なレイアウトのフォームを作ることができます。 :保存:フォームにより入力されたデータは雛型となるページを元に1件毎に、バグトラックのようなbasename/数字というページとして保存されます。 :利用:basename/数字形式のページ群をカード型データベースとみなして表を作ったり合計したりできます。 !! 現在公開しているのはbeta以前のalpha版です! いま、cardformプラグインを使って入力した値の修正を行なうための仕組みを整えようとしています。 それにともない、おそらく一部の仕様も含め、ソースコードにある程度大きな手が入る予定です。 そういった意味でalpha版とさせていただきます。 !!インストール 添付ファイルを取得してプラグインディレクトリに展開してください。 *{{ref cardform4alpha1.tar.gz}} !!使用方法1:簡単な例 まず、データ入力用のフォームが必要です。 !form*プラグインによるフォームの記述 フォームの記述はformで始まるフォーム記述用のプラグインによって行ないます。 *名前: {{formtext name}} *年代: {{formselect age,10代,20代,30代,40代,50代}} *好きな物: {{formtext favor,size=30}} {{formsubmit 投票}}{{formreset リセット}} これを[[Favorite]]というページに保存します。 え?フォームが表示されない?それで正常です。慌てずに。 !cardformプラグインによるフォームの表示 次にフォームを表示したい所に以下のように書きます。 {{cardform Favorite}} これで、フォームを表示するためのプラグインcardformにより、 先ほどのフォームを記述したページをインクルードしフォームとして表示します。 !データの入力 {{cardform Favorite}} 先ほどのフォームに値を記入して投票ボタンを押してください。 そうすると[[Favorite/1]]というページができ、 先ほど入力した値が保存されていると思います。 !!使用方法2:保存用レイアウトを別にする 先ほどのように入力用フォームを配置したページを作ります。 !入力用フォーム配置ページ 以下のような内容を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}} {{cardform BugTrackForm,BugTrack-test}} !!使用方法3:入力データを利用する 入力されたデータの利用方法です。 !入力データの一覧表示 利用方法1のフォームから入力した値を一覧表示するには次のように書きます。 {{cardlist Favorite,名前:*名前: ,年代:*年代: ,好きな物:*好きな物: ,}} {{cardlist Favorite,名前:*名前: ,年代:*年代: ,好きな物:*好きな物: ,}} 20代のデータのみ、名前順に表示したい場合は次のように書きます。 {{cardlist Favorite,*年代: ==20代,%sortby_alphabet%:*名前: ,名前:*名前: ,年代:*年代: ,好きな物:*好きな物: ,}} {{cardlist Favorite,*年代: ==20代,%sortby_alphabet%:*名前: ,名前:*名前: ,年代:*年代: ,好きな物:*好きな物: ,}} わかりにくいですね。実はこの方法は推奨できません。 入力データを扱う場合は利用方法2の保存レイアウトを別にする方法を用いた方が わかりやすくなります。 利用方法2の場合、次のようになります。 {{cardlist BugTrack-test,%sortby_alphabet%:stat,ページ:%cardlist_pagename%,カテゴリ:categoly,優先度:rate,状態:stat,投稿者:user,サマリ:subject}} {{cardlist BugTrack-test,%sortby_alphabet%:stat,ページ:%cardlist_pagename%,カテゴリ:categoly,優先度:rate,状態:stat,投稿者:user,サマリ:subject}} 最初の「BugTrack-test」はBugTrack-test/数字ページが対象で、 そのフォーマットはページBugTrack-testが元になっている事を示しています。 次の「%sortby_alphabet%:stat」はstatをアルファベット順 (正確には文字コード順)にソートするという事です。 次の「ページ:%cardlist_pagename%」からは実際の表示内容です。 この時、%cardlist_pagename%はページ名を表します。 !入力件数の表示 利用方法1で「20代の件数/全体の件数」という表示をしてみましょう。 {{cardcount Favorite,*年代: ==20代}}/{{cardcount Favorite}} {{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==低}}件です 現在全{{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://typor.hp.infoseek.co.jp/cardform_sample.html にて、ここに上げた例を書いています。 おいおい、他の例なども書く予定です。 !!ライセンス GPLとします。 !!更新履歴 !var.3からvar.4alpha1までの主な変更点 *cardlist,cardcount,cardsum各プラグインで対象データの条件指定をできるようにした。 *cardlistプラグインでソート指定できるようにした。 *mod_perl時キャッシュ内容が残り、更新されないバグを修正した。 *その他幾つかバグフィックスしたけど省略