[Hiki-dev] attatchプラグインの Flash対応

Back to archive index

たむらけんいち sgs02****@nifty*****
2003年 10月 24日 (金) 00:40:32 JST


たむらです。

attach.rb をいぢって、Flash(.swfなファイル)の対応などをしました。

* ファイルの mime-type に .ppt, .swfを追加
* 添付後の使い方を覚えられないので簡単な usageを表示するように
* attach_view で Flashを表示可能に
* その際、画像と違いサイズを適当に縮めるようなので、image_size.rb を
  利用出来るときはサイズも埋め込むことに
    http://www.rubycgi.org/tools/index.htm

で質問です。

1.今回みたくプラグインの usageの場合、多言語のことを考えると、どこに
  どう置くべきなのでしょうか ?
2.Image_sizeは pure rubyなスクリプトで簡単に画像のサイズ取得が可能なので
  他の画像ファイルでも Flash同様あればサイズ取得する方が良いか ?
3.画像は無ければ実際のサイズになるのだから、Flashだけ特別だし、Image_sizeから
  コードを持って来るほうがシンプルだ。

どうでしょうかね ?

--- ../misc/plugin/attach/attach.rb     2003-08-12 15:34:24.000000000 +0900
+++ attach.rb   2003-10-23 11:44:49.000000000 +0900
@@ -17,2 +17,10 @@

+def plugin_usage_label
+       '<div><ul>
+   <li>添付ファイルへのアンカは、{{attach_anchor(ファイル名 [, ページ名])}}</li>
+   <li>添付したファイルの表示は、{{attach_view(ファイル名 [, ページ名])}}</li>
+   <li>添付ページとファイルの一覧は、{{attach_map}}</li>
+   </ul></div>'
+end
+
 def attach_form(s = '')
@@ -33,2 +41,3 @@
   </div>
+  #{plugin_usage_label}
 </form>
@@ -73,2 +82,17 @@
 end
+def attach_flash_anchor(file_name, page=@page)
+begin
+  require 'image_size'
+  f = "#{@cache_path}/attach/#{@page.escape}/#{file_name}"
+  img_size = File.open(f,'rb'){|fh|
+    is = ImageSize.new(fh)
+    [is.get_width, is.get_height]
+  }
+rescue
+end
+  s =  %Q!<embed type="application/x-shockwave-flash" src="!
+  s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name
=#{file_name}")}" !
+  s << %Q! width="#{img_size[0]}" height="#{img_size[1]}" ! unless img_size.nil?
+  s << %Q!>!
+end

@@ -97,3 +121,5 @@
     "xls"   => "application/vnd.ms-excel",
+    "ppt"   => "application/vnd.ms-powerpoint",
     "pdf"   => "application/pdf",
+    "swf"   => "application/x-shockwave-flash",
   }
@@ -130,2 +156,4 @@
     attach_image_anchor(file_name, page)
+  elsif file_name =~ /\.swf\z/i
+    attach_flash_anchor(file_name, page)
   end
~

-- 

たむら (http://www.rubyist.net/~tamura/d/)



Hiki-dev メーリングリストの案内
Back to archive index