« 成り行きでphp化 | メイン | やぎ肉あまいかしょっぱいか »

2004年12月15日

これはMT関係の記事であります。IEで見るとソースコード部のスクロールバーが変だったのに対処してみました。直った、のかな?

MT修正コード置き場

MT-3.121のソースコード中で自分で修正したもの


(html_dir/)mt.js (2004/12/14)
function formatStr (既存を修正)
修正点
・追加するタグの入力がないときは何もしないで戻るようにした
・パラメータ付きのタグに対応できるようにした(どこからか借用)

function formatStr (e, v) {
    if (!canFormat) return;
    if (!v) return;
    var str = getSelection(e);
    if (!str) return;
    var v2 = v.split(" ");
    setSelection(e, '<' + v + '>' + str + '</' + v2[0] + '>');
    return false;
}


function HtmlEncode (追加)
機能
HTML用に特殊文字をエスケープ

function HtmlEncode (e) {
    if (!canFormat) return;
    var str = getSelection(e);
    if (!str) return;
  
    str = str.replace(/\&/g, '&amp;');
    str = str.replace(/\</g, '&lt;');
    str = str.replace(/\>/g, '&gt;');
    //str = str.replace(/\$/g, '&dol;');
    str = str.replace(/\"/g, '&quot;');
  
    // Many thanks to CHEEBOW
    str = str.replace(/\t/g, '    ');
  
    setSelection(e, str);
    return false;
}





(cgi_dir/)lib/MT/Util.pm (2004/12/15)
sub html_text_transform (既存を修正)
修正点
・\r\n→\nの変換は最初に行う(その後の判定文は\r?\n → \nに単純化)。
・<pre>が続かない<blockquote>, <center>, <address> 節には<br />を付ける。
・<textarea>節には<br />を付けない。

sub html_text_transform {
    my $str = shift;
    $str ||= '';
    $str =~ s!\r?\n!\n!g;
    my @paras = split /\n\n/, $str;
    for my $p (@paras) {
        if ($p !~ m@^<(?:h1|h2|h3|h4|h5|h6|table|ol|dl|ul|menu|dir|p|pre|cen_ter|form|fieldset|textarea|select|blockquote>\n?<pre>|addre_ss|div|hr)@i) {
            $p =~ s!\n!<br />\n!g;
            $p = "<p>$p</p>";
        }
    }
    join "\n\n", @paras;
}






(cgi_dir/)php/lib/MTUtil.php (2004/12/15)
function html_text_transform
上記 html_text_transform のphp版、修正点も同一

function html_text_transform($str = '') {
    if ($str == '') {
        return '';
    }
    $str = preg_replace('/\r\n/', "\n", $str);
    $paras = preg_split('/\n\n/', $str);
    foreach ($paras as $k => $p) {
        if (!preg_match('/^<\/?(?:h1|h2|h3|h4|h5|h6|table|ol|ul|menu|dir|p|pre|center|form|select|fieldset|blockquote>\n?<pre|textarea|address|div|hr)/', $p)) {
            $p = preg_replace('/\n/', "<br />\n", $p);
            $p = "<p>$p</p>";
            $paras[$k] = $p;
        }
    }
    return implode("\n\n", $paras);
}

(cgi_dir/)tmpl/cms/edit_entry.tmpl (2004/12/10)
エントリ編集画面のテンプレート
修正点
・タグ入力支援の追加(何でもOK, <pre>, <blockqote>
・htmlエスケープ機能の追加(例示はbody入力部分、太字を追加)

<div class="field">
<div class="field-header">
<div class="field-label"><label for="text"><MT_TRANS phrase="Entry Body"></label></div>
<div class="field-buttons">
<script type="text/javascript">
<!--
if (canFormat) {
    with (document) {
        write('<input name="anytag" id="anytag" value="" maxlength="32" />');
        write('<a title="any" href="#" onclick="return formatStr(document.entry_form.text, document.entry_form.anytag.value)">any</a>&nbsp;&nbsp;');
        write('<a title="pre" href="#" onclick="return formatStr(document.entry_form.text, \'pre\')">pre</a>&nbsp;&nbsp;');
        write('<a title="bq" href="#" onclick="return formatStr(document.entry_form.text, \'blockquote\')">bq</a>&nbsp;&nbsp;');
        write('<a title="Encode" href="#" onclick="return HtmlEncode(document.entry_form.text)"><img src="<TMPL_VAR NAME=STATIC_URI>images/html-encode.gif" alt="Encode" width="22" height="16" /></a>&nbsp;&nbsp;');
  
        write('<a title="<MT_TRANS phrase="Bold">" href="#" onclick="return formatStr(document.entry_form.text, \'strong\')"><img src="<TMPL_VAR NAME=STATIC_URI>images/html-bold.gif" alt="<MT_TRANS phrase="Bold">" width="22" height="16" /></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/html-italic.gif" alt="<MT_TRANS phrase="Italic">" width="22" height="16" /></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/html-underline.gif" alt="<MT_TRANS phrase="Underline">" width="22" height="16" /></a>');
 

面倒だから多言語対応は抜き。追記の部分にも同様に追加。
追記入力部分も同様に追加した。


投稿者 kade : 2004年12月15日 19:55 | MT

トラックバック

このエントリーのトラックバックURL:
http://www.kadesoft.com/cgi-bin/mt3/mt-tb.cgi/23

コメント大歓迎




保存しますか?