MODX Evolution 1.0.5J-r10をリリースしました
2011年12月22日 22時22分 shortlink:http://modx.jp/?id=793
キャッシュの仕組みを改善し、ページ数が多いサイトで表示が重くなりにくいようにしました。DB接続のキープにも工夫を加え、負荷に強い運用が可能です。
コードを整理したことでアーカイブの軽量化が進み、当バージョンのサイズは1.7MBです。
■MODX Evolution 1.0.5J Revision10 ダウンロード
http://code.google.com/p/modx-ja/downloads/detail?name=modx-1.0.5J-r10.zip
アップデートの手順
https://modx.jp/docs/update.html
上記を参照してください。
注意事項
■PHP4対応について
今回より、PHP4対応について注意が必要です。
http://code.google.com/p/modx-ja/downloads/detail?name=autoload.zip
PHP4環境でMODXを運用する場合は、autoload.phpを上記URLからダウンロードし、MODX設置ディレクトリにコピーしてください。
<?php
include_once(dirname(__FILE__) . '/assets/upgradephp/upgrade.php');
autoload.phpの中身はこのようになっており、upgrade.phpを読み込みます。upgrade.phpは、現在のMODXで必要な関数・定数のみをまとめたものをあらかじめ同梱しています。
■リリース後に見つかった不具合について
MODX Evolution 1.0.5J-r10において、グローバル設定「デフォルトテンプレート」の3つの選択肢「グローバル」「ペアレント」「シブリング」のうち「シブリング」を値として選んで保存できない不具合があることが分かりました。 この問題を修正するパッチファイルを配布します。
http://code.google.com/p/modx-ja/downloads/detail?name=mutate_settings.dynamic.zip 上記からダウンロードしたアーカイブを解凍し、 /manager/actions/ ディレクトリ内に上書き転送してください。 管理画面のグローバル設定を開き設定を更新すれば修正完了です。
変更内容
不具合修正
- トップメニューをリロードするreloadmenu()がVersion0.9.5以後動作していないため修正
- PHP4環境ではuniqid関数の引数指定が必須のため修正。config.inc.phpの生成に問題があり、複数のMODXサイトを一台のパソコンで管理している場合、ログインに問題が発生することがありました
- 宣言されていない変数へのアクセスを修正
- eform $lastitems のglobal宣言漏れを修正
- テンプレート変数複製時に同じ名前で複製されてしまうため修正
- ログイン直後の「サイトツリーのソート」の選択状態がディレクトリ・降順になっているため修正(実際にはメニューオーダー順に並んでいる)
- actionlist.inc.php Delete category アクション(501)の追記漏れを修正
- インストーラ - デフォルト値がセットされていない$modx->configエントリーを修正
改善
- 処理が重いTinyMCEリンクリストの処理をキャッシュ制御化
- upgrade.phpのサポート関数をコアで使うものだけに限定し、assetsディレクトリに移動
- DBリストア時にトップメニューをリロードする
- autoload.phpが設置ルートに存在する場合は自動的に読み込む
- DatePicker操作対象のテキストフィールドのマウスポインターの形状を改善
- 「ディレクトリ」を「コンテナ」に変更
- 使われていないconfigエントリー($modx->config['manager_layout'])を削除
- モジュール更新時の遷移を調整
- モジュール編集時のキャッシュクリアは不要なので無効にする
- コード中の不要なスペースを削除
- リソース及び各エレメントを複製した時のタイトルを修正
- ルートにautoload.phpが存在する時は自動的に読み込む
- phpSniff.core.php - amiga・OS2など古いua判定を削除
- ファイル管理 - 機能強化(テキストファイル新規作成・パン屑リストなど)
- 投稿画面の遷移を調整
- グローバルキャッシュが無効の場合は投稿画面でキャッシュの設定ができないように改善
- index-ajax.php削除
- リソース編集 - エイリアスや公開状態を変更しない場合はサイトキャッシュを更新しないように改善
- cache_sync.class.processor.php 初期化対象のキャッシュファイルを指定できるように改善
- イレギュラーなテンプレート変数名を設定しようとした場合、値を保持したまま元の画面に戻すように改善
- ウィジェットで使わなくなったためMooFloater・MooMarqueeを削除
- テンプレート変数の編集時にもテンプレート変数名のチェックを行なうように修正
- テンプレート変数の名前チェック時に表示するダイアログを$modx->webAlert()に変更
- $modx->manager->loadFormValues() 返り値(true/false)を返すように改善
- テンプレート変数重複チェックの結果メッセージが未翻訳のため修正
- テンプレート変数のシステム予約名チェックを関数化
- テンプレート変数の重複チェックを関数化
- インストーラ - webmatrix・IIS対応
- mootoolsのajax処理まわりの記述を整理
- $modx->aliasesの処理をキャッシュ化
- $modx->documentMap生成時の負荷を抑えるためにキャッシュ化
- $modx->clearCache()を使用
- nodes.php コンテナ属性を持つリソースも同じようにプレフィックス・サフィックスを処理
- リソースツリーのノード名の取得元を選択できるようにする
- 言語ファイル新規エントリー追加
- $modx->config['suffix_mode']を実装(1.0.5J-r9までは隠しオプション$modx->config['smart_suffix']として実装)
- $modx->config['cache_enabled']を実装(1.0.5J-r9までは隠しオプション$modx->config['cacheable']として実装)
- $modx->configの初期値セットを mutate_settings.dynamic.php に移動
- イレギュラーな値を入力して更新しようとした時のエラー表示をechoから$modx->webAlert()に変更
- サイトツリー→リソースツリー(本家も現在はそうしている)
- DBAPI 接続の再試行が発生した場合に1秒遅延させる(負荷発生時であることを想定)
- DBAPI connectに失敗した時は3回まで再接続を試みる
- mm_demo_rules.tpl 解説文をシンプル化
- ManagerManager - OnManagerPageInitイベントでのOnManagerMainFrameHeaderHTMLBlockイベントの動的追加を廃止
(OnManagerMainFrameHeaderHTMLBlockイベントが採用されて一年近くたつため) - mutate_user.dynamic.php selected()を追加
- $modx->parsePlaceholder()関数を新規追加
- $modx->parseChunk()関数に$modeオプションを追加(汎用的に使えるようにする)
- debug.inc.php 不要なため削除
- プラグイン編集画面のイベント一覧の選択イベントを分かりやすくアクティブ表示
- インストーラの文言をシンプルに整理
- 新規インストールを促す画面が検索エンジンに拾われにくいように修正
- publishedonの更新ロジックを修正
- labelタグを付ける
- 公開ステータス・pub_date・unpub_date変更時にdocumentDirtyをtrueにセット
- 公開ステータス変更時にpub_date・unpub_dateをリセットする
- 管理画面内各部のチェックボックス・ラジオボタンをlabelで囲む
- Revolution2.2のインストーラデザインを採用
- インストーラ - 接続テスト時のデザイン修正
- インストーラ - IIS環境ではインストール直後のディレクトリ自動削除の処理をしない
- インストーラ - webmatrix環境ではMySQLストリクトモードの判定を行なわない
- webmatrix環境・IIS環境を判定する処理をインストーラに追加
- 言語に依存する$modx->configのデフォルト値のセットを修正
- サンプルコンテンツデータ修正
- save_content.processor.php テンプレート変数の入力値の処理タイミングをOnBeforeDocFormSaveより後にする
- qm.inc.php 不要な変数を削除
- managermanager/mm.inc.php 不要なjquery読み込みを削除
- remove_installer.processor.php 不要なスラッシュを削除
- $modx->Eventを$modx->eventに
- $modx->config['upload_files']の値の一部が他と重複しているため整理
- $_POST で値を渡していないテンプレート変数の値を更新しないように修正(結果的に削除されてしまうため)
- テンプレート変数の入力タイプを任意に追加できるように改善(当面は隠し仕様扱い)
- グローバル設定 アップロード可能なファイルサイズの初期値をサーバに合わせて自動的に計算
- $modx->getUserInfo()・$modx->getWebUserInfo() 値を得られなかった時にfalseを返すように修正
- $modx->dbConfigを$modx->db->configに
- $modx->Eventを$modx->eventに
- リソース更新後の遷移を修正
- mutate_settings.dynamic.php radioボタンのレンダリングを関数化
- mutate_settings.dynamic.php フォーム内の要素単位のデフォルト値指定を削除(インストーラとの不整合が発生している)
- リソース更新後にツリーも更新
- 管理者がルート直下作成でエラー http://forum.modx.jp/viewtopic.php?f=7&t=706
- パスワード変更画面 - フォーム書き換えチェック(documentDirty)を追加
- パスワード変更画面 - ログイン名も表示する
- $modx->config['upload_maxsize']のデフォルト値を1048576から3145728に変更
- mutate_settings.dynamic.php config['custom_contenttype']のデフォルト値を修正
- mutate_settings.dynamic.php 不要なcheckIM関数を削除
- move_document.processor.php 移動先を指定せずに実行した場合にtree.caをopenに戻す
- export_site.static.php 不要なreloadTree関数を削除
- スニペットのプロパティを操作するスクリプトが編集画面内に混じっているため削除(125行)
- リソース複写時にunpub_dateを0にセット
- リソース複写時にpublishedonを0にセットする
- リソース更新時のpublishedonの更新を修正
- publishedonの更新を抑制(pub_dateが有効でタイミングも合っていればpub_dateの値を代入する)
- リストビュー - 公開されていても「非公開」と表示されることがあるため修正
- リソース複写後の遷移を修正
- サンプルコンテンツ - リソースの並びをID順に整える
- サンプルコンテンツ - publishedonを正しくセット
- リストビュー - editedonが0の場合は「-」を表示(リソースを複写した場合など)
- install/instprocessor.php config.inc.phpの書き込み処理を整理
- action.summary.php config.inc.phpの読み込みを整理
- install/instprocessor.php config.inc.phpの更新処理を修正
- install/instprocessor.php - $site_sessionnameのセットのタイミングを他の変数と揃える
- インストーラ - 行間を少し狭める
- インストーラ - config.inc.phpのパーミッション設定を自動化(suexec環境のみ有効)
- インストーラ - デフォルトのadminアカウントのユーザ名追加処理を修正(Default admin account→メールアドレスのアカウント名)
- インストーラ - SQL文へのcollation句追加の処理を改善
- インストーラ - プレースホルダ置換処理を改善
不具合報告・改善要望について
主な改善内容
▲グローバル設定に[(resource_tree_node_name)]を追加しました(Revolutionと同じ)。
▲設定を変更すると、上記のようにノードのタイトルが変わります。
▲ログイン直後はリソースツリーのソート順変更ブロックの初期値が「ディレクトリ・昇順」になっているため、修正しました。初期値の表示がこのようになっているだけで、実際にはメニューオーダー・昇順になっています。また、サイトツリーという表現を「リソースツリー」に改めました。本家もそのようにしています。
▲グローバル設定に[(cache_enabled)]を追加しました。従来は日本語版において隠しオプション[(cacheable)]として実装していたものです。
▲ファイル管理画面のナビゲーションをパン屑リスト方式に変更しました。
▲ファイル管理画面でテキストファイルを新規作成できるようにしました。
▲キャッシュの管理方式を改善しました。従来の仕様では、フレンドリーエイリアスが有効な設定でページ数が数千ページに及ぶと、ナビゲーションの出力に時間がかかることがありました。今回の改善では、内部処理をキャッシュとして保存し、二度目のリクエストからはキャッシュから値を取得します。また、リソースを更新保存する時、エイリアスや公開状態を変更していない場合はサイトキャッシュを更新しないようにしました。
▲ファイルアップロードサイズ上限の初期値が1MBになっていたため、3MBにしました。この設定が反映されないサーバが多いはずですが、反映されるように調整されているサーバもあります。
▲公開開始日時・公開終了日時の設定が優先されて公開ステータスを変更できないことがあるため、公開ステータスを変更する場合は両方の値をリセットできるようにしました。非公開にしたつもりなのに公開されたままになっている、などの事故を防ぎます。
▲これまで日本語版において隠しオプション[(smart_suffix)]として実装していたものをグローバル設定に盛り込み、エイリアス名にドットを含めた場合(feeds.rssなど)、プレフィックス設定を無視できるようにしました。コンテントタイプと連動させるほうがスマートですが、次回以降の課題にします。
※コンフィグ名は[(suffix_mode)]に変更しています。
▲リソースやエレメントを複製した時のタイトルを日本語化しました。書式は言語ファイルで指定しています。
▲TinyMCEのリンクリストをキャッシュ制御に対応させ、軽快に読み込めるようにしました。リソースIDを表示し、似たようなタイトルが並ぶ場合でも判別しやすくなっています。
▲システムイベントの選択状態を分かりやすくしました。
▲インストーラのデザインをRevolution2.2のインストーラデザインに合わせました。
次回リリースについて
今回はBreadcrumbsスニペットの同梱を復活させる予定でしたが、間に合いませんでした。期待していた方には申し訳ありません。次回以降に持ち越したいと思います。
他、ご意見ありましたらフォーラムまたは問い合わせフォームからフィードバックをお願いします。フォーラムやブログ、Twitterなどで寄せられた要望はこまめに拾って対応しておりますので、気軽に要望いただければ反映に努めたいと思います。