[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: form & post



FORM の CHECKBOX および RADIO に対応してみました。

>>>>> at Tue, 10 Jul 2001 16:13:29 +0900 (JST)
>>>>> 白井 == Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> said,
白井> リハビリついでに、こんなのも対応して貰えるとうれしいですわ。
白井> http://www.namazu.org/ml/namazu-users-ja/
...snip...
白井> Return で ON/OFF ?

RETURNでON/OFFです。

一応現行の枠組みの中で行うように努力したつもりです。
その分、(特にRADIOの処理あたりは)ad-hocな感もあります。
まぁ、それはアレ、ということでご勘弁を。

ChangeLogも添付しますが、大まかに言葉で説明しときます。

  * w3m-form-input で、typeに応じて処理をするようにした。

  * checkboxは同一のnameが許されるので、form情報に保持する
    値としてはリストとした。selectionの場合は (current . candidate-alist)
    であるわけですが、テキトーに判定して処理。ちょっと無理があるかも。
    

  * radioもまた同一のnameが許され択一となります。値は1つなので保持する
    こと自身はよいのですが、1つが選択されたら他を消す(チェックをはずす)、
    という動作が必要なため、w3m-form-field-id というtext propertyを
    新設。

  * w3m-form-field-id は fontifyの際に付けられ、fid,type,nameを
    "fid=0/type=checkbox/name=test" といったような文字列で、
    formの各要素(というかinput_alt)のtextに付与。

  * RADIO の選択によるほかの要素の消去は、同一グループであれば
    上記ID文字列が同一となることを利用して、バッファの頭からバッファ
    全体の w3m-font-field-id プロパティを調べて消去処理するという
    少々力技な方法をとっています。

あと、おまけの修正として

  * url encode の際、空白文字(0x20)を"+"にエンコードするようにした。

  * Title文字列中のentityがdecodeされていなかったので、するようにした。
    (http://www.namazu.org/ml/ でテストをしていた際に発覚)

です。

## おおぼけもあるかもしれないのでご注意を :-)

2001-07-11  Shun-ichi GOTO  <gotoh@taiyo.co.jp>

	* w3m-form.el (w3m-form-goto-next-field): New function.
	(w3m-form-make-form-urlencoded): Refine to support value of
	check-box type which is list of value string.
	(w3m-form-parse-region): Support CHECKBOX type and RADIO
	type. Note that CHECKBOX type has multiple values.
	(w3m-fontify-forms): Use new property 'w3m-form-field-id to
	identify each field to support RADIO type item. Also removed
	value putting code because values are already set in parsing.
	(w3m-form-input): Support action for CHECKBOX and RADIO type
	field.

	* w3m.el (w3m-url-encode-string): Encode SPACE(0x20) as "+".
	(w3m-rendering-region): Decode entities in title string.

--- Regards,
 Shun-ichi Goto  <gotoh@taiyo.co.jp>
   R&D Group, TAIYO Corp., Tokyo, JAPAN