aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/incoming_message.rb8
-rw-r--r--app/views/admin_incoming_message/edit.html.erb2
-rw-r--r--config/initializers/alaveteli.rb1
-rw-r--r--lib/message_prominence.rb18
4 files changed, 22 insertions, 7 deletions
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index 5ad645200..96ecc7d53 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -38,6 +38,7 @@ require 'zip/zip'
require 'iconv' unless RUBY_VERSION >= '1.9'
class IncomingMessage < ActiveRecord::Base
+ extend MessageProminence
belongs_to :info_request
validates_presence_of :info_request
@@ -49,8 +50,7 @@ class IncomingMessage < ActiveRecord::Base
belongs_to :raw_email
- PROMINENCE_STATES = ['normal', 'hidden','requester_only']
- validates_inclusion_of :prominence, :in => PROMINENCE_STATES
+ has_prominence(prominence_states = ['normal', 'hidden','requester_only'])
# See binary_mask_stuff function below. It just test for inclusion
# in this hash, not the value of the right hand side.
@@ -69,10 +69,6 @@ class IncomingMessage < ActiveRecord::Base
self.info_request_events.detect{ |e| e.event_type == 'response' }
end
- def user_can_view?(user)
- Ability.can_view_with_prominence?(self.prominence, self.info_request, user)
- end
-
def all_can_view?
self.prominence == 'normal'
end
diff --git a/app/views/admin_incoming_message/edit.html.erb b/app/views/admin_incoming_message/edit.html.erb
index 9cbaf013c..f37907c32 100644
--- a/app/views/admin_incoming_message/edit.html.erb
+++ b/app/views/admin_incoming_message/edit.html.erb
@@ -6,7 +6,7 @@
<div class="control-group">
<label class="control-label" for="incoming_message_prominence"> Prominence</label>
<div class="controls">
- <%= select('incoming_message', "prominence", IncomingMessage::PROMINENCE_STATES) %>
+ <%= select('incoming_message', "prominence", IncomingMessage.prominence_states) %>
</div>
</div>
diff --git a/config/initializers/alaveteli.rb b/config/initializers/alaveteli.rb
index deee3f6da..3c56e1ba5 100644
--- a/config/initializers/alaveteli.rb
+++ b/config/initializers/alaveteli.rb
@@ -50,6 +50,7 @@ require 'ability'
require 'normalize_string'
require 'alaveteli_file_types'
require 'alaveteli_localization'
+require 'message_prominence'
AlaveteliLocalization.set_locales(AlaveteliConfiguration::available_locales,
AlaveteliConfiguration::default_locale)
diff --git a/lib/message_prominence.rb b/lib/message_prominence.rb
new file mode 100644
index 000000000..7bb8f3cf8
--- /dev/null
+++ b/lib/message_prominence.rb
@@ -0,0 +1,18 @@
+module MessageProminence
+
+ def has_prominence(prominence_states)
+ send :include, InstanceMethods
+ cattr_accessor :prominence_states
+ self.prominence_states = prominence_states
+ 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
+
+ end
+end
+