Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 3350

Show
Ignore:
Timestamp:
12/25/05 18:53:22 (3 years ago)
Author:
madrobby
Message:

Added support for toggling visual effects to ScriptaculousHelper::visual_effect, #3323.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/CHANGELOG

    r3349 r3350  
    11*SVN* 
     2 
     3* Added support for toggling visual effects to ScriptaculousHelper::visual_effect, #3323. [Thomas Fuchs] 
    24 
    35* Update to script.aculo.us to 1.5.0 rev. 3343 [Thomas Fuchs] 
  • trunk/actionpack/lib/action_view/helpers/scriptaculous_helper.rb

    r3344 r3350  
    1515    # using these helpers in your application. 
    1616    module ScriptaculousHelper 
     17      unless const_defined? :TOGGLE_EFFECTS 
     18        TOGGLE_EFFECTS = [:toggle_appear, :toggle_slide, :toggle_blind] 
     19      end 
     20       
    1721      # Returns a JavaScript snippet to be used on the Ajax callbacks for 
    1822      # starting visual effects. 
     
    3236      # element. 
    3337      # 
     38      # For toggling visual effects, you can use :toggle_appear, :toggle_slide, and 
     39      # :toggle_blind which will alternate between appear/fade, slidedown/slideup, and 
     40      # blinddown/blindup respectively. 
     41      # 
    3442      # You can change the behaviour with various options, see 
    3543      # http://script.aculo.us for more documentation. 
     
    3745        element = element_id ? "'#{element_id}'" : "element" 
    3846        js_options[:queue] = "'#{js_options[:queue]}'" if js_options[:queue] 
    39         "new Effect.#{name.to_s.camelize}(#{element},#{options_for_javascript(js_options)});" 
     47         
     48        if TOGGLE_EFFECTS.include? name.to_sym 
     49          "Effect.toggle(#{element},'#{name.to_s.gsub(/^toggle_/,'')}',#{options_for_javascript(js_options)});" 
     50        else 
     51          "new Effect.#{name.to_s.camelize}(#{element},#{options_for_javascript(js_options)});" 
     52        end 
    4053      end 
    4154       
  • trunk/actionpack/test/template/scriptaculous_helper_test.rb

    r3344 r3350  
    3030    assert_equal "new Effect.DropOut('dropme',{queue:'end'});", visual_effect(:drop_out, 'dropme', :queue => :end) 
    3131  end 
     32   
     33  def test_toggle_effects 
     34    assert_equal "Effect.toggle('posts','appear',{});", visual_effect(:toggle_appear, "posts") 
     35    assert_equal "Effect.toggle('posts','slide',{});", visual_effect(:toggle_slide, "posts") 
     36    assert_equal "Effect.toggle('posts','blind',{});", visual_effect(:toggle_blind, "posts") 
     37    assert_equal "Effect.toggle('posts','appear',{});", visual_effect("toggle_appear", "posts") 
     38    assert_equal "Effect.toggle('posts','slide',{});", visual_effect("toggle_slide", "posts") 
     39    assert_equal "Effect.toggle('posts','blind',{});", visual_effect("toggle_blind", "posts") 
     40  end 
     41   
    3242 
    3343  def test_parallel_effects