prototype-rails 3.2.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: de5fdd685bcac176b54714d198a16a7ec51f83e8
4
+ data.tar.gz: d0c3b9639b0dec9ff6f449447a7ab235ef928a83
5
+ SHA512:
6
+ metadata.gz: 48966e1baa5eec7734141d4dd698c4c8a881a18470ee5e28bda63dad8ec828ff93e1e510d0a39dad9cb7b5174135e68036fc4ff83395cf204d5565bfa4c76e8f
7
+ data.tar.gz: ca563e4d58dea2ef09dc7993d51b53e6399a67adf426aded6d728ac7e2b6a7ab6785a1a2a89fda44b23c1c5460713c21537eb9020531b0f83ec9f9d4beaffa53
data/Gemfile CHANGED
@@ -1,3 +1,2 @@
1
- source :rubygems
2
-
1
+ source 'https://rubygems.org'
3
2
  gemspec
data/README CHANGED
@@ -1,10 +1,9 @@
1
- prototype-rails provides Prototype, Scriptaculous, and RJS for Rails 3.1.
1
+ prototype-rails provides Prototype, Scriptaculous, and RJS on Rails 3.1
2
+ and later.
2
3
 
3
- Prototype and Scriptaculous are provided via the asset pipeline and you
4
- do *not* need to copy their files into your application. Rails will get
5
- them from prototype-rails automatically.
6
-
7
- You may want to add them to your app/assets/javascripts/application.js:
4
+ Prototype and Scriptaculous are pulled in by the asset pipeline, so you don't
5
+ need to copy the source files into your app. You may reference them in your
6
+ s app/assets/javascripts/application.js:
8
7
 
9
8
  //= require prototype
10
9
  //= require prototype_ujs
@@ -12,9 +11,7 @@ You may want to add them to your app/assets/javascripts/application.js:
12
11
  //= require dragdrop
13
12
  //= require controls
14
13
 
15
- New applications using this may also want to add
16
-
17
- config.action_view.debug_rjs = true
18
-
19
- to their config/environments/development.rb.
20
-
14
+ prototype-rails supports RJS debugging. RJS responses are wrapped to catch
15
+ exceptions, alert() them, and re-raise the exception. Debugging is disabled by
16
+ default. To enable in development, set `config.action_view.debug_rjs = true`
17
+ in config/environments/development.rb.
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rake/testtask'
3
3
  task :default => :test
4
4
 
5
5
  Rake::TestTask.new do |t|
6
- t.libs << 'test'
6
+ t.libs << 'test/lib'
7
7
  t.test_files = Dir.glob('test/*_test.rb') + Dir.glob('test/{controller,template}/**/*_test.rb')
8
8
  t.warning = true
9
9
  t.verbose = true
@@ -4,6 +4,12 @@ require 'active_support/core_ext/object/blank'
4
4
  require 'active_support/core_ext/string/output_safety'
5
5
 
6
6
  module ActionView
7
+ # A string that returns itself as its JSON-encoded form.
8
+ class JsonLiteral < String
9
+ def as_json(options = nil) self end #:nodoc:
10
+ def encode_json(encoder) self end #:nodoc:
11
+ end
12
+
7
13
  # = Action View Prototype Helpers
8
14
  module Helpers
9
15
  # Prototype[http://www.prototypejs.org/] is a JavaScript library that provides
@@ -147,6 +153,7 @@ module ActionView
147
153
  class JavaScriptGenerator #:nodoc:
148
154
  def initialize(context, &block) #:nodoc:
149
155
  @context, @lines = context, []
156
+ def @lines.encoding() last.to_s.encoding end
150
157
  include_helpers_from_context
151
158
  @context.with_output_buffer(@lines) do
152
159
  @context.instance_exec(self, &block)
@@ -155,7 +162,7 @@ module ActionView
155
162
 
156
163
  private
157
164
  def include_helpers_from_context
