ついに ねんがんの (´・ω・`) を てにいれた!| メイン |イメージファイルと a tag

漢字ファイル名のイメージ

| コメント(0) | トラックバック(0)

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 のコード書いたの何年ぶりだろう?

No TrackBacks

TrackBack URL: http://denchu.jp/cgi-bin/movabletype/mt-tb.cgi/55

コメントを投稿する