aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-06-29 08:09:00 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-06-29 08:09:00 +0000
commit2d8679993c3e7ec2920fd818dacc7cb2000b9f89 (patch)
treec50a31fb94c83be612ee314e5a056e0360658068 /actionpack
parent0ffcceffac52cc4ed373eb9db27d6c776b5d96b7 (diff)
downloadrails-2d8679993c3e7ec2920fd818dacc7cb2000b9f89.tar.gz
rails-2d8679993c3e7ec2920fd818dacc7cb2000b9f89.tar.bz2
rails-2d8679993c3e7ec2920fd818dacc7cb2000b9f89.zip
Fix JavaScriptHelper capitalization and make it compatible with Prototype #1545 [Sam Stephenson]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1561 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rwxr-xr-xactionpack/README4
-rw-r--r--actionpack/lib/action_view/helpers/javascript_helper.rb28
-rw-r--r--actionpack/test/template/javascript_helper.rb6
-rw-r--r--actionpack/test/template/upload_progress_helper_test.rb8
4 files changed, 24 insertions, 22 deletions
diff --git a/actionpack/README b/actionpack/README
index 2c59f9df8f..df2890ffb1 100755
--- a/actionpack/README
+++ b/actionpack/README
@@ -168,13 +168,13 @@ A short rundown of the major features:
{Learn more}[link:classes/ActionController/Base.html]
-* Javascript and Ajax integration.
+* JavaScript and Ajax integration.
link_to_function "Greeting", "alert('Hello world!')"
link_to_remote "Delete this post", :update => "posts",
:url => { :action => "destroy", :id => post.id }
- {Learn more}[link:classes/ActionView/Helpers/JavascriptHelper.html]
+ {Learn more}[link:classes/ActionView/Helpers/JavaScriptHelper.html]
* Pagination for navigating lists of results.
diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb
index a0a4076103..c73c1e08b0 100644
--- a/actionpack/lib/action_view/helpers/javascript_helper.rb
+++ b/actionpack/lib/action_view/helpers/javascript_helper.rb
@@ -2,19 +2,19 @@ require File.dirname(__FILE__) + '/tag_helper'
module ActionView
module Helpers
- # Provides a set of helpers for calling Javascript functions and, most importantly, to call remote methods using what has
+ # Provides a set of helpers for calling JavaScript functions and, most importantly, to call remote methods using what has
# been labelled Ajax[http://www.adaptivepath.com/publications/essays/archives/000385.php]. This means that you can call
# actions in your controllers without reloading the page, but still update certain parts of it using injections into the
# DOM. The common use case is having a form that adds a new element to a list without reloading the page.
#
- # To be able to use the Javascript helpers, you must either call <tt><%= define_javascript_functions %></tt> (which returns all
- # the Javascript support functions in a <script> block) or reference the Javascript library using
+ # To be able to use the JavaScript helpers, you must either call <tt><%= define_javascript_functions %></tt> (which returns all
+ # the JavaScript support functions in a <script> block) or reference the JavaScript library using
# <tt><%= javascript_include_tag "prototype" %></tt> (which looks for the library in /javascripts/prototype.js). The latter is
# recommended as the browser can then cache the library instead of fetching all the functions anew on every request.
#
# If you're the visual type, there's an Ajax movie[http://www.rubyonrails.com/media/video/rails-ajax.mov] demonstrating
# the use of form_remote_tag.
- module JavascriptHelper
+ module JavaScriptHelper
unless const_defined? :CALLBACKS
CALLBACKS =
[:uninitialized, :loading, :loaded, :interactive, :complete, :failure].push((100..599).to_a).flatten
@@ -101,7 +101,7 @@ module ActionView
# <tt>options[:type] = :synchronous</tt>.
#
# You can customize further browser side call logic by passing
- # in Javascript code snippets via some optional parameters. In
+ # in JavaScript code snippets via some optional parameters. In
# their order of use these are:
#
# <tt>:confirm</tt>:: Adds confirmation dialog.
@@ -126,11 +126,11 @@ module ActionView
end
# Returns a form tag that will submit using XMLHttpRequest in the background instead of the regular
- # reloading POST arrangement. Even though it's using Javascript to serialize the form elements, the form submission
+ # reloading POST arrangement. Even though it's using JavaScript to serialize the form elements, the form submission
# will work just like a regular submission as viewed by the receiving side (all elements available in @params).
# The options for specifying the target with :url and defining callbacks is the same as link_to_remote.
#
- # A "fall-through" target for browsers that doesn't do Javascript can be specified with the :action/:method options on :html
+ # A "fall-through" target for browsers that doesn't do JavaScript can be specified with the :action/:method options on :html
#
# form_remote_tag :html => { :action => url_for(:controller => "some", :action => "place") }
#
@@ -186,7 +186,7 @@ module ActionView
return function
end
- # Includes the Action Pack Javascript libraries inside a single <script>
+ # Includes the Action Pack JavaScript libraries inside a single <script>
# tag. The function first includes prototype.js and then its core extensions,
# (determined by filenames starting with "prototype").
# Afterwards, any additional scripts will be included in random order.
@@ -226,7 +226,7 @@ module ActionView
# <tt>:update</tt>:: Specifies the DOM ID of the element whose
# innerHTML should be updated with the
# XMLHttpRequest response text.
- # <tt>:with</tt>:: A Javascript expression specifying the
+ # <tt>:with</tt>:: A JavaScript expression specifying the
# parameters for the XMLHttpRequest. This defaults
# to 'value', which in the evaluated context
# refers to the new field value.
@@ -270,7 +270,7 @@ module ActionView
# innerHTML should be updated with the autocomplete
# entries returned by the Ajax request.
# Defaults to field_id + '_auto_complete'
- # <tt>:with</tt>:: A Javascript expression specifying the
+ # <tt>:with</tt>:: A JavaScript expression specifying the
# parameters for the XMLHttpRequest. This defaults
# to 'value', which in the evaluated context
# refers to the new field value.
@@ -351,12 +351,12 @@ module ActionView
javascript_tag("Sortable.create('#{element_id}', #{options_for_javascript(options)})")
end
- # Escape carrier returns and single and double quotes for Javascript segments.
+ # Escape carrier returns and single and double quotes for JavaScript segments.
def escape_javascript(javascript)
(javascript || '').gsub(/\r\n|\n|\r/, "\\n").gsub(/["']/) { |m| "\\#{m}" }
end
- # Returns a Javascript tag with the +content+ inside. Example:
+ # Returns a JavaScript tag with the +content+ inside. Example:
# javascript_tag "alert('All is good')" # => <script type="text/javascript">alert('All is good')</script>
def javascript_tag(content)
content_tag("script", content, :type => "text/javascript")
@@ -373,7 +373,7 @@ module ActionView
js_options['asynchronous'] = options[:type] != :synchronous
js_options['method'] = method_option_to_s(options[:method]) if options[:method]
js_options['insertion'] = "Insertion.#{options[:position].to_s.camelize}" if options[:position]
- js_options['script'] = options[:script] == true if options[:script]
+ js_options['evalScripts'] = options[:script] == true if options[:script]
if options[:form]
js_options['parameters'] = 'Form.serialize(this)'
@@ -437,5 +437,7 @@ module ActionView
)
end
end
+
+ JavascriptHelper = JavaScriptHelper unless const_defined? :JavascriptHelper
end
end
diff --git a/actionpack/test/template/javascript_helper.rb b/actionpack/test/template/javascript_helper.rb
index f70703c819..65864fc596 100644
--- a/actionpack/test/template/javascript_helper.rb
+++ b/actionpack/test/template/javascript_helper.rb
@@ -1,7 +1,7 @@
require File.dirname(__FILE__) + '/../abstract_unit'
-class JavascriptHelperTest < Test::Unit::TestCase
- include ActionView::Helpers::JavascriptHelper
+class JavaScriptHelperTest < Test::Unit::TestCase
+ include ActionView::Helpers::JavaScriptHelper
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::TagHelper
@@ -19,7 +19,7 @@ class JavascriptHelperTest < Test::Unit::TestCase
def test_define_javascript_functions
# check if prototype.js is included first
- assert_not_nil define_javascript_functions.split("\n")[1].match(/Prototype: an object-oriented Javascript library/)
+ assert_not_nil define_javascript_functions.split("\n")[1].match(/Prototype JavaScript framework/)
end
def test_escape_javascript
diff --git a/actionpack/test/template/upload_progress_helper_test.rb b/actionpack/test/template/upload_progress_helper_test.rb
index 361aa4bb08..287516b765 100644
--- a/actionpack/test/template/upload_progress_helper_test.rb
+++ b/actionpack/test/template/upload_progress_helper_test.rb
@@ -39,7 +39,7 @@ class UploadProgressHelperTest < Test::Unit::TestCase
include ActionView::Helpers::FormTagHelper
include ActionView::Helpers::TagHelper
include ActionView::Helpers::UrlHelper
- include ActionView::Helpers::JavascriptHelper
+ include ActionView::Helpers::JavaScriptHelper
include ActionView::Helpers::UploadProgressHelper
def next_upload_id; @upload_id = last_upload_id.succ; end
@@ -175,7 +175,7 @@ class UploadProgressHelperTest < Test::Unit::TestCase
include ActionView::Helpers::FormTagHelper
include ActionView::Helpers::TagHelper
include ActionView::Helpers::UrlHelper
- include ActionView::Helpers::JavascriptHelper
+ include ActionView::Helpers::JavaScriptHelper
include ActionView::Helpers::UploadProgressHelper
def next_upload_id; @upload_id = last_upload_id.succ; end
@@ -258,14 +258,14 @@ class UploadProgressHelperTest < Test::Unit::TestCase
def test_form_tag_with_upload_progress
assert_equal(
- "<form action=\"http://www.example.com\" enctype=\"multipart/form-data\" method=\"post\" onsubmit=\"if (this.action.indexOf('upload_id') &lt; 0){ this.action += '?upload_id=1'; }this.target = 'UploadTarget1';$('UploadStatus1').innerHTML='Upload starting...'; $('UploadProgressBar1').firstChild.firstChild.style.width='0%'; if (document.uploadStatus1) { document.uploadStatus1.stop(); }document.uploadStatus1 = new Ajax.PeriodicalUpdater('UploadStatus1','http://www.example.com', {script:true, onComplete:function(request){$('UploadStatus1').innerHTML='A message';$('UploadProgressBar1').firstChild.firstChild.style.width='100%';document.uploadStatus1 = null}, asynchronous:true}.extend({decay:1.8,freqency:2.0})); return true\"><iframe id=\"UploadTarget1\" name=\"UploadTarget1\" src=\"\" style=\"width:0px;height:0px;border:0\"></iframe>",
+ "<form action=\"http://www.example.com\" enctype=\"multipart/form-data\" method=\"post\" onsubmit=\"if (this.action.indexOf('upload_id') &lt; 0){ this.action += '?upload_id=1'; }this.target = 'UploadTarget1';$('UploadStatus1').innerHTML='Upload starting...'; $('UploadProgressBar1').firstChild.firstChild.style.width='0%'; if (document.uploadStatus1) { document.uploadStatus1.stop(); }document.uploadStatus1 = new Ajax.PeriodicalUpdater('UploadStatus1','http://www.example.com', {onComplete:function(request){$('UploadStatus1').innerHTML='A message';$('UploadProgressBar1').firstChild.firstChild.style.width='100%';document.uploadStatus1 = null}, evalScripts:true, asynchronous:true}.extend({decay:1.8,freqency:2.0})); return true\"><iframe id=\"UploadTarget1\" name=\"UploadTarget1\" src=\"\" style=\"width:0px;height:0px;border:0\"></iframe>",
form_tag_with_upload_progress
)
end
def test_form_tag_with_upload_progress_custom
assert_equal(
- "<form action=\"http://www.example.com\" enctype=\"multipart/form-data\" method=\"post\" onsubmit=\"if (this.action.indexOf('upload_id') &lt; 0){ this.action += '?upload_id=5'; }this.target = 'awindow';$('UploadStatus0').innerHTML='Upload starting...'; $('UploadProgressBar0').firstChild.firstChild.style.width='0%'; alert('foo'); if (document.uploadStatus0) { document.uploadStatus0.stop(); }document.uploadStatus0 = new Ajax.PeriodicalUpdater('UploadStatus0','http://www.example.com', {script:true, onComplete:function(request){$('UploadStatus0').innerHTML='A message';$('UploadProgressBar0').firstChild.firstChild.style.width='100%';document.uploadStatus0 = null; alert('bar')}, asynchronous:true}.extend({decay:7,freqency:6})); return true\" target=\"awindow\">",
+ "<form action=\"http://www.example.com\" enctype=\"multipart/form-data\" method=\"post\" onsubmit=\"if (this.action.indexOf('upload_id') &lt; 0){ this.action += '?upload_id=5'; }this.target = 'awindow';$('UploadStatus0').innerHTML='Upload starting...'; $('UploadProgressBar0').firstChild.firstChild.style.width='0%'; alert('foo'); if (document.uploadStatus0) { document.uploadStatus0.stop(); }document.uploadStatus0 = new Ajax.PeriodicalUpdater('UploadStatus0','http://www.example.com', {onComplete:function(request){$('UploadStatus0').innerHTML='A message';$('UploadProgressBar0').firstChild.firstChild.style.width='100%';document.uploadStatus0 = null; alert('bar')}, evalScripts:true, asynchronous:true}.extend({decay:7,freqency:6})); return true\" target=\"awindow\">",
form_tag_with_upload_progress({:upload_id => 5}, {:begin => "alert('foo')", :finish => "alert('bar')", :frequency => 6, :decay => 7, :target => 'awindow'})
)
end