diff options
| author | Teddy Wing | 2018-01-25 12:08:21 +0100 |
|---|---|---|
| committer | Zog | 2018-01-25 17:18:02 +0100 |
| commit | 1ca38572b94ca174634a87c34eaafd9189fcd7eb (patch) | |
| tree | cfb92bbd590cf226c0908d20924ccd23f73cd69f | |
| parent | e926c05033bef396b69fca05db75847707bbf6f0 (diff) | |
| download | chouette-core-1ca38572b94ca174634a87c34eaafd9189fcd7eb.tar.bz2 | |
StopAreaDecorator: Convert to new action links interface
Refs #5586
| -rw-r--r-- | app/controllers/stop_areas_controller.rb | 5 | ||||
| -rw-r--r-- | app/decorators/stop_area_decorator.rb | 102 | ||||
| -rw-r--r-- | app/views/stop_areas/index.html.slim | 4 | ||||
| -rw-r--r-- | app/views/stop_areas/show.html.slim | 9 |
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 |
