XOOPS 携帯対応(WizMobile) で、ユーザ名、パスワード入力をデフォルトで半角英数にする方法
- カテゴリ :
- XOOPS
- 2008-12-19 16:59
XOOPS の携帯対応についてよくご相談をうけます。
実際に WizMobile を導入して携帯から利用してみると、細かなところで気になるところがでてきたりするものです。
そんな気になるところの一つが、ログインフォームなどでユーザ名やパスワードを入れるときに、テキスト入力フォームへの入力モードがデフォルトだと全角文字入力になってしまうことです。
できたら、最初から半角英数の入力モードになっていて欲しいですよね。
携帯での入力モードの指定ですが、デフォルトで半角英数にするときは、次のように input タグの属性を指定すると良いそうです。
なので、XOOPS のログインフォームのテンプレートをこのような形に修正してやればできそうな気がするのですが、ログインフォームのテンプレートを見ると次のようになっていて、istyle や format という属性を追加しても、出力される HTML では、この属性が削除されてしまいます。
何故かというと、 xoops_input プラグインのコードを見ると、xoops_input プラグインは特定の属性だけを HTML に出力するようになっているようで、プラグイン呼び出し時に想定外の属性をつけても無視されるようになっているからです。
istyle や format, MODE というのは想定外の属性になっちゃうんですね。
# 余談ですが、これはサンデープログラマがうっかりテンプレート上で XSS を作り込まないためにこうなってたんだと思います。
さて、そこで xoops_input プラグインをちょっといじって、指定された属性(ほんとうはプラグインに渡すパラメータですが)を全て出力するように書き換えてみました。
・ パラメータ全部出力型 function.xoops_input.php
これを XOOPS_ROOT_PATH/class/smarty/plugins/function.xoops_input.php と入れ替えても良いですし、ホダ塾ディストリビューション「HD」でしたら、XOOPS_TRUST_PATH/libs/smartyplugins/ に置いても OK です。
これで、先ほどのように istyle,format, MODE の属性を追加すれば、携帯でユーザ名やパスワードを入力しようとしたときに、デフォルトで半角英数の入力モードになります。
WizMobile をご利用の方は、是非おためしください。
実際に WizMobile を導入して携帯から利用してみると、細かなところで気になるところがでてきたりするものです。
そんな気になるところの一つが、ログインフォームなどでユーザ名やパスワードを入れるときに、テキスト入力フォームへの入力モードがデフォルトだと全角文字入力になってしまうことです。
できたら、最初から半角英数の入力モードになっていて欲しいですよね。
携帯での入力モードの指定ですが、デフォルトで半角英数にするときは、次のように input タグの属性を指定すると良いそうです。
<input type="text" name="pass" istyle="3" format="*x" MODE="alphabet" />
なので、XOOPS のログインフォームのテンプレートをこのような形に修正してやればできそうな気がするのですが、ログインフォームのテンプレートを見ると次のようになっていて、istyle や format という属性を追加しても、出力される HTML では、この属性が削除されてしまいます。
<!-- こんなふうに input タグを使わないで Smarty プラグインで input タグを出力しています -->
<{xoops_input type=password name=pass size=12 maxlength=32
id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_pass"}>
これを下記のように書き換えてもダメなんですね。 <{xoops_input type=password name=pass size=12 maxlength=32
id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_pass"
istyle="3" format="*x" MODE="alphabet"}>
何故かというと、 xoops_input プラグインのコードを見ると、xoops_input プラグインは特定の属性だけを HTML に出力するようになっているようで、プラグイン呼び出し時に想定外の属性をつけても無視されるようになっているからです。
istyle や format, MODE というのは想定外の属性になっちゃうんですね。
# 余談ですが、これはサンデープログラマがうっかりテンプレート上で XSS を作り込まないためにこうなってたんだと思います。
さて、そこで xoops_input プラグインをちょっといじって、指定された属性(ほんとうはプラグインに渡すパラメータですが)を全て出力するように書き換えてみました。
・ パラメータ全部出力型 function.xoops_input.php
これを XOOPS_ROOT_PATH/class/smarty/plugins/function.xoops_input.php と入れ替えても良いですし、ホダ塾ディストリビューション「HD」でしたら、XOOPS_TRUST_PATH/libs/smartyplugins/ に置いても OK です。
これで、先ほどのように istyle,format, MODE の属性を追加すれば、携帯でユーザ名やパスワードを入力しようとしたときに、デフォルトで半角英数の入力モードになります。
WizMobile をご利用の方は、是非おためしください。
同一カテゴリ( XOOPS )の最新記事
- 第9回XOOPS Cubeサタデーラボは「あなたのXOOPS Cubeサイトの課題解決します」(2010-08-23)
- ブロック管理を表示モジュールでフィルタリングしてみた(2010-08-19)
- 地図ページをつくろう(2010-08-06)
- PHPカスタムブロックの超!賢い作り方(2010-07-20)
- XOOPSのブロックの位置をJavaScriptで弄れるようにする(未完成)(2010-07-19)
- HD1.04を使って、XOOPSバージョンアップ(2010-07-12)
- データベースへの持続的接続を有効にしている場合の不具合(2010-07-02)
- iphoneテーマをxoops2.0系でも動くように作ってみました!(2010-06-28)
- 次回XOOPS Cubeサタデーラボは7月24日(土曜)に開催予定(2010-06-27)
- XOOPSサイトをJavaScriptでプチカスタマイズ(2010-06-17)
トラックバック
トラックバックpingアドレス http://ryus.co.jp/modules/d3blog/tb.php/318
コメント
コメントの投稿
| 投稿者 | スレッド |
|---|---|
| gusagi |
投稿日時: 2008-12-20 23:12 更新日時: 2008-12-24 18:47
|
|
半人前
登録日: 2007-10-16
居住地:
投稿数: 37
|
一応、追記です^^;
0.32(12/20時点で最新)以降は、<{wizin_inputmode mode="alpha"}>と記載することで、3キャリア別の初期入力モード指定タグを埋め込むようにしてみました。 -------------------- 半角英数字:alpha 半角数字:number 全角漢字:kanji -------------------- 上記の3パターンの初期入力モードが指定可能となっています。 ただ、xoops_inputと組み合わせた場合や、初期入力モード以外の属性指定を考えると、Ryujiが記事内で書いたパラメータ全出力型xoops_inputは、非常に面白いものだと思います。 もし宜しければ、一度お試しいただければ幸いです ![]() |
|
|
| 投稿者 | スレッド |
|---|---|
| ゲスト |
投稿日時: 2009-5-24 4:20 更新日時: 2009-5-24 4:20
|
|
どちらに報告してよいのかわからないので、こちらに投稿させてもらいます。
「パラメータ全部出力型 function.xoops_input.php」 こちらのブログで紹介されている上記pluginsを利用するとnameパラメータが2回表示されてしまいます。 $unset_keyに'name'が含まれていないのが原因のようです。 実は「パラメータ全部+wizwin_inputmode」ができないか検証していて気がつきました ![]() 「パラメータ全部+wizwin_inputmode function.xoops_input.php」 wizwin_inputmodeのmode指定をxoops_inputでwizmode指定することで利用できるようにしてみました ![]() |
|
|
|















