カテゴリー : MT_CUSTOMIZE

イメージのアップロード時に追加タグを挿入

イメージを貼り付けたときに回り込みの設定やイメージ周囲の幅を設定しているのですが、これも毎度毎度入力する手間を省くために以前からやってたので追加しときます。やり方はsoanblog 創庵さんのところの画像にhspaceタグを自動挿入を参考に以下のようにしました。
/lib/MT/App/CMS.pmの3箇所に以下のようにalignとhspaceを追加します。

my $link = $thumb ? qq(<img src="$thumb" width="$thumb_width" height="$thumb_height" border="0" align="left" hspace="5" />) : "View image";
return <<HTML;
<a href="$url" onclick="window.open
(‘$url’,’popup’,’width=$width,height=$height,scrollbars=no,resizable=no,toolbar=no,
directories=no,location=no,menubar=no,status=no,left=0,top=0′); return false">$link</a>
HTML
} elsif ($q->param(‘include’)) {
(my $fname = $url) =~ s!^.*/!!;
if ($thumb) {
return <<HTML;
<a href="$url"><img alt="$fname" src="$thumb" width="$thumb_width" height="$thumb_height" align="left" hspace="5" /></a>
HTML
} else {
return <<HTML;
<img alt="$fname" src="$url" width="$width" height="$height" align="left" hspace="5" />
HTML
}
} elsif ($q->param(‘link’)) {
return <<HTML;
<a href="$url">Download file</a>
HTML
}

イメージのアップロード先指定

20040801_01.jpgイメージをアップロードするときにいちいちアップロード先をテキストフィールドに入力するのが面倒なので、以前はあらかじめimagesフォルダがデフォルトでテキストフィールドに入力されるようにして、さらにその後に手入力で”200407″というふうにフォルダを付け足していた。しかしこれも面倒なので何かいい方法はないかとググっていたら、画像アップロード先の月別指定方法をnlog(n)さんのところで見つけました。

tmpl/cms/upload.tmplの最後の方の</form>と<TMPL_INCLUDE NAME="footer-popup.tmpl">の間に次のコードを挿入する。

<script type="text/javascript" language="javascript">
<!–
var today = new Date();
var num_year = today.getYear();
var str_year = String((num_year < 2000) ? num_year + 1900 : num_year);
var num_month = today.getMonth() + 1;
var str_month = (num_month < 10) ? "0" + num_month : String(num_month);
document.forms[0].extra_path_archive.value = ‘images/’ + str_year + str_month;
//–>
</script>

ウチの場合imagesフォルダの下に月別のフォルダを作成しているので太字の部分を追加しました。

エントリー編集画面のURLボタンをカスタマイズ

urlを貼り付けるときにいちいちtarget=”_blank”を付け加えるのが面倒なので、mt.jsのfunction insertLink (e, isMail)というjavascriptの項目に下の太字部分を追加して、デフォルトでtarget=”_blank”が入るように改良した。

function insertLink (e, isMail) {
if (!canFormat) return;
var str = getSelection(e);
if (!str) return;
var my_link = isMail ? prompt(‘Enter email address:’) : prompt(‘Enter URL:’, ‘http://’);
if (isMail) my_link = ‘mailto:’ + my_link;
if (my_link != null)
setSelection(e, ‘<a href="’ + my_link + ‘" target="_blank">’ + str + ‘</a>’);
return false;
}

エントリー編集画面にdecodeボタンをつける

エントリーを書くときに、例としてタグを書く場合などにはそのまま書いちゃうとタグとして認識されてしまうので、PC Blog @ Noel Cafeさんのところを参考にデコードボタンを作りました。
これで2系の時にやっていたようにdecodeボタンができました、感謝感謝。

tmpl/cms/bm_entry.tmplとedit_entry.tmplをエディタで編集する。

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="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="24" height="18" border="0" /></a>’);

そしてjavascriptを別途記述してあるmt.js(mt.cgiがあるフォルダの中)の

function formatStr (e, v) {
if (!canFormat) return;
var str = getSelection(e);
if (!str) return;
setSelection(e, ‘<‘ + v + ‘>’ + str + ‘</’ + v + ‘>’);
return false;
}

の下あたりにでも以下を追加。

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-button.gif(18×24)を作ってimagesフォルダの中にアップロード。

クイックポストの改良

lib\MT\App\CMS.pmの887行目あたりにある

$param{text} = sprintf qq(<a title="%s" href="%s">%s</a>\n\n%s),

を以下に変更。

$param{text} = sprintf qq(<blockquote><div class="quotetitle"><a title="%s" href="%s" target="_blank">%s</a></div>\n\n%s</blockquote>),