summaryrefslogtreecommitdiff
path: root/app/helpers/notifications_helper.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-03-28 18:17:42 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2016-03-30 10:44:20 +0200
commit359157c097993a9b917ca590e128e85cf358d95d (patch)
tree08a29f8221442621506f38fa8dce7095d630f7d0 /app/helpers/notifications_helper.rb
parent73c5a3410596165244bfa3d2f657c313ec1c558c (diff)
downloadgitlab-ce-359157c097993a9b917ca590e128e85cf358d95d.tar.gz
Introduce NotificationSetting to user interface
* visiting project will create notification setting if missing * change notification setting per project even without membership * use notification settings instead of membership on profile page Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/helpers/notifications_helper.rb')
-rw-r--r--app/helpers/notifications_helper.rb74
1 files changed, 43 insertions, 31 deletions
diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb
index 499c655d2bf..a0e91a63d2d 100644
--- a/app/helpers/notifications_helper.rb
+++ b/app/helpers/notifications_helper.rb
@@ -1,48 +1,60 @@
module NotificationsHelper
include IconsHelper
- def notification_icon(notification)
- if notification.disabled?
- icon('volume-off', class: 'ns-mute')
- elsif notification.participating?
- icon('volume-down', class: 'ns-part')
- elsif notification.watch?
- icon('volume-up', class: 'ns-watch')
- else
- icon('circle-o', class: 'ns-default')
+ def notification_icon_class(level)
+ case level.to_sym
+ when :disabled
+ 'microphone-slash'
+ when :participating
+ 'volume-up'
+ when :watch
+ 'eye'
+ when :mention
+ 'at'
+ when :global
+ 'globe'
end
end
- def notification_list_item(notification_level, user_membership)
- case notification_level
- when Notification::N_DISABLED
- update_notification_link(Notification::N_DISABLED, user_membership, 'Disabled', 'microphone-slash')
- when Notification::N_PARTICIPATING
- update_notification_link(Notification::N_PARTICIPATING, user_membership, 'Participate', 'volume-up')
- when Notification::N_WATCH
- update_notification_link(Notification::N_WATCH, user_membership, 'Watch', 'eye')
- when Notification::N_MENTION
- update_notification_link(Notification::N_MENTION, user_membership, 'On mention', 'at')
- when Notification::N_GLOBAL
- update_notification_link(Notification::N_GLOBAL, user_membership, 'Global', 'globe')
- else
- # do nothing
+ def notification_icon(level)
+ icon("#{notification_icon_class(level)} fw")
+ end
+
+ def notification_title(level)
+ case level.to_sym
+ when :disabled
+ 'Disabled'
+ when :participating
+ 'Participate'
+ when :watch
+ 'Watch'
+ when :mention
+ 'On mention'
+ when :global
+ 'Global'
end
end
- def update_notification_link(notification_level, user_membership, title, icon)
- content_tag(:li, class: active_level_for(user_membership, notification_level)) do
- link_to '#', class: 'update-notification', data: { notification_level: notification_level } do
- icon("#{icon} fw", text: title)
+ def notification_list_item(level, setting)
+ title = notification_title(level)
+
+ data = {
+ notification_level: level,
+ notification_title: title
+ }
+
+ content_tag(:li, class: active_level_for(setting, level)) do
+ link_to '#', class: 'update-notification', data: data do
+ icon("#{notification_icon_class(level)} fw", text: title)
end
end
end
- def notification_label(user_membership)
- Notification.new(user_membership).to_s
+ def notification_label(setting)
+ notification_title(setting.level)
end
- def active_level_for(user_membership, level)
- 'active' if user_membership.notification_level == level
+ def active_level_for(setting, level)
+ 'active' if setting.level == level
end
end