158
- extend @context.helpers if @context.respond_to?(:helpers) && @context.helpers
165
+ extend @context.controller._helpers if @context.controller.respond_to?(:_helpers) && @context.controller._helpers
159
166
  extend GeneratorMethods
160
167
  end
161
168
 
@@ -253,14 +260,21 @@ module ActionView
253
260
  when String, Symbol, NilClass
254
261
  JavaScriptElementProxy.new(self, id)
255
262
  else
256
- JavaScriptElementProxy.new(self, ActionController::RecordIdentifier.dom_id(id))
263
+ JavaScriptElementProxy.new(self, RecordIdentifier.dom_id(id))
257
264
  end
258
265
  end
259
266
 
267
+ RecordIdentifier =
268
+ if defined? ActionView::RecordIdentifier
269
+ ActionView::RecordIdentifier
270
+ else
271
+ ActionController::RecordIdentifier
272
+ end
273
+
260
274
  # Returns an object whose <tt>to_json</tt> evaluates to +code+. Use this to pass a literal JavaScript
261
275
  # expression as an argument to another JavaScriptGenerator method.
262
276
  def literal(code)
263
- ::ActiveSupport::JSON::Variable.new(code.to_s)
277
+ JsonLiteral.new(code.to_s)
264
278
  end
265
279
 
266
280
  # Returns a collection reference by finding it through a CSS +pattern+ in the DOM. This collection can then be
@@ -517,6 +531,15 @@ module ActionView
517
531
  record "}, #{(seconds * 1000).to_i})"
518
532
  end
519
533
 
534
+ def javascript_object_for(object)
535
+ ::ActiveSupport::JSON.encode(object)
536
+ end
537
+
538
+ def arguments_for_call(arguments, block = nil)
539
+ arguments << block_to_function(block) if block
540
+ arguments.map { |argument| javascript_object_for(argument) }.join ', '
541
+ end
542
+
520
543
  private
521
544
  def loop_on_multiple_args(method, ids)
