diff options
author | Rémy Coutable <remy@rymai.me> | 2017-01-11 01:41:04 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-01-18 18:38:35 +0300 |
commit | 061bb6eb6ed0ca6be3c571b3fcfd14a6f9729205 (patch) | |
tree | 2b87e3ea5d1e67b19c515891d19b466c80040a04 /lib/gitlab/view | |
parent | e950830ba6a0efa3b0992e6e55cb5b5842f8573a (diff) |
More improvements to presenters
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'lib/gitlab/view')
-rw-r--r-- | lib/gitlab/view/presenter/base.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/view/presenter/factory.rb | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/gitlab/view/presenter/base.rb b/lib/gitlab/view/presenter/base.rb index 51e7ab064fe..83c8ba5c1cf 100644 --- a/lib/gitlab/view/presenter/base.rb +++ b/lib/gitlab/view/presenter/base.rb @@ -9,13 +9,15 @@ module Gitlab attr_reader :subject - def can?(user, action) - super(user, action, subject) + def can?(user, action, overriden_subject = nil) + super(user, action, overriden_subject || subject) end - private - class_methods do + def presenter? + true + end + def presents(name) define_method(name) { subject } end diff --git a/lib/gitlab/view/presenter/factory.rb b/lib/gitlab/view/presenter/factory.rb index 92979c61a25..d172d61e2c9 100644 --- a/lib/gitlab/view/presenter/factory.rb +++ b/lib/gitlab/view/presenter/factory.rb @@ -8,13 +8,15 @@ module Gitlab end def fabricate! - presenter_class.new(@subject, @attributes) + presenter_class.new(subject, attributes) end private + attr_reader :subject, :attributes + def presenter_class - @subject.class.const_get('Presenter') + "#{subject.class.name}Presenter".constantize end end end |