mobircをiphoneで使いたいので
retletさんが頑張ってAjaxモードをiPhone用にカスタマイズしてくれたのでとても使いやすくなってるmobirc
http://retlet.net/log/2008/07/mobirc-iphone.html
とりあえず簡単にできそうなAjaxモードとiPhoneモードの分離をしてみた。
今現在はAjax.pmをそのままiPhone用にいじって使っているけどどうせならiPhone.pmとか作ってそっちだけ編集したいよねってこと。
修正するファイルは以下の通り。
mobirc/lib/App/Mobirc/Web/Router.pm mobirc/lib/App/Mobirc/Web/C/Ajax.pm mobirc/lib/App/Mobirc/Web/Template/Root.pm mobirc/lib/App/Mobirc/Web/Template/Ajax.pm
mobirc/lib/App/Mobirc/Web/Router.pm
Routerの一番したにパスを追加。
+ connect 'iphone/' => { controller => 'iPhone' action => 'base' }; + connect 'iphone/:action' => { controller => 'iPhone' };
mobirc/lib/App/Mobirc/Web/C/Ajax.pmをコピーしてiPhone.pm作成
名前を変えるだけ。
1 - package App::Mobirc::Web::C::Ajax; 1 + package App::Mobirc::Web::C::iPhone; 12 - 'ajax/base' => ( 12 + 'iphone/base' => ( 26 - 'ajax/channel' => ( 26 - 'iphone/channel' => ( 51 - 'ajax/menu' => ( 51 + 'iphone/menu' => ( 63 - 'ajax/keyword' => { 63 + 'iphone/keyword' => {
TOPページにiPhoneへのリンクを追加
mobirc/lib/App/Mobirc/Web/Template/Root.pm
ul { li { a { href is '/mobile/'; 'mobile' }; }; li { a { href is '/ajax/'; 'ajax' }; }; li { a { href is '/mobile-ajax/'; 'mobile-ajax' }; }; + li { + a { href is '/iphone/'; 'iphone' }; + }; };
mobirc/lib/App/Mobirc/Web/Template/Ajax.pmコピーしてiPhone.pm
1 - package App::Mobirc::Web::Template::Ajax; 1 + package App::Mobirc::Web::Template::iPhone; 10 - template 'ajax/base' => sub { 10 + template 'iphone/base' => sub { 64 - template 'ajax/menu' => sub { 64 + template 'iphone/menu' => sub { 104 - template 'ajax/keyword' => sub { 104 + template 'iphone/keyword' => sub { 120 - template 'ajax/channel' => sub { 120 + template 'iphone/channel' => sub {
これでTOPページにiPhoneのリンクが追加されてiPhone.pmのテンプレートからよんでくれるはず。
追記:iphone.jsの修正漏れ
mobirc/assets/static/iphone.js (mobirc.jsのコピー)も名前を変えておきます。
25 - docroot + 'ajax/menu?time=' + ts(), 25 + docroot + 'iphone/menu?time=' + ts(), 29 - contents_load(docroot + 'ajax/channel?channel=' + encodeURIComponent($(this).text()), $(this).text()); 29 + contents_load(docroot + 'iphone/channel?channel=' + encodeURIComponent($(this).text()), $(this).text()); 35 - contents_load(docroot + 'ajax/keyword') 35 + contents_load(docroot + 'iphone/keyword')