MODX Evolution 1.0.5J-r8をリリースしました
2011年11月7日 09時00分 shortlink:http://modx.jp/?id=772
グループ管理機能の改善・PHP5.3対応・ログイン画面やダッシュボードカスタマイズ対応の改善・IE対応・インストーラ改善・エクスポート機能の改善などを行ないました。
▲ログイン画面カスタマイズ例
注意事項
jqueryを最新版に更新しました。必須ではありませんが、QuickManager・ManagerManagerのjquery読み込み設定の更新を推奨します。
当バージョンではPHP5.3対応を強化しています。PHP5.3へのアップデートをアナウンスしているレンタルサーバが数社あることを確認していますが、PHP5.3にアップデートする前にMODXを当バージョンにアップデートすることをおすすめします。
変更内容
不具合修正
- 投稿画面を開いているタイミングで権限を変更されると、タブの設定によっては投稿画面を閉じることができなくなるため改善
- dumpSnippetsが有効な時の文字化けを修正
- Wayfinder - デバッグモードでの文字化け修正
- ManagerManager - IE7・IE8でmm_renameSection()とmm_hideSections()が正常に機能しないため修正(仮対応)
- TinyMCEリンクリスト - $tree_styles で指定するリストマーカー文字が正しく表示されないため修正
- Ditto - デバッグコンソールの文字化けを修正
- アップデートスクリプト修正
- $modx->evalSnippets() PHxのmathモディファイアのオプションで「?」を使うと誤動作するため修正
- 非キャッシュ書式のスニペットコールの処理漏れを修正
- Tickerウィジェット・Date Formatウィジェット・Delimited Listウィジェットの3者で初期値を奪い合うバグを修正
- インポート機能修正 - 読み込み対象のファイルのパスに余分なスラッシュがつく
- 翻訳一部修正
- コア内蔵アップデートスクリプトにOnManagerMainFrameHeaderHTMLBlockイベントの更新が反映されてなかったため修正
- サンプルコンテンツの投稿者IDが -1 になっているものがあるため修正
- Ditto同梱PHx dateモディファイアの文字化け対応
- $modx->evalSnippets()の処理を厳密に行なうように改善([[を含むかどうかだけの判定では誤動作が起きる可能性があるため)
- phpmailer - PHP5.3で非推奨の関数を差し替え(これが原因でメールを送信できないケースがあるため)
- PHP5.3環境でmagic_quotes_gpcをOnにしているケースに対応
改善
- /assets/js/ディレクトリ内の不要なファイルを整理(jquery.jsだけが残りました)
- managermanager - showimagetvs.php - 貼り付けたパスがサイトルートからの絶対パスでもプレビューできるように改善
- jqueryアップデート(1.7)
- グローバル設定更新時、サーバの設定によっては意図しないページにリダイレクトされるため修正
- TinyMCEアップデート(->3.4.7)
- カスタムウィジェットの@EVAL処理において、値が空でも処理を行なうように改善(入力されてない場合はxxxを行なう、という処理が可能)
- phpmailer.lang-en.phpの改行コードをlfに変更
- ログイン画面の内容をプラグインで変更できるようにテンプレート読み込みタイミングを調整
- 管理画面ダッシュボードの内容をプラグインで変更できるようにテンプレート読み込みタイミングを調整
- 言語ファイル - ウェブユーザーまわりの表現を調整
- サイトツリー - リソースグループに属するリソースのアイコンを調整(錠前・鍵の2種類のイメージがあり、機能が違うように連想されてしまうため)
- document_data.static.php - 一覧の出力順を改善
- document_data.static.php - グローバル設定でMETAタグ設定が無効になっている場合は関連部分の処理を行なわない
- document_data.static.php コード整理
- MODXのタグ(スニペットコールなど)をGPCでまるごと削除せず適当に無害化するように改善
- Wayfinder - showPrivateパラメータを追加(グループ属性を持つリソースも取得できるようにする)
- QuickManager - colorboxを1.3.8にアップデート
- TinyMCE - ファイルブラウザ関数をすでに読み込んでいる場合はロードしないように改善
- ファイルブラウザ呼び出し関数の関数名modx_fbをmceOpenServerBrowserに変更(コア内蔵の関数名に合わせると分かりやすいため)
- グローバル設定で「相対パスを渡す」を「はい」にしている時の処理を改善
- E_DEPRECATEDエラーの場合は処理を止めないように改善(ログには記録します)
- logEvent()を少し早めのタイミングで実行するように改善(ログに刻んだ後でエラーで止めるかどうかを判定させるケースがあるため)
- PHP5以降で追加された新しいPHPエラータイプの取得に対応
- dittoのfilterオプションを調整(もともと間違ってるようだけど一部を本来の仕様どおりに)
- tinymce.linklist.php $limit・$recent オプションを追加
- tinymce.linklist.php breadcrumbモードの時の区切り文字を改善(インデントずれ)
- tinymce.linklist.php include->include_once
- tinymce.linklist.php 相対パスでincludeせずrealpath()で絶対パスを求める
- tinymce.linklist.php $modx->getFullTableName()を使う
- tinymce.linklist.php 一部処理を最適化
- tinymce.linklist.php 処理をclassにまとめる
- スタイルが古いウィジェットを3つ削除(marquee・ticker・floater)
- Ditto - xml.format.inc.phpの文字化け改善
- デバッグコンソールを開くリンクにマウスを重ねた時のポインタを改善
- プレースホルダとして出力するパスの表現をMODX流に揃える(スラッシュで閉じる)
- Dittoのfilterオプション - 「<=」「>=」スイッチの実装を改善
- Dittoのfilterオプション - スイッチの先頭に「!」を付けると動作を反転するフリップモード機能を追加
- Dittoのfilterオプション - スイッチfind/search/regex/pregを追加
- Dittoのfilterオプション - 変数名として$valueを他の用途で使いたいので配列名$valueを$optionsに変更
- Dittoのfilterオプション - スイッチまわりを整理
- Dittoのfilterオプション - ソース値,スイッチ,基準値の順番でも自動的に読み替えて正しく処理できるよう改善
- filter.class.inc.phpコード整理
- Dittoのfilterオプションで@EVALを使う時の演算子として「<>」「=~」「!~」を追加
- Dittoのfilterオプションで@EVALを使う時に「return」「;」を省略した場合に自動的に追加
- Dittoのfilterオプションで@EVAL・@EVAL:どちらも使えるようにする
- $modx->evalSnippets() コード整理
- インポート機能改善 - トップページのmenuindexを0にセット
- import_site.static.php コード整理
- エクスポート機能改善 - 書き出すHTMLソース中の文字列を任意に変更するオプション
- アップデートの必要がないエレメントを空アップデートしないようにインストーラを改善
- デモコンテンツ「新着情報の一覧」のDittoテンプレートを調整
- setup.info.php コード整理
- refresh_site.dynamic.php 変更があった場合のみメッセージを表示するように改善
- refresh_site.dynamic.php 公開対象リソースのチェック文条件にwhere published=0を追加
- refresh_site.dynamic.phpのSQLクエリ文をDBAPIに変更(公開・非公開のカウントを正確に行なえないため)
- refresh_site.dynamic.php コード整理
- evalSnippetsメソッド整理
- mutate_content.dynamic.php コード整理
- TinyMCE モーダルダイアログ表示時の背景色を暗めに設定
- TinyMCE myCustomOnChangeHandler関数の処理をどこでも使ってなかったため削除
- TinyMCEの「テキストとして貼り付け」のボタンの動作をstickyに
- system_settings.php SQL文の「name」をバッククォートで囲む
- mutate_content.dynamic.php a要素のhref="javascript:void(0);"を削除(datepickerの誤動作を招くため)
- コア内蔵アップデートスクリプト・コード整理
- ManagerManagerをOnManagerMainFrameHeaderHTMLBlockに対応(イベントが利用できる場合だけ)
- datepicker.js IE対応(new Element)
- datepicker.js ソースフォーマット(スペースをタブに)
不具合報告・改善要望について
アップデートの手順
https://modx.jp/docs/update.html
上記を参照してください。
主な改善内容
▲/assets/js/ディレクトリ内の不要ファイルを削除しました。
▲エクスポート時にファイル中の任意の文字列を置換できるようにしました。baseタグの書き換えに用いると、ホストが異なるステージング環境との行き来に便利です。
▲ログイン画面のカスタマイズ方法を改善しました。上記はカスタマイズ例です。
従来は /assets/templates/manager/login.html を書き換えることでログイン画面をカスタマイズしていましたが、MODXをアップデートする際に誤って上書きしてしまう可能性があります。これを防ぐために、プラグインでカスタマイズできるようにしました。
まず「ログイン画面」など任意の名前でチャンクを作り、login.htmlをテキストエディタで開き、内容をコピーして貼り付けて保存します。このチャンクの内容をカスタマイズしてください。
global $tpl;
$tpl = $modx->getChunk('ログイン画面');
次に、上記のようなプラグインを作ってOnManagerLoginFormPrerenderイベントにフックして保存します。プラグイン名は何でもかまいません。
上記のようにチャンクをストレージとして用いる場合は、カスタマイズコード内ではPHP文などのロジックを記述することはできません。動的出力が必要な場合は、プラグイン内でsetPlaceholder関数を用いてプレースホルダを作成してください。または、$modx->getChunk関数を用いずinclude関数を用いてファイルから読み込むようにすれば、普通にPHP文を使うことができます。
カスタマイズコードの呼出元がプラグインなので、ブラウザや曜日・時間帯など条件によって動的にデザインを変更することも可能です。
global $tpl;
$tpl = $modx->getChunk('ログイン画面');
$tpl = $modx->parseDocumentSource($tpl);
$modx->parseDocumentSource関数の処理を通すと、スニペット・チャンク・リンクタグなども使えるようになります。
▲同様の手順で管理画面ダッシュボードのデザインを変更できます。
▲HTMLコードをまるごと書き換えることができるので、レイアウトも自由にできます。
「ダッシュボード」など任意の名前でチャンクを作り、/assets/templates/manager/welcome.html の中身を貼り付けます。これをカスタマイズ元とするとよいでしょう。
global $tpl;
$tpl = $modx->getChunk('ダッシュボード');
次に、上記のような内容のプラグインを作ってOnManagerWelcomePrerenderイベントにフックします。
ログイン画面の場合と同じように、$modx->parseDocumentSource関数を通せばスニペットやチャンクなどが使えるようになります。
▲グループに所属するリソースのアイコンイメージを揃えました。それぞれコンテナかどうかの違いだけですが、アイコンのイメージが違うと複雑に感じられます。
▲Wayfinderに &showPrivateパラメータを追加しました。従来はウェブユーザ領域として設定したリソースの情報を取得できなかったため、Wayfinderを会員制サイトの構築に用いることができませんでしたが、&showPrivateパラメータを用いると取得できるようになります。
▲アップデート時に、アップデートの必要があるエレメントのみを列挙するように変更しました。従来はバージョンが変わってないものも全て列挙していたので、重要なアップデートを見逃すことがありました。
▲PHP5.3環境でmagic_quotes_gpcを有効にしている場合に、リソースなどを更新するたびにダブルクォートの直前にバックスラッシュ(または半角の¥)が付加される不具合があったため、修正しました。
もともとmagic_quotes_gpcを有効にして運用しているケースで、PHPを5.3にアップデートするとこのような状態になります。デフォルトでmagic_quotes_gpcが有効になっているさくらインターネットなどを始め、これに近いケースは多いと考えられますので、PHP5.3にアップデートする予定がある場合は、早いうちに当バージョンへのアップデートを推奨します。
次回リリースについて
現在のところ来月はリリースを行なう予定はありません。Github移行や1.0.6リリースに向けた本家開発チームとの調整を優先します。
以上、ご意見ありましたらフォーラムまたは問い合わせフォームからフィードバックをお願いします。