Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-01-11 01:41:04 +0300
committerRémy Coutable <remy@rymai.me>2017-01-18 18:38:35 +0300
commit061bb6eb6ed0ca6be3c571b3fcfd14a6f9729205 (patch)
tree2b87e3ea5d1e67b19c515891d19b466c80040a04 /lib/gitlab/view
parente950830ba6a0efa3b0992e6e55cb5b5842f8573a (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.rb10
-rw-r--r--lib/gitlab/view/presenter/factory.rb6
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