トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/13

ページの作成や編集にはユーザ登録が必要です。

カード型データベースのためのプラグイン

  • 投稿者: typer
  • カテゴリ: 新規
  • 優先度: 普通
  • 状態: 提案
  • 日時: 2003年06月24日 21時22分03秒

 内容

おそおそですがBugTrack-plugin/215に新しい版を上げました。 - typer (2005年06月19日 20時47分16秒)

追加・変更した版を作りました。詳細は下方第2版を御覧ください - typer (2003年07月03日)

初版

自由にフォームを配置し、入力されたデータからバグトラックの様に定型のページを作成するカード型データベースの様なプラグインです。といっても、現状ではフォームの配置と入力されたデータをページにするところまでです。

formstartプラグインに簡単な使い方が書いてあります。以下、それを転記します。

CardForm用のformを開始します。引数として新規作成するページ名のベース部分を指定します。

{{formstart basename}}

この後、formtext、formsubmit等のプラグインを使って、実際のフォーム要素を配置します。最後にフォームを終るformendプラグインを置きます。

このフォームで入力された値はbugtrackプラグインの様に、basename/数字というページに保存されます。この時、basenameというページが存在すれば、その内容をもとに、%パラメータ名%をパラメータ値で置き変たページとなります。basenameというページがなければ、::と:::を使ってCGIパラメータをすべて保存します。

なお、CGIパラメータとして"action"のほか、既定でベース名の入る"basename"、実際に保存されるページ名が入る"page"、現在の日時が入る"time"がであります。また、"debug"というパラメータ名があった場合は実際にページを作らず、表示のみをおこないます。

例:

ページ InputForm:
 {{formstart favorite}}
 *名前:{{formtext name}}
 *年代:{{formselect age,10代,20代,30代,40代,50代}}
 *好きな物:{{formtext favor,size=30}}
 {{formsubmit 投票}} {{formreset リセット}}
 {{formend}}

ページ favorite:
 *名前: %name%
 *年代: %age%
 *好きな物: %favor%
 *投票日: %time%

第2版 (2003年07月03日追加)

保存したページを処理する基礎的なプラグインの追加とフォームの記述方法の変更を行ないました。詳しくは各プラグインのヘルプを見てください。

formstartはform開始タグの出力のみに変更しました。かわりにcardformがCardFormのためのフォーム出力を行ないます。これにともないフォームの記述方法を変更しました。

これまで実際にフォームを表示するページに直接フォーム系プラグインを記述していましたが、今回より実際のフォーム記述は別のページに行ない、そのページをこのプラグインに指定するとフォーム開始・終了タグやaction,basenameパラメータ等を付加してページを挿入します。これはMLでのたけぞう氏の案でフォームのとじ忘れを防ぐためです。今の所、フォーム中以外でフォーム系プラグインを使用した場合は引数をチェックしてプラグインの設定値を表示するようにしてあります。(この時の表示には現在class=nopageを使っています)

なお、formstartを使い直接フォームを記述することもできますが、この場合には明示的にactionパラメータを付加してください。これによって、他のプラグイン用のフォームも記述できます。

また、ハンドラ側では従来の%によるパラメータ置き換えに加えてフォーム系プラグインがあった場合に、対応するパラメータ値で置き換えるようにしました。これにより、別指定のフォーム記述ページをそのままbasenameとすることが可能です。ほかにはパラメータpageにより保存するページを指定できるようにしました。

以下は新たに加えた、保存したページを処理するプラグインです。

cardcount
単純一致の条件でページ数を数えます。
cardsum
指定ラベルの値を合計します。
cardlist
一覧表を出力します。
cardstudy
指定したラベルをキャッシュする様に指示します。
これらプラグインのラベルとは行頭から値までの文字列で、これにより値を切り出します。cardstudyプラグインで使用するラベルをあらかじめ登録することによって一度に値を切り出し、ページへのアクセスを減らしています。特にcardcountのような単一ラベルを使用するプラグインを多用する場合に有効であるとおもいます。

予定

  • 一覧表やカウントでの複合条件指定やソート
  • 上書変更のためのページ選択フォーム
  • 上書変更時、差分表示して確認
  • csv形式での保存をするcsvformプラグイン
  • textareaでの初期値指定

 コメント

  • これは便利ですね。 - kuwa (2003年06月25日 01時46分46秒)
  • これは面白そう - しお (2003年06月25日 12時58分46秒)
  • 第2版、素晴らしいです。工夫次第でいろいろな用途に使えますね。 - たけぞう (2003年07月03日 21時16分31秒)
  • ありがとうございます。でも、データ処理側がまだまだです。and,or,notのシンプルでわかりやすい記述方法が課題です。 - typer (2003年07月03日 22時58分36秒)
  • はじめまして。手元で試してみたのですが、うまく動きません。 - SHIMADA (2003年07月10日 09時40分09秒)

