diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ability.rb | 13 | ||||
-rw-r--r-- | lib/message_prominence.rb | 26 |
2 files changed, 38 insertions, 1 deletions
diff --git a/lib/ability.rb b/lib/ability.rb index 2865ccb1c..f63845e84 100644 --- a/lib/ability.rb +++ b/lib/ability.rb @@ -2,4 +2,15 @@ module Ability def self.can_update_request_state?(user, request) (user && request.is_old_unclassified?) || request.is_owning_user?(user) end -end
\ No newline at end of file + + def self.can_view_with_prominence?(prominence, info_request, user) + if prominence == 'hidden' + return User.view_hidden?(user) + end + if prominence == 'requester_only' + return info_request.is_owning_user?(user) + end + return true + end + +end diff --git a/lib/message_prominence.rb b/lib/message_prominence.rb new file mode 100644 index 000000000..8f54fcc95 --- /dev/null +++ b/lib/message_prominence.rb @@ -0,0 +1,26 @@ +module MessageProminence + + def has_prominence + send :include, InstanceMethods + cattr_accessor :prominence_states + self.prominence_states = ['normal', 'hidden','requester_only'] + validates_inclusion_of :prominence, :in => self.prominence_states + end + + module InstanceMethods + + def user_can_view?(user) + Ability.can_view_with_prominence?(self.prominence, self.info_request, user) + end + + def indexed_by_search? + self.prominence == 'normal' + end + + def all_can_view? + self.prominence == 'normal' + end + + end +end + |