<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> WikiForm とは、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WikiPage</anchor> 中に書くことが出来る入力欄とその入力を整形して出力する
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SuikaWiki</anchor> の機能のことです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> WikiForm という名前を使った wiki の機能の実装が他にも幾つかあるようですが、
SuikaWiki における WikiForm はそれらと関係はありません。
(もしかしたら同じようなものもあるのかもしれませんが。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WalWiki</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">YukiWiki</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SuikaWiki</anchor> では <code class="wiki"> [ [ # comment ] ] </code>
と書くことで、各 Wiki page 末尾にあるような入力欄が挿入されます。
この場合は入力欄の項目の数や入力がどう反映されるかは固定ですが、 WikiForm
ではこれらを任意に指定可能としています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 説明よりも実例を見た方がわかりやすいでしょう。
実際に何か入力してみて下さい。書き方はこの Wiki page を「編集」すると見られます。</p><ul><li>トマトといちごを食べてから木搾液を飲みました。</li><li>大嫌いなナスともっと嫌いな若いバナナを食べてからチョット飲むだけでお腹が痛くなる”げんのしょうこ”を飲みました。</li><li>あああといいいを食べてからうううを飲みました。</li></ul><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" input="%text(id=&gt;yasai,label=&gt;野菜); %text(id=&gt;kudamono,label=&gt;果物); %text(id=&gt;nomimono,label=&gt;飲み物); %submit;" template="-%text(source=&gt;yasai);と%text(source=&gt;kudamono);を食べてから%text(source=&gt;nomimono);を飲みました。"></form><ul><li>にんじんとみかんを食べてから紅茶を飲みました。</li><li>きゅうりとりんごを食べてからコーラを飲みました。</li></ul><section><h1>書式の説明</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> そのうち書きます・・・。きっと。でも簡単だから説明なしでもわかるんじゃなかなあ・・。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-28 13:00</weak>: <strong>質問</strong>: どう書けばいいか分かりません。 <strong>回答</strong>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">わかば</anchor>もわかりません(w)。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WikiFormCollection</anchor> で似たようなのを探して、無ければソース <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="SuikaCVS:&quot;wakaba/wiki/SuikaWiki/Plugin/&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:SuikaCVS:&quot;wakaba/wiki/SuikaWiki/Plugin/&quot;</anchor-external> 見て調べてます(ww)。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WikiPluginInfo</anchor> に書式説明も載せれないか検討中。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2003-12-23 02:36:14 +00:00</weak> <em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">わかば</anchor></em>: SuikaWiki 3 ではこの辺の反省から、 WikiPlugin module の source に書式説明の項目を設けて、それを wiki から参照できるようにしています。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2003-12-30 05:11:31 +00:00</weak> <em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor></em>: 説明を書いてみました: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.//説明</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.//書式</anchor></li></ul></p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form></section><section><h1>実装</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <code>%name(parameter);</code> の塊を<em>整形規則</em>と言いますが、この規則は
plugin として実装されています。この plugin は安全上その他の理由から wiki
の管理者しかいじれませんが、特定の場所にファイルを置くだけで使えるようになります。 <del>←となる予定ですが、この部分は未実装です。</del><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-05 (木) 13:27</weak> <em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor></em>: <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;6</anchor-internal> 実装しました。また、 plugin の定型処理の code を自動出力させるために中関形式を導入しました。もちろん生の perl code で書くことも出来ます (というか、中間形式で書いても perl module に変換しないと動きません) が、中間形式で描いた方が楽です。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-05 (木) 13:28</weak> <em>11</em>: 詳しくは <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="SuikaCVS:&quot;wakaba/wiki/SuikaWiki/Plugin/&quot;" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW">IW:SuikaCVS:&quot;wakaba/wiki/SuikaWiki/Plugin/&quot;</anchor-external> を見て下さい。</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 整形規則の plugin は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">perl</anchor> の code ですから、受け取った入力を自由自在に扱えます。
例えば入力文字を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ROT13</anchor> する整形規則とかがあったら面白いかもしれません。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言い出しっぺの法則</anchor>に基づきあとで作ります:-)<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-05 (木) 15:31</weak> <em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor></em>: <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal> ということで plugin TextRotate を書きました。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-05 (木) 15:31</weak> <em>13</em>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">転25を実際に試してみる</anchor>でお楽しみ下さい。</li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 詳しい実装については source を見るか、ここで聞いて下さい。
(まあたいした処理はしていません。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> なお、現在組み込んである (実装済みの) 整形処理は、とりあえず #comment
もどきが作れる程度のものです。これはもっと増やす予定。
なお、 #comment とほぼ同等の #form の例は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SandBox</anchor> にあります。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" input="%submit(label=&gt;書き込む); %text(label=&gt;&quot;名前 : &quot;,id=&gt;name,size=&gt;&quot;9.5&quot;); %text(label=&gt;&quot;メイル: &quot;,id=&gt;mail,size=&gt;9.5);%n;%textarea(id=&gt;msg,size=&gt;35,lines=&gt;5);" option="%require(msg);" template="[%index;] : %name;%text(source=&gt;mail,prefix=&gt;&quot; [&quot;,suffix=&gt;&quot;]&quot;); : %date;%n;%n;%text(source=&gt;msg);%n;"></form></section><section><h1>TO DO</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 書き換え可能なデータを持つことが現状では出来ません。
例えば投票だったら得票数を投票の度に書き換えてく必要がありますが、これが出来ません。
どうするのがいいか思いつきません。。。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" input="%submit(label=&gt;書き込む); %text(label=&gt;&quot;名前 : &quot;,id=&gt;name,size=&gt;&quot;9.5&quot;); %text(label=&gt;&quot;メイル: &quot;,id=&gt;mail,size=&gt;9.5);%n;%textarea(id=&gt;msg,size=&gt;35,lines=&gt;5);" option="%require(msg);" template="[%index;] : %name;%text(source=&gt;mail,prefix=&gt;&quot; [&quot;,suffix=&gt;&quot;]&quot;); : %date;%n;%n;%text(source=&gt;msg);%n;"></form><section><h1>画像うp</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Base64</anchor> 画像張り込みが実装されたら、また更に
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">multipart/form-data</anchor> 入力が実装されたら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">type</anchor> 属性が
<code class="HTML">file</code> である <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">input属性</anchor>を出力できる部品を含む
plugin を作る。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> : <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal> : 2002-12-07 (土) 14:02</p><p>画像張り込みの仕様は、今の parser や構文の元で
Base64 data を挿入するのは無理っぽいから、他の
page を使って #embed で張り込みになりそう。</p><p>その場合書き込み先 page を動的に (書き込み時に)
決定できる仕組みが必要になる・・・</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> : 16 : 2002-12-07 (土) 14:03</p><p>他のところに書いてないからついでに書いておくと、現在の予定ではその外部頁が
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">img</anchor>要素の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">longdesc</anchor>属性に使われて、画像についての説明も書けるようになるっぽい。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> : <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal>-17 : 2003-02-24 08:08</p><p>画像埋め込みは既に実装されました。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">multipart/form-data</anchor>
はまだですけど。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" input="%submit(label=&gt;書き込む); %text(label=&gt;&quot;名前 : &quot;,id=&gt;name,size=&gt;&quot;9.5&quot;); %text(label=&gt;&quot;メイル: &quot;,id=&gt;mail,size=&gt;9.5);%n;%textarea(id=&gt;msg,size=&gt;35,lines=&gt;5);" option="%require(msg);" template="[%index;] : %name;%text(source=&gt;mail,prefix=&gt;&quot; [&quot;,suffix=&gt;&quot;]&quot;); : %date;%n;%n;%text(source=&gt;msg);%n;"></form></section></section><section><h1>メモ</h1><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> Install 済み plugin の一覧は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WikiPluginInfo</anchor> で見れます。 (ほんとにいちらんだけですが。)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-28 14:40</weak> <em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ななしのごんべ</anchor></em>: age</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> Calender module とか form と関係ありませんね(w)。こういうのを使う時は、 #form の3つめの欄で %output(form=&gt;0); としとくと、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">form</anchor>要素が出力されなかったりします。</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SuikaWiki3のWikiForm全用例</anchor></p></section></body></html>