ある時、MovableTypeで記事やウェブページの本文(text-filed)の部分だけ編集して更新をクリックしてもまったく反映されないという現象に気が付いた。反映されずに元に戻ってしまうのは本文エリアだけで、カスタムフィールドなどで作成した部分など他の編集箇所は反映されて、本文のみ編集内容が無視されてしまう状況。
Chromeのフォーム自動補完機能がなにか悪さしているのかと思って、FirefoxやIEで試してみるとなんの問題もなく編集することができている。やはりChrome特有のバグなのか...。
さらに調査目的で最新VersionのMovabletType6.11をインストールしてみると、この現象は発生しなかった。こうなると昨年、MT4.2⇒MT6.05へアップグレードしたことによる弊害なのだろうか。原因がはっきりしないので、とりあえずtext-filedまわりでMovableType6.05と6.11の差異を洗い出してみた。
■MovableType6.05 /tmpl/cms/edit_entry.tmpl(1315行目あたり)
<mt:if name="config.previewinnewwindow"> jQuery('button.publish').click(function(event) { app.clearDirty(); app.stopAutoSave(); jQuery('form#entry_form input[name=__mode]').val('save_entry'); jQuery('form#entry_form').removeAttr('target'); jQuery(this).attr('disabled', 'disabled'); jQuery('form#entry_form').submit(); }); </mt:if>
■MovableType6.11 /tmpl/cms/edit_entry.tmpl(1315行目あたり)
<mt:if name="config.previewinnewwindow"> jQuery('button.publish').click(function(event) { jQuery('form#entry_form input[name=__mode]').val('save_entry'); jQuery('form#entry_form').removeAttr('target'); jQuery('form#entry_form').attr('mt:once', '1'); }); </mt:if>
この箇所に6.05と6.11に差異が見つかった。
app.clearDirty();
app.stopAutoSave();
この部分が、何をしているのか僕にはよくわからないが、もう記述からみてなんか怪しいのは確か・・・。
他の部分に影響はなさそうなので、edit_entry.tmplを6.11に差し替えてみたら、上手く動いた。