スタッフブログ
satoです。
PHP5.3がリリースされて2ヶ月少々経ちますが、XOOPS CubeのPHP5.3対応はどうなっているのでしょうか。
少し調べてみました。
素のXOOPS Cubeをダウンロードして、PHP5.3環境で実行してみます。
と出ています。
Deprecatedというのは「非推奨」という意味で、つまりその関数は今後どうなるかわかんないしセキュリティとかそういう方面でもあまり良くないので(いろいろなケースがありますが)使うな、ということです。
とは言っても消すのは大変なので、php.iniで
とすると消えてくれます。
インストールを進めていき、設定の保存(mainfile.phpに書き込むところ)の次の画面で、以下のようになってしまいました。
2つエラーが出ていますが、最初のWarningのせいでFatalが出てそうな感じです。
XCube_Root.class.phpを見てみます。
として、settings/site_default.ini.phpを読み込もうとしているようですが、site_default.ini.phpは、以下のようになっています。
どうやら、parse_ini_fileの仕様が変わって、iniの書式として不正なものは容赦なくエラーになるように変更されたようです。
zend_ini_parser.yのdiffを取ってみたのですが、長そうなので見るのはやめておきました。
site_default.ini.phpがiniファイルであるにも関わらずphpにしているのは、外部から直接叩かれたときに見られないようにするためだと思いますが、この方法は5.3では使えないことがわかります。
このままでは進まないので、site_default.ini.phpを以下のようにします。
これでsite_default.ini.phpを直接叩くとparse errorになりますが、中身は表示されませんし、普通に次に進むことは可能です。
書き方をもう少し工夫すれば直接叩いても大丈夫になります。
これ以外はインストールは問題なく通りました。
次に初期のモジュールの追加画面で、変なエラーが出ています。
該当行を見てみましょう。
どうやら、newの時に&を付けるのが駄目になったようです。
PHP5になった時点で既に意味がなくなっていたものなので、deprecatedと表示するのは間違っていないと思いますが、E_DEPRECATEDで消せないのは腑に落ちないです。とりあえず無視します。
インストールが完了して、installフォルダを取り除くと、以下のような画面になりました。
最後のほうのiniのエラーが問題な気がするので、全てのthemeのmanifesto.ini.phpを先ほどの要領で1=を付けると
ここまでは出るようになりました。
iniの読み込み処理側に手を加えたほうが楽そうです。
とりあえず今回はここまでにします。
PHP5.3がリリースされて2ヶ月少々経ちますが、XOOPS CubeのPHP5.3対応はどうなっているのでしょうか。
少し調べてみました。
素のXOOPS Cubeをダウンロードして、PHP5.3環境で実行してみます。
Deprecated: Function set_magic_quotes_runtime() is deprecated in /path/to/xcl/html/install/class/textsanitizer.php on line 32
Deprecatedというのは「非推奨」という意味で、つまりその関数は今後どうなるかわかんないしセキュリティとかそういう方面でもあまり良くないので(いろいろなケースがありますが)使うな、ということです。
とは言っても消すのは大変なので、php.iniで
error_reporting = E_ALL & ~E_DEPRECATED
インストールを進めていき、設定の保存(mainfile.phpに書き込むところ)の次の画面で、以下のようになってしまいました。
Warning: syntax error, unexpected '<' in /path/to/xcl/html/settings/site_default.ini.php on line 1 in /path/to/xcl/html/core/XCube_Root.class.php on line 163 Fatal error: Call to a member function prepare() on a non-object in /path/to/xcl/html/core/XCube_Root.class.php on line 287
XCube_Root.class.phpを見てみます。
$this->setSiteConfig(parse_ini_file($file, true));
<?php
/**
[Cube]
Root=XOOPS_ROOT_PATH
Controller=Legacy_Controller
#SystemModules=system,legacy,user,legacyRender
SystemModules=legacy,user,legacyRender,stdCache
RecommendedModules=pm
RoleManager=Legacy_RoleManager
Salt=XOOPS_SALT
...
zend_ini_parser.yのdiffを取ってみたのですが、長そうなので見るのはやめておきました。
site_default.ini.phpがiniファイルであるにも関わらずphpにしているのは、外部から直接叩かれたときに見られないようにするためだと思いますが、この方法は5.3では使えないことがわかります。
このままでは進まないので、site_default.ini.phpを以下のようにします。
1=<?php
1=/**
(中略)
1=*/
1=?>
書き方をもう少し工夫すれば直接叩いても大丈夫になります。
これ以外はインストールは問題なく通りました。
次に初期のモジュールの追加画面で、変なエラーが出ています。
Unknown Condition [8192]: Assigning the return value of new by reference is deprecated in file kernel/member.php line 79
Unknown Condition [8192]: Assigning the return value of new by reference is deprecated in file kernel/member.php line 80
Unknown Condition [8192]: Assigning the return value of new by reference is deprecated in file kernel/member.php line 81
...
function XoopsMemberHandler(&$db)
{
$this->_gHandler =& new XoopsGroupHandler($db);
$this->_uHandler =& new XoopsUserHandler($db);
$this->_mHandler =& new XoopsMembershipHandler($db);
}
PHP5になった時点で既に意味がなくなっていたものなので、deprecatedと表示するのは間違っていないと思いますが、E_DEPRECATEDで消せないのは腑に落ちないです。とりあえず無視します。
インストールが完了して、installフォルダを取り除くと、以下のような画面になりました。
最後のほうのiniのエラーが問題な気がするので、全てのthemeのmanifesto.ini.phpを先ほどの要領で1=を付けると
ここまでは出るようになりました。
iniの読み込み処理側に手を加えたほうが楽そうです。
とりあえず今回はここまでにします。
先日行われた第2回CMSビズで、15分ほどイントラでのCMS活用ということでお話をさせてもらいました。
・第2回CMSビズの様子
そのときに、当社の数字として二つの数字を出させてもらいました。
数字その1) 95
この数字は、当社の売上げに占める、XOOPS率です。売上げの95%がXOOPSを利用した案件になっています。
数字その2) 90
この数字は、上記案件のうち、社内向け、部署内向けなどの特定少数向けサイトが約90%になります。
この多数の案件を振り返ってみたときに、どんなパターンで構築したか、どんなケースがあったかなどをお話させてもらいました。
中核機能は新規開発がおおい
多いケースとしては、中核となる情報管理のモジュールは、新規開発して、他のよくありがちな部分(全体へのお知らせや、ファイルのダウンロードなど)は、既存モジュールを利用するというケースです。
最初から、新規開発と既存モジュールの組み合わせでサイトを構築するケースもあれば、最初は中核機能のみでスタートして、後日既存モジュールでサイトの機能をいくつか補完するというパターンもあります。
現場主導での導入が多い
システム開発無しで、現場で利用したい方が自力で導入されてるケースが多いというのもXOOPSの特徴です。
こういうサイトに対して新規モジュール開発や、カスタマイズのご依頼をいただくケースも多いです。
オープンソース関連のイベントなどで、皆さんのお話を聞くと、こういう現場主導で導入されたXOOPSはホント多いですよね。
・第2回CMSビズの様子
そのときに、当社の数字として二つの数字を出させてもらいました。
数字その1) 95
この数字は、当社の売上げに占める、XOOPS率です。売上げの95%がXOOPSを利用した案件になっています。
数字その2) 90
この数字は、上記案件のうち、社内向け、部署内向けなどの特定少数向けサイトが約90%になります。
この多数の案件を振り返ってみたときに、どんなパターンで構築したか、どんなケースがあったかなどをお話させてもらいました。
中核機能は新規開発がおおい
多いケースとしては、中核となる情報管理のモジュールは、新規開発して、他のよくありがちな部分(全体へのお知らせや、ファイルのダウンロードなど)は、既存モジュールを利用するというケースです。
最初から、新規開発と既存モジュールの組み合わせでサイトを構築するケースもあれば、最初は中核機能のみでスタートして、後日既存モジュールでサイトの機能をいくつか補完するというパターンもあります。
現場主導での導入が多い
システム開発無しで、現場で利用したい方が自力で導入されてるケースが多いというのもXOOPSの特徴です。
こういうサイトに対して新規モジュール開発や、カスタマイズのご依頼をいただくケースも多いです。
オープンソース関連のイベントなどで、皆さんのお話を聞くと、こういう現場主導で導入されたXOOPSはホント多いですよね。
有楽町の東京国際フォーラムで開催中のオープンソースワールド2009に参加してきました。
オープンソースワールドは昨年まで開催されていたLinuxワールドがリニューアルされたイベントです。
今回私とmikはOSSコンソーシアムのブースにて、いろんなオープンソースCMSをインストール不要ですぐためせる WARP CD-R を皆様にお配りしてきました。
・WARP
今回お配りしている WARP には、XOOPS Cubeで構築した社内ポータルサンプル XOOPS Cube for Corporate、サンプルコンテンツ&デザインカスタマイズ済みの NetCommons、デザイン自由度の高い軽量CMSである MODx、BLOGの定番となりつつある WordPress、エンタープライズ向けCMSの eZ Publish がインストール済みの状態でパッケージしてあります。
オープンソースワールドは明日(7月2日)も開催されますので、是非OSSコンソーシアムのブースで、このWARP CD-Rを手に入れてください!
明日もRYUSからは私、天野龍司と うさでき&うさ通でおなじみの mik がOSSコンソーシアムのブースに立つ予定です。
オープンソースワールドは昨年まで開催されていたLinuxワールドがリニューアルされたイベントです。
今回私とmikはOSSコンソーシアムのブースにて、いろんなオープンソースCMSをインストール不要ですぐためせる WARP CD-R を皆様にお配りしてきました。
・WARP
今回お配りしている WARP には、XOOPS Cubeで構築した社内ポータルサンプル XOOPS Cube for Corporate、サンプルコンテンツ&デザインカスタマイズ済みの NetCommons、デザイン自由度の高い軽量CMSである MODx、BLOGの定番となりつつある WordPress、エンタープライズ向けCMSの eZ Publish がインストール済みの状態でパッケージしてあります。
オープンソースワールドは明日(7月2日)も開催されますので、是非OSSコンソーシアムのブースで、このWARP CD-Rを手に入れてください!
明日もRYUSからは私、天野龍司と うさでき&うさ通でおなじみの mik がOSSコンソーシアムのブースに立つ予定です。
当社 mik がすでにスタッフブログに書いていますが、XOOPS Cube Legacy 2.2開発にかかわっている gigamasterさんとお会いする機会がありました。
このせっかくの機会なのに英語がほとんどわからない私としては、時々聞き取れる単語(といっても"fckeditor"とか、"block"とかがメインですが)から非常に興味深い話をしてる感じはつかめるものの、話の詳細がわからず、伝えたいことがあっても話せずという状態で、かなりもどかしい感じでした。
こういう滅多にないチャンスが訪れたときに、英語がわからないために話に参加できないというのは、非常にもったいないので、何度も挫折している英語勉強を再開することにしました。
さて、それで現在やっているのは smart.fm(旧iKnow)です。
・smart.fm
短時間で少しずつ、レベルにあわせて学習できますので「全然わかんない!」って挫折する可能性が低いです。
私は何度か中断してますが、それでもまたやってみようと思える学習サイトです。無料で利用できますので、気楽にやってみてはどうでしょうか?
さて、もうひとつもうちょっと英語力ついたら試してみようかなぁと思っているオンライン英語学習が、skype による英会話レッスンです。
・オンライン英会話のe-com英語ネット
こちらは有料のサービスですが、skypeを利用して自宅で英会話レッスンが可能なサービスです。
オンラインでレッスンできるので、英会話教室へ通う手間もないですし、深夜や早朝のレッスンも可能なようです。
というわけで、オンラインで利用可能な英語学習サービス2点のご紹介でした。
このせっかくの機会なのに英語がほとんどわからない私としては、時々聞き取れる単語(といっても"fckeditor"とか、"block"とかがメインですが)から非常に興味深い話をしてる感じはつかめるものの、話の詳細がわからず、伝えたいことがあっても話せずという状態で、かなりもどかしい感じでした。
こういう滅多にないチャンスが訪れたときに、英語がわからないために話に参加できないというのは、非常にもったいないので、何度も挫折している英語勉強を再開することにしました。
さて、それで現在やっているのは smart.fm(旧iKnow)です。
・smart.fm
短時間で少しずつ、レベルにあわせて学習できますので「全然わかんない!」って挫折する可能性が低いです。
私は何度か中断してますが、それでもまたやってみようと思える学習サイトです。無料で利用できますので、気楽にやってみてはどうでしょうか?
さて、もうひとつもうちょっと英語力ついたら試してみようかなぁと思っているオンライン英語学習が、skype による英会話レッスンです。
・オンライン英会話のe-com英語ネット
こちらは有料のサービスですが、skypeを利用して自宅で英会話レッスンが可能なサービスです。
オンラインでレッスンできるので、英会話教室へ通う手間もないですし、深夜や早朝のレッスンも可能なようです。
というわけで、オンラインで利用可能な英語学習サービス2点のご紹介でした。
メルマガにも書く予定なのですが、XOOPS Cube2.2のメイン開発者(でいいんでしょうか?)として名高いgigamasterさんが来日し、お会いしてきました。
会う前のイメージは
・秋葉原の辺りにいっぱいいるオタク系外人
・太ってるもしくはやせてる
・怖い人かも?
というものでした。gigamasterさんの名前はよく聞いてはいたもののどのような方かは全く知りませんでした。
しかし、、、弊社社長は「日本一かっこいいxoopser」を自称しているのですが、そんなこと言ってるのが全く申し訳ないほどのイケメン!です。
しかも、私のつたない英語も一生懸命聞いてくれてわかりやすい英語で話してくれたので一応会話は少々成立しました。
XOOPSとJoomlaやDrupalとの比較。いかにして顧客にXOOPS Cubeの優位性を認めてもらうかなどということについてホワイトボードを利用して熱く語ってくれました。
また、お酒の席ではお住まいのスイスの兵役や日本に対してスイスの方々がどんなことを思ってるかなどということも語ってくれてリアルならではの面白い話が聞けました。
おみやげのチョコレートです。
会う前のイメージは
・秋葉原の辺りにいっぱいいるオタク系外人
・太ってるもしくはやせてる
・怖い人かも?
というものでした。gigamasterさんの名前はよく聞いてはいたもののどのような方かは全く知りませんでした。
しかし、、、弊社社長は「日本一かっこいいxoopser」を自称しているのですが、そんなこと言ってるのが全く申し訳ないほどのイケメン!です。
しかも、私のつたない英語も一生懸命聞いてくれてわかりやすい英語で話してくれたので一応会話は少々成立しました。
XOOPSとJoomlaやDrupalとの比較。いかにして顧客にXOOPS Cubeの優位性を認めてもらうかなどということについてホワイトボードを利用して熱く語ってくれました。
また、お酒の席ではお住まいのスイスの兵役や日本に対してスイスの方々がどんなことを思ってるかなどということも語ってくれてリアルならではの面白い話が聞けました。
おみやげのチョコレートです。
社内ポータルや部署内サイトとしてXOOPSを利用されてる会社さんは多いと思います。
そんな社内サイトで情報共有するときにおすすめなフォーラムの使い方を紹介します。
それは失敗体験を書き出すだけの専用フォーラムをつくることです。
失敗体験専用のフォーラムは、製造業のヒヤリハットみたいなものになります。
事故とか大ごとにはならなかったけど、ウッカリやってしまったミスとか、思わずはまってしまったことなどをどんどん書き出します。
成功事例は同じ仕事をしていても、自分には適用できないところがあったり、投稿しようとおもっても「こうやったらうまくいきました」というのを投稿するのは、自慢ぽくて抵抗がある人もいます。
それが失敗体験となると、大ごとでない限り「ウッカリやっちゃいましたー」という軽いのりで書けます。
もちろんそれを見た上司が「お前、何やっとるんじゃ!」って怒ったりしないのが前提ですけどね。
ちなみに最近私が投稿した失敗は、次のようなウッカリミスです(^^;
引用:
こんな小さなミスでも良いので日頃から書き出していくと社員(や部署)全体で役に立つと思います。
そんな社内サイトで情報共有するときにおすすめなフォーラムの使い方を紹介します。
それは失敗体験を書き出すだけの専用フォーラムをつくることです。
失敗体験専用のフォーラムは、製造業のヒヤリハットみたいなものになります。
事故とか大ごとにはならなかったけど、ウッカリやってしまったミスとか、思わずはまってしまったことなどをどんどん書き出します。
成功事例は同じ仕事をしていても、自分には適用できないところがあったり、投稿しようとおもっても「こうやったらうまくいきました」というのを投稿するのは、自慢ぽくて抵抗がある人もいます。
それが失敗体験となると、大ごとでない限り「ウッカリやっちゃいましたー」という軽いのりで書けます。
もちろんそれを見た上司が「お前、何やっとるんじゃ!」って怒ったりしないのが前提ですけどね。
ちなみに最近私が投稿した失敗は、次のようなウッカリミスです(^^;
引用:
■発送時の同封忘れ
A社に請求書を送るときに、A社指定の納品書を同封しわすれたまま切手をはってしまった。
業務時間が終わってから、その日のうちに発送しなきゃいけなかったことを思い出し、あわてて請求書を印刷。プリンタに裏紙がはいっていて、あわてて印刷しなおし、請求書がプリントアウトされると同時に社印をついて封筒にいれてしまった。
前段階で発送物をまとめていたにもかかわらず、席にもどらずにプリンタのところで作業してしまったのが敗因。
あわてて作業するとろくなことがないので、手順を書き出して、着実にワンステップずつ実行すればよかったなと思ってます。
こんな小さなミスでも良いので日頃から書き出していくと社員(や部署)全体で役に立つと思います。
先週にまた一つ年齢が上がったせいか、週の前半からバテ気味のgusagiです
さて、こちらでminahitoさんが書いていますが、近いうちにXCL2.1.7が出るようです。
前述のフォーラム内、minahitoさんの投稿から引用:
バグFIXなどが中心のマイナーアップデートで、HD1.0.3で適用されたパッチなども取り込まれる予定です。
今のところ月内にはRC版がリリースされるようですので、興味と余力のある方は、2.1.7RCがリリースされたらテストに参加してみては如何でしょうか?
また、XCL2.2の開発も、gigamasterさんとkilicaさん中心で着実に進んでいるようです。
こちらについても、XCL2.2 Profileモジュールのプロトタイプが先日公開されています。
こちらは、まだ公開サーバに導入するのは難しいようですが、今のうちにXCL2.2の雰囲気を味わってみたい方は試してみるのも良いかも知れませんね
さて、こちらでminahitoさんが書いていますが、近いうちにXCL2.1.7が出るようです。
前述のフォーラム内、minahitoさんの投稿から引用:
今後は 2.1.x 系で可能なフィーチャーリクエストの消化と、新しいデリゲートの導入、 v2.2.0 レベルのコンフィグレーション解釈の適用(デリゲートマネージャなども選択可能)を行い、 3/14 〜 3/15 あたりに RC アーカイブを作成する予定です。
バグFIXなどが中心のマイナーアップデートで、HD1.0.3で適用されたパッチなども取り込まれる予定です。
今のところ月内にはRC版がリリースされるようですので、興味と余力のある方は、2.1.7RCがリリースされたらテストに参加してみては如何でしょうか?
また、XCL2.2の開発も、gigamasterさんとkilicaさん中心で着実に進んでいるようです。
こちらについても、XCL2.2 Profileモジュールのプロトタイプが先日公開されています。
こちらは、まだ公開サーバに導入するのは難しいようですが、今のうちにXCL2.2の雰囲気を味わってみたい方は試してみるのも良いかも知れませんね
今日は本日未明にアップロードされたHD-1.0.3RCについて書いてみようと思います。
http://www.xugj.org/modules/bulletin/index.php?page=article&storyid=134
引用:
大きな変更としては、去年の11月にリリースされたXOOPS本体のバージョンがXCL-2.1.6になった点です。その他にも細々とした修正がなされています。
HDではXCL本体と同じくリリース候補版であるRC版(Release Candidate version = リリース候補版)をまず公開して、それをテストして、そのテストからのフィードバックを修正していき、本番のリリース版を仕上げていく流れになります。
ですので、テストの過程が重要になります。
XAMPPやMAMPなどのローカルでテストできる環境を構築してのテストも良いと思います。
最新版のHDに興味がある方、現在XOOPSをHDで運用している方は是非チェックしてテストして見るとことをお勧めします。
http://www.xugj.org/modules/bulletin/index.php?page=article&storyid=134
引用:
"HD1.0 for XCL2.1" のマイナーアップデートである HD-1.0.3 のリリース候補版が公開されました。
このパッケージでは、XCL-2.1.6ベースとなっています。
今回は、モジュールの「追加」はほとんどありませんが、以前に収録されていたモジュールの機能的な意味で重要な「更新」が数多く含まれています。
大きな変更としては、去年の11月にリリースされたXOOPS本体のバージョンがXCL-2.1.6になった点です。その他にも細々とした修正がなされています。
HDではXCL本体と同じくリリース候補版であるRC版(Release Candidate version = リリース候補版)をまず公開して、それをテストして、そのテストからのフィードバックを修正していき、本番のリリース版を仕上げていく流れになります。
ですので、テストの過程が重要になります。
XAMPPやMAMPなどのローカルでテストできる環境を構築してのテストも良いと思います。
最新版のHDに興味がある方、現在XOOPSをHDで運用している方は是非チェックしてテストして見るとことをお勧めします。
HD1.0.3のリリース準備やら、OSC2009 Tokyo/Springの準備やらで、オーバーフロー気味なgusagiです
(来週のセミナーの準備をしている弊社のRyujiやhaltの方がもっと忙しいと思いますが^^;)
さて、今日のタイトルですが、何を今更と思われる方も多いかも知れません。
実は、今日の終業後、弊社のなおとやargonと携帯モジュールにこれから必要な機能って何だろう、という話をしていました。
その際に、「確かに、それは必要かも」という機能から「それって、自分としては使わないんだけど、本当に必要?」と思う機能まで、色々とアイデアを貰ったのですが、その際にふと思ったことが「自分がサービスを作る立場だったら、どんな機能が欲しいか」というものでした。
実は、RYUSに入社する前後から、あるサービスのアイデアをプライベートで練っていたりするのですが、その開発にXOOPS CubeとWizMobileの組み合わせを用いてみようと思っていたりします。
サービスを自分で作って運用してみることで、開発者としての目線だけでは思いつくことが出来ないアイデアが浮かべば、と期待していたりします。
もちろん、そこで開発した機能はWizMobileにも反映させて行くつもりですが、「それだったら、こんなサービス作れるの?」などといった関心のある方は、機会がありましたら声をおかけ下さい
(来週のセミナーの準備をしている弊社のRyujiやhaltの方がもっと忙しいと思いますが^^;)
さて、今日のタイトルですが、何を今更と思われる方も多いかも知れません。
実は、今日の終業後、弊社のなおとやargonと携帯モジュールにこれから必要な機能って何だろう、という話をしていました。
その際に、「確かに、それは必要かも」という機能から「それって、自分としては使わないんだけど、本当に必要?」と思う機能まで、色々とアイデアを貰ったのですが、その際にふと思ったことが「自分がサービスを作る立場だったら、どんな機能が欲しいか」というものでした。
実は、RYUSに入社する前後から、あるサービスのアイデアをプライベートで練っていたりするのですが、その開発にXOOPS CubeとWizMobileの組み合わせを用いてみようと思っていたりします。
サービスを自分で作って運用してみることで、開発者としての目線だけでは思いつくことが出来ないアイデアが浮かべば、と期待していたりします。
もちろん、そこで開発した機能はWizMobileにも反映させて行くつもりですが、「それだったら、こんなサービス作れるの?」などといった関心のある方は、機会がありましたら声をおかけ下さい
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 をご利用の方は、是非おためしください。