トップA-Nトップ 新規新規 編集編集 差分差分 一覧(更新)一覧(更新) 一覧(名前)一覧(名前) 検索検索 ヘルプヘルプ RSSRSS

新フォームのテスト

 

Perl(CGI)を書き換える事無く、Wikiページを作るだけで簡易かつ自由に入力フォームや出力スタイルを幾らでも追加出来るフォームCGIのテスト(完成の暁には新たにちゃんとページを作って整理)。利用の仕方に応じた(フォームとレシーブの組み合わせ、フォーム内やレシーブ内の組み合わせに応じた)、様々なパターンを簡単に用意可能。

まだまだCGIは手直し作成中で、これまで用意した色々なフォームが移行出来るようにパーツ増やしたり、更なる機能追加をしていく、かも。

アウトライン折り畳み(クリックで表示・非表示)




CGIファイル

現時点でのCGI関係ファイルをZIPでまとめてとりあえずアップしましたので、必要なら落として下さい。でも、いつ仕様が変わったりバージョンが上がるか分かりませんので、その点と自己責任という事を了承の上で。

CGI関係ファイル

意見、質問等あればとりあえず当Wiki内で関連がありそうなこちらに掲示板を暫定的に用意したので、そちらにでも書いて下さい (ここに設置してもいいのですが、なんせ掲示板だらけでゴチャついてるので/(^^;))。




独り言?

2006/10/5

FSWikiのページを見てたらBugTrack-plugin/215が更新リストにあって、それを見てフォームを作り出す流れが少し近い事に気づきました(^^;;;)。そのようなものがあるとは知らず。

