Commit 1debf11c40fa377cb8a8bacc42750d1e8d452b47
Committed by
Tallys Martins
1 parent
2685bca3
environment_notification plugin improved
- Added notifications for Organizations;
- Only the profile admin can create them;
- show_only_in_homepage option here works with profile homepage;
- Rename plugin to be more consistent with new features;
- Old plugin folder still exists, so old users can
switch automatically when migrating;
- If you want to start using it, activate "admin_notifications" plugin
instead of "environment_notification"
- Adds plugin namespace to tables, classes and modules;
Signed-off-by: Gabriel Silva <gabriel93.silva@gmail.com>
Signed-off-by: Lucas Severo <lucassalves65@gmail.com>
Signed-off-by: Marcos Ronaldo <marcos.rpj2@gmail.com>
Signed-off-by: Thiago Ribeiro <thiagitosouza@gmail.com>
Conflicts:
plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb
plugins/environment_notification/lib/environment_notifications_user.rb
plugins/environment_notification/models/environment_notification_plugin/environment_notification.rb
plugins/environment_notification/po/environment_notification.pot
plugins/environment_notification/po/pt/environment_notification.po
plugins/environment_notification/test/functional/environment_notification_plugin_admin_controller_test.rb
Showing
83 changed files
with
1856 additions
and
1670 deletions
Show diff stats
| @@ -0,0 +1,7 @@ | @@ -0,0 +1,7 @@ | ||
| 1 | +This plugin is the new version of "environment_notification" plugin. | ||
| 2 | + | ||
| 3 | +New features added: | ||
| 4 | + - Create a notification for an organization; | ||
| 5 | + - Only profile admin can create notifications; | ||
| 6 | + - Organization notifications can be seen by members from any of the organization pages; | ||
| 7 | + - home_page option set the notification to be seen only at organization homepage; |
plugins/admin_notifications/controllers/admin_notifications_plugin_admin_controller.rb
0 → 100644
| @@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
| 1 | +class AdminNotificationsPluginAdminController < AdminController | ||
| 2 | + | ||
| 3 | + include AdminNotificationsPlugin::NotificationManager | ||
| 4 | + | ||
| 5 | + before_filter :admin_required | ||
| 6 | + | ||
| 7 | + protected | ||
| 8 | + def target | ||
| 9 | + environment | ||
| 10 | + end | ||
| 11 | + | ||
| 12 | + def admin_required | ||
| 13 | + redirect_to :root unless current_person.is_admin? | ||
| 14 | + end | ||
| 15 | + | ||
| 16 | +end |
plugins/admin_notifications/controllers/admin_notifications_plugin_myprofile_controller.rb
0 → 100644
| @@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
| 1 | +class AdminNotificationsPluginMyprofileController < MyProfileController | ||
| 2 | + | ||
| 3 | + include AdminNotificationsPlugin::NotificationManager | ||
| 4 | + | ||
| 5 | + before_filter :admin_required | ||
| 6 | + | ||
| 7 | + protected | ||
| 8 | + def target | ||
| 9 | + profile | ||
| 10 | + end | ||
| 11 | + | ||
| 12 | + def admin_required | ||
| 13 | + redirect_to :root unless target.is_admin?(current_person) | ||
| 14 | + end | ||
| 15 | + | ||
| 16 | +end |
plugins/admin_notifications/controllers/public/admin_notifications_plugin_public_controller.rb
0 → 100644
| @@ -0,0 +1,48 @@ | @@ -0,0 +1,48 @@ | ||
| 1 | +class AdminNotificationsPluginPublicController < PublicController | ||
| 2 | + | ||
| 3 | + helper AdminNotificationsPlugin::NotificationHelper | ||
| 4 | + include AdminNotificationsPlugin::NotificationHelper | ||
| 5 | + | ||
| 6 | + def notifications_with_popup | ||
| 7 | + @hide_notifications = hide_notifications | ||
| 8 | + if params[:previous_path] | ||
| 9 | + @previous_path = params[:previous_path] | ||
| 10 | + else | ||
| 11 | + @previous_path = nil | ||
| 12 | + end | ||
| 13 | + end | ||
| 14 | + | ||
| 15 | + def close_notification | ||
| 16 | + result = false | ||
| 17 | + | ||
| 18 | + if logged_in? | ||
| 19 | + @notification = AdminNotificationsPlugin::Notification.find_by_id(params[:notification_id]) | ||
| 20 | + | ||
| 21 | + if @notification | ||
| 22 | + @notification.users << current_user | ||
| 23 | + result = @notification.users.include?(current_user) | ||
| 24 | + end | ||
| 25 | + end | ||
| 26 | + | ||
| 27 | + render json: result | ||
| 28 | + end | ||
| 29 | + | ||
| 30 | + def hide_notification | ||
| 31 | + result = false | ||
| 32 | + | ||
| 33 | + if logged_in? | ||
| 34 | + @notification = AdminNotificationsPlugin::Notification.find_by_id(params[:notification_id]) | ||
| 35 | + | ||
| 36 | + if @notification | ||
| 37 | + current_notificaions = [] | ||
| 38 | + current_notificaions = JSON.parse(cookies[:hide_notifications]) unless cookies[:hide_notifications].blank? | ||
| 39 | + current_notificaions << @notification.id unless current_notificaions.include? @notification.id | ||
| 40 | + cookies[:hide_notifications] = JSON.generate(current_notificaions) | ||
| 41 | + result = current_notificaions.include? @notification.id | ||
| 42 | + end | ||
| 43 | + end | ||
| 44 | + | ||
| 45 | + render json: result | ||
| 46 | + end | ||
| 47 | + | ||
| 48 | +end |
plugins/admin_notifications/db/migrate/20150721132025_create_notification_table.rb
0 → 100644
| @@ -0,0 +1,28 @@ | @@ -0,0 +1,28 @@ | ||
| 1 | +class CreateNotificationTable < ActiveRecord::Migration | ||
| 2 | + def up | ||
| 3 | + create_table :environment_notifications do |t| | ||
| 4 | + t.text :message | ||
| 5 | + t.integer :environment_id | ||
| 6 | + t.string :type | ||
| 7 | + t.string :title | ||
| 8 | + t.boolean :active | ||
| 9 | + t.boolean :display_only_in_homepage, :default => false | ||
| 10 | + t.boolean :display_to_all_users, :default => false | ||
| 11 | + t.boolean :display_popup, :default => false | ||
| 12 | + t.column :created_at, :datetime | ||
| 13 | + t.column :updated_at, :datetime | ||
| 14 | + end | ||
| 15 | + | ||
| 16 | + create_table :environment_notifications_users, id: false do |t| | ||
| 17 | + t.belongs_to :environment_notification | ||
| 18 | + t.belongs_to :user | ||
| 19 | + end | ||
| 20 | + add_index :environment_notifications_users, [:environment_notification_id], name: :index_Zaem6uuw | ||
| 21 | + add_index :environment_notifications_users, [:user_id], name: :index_ap3nohR9 | ||
| 22 | + end | ||
| 23 | + | ||
| 24 | + def down | ||
| 25 | + drop_table :environment_notifications | ||
| 26 | + drop_table :environment_notifications_users | ||
| 27 | + end | ||
| 28 | +end |
plugins/admin_notifications/db/migrate/20160321190726_change_notification_relation_to_polymorphic.rb
0 → 100644
| @@ -0,0 +1,13 @@ | @@ -0,0 +1,13 @@ | ||
| 1 | +class ChangeNotificationRelationToPolymorphic < ActiveRecord::Migration | ||
| 2 | + def up | ||
| 3 | + rename_column(:environment_notifications, :environment_id, :target_id) | ||
| 4 | + add_column(:environment_notifications, :target_type, :string) | ||
| 5 | + | ||
| 6 | + execute("UPDATE environment_notifications SET target_type = 'Environment'") | ||
| 7 | + end | ||
| 8 | + | ||
| 9 | + def down | ||
| 10 | + rename_column(:environment_notifications, :target_id, :environment_id) | ||
| 11 | + remove_column(:environment_notifications, :target_type) | ||
| 12 | + end | ||
| 13 | +end |
plugins/admin_notifications/db/migrate/20160330171610_rename_plugin_tables.rb
0 → 100644
| @@ -0,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
| 1 | +class RenamePluginTables < ActiveRecord::Migration | ||
| 2 | + def up | ||
| 3 | + remove_index :environment_notifications_users, name: :index_Zaem6uuw | ||
| 4 | + remove_index :environment_notifications_users, name: :index_ap3nohR9 | ||
| 5 | + | ||
| 6 | + rename_column :environment_notifications_users, :environment_notification_id, :notification_id | ||
| 7 | + | ||
| 8 | + rename_table :environment_notifications, :admin_notifications_plugin_notifications | ||
| 9 | + rename_table :environment_notifications_users, :admin_notifications_plugin_notifications_users | ||
| 10 | + | ||
| 11 | + add_index :admin_notifications_plugin_notifications_users, [:notification_id], :name => :index_notifications_users_notification_id | ||
| 12 | + add_index :admin_notifications_plugin_notifications_users, [:user_id], :name => :index_notifications_users_user_id | ||
| 13 | + | ||
| 14 | + Environment.all.each do |e| | ||
| 15 | + if e.enabled_plugins.include?('EnvironmentNotificationPlugin') | ||
| 16 | + e.enabled_plugins -= ['EnvironmentNotificationPlugin'] | ||
| 17 | + e.enabled_plugins += ['AdminNotificationsPlugin'] | ||
| 18 | + e.save! | ||
| 19 | + end | ||
| 20 | + end | ||
| 21 | + end | ||
| 22 | + | ||
| 23 | + def down | ||
| 24 | + remove_index :admin_notifications_plugin_notifications_users, :name => :index_notifications_users_notification_id | ||
| 25 | + remove_index :admin_notifications_plugin_notifications_users, :name => :index_notifications_users_user_id | ||
| 26 | + | ||
| 27 | + rename_table :admin_notifications_plugin_notifications, :environment_notifications | ||
| 28 | + rename_table :admin_notifications_plugin_notifications_users, :environment_notifications_users | ||
| 29 | + | ||
| 30 | + rename_column :environment_notifications_users, :notification_id, :environment_notification_id | ||
| 31 | + | ||
| 32 | + add_index :environment_notifications_users, [:environment_notification_id], name: :index_Zaem6uuw | ||
| 33 | + add_index :environment_notifications_users, [:user_id], name: :index_ap3nohR9 | ||
| 34 | + end | ||
| 35 | + | ||
| 36 | + Environment.all.each do |e| | ||
| 37 | + if e.enabled_plugins.include?('AdminNotificationsPlugin') | ||
| 38 | + e.enabled_plugins -= ['AdminNotificationsPlugin'] | ||
| 39 | + e.enabled_plugins += ['EnvironmentNotificationPlugin'] | ||
| 40 | + e.save! | ||
| 41 | + end | ||
| 42 | + end | ||
| 43 | +end |
plugins/admin_notifications/db/migrate/20160505142214_change_type_to_new_namespace.rb
0 → 100644
| @@ -0,0 +1,8 @@ | @@ -0,0 +1,8 @@ | ||
| 1 | +class ChangeTypeToNewNamespace < ActiveRecord::Migration | ||
| 2 | + def up | ||
| 3 | + notification_types = %w(InformationNotification DangerNotification SuccessNotification WarningNotification) | ||
| 4 | + notification_types.each do |notification_type| | ||
| 5 | + execute("update admin_notifications_plugin_notifications set type = 'AdminNotificationsPlugin::#{notification_type}' where type = 'EnvironmentNotificationPlugin::#{notification_type}'") | ||
| 6 | + end | ||
| 7 | + end | ||
| 8 | +end |
plugins/admin_notifications/features/message_edition.feature
0 → 100644
| @@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
| 1 | +Feature: Create envronment notification message | ||
| 2 | + As an admin user | ||
| 3 | + I want to create a notification | ||
| 4 | + In order to notificate users | ||
| 5 | + | ||
| 6 | + @selenium | ||
| 7 | + Scenario: mce restricted mode should show on message creation | ||
| 8 | + Given I am logged in as admin | ||
| 9 | + And I follow "Administration" | ||
| 10 | + And I follow "Plugins" | ||
| 11 | + And I follow "Configuration" | ||
| 12 | + And I follow "New Notification" | ||
| 13 | + Then The tinymce "toolbar1" should be "bold italic underline | link" | ||
| 14 | + Then The tinymce "menubar" should be "false" |
plugins/admin_notifications/lib/admin_notifications_plugin.rb
0 → 100644
| @@ -0,0 +1,59 @@ | @@ -0,0 +1,59 @@ | ||
| 1 | +class AdminNotificationsPlugin < Noosfero::Plugin | ||
| 2 | + | ||
| 3 | + def self.plugin_name | ||
| 4 | + "Notifications Plugin" | ||
| 5 | + end | ||
| 6 | + | ||
| 7 | + def self.plugin_description | ||
| 8 | + _("A plugin for notifications.") | ||
| 9 | + end | ||
| 10 | + | ||
| 11 | + def stylesheet? | ||
| 12 | + true | ||
| 13 | + end | ||
| 14 | + | ||
| 15 | + def js_files | ||
| 16 | + %w( | ||
| 17 | + admin_notifications_plugin.js | ||
| 18 | + ) | ||
| 19 | + end | ||
| 20 | + | ||
| 21 | + def body_beginning | ||
| 22 | + lambda do | ||
| 23 | + extend AdminNotificationsPlugin::NotificationHelper | ||
| 24 | + render template: 'shared/show_notification' | ||
| 25 | + end | ||
| 26 | + end | ||
| 27 | + | ||
| 28 | + def admin_panel_links | ||
| 29 | + {:title => _('Notification Manager'), :url => {:controller => 'admin_notifications_plugin_admin', :action => 'index'}} | ||
| 30 | + end | ||
| 31 | + | ||
| 32 | + def control_panel_buttons | ||
| 33 | + if context.profile.organization? | ||
| 34 | + { | ||
| 35 | + :title => _('Manage Notifications'), | ||
| 36 | + :icon => 'important', | ||
| 37 | + :url => { | ||
| 38 | + :controller => 'admin_notifications_plugin_myprofile', | ||
| 39 | + :action => 'index' | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | + end | ||
| 43 | + end | ||
| 44 | + | ||
| 45 | + def account_controller_filters | ||
| 46 | + block = proc do | ||
| 47 | + if !logged_in? | ||
| 48 | + cookies[:hide_notifications] = nil | ||
| 49 | + end | ||
| 50 | + end | ||
| 51 | + | ||
| 52 | + [{ | ||
| 53 | + :type => "after_filter", | ||
| 54 | + :method_name => "clean_hide_notifications_cookie", | ||
| 55 | + :options => { }, | ||
| 56 | + :block => block | ||
| 57 | + }] | ||
| 58 | + end | ||
| 59 | +end |
plugins/admin_notifications/lib/admin_notifications_plugin/notification_helper.rb
0 → 100644
| @@ -0,0 +1,18 @@ | @@ -0,0 +1,18 @@ | ||
| 1 | +module AdminNotificationsPlugin::NotificationHelper | ||
| 2 | + | ||
| 3 | + def hide_notifications | ||
| 4 | + invalid_id = -1 | ||
| 5 | + hide_notifications_ids = [invalid_id] | ||
| 6 | + hide_notifications_ids = JSON.parse(cookies[:hide_notifications]) unless cookies[:hide_notifications].blank? | ||
| 7 | + hide_notifications_ids | ||
| 8 | + end | ||
| 9 | + | ||
| 10 | + def self.substitute_variables(message, user) | ||
| 11 | + if user | ||
| 12 | + message = message.gsub("%{email}", user.person.email).gsub("%{name}", user.person.name) | ||
| 13 | + end | ||
| 14 | + | ||
| 15 | + message | ||
| 16 | + end | ||
| 17 | + | ||
| 18 | +end |
plugins/admin_notifications/lib/admin_notifications_plugin/notification_manager.rb
0 → 100644
| @@ -0,0 +1,60 @@ | @@ -0,0 +1,60 @@ | ||
| 1 | +module AdminNotificationsPlugin::NotificationManager | ||
| 2 | + | ||
| 3 | + def index | ||
| 4 | + @notifications = target.notifications.order('updated_at DESC') | ||
| 5 | + end | ||
| 6 | + | ||
| 7 | + def new | ||
| 8 | + @notification = AdminNotificationsPlugin::Notification.new | ||
| 9 | + if request.post? | ||
| 10 | + @notification = AdminNotificationsPlugin::Notification.new(params[:notifications]) | ||
| 11 | + @notification.message = @notification.message.html_safe | ||
| 12 | + @notification.target = target | ||
| 13 | + if @notification.save | ||
| 14 | + session[:notice] = _("Notification successfully created") | ||
| 15 | + redirect_to :action => :index | ||
| 16 | + else | ||
| 17 | + session[:notice] = _("Notification couldn't be created") | ||
| 18 | + end | ||
| 19 | + end | ||
| 20 | + end | ||
| 21 | + | ||
| 22 | + def destroy | ||
| 23 | + if request.delete? | ||
| 24 | + notification = target.notifications.find_by id: params[:id] | ||
| 25 | + if notification && notification.destroy | ||
| 26 | + session[:notice] = _('The notification was deleted.') | ||
| 27 | + else | ||
| 28 | + session[:notice] = _('Could not remove the notification') | ||
| 29 | + end | ||
| 30 | + end | ||
| 31 | + redirect_to :action => :index | ||
| 32 | + end | ||
| 33 | + | ||
| 34 | + def edit | ||
| 35 | + @notification = target.notifications.find_by id: params[:id] | ||
| 36 | + if request.post? | ||
| 37 | + if @notification.update_attributes(params[:notifications]) | ||
| 38 | + session[:notice] = _('The notification was edited.') | ||
| 39 | + else | ||
| 40 | + session[:notice] = _('Could not edit the notification.') | ||
| 41 | + end | ||
| 42 | + redirect_to :action => :index | ||
| 43 | + end | ||
| 44 | + end | ||
| 45 | + | ||
| 46 | + def change_status | ||
| 47 | + @notification = target.notifications.find_by id: params[:id] | ||
| 48 | + | ||
| 49 | + @notification.active = !@notification.active | ||
| 50 | + | ||
| 51 | + if @notification.save! | ||
| 52 | + session[:notice] = _('The status of the notification was changed.') | ||
| 53 | + else | ||
| 54 | + session[:notice] = _('Could not change the status of the notification.') | ||
| 55 | + end | ||
| 56 | + | ||
| 57 | + redirect_to :action => :index | ||
| 58 | + end | ||
| 59 | + | ||
| 60 | +end |
plugins/admin_notifications/lib/admin_notifications_plugin/notifications_user.rb
0 → 100644
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +class AdminNotificationsPlugin::NotificationsUser < ActiveRecord::Base | ||
| 2 | + self.table_name = "admin_notifications_plugin_notifications_users" | ||
| 3 | + | ||
| 4 | + belongs_to :user | ||
| 5 | + belongs_to :notification, class_name: 'AdminNotificationsPlugin::Notification' | ||
| 6 | + | ||
| 7 | + attr_accessible :user_id, :notification_id | ||
| 8 | + | ||
| 9 | + validates_uniqueness_of :user_id, :scope => :notification_id | ||
| 10 | +end |
plugins/admin_notifications/models/admin_notifications_plugin/danger_notification.rb
0 → 100644
plugins/admin_notifications/models/admin_notifications_plugin/information_notification.rb
0 → 100644
plugins/admin_notifications/models/admin_notifications_plugin/notification.rb
0 → 100644
| @@ -0,0 +1,56 @@ | @@ -0,0 +1,56 @@ | ||
| 1 | +class AdminNotificationsPlugin::Notification < ActiveRecord::Base | ||
| 2 | + | ||
| 3 | + self.table_name = "admin_notifications_plugin_notifications" | ||
| 4 | + | ||
| 5 | + TYPE_LIST = [ | ||
| 6 | + "AdminNotificationsPlugin::WarningNotification", | ||
| 7 | + "AdminNotificationsPlugin::SuccessNotification", | ||
| 8 | + "AdminNotificationsPlugin::InformationNotification", | ||
| 9 | + "AdminNotificationsPlugin::DangerNotification" | ||
| 10 | + ] | ||
| 11 | + | ||
| 12 | + attr_accessible :message, :target_id, :active, :type, :display_only_in_homepage, :display_to_all_users, :display_popup, :title, :target | ||
| 13 | + | ||
| 14 | + has_many :notifications_users, :class_name => "AdminNotificationsPlugin::NotificationsUser" | ||
| 15 | + has_many :users, :through => :notifications_users | ||
| 16 | + | ||
| 17 | + belongs_to :target, :polymorphic => true | ||
| 18 | + | ||
| 19 | + validates_presence_of :message | ||
| 20 | + validates_presence_of :target_id | ||
| 21 | + validate :notification_type_must_be_in_type_list | ||
| 22 | + | ||
| 23 | + def notification_type_must_be_in_type_list | ||
| 24 | + unless TYPE_LIST.include?(type) | ||
| 25 | + errors.add(:type, "invalid notification type") | ||
| 26 | + end | ||
| 27 | + end | ||
| 28 | + | ||
| 29 | + scope :active, lambda{|target| where(:target_id => (target.kind_of?(Organization) ? [target.id, target.environment.id] : target.id), :active => true)} | ||
| 30 | + | ||
| 31 | + def self.visibles(target, user, controller_path) | ||
| 32 | + notifications = AdminNotificationsPlugin::Notification.active(target).order('updated_at DESC') | ||
| 33 | + | ||
| 34 | + if user | ||
| 35 | + active_notifications_ids = notifications.pluck(:id) - user.notifications.pluck(:id) | ||
| 36 | + | ||
| 37 | + notifications = notifications.where(id: active_notifications_ids) | ||
| 38 | + else | ||
| 39 | + notifications = notifications.where(display_to_all_users: true) | ||
| 40 | + end | ||
| 41 | + | ||
| 42 | + if controller_path != "home" | ||
| 43 | + notifications = notifications.where.not("display_only_in_homepage = ? AND target_type = ?",true,"Environment") | ||
| 44 | + if controller_path != "profile" | ||
| 45 | + notifications = notifications.where.not("display_only_in_homepage = ? AND target_type = ?",true,"Profile") | ||
| 46 | + end | ||
| 47 | + end | ||
| 48 | + | ||
| 49 | + notifications | ||
| 50 | + end | ||
| 51 | + | ||
| 52 | + def self.with_popup(target, user, previous_path) | ||
| 53 | + AdminNotificationsPlugin::Notification.visibles(target, user, previous_path).where(display_popup: true) | ||
| 54 | + end | ||
| 55 | + | ||
| 56 | +end |
plugins/admin_notifications/models/admin_notifications_plugin/success_notification.rb
0 → 100644
plugins/admin_notifications/models/admin_notifications_plugin/warning_notification.rb
0 → 100644
| @@ -0,0 +1,187 @@ | @@ -0,0 +1,187 @@ | ||
| 1 | +# SOME DESCRIPTIVE TITLE. | ||
| 2 | +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
| 3 | +# This file is distributed under the same license as the PACKAGE package. | ||
| 4 | +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
| 5 | +# | ||
| 6 | +#, fuzzy | ||
| 7 | +msgid "" | ||
| 8 | +msgstr "" | ||
| 9 | +"Project-Id-Version: PACKAGE VERSION\n" | ||
| 10 | +"Report-Msgid-Bugs-To: \n" | ||
| 11 | +"POT-Creation-Date: 2016-03-31 15:02-0300\n" | ||
| 12 | +"PO-Revision-Date: 2016-03-31 15:02-0300\n" | ||
| 13 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
| 14 | +"Language-Team: LANGUAGE <LL@li.org>\n" | ||
| 15 | +"Language: \n" | ||
| 16 | +"MIME-Version: 1.0\n" | ||
| 17 | +"Content-Type: text/plain; charset=UTF-8\n" | ||
| 18 | +"Content-Transfer-Encoding: 8bit\n" | ||
| 19 | +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | ||
| 20 | + | ||
| 21 | +#: ../lib/notification_plugin.rb:8 | ||
| 22 | +msgid "A plugin for notifications." | ||
| 23 | +msgstr "" | ||
| 24 | + | ||
| 25 | +#: ../lib/notification_plugin.rb:29 | ||
| 26 | +msgid "Notification Manager" | ||
| 27 | +msgstr "" | ||
| 28 | + | ||
| 29 | +#: ../lib/notification_plugin.rb:35 | ||
| 30 | +msgid "Manage Notifications" | ||
| 31 | +msgstr "" | ||
| 32 | + | ||
| 33 | +#: ../lib/notification_plugin/notification_manager.rb:14 | ||
| 34 | +msgid "Notification successfully created" | ||
| 35 | +msgstr "" | ||
| 36 | + | ||
| 37 | +#: ../lib/notification_plugin/notification_manager.rb:17 | ||
| 38 | +msgid "Notification couldn't be created" | ||
| 39 | +msgstr "" | ||
| 40 | + | ||
| 41 | +#: ../lib/notification_plugin/notification_manager.rb:26 | ||
| 42 | +msgid "The notification was deleted." | ||
| 43 | +msgstr "" | ||
| 44 | + | ||
| 45 | +#: ../lib/notification_plugin/notification_manager.rb:28 | ||
| 46 | +msgid "Could not remove the notification" | ||
| 47 | +msgstr "" | ||
| 48 | + | ||
| 49 | +#: ../lib/notification_plugin/notification_manager.rb:38 | ||
| 50 | +msgid "The notification was edited." | ||
| 51 | +msgstr "" | ||
| 52 | + | ||
| 53 | +#: ../lib/notification_plugin/notification_manager.rb:40 | ||
| 54 | +msgid "Could not edit the notification." | ||
| 55 | +msgstr "" | ||
| 56 | + | ||
| 57 | +#: ../lib/notification_plugin/notification_manager.rb:52 | ||
| 58 | +msgid "The status of the notification was changed." | ||
| 59 | +msgstr "" | ||
| 60 | + | ||
| 61 | +#: ../lib/notification_plugin/notification_manager.rb:54 | ||
| 62 | +msgid "Could not change the status of the notification." | ||
| 63 | +msgstr "" | ||
| 64 | + | ||
| 65 | +#: ../views/shared/_form.html.erb:5 | ||
| 66 | +msgid "Back" | ||
| 67 | +msgstr "" | ||
| 68 | + | ||
| 69 | +#: ../views/shared/_form.html.erb:11 | ||
| 70 | +msgid "Optional Title:" | ||
| 71 | +msgstr "" | ||
| 72 | + | ||
| 73 | +#: ../views/shared/_form.html.erb:13 | ||
| 74 | +msgid "Enter your message here:" | ||
| 75 | +msgstr "" | ||
| 76 | + | ||
| 77 | +#: ../views/shared/_form.html.erb:15 | ||
| 78 | +msgid "" | ||
| 79 | +"Obs: You can use %{name} and %{email} variables to put the user's name and ema" | ||
| 80 | +"il in the message." | ||
| 81 | +msgstr "" | ||
| 82 | + | ||
| 83 | +#: ../views/shared/_form.html.erb:18 | ||
| 84 | +msgid "Notifications Status" | ||
| 85 | +msgstr "" | ||
| 86 | + | ||
| 87 | +#: ../views/shared/_form.html.erb:18 | ||
| 88 | +msgid "Active" | ||
| 89 | +msgstr "" | ||
| 90 | + | ||
| 91 | +#: ../views/shared/_form.html.erb:18 | ||
| 92 | +msgid "Inactive" | ||
| 93 | +msgstr "" | ||
| 94 | + | ||
| 95 | +#: ../views/shared/_form.html.erb:20 | ||
| 96 | +msgid "Notifications Color/Type" | ||
| 97 | +msgstr "" | ||
| 98 | + | ||
| 99 | +#: ../views/shared/_form.html.erb:20 | ||
| 100 | +msgid "Blue - Information" | ||
| 101 | +msgstr "" | ||
| 102 | + | ||
| 103 | +#: ../views/shared/_form.html.erb:20 | ||
| 104 | +msgid "Yellow - Warning" | ||
| 105 | +msgstr "" | ||
| 106 | + | ||
| 107 | +#: ../views/shared/_form.html.erb:20 | ||
| 108 | +msgid "Green - Success" | ||
| 109 | +msgstr "" | ||
| 110 | + | ||
| 111 | +#: ../views/shared/_form.html.erb:20 | ||
| 112 | +msgid "Red - Danger" | ||
| 113 | +msgstr "" | ||
| 114 | + | ||
| 115 | +#: ../views/shared/_form.html.erb:23 | ||
| 116 | +msgid "Display only in the homepage" | ||
| 117 | +msgstr "" | ||
| 118 | + | ||
| 119 | +#: ../views/shared/_form.html.erb:27 | ||
| 120 | +msgid "Display to not logged users too" | ||
| 121 | +msgstr "" | ||
| 122 | + | ||
| 123 | +#: ../views/shared/_form.html.erb:31 | ||
| 124 | +msgid "Display popup until user close the notification" | ||
| 125 | +msgstr "" | ||
| 126 | + | ||
| 127 | +#: ../views/shared/_form.html.erb:35 | ||
| 128 | +msgid "Save" | ||
| 129 | +msgstr "" | ||
| 130 | + | ||
| 131 | +#: ../views/shared/_notifications_list.html.erb:3 | ||
| 132 | +#: ../views/shared/_notifications_list.html.erb:16 | ||
| 133 | +msgid "Notifications" | ||
| 134 | +msgstr "" | ||
| 135 | + | ||
| 136 | +#: ../views/shared/_notifications_list.html.erb:7 | ||
| 137 | +msgid "New Notification" | ||
| 138 | +msgstr "" | ||
| 139 | + | ||
| 140 | +#: ../views/shared/_notifications_list.html.erb:10 | ||
| 141 | +msgid "Back to control panel" | ||
| 142 | +msgstr "" | ||
| 143 | + | ||
| 144 | +#: ../views/shared/_notifications_list.html.erb:19 | ||
| 145 | +msgid "Actions" | ||
| 146 | +msgstr "" | ||
| 147 | + | ||
| 148 | +#: ../views/shared/_notifications_list.html.erb:30 | ||
| 149 | +msgid "Deactivate" | ||
| 150 | +msgstr "" | ||
| 151 | + | ||
| 152 | +#: ../views/shared/_notifications_list.html.erb:30 | ||
| 153 | +#: ../views/shared/_notifications_list.html.erb:32 | ||
| 154 | +msgid "Do you want to change the status of this notification?" | ||
| 155 | +msgstr "" | ||
| 156 | + | ||
| 157 | +#: ../views/shared/_notifications_list.html.erb:32 | ||
| 158 | +msgid "Activate" | ||
| 159 | +msgstr "" | ||
| 160 | + | ||
| 161 | +#: ../views/shared/_notifications_list.html.erb:34 | ||
| 162 | +msgid "Edit" | ||
| 163 | +msgstr "" | ||
| 164 | + | ||
| 165 | +#: ../views/shared/_notifications_list.html.erb:35 | ||
| 166 | +msgid "Delete" | ||
| 167 | +msgstr "" | ||
| 168 | + | ||
| 169 | +#: ../views/shared/_notifications_list.html.erb:35 | ||
| 170 | +msgid "Do you want to delete this notification?" | ||
| 171 | +msgstr "" | ||
| 172 | + | ||
| 173 | +#: ../views/shared/show_notification.html.erb:8 | ||
| 174 | +msgid "There are active notifications in this environment!" | ||
| 175 | +msgstr "" | ||
| 176 | + | ||
| 177 | +#: ../views/shared/show_notification.html.erb:9 | ||
| 178 | +msgid "Manage all notifications here." | ||
| 179 | +msgstr "" | ||
| 180 | + | ||
| 181 | +#: ../views/shared/show_notification.html.erb:28 | ||
| 182 | +msgid "Do not show anymore" | ||
| 183 | +msgstr "" | ||
| 184 | + | ||
| 185 | +#: ../views/shared/show_notification.html.erb:29 | ||
| 186 | +msgid "Hide for now" | ||
| 187 | +msgstr "" |
plugins/admin_notifications/public/admin_notifications_plugin.js
0 → 100644
| @@ -0,0 +1,84 @@ | @@ -0,0 +1,84 @@ | ||
| 1 | +(function($) { | ||
| 2 | + "use strict"; | ||
| 3 | + | ||
| 4 | + var admin_notifications_plugin = { | ||
| 5 | + | ||
| 6 | + | ||
| 7 | + notificationBar: function() { | ||
| 8 | + var completeMessage = $(".notification-plugin-notification-bar").remove(); | ||
| 9 | + $("#content-inner").before(completeMessage); | ||
| 10 | + }, | ||
| 11 | + | ||
| 12 | + closeNotification: function(){ | ||
| 13 | + var notification = $(this).parent(); | ||
| 14 | + var id = notification.attr("data-notification"); | ||
| 15 | + | ||
| 16 | + $.ajax({ | ||
| 17 | + url: noosfero_root()+'/plugin/admin_notifications/public/close_notification', | ||
| 18 | + type: "POST", | ||
| 19 | + data: {notification_id: id}, | ||
| 20 | + success: function(response) { | ||
| 21 | + notification.fadeOut(); | ||
| 22 | + } | ||
| 23 | + }); | ||
| 24 | + }, | ||
| 25 | + | ||
| 26 | + hideNotification: function(){ | ||
| 27 | + var notification = $(this).parent(); | ||
| 28 | + var id = notification.attr("data-notification"); | ||
| 29 | + | ||
| 30 | + $.ajax({ | ||
| 31 | + url: noosfero_root()+'/plugin/admin_notifications/public/hide_notification', | ||
| 32 | + type: "POST", | ||
| 33 | + data: {notification_id: id}, | ||
| 34 | + success: function(response) { | ||
| 35 | + notification.fadeOut(); | ||
| 36 | + } | ||
| 37 | + }); | ||
| 38 | + }, | ||
| 39 | + | ||
| 40 | + hideUserNotification: function(){ | ||
| 41 | + var ids = $.cookie('hide_notifications'); | ||
| 42 | + if(ids === null) { | ||
| 43 | + return null; | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + if(ids.startsWith('[') && ids.endsWith(']')){ | ||
| 47 | + ids = ids.substring(1, ids.length - 1); | ||
| 48 | + ids = ids.split(","); | ||
| 49 | + | ||
| 50 | + for(var i = 0; i < ids.length; i++) { | ||
| 51 | + $('[data-notification="' + ids[i] + '"]').fadeOut(); | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + }, | ||
| 55 | + | ||
| 56 | + showPopup: function() { | ||
| 57 | + if($('.action-home-index').length > 0) { | ||
| 58 | + jQuery(function($){ | ||
| 59 | + $.colorbox({href: noosfero_root()+'/plugin/admin_notifications/public/notifications_with_popup?previous_path=home'}); | ||
| 60 | + }); | ||
| 61 | + } | ||
| 62 | + else { | ||
| 63 | + jQuery(function($){ | ||
| 64 | + $.colorbox({href: noosfero_root()+'/plugin/admin_notifications/public/notifications_with_popup'}); | ||
| 65 | + }); | ||
| 66 | + } | ||
| 67 | + }, | ||
| 68 | + }; | ||
| 69 | + | ||
| 70 | + $(document).ready(function(){ | ||
| 71 | + admin_notifications_plugin.notificationBar(); | ||
| 72 | + $(".notification-plugin-notification-bar .notification-close").on("click", admin_notifications_plugin.closeNotification); | ||
| 73 | + $(".notification-plugin-notification-bar .notification-hide").on("click", admin_notifications_plugin.hideNotification); | ||
| 74 | + | ||
| 75 | + if($('.notification-plugin-notification-bar').length > 0){ | ||
| 76 | + admin_notifications_plugin.hideUserNotification(); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + if($('.notification-plugin-notification-bar [notification-display-popup="true"]').length > 0){ | ||
| 80 | + admin_notifications_plugin.showPopup(); | ||
| 81 | + } | ||
| 82 | + }); | ||
| 83 | + | ||
| 84 | +})($); |
240 Bytes
794 Bytes
389 Bytes
552 Bytes
364 Bytes
| @@ -0,0 +1,250 @@ | @@ -0,0 +1,250 @@ | ||
| 1 | +.notification-plugin-notification-bar{ | ||
| 2 | + display: block; | ||
| 3 | +} | ||
| 4 | + | ||
| 5 | +.notification-plugin-notification-bar .notification:hover, | ||
| 6 | +.notification-plugin-notification-modal .notification:hover{ | ||
| 7 | + opacity: 0.8; | ||
| 8 | +} | ||
| 9 | + | ||
| 10 | +#notification-plugin-notification-manager{ | ||
| 11 | + overflow: auto; | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +.notification-plugin-notification-bar .notification .notification-close, | ||
| 15 | +.notification-plugin-notification-modal .notification .notification-close{ | ||
| 16 | + background: url(images/close.png) no-repeat; | ||
| 17 | + background-position: center; | ||
| 18 | + width: 20px; | ||
| 19 | + height: 20px; | ||
| 20 | +} | ||
| 21 | + | ||
| 22 | +.notification-plugin-notification-bar .warningnotification, | ||
| 23 | +.notification-plugin-notification-bar .informationnotification, | ||
| 24 | +.notification-plugin-notification-bar .successnotification, | ||
| 25 | +.notification-plugin-notification-bar .dangernotification, | ||
| 26 | +.notification-plugin-notification-bar .adminnotification, | ||
| 27 | +.notification-plugin-notification-modal .warningnotification, | ||
| 28 | +.notification-plugin-notification-modal .informationnotification, | ||
| 29 | +.notification-plugin-notification-modal .successnotification, | ||
| 30 | +.notification-plugin-notification-modal .dangernotification{ | ||
| 31 | + margin-bottom: 10px; | ||
| 32 | + padding: 7px 10px; | ||
| 33 | + border-radius: 5px; | ||
| 34 | + border: 1px solid blue; | ||
| 35 | + font-size: 16px; | ||
| 36 | + color: white; | ||
| 37 | + overflow: auto; | ||
| 38 | +} | ||
| 39 | + | ||
| 40 | +.notification-plugin-notification-bar .warningnotification p, | ||
| 41 | +.notification-plugin-notification-bar .informationnotification p, | ||
| 42 | +.notification-plugin-notification-bar .successnotification p, | ||
| 43 | +.notification-plugin-notification-bar .dangernotification p, | ||
| 44 | +.notification-plugin-notification-bar .adminnotification p, | ||
| 45 | +.notification-plugin-notification-modal .warningnotification p, | ||
| 46 | +.notification-plugin-notification-modal .informationnotification p, | ||
| 47 | +.notification-plugin-notification-modal .successnotification p, | ||
| 48 | +.notification-plugin-notification-modal .dangernotification p{ | ||
| 49 | + margin: 0px; | ||
| 50 | +} | ||
| 51 | + | ||
| 52 | +.notification-plugin-notification-bar .warningnotification, | ||
| 53 | +.notification-plugin-notification-modal .warningnotification{ | ||
| 54 | + background: #fcf8e3; | ||
| 55 | + border: 1px solid #faebcc; | ||
| 56 | + color: #8a6d3b; | ||
| 57 | +} | ||
| 58 | + | ||
| 59 | +.notification-plugin-notification-bar .warningnotification p a, | ||
| 60 | +.notification-plugin-notification-modal .warningnotification p a{ | ||
| 61 | + font-weight: bold; | ||
| 62 | + color: #8a6d3b; | ||
| 63 | +} | ||
| 64 | + | ||
| 65 | + | ||
| 66 | +.notification-plugin-notification-bar .informationnotification, | ||
| 67 | +.notification-plugin-notification-modal .informationnotification{ | ||
| 68 | + background: #d9edf7; | ||
| 69 | + border: 1px solid #bce8f1; | ||
| 70 | + color: #31708f; | ||
| 71 | +} | ||
| 72 | + | ||
| 73 | +.notification-plugin-notification-bar .informationnotification p a, | ||
| 74 | +.notification-plugin-notification-modal .informationnotification p a{ | ||
| 75 | + font-weight: bold; | ||
| 76 | + color: #31708f; | ||
| 77 | +} | ||
| 78 | + | ||
| 79 | +.notification-plugin-notification-bar .successnotification, | ||
| 80 | +.notification-plugin-notification-modal .successnotification{ | ||
| 81 | + background: #dff0d8; | ||
| 82 | + border: 1px solid #d6e9c6; | ||
| 83 | + color: #3c763d; | ||
| 84 | +} | ||
| 85 | + | ||
| 86 | +.notification-plugin-notification-bar .successnotification p a | ||
| 87 | +.notification-plugin-notification-modal .successnotification p a{ | ||
| 88 | + font-weight: bold; | ||
| 89 | + color: #3c763d; | ||
| 90 | +} | ||
| 91 | + | ||
| 92 | +.notification-plugin-notification-bar .dangernotification, | ||
| 93 | +.notification-plugin-notification-modal .dangernotification{ | ||
| 94 | + background: #f2dede; | ||
| 95 | + border: 1px solid #ebccd1; | ||
| 96 | + color: #a94442; | ||
| 97 | +} | ||
| 98 | + | ||
| 99 | +.notification-plugin-notification-bar .dangernotification p a, | ||
| 100 | +.notification-plugin-notification-modal .dangernotification p a{ | ||
| 101 | + font-weight: bold; | ||
| 102 | + color: #a94442; | ||
| 103 | +} | ||
| 104 | + | ||
| 105 | +.notification-plugin-notification-bar .adminnotification, | ||
| 106 | +.notification-plugin-notification-modal .adminnotification{ | ||
| 107 | + background: #9a959a; | ||
| 108 | + border: 1px solid #9a959a; | ||
| 109 | +} | ||
| 110 | + | ||
| 111 | +.notification-plugin-notification-bar .adminnotification p a, | ||
| 112 | +.notification-plugin-notification-modal .adminnotification p a{ | ||
| 113 | + font-weight: bold; | ||
| 114 | + color: white; | ||
| 115 | +} | ||
| 116 | + | ||
| 117 | +#notification-plugin-notification-manager a.button.icon-deactivate{ | ||
| 118 | + background: url(images/hide.png) no-repeat; | ||
| 119 | + background-position: center; | ||
| 120 | +} | ||
| 121 | + | ||
| 122 | +#notification-plugin-notification-manager a.button.icon-activate{ | ||
| 123 | + background: url(images/show.png) no-repeat; | ||
| 124 | + background-position: center; | ||
| 125 | +} | ||
| 126 | + | ||
| 127 | +#notification-plugin-notification-manager .notification-line{ | ||
| 128 | + display: inline; | ||
| 129 | + padding-top: 10px; | ||
| 130 | + vertical-align: middle; | ||
| 131 | + border-bottom: 1px solid #ccc; | ||
| 132 | +} | ||
| 133 | + | ||
| 134 | +#notification-plugin-notification-manager .notification-title-bar{ | ||
| 135 | + float: left; | ||
| 136 | + width: 100%; | ||
| 137 | + font-style: 14px; | ||
| 138 | + font-weight: 700; | ||
| 139 | + border-bottom: 2px solid black; | ||
| 140 | + padding: 9px 0; | ||
| 141 | +} | ||
| 142 | + | ||
| 143 | +#notification-plugin-notification-manager .notification-title{ | ||
| 144 | + width: 80%; | ||
| 145 | + float: left; | ||
| 146 | + text-align: center; | ||
| 147 | +} | ||
| 148 | + | ||
| 149 | +.notification-plugin-notification-modal .notification-with-title{ | ||
| 150 | + margin-bottom: 0px; | ||
| 151 | +} | ||
| 152 | + | ||
| 153 | +.notification-plugin-notification-modal .notification .notification-title{ | ||
| 154 | + width: 100%; | ||
| 155 | + float: left; | ||
| 156 | + font-weight: bold; | ||
| 157 | + text-align: left; | ||
| 158 | +} | ||
| 159 | + | ||
| 160 | +.notification-plugin-notification-modal .notification-with-title-message{ | ||
| 161 | + width: 100%; | ||
| 162 | + float: left; | ||
| 163 | + border-radius: 3px; | ||
| 164 | + margin-bottom: 10px; | ||
| 165 | + background-color: #f5f5f5; | ||
| 166 | + font-size: 14px; | ||
| 167 | + overflow: auto; | ||
| 168 | +} | ||
| 169 | + | ||
| 170 | +.notification-plugin-notification-modal .notification-with-title-message p{ | ||
| 171 | + padding: 0px 7px; | ||
| 172 | +} | ||
| 173 | + | ||
| 174 | +.notification-plugin-notification-modal .notification-with-title-message p a{ | ||
| 175 | + color: black; | ||
| 176 | + font-weight: bold; | ||
| 177 | +} | ||
| 178 | + | ||
| 179 | + | ||
| 180 | +#notification-plugin-notification-manager .action-title{ | ||
| 181 | + width: 20%; | ||
| 182 | + float: left; | ||
| 183 | + text-align: center; | ||
| 184 | +} | ||
| 185 | + | ||
| 186 | +#notification-plugin-notification-manager .notification-action{ | ||
| 187 | + width: 18%; | ||
| 188 | + float: left; | ||
| 189 | + height: 30px; | ||
| 190 | + padding-top: 9px; | ||
| 191 | +} | ||
| 192 | + | ||
| 193 | +#notification-plugin-notification-manager .main-bar .button, | ||
| 194 | +#notification-plugin-notification-manager .notification-action .button{ | ||
| 195 | + border-radius: 3px; | ||
| 196 | +} | ||
| 197 | + | ||
| 198 | +#notification-plugin-notification-manager .notification-message{ | ||
| 199 | + width: 82%; | ||
| 200 | + float: left; | ||
| 201 | +} | ||
| 202 | + | ||
| 203 | +#notification-plugin-notification-manager .new-notification{ | ||
| 204 | + float: right; | ||
| 205 | + width: auto; | ||
| 206 | +} | ||
| 207 | + | ||
| 208 | +#notification-plugin-notification-manager .back-button{ | ||
| 209 | + float: left; | ||
| 210 | +} | ||
| 211 | + | ||
| 212 | +#notification-plugin-notification-manager .main-bar{ | ||
| 213 | + display: inline; | ||
| 214 | + width: 100%; | ||
| 215 | +} | ||
| 216 | + | ||
| 217 | +.notification-plugin-notification-bar .notification .notification-message, | ||
| 218 | +.notification-plugin-notification-modal .notification .notification-message{ | ||
| 219 | + width: 90%; | ||
| 220 | + float: left; | ||
| 221 | +} | ||
| 222 | + | ||
| 223 | +.notification-plugin-notification-bar .notification .notification-close{ | ||
| 224 | + background: url(images/redclose.png) no-repeat; | ||
| 225 | + background-position: center; | ||
| 226 | + width: 20px; | ||
| 227 | + height: 20px; | ||
| 228 | + float: right; | ||
| 229 | + cursor: pointer; | ||
| 230 | +} | ||
| 231 | + | ||
| 232 | +.notification-plugin-notification-bar .notification .notification-hide{ | ||
| 233 | + background: url(images/greenhide.png) no-repeat; | ||
| 234 | + background-position: center; | ||
| 235 | + width: 20px; | ||
| 236 | + height: 20px; | ||
| 237 | + float: right; | ||
| 238 | + cursor: pointer; | ||
| 239 | +} | ||
| 240 | + | ||
| 241 | +.notification-plugin-notification-modal{ | ||
| 242 | + display: block; | ||
| 243 | + min-width: 400px; | ||
| 244 | + max-width: 700px; | ||
| 245 | +} | ||
| 246 | + | ||
| 247 | +.notification-plugin-form .notification-variables-options{ | ||
| 248 | + font-style: italic; | ||
| 249 | + color: red; | ||
| 250 | +} |
plugins/admin_notifications/test/functional/account_controller_test.rb
0 → 100644
| @@ -0,0 +1,36 @@ | @@ -0,0 +1,36 @@ | ||
| 1 | +require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper' | ||
| 2 | +require 'account_controller' | ||
| 3 | + | ||
| 4 | +class AccountController | ||
| 5 | + include AdminNotificationsPlugin::NotificationHelper | ||
| 6 | +end | ||
| 7 | + | ||
| 8 | +class AccountControllerTest < ActionController::TestCase | ||
| 9 | + def setup | ||
| 10 | + @controller = AccountController.new | ||
| 11 | + @request = ActionController::TestRequest.new | ||
| 12 | + @response = ActionController::TestResponse.new | ||
| 13 | + @person = create_user('person').person | ||
| 14 | + | ||
| 15 | + @environment = Environment.default | ||
| 16 | + @environment.enable_plugin('AdminNotificationsPlugin') | ||
| 17 | + @environment.save! | ||
| 18 | + | ||
| 19 | + login_as(@person.user.login) | ||
| 20 | + end | ||
| 21 | + | ||
| 22 | + attr_accessor :person | ||
| 23 | + | ||
| 24 | + should 'clean hide_notifications cookie after logout' do | ||
| 25 | + @request.cookies[:hide_notifications] = JSON.generate([1,2]) | ||
| 26 | + get :index | ||
| 27 | + assert !@request.cookies[:hide_notifications].blank? | ||
| 28 | + | ||
| 29 | + @request.cookies[:hide_notifications] = nil | ||
| 30 | + get :logout | ||
| 31 | + assert_nil session[:user] | ||
| 32 | + assert_response :redirect | ||
| 33 | + assert_equal 1, @controller.hide_notifications.count | ||
| 34 | + assert @controller.hide_notifications.include?(-1) | ||
| 35 | + end | ||
| 36 | +end |
plugins/admin_notifications/test/functional/admin_notifications_plugin_admin_controller_test.rb
0 → 100644
| @@ -0,0 +1,136 @@ | @@ -0,0 +1,136 @@ | ||
| 1 | +require 'test_helper' | ||
| 2 | +require_relative '../../controllers/admin_notifications_plugin_admin_controller' | ||
| 3 | + | ||
| 4 | +class AdminNotificationsPluginAdminControllerTest < ActionController::TestCase | ||
| 5 | + def setup | ||
| 6 | + @controller = AdminNotificationsPluginAdminController.new | ||
| 7 | + @request = ActionController::TestRequest.new | ||
| 8 | + @response = ActionController::TestResponse.new | ||
| 9 | + @person = create_user('person').person | ||
| 10 | + | ||
| 11 | + @environment = Environment.default | ||
| 12 | + @environment.enable_plugin('AdminNotificationsPlugin') | ||
| 13 | + @environment.save! | ||
| 14 | + | ||
| 15 | + login_as(@person.user.login) | ||
| 16 | + end | ||
| 17 | + | ||
| 18 | + attr_accessor :person | ||
| 19 | + | ||
| 20 | + should 'an admin be able to create a notification' do | ||
| 21 | + @environment.add_admin(@person) | ||
| 22 | + post :new, :notifications => { | ||
| 23 | + :message => "Message", | ||
| 24 | + :active => true, | ||
| 25 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 26 | + } | ||
| 27 | + assert_redirected_to :action => 'index' | ||
| 28 | + notification = AdminNotificationsPlugin::Notification.last | ||
| 29 | + assert_equal "Message", notification.message | ||
| 30 | + assert notification.active | ||
| 31 | + assert_equal "AdminNotificationsPlugin::DangerNotification", notification.type | ||
| 32 | + end | ||
| 33 | + | ||
| 34 | + should 'an user not to be able to create a notification' do | ||
| 35 | + post :new, :notifications => { | ||
| 36 | + :message => "Message", | ||
| 37 | + :active => true, | ||
| 38 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 39 | + } | ||
| 40 | + assert_redirected_to :root | ||
| 41 | + assert_nil AdminNotificationsPlugin::Notification.last | ||
| 42 | + end | ||
| 43 | + | ||
| 44 | + should 'an admin be able to edit a notification' do | ||
| 45 | + @environment.add_admin(@person) | ||
| 46 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 47 | + :target => @environment, | ||
| 48 | + :message => "Message", | ||
| 49 | + :active => true, | ||
| 50 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 51 | + ) | ||
| 52 | + post :edit, :id => @notification.id, :notifications => { | ||
| 53 | + :message => "Edited Message", | ||
| 54 | + :active => false, | ||
| 55 | + :type => "AdminNotificationsPlugin::WarningNotification" | ||
| 56 | + } | ||
| 57 | + @notification = AdminNotificationsPlugin::Notification.last | ||
| 58 | + assert_redirected_to :action => 'index' | ||
| 59 | + assert_equal "Edited Message", @notification.message | ||
| 60 | + assert !@notification.active | ||
| 61 | + assert_equal "AdminNotificationsPlugin::WarningNotification", @notification.type | ||
| 62 | + end | ||
| 63 | + | ||
| 64 | + should 'an user not to be able to edit a notification' do | ||
| 65 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 66 | + :target => @environment, | ||
| 67 | + :message => "Message", | ||
| 68 | + :active => true, | ||
| 69 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 70 | + ) | ||
| 71 | + post :edit, :notifications => { | ||
| 72 | + :message => "Edited Message", | ||
| 73 | + :active => false, | ||
| 74 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 75 | + } | ||
| 76 | + @notification.reload | ||
| 77 | + assert_redirected_to :root | ||
| 78 | + assert_equal "Message", @notification.message | ||
| 79 | + assert @notification.active | ||
| 80 | + end | ||
| 81 | + | ||
| 82 | + should 'an admin be able to destroy a notification' do | ||
| 83 | + @environment.add_admin(@person) | ||
| 84 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 85 | + :target => @environment, | ||
| 86 | + :message => "Message", | ||
| 87 | + :active => true, | ||
| 88 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 89 | + ) | ||
| 90 | + delete :destroy, :id => @notification.id | ||
| 91 | + assert_nil AdminNotificationsPlugin::Notification.find_by id: @notification.id | ||
| 92 | + end | ||
| 93 | + | ||
| 94 | + should 'an user not to be able to destroy a notification' do | ||
| 95 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 96 | + :target => @environment, | ||
| 97 | + :message => "Message", | ||
| 98 | + :active => true, | ||
| 99 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 100 | + ) | ||
| 101 | + delete :destroy, :id => @notification.id | ||
| 102 | + | ||
| 103 | + assert_redirected_to :root | ||
| 104 | + assert_not_nil AdminNotificationsPlugin::Notification.find_by id: @notification.id | ||
| 105 | + end | ||
| 106 | + | ||
| 107 | + should 'an admin be able to change Notification status' do | ||
| 108 | + @environment.add_admin(@person) | ||
| 109 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 110 | + :target => @environment, | ||
| 111 | + :message => "Message", | ||
| 112 | + :active => true, | ||
| 113 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 114 | + ) | ||
| 115 | + post :change_status, :id => @notification.id | ||
| 116 | + assert_redirected_to :action => 'index' | ||
| 117 | + | ||
| 118 | + @notification.reload | ||
| 119 | + assert !@notification.active | ||
| 120 | + end | ||
| 121 | + | ||
| 122 | + should 'an user not be able to change Notification status' do | ||
| 123 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 124 | + :target => @environment, | ||
| 125 | + :message => "Message", | ||
| 126 | + :active => true, | ||
| 127 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 128 | + ) | ||
| 129 | + post :change_status, :id => @notification.id | ||
| 130 | + assert_redirected_to :root | ||
| 131 | + | ||
| 132 | + @notification.reload | ||
| 133 | + assert @notification.active | ||
| 134 | + end | ||
| 135 | + | ||
| 136 | +end |
plugins/admin_notifications/test/functional/admin_notifications_plugin_myprofile_controller_test.rb
0 → 100644
| @@ -0,0 +1,147 @@ | @@ -0,0 +1,147 @@ | ||
| 1 | +require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper' | ||
| 2 | +require( | ||
| 3 | + File.expand_path(File.dirname(__FILE__)) + | ||
| 4 | + '/../../controllers/admin_notifications_plugin_myprofile_controller' | ||
| 5 | +) | ||
| 6 | + | ||
| 7 | +class AdminNotificationsPluginMyprofileControllerTest < ActionController::TestCase | ||
| 8 | + def setup | ||
| 9 | + @controller = AdminNotificationsPluginMyprofileController.new | ||
| 10 | + @request = ActionController::TestRequest.new | ||
| 11 | + @response = ActionController::TestResponse.new | ||
| 12 | + @person = create_user('person').person | ||
| 13 | + @community = fast_create(Community) | ||
| 14 | + | ||
| 15 | + environment = Environment.default | ||
| 16 | + environment.enable_plugin('AdminNotificationsPlugin') | ||
| 17 | + environment.save! | ||
| 18 | + | ||
| 19 | + login_as(@person.user.login) | ||
| 20 | + AdminNotificationsPluginMyprofileController.any_instance.stubs(:profile).returns(@community) | ||
| 21 | + end | ||
| 22 | + | ||
| 23 | + attr_accessor :person | ||
| 24 | + | ||
| 25 | + should 'profile admin be able to create a notification' do | ||
| 26 | + @community.add_admin(@person) | ||
| 27 | + post :new, :profile => @community.identifier, | ||
| 28 | + :notifications => { | ||
| 29 | + :message => "Message", | ||
| 30 | + :active => true, | ||
| 31 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 32 | + } | ||
| 33 | + assert_redirected_to :action => 'index' | ||
| 34 | + notification = AdminNotificationsPlugin::Notification.last | ||
| 35 | + assert_equal "Message", notification.message | ||
| 36 | + assert notification.active | ||
| 37 | + assert_equal "AdminNotificationsPlugin::DangerNotification", notification.type | ||
| 38 | + end | ||
| 39 | + | ||
| 40 | + should 'a regular user not to be able to create a notification' do | ||
| 41 | + post :new, :profile => @community.identifier, | ||
| 42 | + :notifications => { | ||
| 43 | + :message => "Message", | ||
| 44 | + :active => true, | ||
| 45 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + assert_redirected_to :root | ||
| 49 | + assert_nil AdminNotificationsPlugin::Notification.last | ||
| 50 | + end | ||
| 51 | + | ||
| 52 | + should 'profile admin be able to edit a notification' do | ||
| 53 | + @community.add_admin(@person) | ||
| 54 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 55 | + :target => @community, | ||
| 56 | + :message => "Message", | ||
| 57 | + :active => true, | ||
| 58 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 59 | + ) | ||
| 60 | + | ||
| 61 | + post :edit, :profile => @community.identifier, :id => @notification.id, | ||
| 62 | + :notifications => { | ||
| 63 | + :message => "Edited Message", | ||
| 64 | + :active => false, | ||
| 65 | + :type => "AdminNotificationsPlugin::WarningNotification" | ||
| 66 | + } | ||
| 67 | + @notification = AdminNotificationsPlugin::Notification.last | ||
| 68 | + assert_redirected_to :action => 'index' | ||
| 69 | + assert_equal "Edited Message", @notification.message | ||
| 70 | + assert !@notification.active | ||
| 71 | + assert_equal "AdminNotificationsPlugin::WarningNotification", @notification.type | ||
| 72 | + end | ||
| 73 | + | ||
| 74 | + should 'a regular user not be able to edit a notification' do | ||
| 75 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 76 | + :target => @community, | ||
| 77 | + :message => "Message", | ||
| 78 | + :active => true, | ||
| 79 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 80 | + ) | ||
| 81 | + post :edit, :profile => @community.identifier, | ||
| 82 | + :notifications => { | ||
| 83 | + :message => "Edited Message", | ||
| 84 | + :active => false, | ||
| 85 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 86 | + } | ||
| 87 | + @notification.reload | ||
| 88 | + assert_redirected_to :root | ||
| 89 | + assert_equal "Message", @notification.message | ||
| 90 | + assert @notification.active | ||
| 91 | + end | ||
| 92 | + | ||
| 93 | + should 'a profile admin be able to destroy a notification' do | ||
| 94 | + @community.add_admin(@person) | ||
| 95 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 96 | + :target => @community, | ||
| 97 | + :message => "Message", | ||
| 98 | + :active => true, | ||
| 99 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 100 | + ) | ||
| 101 | + delete :destroy, :profile => @community.identifier, :id => @notification.id | ||
| 102 | + assert_nil AdminNotificationsPlugin::Notification.find_by_id(@notification.id) | ||
| 103 | + end | ||
| 104 | + | ||
| 105 | + should 'a regular user not be able to destroy a notification' do | ||
| 106 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 107 | + :target => @community, | ||
| 108 | + :message => "Message", | ||
| 109 | + :active => true, | ||
| 110 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 111 | + ) | ||
| 112 | + delete :destroy, :profile => @community.identifier, :id => @notification.id | ||
| 113 | + | ||
| 114 | + assert_redirected_to :root | ||
| 115 | + assert_not_nil AdminNotificationsPlugin::Notification.find_by_id(@notification.id) | ||
| 116 | + end | ||
| 117 | + | ||
| 118 | + should 'a profile admin be able to change Notification status' do | ||
| 119 | + @community.add_admin(@person) | ||
| 120 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 121 | + :target => @community, | ||
| 122 | + :message => "Message", | ||
| 123 | + :active => true, | ||
| 124 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 125 | + ) | ||
| 126 | + post :change_status, :profile => @community.identifier, :id => @notification.id | ||
| 127 | + assert_redirected_to :action => 'index' | ||
| 128 | + | ||
| 129 | + @notification.reload | ||
| 130 | + assert !@notification.active | ||
| 131 | + end | ||
| 132 | + | ||
| 133 | + should 'a regular user not be able to change Notification status' do | ||
| 134 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 135 | + :target => @community, | ||
| 136 | + :message => "Message", | ||
| 137 | + :active => true, | ||
| 138 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 139 | + ) | ||
| 140 | + post :change_status, :profile => @community.identifier, :id => @notification.id | ||
| 141 | + assert_redirected_to :root | ||
| 142 | + | ||
| 143 | + @notification.reload | ||
| 144 | + assert @notification.active | ||
| 145 | + end | ||
| 146 | + | ||
| 147 | +end |
plugins/admin_notifications/test/functional/admin_notifications_plugin_public_controller_test.rb
0 → 100644
| @@ -0,0 +1,65 @@ | @@ -0,0 +1,65 @@ | ||
| 1 | +require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper' | ||
| 2 | +require( | ||
| 3 | + File.expand_path(File.dirname(__FILE__)) + | ||
| 4 | + '/../../controllers/public/admin_notifications_plugin_public_controller' | ||
| 5 | +) | ||
| 6 | + | ||
| 7 | +class AdminNotificationsPluginPublicControllerTest < ActionController::TestCase | ||
| 8 | + def setup | ||
| 9 | + @controller = AdminNotificationsPluginPublicController.new | ||
| 10 | + @request = ActionController::TestRequest.new | ||
| 11 | + @response = ActionController::TestResponse.new | ||
| 12 | + @person = create_user('person').person | ||
| 13 | + | ||
| 14 | + @environment = Environment.default | ||
| 15 | + @environment.enable_plugin('AdminNotificationsPlugin') | ||
| 16 | + @environment.save! | ||
| 17 | + | ||
| 18 | + login_as(@person.user.login) | ||
| 19 | + end | ||
| 20 | + | ||
| 21 | + should 'a logged in user be able to permanently hide notifications' do | ||
| 22 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 23 | + :target => @environment, | ||
| 24 | + :message => "Message", | ||
| 25 | + :active => true, | ||
| 26 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 27 | + ) | ||
| 28 | + post :close_notification, :notification_id => @notification.id | ||
| 29 | + assert_equal "true", @response.body | ||
| 30 | + assert @notification.users.include?(@person.user) | ||
| 31 | + end | ||
| 32 | + | ||
| 33 | + should 'a logged in user be able to momentarily hide notifications' do | ||
| 34 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 35 | + :target => @environment, | ||
| 36 | + :message => "Message", | ||
| 37 | + :active => true, | ||
| 38 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 39 | + ) | ||
| 40 | + | ||
| 41 | + @another_notification = AdminNotificationsPlugin::Notification.create( | ||
| 42 | + :target => @environment, | ||
| 43 | + :message => "Another Message", | ||
| 44 | + :active => true, | ||
| 45 | + :type => "AdminNotificationsPlugin::WarningNotification" | ||
| 46 | + ) | ||
| 47 | + post :hide_notification, :notification_id => @notification.id | ||
| 48 | + assert_equal "true", @response.body | ||
| 49 | + assert @controller.hide_notifications.include?(@notification.id) | ||
| 50 | + assert !@controller.hide_notifications.include?(@another_notification.id) | ||
| 51 | + end | ||
| 52 | + | ||
| 53 | + should 'not momentarily hide any notification if its id is not found' do | ||
| 54 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 55 | + :target => @environment, | ||
| 56 | + :message => "Message", | ||
| 57 | + :active => true, | ||
| 58 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 59 | + ) | ||
| 60 | + | ||
| 61 | + post :hide_notification, :notification_id => nil | ||
| 62 | + assert_equal "false", @response.body | ||
| 63 | + assert !@controller.hide_notifications.include?(@notification.id) | ||
| 64 | + end | ||
| 65 | +end |
plugins/admin_notifications/test/functional/home_controller_test.rb
0 → 100644
| @@ -0,0 +1,120 @@ | @@ -0,0 +1,120 @@ | ||
| 1 | +require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper' | ||
| 2 | +require 'home_controller' | ||
| 3 | + | ||
| 4 | +class HomeController; def rescue_action(e) raise e end; | ||
| 5 | +end | ||
| 6 | + | ||
| 7 | +class HomeControllerTest < ActionController::TestCase | ||
| 8 | + def setup | ||
| 9 | + @controller = HomeController.new | ||
| 10 | + @request = ActionController::TestRequest.new | ||
| 11 | + @response = ActionController::TestResponse.new | ||
| 12 | + @person = create_user('person').person | ||
| 13 | + | ||
| 14 | + @environment = Environment.default | ||
| 15 | + @environment.enable_plugin('AdminNotificationsPlugin') | ||
| 16 | + @environment.save! | ||
| 17 | + end | ||
| 18 | + | ||
| 19 | + attr_accessor :person | ||
| 20 | + | ||
| 21 | + should 'an active notification be displayed on home page for a logged in user' do | ||
| 22 | + login_as(@person.user.login) | ||
| 23 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 24 | + :target => @environment, | ||
| 25 | + :message => "Hello, this is a Notification Message", | ||
| 26 | + :active => true, | ||
| 27 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 28 | + ) | ||
| 29 | + get :index | ||
| 30 | + assert_match /Hello, this is a Notification Message/, @response.body | ||
| 31 | + end | ||
| 32 | + | ||
| 33 | + | ||
| 34 | + should 'an active notification not be displayed on home page for unlogged user' do | ||
| 35 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 36 | + :target => @environment, | ||
| 37 | + :message => "Hello, this is a Notification Message", | ||
| 38 | + :active => true, | ||
| 39 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 40 | + ) | ||
| 41 | + get :index | ||
| 42 | + assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 43 | + end | ||
| 44 | + | ||
| 45 | + should 'an active notification be displayed on home page for unlogged user' do | ||
| 46 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 47 | + :target => @environment, | ||
| 48 | + :message => "Hello, this is a Notification Message", | ||
| 49 | + :display_to_all_users => true, | ||
| 50 | + :active => true, | ||
| 51 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 52 | + ) | ||
| 53 | + get :index | ||
| 54 | + assert_match /Hello, this is a Notification Message/, @response.body | ||
| 55 | + end | ||
| 56 | + | ||
| 57 | + should 'only display the notification with display_to_all_users option for unlogged user ' do | ||
| 58 | + @notification1 = AdminNotificationsPlugin::Notification.create( | ||
| 59 | + :target => @environment, | ||
| 60 | + :message => "Hello, this is an old Notification Message", | ||
| 61 | + :active => true, | ||
| 62 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 63 | + ) | ||
| 64 | + | ||
| 65 | + @notification2 = AdminNotificationsPlugin::Notification.create( | ||
| 66 | + :target => @environment, | ||
| 67 | + :message => "Hello, this is a new Notification Message", | ||
| 68 | + :display_to_all_users => true, | ||
| 69 | + :active => true, | ||
| 70 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 71 | + ) | ||
| 72 | + | ||
| 73 | + | ||
| 74 | + get :index | ||
| 75 | + assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 76 | + assert_match /Hello, this is a new Notification Message/, @response.body | ||
| 77 | + end | ||
| 78 | + | ||
| 79 | + should 'an inactive notification not be displayed on home page' do | ||
| 80 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 81 | + :target => @environment, | ||
| 82 | + :message => "Hello, this is a Notification Message", | ||
| 83 | + :active => false, | ||
| 84 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 85 | + ) | ||
| 86 | + get :index | ||
| 87 | + assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 88 | + end | ||
| 89 | + | ||
| 90 | + | ||
| 91 | + should 'an active notification not be displayed to a logged in user after been closed by him' do | ||
| 92 | + login_as(@person.user.login) | ||
| 93 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 94 | + :target => @environment, | ||
| 95 | + :message => "Hello, this is a Notification Message", | ||
| 96 | + :active => true, | ||
| 97 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 98 | + ) | ||
| 99 | + @notification.users << @person.user | ||
| 100 | + @notification.save! | ||
| 101 | + assert_equal true, @notification.users.include?(@person.user) | ||
| 102 | + get :index | ||
| 103 | + assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 104 | + end | ||
| 105 | + | ||
| 106 | + should 'a notification be displayed with a Popup' do | ||
| 107 | + login_as(@person.user.login) | ||
| 108 | + @notification = AdminNotificationsPlugin::Notification.create( | ||
| 109 | + :target => @environment, | ||
| 110 | + :message => "Message", | ||
| 111 | + :display_popup => true, | ||
| 112 | + :active => true, | ||
| 113 | + :type => "AdminNotificationsPlugin::DangerNotification" | ||
| 114 | + ) | ||
| 115 | + assert_equal true, @notification.display_popup? | ||
| 116 | + | ||
| 117 | + get :index | ||
| 118 | + assert_no_match /div id="cboxWrapper"/, @response.body | ||
| 119 | + end | ||
| 120 | +end |
plugins/admin_notifications/test/helpers/notification_test_helper.rb
0 → 100644
| @@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
| 1 | +module NotificationTestHelper | ||
| 2 | + def create_notification target, display_only_in_homepage=false, message="any_message", active=true | ||
| 3 | + AdminNotificationsPlugin::WarningNotification.create!( | ||
| 4 | + :target => target, | ||
| 5 | + :message => message, | ||
| 6 | + :active => active, | ||
| 7 | + :display_only_in_homepage => display_only_in_homepage | ||
| 8 | + ) | ||
| 9 | + end | ||
| 10 | +end |
plugins/admin_notifications/test/unit/notification_helper_test.rb
0 → 100644
| @@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
| 1 | +require 'test_helper' | ||
| 2 | + | ||
| 3 | +class NotificationHelperTest < ActiveSupport::TestCase | ||
| 4 | + def setup | ||
| 5 | + @env = Environment.default | ||
| 6 | + @env.enable_plugin('AdminNotificationsPlugin') | ||
| 7 | + | ||
| 8 | + @user = User.create!(:environment_id => @env.id, :email => "user@domain.com", :login => "new_user", :password => "test", :password_confirmation => "test", :name => "UserName") | ||
| 9 | + end | ||
| 10 | + | ||
| 11 | + should 'substitute all email variables to the current user email' do | ||
| 12 | + message = "Hello user with email %{email}! please, update your current email (%{email})." | ||
| 13 | + | ||
| 14 | + new_message = AdminNotificationsPlugin::NotificationHelper.substitute_variables(message, @user) | ||
| 15 | + | ||
| 16 | + assert message != new_message | ||
| 17 | + assert_equal new_message, "Hello user with email user@domain.com! please, update your current email (user@domain.com)." | ||
| 18 | + end | ||
| 19 | + | ||
| 20 | + should 'not substitute emails variables if there is no current user' do | ||
| 21 | + message = "Hello user with email %{email}! please, update your current email (%{email})." | ||
| 22 | + | ||
| 23 | + new_message = AdminNotificationsPlugin::NotificationHelper.substitute_variables(message, nil) | ||
| 24 | + | ||
| 25 | + assert_equal message, new_message | ||
| 26 | + assert_not_includes new_message, "user@domain.com" | ||
| 27 | + end | ||
| 28 | + | ||
| 29 | + should 'substitute all name variables to the current user name' do | ||
| 30 | + message = "Hello %{name}! is %{name} your real name?." | ||
| 31 | + | ||
| 32 | + new_message = AdminNotificationsPlugin::NotificationHelper.substitute_variables(message, @user) | ||
| 33 | + | ||
| 34 | + assert message != new_message | ||
| 35 | + assert_equal new_message, "Hello UserName! is UserName your real name?." | ||
| 36 | + end | ||
| 37 | + | ||
| 38 | + should 'not substitute name variables if there is no current user' do | ||
| 39 | + message = "Hello %{name}! is %{name} your real name?." | ||
| 40 | + | ||
| 41 | + new_message = AdminNotificationsPlugin::NotificationHelper.substitute_variables(message, nil) | ||
| 42 | + | ||
| 43 | + assert_equal message, new_message | ||
| 44 | + assert_not_includes new_message, "UserName" | ||
| 45 | + end | ||
| 46 | +end |
plugins/admin_notifications/test/unit/notification_test.rb
0 → 100644
| @@ -0,0 +1,193 @@ | @@ -0,0 +1,193 @@ | ||
| 1 | +require_relative '../../../../test/test_helper' | ||
| 2 | +require_relative '../helpers/notification_test_helper' | ||
| 3 | + | ||
| 4 | +class NotificationTest < ActiveSupport::TestCase | ||
| 5 | + | ||
| 6 | + include NotificationTestHelper | ||
| 7 | + | ||
| 8 | + def setup | ||
| 9 | + @env = Environment.default | ||
| 10 | + @env.enable_plugin('AdminNotificationsPlugin') | ||
| 11 | + | ||
| 12 | + @user = User.create!(:environment_id => @env.id, :email => "user@domain.com", :login => "new_user", :password => "test", :password_confirmation => "test") | ||
| 13 | + @danger_notification = AdminNotificationsPlugin::DangerNotification.create!( | ||
| 14 | + :target => @env, | ||
| 15 | + :message => "Danger Message", | ||
| 16 | + :active => true, | ||
| 17 | + ) | ||
| 18 | + | ||
| 19 | + @warning_notification = AdminNotificationsPlugin::WarningNotification.create!( | ||
| 20 | + :target => @env, | ||
| 21 | + :message => "Warning Message", | ||
| 22 | + :active => true, | ||
| 23 | + ) | ||
| 24 | + | ||
| 25 | + @information_notification = AdminNotificationsPlugin::InformationNotification.create!( | ||
| 26 | + :target => @env, | ||
| 27 | + :message => "Information Message", | ||
| 28 | + :active => true, | ||
| 29 | + ) | ||
| 30 | + end | ||
| 31 | + | ||
| 32 | + should 'get all notifications that a user did not close' do | ||
| 33 | + @information_notification.users << @user | ||
| 34 | + | ||
| 35 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, @user, nil) | ||
| 36 | + | ||
| 37 | + assert notifications.include?(@danger_notification) | ||
| 38 | + assert notifications.include?(@warning_notification) | ||
| 39 | + assert !notifications.include?(@information_notification) | ||
| 40 | + end | ||
| 41 | + | ||
| 42 | + should 'get only notifications configured to be displayed to all users' do | ||
| 43 | + @information_notification.display_to_all_users = true | ||
| 44 | + @information_notification.save! | ||
| 45 | + | ||
| 46 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, nil, nil) | ||
| 47 | + | ||
| 48 | + assert !notifications.include?(@danger_notification) | ||
| 49 | + assert !notifications.include?(@warning_notification) | ||
| 50 | + assert notifications.include?(@information_notification) | ||
| 51 | + end | ||
| 52 | + | ||
| 53 | + should 'get only notifications configured to be displayed to all users and in all pages' do | ||
| 54 | + @information_notification.display_to_all_users = true | ||
| 55 | + @information_notification.display_only_in_homepage = true | ||
| 56 | + @information_notification.save! | ||
| 57 | + | ||
| 58 | + @danger_notification.display_to_all_users = true | ||
| 59 | + @danger_notification.save! | ||
| 60 | + | ||
| 61 | + @warning_notification.display_only_in_homepage = true | ||
| 62 | + @warning_notification.save! | ||
| 63 | + | ||
| 64 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, nil, 'not_home') | ||
| 65 | + | ||
| 66 | + assert notifications.include?(@danger_notification) | ||
| 67 | + assert !notifications.include?(@warning_notification) | ||
| 68 | + assert !notifications.include?(@information_notification) | ||
| 69 | + end | ||
| 70 | + | ||
| 71 | + should 'get only notifications configured to be displayed in all pages' do | ||
| 72 | + @danger_notification.display_to_all_users = true | ||
| 73 | + @danger_notification.display_only_in_homepage = true | ||
| 74 | + @danger_notification.save! | ||
| 75 | + | ||
| 76 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, @user, "not_home") | ||
| 77 | + | ||
| 78 | + assert !notifications.include?(@danger_notification) | ||
| 79 | + assert notifications.include?(@warning_notification) | ||
| 80 | + assert notifications.include?(@information_notification) | ||
| 81 | + | ||
| 82 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, nil, "home") | ||
| 83 | + | ||
| 84 | + assert notifications.include?(@danger_notification) | ||
| 85 | + assert !notifications.include?(@warning_notification) | ||
| 86 | + assert !notifications.include?(@information_notification) | ||
| 87 | + end | ||
| 88 | + | ||
| 89 | + should 'get notifications configured to be displayed on profile' do | ||
| 90 | + community = fast_create(Community) | ||
| 91 | + | ||
| 92 | + AdminNotificationsPlugin::Notification.destroy_all | ||
| 93 | + env_home_notification = create_notification(@env, true) | ||
| 94 | + env_not_home_notification = create_notification(@env, false) | ||
| 95 | + profile_not_home_notification = create_notification(community, false) | ||
| 96 | + profile_home_notification = create_notification(community, true) | ||
| 97 | + | ||
| 98 | + notifications = AdminNotificationsPlugin::Notification.visibles(community, @user, "profile") | ||
| 99 | + assert_equivalent notifications.to_a, [env_not_home_notification, profile_not_home_notification, profile_home_notification] | ||
| 100 | + | ||
| 101 | + notifications = AdminNotificationsPlugin::Notification.visibles(community, @user, "profile_but_bot_homepage") | ||
| 102 | + assert_equivalent notifications.to_a, [env_not_home_notification, profile_not_home_notification] | ||
| 103 | + end | ||
| 104 | + | ||
| 105 | + should 'get notifications configured to be displayed on environment' do | ||
| 106 | + community = fast_create(Community) | ||
| 107 | + | ||
| 108 | + AdminNotificationsPlugin::Notification.destroy_all | ||
| 109 | + env_home_notification = create_notification(@env, true) | ||
| 110 | + env_not_home_notification = create_notification(@env, false) | ||
| 111 | + profile_not_home_notification = create_notification(community, false) | ||
| 112 | + profile_home_notification = create_notification(community, true) | ||
| 113 | + | ||
| 114 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, @user, "home") | ||
| 115 | + assert_equivalent notifications.to_a, [env_home_notification, env_not_home_notification] | ||
| 116 | + | ||
| 117 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, @user, "not_home_not_profile") | ||
| 118 | + assert_equivalent notifications.to_a, [env_not_home_notification] | ||
| 119 | + end | ||
| 120 | + | ||
| 121 | + should 'get only notifications configured to be displayed to all users and in all pages and not closed by an user' do | ||
| 122 | + @information_notification.display_to_all_users = true | ||
| 123 | + @information_notification.save! | ||
| 124 | + | ||
| 125 | + @danger_notification.display_to_all_users = true | ||
| 126 | + @danger_notification.display_only_in_homepage = true | ||
| 127 | + @danger_notification.save! | ||
| 128 | + | ||
| 129 | + @warning_notification.display_to_all_users = true | ||
| 130 | + @warning_notification.save! | ||
| 131 | + | ||
| 132 | + @warning_notification.users << @user | ||
| 133 | + | ||
| 134 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, @user, 'not_home') | ||
| 135 | + | ||
| 136 | + assert !notifications.include?(@danger_notification) | ||
| 137 | + assert !notifications.include?(@warning_notification) | ||
| 138 | + assert notifications.include?(@information_notification) | ||
| 139 | + end | ||
| 140 | + | ||
| 141 | + should 'get only active notifications' do | ||
| 142 | + @information_notification.active = false | ||
| 143 | + @information_notification.save! | ||
| 144 | + | ||
| 145 | + notifications = AdminNotificationsPlugin::Notification.visibles(@env, @user, 'home') | ||
| 146 | + | ||
| 147 | + assert notifications.include?(@danger_notification) | ||
| 148 | + assert notifications.include?(@warning_notification) | ||
| 149 | + assert !notifications.include?(@information_notification) | ||
| 150 | + end | ||
| 151 | + | ||
| 152 | + should 'get only notifications with popup' do | ||
| 153 | + @information_notification.display_popup = true | ||
| 154 | + @information_notification.display_to_all_users = true | ||
| 155 | + @information_notification.save! | ||
| 156 | + | ||
| 157 | + notifications = AdminNotificationsPlugin::Notification.with_popup(@env, @user, 'home') | ||
| 158 | + | ||
| 159 | + assert !notifications.include?(@danger_notification) | ||
| 160 | + assert !notifications.include?(@warning_notification) | ||
| 161 | + assert notifications.include?(@information_notification) | ||
| 162 | + | ||
| 163 | + notifications = AdminNotificationsPlugin::Notification.with_popup(@env, nil, nil) | ||
| 164 | + | ||
| 165 | + assert !notifications.include?(@danger_notification) | ||
| 166 | + assert !notifications.include?(@warning_notification) | ||
| 167 | + assert notifications.include?(@information_notification) | ||
| 168 | + end | ||
| 169 | + | ||
| 170 | + should 'get only notifications with popup not closed by an user' do | ||
| 171 | + @information_notification.display_popup = true | ||
| 172 | + @information_notification.display_to_all_users = true | ||
| 173 | + @information_notification.save! | ||
| 174 | + | ||
| 175 | + @danger_notification.display_popup = true | ||
| 176 | + @danger_notification.display_to_all_users = true | ||
| 177 | + @danger_notification.save! | ||
| 178 | + | ||
| 179 | + @danger_notification.users << @user | ||
| 180 | + | ||
| 181 | + notifications = AdminNotificationsPlugin::Notification.with_popup(@env, @user, 'home') | ||
| 182 | + | ||
| 183 | + assert !notifications.include?(@danger_notification) | ||
| 184 | + assert !notifications.include?(@warning_notification) | ||
| 185 | + assert notifications.include?(@information_notification) | ||
| 186 | + | ||
| 187 | + notifications = AdminNotificationsPlugin::Notification.with_popup(@env, nil, nil) | ||
| 188 | + | ||
| 189 | + assert notifications.include?(@danger_notification) | ||
| 190 | + assert !notifications.include?(@warning_notification) | ||
| 191 | + assert notifications.include?(@information_notification) | ||
| 192 | + end | ||
| 193 | +end |
plugins/admin_notifications/views/admin_notifications_plugin_admin/edit.html.erb
0 → 100644
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
| 1 | +<%= render :partial => "shared/form" %> |
plugins/admin_notifications/views/admin_notifications_plugin_admin/index.html.erb
0 → 100644
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
| 1 | +<%= render :partial => "shared/notifications_list" %> |
plugins/admin_notifications/views/admin_notifications_plugin_admin/new.html.erb
0 → 100644
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
| 1 | +<%= render :partial => "shared/form" %> |
plugins/admin_notifications/views/admin_notifications_plugin_myprofile/edit.html.erb
0 → 100644
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
| 1 | +<%= render :partial => "shared/form" %> |
plugins/admin_notifications/views/admin_notifications_plugin_myprofile/index.html.erb
0 → 100644
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
| 1 | +<%= render :partial => "shared/notifications_list" %> |
plugins/admin_notifications/views/admin_notifications_plugin_myprofile/new.html.erb
0 → 100644
| @@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
| 1 | +<%= render :partial => "shared/form" %> |
plugins/admin_notifications/views/admin_notifications_plugin_public/notifications_with_popup.html.erb
0 → 100644
| @@ -0,0 +1,22 @@ | @@ -0,0 +1,22 @@ | ||
| 1 | +<% @notifications = AdminNotificationsPlugin::Notification.with_popup(environment, current_user, @previous_path).where("id NOT IN (?)", @hide_notifications) %> | ||
| 2 | + | ||
| 3 | +<div class="notification-plugin-notification-modal"> | ||
| 4 | + <% @notifications.each do |notification| %> | ||
| 5 | + <% if !notification.title.blank? %> | ||
| 6 | + <div class="<%= notification.type.gsub("AdminNotificationsPlugin::", "").downcase %> notification notification-with-title" data-notification="<%=notification.id%>"> | ||
| 7 | + <div class="notification-title"> | ||
| 8 | + <%= notification.title %> | ||
| 9 | + </div> | ||
| 10 | + </div> | ||
| 11 | + <div class="notification-message notification-with-title-message"> | ||
| 12 | + <%= AdminNotificationsPlugin::NotificationHelper.substitute_variables(notification.message, current_user) %> | ||
| 13 | + </div> | ||
| 14 | + <% else %> | ||
| 15 | + <div class="<%= notification.type.gsub("AdminNotificationsPlugin::", "").downcase %> notification notification-without-title" data-notification="<%=notification.id%>"> | ||
| 16 | + <div class="notification-message"> | ||
| 17 | + <%= AdminNotificationsPlugin::NotificationHelper.substitute_variables(notification.message, current_user) %> | ||
| 18 | + </div> | ||
| 19 | + </div> | ||
| 20 | + <% end %> | ||
| 21 | + <% end %> | ||
| 22 | +</div> |
| @@ -0,0 +1,39 @@ | @@ -0,0 +1,39 @@ | ||
| 1 | +<div class="notification-plugin-form"> | ||
| 2 | + | ||
| 3 | + <% abstract_options = {:value => @notification.message, :style => 'width: 100%; height: 200px;', :class => 'mceEditor'} %> | ||
| 4 | + | ||
| 5 | + <%= button :back, _('Back'), :controller => 'admin_notifications_plugin_admin' %> | ||
| 6 | + | ||
| 7 | + <%= form_for :notifications do |f| %> | ||
| 8 | + | ||
| 9 | + <%= render :file => 'shared/tiny_mce', :locals => {:mode => 'restricted'} %> | ||
| 10 | + | ||
| 11 | + <%= labelled_form_field(_("Optional Title:"), f.text_field(:title, value: @notification.title)) %> | ||
| 12 | + | ||
| 13 | + <%= labelled_form_field(_("Enter your message here:"), f.text_area(:message, abstract_options)) %> | ||
| 14 | + <small class="notification-variables-options"> | ||
| 15 | + <%= _("Obs: You can use %{name} and %{email} variables to put the user's name and email in the message.") %> | ||
| 16 | + </small> | ||
| 17 | + | ||
| 18 | + <%= labelled_form_field(_('Notifications Status'), select(:notifications, :active, options_for_select_with_title({_("Active") => true, _("Inactive") => false}, @notification.active))) %> | ||
| 19 | + | ||
| 20 | + <%= labelled_form_field(_('Notifications Color/Type'), select(:notifications, :type, options_for_select_with_title({_("Blue - Information") => "AdminNotificationsPlugin::InformationNotification", _("Yellow - Warning") => "AdminNotificationsPlugin::WarningNotification", _("Green - Success") => "AdminNotificationsPlugin::SuccessNotification", _("Red - Danger") => "AdminNotificationsPlugin::DangerNotification"}, @notification.type))) %> | ||
| 21 | + | ||
| 22 | + <div> | ||
| 23 | + <%= labelled_check_box(_("Display only in the homepage"), 'notifications[display_only_in_homepage]', '1', @notification.display_only_in_homepage?) %> | ||
| 24 | + </div> | ||
| 25 | + | ||
| 26 | + <div> | ||
| 27 | + <%= labelled_check_box(_("Display to not logged users too"), 'notifications[display_to_all_users]', '1', @notification.display_to_all_users?) %> | ||
| 28 | + </div> | ||
| 29 | + | ||
| 30 | + <div> | ||
| 31 | + <%= labelled_check_box(_("Display popup until user close the notification"), 'notifications[display_popup]', '1', @notification.display_popup?) %> | ||
| 32 | + </div> | ||
| 33 | + | ||
| 34 | + <% button_bar do %> | ||
| 35 | + <%= submit_button 'save', _('Save'), :cancel => { :action => 'index' } %> | ||
| 36 | + <% end %> | ||
| 37 | + | ||
| 38 | + <% end %> | ||
| 39 | +</div> |
plugins/admin_notifications/views/shared/_notifications_list.html.erb
0 → 100644
| @@ -0,0 +1,39 @@ | @@ -0,0 +1,39 @@ | ||
| 1 | +<div id="notification-plugin-notification-manager"> | ||
| 2 | + <div class="notification-manager-title"> | ||
| 3 | + <h1><%= _("Notifications") %></h1> | ||
| 4 | + </div> | ||
| 5 | + <div class="buttons-bar"> | ||
| 6 | + <div class="new-notification"> | ||
| 7 | + <%= button :new, _('New Notification'), {:action => :new}, :method => :get %> | ||
| 8 | + </div> | ||
| 9 | + <div class="back-button"> | ||
| 10 | + <%= button :back, _('Back to control panel'), {:controller => 'admin_panel', :action => :index}, :method => :get %> | ||
| 11 | + </div> | ||
| 12 | + </div> | ||
| 13 | + | ||
| 14 | + <div class="notification-title-bar"> | ||
| 15 | + <div class="notification-title"> | ||
| 16 | + <%= _('Notifications') %> | ||
| 17 | + </div> | ||
| 18 | + <div class="action-title"> | ||
| 19 | + <%= _('Actions') %> | ||
| 20 | + </div> | ||
| 21 | + </div> | ||
| 22 | + | ||
| 23 | + <% @notifications.each do |notification| %> | ||
| 24 | + <div class="notification-line"> | ||
| 25 | + <div class="notification-message"> | ||
| 26 | + <%= truncate(notification.message, length: 50) %> | ||
| 27 | + </div> | ||
| 28 | + <div class="notification-action"> | ||
| 29 | + <% if notification.active? %> | ||
| 30 | + <%= button_without_text :deactivate, _('Deactivate'), {:action => :change_status, :id => notification}, :method => :post, :confirm => _("Do you want to change the status of this notification?") %> | ||
| 31 | + <% else %> | ||
| 32 | + <%= button_without_text :activate, _('Activate'), {:action => :change_status, :id => notification}, :method => :post, :confirm => _("Do you want to change the status of this notification?") %> | ||
| 33 | + <% end %> | ||
| 34 | + <%= button_without_text :edit, _('Edit'), {:action => 'edit', :id => notification.id} if !remove_content_button(:edit, notification) %> | ||
| 35 | + <%= button_without_text :delete, _('Delete'), {:action => :destroy, :id => notification}, :method => :delete, :confirm => _("Do you want to delete this notification?") %> | ||
| 36 | + </div> | ||
| 37 | + </div> | ||
| 38 | + <% end %> | ||
| 39 | +</div> |
plugins/admin_notifications/views/shared/show_notification.html.erb
0 → 100644
| @@ -0,0 +1,33 @@ | @@ -0,0 +1,33 @@ | ||
| 1 | +<% if current_user && current_user.person.is_admin? %> | ||
| 2 | + <% active_notifications = AdminNotificationsPlugin::Notification.active(environment) %> | ||
| 3 | + <% unless active_notifications.blank? %> | ||
| 4 | + <div class="notification-plugin-notification-bar"> | ||
| 5 | + <div class="adminnotification notification"> | ||
| 6 | + <div class="notification-message"> | ||
| 7 | + <p> | ||
| 8 | + <%= _("There are active notifications in this environment!") %> | ||
| 9 | + <%= link_to _("Manage all notifications here."), AdminNotificationsPlugin.admin_url %> | ||
| 10 | + </p> | ||
| 11 | + </div> | ||
| 12 | + </div> | ||
| 13 | + </div> | ||
| 14 | + <% end %> | ||
| 15 | +<% end %> | ||
| 16 | + | ||
| 17 | +<% target = profile.present? ? profile : environment %> | ||
| 18 | + | ||
| 19 | +<% @notifications = AdminNotificationsPlugin::Notification.visibles(target, current_user, controller_path).where("id NOT IN (?)", hide_notifications) %> | ||
| 20 | + | ||
| 21 | +<div class="notification-plugin-notification-bar"> | ||
| 22 | + <% @notifications.each do |notification| %> | ||
| 23 | + <div class="<%= notification.type.gsub("AdminNotificationsPlugin::", "").downcase %> notification" data-notification="<%=notification.id%>" notification-display-popup="<%=notification.display_popup?%>"> | ||
| 24 | + <div class="notification-message"> | ||
| 25 | + <%= AdminNotificationsPlugin::NotificationHelper.substitute_variables(notification.message, current_user) %> | ||
| 26 | + </div> | ||
| 27 | + <% if logged_in? %> | ||
| 28 | + <div class="notification-close" title="<%= _('Do not show anymore') %>"></div> | ||
| 29 | + <div class="notification-hide" title="<%= _('Hide for now') %>"></div> | ||
| 30 | + <% end %> | ||
| 31 | + </div> | ||
| 32 | + <% end %> | ||
| 33 | +</div> |
| @@ -0,0 +1,7 @@ | @@ -0,0 +1,7 @@ | ||
| 1 | +**This plugin is deprecated. Please use "admin_notifications" plugin instead.** | ||
| 2 | + | ||
| 3 | +If you already were using this plugin, migrating* it will switch automatically to the new plugin. | ||
| 4 | +If you want to start using this plugin from scratch, activate and use the new one instead. | ||
| 5 | + | ||
| 6 | +*NOTE: running Noosfero in production mode already runs | ||
| 7 | + the migrations and therefore switch plugins automatically. |
plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb
| @@ -1,103 +0,0 @@ | @@ -1,103 +0,0 @@ | ||
| 1 | -class EnvironmentNotificationPluginAdminController < AdminController | ||
| 2 | - | ||
| 3 | - helper EnvironmentNotificationHelper | ||
| 4 | - include EnvironmentNotificationHelper | ||
| 5 | - | ||
| 6 | - before_filter :admin_required, :except => [:close_notification, :hide_notification] | ||
| 7 | - | ||
| 8 | - def index | ||
| 9 | - @notifications = environment.environment_notifications.order('updated_at DESC') | ||
| 10 | - end | ||
| 11 | - | ||
| 12 | - def new | ||
| 13 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.new | ||
| 14 | - if request.post? | ||
| 15 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.new(params[:notifications]) | ||
| 16 | - @notification.message = @notification.message.html_safe | ||
| 17 | - @notification.environment_id = environment.id | ||
| 18 | - if @notification.save | ||
| 19 | - session[:notice] = _("Notification successfully created") | ||
| 20 | - redirect_to :action => :index | ||
| 21 | - else | ||
| 22 | - session[:notice] = _("Notification couldn't be created") | ||
| 23 | - end | ||
| 24 | - end | ||
| 25 | - end | ||
| 26 | - | ||
| 27 | - def destroy | ||
| 28 | - if request.delete? | ||
| 29 | - notification = environment.environment_notifications.find_by_id(params[:id]) | ||
| 30 | - if notification && notification.destroy | ||
| 31 | - session[:notice] = _('The notification was deleted.') | ||
| 32 | - else | ||
| 33 | - session[:notice] = _('Could not remove the notification') | ||
| 34 | - end | ||
| 35 | - end | ||
| 36 | - redirect_to :action => :index | ||
| 37 | - end | ||
| 38 | - | ||
| 39 | - def edit | ||
| 40 | - @notification = environment.environment_notifications.find_by_id(params[:id]) | ||
| 41 | - if request.post? | ||
| 42 | - if @notification.update_attributes(params[:notifications]) | ||
| 43 | - session[:notice] = _('The notification was edited.') | ||
| 44 | - else | ||
| 45 | - session[:notice] = _('Could not edit the notification.') | ||
| 46 | - end | ||
| 47 | - redirect_to :action => :index | ||
| 48 | - end | ||
| 49 | - end | ||
| 50 | - | ||
| 51 | - def change_status | ||
| 52 | - @notification = environment.environment_notifications.find_by_id(params[:id]) | ||
| 53 | - | ||
| 54 | - @notification.active = !@notification.active | ||
| 55 | - | ||
| 56 | - if @notification.save! | ||
| 57 | - session[:notice] = _('The status of the notification was changed.') | ||
| 58 | - else | ||
| 59 | - session[:notice] = _('Could not change the status of the notification.') | ||
| 60 | - end | ||
| 61 | - | ||
| 62 | - redirect_to :action => :index | ||
| 63 | - end | ||
| 64 | - | ||
| 65 | - def close_notification | ||
| 66 | - result = false | ||
| 67 | - | ||
| 68 | - if logged_in? | ||
| 69 | - @notification = environment.environment_notifications.find_by_id(params[:notification_id]) | ||
| 70 | - | ||
| 71 | - if @notification | ||
| 72 | - @notification.users << current_user | ||
| 73 | - result = @notification.users.include?(current_user) | ||
| 74 | - end | ||
| 75 | - end | ||
| 76 | - | ||
| 77 | - render json: result | ||
| 78 | - end | ||
| 79 | - | ||
| 80 | - def hide_notification | ||
| 81 | - result = false | ||
| 82 | - | ||
| 83 | - if logged_in? | ||
| 84 | - @notification = environment.environment_notifications.find_by_id(params[:notification_id]) | ||
| 85 | - | ||
| 86 | - if @notification | ||
| 87 | - current_notificaions = [] | ||
| 88 | - current_notificaions = JSON.parse(cookies[:hide_notifications]) unless cookies[:hide_notifications].blank? | ||
| 89 | - current_notificaions << @notification.id unless current_notificaions.include? @notification.id | ||
| 90 | - cookies[:hide_notifications] = JSON.generate(current_notificaions) | ||
| 91 | - result = current_notificaions.include? @notification.id | ||
| 92 | - end | ||
| 93 | - end | ||
| 94 | - | ||
| 95 | - render json: result | ||
| 96 | - end | ||
| 97 | - | ||
| 98 | - protected | ||
| 99 | - def admin_required | ||
| 100 | - redirect_to :root unless current_user.person.is_admin? | ||
| 101 | - end | ||
| 102 | - | ||
| 103 | -end |
plugins/environment_notification/controllers/public/environment_notification_plugin_public_controller.rb
| @@ -1,15 +0,0 @@ | @@ -1,15 +0,0 @@ | ||
| 1 | -class EnvironmentNotificationPluginPublicController < PublicController | ||
| 2 | - | ||
| 3 | - helper EnvironmentNotificationHelper | ||
| 4 | - include EnvironmentNotificationHelper | ||
| 5 | - | ||
| 6 | - def notifications_with_popup | ||
| 7 | - @hide_notifications = hide_notifications | ||
| 8 | - if params[:previous_path] | ||
| 9 | - @previous_path = params[:previous_path] | ||
| 10 | - else | ||
| 11 | - @previous_path = nil | ||
| 12 | - end | ||
| 13 | - end | ||
| 14 | - | ||
| 15 | -end |
plugins/environment_notification/db/migrate/20150721132025_create_notification_table.rb
| @@ -1,28 +0,0 @@ | @@ -1,28 +0,0 @@ | ||
| 1 | -class CreateNotificationTable < ActiveRecord::Migration | ||
| 2 | - def up | ||
| 3 | - create_table :environment_notifications do |t| | ||
| 4 | - t.text :message | ||
| 5 | - t.integer :environment_id | ||
| 6 | - t.string :type | ||
| 7 | - t.string :title | ||
| 8 | - t.boolean :active | ||
| 9 | - t.boolean :display_only_in_homepage, :default => false | ||
| 10 | - t.boolean :display_to_all_users, :default => false | ||
| 11 | - t.boolean :display_popup, :default => false | ||
| 12 | - t.column :created_at, :datetime | ||
| 13 | - t.column :updated_at, :datetime | ||
| 14 | - end | ||
| 15 | - | ||
| 16 | - create_table :environment_notifications_users, id: false do |t| | ||
| 17 | - t.belongs_to :environment_notification | ||
| 18 | - t.belongs_to :user | ||
| 19 | - end | ||
| 20 | - add_index :environment_notifications_users, [:environment_notification_id], name: :index_Zaem6uuw | ||
| 21 | - add_index :environment_notifications_users, [:user_id], name: :index_ap3nohR9 | ||
| 22 | - end | ||
| 23 | - | ||
| 24 | - def down | ||
| 25 | - drop_table :environment_notifications | ||
| 26 | - drop_table :environment_notifications_users | ||
| 27 | - end | ||
| 28 | -end |
plugins/environment_notification/db/migrate/20160321190725_reactivate_plugin_after_rename.rb
0 → 100644
| @@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
| 1 | +class ReactivatePluginAfterRename < ActiveRecord::Migration | ||
| 2 | + def up | ||
| 3 | + script_path = Rails.root.join('script').to_s | ||
| 4 | + system(script_path + '/noosfero-plugins disable environment_notification') | ||
| 5 | + system(script_path + '/noosfero-plugins enable admin_notifications') | ||
| 6 | + | ||
| 7 | + system("rake db:migrate") | ||
| 8 | + end | ||
| 9 | + | ||
| 10 | + def down | ||
| 11 | + raise ActiveRecord::IrreversibleMigration | ||
| 12 | + end | ||
| 13 | + | ||
| 14 | +end |
plugins/environment_notification/features/message_edition.feature
| @@ -1,14 +0,0 @@ | @@ -1,14 +0,0 @@ | ||
| 1 | -Feature: Create envronment notification message | ||
| 2 | - As an admin user | ||
| 3 | - I want to create an environment notification | ||
| 4 | - In order to notificate users | ||
| 5 | - | ||
| 6 | - @selenium | ||
| 7 | - Scenario: mce restricted mode should show on message creation | ||
| 8 | - Given I am logged in as admin | ||
| 9 | - And I follow "Administration" | ||
| 10 | - And I follow "Plugins" | ||
| 11 | - And I follow "Configuration" | ||
| 12 | - And I follow "New Notification" | ||
| 13 | - Then The tinymce "toolbar1" should be "bold italic underline | link" | ||
| 14 | - Then The tinymce "menubar" should be "false" |
plugins/environment_notification/lib/environment_notification_helper.rb
| @@ -1,18 +0,0 @@ | @@ -1,18 +0,0 @@ | ||
| 1 | -module EnvironmentNotificationHelper | ||
| 2 | - | ||
| 3 | - def hide_notifications | ||
| 4 | - invalid_id = -1 | ||
| 5 | - hide_notifications_ids = [invalid_id] | ||
| 6 | - hide_notifications_ids = JSON.parse(cookies[:hide_notifications]) unless cookies[:hide_notifications].blank? | ||
| 7 | - hide_notifications_ids | ||
| 8 | - end | ||
| 9 | - | ||
| 10 | - def self.substitute_variables(message, user) | ||
| 11 | - if user | ||
| 12 | - message = message.gsub("%{email}", user.person.email).gsub("%{name}", user.person.name) | ||
| 13 | - end | ||
| 14 | - | ||
| 15 | - message | ||
| 16 | - end | ||
| 17 | - | ||
| 18 | -end |
plugins/environment_notification/lib/environment_notification_plugin.rb
| 1 | class EnvironmentNotificationPlugin < Noosfero::Plugin | 1 | class EnvironmentNotificationPlugin < Noosfero::Plugin |
| 2 | - | ||
| 3 | def self.plugin_name | 2 | def self.plugin_name |
| 4 | - "Environment Notifications Plugin" | 3 | + "Environment Notifications Plugin *DEPRECATED*" |
| 5 | end | 4 | end |
| 6 | 5 | ||
| 7 | def self.plugin_description | 6 | def self.plugin_description |
| 8 | - _("A plugin for environment notifications.") | ||
| 9 | - end | ||
| 10 | - | ||
| 11 | - def stylesheet? | ||
| 12 | - true | ||
| 13 | - end | ||
| 14 | - | ||
| 15 | - def js_files | ||
| 16 | - %w( | ||
| 17 | - public/environment_notification_plugin.js | ||
| 18 | - ) | ||
| 19 | - end | ||
| 20 | - | ||
| 21 | - def body_beginning | ||
| 22 | - lambda do | ||
| 23 | - extend EnvironmentNotificationHelper | ||
| 24 | - render template: 'environment_notification_plugin_admin/show_notification' | ||
| 25 | - end | ||
| 26 | - end | ||
| 27 | - | ||
| 28 | - def admin_panel_links | ||
| 29 | - {:title => _('Notification Manager'), :url => {:controller => 'environment_notification_plugin_admin', :action => 'index'}} | ||
| 30 | - end | ||
| 31 | - | ||
| 32 | - def account_controller_filters | ||
| 33 | - block = proc do | ||
| 34 | - if !logged_in? | ||
| 35 | - cookies[:hide_notifications] = nil | ||
| 36 | - end | ||
| 37 | - end | ||
| 38 | - | ||
| 39 | - [{ | ||
| 40 | - :type => "after_filter", | ||
| 41 | - :method_name => "clean_hide_notifications_cookie", | ||
| 42 | - :options => { }, | ||
| 43 | - :block => block | ||
| 44 | - }] | 7 | + _("A plugin for environment notifications. *DEPRECATED*") |
| 45 | end | 8 | end |
| 46 | end | 9 | end |
plugins/environment_notification/lib/environment_notifications_user.rb
| @@ -1,10 +0,0 @@ | @@ -1,10 +0,0 @@ | ||
| 1 | -class EnvironmentNotificationsUser < ActiveRecord::Base | ||
| 2 | - self.table_name = "environment_notifications_users" | ||
| 3 | - | ||
| 4 | - belongs_to :user | ||
| 5 | - belongs_to :environment_notification, class_name: 'EnvironmentNotificationPlugin::EnvironmentNotification' | ||
| 6 | - | ||
| 7 | - attr_accessible :user_id, :environment_notification_id | ||
| 8 | - | ||
| 9 | - validates_uniqueness_of :user_id, :scope => :environment_notification_id | ||
| 10 | -end |
plugins/environment_notification/lib/ext/environment.rb
plugins/environment_notification/lib/ext/user.rb
plugins/environment_notification/models/environment_notification_plugin/danger_notification.rb
plugins/environment_notification/models/environment_notification_plugin/environment_notification.rb
| @@ -1,50 +0,0 @@ | @@ -1,50 +0,0 @@ | ||
| 1 | -class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Base | ||
| 2 | - | ||
| 3 | - self.table_name = "environment_notifications" | ||
| 4 | - | ||
| 5 | - TYPE_LIST = [ | ||
| 6 | - "EnvironmentNotificationPlugin::WarningNotification", | ||
| 7 | - "EnvironmentNotificationPlugin::SuccessNotification", | ||
| 8 | - "EnvironmentNotificationPlugin::InformationNotification", | ||
| 9 | - "EnvironmentNotificationPlugin::DangerNotification" | ||
| 10 | - ] | ||
| 11 | - | ||
| 12 | - attr_accessible :message, :environment_id, :active, :type, :display_only_in_homepage, :display_to_all_users, :display_popup, :title | ||
| 13 | - | ||
| 14 | - has_many :environment_notifications_users | ||
| 15 | - has_many :users, :through => :environment_notifications_users | ||
| 16 | - | ||
| 17 | - validates_presence_of :message | ||
| 18 | - validates_presence_of :environment_id | ||
| 19 | - validate :notification_type_must_be_in_type_list | ||
| 20 | - | ||
| 21 | - def notification_type_must_be_in_type_list | ||
| 22 | - unless TYPE_LIST.include?(type) | ||
| 23 | - errors.add(:type, "invalid notification type") | ||
| 24 | - end | ||
| 25 | - end | ||
| 26 | - | ||
| 27 | - scope :active, lambda{|environment| { :conditions => { :environment_id => environment.id, :active => true } } } | ||
| 28 | - | ||
| 29 | - def self.visibles(environment, user, controller_path) | ||
| 30 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.active(environment).order('updated_at DESC') | ||
| 31 | - | ||
| 32 | - if user | ||
| 33 | - active_notifications_ids = notifications.pluck(:id) - user.environment_notifications.pluck(:id) | ||
| 34 | - | ||
| 35 | - notifications = notifications.where(id: active_notifications_ids) | ||
| 36 | - else | ||
| 37 | - notifications = notifications.where(display_to_all_users: true) | ||
| 38 | - end | ||
| 39 | - | ||
| 40 | - if controller_path != "home" | ||
| 41 | - notifications = notifications.where(display_only_in_homepage: false) | ||
| 42 | - end | ||
| 43 | - | ||
| 44 | - notifications | ||
| 45 | - end | ||
| 46 | - | ||
| 47 | - def self.with_popup(environment, user, previous_path) | ||
| 48 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(environment, user, previous_path).where(display_popup: true) | ||
| 49 | - end | ||
| 50 | -end |
plugins/environment_notification/models/environment_notification_plugin/information_notification.rb
plugins/environment_notification/models/environment_notification_plugin/success_notification.rb
plugins/environment_notification/models/environment_notification_plugin/warning_notification.rb
plugins/environment_notification/po/environment_notification.pot
| @@ -1,178 +0,0 @@ | @@ -1,178 +0,0 @@ | ||
| 1 | -# SOME DESCRIPTIVE TITLE. | ||
| 2 | -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
| 3 | -# This file is distributed under the same license as the PACKAGE package. | ||
| 4 | -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
| 5 | -# | ||
| 6 | -#, fuzzy | ||
| 7 | -msgid "" | ||
| 8 | -msgstr "" | ||
| 9 | -"Project-Id-Version: 1.5\n" | ||
| 10 | -"Report-Msgid-Bugs-To: \n" | ||
| 11 | -"POT-Creation-Date: 2016-04-19 15:00+0000\n" | ||
| 12 | -"PO-Revision-Date: 2016-04-19 15:00+0000\n" | ||
| 13 | -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
| 14 | -"Language-Team: LANGUAGE <LL@li.org>\n" | ||
| 15 | -"Language: \n" | ||
| 16 | -"MIME-Version: 1.0\n" | ||
| 17 | -"Content-Type: text/plain; charset=UTF-8\n" | ||
| 18 | -"Content-Transfer-Encoding: 8bit\n" | ||
| 19 | -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | ||
| 20 | - | ||
| 21 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:19 | ||
| 22 | -msgid "Notification successfully created" | ||
| 23 | -msgstr "" | ||
| 24 | - | ||
| 25 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:22 | ||
| 26 | -msgid "Notification couldn't be created" | ||
| 27 | -msgstr "" | ||
| 28 | - | ||
| 29 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:31 | ||
| 30 | -msgid "The notification was deleted." | ||
| 31 | -msgstr "" | ||
| 32 | - | ||
| 33 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:33 | ||
| 34 | -msgid "Could not remove the notification" | ||
| 35 | -msgstr "" | ||
| 36 | - | ||
| 37 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:43 | ||
| 38 | -msgid "The notification was edited." | ||
| 39 | -msgstr "" | ||
| 40 | - | ||
| 41 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:45 | ||
| 42 | -msgid "Could not edit the notification." | ||
| 43 | -msgstr "" | ||
| 44 | - | ||
| 45 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:57 | ||
| 46 | -msgid "The status of the notification was changed." | ||
| 47 | -msgstr "" | ||
| 48 | - | ||
| 49 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:59 | ||
| 50 | -msgid "Could not change the status of the notification." | ||
| 51 | -msgstr "" | ||
| 52 | - | ||
| 53 | -#: ../lib/environment_notification_plugin.rb:8 | ||
| 54 | -msgid "A plugin for environment notifications." | ||
| 55 | -msgstr "" | ||
| 56 | - | ||
| 57 | -#: ../lib/environment_notification_plugin.rb:29 | ||
| 58 | -msgid "Notification Manager" | ||
| 59 | -msgstr "" | ||
| 60 | - | ||
| 61 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:5 | ||
| 62 | -msgid "Back" | ||
| 63 | -msgstr "" | ||
| 64 | - | ||
| 65 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:11 | ||
| 66 | -msgid "Optional Title:" | ||
| 67 | -msgstr "" | ||
| 68 | - | ||
| 69 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:13 | ||
| 70 | -msgid "Enter your message here:" | ||
| 71 | -msgstr "" | ||
| 72 | - | ||
| 73 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:15 | ||
| 74 | -msgid "" | ||
| 75 | -"Obs: You can use %{name} and %{email} variables to put the user's name and ema" | ||
| 76 | -"il in the message." | ||
| 77 | -msgstr "" | ||
| 78 | - | ||
| 79 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:18 | ||
| 80 | -msgid "Notifications Status" | ||
| 81 | -msgstr "" | ||
| 82 | - | ||
| 83 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 84 | -msgid "Blue - Information" | ||
| 85 | -msgstr "" | ||
| 86 | - | ||
| 87 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 88 | -msgid "Yellow - Warning" | ||
| 89 | -msgstr "" | ||
| 90 | - | ||
| 91 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 92 | -msgid "Green - Success" | ||
| 93 | -msgstr "" | ||
| 94 | - | ||
| 95 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 96 | -msgid "Red - Danger" | ||
| 97 | -msgstr "" | ||
| 98 | - | ||
| 99 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 100 | -msgid "Notifications Color/Type" | ||
| 101 | -msgstr "" | ||
| 102 | - | ||
| 103 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:23 | ||
| 104 | -msgid "Display only in the homepage" | ||
| 105 | -msgstr "" | ||
| 106 | - | ||
| 107 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:27 | ||
| 108 | -msgid "Display to not logged users too" | ||
| 109 | -msgstr "" | ||
| 110 | - | ||
| 111 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:31 | ||
| 112 | -msgid "Display popup until user close the notification" | ||
| 113 | -msgstr "" | ||
| 114 | - | ||
| 115 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:35 | ||
| 116 | -msgid "Save" | ||
| 117 | -msgstr "" | ||
| 118 | - | ||
| 119 | -#: ../views/environment_notification_plugin_admin/index.html.erb:3 | ||
| 120 | -msgid "Environment Notifications" | ||
| 121 | -msgstr "" | ||
| 122 | - | ||
| 123 | -#: ../views/environment_notification_plugin_admin/index.html.erb:7 | ||
| 124 | -msgid "New Notification" | ||
| 125 | -msgstr "" | ||
| 126 | - | ||
| 127 | -#: ../views/environment_notification_plugin_admin/index.html.erb:10 | ||
| 128 | -msgid "Back to control panel" | ||
| 129 | -msgstr "" | ||
| 130 | - | ||
| 131 | -#: ../views/environment_notification_plugin_admin/index.html.erb:16 | ||
| 132 | -msgid "Notifications" | ||
| 133 | -msgstr "" | ||
| 134 | - | ||
| 135 | -#: ../views/environment_notification_plugin_admin/index.html.erb:19 | ||
| 136 | -msgid "Actions" | ||
| 137 | -msgstr "" | ||
| 138 | - | ||
| 139 | -#: ../views/environment_notification_plugin_admin/index.html.erb:30 | ||
| 140 | -#: ../views/environment_notification_plugin_admin/index.html.erb:32 | ||
| 141 | -msgid "Do you want to change the status of this notification?" | ||
| 142 | -msgstr "" | ||
| 143 | - | ||
| 144 | -#: ../views/environment_notification_plugin_admin/index.html.erb:30 | ||
| 145 | -msgid "Deactivate" | ||
| 146 | -msgstr "" | ||
| 147 | - | ||
| 148 | -#: ../views/environment_notification_plugin_admin/index.html.erb:32 | ||
| 149 | -msgid "Activate" | ||
| 150 | -msgstr "" | ||
| 151 | - | ||
| 152 | -#: ../views/environment_notification_plugin_admin/index.html.erb:34 | ||
| 153 | -msgid "Edit" | ||
| 154 | -msgstr "" | ||
| 155 | - | ||
| 156 | -#: ../views/environment_notification_plugin_admin/index.html.erb:35 | ||
| 157 | -msgid "Delete" | ||
| 158 | -msgstr "" | ||
| 159 | - | ||
| 160 | -#: ../views/environment_notification_plugin_admin/index.html.erb:35 | ||
| 161 | -msgid "Do you want to delete this notification?" | ||
| 162 | -msgstr "" | ||
| 163 | - | ||
| 164 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:8 | ||
| 165 | -msgid "There are active notifications in this environment!" | ||
| 166 | -msgstr "" | ||
| 167 | - | ||
| 168 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:9 | ||
| 169 | -msgid "Manage all notifications here." | ||
| 170 | -msgstr "" | ||
| 171 | - | ||
| 172 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:26 | ||
| 173 | -msgid "Do not show anymore" | ||
| 174 | -msgstr "" | ||
| 175 | - | ||
| 176 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:27 | ||
| 177 | -msgid "Hide for now" | ||
| 178 | -msgstr "" |
plugins/environment_notification/po/pt/environment_notification.po
| @@ -1,178 +0,0 @@ | @@ -1,178 +0,0 @@ | ||
| 1 | -# SOME DESCRIPTIVE TITLE. | ||
| 2 | -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
| 3 | -# This file is distributed under the same license as the PACKAGE package. | ||
| 4 | -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
| 5 | -# | ||
| 6 | -msgid "" | ||
| 7 | -msgstr "" | ||
| 8 | -"Project-Id-Version: 1.3~rc2-1-ga15645d\n" | ||
| 9 | -"POT-Creation-Date: 2016-04-19 15:00+0000\n" | ||
| 10 | -"PO-Revision-Date: 2015-09-14 12:12-0000\n" | ||
| 11 | -"Last-Translator: FULL NAME <arthurmde@gmail.com>\n" | ||
| 12 | -"Language-Team: Portuguese\n" | ||
| 13 | -"Language: Portuguese\n" | ||
| 14 | -"MIME-Version: 1.0\n" | ||
| 15 | -"Content-Type: text/plain; charset=UTF-8\n" | ||
| 16 | -"Content-Transfer-Encoding: 8bit\n" | ||
| 17 | -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | ||
| 18 | - | ||
| 19 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:19 | ||
| 20 | -msgid "Notification successfully created" | ||
| 21 | -msgstr "Notificação criada com sucesso" | ||
| 22 | - | ||
| 23 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:22 | ||
| 24 | -msgid "Notification couldn't be created" | ||
| 25 | -msgstr "Não foi possível criar notificação" | ||
| 26 | - | ||
| 27 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:31 | ||
| 28 | -msgid "The notification was deleted." | ||
| 29 | -msgstr "A notificação foi removida" | ||
| 30 | - | ||
| 31 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:33 | ||
| 32 | -msgid "Could not remove the notification" | ||
| 33 | -msgstr "Não foi possível remover a notificação" | ||
| 34 | - | ||
| 35 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:43 | ||
| 36 | -msgid "The notification was edited." | ||
| 37 | -msgstr "A notificação foi editada." | ||
| 38 | - | ||
| 39 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:45 | ||
| 40 | -msgid "Could not edit the notification." | ||
| 41 | -msgstr "Não foi possível editar a notificação." | ||
| 42 | - | ||
| 43 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:57 | ||
| 44 | -msgid "The status of the notification was changed." | ||
| 45 | -msgstr "O status da notificação foi modificado" | ||
| 46 | - | ||
| 47 | -#: ../controllers/environment_notification_plugin_admin_controller.rb:59 | ||
| 48 | -msgid "Could not change the status of the notification." | ||
| 49 | -msgstr "Não foi possível alterar o status da notificação" | ||
| 50 | - | ||
| 51 | -#: ../lib/environment_notification_plugin.rb:8 | ||
| 52 | -msgid "A plugin for environment notifications." | ||
| 53 | -msgstr "Plugin para notificações do ambiente" | ||
| 54 | - | ||
| 55 | -#: ../lib/environment_notification_plugin.rb:29 | ||
| 56 | -msgid "Notification Manager" | ||
| 57 | -msgstr "Gerenciador de Notificações" | ||
| 58 | - | ||
| 59 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:5 | ||
| 60 | -msgid "Back" | ||
| 61 | -msgstr "Voltar" | ||
| 62 | - | ||
| 63 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:11 | ||
| 64 | -msgid "Optional Title:" | ||
| 65 | -msgstr "Título Opcional:" | ||
| 66 | - | ||
| 67 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:13 | ||
| 68 | -msgid "Enter your message here:" | ||
| 69 | -msgstr "Entre com a sua mensagem aqui:" | ||
| 70 | - | ||
| 71 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:15 | ||
| 72 | -msgid "" | ||
| 73 | -"Obs: You can use %{name} and %{email} variables to put the user's name and " | ||
| 74 | -"email in the message." | ||
| 75 | -msgstr "" | ||
| 76 | -"Obs: Você pode usar as variáveis %{name} e %{email} para inserir o nome e " | ||
| 77 | -"email do usuário logado na mensagem." | ||
| 78 | - | ||
| 79 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:18 | ||
| 80 | -msgid "Notifications Status" | ||
| 81 | -msgstr "Status da Notificação" | ||
| 82 | - | ||
| 83 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 84 | -msgid "Blue - Information" | ||
| 85 | -msgstr "Azul - Informação" | ||
| 86 | - | ||
| 87 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 88 | -msgid "Yellow - Warning" | ||
| 89 | -msgstr "Amarelo - Atenção" | ||
| 90 | - | ||
| 91 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 92 | -msgid "Green - Success" | ||
| 93 | -msgstr "Verde - Sucesso" | ||
| 94 | - | ||
| 95 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 96 | -msgid "Red - Danger" | ||
| 97 | -msgstr "Vermelho - Perigo" | ||
| 98 | - | ||
| 99 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:20 | ||
| 100 | -msgid "Notifications Color/Type" | ||
| 101 | -msgstr "Cor/Tipo de Notificação" | ||
| 102 | - | ||
| 103 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:23 | ||
| 104 | -msgid "Display only in the homepage" | ||
| 105 | -msgstr "Apresentar apenas na página inicial" | ||
| 106 | - | ||
| 107 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:27 | ||
| 108 | -msgid "Display to not logged users too" | ||
| 109 | -msgstr "Apresentar notificação para usuários não logados também" | ||
| 110 | - | ||
| 111 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:31 | ||
| 112 | -msgid "Display popup until user close the notification" | ||
| 113 | -msgstr "Apresentar Popup da notificação até que o usuário a feche" | ||
| 114 | - | ||
| 115 | -#: ../views/environment_notification_plugin_admin/_form.html.erb:35 | ||
| 116 | -msgid "Save" | ||
| 117 | -msgstr "Salvar" | ||
| 118 | - | ||
| 119 | -#: ../views/environment_notification_plugin_admin/index.html.erb:3 | ||
| 120 | -msgid "Environment Notifications" | ||
| 121 | -msgstr "Notificações do Ambiente" | ||
| 122 | - | ||
| 123 | -#: ../views/environment_notification_plugin_admin/index.html.erb:7 | ||
| 124 | -msgid "New Notification" | ||
| 125 | -msgstr "Nova Notificação" | ||
| 126 | - | ||
| 127 | -#: ../views/environment_notification_plugin_admin/index.html.erb:10 | ||
| 128 | -msgid "Back to control panel" | ||
| 129 | -msgstr "Voltar ao Painel de Controle" | ||
| 130 | - | ||
| 131 | -#: ../views/environment_notification_plugin_admin/index.html.erb:16 | ||
| 132 | -msgid "Notifications" | ||
| 133 | -msgstr "Notificações" | ||
| 134 | - | ||
| 135 | -#: ../views/environment_notification_plugin_admin/index.html.erb:19 | ||
| 136 | -msgid "Actions" | ||
| 137 | -msgstr "Ações" | ||
| 138 | - | ||
| 139 | -#: ../views/environment_notification_plugin_admin/index.html.erb:30 | ||
| 140 | -msgid "Deactivate" | ||
| 141 | -msgstr "Desativar" | ||
| 142 | - | ||
| 143 | -#: ../views/environment_notification_plugin_admin/index.html.erb:30 | ||
| 144 | -#: ../views/environment_notification_plugin_admin/index.html.erb:32 | ||
| 145 | -msgid "Do you want to change the status of this notification?" | ||
| 146 | -msgstr "Você quer alterar o status dessa notificação?" | ||
| 147 | - | ||
| 148 | -#: ../views/environment_notification_plugin_admin/index.html.erb:32 | ||
| 149 | -msgid "Activate" | ||
| 150 | -msgstr "Ativar" | ||
| 151 | - | ||
| 152 | -#: ../views/environment_notification_plugin_admin/index.html.erb:34 | ||
| 153 | -msgid "Edit" | ||
| 154 | -msgstr "Editar" | ||
| 155 | - | ||
| 156 | -#: ../views/environment_notification_plugin_admin/index.html.erb:35 | ||
| 157 | -msgid "Delete" | ||
| 158 | -msgstr "Remover" | ||
| 159 | - | ||
| 160 | -#: ../views/environment_notification_plugin_admin/index.html.erb:35 | ||
| 161 | -msgid "Do you want to delete this notification?" | ||
| 162 | -msgstr "Você quer remover essa notificação?" | ||
| 163 | - | ||
| 164 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:8 | ||
| 165 | -msgid "There are active notifications in this environment!" | ||
| 166 | -msgstr "Existem notificações ativas neste ambiente!" | ||
| 167 | - | ||
| 168 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:9 | ||
| 169 | -msgid "Manage all notifications here." | ||
| 170 | -msgstr "Gerencie todas as notificações aqui." | ||
| 171 | - | ||
| 172 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:26 | ||
| 173 | -msgid "Do not show anymore" | ||
| 174 | -msgstr "Não mostrar mais" | ||
| 175 | - | ||
| 176 | -#: ../views/environment_notification_plugin_admin/show_notification.html.erb:27 | ||
| 177 | -msgid "Hide for now" | ||
| 178 | -msgstr "Ocultar momentaneamente" |
plugins/environment_notification/public/environment_notification_plugin.js
| @@ -1,84 +0,0 @@ | @@ -1,84 +0,0 @@ | ||
| 1 | -(function($) { | ||
| 2 | - "use strict"; | ||
| 3 | - | ||
| 4 | - var environment_notification_plugin = { | ||
| 5 | - | ||
| 6 | - | ||
| 7 | - notificationBar: function() { | ||
| 8 | - var completeMessage = $(".environment-notification-plugin-notification-bar").remove(); | ||
| 9 | - $("#content-inner").before(completeMessage); | ||
| 10 | - }, | ||
| 11 | - | ||
| 12 | - closeNotification: function(){ | ||
| 13 | - var notification = $(this).parent(); | ||
| 14 | - var id = notification.attr("data-notification"); | ||
| 15 | - | ||
| 16 | - $.ajax({ | ||
| 17 | - url: noosfero_root()+"/admin/plugin/environment_notification/close_notification", | ||
| 18 | - type: "POST", | ||
| 19 | - data: {notification_id: id}, | ||
| 20 | - success: function(response) { | ||
| 21 | - notification.fadeOut(); | ||
| 22 | - } | ||
| 23 | - }); | ||
| 24 | - }, | ||
| 25 | - | ||
| 26 | - hideNotification: function(){ | ||
| 27 | - var notification = $(this).parent(); | ||
| 28 | - var id = notification.attr("data-notification"); | ||
| 29 | - | ||
| 30 | - $.ajax({ | ||
| 31 | - url: noosfero_root()+"/admin/plugin/environment_notification/hide_notification", | ||
| 32 | - type: "POST", | ||
| 33 | - data: {notification_id: id}, | ||
| 34 | - success: function(response) { | ||
| 35 | - notification.fadeOut(); | ||
| 36 | - } | ||
| 37 | - }); | ||
| 38 | - }, | ||
| 39 | - | ||
| 40 | - hideUserNotification: function(){ | ||
| 41 | - var ids = $.cookie('hide_notifications'); | ||
| 42 | - if(ids === null) { | ||
| 43 | - return null; | ||
| 44 | - } | ||
| 45 | - | ||
| 46 | - if(ids.startsWith('[') && ids.endsWith(']')){ | ||
| 47 | - ids = ids.substring(1, ids.length - 1); | ||
| 48 | - ids = ids.split(","); | ||
| 49 | - | ||
| 50 | - for(var i = 0; i < ids.length; i++) { | ||
| 51 | - $('[data-notification="' + ids[i] + '"]').fadeOut(); | ||
| 52 | - } | ||
| 53 | - } | ||
| 54 | - }, | ||
| 55 | - | ||
| 56 | - showPopup: function() { | ||
| 57 | - if($('.action-home-index').length > 0) { | ||
| 58 | - jQuery(function($){ | ||
| 59 | - $.colorbox({href: noosfero_root()+'/plugin/environment_notification/public/notifications_with_popup?previous_path=home'}); | ||
| 60 | - }); | ||
| 61 | - } | ||
| 62 | - else { | ||
| 63 | - jQuery(function($){ | ||
| 64 | - $.colorbox({href: noosfero_root()+'/plugin/environment_notification/public/notifications_with_popup'}); | ||
| 65 | - }); | ||
| 66 | - } | ||
| 67 | - }, | ||
| 68 | - }; | ||
| 69 | - | ||
| 70 | - $(document).ready(function(){ | ||
| 71 | - environment_notification_plugin.notificationBar(); | ||
| 72 | - $(".environment-notification-plugin-notification-bar .notification-close").on("click", environment_notification_plugin.closeNotification); | ||
| 73 | - $(".environment-notification-plugin-notification-bar .notification-hide").on("click", environment_notification_plugin.hideNotification); | ||
| 74 | - | ||
| 75 | - if($('.environment-notification-plugin-notification-bar').length > 0){ | ||
| 76 | - environment_notification_plugin.hideUserNotification(); | ||
| 77 | - } | ||
| 78 | - | ||
| 79 | - if($('.environment-notification-plugin-notification-bar [notification-display-popup="true"]').length > 0){ | ||
| 80 | - environment_notification_plugin.showPopup(); | ||
| 81 | - } | ||
| 82 | - }); | ||
| 83 | - | ||
| 84 | -})($); |
plugins/environment_notification/public/images/close.png
240 Bytes
plugins/environment_notification/public/images/greenhide.png
794 Bytes
plugins/environment_notification/public/images/hide.png
389 Bytes
plugins/environment_notification/public/images/redclose.png
552 Bytes
plugins/environment_notification/public/images/show.png
364 Bytes
plugins/environment_notification/public/style.css
| @@ -1,250 +0,0 @@ | @@ -1,250 +0,0 @@ | ||
| 1 | -.environment-notification-plugin-notification-bar{ | ||
| 2 | - display: block; | ||
| 3 | -} | ||
| 4 | - | ||
| 5 | -.environment-notification-plugin-notification-bar .notification:hover, | ||
| 6 | -.environment-notification-plugin-notification-notification-modal .notification:hover{ | ||
| 7 | - opacity: 0.8; | ||
| 8 | -} | ||
| 9 | - | ||
| 10 | -#environment-notification-plugin-notification-manager{ | ||
| 11 | - overflow: auto; | ||
| 12 | -} | ||
| 13 | - | ||
| 14 | -.environment-notification-plugin-notification-bar .notification .notification-close, | ||
| 15 | -.environment-notification-plugin-notification-notification-modal .notification .notification-close{ | ||
| 16 | - background: url(images/close.png) no-repeat; | ||
| 17 | - background-position: center; | ||
| 18 | - width: 20px; | ||
| 19 | - height: 20px; | ||
| 20 | -} | ||
| 21 | - | ||
| 22 | -.environment-notification-plugin-notification-bar .warningnotification, | ||
| 23 | -.environment-notification-plugin-notification-bar .informationnotification, | ||
| 24 | -.environment-notification-plugin-notification-bar .successnotification, | ||
| 25 | -.environment-notification-plugin-notification-bar .dangernotification, | ||
| 26 | -.environment-notification-plugin-notification-bar .adminnotification, | ||
| 27 | -.environment-notification-plugin-notification-notification-modal .warningnotification, | ||
| 28 | -.environment-notification-plugin-notification-notification-modal .informationnotification, | ||
| 29 | -.environment-notification-plugin-notification-notification-modal .successnotification, | ||
| 30 | -.environment-notification-plugin-notification-notification-modal .dangernotification{ | ||
| 31 | - margin-bottom: 10px; | ||
| 32 | - padding: 7px 10px; | ||
| 33 | - border-radius: 5px; | ||
| 34 | - border: 1px solid blue; | ||
| 35 | - font-size: 16px; | ||
| 36 | - color: white; | ||
| 37 | - overflow: auto; | ||
| 38 | -} | ||
| 39 | - | ||
| 40 | -.environment-notification-plugin-notification-bar .warningnotification p, | ||
| 41 | -.environment-notification-plugin-notification-bar .informationnotification p, | ||
| 42 | -.environment-notification-plugin-notification-bar .successnotification p, | ||
| 43 | -.environment-notification-plugin-notification-bar .dangernotification p, | ||
| 44 | -.environment-notification-plugin-notification-bar .adminnotification p, | ||
| 45 | -.environment-notification-plugin-notification-notification-modal .warningnotification p, | ||
| 46 | -.environment-notification-plugin-notification-notification-modal .informationnotification p, | ||
| 47 | -.environment-notification-plugin-notification-notification-modal .successnotification p, | ||
| 48 | -.environment-notification-plugin-notification-notification-modal .dangernotification p{ | ||
| 49 | - margin: 0px; | ||
| 50 | -} | ||
| 51 | - | ||
| 52 | -.environment-notification-plugin-notification-bar .warningnotification, | ||
| 53 | -.environment-notification-plugin-notification-notification-modal .warningnotification{ | ||
| 54 | - background: #fcf8e3; | ||
| 55 | - border: 1px solid #faebcc; | ||
| 56 | - color: #8a6d3b; | ||
| 57 | -} | ||
| 58 | - | ||
| 59 | -.environment-notification-plugin-notification-bar .warningnotification p a, | ||
| 60 | -.environment-notification-plugin-notification-notification-modal .warningnotification p a{ | ||
| 61 | - font-weight: bold; | ||
| 62 | - color: #8a6d3b; | ||
| 63 | -} | ||
| 64 | - | ||
| 65 | - | ||
| 66 | -.environment-notification-plugin-notification-bar .informationnotification, | ||
| 67 | -.environment-notification-plugin-notification-notification-modal .informationnotification{ | ||
| 68 | - background: #d9edf7; | ||
| 69 | - border: 1px solid #bce8f1; | ||
| 70 | - color: #31708f; | ||
| 71 | -} | ||
| 72 | - | ||
| 73 | -.environment-notification-plugin-notification-bar .informationnotification p a, | ||
| 74 | -.environment-notification-plugin-notification-notification-modal .informationnotification p a{ | ||
| 75 | - font-weight: bold; | ||
| 76 | - color: #31708f; | ||
| 77 | -} | ||
| 78 | - | ||
| 79 | -.environment-notification-plugin-notification-bar .successnotification, | ||
| 80 | -.environment-notification-plugin-notification-notification-modal .successnotification{ | ||
| 81 | - background: #dff0d8; | ||
| 82 | - border: 1px solid #d6e9c6; | ||
| 83 | - color: #3c763d; | ||
| 84 | -} | ||
| 85 | - | ||
| 86 | -.environment-notification-plugin-notification-bar .successnotification p a | ||
| 87 | -.environment-notification-plugin-notification-notification-modal .successnotification p a{ | ||
| 88 | - font-weight: bold; | ||
| 89 | - color: #3c763d; | ||
| 90 | -} | ||
| 91 | - | ||
| 92 | -.environment-notification-plugin-notification-bar .dangernotification, | ||
| 93 | -.environment-notification-plugin-notification-notification-modal .dangernotification{ | ||
| 94 | - background: #f2dede; | ||
| 95 | - border: 1px solid #ebccd1; | ||
| 96 | - color: #a94442; | ||
| 97 | -} | ||
| 98 | - | ||
| 99 | -.environment-notification-plugin-notification-bar .dangernotification p a, | ||
| 100 | -.environment-notification-plugin-notification-notification-modal .dangernotification p a{ | ||
| 101 | - font-weight: bold; | ||
| 102 | - color: #a94442; | ||
| 103 | -} | ||
| 104 | - | ||
| 105 | -.environment-notification-plugin-notification-bar .adminnotification, | ||
| 106 | -.environment-notification-plugin-notification-notification-modal .adminnotification{ | ||
| 107 | - background: #9a959a; | ||
| 108 | - border: 1px solid #9a959a; | ||
| 109 | -} | ||
| 110 | - | ||
| 111 | -.environment-notification-plugin-notification-bar .adminnotification p a, | ||
| 112 | -.environment-notification-plugin-notification-notification-modal .adminnotification p a{ | ||
| 113 | - font-weight: bold; | ||
| 114 | - color: white; | ||
| 115 | -} | ||
| 116 | - | ||
| 117 | -#environment-notification-plugin-notification-manager a.button.icon-deactivate{ | ||
| 118 | - background: url(images/hide.png) no-repeat; | ||
| 119 | - background-position: center; | ||
| 120 | -} | ||
| 121 | - | ||
| 122 | -#environment-notification-plugin-notification-manager a.button.icon-activate{ | ||
| 123 | - background: url(images/show.png) no-repeat; | ||
| 124 | - background-position: center; | ||
| 125 | -} | ||
| 126 | - | ||
| 127 | -#environment-notification-plugin-notification-manager .notification-line{ | ||
| 128 | - display: inline; | ||
| 129 | - padding-top: 10px; | ||
| 130 | - vertical-align: middle; | ||
| 131 | - border-bottom: 1px solid #ccc; | ||
| 132 | -} | ||
| 133 | - | ||
| 134 | -#environment-notification-plugin-notification-manager .notification-title-bar{ | ||
| 135 | - float: left; | ||
| 136 | - width: 100%; | ||
| 137 | - font-style: 14px; | ||
| 138 | - font-weight: 700; | ||
| 139 | - border-bottom: 2px solid black; | ||
| 140 | - padding: 9px 0; | ||
| 141 | -} | ||
| 142 | - | ||
| 143 | -#environment-notification-plugin-notification-manager .notification-title{ | ||
| 144 | - width: 80%; | ||
| 145 | - float: left; | ||
| 146 | - text-align: center; | ||
| 147 | -} | ||
| 148 | - | ||
| 149 | -.environment-notification-plugin-notification-notification-modal .notification-with-title{ | ||
| 150 | - margin-bottom: 0px; | ||
| 151 | -} | ||
| 152 | - | ||
| 153 | -.environment-notification-plugin-notification-notification-modal .notification .notification-title{ | ||
| 154 | - width: 100%; | ||
| 155 | - float: left; | ||
| 156 | - font-weight: bold; | ||
| 157 | - text-align: left; | ||
| 158 | -} | ||
| 159 | - | ||
| 160 | -.environment-notification-plugin-notification-notification-modal .notification-with-title-message{ | ||
| 161 | - width: 100%; | ||
| 162 | - float: left; | ||
| 163 | - border-radius: 3px; | ||
| 164 | - margin-bottom: 10px; | ||
| 165 | - background-color: #f5f5f5; | ||
| 166 | - font-size: 14px; | ||
| 167 | - overflow: auto; | ||
| 168 | -} | ||
| 169 | - | ||
| 170 | -.environment-notification-plugin-notification-notification-modal .notification-with-title-message p{ | ||
| 171 | - padding: 0px 7px; | ||
| 172 | -} | ||
| 173 | - | ||
| 174 | -.environment-notification-plugin-notification-notification-modal .notification-with-title-message p a{ | ||
| 175 | - color: black; | ||
| 176 | - font-weight: bold; | ||
| 177 | -} | ||
| 178 | - | ||
| 179 | - | ||
| 180 | -#environment-notification-plugin-notification-manager .action-title{ | ||
| 181 | - width: 20%; | ||
| 182 | - float: left; | ||
| 183 | - text-align: center; | ||
| 184 | -} | ||
| 185 | - | ||
| 186 | -#environment-notification-plugin-notification-manager .notification-action{ | ||
| 187 | - width: 18%; | ||
| 188 | - float: left; | ||
| 189 | - height: 30px; | ||
| 190 | - padding-top: 9px; | ||
| 191 | -} | ||
| 192 | - | ||
| 193 | -#environment-notification-plugin-notification-manager .main-bar .button, | ||
| 194 | -#environment-notification-plugin-notification-manager .notification-action .button{ | ||
| 195 | - border-radius: 3px; | ||
| 196 | -} | ||
| 197 | - | ||
| 198 | -#environment-notification-plugin-notification-manager .notification-message{ | ||
| 199 | - width: 82%; | ||
| 200 | - float: left; | ||
| 201 | -} | ||
| 202 | - | ||
| 203 | -#environment-notification-plugin-notification-manager .new-notification{ | ||
| 204 | - float: right; | ||
| 205 | - width: auto; | ||
| 206 | -} | ||
| 207 | - | ||
| 208 | -#environment-notification-plugin-notification-manager .back-button{ | ||
| 209 | - float: left; | ||
| 210 | -} | ||
| 211 | - | ||
| 212 | -#environment-notification-plugin-notification-manager .main-bar{ | ||
| 213 | - display: inline; | ||
| 214 | - width: 100%; | ||
| 215 | -} | ||
| 216 | - | ||
| 217 | -.environment-notification-plugin-notification-bar .notification .notification-message, | ||
| 218 | -.environment-notification-plugin-notification-notification-modal .notification .notification-message{ | ||
| 219 | - width: 90%; | ||
| 220 | - float: left; | ||
| 221 | -} | ||
| 222 | - | ||
| 223 | -.environment-notification-plugin-notification-bar .notification .notification-close{ | ||
| 224 | - background: url(images/redclose.png) no-repeat; | ||
| 225 | - background-position: center; | ||
| 226 | - width: 20px; | ||
| 227 | - height: 20px; | ||
| 228 | - float: right; | ||
| 229 | - cursor: pointer; | ||
| 230 | -} | ||
| 231 | - | ||
| 232 | -.environment-notification-plugin-notification-bar .notification .notification-hide{ | ||
| 233 | - background: url(images/greenhide.png) no-repeat; | ||
| 234 | - background-position: center; | ||
| 235 | - width: 20px; | ||
| 236 | - height: 20px; | ||
| 237 | - float: right; | ||
| 238 | - cursor: pointer; | ||
| 239 | -} | ||
| 240 | - | ||
| 241 | -.environment-notification-plugin-notification-notification-modal{ | ||
| 242 | - display: block; | ||
| 243 | - min-width: 400px; | ||
| 244 | - max-width: 700px; | ||
| 245 | -} | ||
| 246 | - | ||
| 247 | -.environment-notification-plugin-form .notification-variables-options{ | ||
| 248 | - font-style: italic; | ||
| 249 | - color: red; | ||
| 250 | -} |
plugins/environment_notification/test/functional/account_controller_test.rb
| @@ -1,36 +0,0 @@ | @@ -1,36 +0,0 @@ | ||
| 1 | -require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper' | ||
| 2 | -require 'account_controller' | ||
| 3 | - | ||
| 4 | -class AccountController | ||
| 5 | - include EnvironmentNotificationHelper | ||
| 6 | -end | ||
| 7 | - | ||
| 8 | -class AccountControllerTest < ActionController::TestCase | ||
| 9 | - def setup | ||
| 10 | - @controller = AccountController.new | ||
| 11 | - @request = ActionController::TestRequest.new | ||
| 12 | - @response = ActionController::TestResponse.new | ||
| 13 | - @person = create_user('person').person | ||
| 14 | - | ||
| 15 | - @environment = Environment.default | ||
| 16 | - @environment.enable_plugin('EnvironmentNotificationPlugin') | ||
| 17 | - @environment.save! | ||
| 18 | - | ||
| 19 | - login_as(@person.user.login) | ||
| 20 | - end | ||
| 21 | - | ||
| 22 | - attr_accessor :person | ||
| 23 | - | ||
| 24 | - should 'clean hide_notifications cookie after logout' do | ||
| 25 | - @request.cookies[:hide_notifications] = JSON.generate([1,2]) | ||
| 26 | - get :index | ||
| 27 | - assert !@request.cookies[:hide_notifications].blank? | ||
| 28 | - | ||
| 29 | - @request.cookies[:hide_notifications] = nil | ||
| 30 | - get :logout | ||
| 31 | - assert_nil session[:user] | ||
| 32 | - assert_response :redirect | ||
| 33 | - assert_equal 1, @controller.hide_notifications.count | ||
| 34 | - assert @controller.hide_notifications.include?(-1) | ||
| 35 | - end | ||
| 36 | -end |
plugins/environment_notification/test/functional/environment_notification_plugin_admin_controller_test.rb
| @@ -1,186 +0,0 @@ | @@ -1,186 +0,0 @@ | ||
| 1 | -require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper' | ||
| 2 | -require( | ||
| 3 | - File.expand_path(File.dirname(__FILE__)) + | ||
| 4 | - '/../../controllers/environment_notification_plugin_admin_controller' | ||
| 5 | -) | ||
| 6 | - | ||
| 7 | -class EnvironmentNotificationPluginAdminController; def rescue_action(e) raise e end; | ||
| 8 | -end | ||
| 9 | - | ||
| 10 | -class EnvironmentNotificationPluginAdminControllerTest < ActionController::TestCase | ||
| 11 | - def setup | ||
| 12 | - @controller = EnvironmentNotificationPluginAdminController.new | ||
| 13 | - @request = ActionController::TestRequest.new | ||
| 14 | - @response = ActionController::TestResponse.new | ||
| 15 | - @person = create_user('person').person | ||
| 16 | - | ||
| 17 | - @environment = Environment.default | ||
| 18 | - @environment.enable_plugin('EnvironmentNotificationPlugin') | ||
| 19 | - @environment.save! | ||
| 20 | - | ||
| 21 | - login_as(@person.user.login) | ||
| 22 | - end | ||
| 23 | - | ||
| 24 | - attr_accessor :person | ||
| 25 | - | ||
| 26 | - should 'an admin be able to create a notification' do | ||
| 27 | - @environment.add_admin(@person) | ||
| 28 | - post :new, :notifications => { | ||
| 29 | - :message => "Message", | ||
| 30 | - :active => true, | ||
| 31 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 32 | - } | ||
| 33 | - assert_redirected_to :action => 'index' | ||
| 34 | - notification = EnvironmentNotificationPlugin::EnvironmentNotification.last | ||
| 35 | - assert_equal "Message", notification.message | ||
| 36 | - assert notification.active | ||
| 37 | - assert_equal "EnvironmentNotificationPlugin::DangerNotification", notification.type | ||
| 38 | - end | ||
| 39 | - | ||
| 40 | - should 'an user not to be able to create a notification' do | ||
| 41 | - post :new, :notifications => { | ||
| 42 | - :message => "Message", | ||
| 43 | - :active => true, | ||
| 44 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 45 | - } | ||
| 46 | - assert_redirected_to :root | ||
| 47 | - assert_nil EnvironmentNotificationPlugin::EnvironmentNotification.last | ||
| 48 | - end | ||
| 49 | - | ||
| 50 | - should 'an admin be able to edit a notification' do | ||
| 51 | - @environment.add_admin(@person) | ||
| 52 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 53 | - :environment_id => @environment.id, | ||
| 54 | - :message => "Message", | ||
| 55 | - :active => true, | ||
| 56 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 57 | - ) | ||
| 58 | - post :edit, :id => @notification.id, :notifications => { | ||
| 59 | - :message => "Edited Message", | ||
| 60 | - :active => false, | ||
| 61 | - :type => "EnvironmentNotificationPlugin::WarningNotification" | ||
| 62 | - } | ||
| 63 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.last | ||
| 64 | - assert_redirected_to :action => 'index' | ||
| 65 | - assert_equal "Edited Message", @notification.message | ||
| 66 | - assert !@notification.active | ||
| 67 | - assert_equal "EnvironmentNotificationPlugin::WarningNotification", @notification.type | ||
| 68 | - end | ||
| 69 | - | ||
| 70 | - should 'an user not to be able to edit a notification' do | ||
| 71 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 72 | - :environment_id => @environment.id, | ||
| 73 | - :message => "Message", | ||
| 74 | - :active => true, | ||
| 75 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 76 | - ) | ||
| 77 | - post :edit, :notifications => { | ||
| 78 | - :message => "Edited Message", | ||
| 79 | - :active => false, | ||
| 80 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 81 | - } | ||
| 82 | - @notification.reload | ||
| 83 | - assert_redirected_to :root | ||
| 84 | - assert_equal "Message", @notification.message | ||
| 85 | - assert @notification.active | ||
| 86 | - end | ||
| 87 | - | ||
| 88 | - should 'an admin be able to destroy a notification' do | ||
| 89 | - @environment.add_admin(@person) | ||
| 90 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 91 | - :environment_id => @environment.id, | ||
| 92 | - :message => "Message", | ||
| 93 | - :active => true, | ||
| 94 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 95 | - ) | ||
| 96 | - delete :destroy, :id => @notification.id | ||
| 97 | - assert_nil EnvironmentNotificationPlugin::EnvironmentNotification.find_by_id(@notification.id) | ||
| 98 | - end | ||
| 99 | - | ||
| 100 | - should 'an user not to be able to destroy a notification' do | ||
| 101 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 102 | - :environment_id => @environment.id, | ||
| 103 | - :message => "Message", | ||
| 104 | - :active => true, | ||
| 105 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 106 | - ) | ||
| 107 | - delete :destroy, :id => @notification.id | ||
| 108 | - | ||
| 109 | - assert_redirected_to :root | ||
| 110 | - assert_not_nil EnvironmentNotificationPlugin::EnvironmentNotification.find_by_id(@notification.id) | ||
| 111 | - end | ||
| 112 | - | ||
| 113 | - should 'an admin be able to change Notification status' do | ||
| 114 | - @environment.add_admin(@person) | ||
| 115 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 116 | - :environment_id => @environment.id, | ||
| 117 | - :message => "Message", | ||
| 118 | - :active => true, | ||
| 119 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 120 | - ) | ||
| 121 | - post :change_status, :id => @notification.id | ||
| 122 | - assert_redirected_to :action => 'index' | ||
| 123 | - | ||
| 124 | - @notification.reload | ||
| 125 | - assert !@notification.active | ||
| 126 | - end | ||
| 127 | - | ||
| 128 | - should 'an user not be able to change Notification status' do | ||
| 129 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 130 | - :environment_id => @environment.id, | ||
| 131 | - :message => "Message", | ||
| 132 | - :active => true, | ||
| 133 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 134 | - ) | ||
| 135 | - post :change_status, :id => @notification.id | ||
| 136 | - assert_redirected_to :root | ||
| 137 | - | ||
| 138 | - @notification.reload | ||
| 139 | - assert @notification.active | ||
| 140 | - end | ||
| 141 | - | ||
| 142 | - should 'a logged in user be able to permanently hide notifications' do | ||
| 143 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 144 | - :environment_id => @environment.id, | ||
| 145 | - :message => "Message", | ||
| 146 | - :active => true, | ||
| 147 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 148 | - ) | ||
| 149 | - post :close_notification, :notification_id => @notification.id | ||
| 150 | - assert_equal "true", @response.body | ||
| 151 | - assert @notification.users.include?(@person.user) | ||
| 152 | - end | ||
| 153 | - | ||
| 154 | - should 'a logged in user be able to momentarily hide notifications' do | ||
| 155 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 156 | - :environment_id => @environment.id, | ||
| 157 | - :message => "Message", | ||
| 158 | - :active => true, | ||
| 159 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 160 | - ) | ||
| 161 | - | ||
| 162 | - @another_notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 163 | - :environment_id => @environment.id, | ||
| 164 | - :message => "Another Message", | ||
| 165 | - :active => true, | ||
| 166 | - :type => "EnvironmentNotificationPlugin::WarningNotification" | ||
| 167 | - ) | ||
| 168 | - post :hide_notification, :notification_id => @notification.id | ||
| 169 | - assert_equal "true", @response.body | ||
| 170 | - assert @controller.hide_notifications.include?(@notification.id) | ||
| 171 | - assert !@controller.hide_notifications.include?(@another_notification.id) | ||
| 172 | - end | ||
| 173 | - | ||
| 174 | - should 'not momentarily hide any notification if its id is not found' do | ||
| 175 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 176 | - :environment_id => @environment.id, | ||
| 177 | - :message => "Message", | ||
| 178 | - :active => true, | ||
| 179 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 180 | - ) | ||
| 181 | - | ||
| 182 | - post :hide_notification, :notification_id => nil | ||
| 183 | - assert_equal "false", @response.body | ||
| 184 | - assert !@controller.hide_notifications.include?(@notification.id) | ||
| 185 | - end | ||
| 186 | -end |
plugins/environment_notification/test/functional/home_controller_test.rb
| @@ -1,120 +0,0 @@ | @@ -1,120 +0,0 @@ | ||
| 1 | -require File.expand_path(File.dirname(__FILE__)) + '/../../../../test/test_helper' | ||
| 2 | -require 'home_controller' | ||
| 3 | - | ||
| 4 | -class HomeController; def rescue_action(e) raise e end; | ||
| 5 | -end | ||
| 6 | - | ||
| 7 | -class HomeControllerTest < ActionController::TestCase | ||
| 8 | - def setup | ||
| 9 | - @controller = HomeController.new | ||
| 10 | - @request = ActionController::TestRequest.new | ||
| 11 | - @response = ActionController::TestResponse.new | ||
| 12 | - @person = create_user('person').person | ||
| 13 | - | ||
| 14 | - @environment = Environment.default | ||
| 15 | - @environment.enable_plugin('EnvironmentNotificationPlugin') | ||
| 16 | - @environment.save! | ||
| 17 | - end | ||
| 18 | - | ||
| 19 | - attr_accessor :person | ||
| 20 | - | ||
| 21 | - should 'an active notification be displayed on home page for a logged in user' do | ||
| 22 | - login_as(@person.user.login) | ||
| 23 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 24 | - :environment_id => @environment.id, | ||
| 25 | - :message => "Hello, this is a Notification Message", | ||
| 26 | - :active => true, | ||
| 27 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 28 | - ) | ||
| 29 | - get :index | ||
| 30 | - assert_match /Hello, this is a Notification Message/, @response.body | ||
| 31 | - end | ||
| 32 | - | ||
| 33 | - | ||
| 34 | - should 'an active notification not be displayed on home page for unlogged user' do | ||
| 35 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 36 | - :environment_id => @environment.id, | ||
| 37 | - :message => "Hello, this is a Notification Message", | ||
| 38 | - :active => true, | ||
| 39 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 40 | - ) | ||
| 41 | - get :index | ||
| 42 | - assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 43 | - end | ||
| 44 | - | ||
| 45 | - should 'an active notification be displayed on home page for unlogged user' do | ||
| 46 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 47 | - :environment_id => @environment.id, | ||
| 48 | - :message => "Hello, this is a Notification Message", | ||
| 49 | - :display_to_all_users => true, | ||
| 50 | - :active => true, | ||
| 51 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 52 | - ) | ||
| 53 | - get :index | ||
| 54 | - assert_match /Hello, this is a Notification Message/, @response.body | ||
| 55 | - end | ||
| 56 | - | ||
| 57 | - should 'only display the notification with display_to_all_users option for unlogged user ' do | ||
| 58 | - @notification1 = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 59 | - :environment_id => @environment.id, | ||
| 60 | - :message => "Hello, this is an old Notification Message", | ||
| 61 | - :active => true, | ||
| 62 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 63 | - ) | ||
| 64 | - | ||
| 65 | - @notification2 = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 66 | - :environment_id => @environment.id, | ||
| 67 | - :message => "Hello, this is a new Notification Message", | ||
| 68 | - :display_to_all_users => true, | ||
| 69 | - :active => true, | ||
| 70 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 71 | - ) | ||
| 72 | - | ||
| 73 | - | ||
| 74 | - get :index | ||
| 75 | - assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 76 | - assert_match /Hello, this is a new Notification Message/, @response.body | ||
| 77 | - end | ||
| 78 | - | ||
| 79 | - should 'an inactive notification not be displayed on home page' do | ||
| 80 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 81 | - :environment_id => @environment.id, | ||
| 82 | - :message => "Hello, this is a Notification Message", | ||
| 83 | - :active => false, | ||
| 84 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 85 | - ) | ||
| 86 | - get :index | ||
| 87 | - assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 88 | - end | ||
| 89 | - | ||
| 90 | - | ||
| 91 | - should 'an active notification not be displayed to a logged in user after been closed by him' do | ||
| 92 | - login_as(@person.user.login) | ||
| 93 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 94 | - :environment_id => @environment.id, | ||
| 95 | - :message => "Hello, this is a Notification Message", | ||
| 96 | - :active => true, | ||
| 97 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 98 | - ) | ||
| 99 | - @notification.users << @person.user | ||
| 100 | - @notification.save! | ||
| 101 | - assert_equal true, @notification.users.include?(@person.user) | ||
| 102 | - get :index | ||
| 103 | - assert_no_match /Hello, this is a Notification Message/, @response.body | ||
| 104 | - end | ||
| 105 | - | ||
| 106 | - should 'a notification be displayed with a Popup' do | ||
| 107 | - login_as(@person.user.login) | ||
| 108 | - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create( | ||
| 109 | - :environment_id => @environment.id, | ||
| 110 | - :message => "Message", | ||
| 111 | - :display_popup => true, | ||
| 112 | - :active => true, | ||
| 113 | - :type => "EnvironmentNotificationPlugin::DangerNotification" | ||
| 114 | - ) | ||
| 115 | - assert_equal true, @notification.display_popup? | ||
| 116 | - | ||
| 117 | - get :index | ||
| 118 | - assert_no_match /div id="cboxWrapper"/, @response.body | ||
| 119 | - end | ||
| 120 | -end |
plugins/environment_notification/test/unit/environment_notification_helper_test.rb
| @@ -1,46 +0,0 @@ | @@ -1,46 +0,0 @@ | ||
| 1 | -require 'test_helper' | ||
| 2 | - | ||
| 3 | -class EnvironmentNotificationHelperTest < ActiveSupport::TestCase | ||
| 4 | - def setup | ||
| 5 | - @env = Environment.default | ||
| 6 | - @env.enable_plugin('EnvironmentNotificationPlugin') | ||
| 7 | - | ||
| 8 | - @user = User.create!(:environment_id => @env.id, :email => "user@domain.com", :login => "new_user", :password => "test", :password_confirmation => "test", :name => "UserName") | ||
| 9 | - end | ||
| 10 | - | ||
| 11 | - should 'substitute all email variables to the current user email' do | ||
| 12 | - message = "Hello user with email %{email}! please, update your current email (%{email})." | ||
| 13 | - | ||
| 14 | - new_message = EnvironmentNotificationHelper.substitute_variables(message, @user) | ||
| 15 | - | ||
| 16 | - assert message != new_message | ||
| 17 | - assert_equal new_message, "Hello user with email user@domain.com! please, update your current email (user@domain.com)." | ||
| 18 | - end | ||
| 19 | - | ||
| 20 | - should 'not substitute emails variables if there is no current user' do | ||
| 21 | - message = "Hello user with email %{email}! please, update your current email (%{email})." | ||
| 22 | - | ||
| 23 | - new_message = EnvironmentNotificationHelper.substitute_variables(message, nil) | ||
| 24 | - | ||
| 25 | - assert_equal message, new_message | ||
| 26 | - assert_not_includes new_message, "user@domain.com" | ||
| 27 | - end | ||
| 28 | - | ||
| 29 | - should 'substitute all name variables to the current user name' do | ||
| 30 | - message = "Hello %{name}! is %{name} your real name?." | ||
| 31 | - | ||
| 32 | - new_message = EnvironmentNotificationHelper.substitute_variables(message, @user) | ||
| 33 | - | ||
| 34 | - assert message != new_message | ||
| 35 | - assert_equal new_message, "Hello UserName! is UserName your real name?." | ||
| 36 | - end | ||
| 37 | - | ||
| 38 | - should 'not substitute name variables if there is no current user' do | ||
| 39 | - message = "Hello %{name}! is %{name} your real name?." | ||
| 40 | - | ||
| 41 | - new_message = EnvironmentNotificationHelper.substitute_variables(message, nil) | ||
| 42 | - | ||
| 43 | - assert_equal message, new_message | ||
| 44 | - assert_not_includes new_message, "UserName" | ||
| 45 | - end | ||
| 46 | -end |
plugins/environment_notification/test/unit/environment_notification_test.rb
| @@ -1,162 +0,0 @@ | @@ -1,162 +0,0 @@ | ||
| 1 | -require_relative '../../../../test/test_helper' | ||
| 2 | - | ||
| 3 | -class EnvironmentNotificationTest < ActiveSupport::TestCase | ||
| 4 | - | ||
| 5 | - def setup | ||
| 6 | - @env = Environment.default | ||
| 7 | - @env.enable_plugin('EnvironmentNotificationPlugin') | ||
| 8 | - | ||
| 9 | - User.destroy_all | ||
| 10 | - EnvironmentNotificationPlugin::EnvironmentNotification.destroy_all | ||
| 11 | - EnvironmentNotificationsUser.destroy_all | ||
| 12 | - | ||
| 13 | - @user = User.create!(:environment_id => @env.id, :email => "user@domain.com", :login => "new_user", :password => "test", :password_confirmation => "test") | ||
| 14 | - @danger_notification = EnvironmentNotificationPlugin::DangerNotification.create!( | ||
| 15 | - :environment_id => @env.id, | ||
| 16 | - :message => "Danger Message", | ||
| 17 | - :active => true, | ||
| 18 | - ) | ||
| 19 | - | ||
| 20 | - @warning_notification = EnvironmentNotificationPlugin::WarningNotification.create!( | ||
| 21 | - :environment_id => @env.id, | ||
| 22 | - :message => "Warning Message", | ||
| 23 | - :active => true, | ||
| 24 | - ) | ||
| 25 | - | ||
| 26 | - @information_notification = EnvironmentNotificationPlugin::InformationNotification.create!( | ||
| 27 | - :environment_id => @env.id, | ||
| 28 | - :message => "Information Message", | ||
| 29 | - :active => true, | ||
| 30 | - ) | ||
| 31 | - end | ||
| 32 | - | ||
| 33 | - should 'get all notifications that a user did not closed' do | ||
| 34 | - @information_notification.users << @user | ||
| 35 | - | ||
| 36 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(@env, @user, nil) | ||
| 37 | - | ||
| 38 | - assert notifications.include?(@danger_notification) | ||
| 39 | - assert notifications.include?(@warning_notification) | ||
| 40 | - assert !notifications.include?(@information_notification) | ||
| 41 | - end | ||
| 42 | - | ||
| 43 | - should 'get only notifications configured to be displayed to all users' do | ||
| 44 | - @information_notification.display_to_all_users = true | ||
| 45 | - @information_notification.save! | ||
| 46 | - | ||
| 47 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(@env, nil, nil) | ||
| 48 | - | ||
| 49 | - assert !notifications.include?(@danger_notification) | ||
| 50 | - assert !notifications.include?(@warning_notification) | ||
| 51 | - assert notifications.include?(@information_notification) | ||
| 52 | - end | ||
| 53 | - | ||
| 54 | - should 'get only notifications configured to be displayed to all users and in all pages' do | ||
| 55 | - @information_notification.display_to_all_users = true | ||
| 56 | - @information_notification.display_only_in_homepage = true | ||
| 57 | - @information_notification.save! | ||
| 58 | - | ||
| 59 | - @danger_notification.display_to_all_users = true | ||
| 60 | - @danger_notification.save! | ||
| 61 | - | ||
| 62 | - @warning_notification.display_only_in_homepage = true | ||
| 63 | - @warning_notification.save! | ||
| 64 | - | ||
| 65 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(@env, nil, 'not_home') | ||
| 66 | - | ||
| 67 | - assert notifications.include?(@danger_notification) | ||
| 68 | - assert !notifications.include?(@warning_notification) | ||
| 69 | - assert !notifications.include?(@information_notification) | ||
| 70 | - end | ||
| 71 | - | ||
| 72 | - should 'get only notifications configured to be displayed in all pages' do | ||
| 73 | - @danger_notification.display_to_all_users = true | ||
| 74 | - @danger_notification.display_only_in_homepage = true | ||
| 75 | - @danger_notification.save! | ||
| 76 | - | ||
| 77 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(@env, @user, "not_home") | ||
| 78 | - | ||
| 79 | - assert !notifications.include?(@danger_notification) | ||
| 80 | - assert notifications.include?(@warning_notification) | ||
| 81 | - assert notifications.include?(@information_notification) | ||
| 82 | - | ||
| 83 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(@env, nil, "home") | ||
| 84 | - | ||
| 85 | - assert notifications.include?(@danger_notification) | ||
| 86 | - assert !notifications.include?(@warning_notification) | ||
| 87 | - assert !notifications.include?(@information_notification) | ||
| 88 | - end | ||
| 89 | - | ||
| 90 | - should 'get only notifications configured to be displayed to all users and in all pages and not closed by an user' do | ||
| 91 | - @information_notification.display_to_all_users = true | ||
| 92 | - @information_notification.save! | ||
| 93 | - | ||
| 94 | - @danger_notification.display_to_all_users = true | ||
| 95 | - @danger_notification.display_only_in_homepage = true | ||
| 96 | - @danger_notification.save! | ||
| 97 | - | ||
| 98 | - @warning_notification.display_to_all_users = true | ||
| 99 | - @warning_notification.save! | ||
| 100 | - | ||
| 101 | - @warning_notification.users << @user | ||
| 102 | - | ||
| 103 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(@env, @user, 'not_home') | ||
| 104 | - | ||
| 105 | - assert !notifications.include?(@danger_notification) | ||
| 106 | - assert !notifications.include?(@warning_notification) | ||
| 107 | - assert notifications.include?(@information_notification) | ||
| 108 | - end | ||
| 109 | - | ||
| 110 | - should 'get only active notifications' do | ||
| 111 | - @information_notification.active = false | ||
| 112 | - @information_notification.save! | ||
| 113 | - | ||
| 114 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(@env, @user, 'home') | ||
| 115 | - | ||
| 116 | - assert notifications.include?(@danger_notification) | ||
| 117 | - assert notifications.include?(@warning_notification) | ||
| 118 | - assert !notifications.include?(@information_notification) | ||
| 119 | - end | ||
| 120 | - | ||
| 121 | - should 'get only notifications with popup' do | ||
| 122 | - @information_notification.display_popup = true | ||
| 123 | - @information_notification.display_to_all_users = true | ||
| 124 | - @information_notification.save! | ||
| 125 | - | ||
| 126 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.with_popup(@env, @user, 'home') | ||
| 127 | - | ||
| 128 | - assert !notifications.include?(@danger_notification) | ||
| 129 | - assert !notifications.include?(@warning_notification) | ||
| 130 | - assert notifications.include?(@information_notification) | ||
| 131 | - | ||
| 132 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.with_popup(@env, nil, nil) | ||
| 133 | - | ||
| 134 | - assert !notifications.include?(@danger_notification) | ||
| 135 | - assert !notifications.include?(@warning_notification) | ||
| 136 | - assert notifications.include?(@information_notification) | ||
| 137 | - end | ||
| 138 | - | ||
| 139 | - should 'get only notifications with popup not closed by an user' do | ||
| 140 | - @information_notification.display_popup = true | ||
| 141 | - @information_notification.display_to_all_users = true | ||
| 142 | - @information_notification.save! | ||
| 143 | - | ||
| 144 | - @danger_notification.display_popup = true | ||
| 145 | - @danger_notification.display_to_all_users = true | ||
| 146 | - @danger_notification.save! | ||
| 147 | - | ||
| 148 | - @danger_notification.users << @user | ||
| 149 | - | ||
| 150 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.with_popup(@env, @user, 'home') | ||
| 151 | - | ||
| 152 | - assert !notifications.include?(@danger_notification) | ||
| 153 | - assert !notifications.include?(@warning_notification) | ||
| 154 | - assert notifications.include?(@information_notification) | ||
| 155 | - | ||
| 156 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.with_popup(@env, nil, nil) | ||
| 157 | - | ||
| 158 | - assert notifications.include?(@danger_notification) | ||
| 159 | - assert !notifications.include?(@warning_notification) | ||
| 160 | - assert notifications.include?(@information_notification) | ||
| 161 | - end | ||
| 162 | -end |
plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb
| @@ -1,39 +0,0 @@ | @@ -1,39 +0,0 @@ | ||
| 1 | -<div class="environment-notification-plugin-form"> | ||
| 2 | - | ||
| 3 | - <% abstract_options = {:value => @notification.message, :style => 'width: 100%; height: 200px;', :class => 'mceEditor'} %> | ||
| 4 | - | ||
| 5 | - <%= button :back, _('Back'), :controller => 'environment_notification_plugin_admin' %> | ||
| 6 | - | ||
| 7 | - <%= form_for :notifications do |f| %> | ||
| 8 | - | ||
| 9 | - <%= render :file => 'shared/tiny_mce', :locals => {:mode => 'restricted'} %> | ||
| 10 | - | ||
| 11 | - <%= labelled_form_field(_("Optional Title:"), f.text_field(:title, value: @notification.title)) %> | ||
| 12 | - | ||
| 13 | - <%= labelled_form_field(_("Enter your message here:"), f.text_area(:message, abstract_options)) %> | ||
| 14 | - <small class="notification-variables-options"> | ||
| 15 | - <%= _("Obs: You can use %{name} and %{email} variables to put the user's name and email in the message.") %> | ||
| 16 | - </small> | ||
| 17 | - | ||
| 18 | - <%= labelled_form_field(_('Notifications Status'), select(:notifications, :active, options_for_select_with_title({"Active" => true, "Inactive" => false}, @notification.active))) %> | ||
| 19 | - | ||
| 20 | - <%= labelled_form_field(_('Notifications Color/Type'), select(:notifications, :type, options_for_select_with_title({_("Blue - Information") => "EnvironmentNotificationPlugin::InformationNotification", _("Yellow - Warning") => "EnvironmentNotificationPlugin::WarningNotification", _("Green - Success") => "EnvironmentNotificationPlugin::SuccessNotification", _("Red - Danger") => "EnvironmentNotificationPlugin::DangerNotification"}, @notification.type))) %> | ||
| 21 | - | ||
| 22 | - <div> | ||
| 23 | - <%= labelled_check_box(_("Display only in the homepage"), 'notifications[display_only_in_homepage]', '1', @notification.display_only_in_homepage?) %> | ||
| 24 | - </div> | ||
| 25 | - | ||
| 26 | - <div> | ||
| 27 | - <%= labelled_check_box(_("Display to not logged users too"), 'notifications[display_to_all_users]', '1', @notification.display_to_all_users?) %> | ||
| 28 | - </div> | ||
| 29 | - | ||
| 30 | - <div> | ||
| 31 | - <%= labelled_check_box(_("Display popup until user close the notification"), 'notifications[display_popup]', '1', @notification.display_popup?) %> | ||
| 32 | - </div> | ||
| 33 | - | ||
| 34 | - <% button_bar do %> | ||
| 35 | - <%= submit_button 'save', _('Save'), :cancel => { :action => 'index' } %> | ||
| 36 | - <% end %> | ||
| 37 | - | ||
| 38 | - <% end %> | ||
| 39 | -</div> |
plugins/environment_notification/views/environment_notification_plugin_admin/edit.html.erb
| @@ -1 +0,0 @@ | @@ -1 +0,0 @@ | ||
| 1 | -<%= render :partial => "form" %> |
plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb
| @@ -1,40 +0,0 @@ | @@ -1,40 +0,0 @@ | ||
| 1 | -<div id="environment-notification-plugin-notification-manager"> | ||
| 2 | - <div class="notification-manager-title"> | ||
| 3 | - <h1><%= _("Environment Notifications") %></h1> | ||
| 4 | - </div> | ||
| 5 | - <div class="buttons-bar"> | ||
| 6 | - <div class="new-notification"> | ||
| 7 | - <%= button :new, _('New Notification'), {:action => :new}, :method => :get %> | ||
| 8 | - </div> | ||
| 9 | - <div class="back-button"> | ||
| 10 | - <%= button :back, _('Back to control panel'), {:controller => 'admin_panel', :action => :index}, :method => :get %> | ||
| 11 | - </div> | ||
| 12 | - </div> | ||
| 13 | - | ||
| 14 | - <div class="notification-title-bar"> | ||
| 15 | - <div class="notification-title"> | ||
| 16 | - <%= _('Notifications') %> | ||
| 17 | - </div> | ||
| 18 | - <div class="action-title"> | ||
| 19 | - <%= _('Actions') %> | ||
| 20 | - </div> | ||
| 21 | - </div> | ||
| 22 | - | ||
| 23 | - <% @notifications.each do |notification| %> | ||
| 24 | - <div class="notification-line"> | ||
| 25 | - <div class="notification-message"> | ||
| 26 | - <%= truncate(notification.message, length: 50) %> | ||
| 27 | - </div> | ||
| 28 | - <div class="notification-action"> | ||
| 29 | - <% if notification.active? %> | ||
| 30 | - <%= button_without_text :deactivate, _('Deactivate'), {:action => :change_status, :id => notification}, :method => :post, :confirm => _("Do you want to change the status of this notification?") %> | ||
| 31 | - <% else %> | ||
| 32 | - <%= button_without_text :activate, _('Activate'), {:action => :change_status, :id => notification}, :method => :post, :confirm => _("Do you want to change the status of this notification?") %> | ||
| 33 | - <% end %> | ||
| 34 | - <%= button_without_text :edit, _('Edit'), {:action => 'edit', :id => notification.id} if !remove_content_button(:edit, notification) %> | ||
| 35 | - <%= button_without_text :delete, _('Delete'), {:action => :destroy, :id => notification}, :method => :delete, :confirm => _("Do you want to delete this notification?") %> | ||
| 36 | - </div> | ||
| 37 | - </div> | ||
| 38 | - <% end %> | ||
| 39 | -</div> | ||
| 40 | - |
plugins/environment_notification/views/environment_notification_plugin_admin/new.html.erb
| @@ -1 +0,0 @@ | @@ -1 +0,0 @@ | ||
| 1 | -<%= render :partial => "form" %> |
plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb
| @@ -1,31 +0,0 @@ | @@ -1,31 +0,0 @@ | ||
| 1 | -<% if current_user && current_user.person.is_admin? %> | ||
| 2 | - <% active_notifications = EnvironmentNotificationPlugin::EnvironmentNotification.active(environment) %> | ||
| 3 | - <% unless active_notifications.blank? %> | ||
| 4 | - <div class="environment-notification-plugin-notification-bar"> | ||
| 5 | - <div class="adminnotification notification"> | ||
| 6 | - <div class="notification-message"> | ||
| 7 | - <p> | ||
| 8 | - <%= _("There are active notifications in this environment!") %> | ||
| 9 | - <%= link_to _("Manage all notifications here."), EnvironmentNotificationPlugin.admin_url %> | ||
| 10 | - </p> | ||
| 11 | - </div> | ||
| 12 | - </div> | ||
| 13 | - </div> | ||
| 14 | - <% end %> | ||
| 15 | -<% end %> | ||
| 16 | - | ||
| 17 | -<% @notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(environment, current_user, controller_path).where("id NOT IN (?)", hide_notifications) %> | ||
| 18 | - | ||
| 19 | -<div class="environment-notification-plugin-notification-bar"> | ||
| 20 | - <% @notifications.each do |notification| %> | ||
| 21 | - <div class="<%= notification.type.gsub("EnvironmentNotificationPlugin::", "").downcase %> notification" data-notification="<%=notification.id%>" notification-display-popup="<%=notification.display_popup?%>"> | ||
| 22 | - <div class="notification-message"> | ||
| 23 | - <%= EnvironmentNotificationHelper.substitute_variables(notification.message, current_user) %> | ||
| 24 | - </div> | ||
| 25 | - <% if logged_in? %> | ||
| 26 | - <div class="notification-close" title="<%= _('Do not show anymore') %>"></div> | ||
| 27 | - <div class="notification-hide" title="<%= _('Hide for now') %>"></div> | ||
| 28 | - <% end %> | ||
| 29 | - </div> | ||
| 30 | - <% end %> | ||
| 31 | -</div> |
plugins/environment_notification/views/environment_notification_plugin_public/notifications_with_popup.html.erb
| @@ -1,22 +0,0 @@ | @@ -1,22 +0,0 @@ | ||
| 1 | -<% @notifications = EnvironmentNotificationPlugin::EnvironmentNotification.with_popup(environment, current_user, @previous_path).where("id NOT IN (?)", @hide_notifications) %> | ||
| 2 | - | ||
| 3 | -<div class="environment-notification-plugin-notification-notification-modal"> | ||
| 4 | - <% @notifications.each do |notification| %> | ||
| 5 | - <% if !notification.title.blank? %> | ||
| 6 | - <div class="<%= notification.type.gsub("EnvironmentNotificationPlugin::", "").downcase %> notification notification-with-title" data-notification="<%=notification.id%>"> | ||
| 7 | - <div class="notification-title"> | ||
| 8 | - <%= notification.title %> | ||
| 9 | - </div> | ||
| 10 | - </div> | ||
| 11 | - <div class="notification-message notification-with-title-message"> | ||
| 12 | - <%= EnvironmentNotificationHelper.substitute_variables(notification.message, current_user) %> | ||
| 13 | - </div> | ||
| 14 | - <% else %> | ||
| 15 | - <div class="<%= notification.type.gsub("EnvironmentNotificationPlugin::", "").downcase %> notification notification-without-title" data-notification="<%=notification.id%>"> | ||
| 16 | - <div class="notification-message"> | ||
| 17 | - <%= EnvironmentNotificationHelper.substitute_variables(notification.message, current_user) %> | ||
| 18 | - </div> | ||
| 19 | - </div> | ||
| 20 | - <% end %> | ||
| 21 | - <% end %> | ||
| 22 | -</div> |