MODx 0.9.6.3でのテンプレート変数名に注意
多くの修正が行われたMODx 0.9.6.3がリリースされましたが、0.9.6.3でテンプレート変数を利用する場合には多少注意が必要です。
MODx 0.9.6.3では、テンプレート変数名に「-」、「.」、「_」の記号が使用できるようになりました。しかし、それに伴って、テンプレート変数名に記号を含む入力タイプが「Date」のテンプレート変数で、日時入力のためのカレンダーが機能しなくなりました。また、テンプレート変数名を利用して管理画面を拡張するような、一部のプラグイン等で問題が起こる可能性があります。
記号を使用したテンプレート変数名は、URIエンコードされて、管理画面内に出力されるようになっています。例えば、「tpl.article」というテンプレート変数名は「tpl%2Earticle」のようにエンコードされ、管理画面内のXHTMLの属性値やJavaScriptの関数名として出力されます。
しかし、XHTMLやJavaScriptの仕様上、JavaScriptの関数名やXHTMLの一部の属性では「%」を使用することはできなかったように思います。入力タイプが「Date」のテンプレート変数のカレンダーが動作しないことがあるのも、JavaScriptの関数名に「%」が使用されることがあるためです。
カレンダーに関しては、JavaScriptの修正で対応できると思われますが、0.9.6.3では修正は行われませんでした。プラグインは、管理画面内に埋め込まれた変数名をURIデコードすることで対応できる可能性があります。不正なJavaScriptであるため、カレンダーやJavaScriptによるDOM操作を行うプラグインは動作しませんでした。DOM操作を行わないプラグインでは、管理画面から送信されたテンプレート変数名をURIデコードすることで対応できる可能性があります。しかし、仕様に準じていないXHTMLやJavaScriptに合わせて、既存のプラグイン等が修正されていった場合、混乱が起きる可能性もあります。
テンプレート変数名に記号を使用したテンプレート変数の値が保存できない(フォームからPOSTメソッドで正しくデータを送信できない)、という問題を修正するために行われた変更ですが、以上のようなことを考えると、0.9.6.2以前に使用できた記号も含めて、0.9.6.3ではテンプレート変数名には記号を使用しないほうがよいかもしれません。
テンプレート変数に記号が使えるのは便利ですが、記号は一切使えなくしてしまったほうがよかったのかもしれませんね。何か良い方法があれば、是非、JIRAの該当の問題にコメントしてください。
とは言え、しばらくはこの問題はそのまま残りそうな気がするので、カレンダーの問題に関しては、対応できそうであれば、拙作のDatePickerプラグインで対応するつもりです。
