Re:

のあんのブログ

2009年11月

外装から見てみよう。

一番改善されたのは通話・終話キーがディスプレイ面に配置されたことだろう。

SH-04Aはとにかく使いづらい。

電話がかかってきて、通話キーを押したつもりが終話キーだったなんてことが時々起こる。ごくまれなことでも、結構イラッとなる。

まぁ、普通のケータイでさ行(3)を連打したつもりが終話キーでメールを消してしまう精神的ショックよりは軽いが(今度、自動保存機能が付いたね!)、まず起こりえないことが起こってしまう造りは欠品としか言いようが無い。

数万もする欠品を買ってしまう自分が悪いんだ…きっと。


あとは、カメラ部分がフラットになったことで安定する点、QWERTYが4列になり数字キー独立、左右にShift、Fnが配置された点が高評価だ(SH-04Aでは、QWERTY状態だと数字入力にFnを必要として入力苦だ)。


次に中身。


ソフトウェアキーでひらがなと英数字が文字切り替えなくスムーズに入力できるようになった点、入力のたびにCLRキー(SH-03BではDEL)位置がずれなくなった点、スライドした状態でもタップが効くようになった点が特に進歩したと思える点だ。

ランチャがカスタマイズできるとか、あって不便はない。

相変わらずケータイShoinで賢さは期待できず。

カメラも期待しない。


ところで、あのダッサぃ AQUOS の表示はSH-03Bではどうなったの?!どーせなら、マイピクチャを設定できたり、最低、真っ黒のままでイイんですが…。


ずいぶん先の発売ですから、まだまだ改善されることを期待します。


なお、F-01B、02Bは11月20日発売です。

NewsManagerスニペットでページ分割を行うと、一ページ表示件数未満の記事件数だとSQLエラーが起こります。

原因は、for文にて(&nrpostsで指定した)表示件数必ずループ処理をするので、空データでアップデートが行われSQLエラーが発生するためです。

データが空であればfor文を抜ける処理を加える対策で解決することにします。

というか、全件取得してるようなので…offset、limitで取得するように根本修正したいところです。



NewsManager.txtの320行目辺り

