MTの編集画面にdecodeボタンを

Movable Type2.661の時、ファイルをいじくって新しいエントリーを作成する画面に<とか>とか&をdecodeするボタンを入れていました。3.01D-jaにして当然のように無くなったので再度いじくり。。。

参考にさせて頂いた(そっくりそのまま真似ですが^^;)のはPC Blog @ Noel Cafe様の記事です。ありがとうございました。

以下、一応作業メモ

いじくったのはMTPath/tmpl/cms/edit_entry.tmplと、MTPath/mt.jsの2つ

edit_entry.tmplの171行目あたりの以下の部分を探して、

write(‘<div style="float: right;">’);
write(‘<a title="<MT_TRANS phrase="Bold">" href="#" onclick="return formatStr(document.entry_form.text, \’strong\’)"><img src="<TMPL_VAR NAME=STATIC_URI>images/bold-button.gif" alt="<MT_TRANS phrase="Bold">" width="24" height="18" border="0" /></a>’);
write(‘<a title="<MT_TRANS phrase="Italic">" href="#" onclick="return formatStr(document.entry_form.text, \’em\’)"><img src="<TMPL_VAR NAME=STATIC_URI>images/italic-button.gif" alt="<MT_TRANS phrase="Italic">" width="24" height="18" border="0" /></a>’);
write(‘<a title="<MT_TRANS phrase="Underline">" href="#" onclick="return formatStr(document.entry_form.text, \’u\’)"><img src="<TMPL_VAR NAME=STATIC_URI>images/underline-button.gif" alt="<MT_TRANS phrase="Underline">" width="24" height="18" border="0" /></a>’);
write(‘<a title="<MT_TRANS phrase="Insert Link">" href="#" onclick="return insertLink(document.entry_form.text)"><img src="<TMPL_VAR NAME=STATIC_URI>images/url-button.gif" alt="<MT_TRANS phrase="Insert Link">" width="26" height="18" border="0" /></a>’);

この次の行あたりに、以下を挿入。

write(‘<a title="<MT_TRANS phrase="Decode">" href="#" onclick="return Decode(document.entry_form.text)"><img src="<TMPL_VAR NAME=STATIC_URI>images/decode-button.gif" alt="<MT_TRANS phrase="Decode">" width="26" height="18" border="0" /></a>’);

次にmt.jsに以下を追加。

function Decode(e) {
if (!canFormat) return;
var str = getSelection(e);
if (!str) return;
str = str.replace(new RegExp("&","g"), "&amp;");
str = str.replace(new RegExp("<","g"), "&lt;");
str = str.replace(new RegExp(">","g"), "&gt;");
str = str.replace(new RegExp(‘"’,"g"), "&quot;");
setSelection(e, str);
return false;
}

あとはDecode用ボタンdecodeをMTPath/imagesフォルダにアップして完了。画像アップが面倒であれば、画像の部分をdecodeとテキストにしてもOKかと思います。

これだけでは、編集画面の追記部分のテキストにボタンが通用しないので、編集した

<script type="text/javascript">
<!–
if (canFormat) {
with (document) {
write(‘<div style="float: right;">’);
write(‘<a title="<MT_TRANS phrase="Bold">" href="#" onclick="return formatStr(document.entry_form.text, \’strong\’)"><img src="<TMPL_VAR NAME=STATIC_URI>images/bold-button.gif" alt="<MT_TRANS phrase="Bold">" width="24" height="18" border="0" /></a>’);
write(‘<a title="<MT_TRANS phrase="Italic">" href="#" onclick="return formatStr(document.entry_form.text, \’em\’)"><img src="<TMPL_VAR NAME=STATIC_URI>images/italic-button.gif" alt="<MT_TRANS phrase="Italic">" width="24" height="18" border="0" /></a>’);
write(‘<a title="<MT_TRANS phrase="Underline">" href="#" onclick="return formatStr(document.entry_form.text, \’u\’)"><img src="<TMPL_VAR NAME=STATIC_URI>images/underline-button.gif" alt="<MT_TRANS phrase="Underline">" width="24" height="18" border="0" /></a>’);
write(‘<a title="<MT_TRANS phrase="Insert Link">" href="#" onclick="return insertLink(document.entry_form.text)"><img src="<TMPL_VAR NAME=STATIC_URI>images/url-button.gif" alt="<MT_TRANS phrase="Insert Link">" width="26" height="18" border="0" /></a>’);
write(‘<a title="<MT_TRANS phrase="Decode">" href="#" onclick="return Decode(document.entry_form.text)"><img src="<TMPL_VAR NAME=STATIC_URI>images/decode-button.gif" alt="<MT_TRANS phrase="Decode">" width="26" height="18" border="0" /></a>’);
}
}
// –>

の(document.entry_form.text)の部分を(document.entry_form.text_more)に変更して、edit_entry.tmplの次の部分の直後にいれました。

<TMPL_IF NAME=DISP_PREFS_SHOW_EXTENDED>
<div class="field">

これで、編集画面の「追記(extend)」の横にも同じようなボタンが現れているはずです。

3 Responses to “MTの編集画面にdecodeボタンを”

  1. エントリーの投稿画面の修正

    エントリーの投稿画面にデコードや文字色指定のリストボックスを追加しているうち「エ…

  2. MTの編集画面を使いやすく

    Movable Typeの編集画面をすこし弄って使いやすくしてみました。 自分の…

  3. yu-ra says:

    すみません。
    トラックバック飛ばしたJack in the Box.の管理人です。
    いくつもPing飛ばしてしまったようで、本当に申し訳ないです。

Leave a Reply