画像アップロード時のタグについて

  • 投稿日:
  • by
  • カテゴリ:

MT4にしたときに、画像ファイルをアップロードすると<form> タグが付くのでヘンな感じがすると書きました。
そのまま使っていたのですが、いつの間にか<form> タグが無くなって<img> タグだけになっていました。

もちろんMTのソースを改変したりはしていません(以前はやってましたが、引用BMQuoteプラグインで対処できるようになったので)。
第一、先日の新システム構築でも既存のディレクトリに上書きではなく、全く新規にMT5.01を導入していますし。

<form> タグは再構築されると <span> タグに変換されるのですが、それが付いているのは 2009年2月25日 から 2009年8月 2日 までです。 2009年8月 5日 には付いていません。

その前後で何か変化点があったかというと、2009年8月 8日にMT4.3にしたという記事があります。
ググってみたら... ありました。

小粋空間: Movable Type 4.3 リリース

2.ブログ記事のアイテム管理
 
アイテム管理をブログ記事編集画面上で行えるようになりました。これにより、4.2 まで付与されていた、アイテムとブログ記事を関連付けるキー(form 要素)をブログ記事本文に挿入する必要がなくなりました。
 
* MovableType.org - Features of 4.3: Entry Asset Manager
* Movable Type 4.3 α版レポート

これのせいか、AssetRelativePath が働かないんですよね。

MT4.2までは以下のようになっていたようです。

Movable Type 備忘録 - 画像を挿入で出力されるタグをカスタマイズ

具体的には mt/lib/MT/Asset/Image.pm 内にある as_html というファンクション内で画像を貼り付けたい タグを作成して、mt/lib/MT/Asset.pm 内の enclose というファンクションに作成した タグの文字列を渡すことで、
で囲って出力されるようになっています。
 
ですので、mt/lib/MT/Asset.pm 内の enclose というファンクションを使わないようにすれば、上記例で示した、赤い字の部分だけが出力されるようになります ( ̄∇ ̄)b
 
具体的には以下の行を変更します。
 
mt/lib/MT/Asset/Image.pm
 
638. #return $asset->enclose($text);
639. return $text;
 
赤い字のようにコメントにして、青い字のように変更します。
以上で、 タグだけが出力されるようになります。

で、MT5.0の Image.pm を確認すると、

361. return $param->{enclose} ? $asset->enclose($text) : $text;

となっています。
AssetRelativePath.pl は、MT::Asset::enclose に渡された <img> タグに対してURL部分の置換を行うようなので、これじゃ動かないですね。
ちなみに自分はPerlの知識は全くと言っていいほどないので、これ以上のことはわかりません。


MT4.3絡みでは、EntityRefButton v0.2.2 が動かなくなったのもそのせいみたいです。

MT5・プラグインの皆さん動いてますか - WolaWola

EntityRefButton 0.2.2
http://labs.m-logic.jp/plugins/entityrefbutton/docs/entityrefbutton.html
バージョン判別して処理を分岐しているため動作しません。mt5を分岐条件に追加して動作する事は確認しました。そのうち正式に対応版が出ると思います。

早速、entityrefbutton.pl のソースを見てみました。

elsif(is_mt41() || is_mt42() || is_mt50()) {
# MT4.1
MT->add_callback('MT::App::CMS::template_source.archetype_editor', 9, $plugin, sub { transform_mt4(@_) });
MT->add_callback('MT::App::CMS::template_param.edit_entry', 9, $plugin, sub { mod_params_mt4(@_) });
}

sub is_mt42 {
return (substr(MT->version_number, 0, 3) eq '4.2');
}
sub is_mt50 {
return (substr(MT->version_number, 0, 3) eq '5.0');
}

というように変更したら、編集画面に「&」ボタンが出てきました。 ちゃんと実体参照への変換もできました。
正式なMT5対応版が出るまでは、これでしのげますね。