修正前:
// For all articles
for ($x = $start; $x < $stop; $x++, $rownum++) {
  if ($resource[$x]['createdby'] < 0) {


修正後:
// For all articles
for ($x = $start; $x < $stop; $x++, $rownum++) {
  if(empty($resource[$x]['id'])) { break; } // この処理を追加
  if ($resource[$x]['createdby'] < 0) {


これで、1ページ10件とかにしててまだ10件に満たない場合でも、NewsManagerスニペットのpaginateが正しく動作するよーになりますデス!

かなり初歩的なエラーなのに、いまだに直されてないってゆーのはNewsManager自体があまり使われてないってことなのかな?


今日はあとウェブユーザの場合のTinyMCE画像アップのプラグイン作成(大した物じゃない)、リンクのLink Listカスタマイズとかしてました。

特に、ウェブユーザでリンクをしようとすると「一覧から選ぶ」というtreeが無くて不便だし(リンクをコピペしなきゃなのは、分かってる人間ほど不便過ぎるし、分からない人にはお手上げだ)、表示しただけでは[~123~]となってポストした後のリンクが正しくないので、ウェブユーザの場合はリソースID(/123など)または優先してエイリアス(/aboutなど)で入るようになりましたとさ。


とにかく、エンドユーザにより易しい管理ページ提供をできるよーに奮闘中!

※当初、無意識にプラグインと書いていましたが、正しくはスニペットです

人気はあるものの、日本語ドキュメントは意外に乏しいのでちょっとでも情報になればと思い、時々書くよーにします。

特に、具体例があるのが一番良いですね。

画像とか添えられたら尚良しなんですがー、結構不精なのでたぶんテキストでメモっとく程度です。


とりあえず、NewsManagerのページナビゲーションの方法。

NewsManagerはここからダウンロード。

※リンク先は、本家>extras>News>NewsManager

解凍すると"NewsManager.txt"と"NewsEditor.txt"があるので、MODx管理画面からスニペット作成、それぞれ中身をコピペして保存で準備OK。

[!NewsManager? &folder=`2` &makefolder=`1` &postid=`3` &rowtpl=`nm.row_template` &clearcache=`1` &nrposts=`5` &paginate=`1` &prv=`nm.prv` &nxt=`nm.nxt` &alwaysshow=`1`!]

とりあえずこんな感じでパラメータを指定してスニペットを呼び出すようにします。

Documentation.html、NewsManager.txtのヘッダコメントに書かれてる通りの、それぞれのパラメータ内容なんですけど、その理解、実装までが意外と長かったりするんですよね…。

なので、以下こんな意味合いとか使い方になります。


&folderは、親(コンテナ)としてのリソースを指定します。で、コンテナとして保存してあるリソースなら良いんですが、そうじゃない場合にこれを親として子リソースをポストしてしまうと不整合?(見えなくなるなど)が起こるので(管理画面で直してやればそれは解消できる)、&makefolder=`1`(この1はTRUEの意味)として、子リソースをポスト時に&folderで指定したリソースをコンテナにする、ってことになります。

&postidは、子リソースを作成した後などどこを表示するのか、その指定です。指定がなければ、そのポストした子リソースが表示されます。

&rowtplは、NewsManagerで表示する一覧(リソース一つのタイトルやshowボタン、editボタンなどの)部分テンプレートをチャンク名で指定します(テンプレだがチャンクっていう語意の紛らわしさに慣れない…)。なお、NewsManager.txtの中に元となるテンプレが書かれているので、それを参考に作れば簡単。ここでは nm.row_template という名前で作成例。

&clearcacheは、そのまま。キャッシュをクリアします。作成や編集してるのにキャッシュされてると挙動が変になるので、まぁ必須で`1`(これもTRUEの意味)です。

&nrpostsは、(一ページに)何件表示するか、その件数です。

&paginateは、上記&nrpostsでの指定件数を超えた場合のページナビゲーションの有効(同様に`1`でTRUE)です。このパラメータを指定することにより、プレースホルダーでページリストを表示できるようになります。

[+pages+]とページリストのプレースホルダーを書くことで、"123"のようなリンクが表示されます(ここでは単に数字列に見えますが、以下の記述を参考)。&paginate=`1`を指定すればページリストも表示されるように思われがちなので、プレースホルダーを記述する点がポイントです。


ちなみに、このナビゲーションだと"123 Next >"のように数字間が無いので、パイプで区切るような修正例(NewsManager.txtの287行目辺りから)。

修正前:
for ($x = 0; $x < $totalpages; $x++) {
  $inc = $x * $nrposts;
  $display = $x + 1;
  if($inc != $start) {
    $pages .= "<a class=\"nl_page\" href='[~$currentpageid~]".$char."start=$inc'>$display</a>";
  } else {
    $pages .= "<span id=\"nl_currentpage\">$display</span>";
  }
}

修正後:
$pagesArr = array();
for ($x = 0; $x < $totalpages; $x++) {
  $inc = $x * $nrposts;
  $display = $x + 1;
  if($inc != $start) {
    $pagesArr[] = "<a class=\"nl_page\" href='[~$currentpageid~]".$char."start=$inc'>$display</a>";
  } else {
    $pagesArr[] = "<span id=\"nl_currentpage\">$display</span>";
  }
}
if(empty($pagesArr)){
  $pages = '';
} else {
  $pages = implode('|',$pagesArr);
}
unset($pagesArr);

デフォルトだとただ繋げるだけなので、配列に入れて|で分割した文字列とすることで"1|2|3 Next >"のようになります。

ま、修正前の方でもリンクの後に|だけだと、"1|2|3| Next >"となってイマイチですが、$pages .= "|"; と始めに入れておくことで"|1|2|3| Next >"となって、これはこれでアリかもしれません。

配列処理するのはクドイかもですが、おこのみで。

※上の表示例は、プレースホルダーを [+pages+] [+next+] と書いた時


&prv&nxtは、"Next >"のデフォルト表示を"次へ≫"など独自のものへ置換したい時にチャンクで指定します。例では`nm.prv`としてチャンクを作成し指定しています。

&alwaysshowは、それらprevious、nextを常に表示する指定です。例えば、まだ&nrpostsで指定した件数より少なく次のページがない場合でも"Next >"は非リンクのまま表示されます。



MODxのデモでもそのうちアップできたら良いッス。

恐らく、ドキュメントが整備されてるから余計にそう感じるんだと思います。

目的の達成が最短で済みます。

今まで使わなかったことは、結構な時間コストになってました。

自分みたいなアホなプログラマには持ってこいデス!

ちゃちゃっと作って、ちゃちゃっとリリースしてしまえばいいさ!(なんて投げやりなんだー)

いや、たいしたことも出来ない割りに慎重かつミスを犯すくらいならね、ザーッと作ってバッと出してシャって直してスッって差し替えちゃえば。


近頃ケータイから離れちゃって、PC相手にJavaScriptと向き合ってますよ。

せっかくi-modeブラウザでJavascriptが利用可能になった矢先、端末を手放したから確認できないのは残念…。

避けてた道を通るのは心細いですが、Javascriptに触れられる良い機会。

ケータイのフィールドに戻ったときその楽しさを感じられるよーに、日々精進します。

MODxの管理画面をよりシンプルにすることを目的として、独自のインターフェースを実装する。

そんな業務に着手するために選んだPHPフレームワークです。

日本CodeIgniterユーザ会

今まで触れたことがないんですけど

「低い学習コストと圧倒的な速さ」

の通り気軽さが良いね。

今月は開発スピード重視で頑張ってみる。


ところで今日は、MODxのeFormスニペットでしばらくはまってた…。

&subject=`[+subject+]`

と記述されてたのだが、HTML側でinput hidden name="subject"がコメントアウトされてたっていうオチ。POSTしてもリロードされる挙動だけなので、原因の特定にしばらくを要した。

subjectパラメータが足りない!とかエラー表示してくれれば良いのにな!

エラーレポートとか確認してないので、原因特定の手段はあるのかもしれないが、今はまだ知識不足。

思うところ、結構MODxはあいまいなシステムじゃない?

しばらく付き合ってかなきゃ良さは分からないね!

↑このページのトップヘ