なので、こちらもフォームを記したテキストファイルを読み込んで利用するのでなくWikiページを利用する形に、パーツの区切りを「< >」から他の形にしました。
ただ、ただでさえプラグインを多く作ってるので(^^;)、パーツをプラグイン({{form〜)にする形で設置するのはやめておきます。

その他にもBugTrack-plugin/215を参考にして合わせられるところは合わせるようにしています。

あと、今はフォーム側は細かく切り分けてチェックし出力してますが、レシーブ側は切り分けてチェックしてず、そのため、複数の置き換え処理が出来ていません(例えばdeleteを複数用意して何パターンかの条件で不必要部分を削除する等といった事が出来ない)。ちょっと不便なので、作り直してレシーブ側も細かく置き換え処理出来るようにします。

えーと、本家に書いてオープンにしてしまった手前、一応書いておきます。

万が一使いたい等の希望があればとりあえずCGIの提供はしますが、未完成であったり、上手くいくとは限らず、サポートも出来るかは分からず、利用者の自己責任で行うという事でお願いします。最低でもform.cgiとform.plプラグインファイルの導入、setup.plの書き換えが必要です(スパム対策等用として、kinsiword.txt、kinsiip.txt等も)。

考え始めた時は単にこれまでのcommentプラグインの置き換えがしたいという事しか考えてなくて、データベース的な使い方なんて全く頭になかったけど、確かに出力を定型にしてWikiページとして保存するなら、キーワードでソートや抜き出し位なら出来るかも。作ろうと思ってたものが完成して落ち着いたら・・・というところです。



これまで独自に作って利用しているプラグイン同様、今回も本家に提案したりして展開する事は全く考えてなかったので、正直どうしたものかと思ってます。プラットフォームがFSWikiとFSWikiLiteという違いはあれ、BugTrack-plugin/215と被ってしまうかもという懸念もありますし(まあ考え方が完全に被る事はないでしょうが似通ってしまうという事はあるかと)。

なので、今のところは本家での提案は控えたいと思います。FSWikiLiteのプラグイン導入や改造等については当方のWikiでも書きたいと思ってとりあえずタイトルページだけは作ってあるので、もしかしたらそちらに書き加えていく事になるかも。



BugTrack-plugin/215を落として、ソースがどうなってるのかを見てみました。・・・やっぱLiteでないFSWikiのソースは多くて複雑で難しい(^^;)。読み取るのは無理そうなので直ぐ閉じました(^^;;;)。あと気づいたけど、外部テキストファイルでなくWikiページを利用する場合、インクルードに一応注意しとかないとダメですね(読み込み時無効化すればいいか)。こればかりに時間を割いているわけにはいかないので、さっさと手直しして終わらせたいところ。



2006/10/6

ようやくフォーム表示側が大体固まりました(結局はBugTrack-plugin/215に合わせた感じに)。もう大きい変更はないと思います(^^;)。つーか、一日で三回も大きく仕様を変えて疲れました(^^;)。

続いて、レシーブ側もこれから大きく変更します。それが終わったら考えているパーツの追加等して完成となるかと(最低でもこれまでのcommentプラグインとbbsプラグインが移行出来るようなものにはする)。

決められたページ名と定型で出力したWikiページからのデータベース的データ抜き出し(ソート等含み)は、作れそうですが、他にも時間を回したいし、落ち着くまではやめときます(多分(^^;))。

とりあえず完成というか一区切り付いたかも。deleteがどうにも上手く動かないので(スクリプトが悪いためです(^^;))、それについては保証無し、どうしても必要でなければ使わないという事で。他にもまだ付け加えたい機能は色々あるが、週末に向けてやる事があったりして忙しいので、週明けまで休み。



2006/10/11

レシーブでのurlクエリーの処理が少しおかしくなってました(新しいものにした際、色々なパターンをテストしなかったため)。なので、元の、特に何もせず置き換えるだけの処理に戻しました。よく考えれば、新規ウインドウで開くにしてもそっちの方が柔軟だし。

delete処理もおかしいのでやはり一旦中止。

レシーブでのpassクエリーの将来改造予定を記しました。他にやる事が色々あって、下に書いたようにまず当方がLiteを改造して付けたパス機能を手直ししないと意味がないのでまだ先の話(そもそもパス機能のない普通のLiteではあまり意味もなく)。

メモ用のフォームを用意。でも本当は新しいフォームを作る前にcommentプラグインからの移行をさっさと進めなければ。

レシーブでのtimeの処理を増やしました。これで送信日時もフォーム(レシーブ)毎に思った形に整形出来るかと。



2006/10/15

レシーブでのスパムフィルター系パーツを追加拡充しました。詳しくはそれぞれの説明を見て下さい。

レシーブでのパーツ「IP」を追加しました。

passクエリーの将来改造のためにも、間違いなく制限するWikiパス制限機能にするためにも直す必要があるedit.cgiとinclude系プラグインの修正、そのうちedit.cgiについては修正完了。includeの方もそんな難しくはないが、時間がない(^^;)。

今のところ特に反響もないので、納得いくレベルにいくまではCGIのダウンロード提供しない方向をこのまま続けます。



2006/10/16

レシーブでのパーツ「delete」が一応出来たが、説明にあるようにまだ完成とは言えず。他のパーツも進めたいし、Wikiに付けたeditbuttonの修正等もしたいので、「delete」については後回しにします。

formプラグインについての説明を書き忘れてたようなので(^^;)、項を追加しました。
通常はフォームから送信されたものをページに追加して書き込む位置はフォームの前後かtailに限られてますが、formプラグインの設定と決められたコメント行を書く事で任意の位置に追加出来るようになっています。使いづらかったnormal順も使いやすくなったりと、結構使える機能ではと。

レシーブでのパーツ「category」「mail」「pass」に機能を追加しました。



2006/10/17

formdateの追加、dateネームの追加、nameネームの変更。後でもう少し詳しく書きます




フォーム利用までの流れ

利用者

ページ作成者




代表的な設定形式

formプラグイン (フォーム設置)

 {{form フォーム用Wikiページ名,レシーブ用Wikiページ名,フォーム名(ID),設置ページ名,戻りページ名}}

フォーム用Wikiページ

 お名前:{{formtext name}} コメント:{{formtext message}} {{formsubmit 送信}}

レシーブ用Wikiページ

 *%message% - %name% (%time%)




formプラグイン

Wikiにフォームを設置するにはformプラグインを使います(FSWiki(Lite)で使われているcommentプラグイン、bbsプラグインに該当)。プラグインの引数で、フォーム用Wikiページやレシーブ用Wikiページを指定する事で、それに応じたフォームの形、フォームから送られた内容の整形ルールを決める事が出来ます。

 {{form フォーム用Wikiページ名,レシーブ用Wikiページ名,フォーム名(ID),設置ページ名,戻りページ名}}
フォーム用Wikiページ名
フォーム用に用意されたWikiページ名を指定。指定したWikiページの内容でフォームの形(送信可能なクエリー)が決まる。省略不可
レシーブ用Wikiページ名
フォームからの送信を整形保存するためのレシーブ用Wikiページ名を指定。指定したWikiページの内容で保存する形(受信可能なクエリー)が決まる。省略不可
フォーム名(ID)
フォームに付ける任意の名前。省略不可。フォームから書き込んだものを保存する位置はフォームに付けられた名前をチェックして決められるので、他に存在しない(他のフォームとバッティングしない)固有の名前を付ける必要がある(formプラグインのページ名引数等とも被らないように付ける方が無難)
設置ページ名
formプラグインを設置するWikiページ名。省略した場合は自動的にページ名を取得するが、なるべく自分で付けておいた方が無難。ページをインクルードして使う場合等に間違いないよう付ける必要がある
戻りページ名
フォームから送信した後に移動するWikiページ名(通常は設置ページ名と一緒)。省略した場合は自動的に設置ページ名の省略同様のページ名を取得するが、なるべく自分で付けておいた方が無難。ページをインクルードして使って、書き込み後、フォームを設置したページではないページに移動させたい等に使える

commentプラグイン等では通常、フォームから送信した文の保存位置はフォームの前後かページ下(tail)に限られるが、このプラグインではページの任意の位置に書き込む(保存する)事も可能です。
任意の位置に書き込みたい場合は以下の事をする必要があります。

このようにすると、フォームの位置にとらわれず、そのコメント行のある位置にフォームから送信された文が書き込まれます。
通常のcommentプラグインでは、書き込み順をnormalにするとフォームの上に下の方が新しい順で追加されていき、reverseにするとフォームの下に上の方が新しい順で追加されていきます。reverseなら問題ないのですが、normalだと書き込まれる程にフォームが下にいってしまい使いづらかったけれど、この機能を使えばその問題を解消する事が出来ます。




クエリー用ネーム

このCGIでは、フォームの送受信に使うクエリーに付ける名前 (テキストフィールドに付ける名前等)は決められたものしか使用出来ない仕様となっています (CGI内で様々な変換を行うため・受け取ったクエリーの全てを展開、という事も考えられるんでしょうがめんどいので(^^;)・大体は決められたもので十分でしょうし)。以下を参考にして、目的にあったものを使用して下さい (名前に応じて特殊な変換を行うものもありますので、それも考慮して)。

現在使用可能なクエリーネーム

「name」「title」「message」「urltitle」「url」「mail」「id」「pass」「q1」〜「q20」「wikiname」「subject」「category」「user」「rate」「stat」「date」「spam1」「spam2」「spam3」

現在使用不可能なクエリーネーム (hidden要素として既に使われている)

以下の名前をあえて使って置き換える事も可能かもしれませんが、その場合動作がおかしくなる可能性があります
「page」「backpage」「spamf1」「spamf2」「spamf3」「formname」「rectype」

追加予定クエリーネーム

無し




フォーム用パーツ

基本的には「{{」と「}}」で囲んだものがパーツとなり、それ以外はそのまま画面表示される。パーツではタイプと設定を指定する(パーツによって設定がないもの、逆に複数設定出来るものがある)。タイプと設定の間は半角スペースで間をあけ、設定と設定の間にはカンマを入れる(プラグインの構文の書き方と一緒)。

 {{タイプ 各種設定}}
 お名前:{{formtext name,10}} コメント:{{formtext message,40}} {{formsubmit 送信}}

注意:フォームには必ずmessageかurlの名前が付いた項目を入れなければならない。ページ名(必ず自動的に送信される)と、messageもしくはurlのクエリーが受け取れない場合は何も送信されてないと判断して記録保存されない仕様なので

クエリー送信関係パーツ

1行テキストフィールド

 {{formtext name}}
 {{formtext name(省略不可),size,max,value}}
 
 {{formtext name,20,100,名無しさん}}

引数設定

name
テキストフィールド名。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
size
フィールド幅サイズ。数値のみで指定
max
送信出来る最大文字数。数値のみで指定
value
フィールドに挿入しておく初期値(文字)

date picker用1行テキストフィールド

 {{formdate name}}
 {{formdate name(省略不可),表示パターン}}
 
 {{formdate name,mm月dd日}}

フィールドをクリックすると、カレンダーがレイヤー表示され、カレンダーから選択した日付をフィールドに入力出来る(入力後の編集も可能)。

この機能を使うにあたって幾つか注意が。

引数設定

name
テキストフィールド名。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
表示パターン
表示させるパターン

送信ボタン

 {{formsubmit}}
 {{formsubmit value}}
 
 {{formsubmit 送信}}

引数設定

value
ボタンに表示する文字。省略時「実行」

リセットボタン

 {{formreset}}
 {{formreset value}}
 
 {{formreset リセット}}

入力内容をキャンセルし初期化するボタン
引数設定

value
ボタンに表示する文字。省略時「リセット」

セレクトメニュー

 {{formselect name,option}}
 {{formselect name,option,option,option,option,option,・・・}}
 
 {{formselect title,質問,意見,提案,情報}}
 {{formselect title,質問:question,意見:opinion,提案:suggestion,情報:information}}

ブルダウン式の選択メニュー。選択した項目がクエリーとして送信される
引数設定

name
メニュー名。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
option
メニュー項目。最低一つは必要で、カンマで区切って幾つでも追加可能。「A:B」の形で書いた場合、Aの部分がメニュー状の名前、Bの部分が選んだ際に送信されるvalueとなる (例えば「質問:question」なら、メニューにある「質問」を選択すると「question」の文字がクエリーとして送信される)

リスト形式メニュー、selected、multipleについては現在未実装

パスワードフィールド

 {{formpass name}}
 {{formpass name(省略不可),size,max,value}}
 
 {{formpass pass,20,20}}

フォームのパスワードは入力時の表示が隠されるだけで、送受信時に暗号復号化はされません。
引数設定

name
パスワードテキストフィールド名。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
size
フィールド幅サイズ。数値のみで指定
max
送信出来る最大文字数。数値のみで指定
value
フィールドに挿入しておく初期値(文字)

テキストエリアフィールド

 {{formtextarea name}}
 {{formtextarea name(省略不可),size,max,value}}
 
 {{formtextarea message,20,20}}

引数設定

name
テキストエリアフィールド名。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
cols
フィールド横幅。数値のみで指定
rows
フィールド高さ(行数)。数値のみで指定
wrap
幅以上になった際の自動改行のタイプ。「hard」もしくは「physical」(自動改行、送信内容でも改行維持)、「soft」もしくは「virtual」(自動改行、送信内容では改行無効)、「off」(改行無し・スクロールバー表示)の中から指定

チェックボックス

 {{formcheck name,value}}
 {{formtcheck name(省略不可),value(省略不可),checked}}
 
 {{formcheck q1,りんご,c}}{{formcheck q1,みかん}}{{formcheck q1,バナナ}}

チェックボックスを表示する。
引数設定

name
チェックボックス名。同じ選択肢グループには同じ名前を付ける。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
value
選択時に送信される文字。省略不可
checked
最初から選択された状態にしたい時に指定。引数の内容は何でも良い(分かりやすくcとかでいいのでは)

ラジオボタン

 {{formradio name,value}}
 {{formtradio name(省略不可),value(省略不可),checked}}
 
 {{formradio q1,りんご,c}}{{formcheck q1,みかん}}{{formcheck q1,バナナ}}

ラジオボタンを表示する。
引数設定

name
ラジオボタン名。同じ選択肢グループには同じ名前を付ける。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
value
選択時に送信される文字。省略不可
checked
最初から選択された状態にしたい時に指定。チェックボックスと違って、同じ選択肢グループからは一つしか選べないので注意(複数選択されてないかのチェックはしてません)。引数の内容は何でも良い(分かりやすくcとかでいいのでは)

hidden

 {{formhidden name,value}}
  
 {{formhidden title,質問用フォーム}}

自動的に送信される隠しクエリー要素。

name
送信アイテム名。省略不可。レシーブ側とのやりとりの関係上、以下にある、決められた中の名前しか付けられないので注意。付けられる名前についてはクエリー用ネームの説明参照
value
送信する値。省略不可

まだ未実装だが、決められたvalueと共に末尾に自動的に数字(ディレクトリを探って低い順で存在しない数字とか)や保存日時等が付く機能も用意するかも



クエリー送信関係の特殊ネーム

テキストフィールドやセレクトメニュー等に以下の名前を付けた場合(例えばformtextのnameの引数をspam1にする等)に、送られたクエリーに応じて専用の処理が行われるもの

spam1

送信されたvalueがok以外だとスパムと見なされ、エラーとし、記録させない。テキストフィールド、セレクトメニュー等で使用可能。実際使う際は説明か質問文を前に書いて使う事になるだろう

●テキストフィールドの場合

okという文字を打って送信しないとスパムと見なされる。

 {{formtext spam1}}

実際例

 スパム対策:半角英小文字で「オーケー」を記入して下さい{{formtext spam1}}

●セレクトメニューの場合

okのメニュー項目(option)を選ばないとスパムと見なされる。valueでチェックするのでメニュー項目名はどんなものでも良い。スパムでないと判断するoptionは「value」を「ok」とする(「ok」以外はスパムと判断)。メニューの項目数は幾つでも良い。

 {{formselect spam1,項目1:out,項目2:ok }}

実際例

 スパム対策:問題なしを選択して下さい{{formselect spam1,問題あり:out,問題なし:ok}}
 スパム対策:ワンワン鳴くのは?{{formselect spam1,ネコ:out,イヌ:ok,ウシ:out}}

spam2

送信されたvalueが今月を表す半角数字以外だとスパムと見なされ、エラーとし、記録させない。送信準備をしている間に月が変わっても大丈夫なよう、一月分余裕を持たせてある。テキストフィールド、セレクトメニュー等で使用可能。実際使う際は説明か質問文を前に書いて使う事になるだろう

●テキストフィールドの場合

今月を表す半角数字を打って送信しないとスパムと見なされる。

 {{formtext spam2}}

実際例

 スパム対策:今何月か半角数字で記入して下さい{{formtext spam2}}

●セレクトメニューの場合

メニュー項目(option)から今月を選ばないとスパムと見なされる。
実際例

 スパム対策:今何月?{{formselect spam2,1,2,3,4,5,6,7,8,9,10,11,12}}月

spam3

送信されたvalueが今日を表す半角数字以外だとスパムと見なされ、エラーとし、記録させない。送信準備をしている間に日が変わっても大丈夫なよう、一日分余裕を持たせてある(28日〜31日は処理が面倒なので一緒の扱いにしてある(^^;))。テキストフィールド、セレクトメニュー等で使用可能。実際使う際は説明か質問文を前に書いて使う事になるだろう

●テキストフィールドの場合

今日を表す半角数字を打って送信しないとスパムと見なされる。

 {{formtext spam3}}

実際例

 スパム対策:今日は何日か半角数字で記入して下さい{{formtext spam3}}

●セレクトメニューの場合

メニュー項目(option)から今日を選ばないとスパムと見なされる。
実際例 (実際と異なり途中改行して分けてあります)

 スパム対策:今日は何日?{{formselect spam3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 ,16,17,18,19,20,21,22,23,24,26,27,28,29,30,31}}日



表示関係パーツ

フォームの表示を多彩にする、使いやすくするためのもの

日時

 {{formtime}}

現在の日時を表示する。spam2、spam3のヒント用などとして使用。{{formtime kan}}とした場合、漢数字で表示する

span

 {{formspan style,文字}}
 
 {{formspan color:red;,注意!}}

spanタグを使用して、修飾をした文字等を表示する。
引数設定

style
style属性。例えばフォントサイズをlargeにしたいなら「font-size:large;」、赤い文字にしたいなら「color:red;」という具合に (複数指定可能)
文字
修飾させたい文字

イメージ

 {{formimage URL}}
 
 {{formimage http://www.google.com/logos/Logo_25wht.gif}}

URLで指定したイメージを表示する
引数設定

URL
画像のURL。省略不可。httpから指定。gif、jpg、jpeg、pngのみ可能

リンク

 {{formlink URL}}
 
 {{formlink http://hpcgi3.nifty.com/%7Eio/fswiki-l/wiki.cgi}}
 {{formlink http://hpcgi3.nifty.com/%7Eio/fswiki-l/wiki.cgi:ANA-NOTE}}

リンクを表示。クリックすると新規ウインドウでリンク先を表示する
引数設定

URL
リンクするURL。省略不可。httpから指定。「A:B」の形で書いた場合、Aの部分がURL、Bの部分が画面上に表示されるリンク文字となる (例えば「http://hpcgi3.nifty.com/%7Eio/fswiki-l/wiki.cgi : ANA-NOTE」なら(実際と異なりスペース入れてあります)、ANA-NOTEという風になる)

改行

 {{br}}

改行する




レシーブ用Wikiページ

レシーブ用Wikiページは、フォームから送信された文字等(クエリー)と置き換わるパーツ(基本的には「%」と「%」で囲む)と、それ以外に表示させたい(加えて保存させたい)文字(例えばWikiで見出しとなる「!」やリストとなる「*」を書いたり、プラグイン構文を書いたり)から成る。表示させたい項目を表示させたいレイアウトで書く(Wikiのソースとなる)。

当然ながら、設定したフォームが送信しないクエリーはレシーブに反映されないし、逆に、フォームがクエリーを送信してもレシーブ側でパーツを用意していないと表示しないので注意。

 *%message% - %name% (%time%)%reverse%



レシーブ用パーツの基本

基本的にはフォームから送信された文字(クエリー)とパーツが置き換わる。

例えば、フォームに「name」と名付けたテキストフィールドがあって、名前を記入して送信した場合、レシーブ用ページ中に %name% とあれば、%name%の部分が送られてきた「name」クエリー(記入した名前)に置き換わって保存される。

パーツの区切りとしてでなく「%」を使いたい場合は「%per%」と表記する事。



レシーブ用クエリー置き換えパーツ (名前順)

category

 %category%
 %category pl%

「category」クエリーと置き換わる。 %category pl%とすると (「pl」となっているが、引数は今のところ何でも良い)、クエリーをカテゴリー名にしたcategoryプラグインに置き換わる。レシーブファイル中でcategoryプラグインを使いたいのであれば、下のように書くのでも良い (categoryプラグインの他の設定もしたい時等は)。

 {{category %category%}}

id

 %id%

「id」クエリーと置き換わる。

mail

 %mail%
 %mail pl%

「mail」クエリーと置き換わる。%mail pl%とすると (「pl」となっているが、引数は今のところ何でも良い)、BugTrack-plugin/117のmailtoプラグインに置き換わる (勿論BugTrack-plugin/117を導入していなければ機能しない)。レシーブファイル中でmailtoプラグインを使いたいのであれば、下のように書くのでも良い (mailtoプラグインの他の設定もしたい時等は)。

 {{mailto %mail%}}

message

 %message%

「message」クエリーと置き換わる。

name

 %name%
 %name 文字%

「name」クエリーと置き換わる (プラグインで生成されたフォームのhtmlソースを見ると、「name="name"」と設定した場合は「name="namae"」と(「namae」クエリーと)変わっていますが、レシーブでの指定はフォーム用Wikiページでの指定と同じくnameでOKです)。
引数設定

文字
「name」クエリーが送信されていない時に置き換わる文字 (例えば、%name 名無しさん% としたら、名前が送信されていない場合は「名無しさん」となる)

pass

 %pass%
 %pass パスワード%

「pass」クエリーと置き換わる。%pass パスワード%の形で引数を設定すると、クエリーの置き換えではなくて「pass」クエリーと設定したパスワードを照合して同じでないならエラーとして書き込めない機能となる。レシーブ用ページの該当部分を見られてしまえばパスは丸分かりだが、レシーブ用ページの参照にパス制限を付けておく事で一応は保護出来る (ノーマルのFSWikiLiteにはそのようなパス制限機能はないので出来ません・IOが改造したFSWikiLiteはパス機能があります)。
引数設定

パスワード
「pass」クエリーと照合させるパスワード。パスワードが異なっていたら、エラーで書き込み出来ない。パスワードを設定した場合はクエリーの置き換えはせず、何も表示しない

q1 〜 q20

 %q1% 〜 %q20%

「q1」〜「q20」クエリーと置き換わる。様々なクエリー送受信用途に使えるよう、20個分確保されている。

rate

 %rate%

「rate」クエリーと置き換わる。

stat

 %stat%

「stat」クエリーと置き換わる。

subject

 %subject%

「subject」クエリーと置き換わる。

title

 %title%

「title」クエリーと置き換わる。

url

 %url%

「url」クエリーと置き換わる。Wikiのリンク書式に整形して使う事がありえるが、その場合の書き方は以下の通り。

URLを任意の文字で置き換えリンクしたい場合

 [任意の文字|%url%]

URLを「urltitle」クエリーで置き換えリンクしたい場合

 [%urltitle%|%url%]

URLを任意の文字で置き換え、リンク先を新規ウインドウで開きたい場合

 {{new_window %url%,任意の文字}}
 [任意の文字|%url%@@]

URLをurltitleクエリーで置き換え、リンク先を新規ウインドウで開きたい場合

 {{new_window %url%,%urltitle%}}
 [%urltitle%|%url%@@]

urltitle

 %urltitle%

「urltitle」クエリーと置き換わる。「urltitle」クエリーが送信されていなくて「url」クエリーが送信されている時は、自動的に「url」クエリーと置き換わる。

user

 %user%

「user」クエリーと置き換わる。

wikiname

 %wikiname%

「wikiname」クエリーと置き換わる。ページ生成機能が出来たら、それに応じて機能が付く予定。



レシーブ用特殊パーツ (保存位置指定)

基本的には、保存位置はフォームの前後かtailに限られるが(以下のパーツの利用による)、formプラグインの設定によって保存位置をフォームと切り離す事も可能(詳しくはformプラグインの説明にあり)。

normal

 %normal%

保存位置指定。書き込み保存位置をフォームの上とし、保存順を下が最新のものにする。画面上には出ないので、どこに書いてもOK

reverse

 %reverse%

保存位置指定。書き込み保存位置をフォームの下とし、保存順を上が最新のものにする。画面上には出ないので、どこに書いてもOK

tail

 %tail%

保存位置指定。書き込み保存位置をページの一番下とする。画面上には出ないので、どこに書いてもOK



レシーブ用特殊パーツ (スパムフィルター等)

設置する事で、送信されたクエリーをチェックしてスパム等を排除するパーツ。

spamenglish (英語のみかチェック)

 %spamenglish%
 %spamenglish クエリー名%

スパムフィルタ。送信されたクエリーに日本語(全角)が含まれていない時はエラーとし、記録させない。画面上には出ないので、どこに書いてもOK
引数設定

クエリー名
チェックするクエリー名。省略時はmessageをチェック

spamip (リモートホスト、IPアドレスをチェック)

 %spamip IP%

スパムフィルタ。送信者のリモートホスト(もしくはIPアドレス)をチェックして、引数で指定したものが含まれている場合(制限したいIPである場合)はエラーとし、記録させない。画面上には出ないので、どこに書いてもOK。
なお、今現在はこれを使わなくても、form.cgi自体がこれと同じIP制限チェック機能を持っている(kinsiip.txtに書かれたホスト名、IPを弾く)。フォーム毎にチェックするしないを決められるこちらの機能のみを使って、form.cgiでのIPチェック機能がいらないようであれば、form.cgiの該当部分を削除しても良い (フォーム毎にこれで設定するのは大変だろうし、kinsiip.txtでのチェックの方がいいとは思うが、一時的対処として行うというのはありかと)
引数設定

IP
制限したいリモートホスト名もしくはIPアドレス。指定する引数はフルのホスト名やIPである必要は無く、リモートホスト(もしくはIPアドレス)の先頭からチェックしている仕様を考えて指定する(例えば「199.40」とした場合、199.40.1.1も199.40.82.139も該当と見なす)。「softbank.*.bbtec.net」のような正規表現での指定も可能、多分(^^;)。「|」で区切って複数指定可能

spamref (リファラーをチェック)

 %spamref%
 %spamref 文字%

スパムフィルタ。リファラーをチェックして、許可したところ以外からの送信の場合(リファラーに引数で指定した文字が含まれていない場合)はエラーとし、記録させない。画面上には出ないので、どこに書いてもOK。
なお、今現在はこれを使わなくても、form.cgi自体がこれと同じチェックする機能を持っている(リファラーに$MAIN_SCRIPTで指定したものが含まれていなければエラー)。フォーム毎にチェックするしないを決められるこちらの機能のみを使って、form.cgiでのリファラーチェック機能がいらないようであれば、form.cgiの該当部分を削除しても良い (あるフォームだけにリファラーチェックを埋め込みたいとか、引数を指定してより厳格に決まったページだけからの送信を受け付けるようにしたいとかに有効かと)
引数設定

文字
リファラーに含まれているか調べる文字(含まれてなければエラー)。引数を指定しない場合、WikiのCGI(setup.plの$MAIN_SCRIPTで指定したもの)となる

spamurl (URL数をチェック)

 %spamurl%
 %spamurl 数%
 %spamurl 数,クエリー名%

スパムフィルタ。送信されたクエリーに指定した数以上のURLが含まれている時はエラーとし、記録させない。画面上には出ないので、どこに書いてもOK
引数設定

エラーとするURL数。引数を指定しない場合の数は10
クエリー名
チェックするクエリー名。省略時はmessageをチェック

spamword (禁止語句が含まれているかをチェック)

 %spamword 文字%
 %spamword 文字,クエリー名%

スパムフィルタ。送信されたクエリーに指定した文字が含まれている時はエラーとし、記録させない。画面上には出ないので、どこに書いてもOK
なお、今現在はこれを使わなくても、form.cgi自体がこれと同じ禁止語句制限チェック機能を持っている(kinsiword.txtに書かれた文字を弾く)。フォーム毎にチェックするしないを決められるこちらの機能のみを使って、form.cgiでのワードチェック機能がいらないようであれば、form.cgiの該当部分を削除しても良い (フォーム毎にこれで設定するのは大変だろうし、kinsiword.txtでのチェックの方がいいとは思うが、一時的対処として行う、フォームによって使わせない文字を設定するというのはありかと)
引数設定

文字
制限したい文字。「眼鏡.*.娘」(いや、別に他意はありません(^^;))のような正規表現での指定も可能、多分(^^;)。「|」で区切って複数指定可能
クエリー名
チェックするクエリー名。省略時はmessageをチェック

textfile (指定テキストファイルに書かれた語句が含まれているかをチェック)

 %textfile テキストファイル名%
 %textfile テキストファイル名,クエリー名%

送信されたクエリーに指定したテキストファイル内に書かれた文字(行毎)があるかチェックし、あった場合は「重複等により保存出来ませんでした。」というエラーメッセージを表示し、記録させない。画面上には出ないので、どこに書いてもOK
スパム対策用という事だけでなく、エラーメッセージからも分かるように重複を防ぐ等にも使える(というかむしろこっち用を考えて作ったもの)。
テキストファイルはform.cgiと同じディレクトリに入れなければならず、サーバにアップロード出来るWiki管理者か、管理者にテキストファイルアップロードを頼む事でしか使えないので注意。
引数設定

テキストファイル名
チェックに使用するテキストファイル名。指定したファイルがサーバに無い場合は「ファイルのオープン、入出力に失敗」というエラーメッセージになるので注意。「テキストファイル名:エラーメッセージ」というように「:」で区切って指定すれば任意のエラーメッセージを表示する事も可能。(例「check.txt:重複してるみたいだニャン」)
クエリー名
チェックするクエリー名。省略時はmessageをチェック



レシーブ用特殊パーツ (その他)

ip

 %ip%

送信者のリモートホスト名(取得出来ない場合はIPアドレス)に置き換わる。迷惑な投稿への一応の対策として利用する等。

time

 %time%
 %time 表示%

送信日時(〜年〜月〜日 〜時〜分〜秒)に置き換わる。「%time 表示%」とすると、日時全てでなく、引数で指定した一つだけを表示出来る。
引数設定

表示
日時の中から表示させるものを指定。以下の中から一つのみ設定可能。「year」(年)、「mon」(月)、「day」(日)、「hour」(時)、「min」(分)、「sec」(秒)
 例
 %time mon%月 %time day%日/%time mon%時 %time min%分
 10月 11日/18時02分



レシーブ用特殊パーツ (スペシャル)

IOが改造したFSWikiLite用等の一般的でないパーツ、消える可能性がありえるパーツ。

注意!!
以下の「delete」「linedelete」については思った通りに動く事もありますが、まだ上手く動かない事も多々あります(^^;)。レシーブ内で使わなければ何も問題ありませんので、必要なければ使わない方がいいかもしれません。

delete (暫定新仕様)

 %delete クエリー名,消す文字%

引数設定

クエリー名
指定したクエリーを受信しなかった場合に、「消す文字」の引数で指定した文字がレシーブによって整形された後の文章中にあれば削除する。クエリー受信に関係なく文章中にあったら消したい場合は「d」とする
消す文字
存在したら消したい文字の指定。Perlの置き換え処理時に含まれていると問題となる「*|][」等の文字を消す文字として指定したい時は、Perlで使える16進数で表した文字にしておく必要がある(例えば「*」なら「\x2a」とする)。16進数での文字について、素人Perlerのメモに書いたのでご覧下さい。

良く分からないと思うので利用方法を。
例えば、コメント(メッセージ)、URL、URLタイトルを入力するフォームがあって、レシーブ側で一行目にリスト形式(行頭に「*」を付ける)でコメントを、二行目に一段下がったリスト形式(行頭に「**」を付ける)でURLとURLタイトル([ ]を使ったWikiのリンク形式)をという形に整形するようにしてたとします。この場合下のようになります。

 *タイトル
 **[URLタイトル|URL]

フォームの全ての要素を記入していれば問題ありませんが、もしURL、URLタイトルを入力していないと、二行目にはURL、URLタイトルが抜けた「**[|]」というゴミが残ってしまいます。そのようなものがあったら自動的にそれを消そうというのがdeleteの役目です。この場合は

 %delete d,\x2a\x2a\x5b\x7c\x5d%

とレシーブ内に書いておけば、「**[|]」が存在した場合に自動的にそれを削除します。

引っかかっていたのは16進数のせいと気づいて、一応稼働するようになったものの、レシーブの指定によって原因不明のエラーが出たりする事もまだあるような感じで、OKとは言えません。旧仕様に比べて使い勝手も劣り、このままでいくかはもう少し考えてみないと。これが進まないせいで他が滞ってしまっては困るので、稼働はした事だし、しばらく手をつけず後回しにします。

行削除 (旧・現在オフ)

 %linedelete 文字%
 %linedelete 文字,文字,・・・%

文字で指定したクエリーを受信していない場合、%linedelete 文字% を書いたところから行末までを削除する。文字を二つ以上指定する場合はカンマで区切る(完成時、区切りはカンマでなく「|」になる予定)。省略されてフォームからクエリーが送信されてない場合に不必要だったり見苦しく見える部分を削除するのに使う

部分削除 (旧・現在オフ)

 %delete 文字% 開始用
 %delete 文字,文字,・・・% 開始用
 %/delete% 閉じ用

文字で指定したクエリーを受信していない場合、%delete 文字% を書いたところから%/delete%までを削除する(指定は行単位で、行をまたいでは使えないかと)。文字を二つ以上指定する場合はカンマで区切る。省略されてフォームからクエリーが送信されてない場合に不必要だったり見苦しく見える部分を削除するのに使う。例えば、違う文字指定の開始用を二つと閉じ用を一つ用意して、クエリーの受信状況に応じて削除位置を変えるといった事も可能

削除機能は一応動くがプログラムとしてはあまりこなれていない。もう少し良い感じに出来ればいいんだろうが、とりあえず無いよりましという事で。

new

 {{new}}

オリジナルの「new」プラグイン変換用。newプラグインnewマークを生成し、生成した段階の日時を自動記録して(マークの上にポインタを持っていくとtitleチップ表示する)、1日以上経つと色が変わり、3日目以降は画面から消えるというもので、ページ内に設置して更新を知らせたり、新しい投稿と知らせたりする事に使う。通常は{new time}と書くが(他の書き方もあり)、レシーブページ中でそのまま使う事は出来ないので(貼ったとたん古くなっていき使えなくなってしまうので(^^;))、レシーブファイル中では{new}としておいて({new}はtime関数での今の時間を表示する機能を持つ)、{new time}に置き換える

ページ生成

アイデアだけでまだ未作成。フォームが存在するページ中に付け加える形で保存するのでなく、一つのページとして保存する。ページタイトルはpageというクエリー、もしくはpageが無い場合はtitle、もしくはtitleもない場合はmessageとか?




各種フォームテスト

フォーム「form/normal」レシーブ「formrec/normal

お名前: コメント: 




フォーム「form/normal-spam1?」レシーブ「formrec/normal

その名のフォームWikiページは存在しません。




フォーム「form/normal-spam2?」レシーブ「formrec/normal

その名のフォームWikiページは存在しません。




フォーム「form/normal-spam3?」レシーブ「formrec/normal

その名のフォームWikiページは存在しません。




フォーム「form/normal」レシーブ「formrec/normal-redname

お名前: コメント: 




フォーム「form/normal」レシーブ「formrec/normal-greenname

お名前: コメント: 




フォーム「form/normal」レシーブ「formrec/normal-small

お名前: コメント: 




フォーム「form/normal」レシーブ「formrec/anacha

お名前: コメント: 




フォーム「form/hensyu」レシーブ「formrec/hensyu

種類: コメント: 




フォーム「form/kao」レシーブ「formrec/kao

お名前: コメント: 顔アイコン(サンプル):




フォーム「form/link01」レシーブ「formrec/link01

リンクURL:
リンクタイトル(省略可):
コメント(省略可):
お名前(省略可): 

http://hpcgi3.nifty.com/%7Eio/fswiki-l/wiki.cgi

ANA-NOTE

ANA-NOTE

http://hpcgi3.nifty.com/%7Eio/fswiki-l/wiki.cgi




フォーム「form/link01」レシーブ「formrec/link02

リンクURL:
リンクタイトル(省略可):
コメント(省略可):
お名前(省略可): 




フォーム「form/memo01」レシーブ「formrec/memo01

コメント:
リンクURL(省略可):
リンクタイトル(省略可): 種類:




フォーム「form/memo01」レシーブ「formrec/memo02

コメント:
リンクURL(省略可):
リンクタイトル(省略可): 種類:
【Wiki】ANA-NOTE最初の行が見出しになってしまうのは仕様なのでしようがなく(^^;)2006-10-16 13:08  
【Wiki】ANA-NOTE2006-10-16 13:07  
【未定】[リンクタイトル|@@]コメント2006-10-16 13:06  
【Wiki】http://hpcgi3.nifty.com/%7Eio/fswiki-l/wiki.cgiコメント2006-10-16 13:06  
【Wiki】http://hpcgi3.nifty.com/%7Eio/fswiki-l/wiki.cgi2006-10-16 13:04  
【未定】コメントのみ2006-10-16 13:03  




フォーム「form/normal」レシーブ「formrec/normal02

お名前: コメント: 




フォーム「form/message」レシーブ「formrec/message02

コメント: 

サイト内に表記された商品名、会社名等は各社の登録商標もしくは商標です。