From 6575b5a1656c32493a89c8d55a653ec64aea7330 Mon Sep 17 00:00:00 2001 From: Gaspard Bucher Date: Thu, 16 Jan 2014 11:15:05 +0100 Subject: [PATCH] Added code to ensure only the latest Ajax requests is used to update a DOM. --- lib/zena/use/ajax.rb | 18 ++++- lib/zena/use/urls.rb | 1 + test/integration/query_node/basic.yml | 1 + zena.gemspec | 104 +++++++++++++------------- 4 files changed, 68 insertions(+), 56 deletions(-) diff --git a/lib/zena/use/ajax.rb b/lib/zena/use/ajax.rb index 2d28cfde..b53825a2 100644 --- a/lib/zena/use/ajax.rb +++ b/lib/zena/use/ajax.rb @@ -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 @@ -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 diff --git a/lib/zena/use/urls.rb b/lib/zena/use/urls.rb index ca9285bb..cbe98fb6 100644 --- a/lib/zena/use/urls.rb +++ b/lib/zena/use/urls.rb @@ -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 diff --git a/test/integration/query_node/basic.yml b/test/integration/query_node/basic.yml index 820ca2d3..cedf1b8f 100644 --- a/test/integration/query_node/basic.yml +++ b/test/integration/query_node/basic.yml @@ -160,4 +160,5 @@ in_sub_nodes: context: node: cleanWater src: pages in sub_nodes + sql: "xx" res: "Etat des travaux, crocodiles" diff --git a/zena.gemspec b/zena.gemspec index 1da9bbd1..476353b9 100644 --- a/zena.gemspec +++ b/zena.gemspec @@ -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} @@ -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, ["= 1.5.1"]) - s.add_runtime_dependency(%q, ["= 2.0.0"]) - s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, ["= 0.3.8"]) - s.add_runtime_dependency(%q, ["= 0.1.2"]) - s.add_runtime_dependency(%q, ["~> 0.4.16"]) + s.add_runtime_dependency(%q, ["= 0.3.1"]) s.add_runtime_dependency(%q, ["= 0.8.11"]) - s.add_runtime_dependency(%q, ["~> 2.3.12"]) - s.add_runtime_dependency(%q, ["= 2.3.4"]) - s.add_runtime_dependency(%q, ["= 2.3.18"]) - s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, [">= 0"]) s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, ["= 1.2.3"]) - s.add_runtime_dependency(%q, [">= 0"]) s.add_runtime_dependency(%q, ["= 1.0.3"]) + s.add_runtime_dependency(%q, ["~> 0.4.16"]) + s.add_runtime_dependency(%q, ["= 0.7.0"]) + s.add_runtime_dependency(%q, ["= 2.0.0"]) s.add_runtime_dependency(%q, ["= 2.10.3"]) s.add_runtime_dependency(%q, ["= 2.1.0"]) - s.add_runtime_dependency(%q, ["= 0.3.1"]) - s.add_runtime_dependency(%q, ["= 0.7.0"]) + s.add_runtime_dependency(%q, ["~> 2.3.12"]) + s.add_runtime_dependency(%q, ["= 3.0.4"]) + s.add_runtime_dependency(%q, [">= 0"]) + s.add_runtime_dependency(%q, ["= 1.5.1"]) s.add_runtime_dependency(%q, ["= 2.1.9"]) + s.add_runtime_dependency(%q, ["= 0.8.0"]) + s.add_runtime_dependency(%q, ["= 1.2.3"]) + s.add_runtime_dependency(%q, ["= 2.3.18"]) + s.add_runtime_dependency(%q, [">= 0"]) s.add_runtime_dependency(%q, [">= 0"]) + s.add_runtime_dependency(%q, ["= 0.3.8"]) + s.add_runtime_dependency(%q, ["= 0.1.2"]) + s.add_runtime_dependency(%q, [">= 0"]) + s.add_runtime_dependency(%q, ["= 2.3.4"]) + s.add_runtime_dependency(%q, [">= 0"]) s.add_runtime_dependency(%q, ["= 1.0.0"]) - s.add_runtime_dependency(%q, ["= 3.0.4"]) - s.add_runtime_dependency(%q, ["= 0.8.0"]) else - s.add_dependency(%q, ["= 1.5.1"]) - s.add_dependency(%q, ["= 2.0.0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["= 0.3.8"]) - s.add_dependency(%q, ["= 0.1.2"]) - s.add_dependency(%q, ["~> 0.4.16"]) + s.add_dependency(%q, ["= 0.3.1"]) s.add_dependency(%q, ["= 0.8.11"]) - s.add_dependency(%q, ["~> 2.3.12"]) - s.add_dependency(%q, ["= 2.3.4"]) - s.add_dependency(%q, ["= 2.3.18"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["= 1.2.3"]) - s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, ["= 1.0.3"]) + s.add_dependency(%q, ["~> 0.4.16"]) + s.add_dependency(%q, ["= 0.7.0"]) + s.add_dependency(%q, ["= 2.0.0"]) s.add_dependency(%q, ["= 2.10.3"]) s.add_dependency(%q, ["= 2.1.0"]) - s.add_dependency(%q, ["= 0.3.1"]) - s.add_dependency(%q, ["= 0.7.0"]) + s.add_dependency(%q, ["~> 2.3.12"]) + s.add_dependency(%q, ["= 3.0.4"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 1.5.1"]) s.add_dependency(%q, ["= 2.1.9"]) + s.add_dependency(%q, ["= 0.8.0"]) + s.add_dependency(%q, ["= 1.2.3"]) + s.add_dependency(%q, ["= 2.3.18"]) + s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 0.3.8"]) + s.add_dependency(%q, ["= 0.1.2"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 2.3.4"]) + s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, ["= 1.0.0"]) - s.add_dependency(%q, ["= 3.0.4"]) - s.add_dependency(%q, ["= 0.8.0"]) end else - s.add_dependency(%q, ["= 1.5.1"]) - s.add_dependency(%q, ["= 2.0.0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["= 0.3.8"]) - s.add_dependency(%q, ["= 0.1.2"]) - s.add_dependency(%q, ["~> 0.4.16"]) + s.add_dependency(%q, ["= 0.3.1"]) s.add_dependency(%q, ["= 0.8.11"]) - s.add_dependency(%q, ["~> 2.3.12"]) - s.add_dependency(%q, ["= 2.3.4"]) - s.add_dependency(%q, ["= 2.3.18"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["= 1.2.3"]) - s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, ["= 1.0.3"]) + s.add_dependency(%q, ["~> 0.4.16"]) + s.add_dependency(%q, ["= 0.7.0"]) + s.add_dependency(%q, ["= 2.0.0"]) s.add_dependency(%q, ["= 2.10.3"]) s.add_dependency(%q, ["= 2.1.0"]) - s.add_dependency(%q, ["= 0.3.1"]) - s.add_dependency(%q, ["= 0.7.0"]) + s.add_dependency(%q, ["~> 2.3.12"]) + s.add_dependency(%q, ["= 3.0.4"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 1.5.1"]) s.add_dependency(%q, ["= 2.1.9"]) + s.add_dependency(%q, ["= 0.8.0"]) + s.add_dependency(%q, ["= 1.2.3"]) + s.add_dependency(%q, ["= 2.3.18"]) + s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 0.3.8"]) + s.add_dependency(%q, ["= 0.1.2"]) + s.add_dependency(%q, [">= 0"]) + s.add_dependency(%q, ["= 2.3.4"]) + s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, ["= 1.0.0"]) - s.add_dependency(%q, ["= 3.0.4"]) - s.add_dependency(%q, ["= 0.8.0"]) end end