Movable Type で画像挿入時の form 要素について

Movable Type で画像挿入時の form 要素について

Posted at September 26,2007 1:32 AM
Tag:[Entry, MovableType, MTEntryAssets]

Movable Type で画像挿入時の form 要素について、下記のエントリーを拝見して「なるほど!」と思いましたので、ご紹介させて頂きます。

WingMemo: サムネイルリストからブログ記事(エントリー)にリンクを張る (MT4用)

MT4のブログ記事作成で画像を挿入し、テキストエリアを「リッチテキスト」以外で参照すると(あるいは最初から「リッチテキスト」以外で編集すると)画像表示用の img 要素が form 要素で括られます。

<form class="mt-enclosure mt-enclosure-image" mt:asset-id="5"><img class="mt-image-left" style="FLOAT: left; MARGIN: 0px 20px 20px 0px" height="426" alt="tea.jpg" src="http://your-domain/images/hoge.jpg" width="640" /></form>

これは MTEntryAssets タグを有効にするための裏情報になるらしいです(詳細は元記事をご覧ください)。

関連で下記の記事もありました。

The blog of H.Fujimoto画像を挿入したときにformタグがつく理由

この処理が行われることで、ブログ記事で挿入した画像は、MTEntryAssets タグの対象となり、ファイルアップロード機能で、アップロードしただけの画像は(当たり前ですが)MTEntryAssets タグの対象にならないということです。

上記以外の情報として、ソースコードを眺めてみると、lib/MT/Util.pmasset_cleanup というサブルーチンがありました。

sub asset_cleanup {
    my ($str) = @_;
    $str =~ s/
        <(?:[Ff][Oo][Rr][Mm]|[Ss][Pp][Aa][Nn])
        ([^>]*?)
        \s
        mt:asset-id="\d+"
        ([^>]+?>)(.*?)
        <\/(?:[Ff][Oo][Rr][Mm]|[Ss][Pp][Aa][Nn])>
    /
    my $attr = $1 . $2;
    my $inner = $3;
    $attr =~ s!\s[Cc][Oo][Nn][Tt][Ee][Nn][Tt][Ee][Dd][Ii][Tt][Aa][Bb][Ll][Ee]=(['"][^'"]*?['"]|[Ff][Aa][Ll][Ss][Ee])!!;
    '<span' . $attr . $inner . '<\/span>'
    /gsex;
    return $str;
}

このサブルーチンは、lib/MT/Template/ContextHandlers.pm 内で、MTEntryBody タグあるいは MTEntryMore タグの処理の最後で、mt:asset-id="AssetID" の文字列がある場合に起動されます。

sub _hdlr_entry_body {
     :
   (中略)
     :
    # Strip the mt:asset-id attribute from any span tags...
    if ($text =~ m/\smt:asset-id="\d+"/) {
        $text = asset_cleanup($text);
    }
    return $text;
}

ということで、勉強になりました。ありがとうございました。
何故 form タグ?というのが知りたいところです。

関連記事
zenback
人気エントリー
トラックバックURL


コメント

こんにちは。
記事紹介して下さってありがとうございました。

このformタグ、意味が分からずに削除してしまう人も多いような気がしたので(自分もやってたし)、MTEntryAssets タグのために必要なんだということが少しでも多くの人に伝われば嬉しいです。

[1] Posted by TAEKO : September 27, 2007 1:39 PM

>TAEKOさん
こんにちは。
コメントありがとうございます。
仰る通り、一人でも多くの方に伝わることを期待しています。

私もTAEKOさんの記事を拝見するまで???でした(笑)。

[2] Posted by yujiro : September 28, 2007 2:57 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)