Changeset 3667
- Timestamp:
- 02/26/06 14:20:21 (3 years ago)
- Files:
-
- trunk/actionpack/CHANGELOG (modified) (1 diff)
- trunk/actionpack/lib/action_view/helpers/prototype_helper.rb (modified) (1 diff)
- trunk/actionpack/lib/action_view/helpers/scriptaculous_helper.rb (modified) (4 diffs)
- trunk/actionpack/test/template/prototype_helper_test.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionpack/CHANGELOG
r3661 r3667 1 1 *SVN* 2 3 * Added script.aculo.us drag and drop helpers to RJS [Thomas Fuchs]. Examples: 4 5 page.draggable 'product-1' 6 page.drop_receiving 'wastebasket', :url => { :action => 'delete' } 7 page.sortable 'todolist', :url => { action => 'change_order' } 2 8 3 9 * Fixed that form elements would strip the trailing [] from the first parameter #3545 [ruby@bobsilva.com] trunk/actionpack/lib/action_view/helpers/prototype_helper.rb
r3592 r3667 566 566 end 567 567 568 # Starts a Scriptaculous visual effect. See568 # Starts a script.aculo.us visual effect. See 569 569 # ActionView::Helpers::ScriptaculousHelper for more information. 570 570 def visual_effect(name, id, options = {}) 571 571 record @context.send(:visual_effect, name, id, options) 572 end 573 574 # Creates a script.aculo.us sortable element. Useful 575 # to recreate sortable elements after items get added 576 # or deleted. 577 # See ActionView::Helpers::ScriptaculousHelper for more information. 578 def sortable(id, options = {}) 579 record @context.send(:sortable_element_js, id, options) 580 end 581 582 # Creates a script.aculo.us draggable element. 583 # See ActionView::Helpers::ScriptaculousHelper for more information. 584 def draggable(id, options = {}) 585 record @context.send(:draggable_element_js, id, options) 586 end 587 588 # Creates a script.aculo.us drop receiving element. 589 # See ActionView::Helpers::ScriptaculousHelper for more information. 590 def drop_receiving(id, options = {}) 591 record @context.send(:drop_receiving_element_js, id, options) 572 592 end 573 593 trunk/actionpack/lib/action_view/helpers/scriptaculous_helper.rb
r3476 r3667 68 68 # http://script.aculo.us for more documentation. 69 69 def sortable_element(element_id, options = {}) 70 javascript_tag(sortable_element_js(element_id, options).chop!) 71 end 72 73 def sortable_element_js(element_id, options = {}) #:nodoc: 70 74 options[:with] ||= "Sortable.serialize('#{element_id}')" 71 75 options[:onUpdate] ||= "function(){" + remote_function(options) + "}" … … 79 83 options[:only] = array_or_string_for_javascript(options[:only]) if options[:only] 80 84 81 javascript_tag("Sortable.create('#{element_id}', #{options_for_javascript(options)})")85 %(Sortable.create('#{element_id}', #{options_for_javascript(options)});) 82 86 end 83 87 … … 88 92 # 89 93 # You can change the behaviour with various options, see 90 # http://script.aculo.us for more documentation. 94 # http://script.aculo.us for more documentation. 91 95 def draggable_element(element_id, options = {}) 92 javascript_tag("new Draggable('#{element_id}', #{options_for_javascript(options)})") 96 javascript_tag(draggable_element_js(element_id, options).chop!) 97 end 98 99 def draggable_element_js(element_id, options = {}) #:nodoc: 100 %(new Draggable('#{element_id}', #{options_for_javascript(options)});) 93 101 end 94 102 … … 105 113 # http://script.aculo.us for more documentation. 106 114 def drop_receiving_element(element_id, options = {}) 115 javascript_tag(drop_receiving_element_js(element_id, options).chop!) 116 end 117 118 def drop_receiving_element_js(element_id, options = {}) #:nodoc: 107 119 options[:with] ||= "'id=' + encodeURIComponent(element.id)" 108 120 options[:onDrop] ||= "function(element){" + remote_function(options) + "}" 109 121 options.delete_if { |key, value| PrototypeHelper::AJAX_OPTIONS.include?(key) } 110 122 111 123 options[:accept] = array_or_string_for_javascript(options[:accept]) if options[:accept] 112 124 options[:hoverclass] = "'#{options[:hoverclass]}'" if options[:hoverclass] 113 114 javascript_tag("Droppables.add('#{element_id}', #{options_for_javascript(options)})")125 126 %(Droppables.add('#{element_id}', #{options_for_javascript(options)});) 115 127 end 116 128 end trunk/actionpack/test/template/prototype_helper_test.rb
r3591 r3667 4 4 include ActionView::Helpers::JavaScriptHelper 5 5 include ActionView::Helpers::PrototypeHelper 6 include ActionView::Helpers::ScriptaculousHelper 6 7 7 8 include ActionView::Helpers::UrlHelper … … 256 257 assert_equal %($$('p.welcome b').first().hide();), @generator.to_s 257 258 end 259 260 def test_visual_effect 261 assert_equal %(new Effect.Puff('blah',{});), 262 @generator.visual_effect(:puff,'blah') 263 end 264 265 def test_visual_effect_toggle 266 assert_equal %(Effect.toggle('blah','appear',{});), 267 @generator.visual_effect(:toggle_appear,'blah') 268 end 269 270 def test_sortable 271 assert_equal %(Sortable.create('blah', {onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize('blah')})}});), 272 @generator.sortable('blah', :url => { :action => "order" }) 273 end 274 275 def test_draggable 276 assert_equal %(new Draggable('blah', {});), 277 @generator.draggable('blah') 278 end 279 280 def test_drop_receiving 281 assert_equal %(Droppables.add('blah', {onDrop:function(element){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}});), 282 @generator.drop_receiving('blah', :url => { :action => "order" }) 283 end 258 284 end