aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ability.rb13
-rw-r--r--lib/message_prominence.rb26
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
+