MODx Evolution 1.0.3 をリリースしました
2010年4月3日 21時26分 shortlink:http://modx.jp/?id=158
4月2日、MODx Evolution 1.0.3をリリースしました。
http://code.google.com/p/modx-ja/downloads/detail?name=modx-1.0.3J.zip
日本語版はこちら。
http://modxcms.com/download.html
本家版はこちらです。
http://modxcms.com/forums/index.php/topic,47756.0.html
本家開発チームによるリリース文はこちら。開発チームの本拠地であるテキサスは時差により当日はエイプリルフールだったため、くだけた感じのタイトルになっています。
http://svn.modxcms.com/svn/tattoo/tattoo/trunk/install/changelog.txt
changelogはこちら。改善・修正の数は今回は90ヶ所弱。日本語版ではさらに30ヶ所の改善・修正を追加しました。
まず最初に、アップデート時の注意について説明します。特に問題なく進めば、アップデート自体は簡単です。
アップデートの手順
当サイトではMODxのアップデートに関してまだドキュメントを整備していません。このページを通じて、簡易に説明します。おおまかな手順は、以下のとおりです。半分はいざという時のためのバックアップの手順で、アップデート自体は簡単にできるようになっています。
- 「レポート」→「イベントログ」でログに目を通し、不自然なログがないかチェックする。もし問題を感じた場合は、必要に応じて対応する。
- 「ツール」→「バックアップマネージャー」を開き、modx_event_logとmodx_manager_logの「データサイズ」の数字をクリックし、ログを消去する。ログのサイズがあまり大きくない場合は、そのままでもかまわない。または、次の手順でこの2つのTableのチェックを外してもかまわない。そうするとアップデート後もログを引き継げる。
- 「DROP文を生成」と「テーブル名」横のチェックボックスにチェックを入れて全てのTableを選択し、その上の「ここをクリック」をクリックし、バックアップデータを取得する。このバックアップデータは、アップデートに失敗し元の状態にサイトを復旧したい時に必要になる。
- 取得したバックアップデータをテキストエディタで開き、文字化けが起きてないかを確認する。文字化けしている場合は、エディタの設定がutf8であることを確認する。
- 念のために、/assets/ 以下のファイルをダウンロードしておく。( /assets/images/ だけでも可)
- 「ツール」→「グローバル設定」を開き、「公開ステータス」を「メンテナンスモード」に設定する。この時点から、サイトは非公開になる。
- MODx最新版のアーカイブをダウンロードし、解凍(展開)する。
- 解凍したアーカイブ中の /assets/cache/siteCache.idx.php を削除する。上書きしてはいけないファイルではないが、これを元のまま残しておけばアップデート作業中(ファイル転送中)もメンテナンスモードによるサイト表示を維持できる。
- 解凍した全てのファイルを上書き転送する。転送に時間がかかる場合は、イタズラの対象にされやすい /install/ フォルダは最後に転送する。
- 転送が終わったら http://インストール先/install/ にアクセスし、「japanese-utf8」を選択しアップデートを進めていく。
- アップデートが終わったら必ず /install/ ディレクトリを削除。管理画面にログインし、指示に従って「保存」ボタンをクリック。この時点でsiteCache.idx.phpも最新状態に更新される。
- サイトを表示し、問題がないことを確認する。文字化け・表示の乱れなどの問題がなければメンテナンスモードを解除し、管理画面をログアウトしてからもう一度サイトの表示をチェックする。
- もし修復困難な問題が生じて元の状態に戻す必要がある場合は、元のバージョンのMODxを入手して上書きし、phpMyAdminなどを利用してバックアップデータをインポートして戻す。アップデートまたはリストア作業に際して何か問題があった場合はフォーラムへ。
アップデート後に表示されるかもしれない警告について
アップデート後、サーバ環境によっては以下のような警告が表示されることがあります。
設定チェック
動作環境に問題があります。
警告 'GD and/or Zip PHP extensions not found'
どういう意味ですか?
MODx needs the GD and Zip extension enabled for PHP. While MODx will work without them, you will not be able to take full advantage of the built-in File Manager, Image Editor or Captcha for logins.
これはGDライブラリまたはZipエクステンションがサーバにインストールされていない場合に表示される警告です。もしこの警告が表示された場合は、サーバ側で対応する必要がありますが、国内の多くの一般向け共用レンタルサーバでは対応していただけません。GDライブラリが利用できないと不便ですが、たいていの共用サーバではサポートされています。Zipエクステンションは必ずしも必要ではありません。システムにおいては、ファイル管理画面でZipファイルを解凍したい場合に用います。この警告は、Zipエクステンションがインストールされていないために表示されることが多いと考えられます。
http://code.google.com/p/modx-ja/downloads/detail?name=no_check103.zip
もしこの警告が表示され、ZipエクステンションによるZipコントロールが不要な場合は、上記のファイルを
/manager/includes/config_check.inc.php に上書きすると警告を表示しないようにできます。
この警告の扱いを今後どうするかは、各方面での要望などを参考に決定したいと思います。
「A possible CSRF attempt was detected」と表示されログインできない場合
A possible CSRF attempt was detected. No referer was provided by the server.
ログアウトしようとすると、上記のように表示され操作ができなくなることがあります。「戻る」で元の管理画面に戻ることはできますが、ログアウト操作ができません。このような場合はグローバル設定の「管理画面操作のリファラチェック」を「いいえ」に設定してください。
これは1.0.3よりも以前から備わっていた設定ですが、1.0.2からデフォルトで「はい」になりました。悪意のユーザが、管理画面の特定操作をさせるリンクを外部サイトなどに生成したとして、これをうっかりクリックしても何も起きないようにするための仕組みですが、用事が終わればログアウトする習慣をつけることでこの種の攻撃を確実に回避できますし、あなたのサイトが狙い撃ちにされ、罠が仕込まれているページにあなたが誘導されてリンクをクリックする手順を踏まねばこの種の攻撃は発動しません。気をつけることで回避できそうであれば、この設定を「いいえ」にできます。
この機会に1.0以前のバージョンからアップデートする人も多いと思いますので、この点について改めて説明いたしました。
リソース編集画面のTinyMCEのフォントが小さくなった
本家開発チームとの調整により、TinyMCE用のスタイルシートの配置が変更になりました。これをブラウザが正しく読み取れていない可能性があります。ブラウザのキャッシュを削除すれば解決します。または、気にせずそのまま使っていれば、次にパソコンの電源を立ち上げた時には直ってます。ブラウザの設定が苦手な人が記事の管理を担当している場合は、そのようにお伝えください。
お待たせいたしました。以下、日本語版の改善・修正を中心に今回のアップデートの主な注目点を紹介します。
MODx1.0.3(日本語版)のアップデート内容の注目点
TinyMCEをリファクタリング
早い時期からMODxに組み込まれていたTinyMCEは、機能追加が繰り返された結果、全体で見通しの悪い複雑なプログラム構成となっていました。そのため、TinyMCE自体はカスタマイズの自由度が非常に高いシステムでありながら、MODxプラグインとしてはツールバーの構成を変更するのが精一杯という状況でした。
日本チームでは独自に新規の作り直しに近い状態からTinyMCEプラグインのリファクタリングを進めて組み込んでいましたが、今回の1.0.3から本家側でもこれが正式に採用されました。まだ多少の不具合が残されたままのリリースとなりましたが、日本語版においてはほぼ問題ありません。ロシア語・ドイツ語など他の言語圏では言語ファイル側で若干の対応が残されています。これはTinyMCE本体側の問題も含まれています。
▼ツールバーの構成
▼画像の左寄せ・右寄せ・回り込み解除のインターフェイスを改善
1.0Jから1.0.2Jまでは、プルダウンメニュー式のスタイルセレクターにより画像の左寄せ・右寄せ・テキストの回り込み解除を制御するようにしていましたが、ツールバーのボタンとして存在する左揃え・右揃えの機能を使うほうがスマートです。使ってもよいのですが、画像とテキストの間のマージンを考慮できないため、スタイルシートでマージンを空けるなどの対応が必要でした。しかしそれだとフェイスマークとして貼り付けた画像にまでマージンが設定されるなど、細かい部分ですっきりしません。また、左寄せ・右寄せそれぞれでマージンのつけ方も異なります。
TinyMCEはVer3.3より、左揃え・右揃えを指定した要素に、任意のclassを付加できるようになったため、今回からこれを利用することにしました。付加するclass名は、今まではimgleft・imgrightでしたが、今回よりjustifyleft・justifyrightとなります。また、回り込み解除をstyle="clear:both;"として任意の要素に付加できるサードパーティ製プラグインが配布されていたため、これも採用しました。
▼フルスクリーン時に「保存」ボタンを表示
TinyMCEにはフルスクリーン機能(上の画像の右上端のボタン)がありますが、フルスクリーン表示にした場合、MODxのアクションバーが隠れてしまうため保存操作ができません。フルスクリーンをいったん解除すればいいのですが、手間を省くため保存ボタンを設置しました。
今回より、TinyMCEプラグインのインストールディレクトリの名前を「tinymce」に統一しました。これまでは「tinymce3241」などのようにバージョン名込みでディレクトリを作っていましたが、これだとバージョンアップのたびに不要なディレクトリが残されますし、自作またはサードパーティ製のTinyMCEプラグインを組み込んでいる場合はこれを移動する手間もあり、あまりメリットがありませんでした。
/assets/plugins/tinymce/js/mce_init.js.inc
TinyMCEのカスタマイズに興味がある場合は、上記のファイルを編集すれば自由に機能を調整できます。TinyMCE開発元のドキュメントを参考にしてください。便利な機能があればフォーラムでご紹介いただければ、次バージョンでの採用を検討できると思います。
ManagerManagerの日時まわりの制御にtoDateFormatメソッドを採用
「mm_default('pub_date')」と指定することで、新規投稿時の「公開日時」のデフォルト値をプリセットできますが、アメリカ式の書式のために日本語版ではeval式を用いて整形していました。これでは分かりにくいので、ManagerManager自体を改良し、グローバル設定と連動して適切な書式で日時データを出力するようにしました。
【重要】プリインストールされるmm_demo_rulesチャンクの名前をmm_rulesに変更
1.0.2からManagerManagerが同梱されるようになりました。これに付属するmm_demo_rulesは同梱の検討が始まった当初はデモンストレーション的な内容が主なものでしたが、正式に配布される時点ではMODxのデフォルト設定にある程度の影響をを及ぼすものになりました。mm_demo_rulesという名称だと「デモコンテンツを使わない場合は削除してもかまわない」と誤解される可能性があるため、チャンク名をmm_rulesに変更しました。
これにより、mm_demo_rulesにルールを追記している場合はチャンク名が変わるため機能しなくなります。この場合はmm_demo_rulesの内容を新しいmm_rulesにコピーしてください。またこれに伴い、所属カテゴリーをdemo contentsから Manager and Adminに変更しました。
ManagerManager の同梱ドキュメントの記述ミスを修正
1.0.3には最新のManagerManagerが同梱されており、このManagerManagerには「mm_requireFields」 という新メソッドが追加され、必須入力フィールドを指定できるようになっています。しかし同梱のドキュメントでは「mm_require_fields」 となっているため、そのままコピーすると動きません。ドキュメントを修正しました。
入力必須フィールドの設定
▼「リソース名」を空白のまま保存ボタンをクリックした時にアラートを表示する
ManagerManagerに追加された新メソッド「mm_requireFields」を用いて、リソース名の入力を必須としました。翻訳対応は今後の課題とします。
プリインストールされるmm_rulesからmm_default('pub_date')を削除
1.0.2より、ManagerManagerのmm_defaultメソッドを利用し、新規投稿時の「公開日時」をデフォルトでセットするようになりました。このため、グローバル設定の「公開デフォルト」の設定に関係なくデフォルトで公開されるようになっています。また、公開日時がセットされていると投稿画面の「公開する」のチェックを外しても公開されてしまうため、事故が起こりやすくなります。混乱を防ぐため、mm_defaultの記述を削除しました。
グローバル設定に合わせてリソース編集画面の「アクセスログを記録」の表示・非表示を制御
ManagerManagerを利用し、グローバル設定の「アクセスログを記録」が「いいえ」になっている場合は、リソース編集画面の「アクセスログを記録」を表示しないようにしました。
※MODx本体はアクセスログを記録する仕組みを持っていません。「アクセスログを記録」はデフォルトで「いいえ」になっていますが、ここを「はい」にしても、それだけではアクセス解析はできません。対応モジュールなどが必要です。
QuickManagerのスタイルを改善
モーダルウィンドウの真っ黒な背景を透過にし、ある程度はページが後ろに見えるようにしました。また、ウィンドウをもう少し軽快に開くようにしました。
TransAliasプラグインを改善
エイリアスに漢字を入力すると1文字で「xxx」になっていたのを、「x」だけにしました。また、気休め程度ですが変換ルールを少し改善しました。
スニペット編集画面にconfig文更新ボタンを追加
ボタンがなくてもフォーカスを移動するだけでフォームのレンダリングを更新できますが、ボタンがあったほうが分かりやすいため設置しました。
サイトツリーのコンテキストメニューを改善
使用頻度の高い順に並べ、文言も分かりやすくしました。投稿担当者がMODxに詳しくなく「リソース」という表現になじめないこともあると思いますが、より親しみを感じられるように配慮しました。MODxが必要以上に難解なシステムと感じられないよう、今後もこのような工夫を続けます。
公開日時を設定しているリソースをトップページに指定できるように改善
公開日時を設定しているリソースをトップページに指定し、再び編集しようとすると英語で警告が表示されます。「公開日時を設定しているリソースをトップページにすることはできません」という意味のアラートですが、実際は編集内容はちゃんと保存されますし、グローバル設定でトップページとして指定できてしまうのも不自然です。公開日時が未来の日付でなければ問題ないので、判定を加えて、アラートを表示しないようにしました。
eformのメール送信形式のデフォルトをプレーンテキストに
eformのデフォルト設定では、html形式のメールを送信するようになっています。日本ではhtmlメールはあまり歓迎されないため、プレーンテキスト形式をデフォルトとしました。
eformの送信メール文面を翻訳(今回はデモコンテンツのみ)
今回はデモコンテンツとしてインストールされる「ContactFormReport」の内容を翻訳しました。次にリリースする1.0.4ではeformのデフォルトも翻訳対応する予定です。
リソース編集画面を開く時にimgタグのパスを破壊するバグを修正
- MODxをサブディレクトリにインストールしている
- グローバル設定でリッチテキストエディタを使用する設定になっている(普通そうなっています)
- imgタグのsrc属性にサーバのドキュメントルート基準の絶対パスで画像を指定している
この3つの条件が重なった場合、リソース編集画面を開いた時点でimgタグのsrc属性の値がシステム側で操作され、画像を表示できなくなります。画像のパスをhttpから始まるフルURLで記述する場合は問題ないのですが、相対パスで記述されている場合は、一部のリッチテキストエディタでは画像の貼り付けができない場合があります。これに対応するためのコードが不完全なために、この不具合の原因となっていました。
リッチテキストエディタ側の不備を補いきれるほどの細かい対応メソッドは、今のMODxには実装されていません。中途半端に対応するよりはリッチテキストエディタ側に対応を任せるべきなので、今回は該当コードをまるごと削除し、コンテンツの内容をそのまま読み出すようにしました。TinyMCEやCKEditorなどメジャーなリッチテキストエディタでは、相対パス・絶対パスそれぞれの扱いに対応していることが多いため問題ありません。
minimalテンプレートを補完
初代MODxからデフォルトテンプレートとして同梱されていたminimalテンプレートが廃止され、テンプレート名としては残りますが、内容は[*content*]のみになりました。日本語版では、htmlとして最低限の骨格を構成し、簡易チュートリアルとして参考にできるよう配慮しました。
用語を変更
「セッティング変数」を「コンフィグ変数」に改めました。
テンプレート変数のタイプごとにclassを出力
リソース編集画面の入力フィールドで、テンプレート変数のタイプごとにclassを出力します。たとえばnumberタイプのテンプレート変数ではを出力します。バリデーションを行なうプラグインを作れば、入力内容を正規化できます。
datagrid.classでMicrosoft Excelのデータを扱えるように改善
MODxにはdategridという仕組みが備わっており、テンプレート変数を通じて読み出すことで表組出力が可能です。CSVデータが対象ですが、レコード終端もカンマで表現されている必要があり、Excelで作ったCSVデータをそのままでは扱えません。改行も区切り文字として認識するようにしました。ただしこれにより複数行データを持つセルを処理できなくなり、今後の課題となります。
Excelからデータをコピー&ペーストでテンプレート変数の入力フィールド内に貼り付けた場合、貼り付けられたデータはタブ区切り形式となっています。これに対応するため、タブ文字も区切り文字として認識できるようにしました。ウィジェットを利用するなどして、Excelから貼り付けたデータを表組みとして出力することができます。
datagridの書式を整形
イベントログなど、管理画面内で用いているdatagrid出力を数ヶ所修正しました。
document parserの$modx->event->params のリファレンスを廃止
http://forum.modx.jp/viewtopic.php?f=7&t=205&start=0#p1366
kazuikeさん報告の上記の件に対応しました。ただし今回は把握が遅れたためにスニペット側のチェックができず、プラグイン側のメソッドのみの対応です。スニペット側は次回対応します。この件の対応は本家開発チームとは今のところ意見が分かれていますが、MODxのシステムを信用し作法に則ってコードを組むプログラマーの信頼を損なわないためには、日本語版では今回の対応は必要と判断しました。本家とは今後も粘り強く議論を継続します。
リソースブラウザのデザインを修正
背景が真っ白で素っ気ない印象でしたが、デザインを整えました。
プラグインのインストールを半自動化
プラグインの構成情報がDocBlockコメント形式で記述されている場合、これを自動的にcollectして各フィールドに反映できます。すでに1.0.2から、インストーラにおいてはこの方式による拡張機能組み込みを実現していましたが、管理画面内においてはプラグイン編集画面で対応します。スニペットやチャンクについては今後対応します。DocBlockコメント形式による記述については、/install/assets/ 以下のファイルを参考にしてください。
バックアップマネージャーのTable選択を改善
バックアップマネージャーではデータベース内の全てのTableを対象としていましたが、MODx稼働用のプリフィックスを持つTableのみを対象とするように改善されました。ひとつのデータベースに複数のCMSをインストールしている場合に、MODx関連のTableを探してひとつずつチェックを入れていく必要がなくなりました。