Commit 1debf11c40fa377cb8a8bacc42750d1e8d452b47

Authored by Gabriel Silva
Committed by Tallys Martins
1 parent 2685bca3

environment_notification plugin improved

 - Added notifications for Organizations;
    - Only the profile admin can create them;
    - show_only_in_homepage option here works with profile homepage;
 - Rename plugin to be more consistent with new features;
    - Old plugin folder still exists, so old users can
      switch automatically when migrating;
    - If you want to start using it, activate "admin_notifications" plugin
      instead of "environment_notification"
 - Adds plugin namespace to tables, classes and modules;

Signed-off-by: Gabriel Silva <gabriel93.silva@gmail.com>
Signed-off-by: Lucas Severo <lucassalves65@gmail.com>
Signed-off-by: Marcos Ronaldo <marcos.rpj2@gmail.com>
Signed-off-by: Thiago Ribeiro <thiagitosouza@gmail.com>

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