Commit 5a45530a29a4bdd9e7ada290b6826db28245ad6e

Authored by Braulio Bhavamitra
2 parents ce257d5c 283dd97a

Merge branch 'community_notifications' into 'master'

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;
 - 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>

fixes migration and translations

See merge request !838
Showing 83 changed files with 1856 additions and 1666 deletions   Show diff stats
plugins/admin_notifications/README 0 → 100644
... ... @@ -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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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/lib/ext/environment.rb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +require_dependency 'environment'
  2 +
  3 +class Environment
  4 + has_many :notifications, class_name: 'AdminNotificationsPlugin::Notification', :as => :target
  5 +end
... ...
plugins/admin_notifications/lib/ext/organization.rb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +require_dependency 'organization'
  2 +
  3 +class Organization
  4 + has_many :notifications, class_name: 'AdminNotificationsPlugin::Notification', :as => :target
  5 +end
... ...
plugins/admin_notifications/lib/ext/user.rb 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +require_dependency 'user'
  2 +
  3 +class User
  4 + has_many :notifications_users, :class_name => 'AdminNotificationsPlugin::NotificationsUser'
  5 + has_many :notifications, :through => :notifications_users
  6 +end
... ...
plugins/admin_notifications/models/admin_notifications_plugin/danger_notification.rb 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +class AdminNotificationsPlugin::DangerNotification < AdminNotificationsPlugin::Notification
  2 +end
... ...
plugins/admin_notifications/models/admin_notifications_plugin/information_notification.rb 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +class AdminNotificationsPlugin::InformationNotification < AdminNotificationsPlugin::Notification
  2 +end
... ...
plugins/admin_notifications/models/admin_notifications_plugin/notification.rb 0 → 100644
... ... @@ -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
... ... @@ -0,0 +1,2 @@
  1 +class AdminNotificationsPlugin::SuccessNotification < AdminNotificationsPlugin::Notification
  2 +end
... ...
plugins/admin_notifications/models/admin_notifications_plugin/warning_notification.rb 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +class AdminNotificationsPlugin::WarningNotification < AdminNotificationsPlugin::Notification
  2 +end
... ...
plugins/admin_notifications/po/notification.pot 0 → 100644
... ... @@ -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 @@
  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 +})($);
... ...
plugins/admin_notifications/public/images/close.png 0 → 100644

240 Bytes

plugins/admin_notifications/public/images/greenhide.png 0 → 100644

794 Bytes

plugins/admin_notifications/public/images/hide.png 0 → 100644

389 Bytes

plugins/admin_notifications/public/images/redclose.png 0 → 100644

552 Bytes

plugins/admin_notifications/public/images/show.png 0 → 100644

364 Bytes

plugins/admin_notifications/public/style.css 0 → 100644
... ... @@ -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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  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 @@
  1 +<%= render :partial => "shared/form" %>
... ...
plugins/admin_notifications/views/admin_notifications_plugin_admin/index.html.erb 0 → 100644
... ... @@ -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 @@
  1 +<%= render :partial => "shared/form" %>
... ...
plugins/admin_notifications/views/admin_notifications_plugin_myprofile/edit.html.erb 0 → 100644
... ... @@ -0,0 +1 @@
  1 +<%= render :partial => "shared/form" %>
... ...
plugins/admin_notifications/views/admin_notifications_plugin_myprofile/index.html.erb 0 → 100644
... ... @@ -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 @@
  1 +<%= render :partial => "shared/form" %>
... ...
plugins/admin_notifications/views/admin_notifications_plugin_public/notifications_with_popup.html.erb 0 → 100644
... ... @@ -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>
... ...
plugins/admin_notifications/views/shared/_form.html.erb 0 → 100644
... ... @@ -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 @@
  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 @@
  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>
... ...
plugins/environment_notification/README 0 → 100644
... ... @@ -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   -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   -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   -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 @@
  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   -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   -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 1 class EnvironmentNotificationPlugin < Noosfero::Plugin
2   -
3 2 def self.plugin_name
4   - "Environment Notifications Plugin"
  3 + "Environment Notifications Plugin *DEPRECATED*"
