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 のコード書いたの何年ぶりだろう?
コメントを投稿する