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 @@ | @@ -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,6 +29,19 @@ class EnvironmentNotificationPlugin < Noosfero::Plugin | ||
29 | {:title => _('Notification Manager'), :url => {:controller => 'environment_notification_plugin_admin', :action => 'index'}} | 29 | {:title => _('Notification Manager'), :url => {:controller => 'environment_notification_plugin_admin', :action => 'index'}} |
30 | end | 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 | def account_controller_filters | 45 | def account_controller_filters |
33 | block = proc do | 46 | block = proc do |
34 | if !logged_in? | 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,13 +9,15 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas | ||
9 | "EnvironmentNotificationPlugin::DangerNotification" | 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 | has_many :environment_notifications_users | 14 | has_many :environment_notifications_users |
15 | has_many :users, :through => :environment_notifications_users | 15 | has_many :users, :through => :environment_notifications_users |
16 | 16 | ||
17 | + belongs_to :target, :polymorphic => true | ||
18 | + | ||
17 | validates_presence_of :message | 19 | validates_presence_of :message |
18 | - validates_presence_of :environment_id | 20 | + validates_presence_of :target_id |
19 | validate :notification_type_must_be_in_type_list | 21 | validate :notification_type_must_be_in_type_list |
20 | 22 | ||
21 | def notification_type_must_be_in_type_list | 23 | def notification_type_must_be_in_type_list |
@@ -24,10 +26,11 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas | @@ -24,10 +26,11 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas | ||
24 | end | 26 | end |
25 | end | 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 | if user | 35 | if user |
33 | active_notifications_ids = notifications.pluck(:id) - user.environment_notifications.pluck(:id) | 36 | active_notifications_ids = notifications.pluck(:id) - user.environment_notifications.pluck(:id) |
@@ -44,7 +47,7 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas | @@ -44,7 +47,7 @@ class EnvironmentNotificationPlugin::EnvironmentNotification < ActiveRecord::Bas | ||
44 | notifications | 47 | notifications |
45 | end | 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 | end | 52 | end |
50 | end | 53 | end |