aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2018-01-25 12:08:21 +0100
committerZog2018-01-25 17:18:02 +0100
commit1ca38572b94ca174634a87c34eaafd9189fcd7eb (patch)
treecfb92bbd590cf226c0908d20924ccd23f73cd69f
parente926c05033bef396b69fca05db75847707bbf6f0 (diff)
downloadchouette-core-1ca38572b94ca174634a87c34eaafd9189fcd7eb.tar.bz2
StopAreaDecorator: Convert to new action links interface
Refs #5586
-rw-r--r--app/controllers/stop_areas_controller.rb5
-rw-r--r--app/decorators/stop_area_decorator.rb102
-rw-r--r--app/views/stop_areas/index.html.slim4
-rw-r--r--app/views/stop_areas/show.html.slim9
4 files changed, 54 insertions, 66 deletions
diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb
index 5243ce56c..79ffea72e 100644
--- a/app/controllers/stop_areas_controller.rb
+++ b/app/controllers/stop_areas_controller.rb
@@ -57,10 +57,7 @@ class StopAreasController < ChouetteController
redirect_to params.merge(:page => 1)
end
- @stop_areas = ModelDecorator.decorate(
- @stop_areas,
- with: StopAreaDecorator
- )
+ @stop_areas = StopAreaDecorator.decorate(@stop_areas)
}
end
end
diff --git a/app/decorators/stop_area_decorator.rb b/app/decorators/stop_area_decorator.rb
index 32f6e1d2b..2e57da0e4 100644
--- a/app/decorators/stop_area_decorator.rb
+++ b/app/decorators/stop_area_decorator.rb
@@ -1,66 +1,70 @@
-class StopAreaDecorator < Draper::Decorator
+class StopAreaDecorator < AF83::Decorator
decorates Chouette::StopArea
- delegate_all
-
- def common_action_links(stop_area = nil)
- top_links, bottom_links = [], []
- stop_area ||= object
+ create_action_link do |l|
+ l.content t('stop_areas.actions.new')
+ l.href { h.new_stop_area_referential_stop_area_path }
+ end
- if h.policy(stop_area).update?
- top_links << Link.new(
- content: h.t('stop_areas.actions.edit'),
- href: h.edit_stop_area_referential_stop_area_path(
- stop_area.stop_area_referential,
- stop_area
+ with_instance_decorator do |instance_decorator|
+ instance_decorator.show_action_link do |l|
+ l.href do
+ h.stop_area_referential_stop_area_path(
+ object.stop_area_referential,
+ object
)
- )
+ end
end
- if h.policy(stop_area).destroy?
- bottom_links << Link.new(
- content: h.destroy_link_content('stop_areas.actions.destroy'),
- href: h.stop_area_referential_stop_area_path(
- stop_area.stop_area_referential,
- stop_area
- ),
- method: :delete,
- data: { confirm: t('stop_areas.actions.destroy_confirm') }
- )
+ instance_decorator.edit_action_link do |l|
+ l.content h.t('stop_areas.actions.edit')
+ l.href do
+ h.edit_stop_area_referential_stop_area_path(
+ object.stop_area_referential,
+ object
+ )
+ end
end
- [top_links, bottom_links]
- end
-
- def action_links(stop_area = nil)
- stop_area ||= object
- top_links, bottom_links = common_action_links(stop_area)
- links = []
-
- if h.policy(object).deactivate?
- links << Link.new(
- content: h.deactivate_link_content('stop_areas.actions.deactivate'),
- href: h.deactivate_stop_area_referential_stop_area_path(stop_area.stop_area_referential, object),
- method: :put,
- data: {confirm: h.t('stop_areas.actions.deactivate_confirm')},
- extra_class: "delete-action"
- )
+ instance_decorator.action_link policy: :deactivate, secondary: true do |l|
+ l.content h.deactivate_link_content('stop_areas.actions.deactivate')
+ l.href do
+ h.deactivate_stop_area_referential_stop_area_path(
+ object.stop_area_referential,
+ object
+ )
+ end
+ l.method :put
+ l.data confirm: h.t('stop_areas.actions.deactivate_confirm')
+ l.add_class 'delete-action'
end
- if h.policy(object).activate?
- links << Link.new(
- content: h.activate_link_content('stop_areas.actions.activate'),
- href: h.activate_stop_area_referential_stop_area_path(stop_area.stop_area_referential, object),
- method: :put,
- data: {confirm: h.t('stop_areas.actions.activate_confirm')},
- extra_class: "delete-action"
- )
+ instance_decorator.action_link policy: :activate, secondary: true do |l|
+ l.content h.activate_link_content('stop_areas.actions.activate')
+ l.href do
+ h.activate_stop_area_referential_stop_area_path(
+ object.stop_area_referential,
+ object
+ )
+ end
+ l.method :put
+ l.data confirm: h.t('stop_areas.actions.activate_confirm')
+ l.add_class 'delete-action'
end
- top_links + links + bottom_links
+ instance_decorator.destroy_action_link do |l|
+ l.content h.destroy_link_content('stop_areas.actions.destroy')
+ l.href do
+ h.stop_area_referential_stop_area_path(
+ object.stop_area_referential,
+ object
+ )
+ end
+ l.data confirm: h.t('stop_areas.actions.destroy_confirm')
+ end
end
- def waiting_time_text
+ define_instance_method :waiting_time_text do
return '-' if [nil, 0].include? waiting_time
h.t('stop_areas.waiting_time_format', value: waiting_time)
end
diff --git a/app/views/stop_areas/index.html.slim b/app/views/stop_areas/index.html.slim
index 63e99fd75..71c7f995c 100644
--- a/app/views/stop_areas/index.html.slim
+++ b/app/views/stop_areas/index.html.slim
@@ -1,7 +1,4 @@
- breadcrumb :stop_areas, @stop_area_referential
-- content_for :page_header_actions do
- - if policy(Chouette::StopArea).create?
- = link_to(t('stop_areas.actions.new'), new_stop_area_referential_stop_area_path(@stop_area_referential), class: 'btn btn-primary')
.page_content
.container-fluid
@@ -51,7 +48,6 @@
attribute: Proc.new { |s| Chouette::AreaType.find(s.area_type).try :label } \
), \
],
- links: [:show],
cls: 'table has-filter has-search'
= new_pagination @stop_areas, 'pull-right'
diff --git a/app/views/stop_areas/show.html.slim b/app/views/stop_areas/show.html.slim
index f9de34a98..b5ec8ac00 100644
--- a/app/views/stop_areas/show.html.slim
+++ b/app/views/stop_areas/show.html.slim
@@ -1,14 +1,5 @@
- breadcrumb :stop_area, @stop_area_referential, @stop_area
- page_header_content_for @stop_area
-- content_for :page_header_content do
- .row
- .col-lg-12.text-right.mb-sm
- - @stop_area.action_links.each do |link|
- = link_to link.href,
- method: link.method,
- data: link.data,
- class: 'btn btn-primary' do
- = link.content
/ PageContent
.page_content