cardform2.tar.gzをダウンロードしてfswiki-3.4.1にインストールし、cardformのヘルプの例と同じfavorite, favoriteformのページを作りました。フォームからデータを一つ投稿し、favorite/1が作成されたことを確認した後、別ページに{ {cardlist favorite,名前:name,年代:age,好きな物:favor,投票日:time} }という記述をしたのですが、テーブルにタイトルだけが表示され、
名前 年代 好きな物 投票日
中身が表示されません。なにか手順がおかしいでしょうか?

  • { {cardlist favorite,名前:*名前: ,年代:*年代: ,好きな物:*好きな物: ,投票日:*投票日: } }としてみてください。ここらへん、説明がかけてないです(^^; - typer (2003年07月11日 13時01分59秒)
  • 回答ありがとうございます。「ラベルとは行頭から値までの文字列」の意味がやっと分かりました。とすると一行に複数の値はレイアウトできないということでしょうか? - SHIMADA (2003年07月15日 11時33分37秒)
  • 現状ではそのとおりで、一行に複数の値も値のあとに文字をおくことも出来ません。が、もう少し柔軟な方がうれしいですよね。あと、この間違え方はすごくまっとうな解釈(フォームにある名前がラベルになる)だと思います。そこで、テンプレートを元に値を切り出す事を考えてみようと思います。 - typer (2003年07月15日 12時43分31秒)
  • 条件(and,or,not)の記述方法は何にもアイデアが浮かびません。日本語下手なので説明がわかりにくいです。誰か書いてくれないかなぁ(^^; - typer (2003年07月15日 12時48分10秒)
  • いまさらですが、このプラグインは3.4.1対応ではなかったですね。というわけでpatch作りました。wikiconfig.FormStart.pm.patch(576) - typer (2003年07月20日 21時41分06秒)
  • もう1つ、card*系のプラグインでの項目の指定方法について、フォームやテンプレートで使用している名前を使えるようにしました。label.CardFuncBase.pm.patch(619) - typer (2003年07月20日 21時51分14秒)
  • 最後にもう1つ、上のpatchでcache構造が変ったため、CardListにあるデバッグ用のcache内容一覧機能を対応させるpatchです。通常はいりません。labeldebug.CardList.pm.patch(567) - typer (2003年07月20日 21時59分16秒)
  • CardListのデバッグ機能について書いてないですね。これはCardListプラグインでbasenameのあと、%cardlist_debug%:%cardlist_debug%とすることで働きます。これによりbasenameの現在のcache内容一覧を表示します。この時、表題はlabel、1行目は値を求めるために使う正規表現等です。 - typer (2003年07月20日 22時26分15秒)
  • 感激のあまりがんばって,検索(AND,部分一致のみ)とソート(小から大)もできるcardlistをつくってみました.CardListSF.tar.gz(605) CardListSF.lzh(554) - Toshy Namimatsu (2004年03月17日 15時07分34秒)
  • CardListSF.tar.gz(605)の中身はcardformと同じ場所にいれてください.INSTALL.pmへの表記については各ファイルをごらんください. - Toshy Namimatsu (2004年03月17日 15時27分11秒)
  • 5時間後,ヘルプに小さなミス発見.修正パッチです.CardListSF.patch(605) まだあるかも… - Toshy Namimatsu (2004年03月17日 20時07分41秒)
  • で、最終バージョンはどれなのでしょうか? - 名無しさん (2004年11月28日 23時28分30秒)
  • 説明が分かりにくくて理解するまでにすごい時間がかかりました。(^_^; あと、テーブル内に記述できないので誰か {{formselect}} などのパラメータ区切りをカンマではなくパイプ記号(|)にでも変更していただけないでしょうか?で、どれだか分からなくなっているので次のバージョンから新しくページを作っていただけると嬉しいです。 - 名無しさん (2005年03月04日 17時00分46秒)
  • ん〜…コメントを追っていかないと使い方が分からないので最初とまどいますね。とりあえず、cardform.tar.gz を解凍して、 cardform2.tar.gz を上書きして、wikiconfig.FormStart.pm.patch を当てたら動くようになりました。 - 桜 (2005年03月29日 16時44分00秒)
  • ↑は間違いでした。これだけだと、最初に作ったページ(basename/1) しかページが作成されないみたいです。失礼しました。…ん〜やっぱり分からない。 - 桜 (2005年03月29日 16時52分21秒)
  • 解決しました。フォーム自体のページに formstart を書いてしまっていました。 - 桜 (2005年03月29日 17時38分35秒)
  • carlist の出力がページ名を数値ではなく文字でソートした結果になっているようです。 - 桜 (2005年03月29日 18時15分41秒)
  • 久しぶりに来たらこんな事に。ほっといてすいません。連休辺りでまとめて判りやすくしてみます。できれば…… - typer (2005年04月26日 21時49分51秒)
  • このプラグイン、非常に使用したいので、まとめよろしくお願いします。といってもすべてを一新するのは大変でしょうから、まずはパッチを統合して1回でインストールできるtarなりlzhなりがあるといいと思います。 - 名無しさん (2005年05月08日 09時13分04秒)
  • ということらしいので、cardform2.tar.gzにパッチを当てただけのcardform21.tar.gz(589)と、それを元に3.5系対応にしたcardform3.tar.gz(554)を上げておきます。 - typer (2005年05月09日 00時06分34秒)
  • これらにはCardListSFは入っていません。List表示でのソートとサーチはもう少し汎用な形の物を現在作ってます。もうしばらく待ってください。その時は別ページで上げようと思います。 - typer (2005年05月09日 00時16分53秒)
  • あまりにも添付ファイル多くなりすぎましたし紛らわしいのでもうそろそろ新規で作り直しませんか?(新たに別のページを作成する) - 名無しさん (2005年05月10日 16時03分02秒)
  • おそおそですがBugTrack-plugin/215に新しい版を上げました。 - typer (2005年06月19日 20時47分16秒)
お名前: コメント: