MODx Evolution 1.0.4 日本語版Revision4をリリースしました
2010年11月20日 18時06分 shortlink:http://modx.jp/?id=257
毎月定例の日本語版のリビジョンアップを1.0.4J-r4としてリリースします。今回のアップデートは、デバッグを効率よく行なうために必要なエラー情報の詳細化・管理メンバーのアクティビティ情報の出力・ダッシュボード領域の整理などが主な内容です。また、同梱のAjaxSearchとQuickManagerをバージョンアップしています。
AjaxSearchはセキュリティ面が強化されており、AjaxSearchを利用しているユーザにとっては重要なアップデートとなっています。outputパラメータの追加によりレイアウト上の自由度も向上しており(1.8系まではAjaxモードでは検索窓の直下にしか検索結果を出力できなかった)、サイト内検索をインスタントに実装してみたい人にもおすすめできます。また、日本語ファイルの翻訳も全面的に見直したので、サイト内検索を違和感なく実装できます。
ヘルプはWebサイト構築業者やデザイナーを意識したTipsや、簡単なプログラミングテクニックなどを追記しました。
■MODx Evolution 1.0.4 日本語版 Revision4 ダウンロード
http://code.google.com/p/modx-ja/downloads/detail?name=modx-1.0.4J-r4.zip
0.9.6.3以前からアップデートする場合はQuickEditプラグインとBottom Button Barプラグインが不要になりますので、使わない場合は削除してください。
今回から「コアのみのアップデータ」は配布しません。上記のアーカイブからmanagerフォルダだけを取り出して上書きし、グローバル設定を空更新するだけでコアのアップデートを手軽に行なうことができます。この場合はデータベースの書き換えも行ないません。
変更内容
- Wayfinderの &rowTplパラメータ指定で使えるプレースホルダーとして[+wf.alias+]を追加
- ダッシュボードのタブ構成を整理
- 「ユーザー管理」のユーザ一覧の表示順を調整
- モジュールの並び順を直近の更新順に
- ログイン画面スタイル調整(パスワード忘れの際の手続き請求フォームなど)
- インストーラ用テンプレート変数のダミーデータを同梱
- リソースブラウザと特定バージョンのTinyMCEプラグインとの相性問題
- 「前回のログイン日時」が1970年1月1日になる問題を修正
- ダッシュボードの「MODxへようこそ」の文言を整理(2回繰り返す必要はない)
- 「サイトのインポート」でインポート先リソースのIDがゼロ以外の時は「サイトツリーをリセット」をチェックできないようにする
- サイトをインポートする時のエイリアス重複判定を修正
- インポート機能まわりのソースの記述を整理
- サイトのインポート時、createdonとeditedonをファイルのタイムスタンプに合わせる
- ダッシュボードのヘルプアイコンを変更
- htmlファイルをまるごとインポートする時、取得したタイトルを[*pagetitle*]に置き換える
- テンプレート変数をインストーラで自動インストールする時、複数のテンプレートに関連付けられない不具合を修正
- MagpieRSSライブラリのエンコード指定を管理画面言語ファイルからrss_fetch.incに移動
- ダッシュボードのアクティブユーザ一覧表示を修正。自分一人しか利用しない場合は何も表示しない
- DocManagerの「メニュー整列」を改善
- 管理画面のユーザ一覧に最終ログイン日時を表示
- ダッシュボードの「最近のリソース」の出力を詳細に改善
- 管理操作ログのアクションがリソースの編集・閲覧だった場合の改善
- ダッシュボードのメッセージ通知を修正
- アイテム属性を持たない管理操作ログの出力不具合を修正
- ダッシュボードの「ヘルプ」の制御をwelcome.static.phpに移動
- 本家版1.0.5候補の最新コードをマージ(commit:6ef9348733452074e882まで。ホワイトスペースのサニタイズ関連の修正が多い)
- アップデート時にインストーラのソースを通じてデータベースのパスワードを閲覧できる問題を修正
- モジュールを作成・編集した時にcreatedon・editedonが記録されないため修正
- モジュール編集画面でアイコンをファイルブラウザから貼り付けた時にパスがずれるため修正
- AjaxSearchの外部JS読み込みのパスが相対パスのため一部のクローラーによって404エラーが出る件を修正
- モジュール編集画面の外部ファイル連携機能は実際には使えない空仕様のため画面から隠す
- ダッシュボードにモジュール一覧をアイコン表示できる隠し機能を追加
- モジュール・スニペットの編集画面のプロパティ設定を一行inputからtextareaに変更
- モジュール一覧画面で、ロックがかかっているモジュールを「Yes」で表示しているのを$_lang['yes']に修正
- textareaのフォントをmonospaceに統一
- インストーラのオプション選択画面の「インストール」ボタンを「次へ」に修正
- AjaxSearchの翻訳を全面的に改善(検索語→キーワードなど)
- ajaxSearch/configs/default.config.php デフォルト設定を修正(日付の書式など)
- スニペットやプラグインの編集画面の「行の折り返し」を修正
- tinyMCE - 投稿画面CSSのセレクタ指定・important指定を全て削除
- AjaxSearch - 検索文字数の最小値の解釈を、日本語なら1文字でも検索できるように暫定的に変更
- ユーザ情報編集画面のテキストフィールドの横幅が狭いため修正
- ユーザ一覧のヘッダ行が折り返されて見づらいため修正
- サンプルコンテンツのAjaxSearchスニペットコールを修正
- QuickManager・ManagerManagerをjquery1.4.2対応
- DocManagerの「リソースの各種設定」のラベルのクリック時に選択されないため修正
- QuickManagerを1.5.3にアップデート
- イベントログのエラー出力を詳細化
- ManagerManagerのmm_widget_showimagetvsルールと@inheritコマンドの相性がよくないため修正
- AjaxSearchを1.9.1にアップデート
- file関数でキャッシュを読み込んでいたのをfile_get_contents関数に変更
- php5のDeprecatedエラーのトラッキングを抑制
デモサイト
http://demo.modx.jp/manager/
ログイン名・パスワードをセット済み。そのままログインボタンをクリックしてください。
不具合報告・改善要望について
アップデートの手順
https://modx.jp/docs/update.html
上記をご覧ください。
次回リリースについて
次回のリビジョンアップは12月初旬を予定しています。
スクリーンショット
▲Parse Error出力の例。document.parser.class.inc.phpの771行目のeval関数が実行しているコード・・・の2行目でtrim関数が単純なコーディングミスによるエラーを起こしていることが分かりますが、このエラーの内容では、MODx本体側のコードに問題があるのか、スニペットやプラグインに問題があるのかが分かりません。MODxの扱いに慣れている人であれば、771行目のevalエラーといえばスニペットの問題であることがピンときますが、それでもスニペット名までは分かりません。
▲今回はこのようにエラートラッキングを改善しました。スニペット名・エラーを起こしたページのURL・クライアントが持っているリファラ情報とUA情報・リソースIDなどを取得できます。プラグインのエラーも同様にトラッキングできます。
▲逆に、一般の訪問者にはエラー情報をほとんど見せないことにしました。MODxのエラーであることすら分かりません。
▲「Assigning the return value of new by reference is deprecated」という警告が上記のように大量に蓄積されていることがあります。主にphp5.3系環境でWordPressIntegratorを導入しているケースで見られるもので、特に問題があるわけではありませんが、このログの蓄積自体が非常に多く運用上支障をきたすことがあります。もともとMODxはDeprecated警告を無視する仕様になっているのですが、これが期待どおりに動いてなかったため修正しました。
▲ManagerManagerでmm_widget_showimagetvsルールを用いる時、@inheritコマンドが記述されていると、投稿画面を開くたびにサーバのエラーログに404エラーが蓄積されます。@inheritコマンドが記述されている場合はこれを画像と判断しないよう分岐を加えました。
▲DocManagerの「メニューを整列」は上記のようになっていますが、「メニューに表示しない」リソースも同じようにリストアップされているため、メニューを整列させるという肝心の作業がしづらいです。
▲上記のように、メニューに表示されるリソースのみを太字で表示し、他は目立たないようにしました。さらに、非公開のリソースは背景を薄い黄色で出力します。
▲ナビゲーションがすっきりと整列できたことを目視で確認できます。
▲コード編集画面の見た目に関する改善。現状は上記のように、インデントや空白による位置揃えが配慮されず見づらく感じます。
▲monospaceフォントで表示するようにしたので、揃えるところが揃って見た目に分かりやすくなりました。シングルクォーテーションも見やすくなっています。
▲初回のログインに限って「前回のログイン日時」が1970年で表示される問題。二度目のログインで直りますし実害はありませんが、初めてMODxを使うぞという時に「40年ぶり?」と言われると不安を感じます。小さな問題ですが修正しました。
▲隠し機能ですが、ダッシュボードにモジュールの一覧を表示できるようにしました。
▲/assets/templates/manager/welcome.html をテキストエディタで開いて、上記のようにModulesプレースホルダーを記述すると、そこにモジュール一覧を出力します。デフォルトではコメントアウトしてあり、MODx慣れしている人ならそのへんを見ればなんとなく分かると思います。
▲挿入ボタンをクリックしてファイルブラウザからアイコン画像を任意に指定した場合は相対パスになりますが、そのままだとパス違いでアイコンが表示されません。相対パスの場合はとりあえずパスを補うようにしました。モジュールというシステムの性格上、あまりスマートな解決ではありませんが、本家開発チームが仕様検討を保留している現状ではこうするのがベターです。
▲アイコン画像のサイズは32x32pxを推奨。Crystal Clearアイコン集などがおすすめです。
▲ダッシュボードの「最近編集・作成されたリソース」は、編集日時が分からないため実用性に欠けます。着信時刻が分からない着信履歴のようです。誰が編集したのかも分かりません。
▲編集日時を出力するよう改善しました。コードを見る限り、ここは自分が編集したリソースのみを対象としていることが分かったため文言も少し修正しました。
▲ユーザ一覧画面。単純にアカウント名の順に並べているだけで、各メンバーのアクティビティまでは分かりません。
▲直近にログインした順に並べるよう改善しました。一度もログインしていないメンバーのログイン時刻は「 - 」として表示します。また、アカウント休止設定にしているメンバーは末尾にまとめて表示します。上記の例のように数人程度ならあまり不便はありませんが、数十人以上が運用に関わるケースでは役立ちます。さぼっている人アクティビティの低いメンバーに声をかけるなどして、サイト更新の活性化につなげるとよいでしょう。なお「アクセス拒否」などの文言は懲罰的で厳しい印象があり逆に使いづらいため、柔らかめの「休止」という表現に改めました。
▲静的htmlファイルをMODxにインポートする時、親リソースが指定されている場合はサイトツリーをリセットできないようにしました。親リソースを指定する場合に全リソースを削除するような無意味なことをする人はいないと思いますが、念のために制限をかけました。
▲ダッシュボードのタブ構成を整理。同じような性格を持つセクションをタブごとにまとめました。「受信トレイに 0 件のメッセージが入っています。0 件が未読です」というメッセージもシンプルに修正。サイト名の下に表示していた「MODxへようこそ」は削除しました。
▲アップデート時にインストーラのソースを通じてデータベースのパスワードを閲覧できる問題があったため修正しました。今回は修正を施したのでよいですが、もし過去にMODxをインストールした時のinstallディレクトリをまだサーバ上に残している場合は、迷わず今すぐに削除してください。
▲MODxのインストーラには、書式に則って作られたエレメントファイルを自動的に検出し、まとめてインストールする機能が備わっています。これによって、オリジナルのMODxパッケージを作ることができます。この機能を利用してテンプレート変数を自動インストールさせたい時、関連付けるテンプレートを複数指定できない不具合があったため修正。また、これを機会にテンプレート変数の空ディレクトリを同梱することにしました。
▲特定バージョンのTinyMCEとファイルブラウザの相性問題を解決。TinyMCEがファイルブラウザに正しい情報を渡さなかった場合でも、ファイルブラウザ側で自動的に値を正規化するように改善しました。MODxはディレクトリ情報を渡す時は慣習的に末尾のスラッシュを付けて渡すことになっていますが、ある時期までは暗黙のルールとしても定着してなかったため、時々こういう問題が起きていました。
▲本家開発チーム側の修正。インストールされる3つのシステムイベント名(OnWebChangePassword・OnManagerChangePassword・OnManagerSaveUser)の末尾に不要な半角スペースがくっついていたという話。この状態では、これらのイベントを用いるプラグインを作ろうとしてもうまくいきません。今回のアップデートで正しく登録し直すことができます。
▲Wayfinderの &rowTplパラメータ指定で使えるプレースホルダーとして[+wf.alias+]を追加しました。エイリアスが商品コード管理も兼ねている時、商品名(商品コード)のような形でメニューを組むことができるため便利です。