5 4 end
6 5  
7 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 8 end
46 9 end
... ...
plugins/environment_notification/lib/environment_notifications_user.rb
... ... @@ -1,10 +0,0 @@
1   -class EnvironmentNotificationsUser < ApplicationRecord
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
... ... @@ -1,5 +0,0 @@
1   -require_dependency 'environment'
2   -
3   -class Environment
4   - has_many :environment_notifications, class_name: 'EnvironmentNotificationPlugin::EnvironmentNotification'
5   -end
plugins/environment_notification/lib/ext/user.rb
... ... @@ -1,6 +0,0 @@
1   -require_dependency 'user'
2   -
3   -class User
4   - has_many :environment_notifications_users
5   - has_many :environment_notifications, :through => :environment_notifications_users
6   -end
plugins/environment_notification/models/environment_notification_plugin/danger_notification.rb
... ... @@ -1,2 +0,0 @@
1   -class EnvironmentNotificationPlugin::DangerNotification < EnvironmentNotificationPlugin::EnvironmentNotification
2   -end
plugins/environment_notification/models/environment_notification_plugin/environment_notification.rb
... ... @@ -1,50 +0,0 @@
1   -class EnvironmentNotificationPlugin::EnvironmentNotification < ApplicationRecord
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, -> environment { where 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
... ... @@ -1,2 +0,0 @@
1   -class EnvironmentNotificationPlugin::InformationNotification < EnvironmentNotificationPlugin::EnvironmentNotification
2   -end
plugins/environment_notification/models/environment_notification_plugin/success_notification.rb
... ... @@ -1,2 +0,0 @@
1   -class EnvironmentNotificationPlugin::SuccessNotification < EnvironmentNotificationPlugin::EnvironmentNotification
2   -end
plugins/environment_notification/models/environment_notification_plugin/warning_notification.rb
... ... @@ -1,2 +0,0 @@
1   -class EnvironmentNotificationPlugin::WarningNotification < EnvironmentNotificationPlugin::EnvironmentNotification
2   -end
plugins/environment_notification/po/environment_notification.pot
... ... @@ -1,177 +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.3~rc2-1-ga15645d\n"
10   -"POT-Creation-Date: 2015-10-30 16:35-0300\n"
11   -"PO-Revision-Date: 2015-09-14 12:12-0000\n"
12   -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13   -"Language-Team: LANGUAGE <LL@li.org>\n"
14   -"Language: \n"
15   -"MIME-Version: 1.0\n"
16   -"Content-Type: text/plain; charset=UTF-8\n"
17   -"Content-Transfer-Encoding: 8bit\n"
18   -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
19   -
20   -#: plugins/environment_notification/lib/environment_notification_plugin.rb:8
21   -msgid "A plugin for environment notifications."
22   -msgstr ""
23   -
24   -#: plugins/environment_notification/lib/environment_notification_plugin.rb:29
25   -msgid "Notification Manager"
26   -msgstr ""
27   -
28   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:19
29   -msgid "Notification successfully created"
30   -msgstr ""
31   -
32   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:22
33   -msgid "Notification couldn't be created"
34   -msgstr ""
35   -
36   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:31
37   -msgid "The notification was deleted."
38   -msgstr ""
39   -
40   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:33
41   -msgid "Could not remove the notification"
42   -msgstr ""
43   -
44   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:43
45   -msgid "The notification was edited."
46   -msgstr ""
47   -
48   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:45
49   -msgid "Could not edit the notification."
50   -msgstr ""
51   -
52   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:57
53   -msgid "The status of the notification was changed."
54   -msgstr ""
55   -
56   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:59
57   -msgid "Could not change the status of the notification."
58   -msgstr ""
59   -
60   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:8
61   -msgid "There are active notifications in this environment!"
62   -msgstr ""
63   -
64   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:9
65   -msgid "Manage all notifications here."
66   -msgstr ""
67   -
68   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:26
69   -msgid "Do not show anymore"
70   -msgstr ""
71   -
72   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:27
73   -msgid "Hide for now"
74   -msgstr ""
75   -
76   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:4
77   -msgid "Back"
78   -msgstr ""
79   -
80   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:10
81   -msgid "Optional Title:"
82   -msgstr ""
83   -
84   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:12
85   -msgid "Enter your message here:"
86   -msgstr ""
87   -
88   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:14
89   -msgid ""
90   -"Obs: You can use %{name} and %{email} variables to put the user's name and "
91   -"email in the message."
92   -msgstr ""
93   -
94   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:17
95   -msgid "Notifications Status"
96   -msgstr ""
97   -
98   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
99   -msgid "Notifications Color/Type"
100   -msgstr ""
101   -
102   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
103   -msgid "Blue - Information"
104   -msgstr ""
105   -
106   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
107   -msgid "Yellow - Warning"
108   -msgstr ""
109   -
110   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
111   -msgid "Green - Success"
112   -msgstr ""
113   -
114   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
115   -msgid "Red - Danger"
116   -msgstr ""
117   -
118   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:22
119   -msgid "Display only in the homepage"
120   -msgstr ""
121   -
122   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:26
123   -msgid "Display to not logged users too"
124   -msgstr ""
125   -
126   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:30
127   -msgid "Display popup until user close the notification"
128   -msgstr ""
129   -
130   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:34
131   -msgid "Save"
132   -msgstr ""
133   -
134   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:3
135   -msgid "Environment Notifications"
136   -msgstr ""
137   -
138   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:7
139   -msgid "New Notification"
140   -msgstr ""
141   -
142   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:10
143   -msgid "Back to control panel"
144   -msgstr ""
145   -
146   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:16
147   -msgid "Notifications"
148   -msgstr ""
149   -
150   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:19
151   -msgid "Actions"
152   -msgstr ""
153   -
154   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:30
155   -msgid "Deactivate"
156   -msgstr ""
157   -
158   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:30
159   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:32
160   -msgid "Do you want to change the status of this notification?"
161   -msgstr ""
162   -
163   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:32
164   -msgid "Activate"
165   -msgstr ""
166   -
167   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:34
168   -msgid "Edit"
169   -msgstr ""
170   -
171   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:35
172   -msgid "Delete"
173   -msgstr ""
174   -
175   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:35
176   -msgid "Do you want to delete this notification?"
177   -msgstr ""
plugins/environment_notification/po/pt/environment_notification.po
... ... @@ -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: 2015-10-30 16:35-0300\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   -#: plugins/environment_notification/lib/environment_notification_plugin.rb:8
20   -msgid "A plugin for environment notifications."
21   -msgstr "Plugin para notificações do ambiente"
22   -
23   -#: plugins/environment_notification/lib/environment_notification_plugin.rb:29
24   -msgid "Notification Manager"
25   -msgstr "Gerenciador de Notificações"
26   -
27   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:19
28   -msgid "Notification successfully created"
29   -msgstr "Notificação criada com sucesso"
30   -
31   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:22
32   -msgid "Notification couldn't be created"
33   -msgstr "Não foi possível criar notificação"
34   -
35   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:31
36   -msgid "The notification was deleted."
37   -msgstr "A notificação foi removida"
38   -
39   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:33
40   -msgid "Could not remove the notification"
41   -msgstr "Não foi possível remover a notificação"
42   -
43   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:43
44   -msgid "The notification was edited."
45   -msgstr "A notificação foi editada."
46   -
47   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:45
48   -msgid "Could not edit the notification."
49   -msgstr "Não foi possível editar a notificação."
50   -
51   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:57
52   -msgid "The status of the notification was changed."
53   -msgstr "O status da notificação foi modificado"
54   -
55   -#: plugins/environment_notification/controllers/environment_notification_plugin_admin_controller.rb:59
56   -msgid "Could not change the status of the notification."
57   -msgstr "Não foi possível alterar o status da notificação"
58   -
59   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:8
60   -msgid "There are active notifications in this environment!"
61   -msgstr "Existem notificações ativas neste ambiente!"
62   -
63   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:9
64   -msgid "Manage all notifications here."
65   -msgstr "Gerencie todas as notificações aqui."
66   -
67   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:26
68   -msgid "Do not show anymore"
69   -msgstr "Não mostrar mais"
70   -
71   -#: plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb:27
72   -msgid "Hide for now"
73   -msgstr "Ocultar momentaneamente"
74   -
75   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:4
76   -msgid "Back"
77   -msgstr "Voltar"
78   -
79   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:10
80   -msgid "Optional Title:"
81   -msgstr "Título Opcional:"
82   -
83   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:12
84   -msgid "Enter your message here:"
85   -msgstr "Entre com a sua mensagem aqui:"
86   -
87   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:14
88   -msgid ""
89   -"Obs: You can use %{name} and %{email} variables to put the user's name and "
90   -"email in the message."
91   -msgstr ""
92   -"Obs: Você pode usar as variáveis %{name} e %{email} para inserir o nome e "
93   -"email do usuário logado na mensagem."
94   -
95   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:17
96   -msgid "Notifications Status"
97   -msgstr "Status da Notificação"
98   -
99   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
100   -msgid "Notifications Color/Type"
101   -msgstr "Cor/Tipo de Notificação"
102   -
103   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
104   -msgid "Blue - Information"
105   -msgstr "Azul - Informação"
106   -
107   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
108   -msgid "Yellow - Warning"
109   -msgstr "Amarelo - Atenção"
110   -
111   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
112   -msgid "Green - Success"
113   -msgstr "Verde - Sucesso"
114   -
115   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:19
116   -msgid "Red - Danger"
117   -msgstr "Vermelho - Perigo"
118   -
119   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:22
120   -msgid "Display only in the homepage"
121   -msgstr "Apresentar apenas na página inicial"
122   -
123   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:26
124   -msgid "Display to not logged users too"
125   -msgstr "Apresentar notificação para usuários não logados também"
126   -
127   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:30
128   -msgid "Display popup until user close the notification"
129   -msgstr "Apresentar Popup da notificação até que o usuário a feche"
130   -
131   -#: plugins/environment_notification/views/environment_notification_plugin_admin/_form.html.erb:34
132   -msgid "Save"
133   -msgstr "Salvar"
134   -
135   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:3
136   -msgid "Environment Notifications"
137   -msgstr "Notificações do Ambiente"
138   -
139   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:7
140   -msgid "New Notification"
141   -msgstr "Nova Notificação"
142   -
143   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:10
144   -msgid "Back to control panel"
145   -msgstr "Voltar ao Painel de Controle"
146   -
147   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:16
148   -msgid "Notifications"
149   -msgstr "Notificações"
150   -
151   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:19
152   -msgid "Actions"
153   -msgstr "Ações"
154   -
155   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:30
156   -msgid "Deactivate"
157   -msgstr "Desativar"
158   -
159   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:30
160   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:32
161   -msgid "Do you want to change the status of this notification?"
162   -msgstr "Você quer alterar o status dessa notificação?"
163   -
164   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:32
165   -msgid "Activate"
166   -msgstr "Ativar"
167   -
168   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:34
169   -msgid "Edit"
170   -msgstr "Editar"
171   -
172   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:35
173   -msgid "Delete"
174   -msgstr "Remover"
175   -
176   -#: plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb:35
177   -msgid "Do you want to delete this notification?"
178   -msgstr "Você quer remover essa notificação?"
plugins/environment_notification/public/environment_notification_plugin.js
... ... @@ -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   -.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   -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,183 +0,0 @@
1   -require 'test_helper'
2   -require_relative '../../controllers/environment_notification_plugin_admin_controller'
3   -
4   -class EnvironmentNotificationPluginAdminController; def rescue_action(e) raise e end;
5   -end
6   -
7   -class EnvironmentNotificationPluginAdminControllerTest < ActionController::TestCase
8   - def setup
9   - @controller = EnvironmentNotificationPluginAdminController.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   -
18   - login_as(@person.user.login)
19   - end
20   -
21   - attr_accessor :person
22   -
23   - should 'an admin be able to create a notification' do
24   - @environment.add_admin(@person)
25   - post :new, :notifications => {
26   - :message => "Message",
27   - :active => true,
28   - :type => "EnvironmentNotificationPlugin::DangerNotification"
29   - }
30   - assert_redirected_to :action => 'index'
31   - notification = EnvironmentNotificationPlugin::EnvironmentNotification.last
32   - assert_equal "Message", notification.message
33   - assert notification.active
34   - assert_equal "EnvironmentNotificationPlugin::DangerNotification", notification.type
35   - end
36   -
37   - should 'an user not to be able to create a notification' do
38   - post :new, :notifications => {
39   - :message => "Message",
40   - :active => true,
41   - :type => "EnvironmentNotificationPlugin::DangerNotification"
42   - }
43   - assert_redirected_to :root
44   - assert_nil EnvironmentNotificationPlugin::EnvironmentNotification.last
45   - end
46   -
47   - should 'an admin be able to edit a notification' do
48   - @environment.add_admin(@person)
49   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
50   - :environment_id => @environment.id,
51   - :message => "Message",
52   - :active => true,
53   - :type => "EnvironmentNotificationPlugin::DangerNotification"
54   - )
55   - post :edit, :id => @notification.id, :notifications => {
56   - :message => "Edited Message",
57   - :active => false,
58   - :type => "EnvironmentNotificationPlugin::WarningNotification"
59   - }
60   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.last
61   - assert_redirected_to :action => 'index'
62   - assert_equal "Edited Message", @notification.message
63   - assert !@notification.active
64   - assert_equal "EnvironmentNotificationPlugin::WarningNotification", @notification.type
65   - end
66   -
67   - should 'an user not to be able to edit a notification' do
68   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
69   - :environment_id => @environment.id,
70   - :message => "Message",
71   - :active => true,
72   - :type => "EnvironmentNotificationPlugin::DangerNotification"
73   - )
74   - post :edit, :notifications => {
75   - :message => "Edited Message",
76   - :active => false,
77   - :type => "EnvironmentNotificationPlugin::DangerNotification"
78   - }
79   - @notification.reload
80   - assert_redirected_to :root
81   - assert_equal "Message", @notification.message
82   - assert @notification.active
83   - end
84   -
85   - should 'an admin be able to destroy a notification' do
86   - @environment.add_admin(@person)
87   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
88   - :environment_id => @environment.id,
89   - :message => "Message",
90   - :active => true,
91   - :type => "EnvironmentNotificationPlugin::DangerNotification"
92   - )
93   - delete :destroy, :id => @notification.id
94   - assert_nil EnvironmentNotificationPlugin::EnvironmentNotification.find_by(id: @notification.id)
95   - end
96   -
97   - should 'an user not to be able to destroy a notification' do
98   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
99   - :environment_id => @environment.id,
100   - :message => "Message",
101   - :active => true,
102   - :type => "EnvironmentNotificationPlugin::DangerNotification"
103   - )
104   - delete :destroy, :id => @notification.id
105   -
106   - assert_redirected_to :root
107   - assert_not_nil EnvironmentNotificationPlugin::EnvironmentNotification.find_by(id: @notification.id)
108   - end
109   -
110   - should 'an admin be able to change Notification status' do
111   - @environment.add_admin(@person)
112   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
113   - :environment_id => @environment.id,
114   - :message => "Message",
115   - :active => true,
116   - :type => "EnvironmentNotificationPlugin::DangerNotification"
117   - )
118   - post :change_status, :id => @notification.id
119   - assert_redirected_to :action => 'index'
120   -
121   - @notification.reload
122   - assert !@notification.active
123   - end
124   -
125   - should 'an user not be able to change Notification status' do
126   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
127   - :environment_id => @environment.id,
128   - :message => "Message",
129   - :active => true,
130   - :type => "EnvironmentNotificationPlugin::DangerNotification"
131   - )
132   - post :change_status, :id => @notification.id
133   - assert_redirected_to :root
134   -
135   - @notification.reload
136   - assert @notification.active
137   - end
138   -
139   - should 'a logged in user be able to permanently hide notifications' do
140   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
141   - :environment_id => @environment.id,
142   - :message => "Message",
143   - :active => true,
144   - :type => "EnvironmentNotificationPlugin::DangerNotification"
145   - )
146   - post :close_notification, :notification_id => @notification.id
147   - assert_equal "true", @response.body
148   - assert @notification.users.include?(@person.user)
149   - end
150   -
151   - should 'a logged in user be able to momentarily hide notifications' do
152   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
153   - :environment_id => @environment.id,
154   - :message => "Message",
155   - :active => true,
156   - :type => "EnvironmentNotificationPlugin::DangerNotification"
157   - )
158   -
159   - @another_notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
160   - :environment_id => @environment.id,
161   - :message => "Another Message",
162   - :active => true,
163   - :type => "EnvironmentNotificationPlugin::WarningNotification"
164   - )
165   - post :hide_notification, :notification_id => @notification.id
166   - assert_equal "true", @response.body
167   - assert @controller.hide_notifications.include?(@notification.id)
168   - assert !@controller.hide_notifications.include?(@another_notification.id)
169   - end
170   -
171   - should 'not momentarily hide any notification if its id is not found' do
172   - @notification = EnvironmentNotificationPlugin::EnvironmentNotification.create(
173   - :environment_id => @environment.id,
174   - :message => "Message",
175   - :active => true,
176   - :type => "EnvironmentNotificationPlugin::DangerNotification"
177   - )
178   -
179   - post :hide_notification, :notification_id => nil
180   - assert_equal "false", @response.body
181   - assert !@controller.hide_notifications.include?(@notification.id)
182   - end
183   -end
plugins/environment_notification/test/functional/home_controller_test.rb
... ... @@ -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   -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   -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   -<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   -<%= render :partial => "form" %>
plugins/environment_notification/views/environment_notification_plugin_admin/index.html.erb
... ... @@ -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   -<%= render :partial => "form" %>
plugins/environment_notification/views/environment_notification_plugin_admin/show_notification.html.erb
... ... @@ -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   -<% @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>