MODx Evolution 1.0.4 日本語版Revision2をリリースしました
2010年9月1日 23時00分 shortlink:http://modx.jp/?id=213
毎月定例の日本語版のリビジョンアップを1.0.4J-r2としてリリースします。今回のバージョンからアップデート時にsiteCache.idx.phpの上書きを回避する必要がなくなり、アーカイブを全てそのままサーバに転送してアップデートできるようになりました。プラグインのアップデートの挙動が不安定だった件も解消されています。
■MODx Evolution 1.0.4 日本語版 Revision2 ダウンロード
http://code.google.com/p/modx-ja/downloads/detail?name=modx-1.0.4J-r2.zip
0.9.6.3以前からアップデートする場合はQuickEditプラグインとBottom Button Barプラグインが不要になりますので、使わない場合は削除してください。
■コアのみのアップデータ(0.9.6.2以降が対象)
http://code.google.com/p/modx-ja/downloads/detail?name=updater1.0.4-r2.zip
managerフォルダをそのまま上書きし、管理画面にログインしてください。0.9.6.3以前からアップデートする場合はBottom Button Barプラグインが不要になります。0.9.6.3以前からのアップデートは、できればフルパッケージのインストーラを用いて拡張機能ごとアップデートするのがよいでしょう。
デモサイト
http://demo.modx.jp/manager/
ユーザ名・パスワードともに「modx」です。あらかじめセットしてあるのでそのままログインボタンをクリックしてください。1時間ごとに構成が初期化されます。
変更内容
- アップデート可能な状態ではない時は新規インストールのオプションのみ表示する
- インストールされるmm_rules.tplのチャンク名を「mm_rules」から「mm_demo_rules」に変更(アップデート時の上書き事故を防ぐため)
- 管理画面内で用いるJavaScriptや画像を圧縮し軽量化
- 管理画面のスタイルシートを圧縮。ローカルの計測値では1.5秒前後の読み込み時間が半分以下に短縮
- ja.css(日本語版専用のCSS)をstyle.cssに統合。@import記述がなくなりファイル数もひとつ減り、若干レスポンスアップ
- textareaタイプのテンプレート変数が持つ入力フィールドのフォントサイズを調整
- ヘルプの「support」タブに簡単な解説を追記
- phpの警告を画面に出力する設定を行っている場合に画面にエラーが表示され、管理画面にログインできない問題を修正
- Personalizeスニペットに機能追加(テンプレート変数を振り分け対象にする機能)
- TinyMCEの右寄せ・左寄せのスタイルを調整(画像のみfloat:left:right、他はtext-align:left/right)
- ManagerManager - 「更新時にキャッシュを削除」の初期値を設定できるようにする
- ヘルプを改善(検索エンジン対策・公開設定の解釈・日時データの扱いなど)
- テンプレート・チャンク・プラグイン・スニペット・モジュール編集画面のデザイン微調整
- グローバル設定の「アクティブなタブを記憶する」にオプションを追加
- Forgot Manager Loginの説明文を修正
- アクセス権限設定まわりの文言とパーミッションを調整(機能が無効の場合は設定画面にアクセスできないようにする)
- Inherit Parent TemplateのデフォルトをFrom First Siblingにする
- MySQL4.0環境でアップデートすると、同じバージョンのプラグインを重複インストールしてしまう上に動かないため修正
- おそらく同じ理由で、無効にしたプラグインをアップデート時に復活させてしまうことがあるようなので、これも同時に修正
- アップデート時はサンプルコンテンツのインストールオプションを表示しないように改善(誤って選択してしまうと危険)
- QuickManagerのjQuery noConflict mode in front-endの初期値をtrueにする
- デモコンテンツのRSSリソースのアイコンをXMLではなくRSSに変更
- siteCache.idx.phpをブランク扱いとし、アップデート時に上書きしないようにする
- サイトツリーのアイコン表示を改善。トップページ・404ページ・メンテナンスページ・権限アナウンスページをそれぞれ専用アイコンで表示
- トップページ(site_start)をプライベートに設定できないようにする
- トップページ(site_start)を非公開に設定できないようにする
- ManagerManagerが代替を果たすようになっているためShow Image TVsをインストーラから削除
- Personalizeスニペットを大幅に機能強化(パラメータは過去バージョンと上位互換)
- 新規インストール時とアップデート時で文言を変更
- アップデート時にsiteCache.idx.phpを退避せずにすむように改善。解凍したファイル全てをそのまま上書きできるようになった
- グローバル設定の「CSSファイルへのパス」が相対パス記述以外になっているとTinyMCE側で正しく解釈できないため修正
- ユーザー管理・ウェブユーザのアイコンを変更(イメージを統一)
- グローバル設定の$_SESSION['browser']判定をシンプルに改善(機能には影響なし)
- 「イベント発生時のプラグインの実行順を編集」でSQLエラーが発生していたため修正
- QuickManagerを最新の1.5.1にアップデート(※1.3.4.1ではTinyMCEの保存ボタンクリック時に不具合があった)
- ユーザ名で「 . 」と「@」を使えるようにする(※もともと使える仕様だがログイン情報を記憶する際に不具合があった)
- モジュールを新規作成・更新時、管理画面全体をリロードさせるようにする
- プリインストールされるAdmin以外の2つのロールのremove_locksの値を1にセット
- 新規インストール時の「アクティブなタブを記憶する」のデフォルト値を「はい」にする
- テキストシャドーのスタイルを加えたボタンの文字がChromeで見づらいため改善
- ユーザ設定の一部がグローバル設定を継承できないため修正
- TinyMCEからファイルブラウザを開いた時にIEでJavaScriptエラーが発生していたため修正
- TinyMCEのソースコードを修正(機能には影響なし)
- 多めに見渡せるように、ファイルブラウザ上のサムネイルサイズを96pxから64pxにサイズダウン
- ヘルプを改善
- 管理画面言語ファイル改善
- DocManager言語ファイル改善
サポート
不具合や改善要望など、フォーラムで連絡いただければ分かる範囲で有志メンバーがお答えします。フォーラムで相談しにくい内容は問い合わせフォームを利用してください。サポート対応はMODxの改善につながりますので、開発している私達にもメリットがあります。お気軽にどうぞ。
アップデートの手順
http://modx.jp/news/2010/158.html
解説ページをまだ用意していないため、上記を参照してください。アップデートを始める前に必ずデータベースのバックアップをとりましょう。
次回リリースについて
次回のリビジョンアップは10月1日を予定していますが、開発ベースをGithubに移行した本家版との調整作業が重なるため遅れる可能性があります。
スクリーンショット
▲トップページ・404ページ・メンテナンス中ページ・権限アナウンスページを専用のアイコンで表示
▲トップページの公開ステータスを変更できないように
▲グローバル設定のCSSファイルのパスを相対パス以外で記述するとTinyMCEが正しく解釈しないバグを修正
▲ManagerManagerのルール設定チャンクの名前を「mm_demo_rules」としてインストールするように変更。少し面倒ですが、実際にお使いになる場合は「mm_rules」など適切なチャンク名に変更しManagerManager側の設定も変更してから実運用を始めてください。そのようにすることで、アップデート時の上書き事故を防ぐことができます
▲前回の脆弱性対応の影響で、プラグインの実行順序を操作しようとするとSQLエラーが発生していたため修正
▲ログインユーザ名に「@」「 . 」を使えるように。もともと使えてましたが、ログイン画面でユーザ名を保持する設定にしている場合に、これらの文字が削除された状態で表示される問題がありました。そんな状態でも、抜けた文字を補ってログインすることはできてました
▲TinyMCE経由でファイルブラウザを開く時、IEでエラーが発生していたため修正(ステータスバーのエラーに気付かず使っていることが多いようです)
▲ファイルブラウザのサムネイルサイズを調整。上記は改善前の状態
▲改善後。画像を多めに見渡せるようになり、不要な横スクロールバーも表示されなくなりました。今考えるとウィンドウサイズを広げるほうが早かったですが・・
▲1.0.1以来、MySQL4.0環境でMODxをアップデートすると、インストール済みプラグインがシステムイベントを全解除した状態で重複インストールされ、結果的に無効になっていたため修正。MySQL5環境ではたまたま問題が起きてないようですが、コードの書き方としてはバグと思われます
▲QuickManagerの編集バーをChromeで表示した状態
▲スタイルシートのテキストシャドーを調整し、日本語フォントのにじみを解消
▲Inherit Parent Templateプラグインの初期値を「From First Sibling」にセット
▲アクティブなタブの記憶が「全て記憶」「全て記憶しない」の二択では実用性に問題があるため、中間的な設定を追加
▲「アクセス許可」の文言を「グループ管理」に変更(アクセス許可そのものの設定は実際には扱わず、紛らわしいため)
▲グローバル設定で「グループ管理機能(アクセス許可設定)」を使わない設定になっている場合は、URLを直接入力するなどしてグループ管理の設定画面を開こうとした時にアラートを表示するように修正。ナビゲーションにもグループ管理機能関連を表示しない
▲ManagerManagerに mm_set_clear_cache ルールを追加。「更新時にキャッシュを削除」の初期値を設定できます
▲mm_set_clear_cacheルールを用いる場合、キャッシュが生成されていない場合はチェックボックスがdisabledになります
▲Personalizeスニペットを大幅に機能強化。出力内容として、チャンク以外にテンプレート変数を使えるようにしました(※従来もチャンク内にテンプレート変数を書けば可能でしたが)。その他、プレースホルダーをいくつか実装。また、初期値をセットしたため [!Personalize!]と記述するだけでも必要最低限の出力を行ないます。ウェブユーザだけでなく管理画面ユーザにも対応しました
Personalizeスニペットの追加パラメータ
- &yesTV - ログインしている時に表示させるテンプレート変数の名前
- &noTV - ログアウトしている時に表示させるテンプレート変数の名前
- &context - [web|mgr] ウェブユーザ・管理画面ユーザのどちらを対象とするか。指定しない場合はウェブユーザ対象
Personalizeスニペットで利用できるプレースホルダー
- - ログインユーザ名。short_nameと同じ。このプレースホルダー名は&phパラメータで変更できます
- - ログインユーザ名
- - 本名またはニックネーム
- - メールアドレス
- - 前回のログイン日時
- その他 - ソース中のコメントを解除すれば、・・などいくつかのプレースホルダーが使えるようになります。そこまでやるなら専用にスニペットを作ったほうがよさそうに思えたので、あえてコメントアウトしました
これらのプレースホルダーで出力する値は$_SESSION変数に一時的に保存されている値から拾っていますが、$_SESSION変数の更新のタイミングに問題があるのか、「前回のログイン日時」は正確に拾えないことがあるようです。DB側では正常に更新されています
▲ヘルプの「support」タブに簡単な解説を追記
▲textareaタイプのテンプレート変数が持つ入力フィールドのフォントサイズが少し大きいため、他の入力フィールドに合わせる形で修正(※下の画像が薄く見えるのは画像処理のミスですが、このまま掲載します)
(font-size: 130% → font:inherit)
▲管理画面のスタイルシート(MODxCarbonテーマ)を圧縮し軽量化。圧縮前のファイルも同梱しています
隠し機能
次回以降のリリースへの積み込みを検討するものとして、隠し機能を2つ盛り込んでいます。
リンクタグを実際のURLに展開した状態でキャッシュ生成
/manager/includes/document.parser.class.inc.php 1019行目
行頭のコメントアウトを外すと、リンクタグを実際のURLに展開した状態でキャッシュを生成します。若干の負荷対策になりますが、まだ検証が十分ではないため実際の効果や副作用については不明です。もしこの方法で副作用がないことが確認できれば、通常の状態でもそこそこ軽いMODxのページ出力制御を、静的htmlファイルに近いレベルまで軽量化するためのアプローチを検討することができます。
数千ページ級の大規模サイトを運用している時の、WayfinderやSEO Strict URLsの負荷対策としては効果はありません。こちらはまた他のアプローチを検討中です。ローカルで8000ページ構成のダミーサイトを作って確認してみたところ、現在のEvolutionではWayfinderに関しては負荷の問題はあまりないようにも感じます。もし困っている人がいましたら、ぜひ確認させていただきたいのでご一報ください。ロジック的には、確かに多少の無理を感じる部分が残っています。
既定値として設定した@Bindings記述をパースした状態で投稿画面の入力フィールドにセット
/manager/actions/mutate_content.dynamic.php 762行目
行頭のコメントアウトを外して機能を有効にすると、@Bindings記述をパースした状態で投稿画面の入力フィールドに既定値をセットすることができます。互換性の問題があるためこのままの採用はできませんし、副作用の可能性も多少感じます。うまく使えば便利な機能ですが、検証と評価が必要です。
EvolutionとRevorution
先ほどMODx Revolution 2.0.0 日本語版を正式リリースしました。両者の関係について簡単に補足します。現在、2つのMODxが並行して開発が進められています。今後はRevolutionが主流になって、Evolutionは少しずつ衰退していくのではないかと感じる人がいるかもしれません。
実際は、両者は同じ世界観を共有しながらも、異なる特性を持つシステムです。どちらも開発が継続されていきますので、安心してお好みのシステムをお選びください。
Revolutionはまだ生まれたばかりですし、開発にあたってはxPDO・Ext JS・Smartyなど複数のフレームワークの使いこなしスキルが必要なので、使いこなしのノウハウや拡張機能の充実も含めて、熟成が進むにはまだしばらく時間がかかると思います。反面、Evolutionは基礎的なPHPの読み書きスキルがあればお付き合いできるイージーさがアドバンテージとなっています。
Revolutionは、イメージ的にはエンジニア向けのような印象が強いです。しかし実際は、PHPを習得してなくても、テンプレート変数やスニペット、チャンクなどの使いこなしだけで十分に高度なサイトを構築できる懐の深さがあります。PHx相当の仕組みがネイティブに組み込まれており、Evolutionでは限界があった表現もRevolutionは難なくこなせます。