diff options
| author | Teddy Wing | 2018-01-23 14:57:07 +0100 | 
|---|---|---|
| committer | Teddy Wing | 2018-01-23 14:57:07 +0100 | 
| commit | c39a3745507fa510eea14b0884a0929bd4729a97 (patch) | |
| tree | e805541f9a6273393b0a272f95d8b8cf24340e42 | |
| parent | 01c66e361fcf800a973606310549f342c89727a9 (diff) | |
| download | chouette-core-c39a3745507fa510eea14b0884a0929bd4729a97.tar.bz2 | |
NetworkDecorator: Convert to new action links interface
And remove the "create" link from the gear menu and header links of the
:show page because it didn't make sense there. Leave a "create" link on
the index page though.
Refs #5586
| -rw-r--r-- | app/controllers/networks_controller.rb | 3 | ||||
| -rw-r--r-- | app/decorators/network_decorator.rb | 51 | ||||
| -rw-r--r-- | app/views/networks/index.html.slim | 3 | ||||
| -rw-r--r-- | app/views/networks/show.html.slim | 10 | 
4 files changed, 27 insertions, 40 deletions
| diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb index 79a5eb97b..1c69b1240 100644 --- a/app/controllers/networks_controller.rb +++ b/app/controllers/networks_controller.rb @@ -89,9 +89,8 @@ class NetworksController < ChouetteController    end    def decorate_networks(networks) -    ModelDecorator.decorate( +    NetworkDecorator.decorate(        networks, -      with: NetworkDecorator,        context: {          line_referential: line_referential        } diff --git a/app/decorators/network_decorator.rb b/app/decorators/network_decorator.rb index b0a19cf60..cfa19dca5 100644 --- a/app/decorators/network_decorator.rb +++ b/app/decorators/network_decorator.rb @@ -1,44 +1,43 @@ -class NetworkDecorator < Draper::Decorator +class NetworkDecorator < AF83::Decorator    decorates Chouette::Network -  delegate_all - -  # Requires: +  # Action links require:    #   context: {    #     line_referential: ,    #   } -  def action_links -    links = [] -    if h.policy(Chouette::Network).create? -      links << Link.new( -        content: h.t('networks.actions.new'), -        href: h.new_line_referential_network_path(context[:line_referential]) -      ) +  create_action_link do |l| +    l.content t('networks.actions.new') +    l.href { h.new_line_referential_network_path(context[:line_referential]) } +    l.class 'btn btn-primary' +  end + +  with_instance_decorator do |instance_decorator| +    instance_decorator.show_action_link do |l| +      l.href do +        h.line_referential_network_path(context[:line_referential], object) +      end      end -    if h.policy(object).update? -      links << Link.new( -        content: h.t('networks.actions.edit'), -        href: h.edit_line_referential_network_path( +    instance_decorator.action_link secondary: true, policy: :edit do |l| +      l.content t('networks.actions.edit') +      l.href do +        h.edit_line_referential_network_path(            context[:line_referential],            object          ) -      ) +      end      end -    if h.policy(object).destroy? -      links << Link.new( -        content: h.destroy_link_content('networks.actions.destroy'), -        href: h.line_referential_network_path( +    instance_decorator.destroy_action_link do |l| +      l.content h.destroy_link_content('networks.actions.destroy') +      l.href do +        h.line_referential_network_path(            context[:line_referential],            object -        ), -        method: :delete, -        data: { confirm: h.t('networks.actions.destroy_confirm') } -      ) +        ) +      end +      l.data confirm: h.t('networks.actions.destroy_confirm')      end - -    links    end  end diff --git a/app/views/networks/index.html.slim b/app/views/networks/index.html.slim index b13c73e9e..6aeb140cc 100644 --- a/app/views/networks/index.html.slim +++ b/app/views/networks/index.html.slim @@ -1,7 +1,4 @@  - breadcrumb :networks, @line_referential -- content_for :page_header_actions do -  - if policy(Chouette::Network).create? -    = link_to(t('networks.actions.new'), new_line_referential_network_path(@line_referential), class: 'btn btn-primary')  .page_content    .container-fluid diff --git a/app/views/networks/show.html.slim b/app/views/networks/show.html.slim index 8e40a13b2..527fb8d5b 100644 --- a/app/views/networks/show.html.slim +++ b/app/views/networks/show.html.slim @@ -1,14 +1,6 @@  - breadcrumb :network, @network  - page_header_content_for @network -- content_for :page_header_content do -  .row -    .col-lg-12.text-right.mb-sm -      - @network.action_links.each do |link| -        = link_to link.href, -            method: link.method, -            data: link.data, -            class: 'btn btn-primary' do -              = link.content +  .page_content    .container-fluid      .row | 
