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

Ticket #3323: visual_effect_with_toggle.diff

File visual_effect_with_toggle.diff, 1.9 kB (added by jonathan@bluewire.net.nz, 3 years ago)
  • actionpack/test/template/scriptaculous_helper_test.rb

    old new  
    2828    assert_equal "new Effect.Fade('fademe',{duration:4.0});", visual_effect(:fade, "fademe", :duration => 4.0) 
    2929    assert_equal "new Effect.Shake(element,{});", visual_effect(:shake) 
    3030    assert_equal "new Effect.DropOut('dropme',{queue:'end'});", visual_effect(:drop_out, 'dropme', :queue => :end) 
     31     
     32    assert_equal "Effect.Toggle('posts')", visual_effect(:toggle, "posts") 
     33    assert_equal "Effect.Toggle('posts','slide')", visual_effect(:toggle, "posts", :effect => "slide") 
     34    assert_equal "Effect.Toggle('comment','blind')", visual_effect(:toggle, 'comment', :effect => :blind) 
    3135  end 
    3236 
    3337  def test_parallel_effects 
  • actionpack/lib/action_view/helpers/scriptaculous_helper.rb

    old new  
    3636      def visual_effect(name, element_id = false, js_options = {}) 
    3737        element = element_id ? "'#{element_id}'" : "element" 
    3838        js_options[:queue] = "'#{js_options[:queue]}'" if js_options[:queue] 
    39         "new Effect.#{name.to_s.camelize}(#{element},#{options_for_javascript(js_options)});" 
     39        js_options.delete(:effect) unless name == :toggle 
     40        name == :toggle ?  
     41          "Effect.#{name.to_s.camelize}(#{element}#{",'#{js_options[:effect]}'" if js_options[:effect]})" : 
     42          "new Effect.#{name.to_s.camelize}(#{element},#{options_for_javascript(js_options)});" 
    4043      end 
    4144       
    4245      # Needs more work so + isn't required for concation of effects. Currently, you have to do: