MovableType は通常漢字ファイル名のイメージをアップロードしても問題なく動作します。まぁ、表示用の文字コードとサーバの文字コードが一致していないと面倒なことになったりしますが、今は両方とも utf-8 だから大丈夫!
なんだけど、なぜかイメージの貼り付けを行うと、サムネイル画像のファイル名だけそのまま貼り付けられ、ブラウザによっては表示できないという悲しいことに。
で、非常にバタ臭い方法でパッチを当ててみました。あと、ついでに画像データに title="" も設定するように変更。
--- Image.pm.org 2010-11-17 22:55:09.419336951 +0900
+++ Image.pm 2010-11-17 22:55:22.515341878 +0900
@@ -255,6 +255,18 @@
return $format;
}
+# patched by DENCHU(2010/11/17)
+sub encode_thumb_url {
+ my $url = shift;
+ my @list = split(/\//, $url);
+ if ( $#list < 0 ) {
+ return $url;
+ }
+ my $fname = pop(@list);
+ push(@list, MT::Util::encode_url($fname));
+ return join("/",@list);
+}
+
sub as_html {
my $asset = shift;
my ($param) = @_;
@@ -316,34 +328,41 @@
my $link =
$thumb
? sprintf(
- '<img src="%s" alt="%s" />',
- MT::Util::encode_html( $thumb->url ), $dimensions,
- MT::Util::encode_html( $asset->label ), $wrap_style
+ '<img src="%s" alt="%s" title="%s" />',
+ MT::Util::encode_html( encode_thumb_url($thumb->url) ),
+ $dimensions,
+ MT::Util::encode_html( $asset->label ),
+ MT::Util::encode_html( $asset->label ),
+ $wrap_style
)
: MT->translate('View image');
+ my $popurl = encode_thumb_url($popup->url);
$text = sprintf( q|<a href="%s" onclick="window.open('%s','popup','width=%d,height=%d,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false">%s</a>|,
- MT::Util::encode_html( $popup->url ),
- MT::Util::encode_html( $popup->url ),
+ MT::Util::encode_html( $popurl ),
+ MT::Util::encode_html( $popurl ),
$asset->image_width,
$asset->image_height,
$link,
);
}
else {
+ my $thumburl = encode_thumb_url($thumb->url);
if ( $param->{thumb} ) {
$text = sprintf(
- '<a href="%s"><img alt="%s" src="%s" /></a>',
+ '<a href="%s"><img src="%s" alt="%s" title="%s" /></a>',
MT::Util::encode_html( $asset->url ),
MT::Util::encode_html( $asset->label ),
- MT::Util::encode_html( $thumb->url ),
+ MT::Util::encode_html( $asset->label ),
+ MT::Util::encode_html( $thumburl ),
$dimensions,
$wrap_style,
);
}
else {
$text = sprintf(
- '<img alt="%s" src="%s" />',
+ '<img alt="%s" title="%s" src="%s" />',
+ MT::Util::encode_html( $asset->label ),
MT::Util::encode_html( $asset->label ),
MT::Util::encode_html( $asset->url ),
$dimensions, $wrap_style,
う~ん、perl らしくない書き方だ(^^ゞ
perl のコード書いたの何年ぶりだろう?