522
545
  record(ids.size>1 ?
@@ -547,7 +570,7 @@ module ActionView
547
570
 
548
571
  def with_formats(*args)
549
572
  return yield unless @context
550
-
573
+
551
574
  lookup = @context.lookup_context
552
575
  begin
553
576
  old_formats, lookup.formats = lookup.formats, args
@@ -557,15 +580,6 @@ module ActionView
557
580
  end
558
581
  end
559
582
 
560
- def javascript_object_for(object)
561
- ::ActiveSupport::JSON.encode(object)
562
- end
563
-
564
- def arguments_for_call(arguments, block = nil)
565
- arguments << block_to_function(block) if block
566
- arguments.map { |argument| javascript_object_for(argument) }.join ', '
567
- end
568
-
569
583
  def block_to_function(block)
570
584
  generator = self.class.new(@context, &block)
571
585
  literal("function() { #{generator.to_s} }")
@@ -654,8 +668,7 @@ module ActionView
654
668
  end
655
669
 
656
670
  # Converts chained method calls on DOM proxy elements into JavaScript chains
657
- class JavaScriptProxy < ActiveSupport::BasicObject #:nodoc:
658
-
671
+ class JavaScriptProxy < ActiveSupport::ProxyObject #:nodoc:
659
672
  def initialize(generator, root = nil)
660
673
  @generator = generator
661
674
  @generator << root if root
@@ -730,7 +743,7 @@ module ActionView
730
743
 
731
744
  class JavaScriptVariableProxy < JavaScriptProxy #:nodoc:
732
745
  def initialize(generator, variable)
733
- @variable = ::ActiveSupport::JSON::Variable.new(variable)
746
+ @variable = JsonLiteral.new(variable)
734
747
  @empty = true # only record lines if we have to. gets rid of unnecessary linebreaks
735
748
  super(generator)
736
749
  end
@@ -754,8 +767,8 @@ module ActionView
754
767
  end
755
768
 
756
769
  class JavaScriptCollectionProxy < JavaScriptProxy #:nodoc:
757
- ENUMERABLE_METHODS_WITH_RETURN = [:all, :any, :collect, :map, :detect, :find, :find_all, :select, :max, :min, :partition, :reject, :sort_by, :in_groups_of, :each_slice] unless defined? ENUMERABLE_METHODS_WITH_RETURN
758
- ENUMERABLE_METHODS = ENUMERABLE_METHODS_WITH_RETURN + [:each] unless defined? ENUMERABLE_METHODS
770
+ ENUMERABLE_METHODS_WITH_RETURN = [:all, :any, :collect, :map, :detect, :find, :find_all, :select, :max, :min, :partition, :reject, :sort_by, :in_groups_of, :each_slice]
771
+ ENUMERABLE_METHODS = ENUMERABLE_METHODS_WITH_RETURN + [:each]
759
772
  attr_reader :generator
760
773
  delegate :arguments_for_call, :to => :generator
761
774
 
@@ -773,7 +786,7 @@ module ActionView
773
786
  end
774
787
 
775
788
  def grep(variable, pattern, &block)
776
- enumerate :grep, :variable => variable, :return => true, :method_args => [::ActiveSupport::JSON::Variable.new(pattern.inspect)], :yield_args => %w(value index), &block
789
+ enumerate :grep, :variable => variable, :return => true, :method_args => [JsonLiteral.new(pattern.inspect)], :yield_args => %w(value index), &block
777
790
  end
778
791
 
779
792
  def in_groups_of(variable, number, fill_with = nil)
@@ -797,7 +810,7 @@ module ActionView
797
810
  append_enumerable_function!("zip(#{arguments_for_call arguments}")
798
811
  if block
799
812
  function_chain[-1] += ", function(array) {"
800
- yield ::ActiveSupport::JSON::Variable.new('array')
813
+ yield JsonLiteral.new('array')
801
814
  add_return_statement!
802
815
  @generator << '});'
803
816
  else
@@ -810,7 +823,7 @@ module ActionView
810
823
  if ENUMERABLE_METHODS.include?(method)
811
824
  returnable = ENUMERABLE_METHODS_WITH_RETURN.include?(method)
812
825
  variable = arguments.first if returnable
813
- enumerate(method, {:variable => (arguments.first if returnable), :return => returnable, :yield_args => %w(value index)}, &block)
826
+ enumerate(method, {:variable => variable, :return => returnable, :yield_args => %w(value index)}, &block)
814
827
  else
815
828
  super
816
829
  end
@@ -2,6 +2,8 @@ require 'action_view/helpers/javascript_helper'
2
2
 
3
3
  ActionView::Helpers::JavaScriptHelper.module_eval do
4
4
  include ActionView::Helpers::PrototypeHelper
5
+ undef_method :button_to_function if method_defined? :button_to_function
6
+ undef_method :link_to_function if method_defined? :link_to_function
5
7
 
6
8
  # Returns a button with the given +name+ text that'll trigger a JavaScript +function+ using the
7
9
  # onclick handler.
@@ -1,5 +1,5 @@
1
1
  require 'active_support/core_ext/module/aliasing'
2
- require 'action_controller/vendor/html-scanner'
2
+ require 'action_view/vendor/html-scanner'
3
3
  require 'action_dispatch/testing/assertions'
4
4
  require 'action_dispatch/testing/assertions/selector'
5
5
 
@@ -124,7 +124,7 @@ ActionDispatch::Assertions::SelectorAssertions.module_eval do
124
124
  end
125
125
 
126
126
  if matches
127
- assert_block("") { true } # to count the assertion
127
+ assert true # to count the assertion
128
128
  if block_given? && !([:remove, :show, :hide, :toggle].include? rjs_type)
129
129
  begin
130
130
  @selected ||= nil
@@ -1,10 +1,7 @@
1
- require 'fileutils'
2
1
  require 'abstract_unit'
3
2
 
4
- CACHE_DIR = 'test_cache'
5
3
  # Don't change '/../temp/' cavalierly or you might hose something you don't want hosed
6
- FILE_STORE_PATH = File.join(File.dirname(__FILE__), '/../temp/', CACHE_DIR)
7
- ActionController::Base.page_cache_directory = FILE_STORE_PATH
4
+ FILE_STORE_PATH = File.expand_path('../../../temp/test_cache', __FILE__)
8
5
 
9
6
  class CachingController < ActionController::Base
10
7
  abstract!
@@ -41,6 +38,6 @@ class FunctionalFragmentCachingTest < ActionController::TestCase
41
38
  xhr :get, :js_fragment_cached_with_partial
42
39
  assert_response :success
43
40
  assert_match(/Old fragment caching in a partial/, @response.body)
44
- assert_match("Old fragment caching in a partial", @store.read('views/test.host/functional_caching/js_fragment_cached_with_partial'))
41
+ assert_match "Old fragment caching in a partial", @store.instance_variable_get('@data').values.first.value
45
42
  end
46
- end
43
+ end
@@ -1,19 +1,9 @@
1
- lib = File.expand_path("#{File.dirname(__FILE__)}/../lib")
2
- $:.unshift(lib) unless $:.include?('lib') || $:.include?(lib)
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'minitest/autorun'
3
4
 
4
- $:.unshift(File.dirname(__FILE__) + '/lib')
5
-
6
- if defined? Gem
7
- Gem.source_index
8
- gem 'bundler'
9
- else
10
- require 'rubygems'
11
- end
12
- require 'bundler'
13
- Bundler.setup
14
-
15
- require 'test/unit'
16
5
  require 'active_support'
6
+ require 'active_support/test_case'
17
7
  require 'action_controller'
18
8
  require 'action_view'
19
9
  require 'action_view/testing/resolvers'
@@ -21,7 +11,7 @@ require 'action_view/testing/resolvers'
21
11
  require 'prototype-rails/on_load_action_controller'
22
12
  require 'prototype-rails/on_load_action_view'
23
13
 
24
- FIXTURE_LOAD_PATH = File.join(File.dirname(__FILE__), 'fixtures')
14
+ FIXTURE_LOAD_PATH = File.expand_path('../../fixtures', __FILE__)
25
15
  FIXTURES = Pathname.new(FIXTURE_LOAD_PATH)
26
16
 
27
17
 
@@ -59,11 +49,11 @@ module ActiveSupport
59
49
  # have been loaded.
60
50
  setup_once do
61
51
  SharedTestRoutes.draw do
62
- match ':controller(/:action)'
52
+ get ':controller(/:action)'
63
53
  end
64
54
 
65
55
  ActionDispatch::IntegrationTest.app.routes.draw do
66
- match ':controller(/:action)'
56
+ get ':controller(/:action)'
67
57
  end
68
58
  end
69
59
  end
@@ -88,7 +78,7 @@ class BasicController
88
78
  def config
89
79
  @config ||= ActiveSupport::InheritableOptions.new(ActionController::Base.config).tap do |config|
90
80
  # VIEW TODO: View tests should not require a controller
91
- public_dir = File.expand_path("../fixtures/public", __FILE__)
81
+ public_dir = "#{FIXTURE_LOAD_PATH}/public"
92
82
  config.assets_dir = public_dir
93
83
  config.javascripts_dir = "#{public_dir}/javascripts"
94
84
  config.stylesheets_dir = "#{public_dir}/stylesheets"
@@ -109,7 +99,7 @@ class ActionDispatch::IntegrationTest < ActiveSupport::TestCase
109
99
  middleware.use "ActionDispatch::ParamsParser"
110
100
  middleware.use "ActionDispatch::Cookies"
111
101
  middleware.use "ActionDispatch::Flash"
112
- middleware.use "ActionDispatch::Head"
102
+ middleware.use "Rack::Head"
113
103
  yield(middleware) if block_given?
114
104
  end
115
105
  end
@@ -162,17 +162,15 @@ class RenderOtherTest < ActionController::TestCase
162
162
  end
163
163
 
164
164
  def test_enum_rjs_test
165
- SecureRandom.stubs(:base64).returns("asdf")
166
- get :enum_rjs_test
167
- body = %{
168
- $$(".product").each(function(value, index) {
165
+ pre = %[$$(".product").each(function(value, index) {
169
166
  new Effect.Highlight(element,{});
170
167
  new Effect.Highlight(value,{});
171
- Sortable.create(value, {onUpdate:function(){new Ajax.Request('/render_other_test/test/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(value) + '&authenticity_token=' + encodeURIComponent('asdf')})}});
172
- new Draggable(value, {});
173
- });
174
- }.gsub(/^ /, '').strip
175
- assert_equal body, @response.body
168
+ Sortable.create(value, {onUpdate:function(){new Ajax.Request('/render_other_test/test/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(value) + '&authenticity_token=' + encodeURIComponent('].gsub(/^\s+/, '')
169
+ post = %[')})}});\nnew Draggable(value, {});\n});]
170
+
171
+ get :enum_rjs_test
172
+ assert_match pre, @response.body
173
+ assert_match post, @response.body
176
174
  end
177
175
 
178
176
  def test_explicitly_rendering_an_html_template_with_implicit_html_template_renders_should_be_possible_from_an_rjs_template
@@ -50,33 +50,33 @@ class ScriptaculousHelperTest < ActionView::TestCase
50
50
 
51
51
 
52
52
  def test_sortable_element
53
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>),
53
+ assert_dom_equal %(<script>\n//<![CDATA[\nSortable.create(\"mylist\", {onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>),
54
54
  sortable_element("mylist", :url => { :action => "order" })
55
- assert_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}, tag:'div'})\n//]]>\n</script>),
55
+ assert_equal %(<script>\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}, tag:'div'})\n//]]>\n</script>),
56
56
  sortable_element("mylist", :tag => "div", :constraint => "horizontal", :url => { :action => "order" })
57
- assert_dom_equal %|<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', containment:['list1','list2'], onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>|,
57
+ assert_dom_equal %|<script>\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', containment:['list1','list2'], onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>|,
58
58
  sortable_element("mylist", :containment => ['list1','list2'], :constraint => "horizontal", :url => { :action => "order" })
59
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', containment:'list1', onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>),
59
+ assert_dom_equal %(<script>\n//<![CDATA[\nSortable.create(\"mylist\", {constraint:'horizontal', containment:'list1', onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize(\"mylist\")})}})\n//]]>\n</script>),
60
60
  sortable_element("mylist", :containment => 'list1', :constraint => "horizontal", :url => { :action => "order" })
61
61
  end
62
62
 
63
63
  def test_draggable_element
64
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Draggable(\"product_13\", {})\n//]]>\n</script>),
64
+ assert_dom_equal %(<script>\n//<![CDATA[\nnew Draggable(\"product_13\", {})\n//]]>\n</script>),
65
65
  draggable_element("product_13")
66
- assert_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Draggable(\"product_13\", {revert:true})\n//]]>\n</script>),
66
+ assert_equal %(<script>\n//<![CDATA[\nnew Draggable(\"product_13\", {revert:true})\n//]]>\n</script>),
67
67
  draggable_element("product_13", :revert => true)
68
68
  end
69
69
 
70
70
  def test_drop_receiving_element
71
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {onDrop:function(element){new Ajax.Request('http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
71
+ assert_dom_equal %(<script>\n//<![CDATA[\nDroppables.add(\"droptarget1\", {onDrop:function(element){new Ajax.Request('http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
72
72
  drop_receiving_element("droptarget1")
73
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:'products', onDrop:function(element){new Ajax.Request('http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
73
+ assert_dom_equal %(<script>\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:'products', onDrop:function(element){new Ajax.Request('http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
74
74
  drop_receiving_element("droptarget1", :accept => 'products')
75
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:'products', onDrop:function(element){new Ajax.Updater('infobox', 'http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
75
+ assert_dom_equal %(<script>\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:'products', onDrop:function(element){new Ajax.Updater('infobox', 'http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
76
76
  drop_receiving_element("droptarget1", :accept => 'products', :update => 'infobox')
77
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:['tshirts','mugs'], onDrop:function(element){new Ajax.Updater('infobox', 'http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
77
+ assert_dom_equal %(<script>\n//<![CDATA[\nDroppables.add(\"droptarget1\", {accept:['tshirts','mugs'], onDrop:function(element){new Ajax.Updater('infobox', 'http://www.example.com/', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}})\n//]]>\n</script>),
78
78
  drop_receiving_element("droptarget1", :accept => ['tshirts','mugs'], :update => 'infobox')
79
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nDroppables.add("droptarget1", {hoverclass:'dropready', onDrop:function(element){if (confirm('Are you sure?')) { new Ajax.Request('http://www.example.com/update_drop', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)}); }}})\n//]]>\n</script>),
79
+ assert_dom_equal %(<script>\n//<![CDATA[\nDroppables.add("droptarget1", {hoverclass:'dropready', onDrop:function(element){if (confirm('Are you sure?')) { new Ajax.Request('http://www.example.com/update_drop', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)}); }}})\n//]]>\n</script>),
80
80
  drop_receiving_element('droptarget1', :hoverclass=>'dropready', :url=>{:action=>'update_drop'}, :confirm => 'Are you sure?')
81
81
 
82
82
  end
metadata CHANGED
@@ -1,38 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prototype-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
5
- prerelease:
4
+ version: 4.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Xavier Noria
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-01-23 00:00:00.000000000 Z
11
+ date: 2013-12-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rails
16
- requirement: &85346000 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
- version: '3.2'
19
+ version: '4.0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *85346000
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: mocha
27
- requirement: &85345800 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *85345800
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  description:
37
42
  email: fxn@hashref.com
38
43
  executables: []
@@ -42,75 +47,75 @@ files:
42
47
  - README
43
48
  - Rakefile
44
49
  - Gemfile
45
- - lib/action_view/template/handlers/rjs.rb
46
- - lib/action_view/helpers/scriptaculous_helper.rb
47
50
  - lib/action_view/helpers/prototype_helper.rb
48
- - lib/prototype-rails.rb
49
- - lib/prototype-rails/on_load_action_controller.rb
51
+ - lib/action_view/helpers/scriptaculous_helper.rb
52
+ - lib/action_view/template/handlers/rjs.rb
50
53
  - lib/prototype-rails/javascript_helper.rb
54
+ - lib/prototype-rails/on_load_action_controller.rb
55
+ - lib/prototype-rails/on_load_action_view.rb
51
56
  - lib/prototype-rails/renderers.rb
52
57
  - lib/prototype-rails/rendering.rb
53
- - lib/prototype-rails/on_load_action_view.rb
54
58
  - lib/prototype-rails/selector_assertions.rb
59
+ - lib/prototype-rails.rb
60
+ - vendor/assets/javascripts/controls.js
55
61
  - vendor/assets/javascripts/dragdrop.js
62
+ - vendor/assets/javascripts/effects.js
56
63
  - vendor/assets/javascripts/prototype.js
57
64
  - vendor/assets/javascripts/prototype_ujs.js
58
- - vendor/assets/javascripts/controls.js
59
- - vendor/assets/javascripts/effects.js
60
- - test/render_other_test.rb
61
- - test/lib/controller/fake_models.rb
62
- - test/abstract_unit.rb
63
- - test/template/scriptaculous_helper_test.rb
64
- - test/template/prototype_helper_test.rb
65
- - test/template/render_test.rb
66
65
  - test/assert_select_test.rb
67
66
  - test/controller/caching_test.rb
67
+ - test/controller/content_type_test.rb
68
+ - test/controller/mime_responds_test.rb
68
69
  - test/controller/new_base/content_type_test.rb
69
70
  - test/controller/new_base/render_rjs_test.rb
70
- - test/controller/mime_responds_test.rb
71
- - test/controller/content_type_test.rb
72
71
  - test/controller/render_js_test.rb
73
- - test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs
74
- - test/fixtures/functional_caching/formatted_fragment_cached.js.rjs
75
72
  - test/fixtures/functional_caching/_partial.erb
73
+ - test/fixtures/functional_caching/formatted_fragment_cached.js.rjs
74
+ - test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs
76
75
  - test/fixtures/old_content_type/render_default_for_rjs.rjs
77
- - test/fixtures/respond_to/using_defaults_with_type_list.js.rjs
78
- - test/fixtures/respond_to/layouts/standard.html.erb
79
76
  - test/fixtures/respond_to/all_types_with_layout.js.rjs
77
+ - test/fixtures/respond_to/layouts/standard.html.erb
80
78
  - test/fixtures/respond_to/using_defaults.js.rjs
81
- - test/fixtures/test/render_implicit_html_template.js.rjs
82
- - test/fixtures/test/delete_with_js.rjs
79
+ - test/fixtures/respond_to/using_defaults_with_type_list.js.rjs
80
+ - test/fixtures/respond_with/using_resource.js.rjs
81
+ - test/fixtures/test/_one.html.erb
83
82
  - test/fixtures/test/_partial.html.erb
84
- - test/fixtures/test/enum_rjs_test.rjs
85
- - test/fixtures/test/render_explicit_html_template.js.rjs
86
83
  - test/fixtures/test/_partial.js.erb
87
- - test/fixtures/test/greeting.js.rjs
88
- - test/fixtures/test/_one.html.erb
89
84
  - test/fixtures/test/_two.html.erb
90
- - test/fixtures/respond_with/using_resource.js.rjs
85
+ - test/fixtures/test/delete_with_js.rjs
86
+ - test/fixtures/test/enum_rjs_test.rjs
87
+ - test/fixtures/test/greeting.js.rjs
88
+ - test/fixtures/test/render_explicit_html_template.js.rjs
89
+ - test/fixtures/test/render_implicit_html_template.js.rjs
91
90
  - test/javascript_helper_test.rb
91
+ - test/lib/abstract_unit.rb
92
+ - test/lib/controller/fake_models.rb
93
+ - test/render_other_test.rb
94
+ - test/template/prototype_helper_test.rb
95
+ - test/template/render_test.rb
96
+ - test/template/scriptaculous_helper_test.rb
92
97
  homepage: http://github.com/rails/prototype-rails
93
98
  licenses: []
99
+ metadata: {}
94
100
  post_install_message:
95
101
  rdoc_options: []
96
102
  require_paths:
97
103
  - lib
98
104
  required_ruby_version: !ruby/object:Gem::Requirement
99
- none: false
100
105
  requirements:
101
- - - ! '>='
106
+ - - '>='
102
107
  - !ruby/object:Gem::Version
103
108
  version: '0'
104
109
  required_rubygems_version: !ruby/object:Gem::Requirement
105
- none: false
106
110
  requirements:
107
- - - ! '>='
111
+ - - '>='
108
112
  - !ruby/object:Gem::Version
109
113
  version: '0'
110
114
  requirements: []
111
115
  rubyforge_project:
112
- rubygems_version: 1.8.10
116
+ rubygems_version: 2.1.11
113
117
  signing_key:
114
- specification_version: 3
118
+ specification_version: 4
115
119
  summary: Prototype, Scriptaculous, and RJS for Ruby on Rails
116
120
  test_files: []
121
+ has_rdoc: