Backing out of [3470] until visual_effect, et al can work
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3471 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
8436147825
commit
5f44411d94
@ -1,19 +1,5 @@
|
||||
*SVN*
|
||||
|
||||
* Add the ability to call JavaScriptGenerator methods from helpers called in update blocks. [Sam Stephenson] Example:
|
||||
module ApplicationHelper
|
||||
def update_time
|
||||
page.replace_html 'time', Time.now.to_s(:db)
|
||||
page.visual_effect :highlight, 'time'
|
||||
end
|
||||
end
|
||||
|
||||
class UserController < ApplicationController
|
||||
def poll
|
||||
render :update { |page| page.update_time }
|
||||
end
|
||||
end
|
||||
|
||||
* Fixed that SSL would not correctly be detected when running lighttpd/fcgi behind lighttpd w/mod_proxy #3548 [stephen_purcell@yahoo.com]
|
||||
|
||||
* Added the possibility to specify atomatic expiration for the memcachd session container #3571 [Stefan Kaes]
|
||||
|
@ -687,7 +687,7 @@ def render_text(text = nil, status = nil)
|
||||
end
|
||||
|
||||
def render_javascript(javascript, status = nil)
|
||||
@response.headers['Content-Type'] = 'text/javascript'
|
||||
@response.headers['Content-type'] = 'text/javascript'
|
||||
render_text(javascript, status)
|
||||
end
|
||||
|
||||
@ -719,8 +719,7 @@ def erase_render_results
|
||||
@response.body = nil
|
||||
@performed_render = false
|
||||
end
|
||||
|
||||
|
||||
|
||||
# Clears the redirected results from the headers, resets the status to 200 and returns
|
||||
# the URL that was used to redirect or nil if there was no redirected URL
|
||||
# Note that +redirect_to+ will change the body of the response to indicate a redirection.
|
||||
|
@ -370,52 +370,34 @@ def observe_form(form_id, options = {})
|
||||
# this in your Ajax response bodies, either in a <script> tag or as plain
|
||||
# JavaScript sent with a Content-type of "text/javascript".
|
||||
#
|
||||
# Create new instances with PrototypeHelper#update_page or with
|
||||
# ActionController::Base#render, then call #insert_html, #replace_html,
|
||||
# #remove, #show, #hide, #visual_effect, or any other of the built-in
|
||||
# methods on the yielded generator in any order you like to modify the
|
||||
# content and appearance of the current page.
|
||||
# Create new instances with PrototypeHelper#update_page, then call
|
||||
# #insert_html, #replace_html, #remove, #show, or #hide on the yielded
|
||||
# generator in any order you like to modify the content and appearance of
|
||||
# the current page. (You can also call other helper methods which
|
||||
# return JavaScript, such as
|
||||
# ActionView::Helpers::ScriptaculousHelper#visual_effect.)
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# update_page do |page|
|
||||
# page.insert_html :bottom, 'list', "<li>#{@item.name}</li>"
|
||||
# page.insert_html :bottom, 'list', '<li>Last item</li>'
|
||||
# page.visual_effect :highlight, 'list'
|
||||
# page.hide 'status-indicator', 'cancel-link'
|
||||
# end
|
||||
#
|
||||
# generates the following JavaScript:
|
||||
#
|
||||
# new Insertion.Bottom("list", "<li>Some item</li>");
|
||||
# new Insertion.Bottom("list", "<li>Last item</li>");
|
||||
# new Effect.Highlight("list");
|
||||
# ["status-indicator", "cancel-link"].each(Element.hide);
|
||||
#
|
||||
# Helper methods can be used in conjunction with JavaScriptGenerator.
|
||||
# When a helper method is called inside an update block on the +page+
|
||||
# object, that method will also have access to a +page+ object.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# module ApplicationHelper
|
||||
# def update_time
|
||||
# page.replace_html 'time', Time.now.to_s(:db)
|
||||
# page.visual_effect :highlight, 'time'
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# # Controller action
|
||||
# def poll
|
||||
# render :update { |page| page.update_time }
|
||||
# end
|
||||
#
|
||||
# You can also use PrototypeHelper#update_page_tag instead of
|
||||
# PrototypeHelper#update_page to wrap the generated JavaScript in a
|
||||
# <script> tag.
|
||||
class JavaScriptGenerator
|
||||
def initialize(context, &block) #:nodoc:
|
||||
def initialize(context) #:nodoc:
|
||||
@context, @lines = context, []
|
||||
include_helpers_from_context
|
||||
@context.instance_exec(self, &block)
|
||||
yield self
|
||||
end
|
||||
|
||||
def to_s #:nodoc:
|
||||
@ -519,24 +501,12 @@ def delay(seconds = 1)
|
||||
yield
|
||||
record "}, #{(seconds * 1000).to_i})"
|
||||
end
|
||||
|
||||
# Starts a Scriptaculous visual effect. See
|
||||
# ActionView::Helpers::ScriptaculousHelper for more information.
|
||||
def visual_effect(name, id, options = {})
|
||||
record ScriptaculousHelper::visual_effect(name, id, options)
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
def include_helpers_from_context
|
||||
@context.extended_by.each do |mod|
|
||||
extend mod unless mod.name =~ /^ActionView::Helpers/
|
||||
end
|
||||
def method_missing(method, *arguments, &block)
|
||||
record(@context.send(method, *arguments, &block))
|
||||
end
|
||||
|
||||
def page
|
||||
self
|
||||
end
|
||||
|
||||
|
||||
def record(line)
|
||||
returning line = "#{line.to_s.chomp.gsub /\;$/, ''};" do
|
||||
self << line
|
||||
|
Loading…
Reference in New Issue
Block a user