diff options
| author | Teddy Wing | 2018-01-25 12:08:21 +0100 | 
|---|---|---|
| committer | Teddy Wing | 2018-01-25 12:08:21 +0100 | 
| commit | a0d964313c9922f9a00676b211c7ca5600e0cfaa (patch) | |
| tree | 06bb21c77976c052d8c725439beb2c48dd9dfb5b | |
| parent | c44aa17da0c08fcfff11eaa1ff03f6cab6bd0eb0 (diff) | |
| download | chouette-core-a0d964313c9922f9a00676b211c7ca5600e0cfaa.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 | 
