MODx Evolution 1.0.5 をリリースしました

2011年1月21日 19時00分 shortlink:http://modx.jp/?id=334

※当バージョンは、2011年1月26日に告知されたJVN54092716JVN95385972の脆弱性については修正済みです。

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コマンドを表示せずにすむため、ユーザフレンドリーです。

リソース新規作成時のテンプレート設定について

リソースを新規作成する時のテンプレートの初期選択は、グローバル設定を用いるようになりました。

変更内容

一部、英語のままですみません。

脆弱性対応

不具合修正

改善

不具合報告・改善要望について

フォーラムまたは問い合わせフォームを通じてご連絡ください。

本家開発フォーラムのリリース文及びサポート

MODX Evolution 1.0.5 Tightens Security and Lots of Little Improvements

サポート・ディスカッション

アップデートの手順

http://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開発チームが目標としていたソーシャルコーディングの理想形が実現されています。

<input type="text" id="tv" name="tv" value=""  tvtype="" onchange="documentDirty=true;" style="width:100%" />

PR

  • KAGOYA
  • ASP at AKIHABARA Japan
  • CMS AWARDS 2007 Winner
ページトップへ