Project

swf_fu

0.05
No release in over 3 years
Low commit activity in last 3 years
Treat your swf files like other assets
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

With the swf_fu plugin, rails treats your swf files like any other asset (images, javascripts, etc…).

swf_fu (pronounced “swif-fu”, bonus joke for french speakers) uses SWFObject 2.2 to embed swf objects in HTML and supports all its options. SWFObject 2 is such a nice library that Adobe now uses it as the official way to embed swf! SWFObject’s project can be found at code.google.com/p/swfobject

Comments and pull requests welcome: github.com/marcandre/swf_fu

Compatibility¶ ↑

Version 2 of swf_fu is an engine for Rails 3.1+ and Ruby 1.8.7+.

Version 1.x was a plugin for previous versions of Rails and should not be used with Rails 3.1+. If you want to use it, checkout the v1.x branch. If you are upgrading to Rails 3.1+, remove the plugin!

Install¶ ↑

Add to your Gemfile:

gem "swf_fu", "~> 2.0"

Then run ‘bundle install`.

You also need to require some javascripts, so in your ‘app/assets/javascripts/application.js` you want to append:

\\= require swf_fu

Usage¶ ↑

Embedding in HTML¶ ↑

To embed a swf file, use swf_tag:

<%= swf_tag "i_like_flashing" %>

Exactly like images and javascripts, swf_tag will use swf_path to determine the path of the swf file; it will assume it is in /assets/swfs/ or in /public/swfs/ unless specified otherwise and it will add the “.swf” extension automatically.

You can specify alternate content either with the options :alt => "Get Flash!" or you can use swf_tag as a block:

<% swf_tag "i_like_flashing" do %>
  Get Flash
<% end %>

Options¶ ↑

  • :id - the DOM id of the flash object element that is used to contain the Flash object; defaults to the name of the swf in source

  • :width, :height - the width & height of the Flash object. Defaults to “100%”. These could also specified using :size

  • :size - the size of the Flash object, in the form “400x300”.

  • :mode - Either :dynamic (default) or :static. Refer to SWFObject’s doc

  • :flashvars - a Hash of variables that are passed to the swf. Can also be a string like "foo=bar&hello=world". Defaults to {:id => the DOM id}

  • :parameters - a Hash of configuration parameters for the swf. See Adobe’s doc

  • :html_options - a Hash of extra html options for the object tag.

  • :alt - HTML text that is displayed when the Flash player is not available. Defaults to a “Get Flash” image pointing to Adobe Flash’s installation page. This can also be specified as a block (see embedding section). In Rails 3, this text is assumed to be HTML, so there is no need to call html_safe on it.

  • :flash_version - the version of the Flash player that is required (e.g. “7” (default) or “8.1.0”)

  • :auto_install - a swf file that will upgrade flash player if needed (defaults to “expressInstall” which was installed by swf_fu)

  • :javascript_class - specify a javascript class (e.g. “MyFlash”) for your flash object. If it exists, the initialize method will be called. See the ‘dummy’ example in the test folder

  • :initialize - arguments to pass to the initialization method of your javascript class.

  • :div_id - the DOM id of the containing div itself. Defaults to "#{option[:id]}_div"

  • :switch_off_auto_hide_show - switch off SWFObject’s default hide/show behavior. SWFObject temporarily hides your SWF or alternative content until the library has decided which content to display. Defaults to nil.

You can override these default options with a global setting:

ActionView::Base.swf_default_options = {:mode => :static}   # All swf_tag will use the static mode by default

In your config files, you can write this as:

config.action_view.swf_default_options = {:mode => :static}   # All swf_tag will use the static mode by default

Any of these options can be a Proc, in which case it will be called each time swf_tag is called.

For example, the following will generate unique IDs:

my_swf_counter = 0
config.action_view.swf_default_options[:id] = Proc.new{"swf_unique_id_#{my_swf_counter+=1}"}

swf_path¶ ↑

swf_tag implements and relies on swf_path which behaves in a similar fashion to image_path, javascript_path, etc…:

swf_path("example")                            => "/swfs/example.swf" or "/assets/example.swf"
swf_path("example.swf")                        => "/swfs/example.swf" or "/assets/example.swf"
swf_path("fonts/optima")                       => "/swfs/fonts/optima.swf" or "/assets/fonts/optima.swf"
swf_path("/fonts/optima")                      => "/fonts/optima.swf"
swf_path("http://www.example.com/game.swf")    => "http://www.example.com/game.swf"

It takes into account the global setting asset_host, like any other asset:

ActionController::Base.asset_host = "http://assets.example.com"
image_path("logo.jpg")                         => "http://assets.example.com/images/logo.jpg"
swf_path("fonts/optima")                       => "http://assets.example.com/swfs/fonts/optima.swf"

Copyright © 2010-2013 Marc-André Lafortune, released under the BSD license