MODx Evolution 1.0.5 をリリースしました
2011年1月21日 19時00分 shortlink:http://modx.jp/?id=334
※当バージョンは、2011年1月26日に告知されたJVN54092716・JVN95385972の脆弱性については修正済みです。
MODx Evolution 1.0.5をリリースします。今回はテンプレート変数まわりの仕様を拡張しました。MODxファンにとっては、期待のアップデートです。
前回の1.0.4J-r5では、環境によってはリソースの保存更新に時間がかかるようになっていました。今回はこれを改善しましたので、お試しください。
■MODx Evolution 1.0.5 日本語版 ダウンロード
http://code.google.com/p/modx-ja/downloads/detail?name=modx-1.0.5J.zip
データベース構造に変更があったため、無理を避けて今回はコア単体のアップデートについて検証を行なってません。アップデートする場合はインストーラを用いてください。
注意事項
mm_widget_showimagetvsで軽度の不具合がある可能性
公開直後に判明した不具合。ManagerManagerのmm_widget_showimagetvsウィジェットを用いてる場合、投稿画面内に何も入力・変更を加えてない場合でも、ページ遷移時に無条件にアラートが表示されることがあります。再現条件などは現在調査中です。
http://code.google.com/p/modx-ja/downloads/detail?name=showimagetvs038.zip
上記のファイルに差し替えることで、アラートは表示されなくなります。それでも特に問題を感じない場合はとりあえず上記のファイルを利用してください。開発チームとしては、この件について一カ月以内に何らかの対応をしたいと思います。
@Bindingsコマンド(アット・バインド)の記述について
@INHERITなど、@Bindingsコマンドは大文字で記述してください。小文字は受け付けなくなりました。また、今回はテンプレート変数の入力タイプやウィジェットの仕様が大幅に拡張されたので、@Bindingsを用いず、既定値や出力をコントロールするよう改めることもおすすめできます。投稿画面に@Bindingsコマンドを表示せずにすむため、ユーザフレンドリーです。
リソース新規作成時のテンプレート設定について
リソースを新規作成する時のテンプレートの初期選択は、グローバル設定を用いるようになりました。
変更内容
一部、英語のままですみません。
脆弱性対応
- インストーラのXSS脆弱性を修正
- 浮動小数点の処理に関する深刻なバグがPHPに見つかったため、MODx側でも可能な限り対応。(※対応範囲の限界がありますので、本来はサーバ側で対応されるべきです)
- AjaxSearchに複数の脆弱性が見つかったため修正(※詳細については後日説明します)
不具合修正
- Dittoが出力するRSSフィードのlink要素がRSSフィード自体のURLになっていたため修正
- MODxMailer.class(PHPMailer)に差出人名など文字化けの問題が残っていたため修正
- 入力された全角エイリアスを正しく処理できないため修正(※全角エイリアスを入力するためには専用プラグインが必要)
- テンプレート変数の入力タイプの設定を「Date」、ウィジェットの設定を「Unixtime」とした時、正しく値を返さないことがあるため修正
- published date always set due to ManagerManager demo rules
- インストール時のMySQLストリクトモード判定に問題があったため修正
- Fix @SELECT multi-select listbox TV losing its value when switching Content field "Editor to use"
- stop parser from running case-mismatched snippet calls
- Fix Hiding "Validate Referer" warning messes up the setting itself
- Fix TV date-layer display problem with multiple datefields in FF 3.6.3
- Fix error displaying filenames with non-Latin charsets
- Fix Document tree not loading in children
- Fix web_groups and member_groups tables can have duplicate entries
- イメージエディタのパス扱いの不具合を修正
- Fixed bug in DocManager where it would not create new TV values, only update existing ones
- Fix for file manager when aggressive caching/pre-fetching is used at the ISP level (e.g. satellite internet)
改善
- AjaxSearchで全角スペースをキーワード区切りに使えるようにする
- ファイルブラウザのファイル種別ごとのダミーアイコンのデザインを更新
- TinyMCEを3.3.9.3にアップデート
- 管理画面デザインを改善
- ログイン画面のデザインを改善
- 同梱テンプレートをMODxHostから新テンプレートxRayに変更
- リソース新規作成画面に削除ボタンとプレビューボタンは不要なため削除
- インストーラで「サンプルサイトをインストール」を選択した時に、必要なオプションを適切に自動選択
- Add context parameter to the getLoginUserName() API function
- getDocumentObject allows full alias path to be specified
- Quick Manager+を1.5.5にアップデート
- ManagerManagerを0.3.9にアップデート
- AjaxSearch updatedを1.9.2にアップデート
- Default Chunk for ManagerManager rules now "mm_rules"; Since demo rules are "mm_demo_rules", MM is now disabled on install
- リソース新規作成時のテンプレート選択を、これまでプラグインで実装していたのをコア側で対応
- テンプレート変数の新規作成時に変数名をチェック
- Better handling of Template Switcher plugin
- Manager and Web User comments field no longer limited to 255 characters
- New system setting to strip characters from files uploaded in Manage Files (using same logic configured for aliases)
- 「ホストネームを解決」のconfigをグローバル設定から削除
- Let manager themes have their own welcome.html page
- $modx->getParentIds()メソッドと$modx->getChildIds()メソッドを最適化
- Improvement in config.inc.php file (new installs only) so proper MODX_SITE_URL constant is set in API Mode
- Improvements to installer with respect to handling of Demo Site option and related elements
- Laid foundation for "installsets" or preset groups of installer elements
- Links updated in demo site content
- Enhance ordering logic when displaying lists of TVs
- [#3064][#3065] Replace calls to deprecated db-related parser methods with calls to db class methods
- Automatically regenerate siteCache if it not found
- @INHERIT improved to work with @FILE, and to allow additional data after the @INHERIT
- Improve and fix bugs in markup on Edit Resource screen
- remove debugging output from DocManager when updating TVs
- Improve DocManager usability by adding checkboxes to TVs and removing "ignore list", which was hard to use
- Allow custom TemplateVariables and output widgets
- jQuery libraryを1.4.4にアップデート
- New event allows plugin to inject custom markup into manager's header (header.inc.php)
- Wayfinder optimization when hideSubMenus is enabled
- Breadcrumbs optimizations
不具合報告・改善要望について
本家開発フォーラムのリリース文及びサポート
MODX Evolution 1.0.5 Tightens Security and Lots of Little Improvements
アップデートの手順
https://modx.jp/docs/update.html
上記を参照してください。アップデートを始める前に必ずデータベースのバックアップをとりましょう。
次回リリースについて
次回のリビジョンアップは2月中旬を予定しています。
スクリーンショット
▲同梱のサンプルテンプレートをMODxHostからxRayに変更。画像を含めても27KB程度です
▲body要素が20行足らずのコンパクトなテンプレートです。チャンクも使ってないので実質これだけ
これまで同梱されていたMODxHostテンプレートは、デモンストレーションとしては古い要素が多く、参考にしづらい構成となっていました。見通しのよい学習用テンプレートを添付することでユーザの理解を促すことがxRayテンプレートの目的であり、デモンストレーションに関しては今後は公式サイトを利用する予定です。
xRayテンプレートはBaserCMSの同梱テンプレートのhtml構成を参考にしています。
▲新しいシステムイベント「OnManagerMainFrameHeaderHTMLBlock」が追加されました
システムイベント「OnManagerMainFrameHeaderHTMLBlock」を用いることで、管理画面内の任意のページのhead要素をカスタマイズできます。
http://bugs.modx.com/issues/2627
詳細はこちら。$modx->regClientStartupHTMLBlock()メソッドのような使い方を想定しており、任意のJavaScriptやスタイルシートの読み込みをhead要素内に割り込ませることができます。
▲テンプレート変数の構成要素である「入力タイプ」を自作できるようになりました。
<input type="text" id="tv[+field_id+]" name="tv[+field_id+]" value="[+field_value+]" [+field_style+] tvtype="[+field_type+]" onchange="documentDirty=true;" style="width:100%" />
上記のように記述すれば、通常のテキスト入力タイプのフォームを出力することができます。これをベースに、好みに応じて自由にカスタマイズするとよいでしょう。
たとえば、上記のような仕組みを組み付けることができるようになります。
[*リソース変数*] [*テンプレート変数*] [(コンフィグ変数)] {{チャンク}} [[スニペット]] なども使うことができます。また、@FILE・@INCLUDE・@CHUNK・@EVALなどのBindingsコマンドも使うことができます(※@INCLUDEコマンドは今回新しく採用されました)。これにより、MODxのテンプレート変数の可能性は一気に広がります。
▲ウィジェットを自由に自作できるようになりました
ウィジェットは本来は便利な仕組みですが、かゆいところに手が届かないウィジェットが多く、実用的にはスニペットで代用することが多いです。たとえばimageタイプのウィジェットは、画像の幅や高さを指定できないことが残念と感じていた人は多いのではないでしょうか。かといって、気軽にウィジェット代替のスニペットを書けるユーザばかりでもありません。
今回は、この点を改善しました。
<img src="[+value+]" width="250" />
たとえば上記のようなウィジェットを作れば、画像の横幅を250pxに揃えて出力できます。もちろん、画像を入力していない場合はimgタグごと何も出力しません。
<img src="[+value+]" width="250" alt="[*pagetitle*]の写真" />
リソース変数やコンフィグ変数も使えるので、上記のような書き方もできます。
<img src="phpThumb.php?src=[+value+]&w=46&h=46&zc=1" />
上記のようなウィジェットを作ると、phpThumbを用いて画像のサムネイルを動的に得ることができます。
<img src="phpThumb.php?src=[+value+]&w=200&h=150&q=90&fltr[]=usm|80|0.5|3&fltr[]=wb" />
phpThumbを使うなら、画質やホワイトバランスも調整できます。
<a href="http://maps.google.co.jp/maps?f=q&source=s_q&hl=ja&geocode=&q=[+value+]">地図を開く</a>
こう書けばキーワードでGoogleマップへのリンクを張ることができます。
<iframe width="425" height="350" frameborder="0" src="http://maps.google.co.jp/maps?ll=[+value+]&output=embed&z=15"></iframe>
リンクじゃなくて地図そのものを貼り付けたりとか。座標情報を取得する必要がありますが。
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/[+value+]" frameborder="0" allowFullScreen></iframe>
Youtubeの動画を埋め込むならこのように。テンプレート変数にはYoutubeの動画IDを入力します。
今まではphpプログラムを書く以外にこういった変換処理を行う方法がなかったのですが、ウィジェットを使えば、最低限のhtmlの読み書きができれば誰でも簡単に仕組みを作ることができます。
※MODx Revolutionではチャンクを使って同等の処理ができます。しかも複数のパラメータを指定したりプロパティセットを定義しておいたりできるので、こういった使い方を究めたい場合はRevolutionが向いているかもしれません。
PHPを読み書きできるなら、@EVALコマンドを用いて以下のような記述も可能です。
@EVAL return number_format($value);
$valueが入力値です。上記の例では、入力された数値を3ケタ区切りに整形して出力します。スニペットと同じですね。
さて、システムイベントOnManagerMainFrameHeaderHTMLBlock・入力タイプとウィジェットの自作を組み合わせることで、ちょっと面白いことができるようになります。jQueryなどAjaxライブラリの使いこなしテクニックが必要になりますが。
たとえば上記動画のようなことができるようになります。JSON形式を用いて、ひとつのテンプレート変数に、個数不定の複数の値を格納しています。
今回のテンプレート変数の機能拡張は、多数のコミッターがアイデアを出し合って、各自がコードとサンプルを持ち寄って実装されました。この機能に関して、詳細なドキュメントの記述も始まりました。MODx開発チームが目標としていたソーシャルコーディングの理想形が実現されています。