From 07b9482cd6f93bf3c8fd90cf970079f37e644d56 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Tue, 20 Jan 2015 11:38:24 -0300 Subject: [PATCH] site_tour: set triggers for groups --- plugins/site_tour/controllers/site_tour_plugin_admin_controller.rb | 18 +++++++++++++++--- plugins/site_tour/lib/site_tour_plugin.rb | 2 +- plugins/site_tour/lib/site_tour_plugin/tour_block.rb | 4 +++- plugins/site_tour/public/main.js | 35 ++++++++++++++++++++++++++++++----- plugins/site_tour/test/functional/site_tour_plugin_admin_controller_test.rb | 7 +++++++ plugins/site_tour/views/blocks/tour.html.erb | 2 +- plugins/site_tour/views/box_organizer/site_tour_plugin/_tour_block.html.erb | 2 +- plugins/site_tour/views/site_tour_plugin_admin/index.html.erb | 1 + plugins/site_tour/views/tour_actions.html.erb | 7 ++++++- 9 files changed, 65 insertions(+), 13 deletions(-) diff --git a/plugins/site_tour/controllers/site_tour_plugin_admin_controller.rb b/plugins/site_tour/controllers/site_tour_plugin_admin_controller.rb index 912878e..7b72014 100644 --- a/plugins/site_tour/controllers/site_tour_plugin_admin_controller.rb +++ b/plugins/site_tour/controllers/site_tour_plugin_admin_controller.rb @@ -10,11 +10,15 @@ class SiteTourPluginAdminController < AdminController @settings = Noosfero::Plugin::Settings.new(environment, SiteTourPlugin, settings) @settings.actions_csv = convert_to_csv(@settings.actions) + @settings.group_triggers_csv = convert_to_csv(@settings.group_triggers) if request.post? - @settings.actions = convert_from_csv(settings[:actions_csv]) + @settings.actions = convert_actions_from_csv(settings[:actions_csv]) @settings.settings.delete(:actions_csv) + @settings.group_triggers = convert_group_triggers_from_csv(settings[:group_triggers_csv]) + @settings.settings.delete(:group_triggers_csv) + @settings.save! session[:notice] = 'Settings succefully saved.' redirect_to :action => 'index' @@ -25,14 +29,22 @@ class SiteTourPluginAdminController < AdminController def convert_to_csv(actions) CSV.generate do |csv| - (@settings.actions||[]).each { |action| csv << action.values } + (actions||[]).each { |action| csv << action.values } end end - def convert_from_csv(actions_csv) + def convert_actions_from_csv(actions_csv) + return [] if actions_csv.blank? CSV.parse(actions_csv).map do |action| {:language => action[0], :group_name => action[1], :selector => action[2], :description => action[3]} end end + def convert_group_triggers_from_csv(group_triggers_csv) + return [] if group_triggers_csv.blank? + CSV.parse(group_triggers_csv).map do |group| + {:group_name => group[0], :selector => group[1], :event => group[2]} + end + end + end diff --git a/plugins/site_tour/lib/site_tour_plugin.rb b/plugins/site_tour/lib/site_tour_plugin.rb index cc9f1ad..4003d3d 100644 --- a/plugins/site_tour/lib/site_tour_plugin.rb +++ b/plugins/site_tour/lib/site_tour_plugin.rb @@ -29,7 +29,7 @@ class SiteTourPlugin < Noosfero::Plugin settings = Noosfero::Plugin::Settings.new(environment, SiteTourPlugin) actions = (settings.actions||[]).select {|action| action[:language] == language} - render(:file => 'tour_actions', :locals => { :actions => actions, :js_file => js_file}) + render(:file => 'tour_actions', :locals => { :actions => actions, :group_triggers => settings.group_triggers, :js_file => js_file}) end end diff --git a/plugins/site_tour/lib/site_tour_plugin/tour_block.rb b/plugins/site_tour/lib/site_tour_plugin/tour_block.rb index b2af771..a4a6207 100644 --- a/plugins/site_tour/lib/site_tour_plugin/tour_block.rb +++ b/plugins/site_tour/lib/site_tour_plugin/tour_block.rb @@ -1,12 +1,14 @@ class SiteTourPlugin::TourBlock < Block settings_items :actions, :type => Array, :default => [{:group_name => 'tour_plugin', :selector => '.site-tour-plugin_tour-block .tour-button', :description => _('Click to start tour!')}] + settings_items :group_triggers, :type => Array, :default => [] settings_items :display_button, :type => :boolean, :default => true - attr_accessible :actions, :display_button + attr_accessible :actions, :display_button, :group_triggers before_save do |block| block.actions.reject! {|i| i[:group_name].blank? && i[:selector].blank? && i[:description].blank?} + block.group_triggers.reject! {|i| i[:group_name].blank? && i[:selector].blank? && i[:event].blank?} end def self.description diff --git a/plugins/site_tour/public/main.js b/plugins/site_tour/public/main.js index 576ce0e..1f33a55 100644 --- a/plugins/site_tour/public/main.js +++ b/plugins/site_tour/public/main.js @@ -1,7 +1,9 @@ var siteTourPlugin = (function() { var actions = []; + var groupTriggers = []; var userData = {}; + var intro; function hasMark(name) { return jQuery.cookie("_noosfero_.sitetour." + name) || @@ -19,7 +21,7 @@ var siteTourPlugin = (function() { jQuery('.site-tour-plugin').removeAttr('data-intro data-intro-name data-step'); } - function configureIntro(force) { + function configureIntro(force, actions) { clearAll(); for(var i=0; i 'en', :group_name => 'tour_plugin', :selector => '.tour-button', :description => 'Click'}], @settings.actions end + should 'parse csv and save group triggers array in plugin settings' do + group_triggers_csv = "tour_plugin,.tour-button,mouseenter" + post :index, :settings => {"group_triggers_csv" => group_triggers_csv} + @settings = Noosfero::Plugin::Settings.new(environment.reload, SiteTourPlugin) + assert_equal [{:group_name => 'tour_plugin', :selector => '.tour-button', :event => 'mouseenter'}], @settings.group_triggers + end + should 'do not store actions_csv' do actions_csv = "en,tour_plugin,.tour-button,Click" post :index, :settings => {"actions_csv" => actions_csv} diff --git a/plugins/site_tour/views/blocks/tour.html.erb b/plugins/site_tour/views/blocks/tour.html.erb index 346ddf3..1b7088b 100644 --- a/plugins/site_tour/views/blocks/tour.html.erb +++ b/plugins/site_tour/views/blocks/tour.html.erb @@ -7,5 +7,5 @@ <% edit_mode = controller.send(:boxes_editor?) && controller.send(:uses_design_blocks?) %> <% unless edit_mode %> - <%= render :file => 'tour_actions', :locals => {:actions => block.actions} %> + <%= render :file => 'tour_actions', :locals => {:actions => block.actions, :group_triggers => block.group_triggers} %> <% end %> diff --git a/plugins/site_tour/views/box_organizer/site_tour_plugin/_tour_block.html.erb b/plugins/site_tour/views/box_organizer/site_tour_plugin/_tour_block.html.erb index 99207c6..a9eb5e9 100644 --- a/plugins/site_tour/views/box_organizer/site_tour_plugin/_tour_block.html.erb +++ b/plugins/site_tour/views/box_organizer/site_tour_plugin/_tour_block.html.erb @@ -3,7 +3,7 @@ <%= labelled_form_field check_box(:block, :display_button) + _('Display help button'), '' %> -<%= _('Actions') %> +<%= _('Tooltip Actions') %>
  • <%= _('Group Name') %>
  • diff --git a/plugins/site_tour/views/site_tour_plugin_admin/index.html.erb b/plugins/site_tour/views/site_tour_plugin_admin/index.html.erb index 30dd022..bba26a5 100644 --- a/plugins/site_tour/views/site_tour_plugin_admin/index.html.erb +++ b/plugins/site_tour/views/site_tour_plugin_admin/index.html.erb @@ -3,6 +3,7 @@ <%= form_for(:settings) do |f| %> <%= labelled_form_field _('Tooltips (CSV format: language, group name, selector, description)'), f.text_area(:actions_csv, :style => 'width: 100%', :class => 'actions-csv') %> + <%= labelled_form_field _('Group Triggers (CSV format: group name, selector, event (e.g. mouseenter, click))'), f.text_area(:group_triggers_csv, :style => 'width: 100%', :class => 'groups-csv', :rows => 7) %> <% button_bar do %> <%= submit_button(:save, _('Save'), :cancel => {:controller => 'plugins', :action => 'index'}) %> diff --git a/plugins/site_tour/views/tour_actions.html.erb b/plugins/site_tour/views/tour_actions.html.erb index 61768d1..5ffeaa1 100644 --- a/plugins/site_tour/views/tour_actions.html.erb +++ b/plugins/site_tour/views/tour_actions.html.erb @@ -5,8 +5,13 @@ <% end %> -- libgit2 0.21.2