From a5b439544aeb15d86dc45c81315d5d407bb38512 Mon Sep 17 00:00:00 2001 From: Gregor Schmidt <ruby@schmidtwisser.de> Date: Tue, 17 May 2011 19:51:17 +0200 Subject: [PATCH] [#416] introducing separate rjs view to reduce controller code --- app/controllers/watchers_controller.rb | 40 ++++++------------------ app/views/watchers/replace_selectors.rjs | 22 +++++++++++++ 2 files changed, 32 insertions(+), 30 deletions(-) create mode 100644 app/views/watchers/replace_selectors.rjs diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 617b92da8..1efa91f09 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -76,42 +76,22 @@ private def set_watcher(user, watching) @watched.set_watcher(user, watching) - if params[:replace].present? - if params[:replace].is_a? Array - replace_selectors = params[:replace] - else - replace_selectors = params[:replace].split(',').map(&:strip) - end - else - replace_selectors = ['#watcher'] - end respond_to do |format| format.html { redirect_to :back } format.js do - render(:update) do |page| - replace_selectors.each do |selector| - next if selector.blank? - - case selector - when '#watchers' - page.replace_html 'watchers', :partial => 'watchers/watchers', :locals => {:watched => @watched} - else - page.select(selector).each do |node| - options = {:replace => replace_selectors} - - last_selector = selector.split(' ').last - if last_selector.starts_with? '.' - options[:class] = last_selector[1..-1] - elsif last_selector.starts_with? '#' - options[:id] = last_selector[1..-1] - end - - node.replace watcher_link(@watched, user, options) - end - end + if params[:replace].present? + if params[:replace].is_a? Array + @replace_selectors = params[:replace] + else + @replace_selectors = params[:replace].split(',').map(&:strip) end + else + @replace_selectors = ['#watcher'] end + @user = user + + render :action => 'replace_selectors' end end rescue ::ActionController::RedirectBackError diff --git a/app/views/watchers/replace_selectors.rjs b/app/views/watchers/replace_selectors.rjs new file mode 100644 index 000000000..ae3b7ccdc --- /dev/null +++ b/app/views/watchers/replace_selectors.rjs @@ -0,0 +1,22 @@ +@replace_selectors.each do |selector| + next if selector.blank? + + case selector + when '#watchers' + page.replace_html 'watchers', :partial => 'watchers/watchers', :locals => {:watched => @watched} + else + page.select(selector).each do |node| + options = {:replace => @replace_selectors} + + last_selector = selector.split(' ').last + if last_selector.starts_with? '.' + options[:class] = last_selector[1..-1] + elsif last_selector.starts_with? '#' + options[:id] = last_selector[1..-1] + end + + node.replace watcher_link(@watched, @user, options) + end + end +end + -- GitLab