Skip to content

Commit

Permalink
Added code to ensure only the latest Ajax requests is used to update …
Browse files Browse the repository at this point in the history
…a DOM.
  • Loading branch information
gaspard committed Jan 16, 2014
1 parent 0c8bdf8 commit 6575b5a
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 56 deletions.
18 changes: 14 additions & 4 deletions lib/zena/use/ajax.rb
Expand Up @@ -37,7 +37,15 @@ def update_page_content(page, obj)
end
return
end


# Make sure we render requests in chronological order
page << "if (Zena.stampOk('#{params[:dom_id]}', #{params[:zs].to_i})) {"
# We cannot 'return' in Firefox, the eval script is not in a function
do_update_page_content(page, obj)
page << "}"
end

def do_update_page_content(page, obj)
if params[:t_id] && obj.errors.empty?
obj = secure(Node) { Node.find_by_zip(params[:t_id])}
@node = obj
Expand Down Expand Up @@ -191,15 +199,17 @@ def add_toggle_id(dom_id, group_name, role, opts = {})
list << dom_id
end

def filter_form(node, dom_id, loading, upd)
def filter_form(node, form_id, loading, upd)
if loading
loading = "\n#{loading}($('#{upd}'));"
else
loading = ''
end
# Disable 'redir' parameter during preview or filter.
js_data << %Q{new Form.Observer('#{dom_id}', 0.3, function(element, value) {#{loading}
var data = Form.serialize('#{dom_id}').gsub(/&redir=/,'&no_redir=')
js_data << %Q{new Form.Observer('#{form_id}', 0.3, function(element, value) {#{loading}
var data = Form.serialize('#{form_id}', {hash: true})
delete data.redir
data.zs = Zena.stamp(data.dom_id)
new Ajax.Request('#{zafu_node_path(node)}', {asynchronous:true, evalScripts:true, method:'post', parameters:data})
});}
end
Expand Down
1 change: 1 addition & 0 deletions lib/zena/use/urls.rb
Expand Up @@ -453,6 +453,7 @@ def make_link(options = {})

if true
# Use onclick with Ajax.
# FIXME: Use Zena.do so that we can use ajax stamp. This means that we write a variant of "make_href" which returns json for query parameters.
if confirm
markup.set_dyn_param(:onclick, "if(confirm(this.getAttribute(\"data-confirm\"))) {new Ajax.Request(\"<%= #{href} %>\", {asynchronous:true, evalScripts:true, method:\"#{http_method}\"});} return false;")
else
Expand Down
1 change: 1 addition & 0 deletions test/integration/query_node/basic.yml
Expand Up @@ -160,4 +160,5 @@ in_sub_nodes:
context:
node: cleanWater
src: pages in sub_nodes
sql: "xx"
res: "Etat des travaux, crocodiles"
104 changes: 52 additions & 52 deletions zena.gemspec
Expand Up @@ -9,7 +9,7 @@ Gem::Specification.new do |s|

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Gaspard Bucher"]
s.date = %q{2013-12-17}
s.date = %q{2014-01-16}
s.default_executable = %q{zena}
s.description = %q{zena is a Ruby on Rails CMS (content managment system) with a focus on usability, ease of customization and web 2.0 goodness (application like behaviour).}
s.email = %q{gaspard@teti.ch}
Expand Down Expand Up @@ -2235,84 +2235,84 @@ Gem::Specification.new do |s|
s.specification_version = 3

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_runtime_dependency(%q<json>, ["= 1.5.1"])
s.add_runtime_dependency(%q<uuidtools>, ["= 2.0.0"])
s.add_runtime_dependency(%q<daemons>, [">= 0"])
s.add_runtime_dependency(%q<httmultiparty>, ["= 0.3.8"])
s.add_runtime_dependency(%q<differ>, ["= 0.1.2"])
s.add_runtime_dependency(%q<fast_gettext>, ["~> 0.4.16"])
s.add_runtime_dependency(%q<versions>, ["= 0.3.1"])
s.add_runtime_dependency(%q<rubyless>, ["= 0.8.11"])
s.add_runtime_dependency(%q<will_paginate>, ["~> 2.3.12"])
s.add_runtime_dependency(%q<property>, ["= 2.3.4"])
s.add_runtime_dependency(%q<rails>, ["= 2.3.18"])
s.add_runtime_dependency(%q<hpricot>, [">= 0"])
s.add_runtime_dependency(%q<gem_plugin>, [">= 0"])
s.add_runtime_dependency(%q<open4>, [">= 0"])
s.add_runtime_dependency(%q<querybuilder>, ["= 1.2.3"])
s.add_runtime_dependency(%q<simple_xlsx_writer>, [">= 0"])
s.add_runtime_dependency(%q<ruby-recaptcha>, ["= 1.0.3"])
s.add_runtime_dependency(%q<fast_gettext>, ["~> 0.4.16"])
s.add_runtime_dependency(%q<yamltest>, ["= 0.7.0"])
s.add_runtime_dependency(%q<uuidtools>, ["= 2.0.0"])
s.add_runtime_dependency(%q<shoulda>, ["= 2.10.3"])
s.add_runtime_dependency(%q<gettext>, ["= 2.1.0"])
s.add_runtime_dependency(%q<versions>, ["= 0.3.1"])
s.add_runtime_dependency(%q<yamltest>, ["= 0.7.0"])
s.add_runtime_dependency(%q<will_paginate>, ["~> 2.3.12"])
s.add_runtime_dependency(%q<RedCloth>, ["= 3.0.4"])
s.add_runtime_dependency(%q<simple_xlsx_writer>, [">= 0"])
s.add_runtime_dependency(%q<json>, ["= 1.5.1"])
s.add_runtime_dependency(%q<authlogic>, ["= 2.1.9"])
s.add_runtime_dependency(%q<safe_yaml>, ["= 0.8.0"])
s.add_runtime_dependency(%q<querybuilder>, ["= 1.2.3"])
s.add_runtime_dependency(%q<rails>, ["= 2.3.18"])
s.add_runtime_dependency(%q<hpricot>, [">= 0"])
s.add_runtime_dependency(%q<tzinfo>, [">= 0"])
s.add_runtime_dependency(%q<httmultiparty>, ["= 0.3.8"])
s.add_runtime_dependency(%q<differ>, ["= 0.1.2"])
s.add_runtime_dependency(%q<gem_plugin>, [">= 0"])
s.add_runtime_dependency(%q<property>, ["= 2.3.4"])
s.add_runtime_dependency(%q<daemons>, [">= 0"])
s.add_runtime_dependency(%q<syntax>, ["= 1.0.0"])
s.add_runtime_dependency(%q<RedCloth>, ["= 3.0.4"])
s.add_runtime_dependency(%q<safe_yaml>, ["= 0.8.0"])
else
s.add_dependency(%q<json>, ["= 1.5.1"])
s.add_dependency(%q<uuidtools>, ["= 2.0.0"])
s.add_dependency(%q<daemons>, [">= 0"])
s.add_dependency(%q<httmultiparty>, ["= 0.3.8"])
s.add_dependency(%q<differ>, ["= 0.1.2"])
s.add_dependency(%q<fast_gettext>, ["~> 0.4.16"])
s.add_dependency(%q<versions>, ["= 0.3.1"])
s.add_dependency(%q<rubyless>, ["= 0.8.11"])
s.add_dependency(%q<will_paginate>, ["~> 2.3.12"])
s.add_dependency(%q<property>, ["= 2.3.4"])
s.add_dependency(%q<rails>, ["= 2.3.18"])
s.add_dependency(%q<hpricot>, [">= 0"])
s.add_dependency(%q<gem_plugin>, [">= 0"])
s.add_dependency(%q<open4>, [">= 0"])
s.add_dependency(%q<querybuilder>, ["= 1.2.3"])
s.add_dependency(%q<simple_xlsx_writer>, [">= 0"])
s.add_dependency(%q<ruby-recaptcha>, ["= 1.0.3"])
s.add_dependency(%q<fast_gettext>, ["~> 0.4.16"])
s.add_dependency(%q<yamltest>, ["= 0.7.0"])
s.add_dependency(%q<uuidtools>, ["= 2.0.0"])
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
s.add_dependency(%q<gettext>, ["= 2.1.0"])
s.add_dependency(%q<versions>, ["= 0.3.1"])
s.add_dependency(%q<yamltest>, ["= 0.7.0"])
s.add_dependency(%q<will_paginate>, ["~> 2.3.12"])
s.add_dependency(%q<RedCloth>, ["= 3.0.4"])
s.add_dependency(%q<simple_xlsx_writer>, [">= 0"])
s.add_dependency(%q<json>, ["= 1.5.1"])
s.add_dependency(%q<authlogic>, ["= 2.1.9"])
s.add_dependency(%q<safe_yaml>, ["= 0.8.0"])
s.add_dependency(%q<querybuilder>, ["= 1.2.3"])
s.add_dependency(%q<rails>, ["= 2.3.18"])
s.add_dependency(%q<hpricot>, [">= 0"])
s.add_dependency(%q<tzinfo>, [">= 0"])
s.add_dependency(%q<httmultiparty>, ["= 0.3.8"])
s.add_dependency(%q<differ>, ["= 0.1.2"])
s.add_dependency(%q<gem_plugin>, [">= 0"])
s.add_dependency(%q<property>, ["= 2.3.4"])
s.add_dependency(%q<daemons>, [">= 0"])
s.add_dependency(%q<syntax>, ["= 1.0.0"])
s.add_dependency(%q<RedCloth>, ["= 3.0.4"])
s.add_dependency(%q<safe_yaml>, ["= 0.8.0"])
end
else
s.add_dependency(%q<json>, ["= 1.5.1"])
s.add_dependency(%q<uuidtools>, ["= 2.0.0"])
s.add_dependency(%q<daemons>, [">= 0"])
s.add_dependency(%q<httmultiparty>, ["= 0.3.8"])
s.add_dependency(%q<differ>, ["= 0.1.2"])
s.add_dependency(%q<fast_gettext>, ["~> 0.4.16"])
s.add_dependency(%q<versions>, ["= 0.3.1"])
s.add_dependency(%q<rubyless>, ["= 0.8.11"])
s.add_dependency(%q<will_paginate>, ["~> 2.3.12"])
s.add_dependency(%q<property>, ["= 2.3.4"])
s.add_dependency(%q<rails>, ["= 2.3.18"])
s.add_dependency(%q<hpricot>, [">= 0"])
s.add_dependency(%q<gem_plugin>, [">= 0"])
s.add_dependency(%q<open4>, [">= 0"])
s.add_dependency(%q<querybuilder>, ["= 1.2.3"])
s.add_dependency(%q<simple_xlsx_writer>, [">= 0"])
s.add_dependency(%q<ruby-recaptcha>, ["= 1.0.3"])
s.add_dependency(%q<fast_gettext>, ["~> 0.4.16"])
s.add_dependency(%q<yamltest>, ["= 0.7.0"])
s.add_dependency(%q<uuidtools>, ["= 2.0.0"])
s.add_dependency(%q<shoulda>, ["= 2.10.3"])
s.add_dependency(%q<gettext>, ["= 2.1.0"])
s.add_dependency(%q<versions>, ["= 0.3.1"])
s.add_dependency(%q<yamltest>, ["= 0.7.0"])
s.add_dependency(%q<will_paginate>, ["~> 2.3.12"])
s.add_dependency(%q<RedCloth>, ["= 3.0.4"])
s.add_dependency(%q<simple_xlsx_writer>, [">= 0"])
s.add_dependency(%q<json>, ["= 1.5.1"])
s.add_dependency(%q<authlogic>, ["= 2.1.9"])
s.add_dependency(%q<safe_yaml>, ["= 0.8.0"])
s.add_dependency(%q<querybuilder>, ["= 1.2.3"])
s.add_dependency(%q<rails>, ["= 2.3.18"])
s.add_dependency(%q<hpricot>, [">= 0"])
s.add_dependency(%q<tzinfo>, [">= 0"])
s.add_dependency(%q<httmultiparty>, ["= 0.3.8"])
s.add_dependency(%q<differ>, ["= 0.1.2"])
s.add_dependency(%q<gem_plugin>, [">= 0"])
s.add_dependency(%q<property>, ["= 2.3.4"])
s.add_dependency(%q<daemons>, [">= 0"])
s.add_dependency(%q<syntax>, ["= 1.0.0"])
s.add_dependency(%q<RedCloth>, ["= 3.0.4"])
s.add_dependency(%q<safe_yaml>, ["= 0.8.0"])
end
end

0 comments on commit 6575b5a

Please sign in to comment.