Commit 01e2d605c905c64f83fff1d5cd39fb5f750dbe3d
1 parent
9e77f7f1
Exists in
community_notifications
Changes EnvironmentNotification reloation to polymorphic
Signed-off-by: Gabriel Silva <gabriel93.silva@gmail.com> Signed-off-by: Marcos Ronaldo <marcos.rpj2@gmail.com>
Showing
4 changed files
with
41 additions
and
7 deletions
Show diff stats
plugins/environment_notification/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/environment_notification/lib/environment_notification_plugin.rb
| ... | ... | @@ -29,6 +29,19 @@ class EnvironmentNotificationPlugin < Noosfero::Plugin |
| 29 | 29 | {:title => _('Notification Manager'), :url => {:controller => 'environment_notification_plugin_admin', :action => 'index'}} |
| 30 | 30 | end |
| 31 | 31 | |
| 32 | + def control_panel_buttons | |
| 33 | + if context.profile.organization? | |
| 34 | + { | |
| 35 | + :title => _('Manage Notifications'), | |
| 36 | + :icon => 'important', | |
| 37 | + :url => { | |
| 38 | + :controller => 'environment_notification_plugin_myprofile', | |
| 39 | + :action => 'index' | |
| 40 | + } | |
| 41 | + } | |
| 42 | + end | |
| 43 | + end | |
| 44 | + | |
| 32 | 45 | def account_controller_filters |
| 33 | 46 | block = proc do |
| 34 | 47 | if !logged_in? | ... | ... |
plugins/environment_notification/lib/ext/organization.rb
0 → 100644
plugins/environment_notification/models/environment_notification_plugin/environment_notification.rb
| ... | ... | @@ -9,13 +9,15 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas |
| 9 | 9 | "EnvironmentNotificationPlugin::DangerNotification" |
| 10 | 10 | ] |
| 11 | 11 | |
| 12 | - attr_accessible :message, :environment_id, :active, :type, :display_only_in_homepage, :display_to_all_users, :display_popup, :title | |
| 12 | + attr_accessible :message, :target_id, :active, :type, :display_only_in_homepage, :display_to_all_users, :display_popup, :title | |
| 13 | 13 | |
| 14 | 14 | has_many :environment_notifications_users |
| 15 | 15 | has_many :users, :through => :environment_notifications_users |
| 16 | 16 | |
| 17 | + belongs_to :target, :polymorphic => true | |
| 18 | + | |
| 17 | 19 | validates_presence_of :message |
| 18 | - validates_presence_of :environment_id | |
| 20 | + validates_presence_of :target_id | |
| 19 | 21 | validate :notification_type_must_be_in_type_list |
| 20 | 22 | |
| 21 | 23 | def notification_type_must_be_in_type_list |
| ... | ... | @@ -24,10 +26,11 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas |
| 24 | 26 | end |
| 25 | 27 | end |
| 26 | 28 | |
| 27 | - scope :active, lambda{|environment| { :conditions => { :environment_id => environment.id, :active => true } } } | |
| 29 | + scope :active, lambda{|target| { :conditions => { :target_id => target.id, :active => true } } } | |
| 28 | 30 | |
| 29 | - def self.visibles(environment, user, controller_path) | |
| 30 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.active(environment).order('updated_at DESC') | |
| 31 | + # TODO: Change method body to scopes | |
| 32 | + def self.visibles(target, user, controller_path) | |
| 33 | + notifications = EnvironmentNotificationPlugin::EnvironmentNotification.active(target).order('updated_at DESC') | |
| 31 | 34 | |
| 32 | 35 | if user |
| 33 | 36 | active_notifications_ids = notifications.pluck(:id) - user.environment_notifications.pluck(:id) |
| ... | ... | @@ -44,7 +47,7 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas |
| 44 | 47 | notifications |
| 45 | 48 | end |
| 46 | 49 | |
| 47 | - def self.with_popup(environment, user, previous_path) | |
| 48 | - notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(environment, user, previous_path).where(display_popup: true) | |
| 50 | + def self.with_popup(target, user, previous_path) | |
| 51 | + notifications = EnvironmentNotificationPlugin::EnvironmentNotification.visibles(target, user, previous_path).where(display_popup: true) | |
| 49 | 52 | end |
| 50 | 53 | end | ... | ... |