Mozilla で MT の編集ボタンその3
2004-5-6 07:21
以前に、MovableType のエントリー編集画面のボタンを Mozilla でも有効にする方法を紹介しました。
またボタンをリンクにして、数を増やす方法も紹介しました。
しかし、このとき紹介したスクリプトでは、キャレットの位置が先頭に戻ってしまうので、改良してみました。
また、簡易検索機能を付けてみました。
これは Mozilla の JavaScript でドキュメント化されていない setSelectionRange という函数を使います。
tmpl/cms/edit_entry.tmpl というファイルを編集します。
下記のコードを 155 行目あたりに次の JavaScript を加えます。
<TMPL_IF NAME=AGENT_MOZILLA>
function getSelectStart(s) {
return s.selectionStart;
}
function getSelectEnd(s) {
return s.selectionEnd;
}
function getTextLength(s) {
return s.textLength;
}
function getMozSelection(s) {
return (s.value).substring(getSelectStart(s), getSelectEnd(s))
}
function setMozSelection(a,z) {
s.selectionStart = a;
s.selectionEnd = z;
}
function wrapSelection(v) {
var s = document.forms['entry_form'].text;
var ss = getSelectStart(s);
var se = getSelectEnd(s);
var s1 = (s.value).substring(0,ss);
var s2 = (s.value).substring(se,getTextLength(s));
s.value = s1 + '<' + v + '>' + getMozSelection(s) + '</' + v + '>' + s2;
se = se + v.length * 2 + 5;
s.setSelectionRange(ss, se);
s.focus();
}
function insertMozLink() {
var s = document.forms['entry_form'].text;
var ss = getSelectStart(s);
var se = getSelectEnd(s);
var s1 = (s.value).substring(0,ss);
var s2 = (s.value).substring(se,getTextLength(s));
var sel = getMozSelection(s);
var my_link = prompt('Enter URL:', 'http://');
if (my_link != null) {
s.value = s1 + '<a href="' + my_link + '">' + sel + '</a>' + s2;
}
se = se + my_link.length + 15;
s.setSelectionRange(ss, se);
s.focus();
}
function searchInText() {
var s = document.forms['entry_form'].text;
var sw = document.forms['entry_form'].search_word;
if (sw.value != null) {
var r = new RegExp(sw.value, "i").exec(s.value);
if (r) {
s.setSelectionRange(r.index, r.index + sw.value.length);
s.focus();
}
}
}
</TMPL_IF>
また、450 行目付近の </script> の後に、次のコードを加えます。
<TMPL_IF NAME=AGENT_MOZILLA>
<table id="mozbuttons" border="0" cellspacing="4" cellpadding="0">
<tr>
<th>Block</th>
<td nowrap>
<a href="javascript:wrapSelection('div')" accesskey="d">Div</a>
<a href="javascript:wrapSelection('p')" accesskey="p">P</a>
<a href="javascript:wrapSelection('pre')" accesskey="R">pRe</a>
</td>
</tr>
<tr>
<th>Inline</th>
<td nowrap>
<a href="javascript:wrapSelection('strong')" accesskey="s">Strong</a>
<a href="javascript:wrapSelection('em')" accesskey="m">eM</a>
<a href="javascript:wrapSelection('kbd')" accesskey="k">Kbd</a>
<a href="javascript:wrapSelection('samp')">samp</a>
<a href="javascript:wrapSelection('var')">var</a>
<a href="javascript:wrapSelection('cite')" accesskey="c">Cite</a>
<a href="javascript:insertMozLink()" accesskey="l">Link</a>
</td>
</tr>
<tr>
<th>Search</th>
<td>
<input type="text" name="search_word" accesskey="w" />
<a href="javascript:searchInText()" accesskey="/">search</a>
</td>
</tr>
</table>
</TMPL_IF>
これでリンクが利用できるようになりました。アクセスキーも一応利用できます。
ただし、リンクの挿入についてはアクセスキーだとうまく行きません。
検索はまだ簡単なもので、最初にマッチした項目が自動選択されるだけです。
MT のバージョンアップの度に書き換えないといけないのが面倒ですが。
追記
さらに、追記、概要部分にもコードを挿入できるように改良しました。
Mozilla でも MT の編集ボタンを有効に カスタマイズ編 2
前回のエントリーのままでは編集ボタン(リンク)を押すと、キャレットの位置が先頭に戻ってしまう不具合がありましたが、提案者のふみかさんが改善してくれました。
更にボタン(リンク)を押した時、選択状態なら挿入後の最後の位置へ、未選択ならタグの間にカーソルを移動…
トラックバック by Code-404 — 2004-05-6 21:30
Mozilla で MT の編集ボタン
Mozilla で MT の編集ボタンその3
以前その1はやっていたのでこれを参考にしてボタンの追加…
トラックバック by ピヨログ — 2004-09-19 00:19
Mozilla でも MT の編集ボタンを有効に カスタマイズ編 2
前回のエントリーのままでは編集ボタン(リンク)を押すと、キャレットの位置が先頭に戻ってしまう不具合がありましたが、提案者のふみかさんが改善してくれました。
更にボタン(リンク)を押した時、選択状態なら挿入後の最後の位置へ、未選択ならタグの間にカーソルを移動…
トラックバック by Code-404 — 2004-10-20 19:16