diff options
| author | soykje | 2017-07-12 13:45:23 +0200 | 
|---|---|---|
| committer | GitHub | 2017-07-12 13:45:23 +0200 | 
| commit | 5a55f529aad6b5edc805d774e5cca1e1ff3f66da (patch) | |
| tree | c76eb6abdc2482560599bee1b52d8a9d4625733e /app | |
| parent | c120db456568dfcc6bb4f0653fc9d9ffa3f1a80a (diff) | |
| parent | 7ea4ab54b53e9d14bf4562df24ed341fbe297f9e (diff) | |
| download | chouette-core-5a55f529aad6b5edc805d774e5cca1e1ff3f66da.tar.bz2 | |
Merge pull request #30 from af83/3479-migrate-all-remaining-table-builder-helper-calls-to-new-version
3479 migrate all remaining table builder helper calls to new version
Diffstat (limited to 'app')
35 files changed, 544 insertions, 187 deletions
diff --git a/app/controllers/companies_controller.rb b/app/controllers/companies_controller.rb index 9d33c6cb8..07a732fc9 100644 --- a/app/controllers/companies_controller.rb +++ b/app/controllers/companies_controller.rb @@ -15,6 +15,14 @@ class CompaniesController < BreadcrumbController          if collection.out_of_bounds?            redirect_to params.merge(:page => 1)          end + +        @companies = ModelDecorator.decorate( +          @companies, +          with: CompanyDecorator, +          context: { +            referential: line_referential +          } +        )        }        build_breadcrumb :index      end diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb index ea8410c5b..d1f83340e 100644 --- a/app/controllers/networks_controller.rb +++ b/app/controllers/networks_controller.rb @@ -12,7 +12,12 @@ class NetworksController < BreadcrumbController    def show      @map = NetworkMap.new(resource).with_helpers(self) +      show! do +      @network = @network.decorate(context: { +        line_referential: line_referential +      }) +        build_breadcrumb :show      end    end @@ -31,6 +36,14 @@ class NetworksController < BreadcrumbController          if collection.out_of_bounds?            redirect_to params.merge(:page => 1)          end + +        @networks = ModelDecorator.decorate( +          @networks, +          with: NetworkDecorator, +          context: { +            line_referential: line_referential +          } +        )        }        build_breadcrumb :index      end diff --git a/app/controllers/referential_companies_controller.rb b/app/controllers/referential_companies_controller.rb index e8b104d14..53dde93bb 100644 --- a/app/controllers/referential_companies_controller.rb +++ b/app/controllers/referential_companies_controller.rb @@ -13,6 +13,14 @@ class ReferentialCompaniesController < ChouetteController          if collection.out_of_bounds?            redirect_to params.merge(:page => 1)          end + +        @companies = ModelDecorator.decorate( +          @companies, +          with: CompanyDecorator, +          context: { +            referential: referential +          } +        )        }        build_breadcrumb :index      end diff --git a/app/controllers/referential_lines_controller.rb b/app/controllers/referential_lines_controller.rb index 4b4a822b4..1da64991d 100644 --- a/app/controllers/referential_lines_controller.rb +++ b/app/controllers/referential_lines_controller.rb @@ -10,18 +10,6 @@ class ReferentialLinesController < ChouetteController    belongs_to :referential -  def index -    @hide_group_of_line = referential.group_of_lines.empty? -    index! do |format| -      format.html { -        if collection.out_of_bounds? -          redirect_to params.merge(:page => 1) -        end -        build_breadcrumb :index -      } -    end -  end -    def show      @routes = resource.routes @@ -49,6 +37,14 @@ class ReferentialLinesController < ChouetteController      )      show! do +      @line = ReferentialLineDecorator.decorate( +        @line, +        context: { +          referential: referential, +          current_organisation: current_organisation +        } +      ) +        build_breadcrumb :show      end    end diff --git a/app/controllers/referential_networks_controller.rb b/app/controllers/referential_networks_controller.rb index 30c7dd244..e0ce71ce4 100644 --- a/app/controllers/referential_networks_controller.rb +++ b/app/controllers/referential_networks_controller.rb @@ -10,7 +10,15 @@ class ReferentialNetworksController < ChouetteController    def show      @map = NetworkMap.new(resource).with_helpers(self) +      show! do +      @network = ReferentialNetworkDecorator.decorate( +        @network, +        context: { +          referential: referential +        } +      ) +        build_breadcrumb :show      end    end @@ -21,6 +29,14 @@ class ReferentialNetworksController < ChouetteController          if collection.out_of_bounds?            redirect_to params.merge(:page => 1)          end + +        @networks = ModelDecorator.decorate( +          @networks, +          with: ReferentialNetworkDecorator, +          context: { +            referential: referential +          } +        )        }        build_breadcrumb :index      end diff --git a/app/controllers/referential_stop_areas_controller.rb b/app/controllers/referential_stop_areas_controller.rb index 4d33ebb2e..7519418e7 100644 --- a/app/controllers/referential_stop_areas_controller.rb +++ b/app/controllers/referential_stop_areas_controller.rb @@ -72,13 +72,16 @@ class ReferentialStopAreasController  < ChouetteController    def show      map.editable = false      @access_points = @stop_area.access_points +      show! do |format|        unless stop_area.position or params[:default] or params[:routing]          format.kml {            render :nothing => true, :status => :not_found          } -        end + +      @stop_area = @stop_area.decorate +        build_breadcrumb :show      end    end diff --git a/app/controllers/referentials_controller.rb b/app/controllers/referentials_controller.rb index 9505a47f3..838c46168 100644 --- a/app/controllers/referentials_controller.rb +++ b/app/controllers/referentials_controller.rb @@ -27,6 +27,14 @@ class ReferentialsController < BreadcrumbController      show! do |format|        @referential = @referential.decorate        @reflines = lines_collection.paginate(page: params[:page], per_page: 10) +      @reflines = ModelDecorator.decorate( +        @reflines, +        with: ReferentialLineDecorator, +        context: { +          referential: referential, +          current_organisation: current_organisation +        } +      )        format.json {          render :json => { :lines_count => resource.lines.count, diff --git a/app/controllers/routes_controller.rb b/app/controllers/routes_controller.rb index 4781d0d16..7ba2c1a58 100644 --- a/app/controllers/routes_controller.rb +++ b/app/controllers/routes_controller.rb @@ -47,6 +47,11 @@ class RoutesController < ChouetteController          line: @line        }) +      @route_sp = ModelDecorator.decorate( +        @route_sp, +        with: StopPointDecorator +      ) +        build_breadcrumb :show      end    end diff --git a/app/controllers/routing_constraint_zones_controller.rb b/app/controllers/routing_constraint_zones_controller.rb index c526e6348..6c3cb8a29 100644 --- a/app/controllers/routing_constraint_zones_controller.rb +++ b/app/controllers/routing_constraint_zones_controller.rb @@ -10,12 +10,29 @@ class RoutingConstraintZonesController < ChouetteController      belongs_to :line, parent_class: Chouette::Line    end +  def index +    index! do |format| +      @routing_constraint_zones = ModelDecorator.decorate( +        @routing_constraint_zones, +        with: RoutingConstraintZoneDecorator, +        context: { +          referential: referential, +          line: parent +        } +      ) + +      build_breadcrumb :index +    end +  end +    def show      show! do |format|        @routing_constraint_zone = @routing_constraint_zone.decorate(context: { -        referential: current_referential, -        line: parent.id +        referential: referential, +        line: parent        }) + +      build_breadcrumb :show      end    end diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb index ae3edbd3e..cdb7c59ab 100644 --- a/app/controllers/stop_areas_controller.rb +++ b/app/controllers/stop_areas_controller.rb @@ -53,11 +53,18 @@ class StopAreasController < BreadcrumbController    def index      request.format.kml? ? @per_page = nil : @per_page = 12      @zip_codes = stop_area_referential.stop_areas.where("zip_code is NOT null").distinct.pluck(:zip_code) +      index! do |format|        format.html {          if collection.out_of_bounds?            redirect_to params.merge(:page => 1)          end + +        @stop_areas = ModelDecorator.decorate( +          @stop_areas, +          with: StopAreaDecorator +        ) +          build_breadcrumb :index        }      end @@ -90,6 +97,9 @@ class StopAreasController < BreadcrumbController          }        end + +      @stop_area = @stop_area.decorate +        build_breadcrumb :show      end    end diff --git a/app/decorators/company_decorator.rb b/app/decorators/company_decorator.rb index 030952483..402bd3ab6 100644 --- a/app/decorators/company_decorator.rb +++ b/app/decorators/company_decorator.rb @@ -13,7 +13,7 @@ class CompanyDecorator < Draper::Decorator    # Requires:    #   context: { -  #     line_referential: +  #     referential:    #   }    def action_links      links = [] @@ -23,7 +23,7 @@ class CompanyDecorator < Draper::Decorator        binding.pry        links << Link.new(          content: h.t('companies.actions.new'), -        href: h.new_line_referential_company_path(context[:line_referential]) +        href: h.new_line_referential_company_path(context[:referential])        )      end @@ -31,7 +31,7 @@ class CompanyDecorator < Draper::Decorator        links << Link.new(          content: h.t('companies.actions.edit'),          href: h.edit_line_referential_company_path( -          context[:line_referential], +          context[:referential],            object          )        ) @@ -41,7 +41,7 @@ class CompanyDecorator < Draper::Decorator        links << Link.new(          content: t('companies.actions.destroy'),          href: h.line_referential_company_path( -          context[:line_referential], +          context[:referential],            object          ),          method: :delete, diff --git a/app/decorators/network_decorator.rb b/app/decorators/network_decorator.rb new file mode 100644 index 000000000..1f62fe512 --- /dev/null +++ b/app/decorators/network_decorator.rb @@ -0,0 +1,44 @@ +class NetworkDecorator < Draper::Decorator +  decorates Chouette::Network + +  delegate_all + +  # Requires: +  #   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]) +      ) +    end + +    if h.policy(object).update? +      links << Link.new( +        content: h.t('networks.actions.edit'), +        href: h.edit_line_referential_network_path( +          context[:line_referential], +          object +        ) +      ) +    end + +    if h.policy(object).destroy? +      links << Link.new( +        content: h.destroy_link_content('networks.actions.destroy'), +        href: h.line_referential_network_path( +          context[:line_referential], +          object +        ), +        method: :delete, +        data: { confirm: t('networks.actions.destroy_confirm') } +      ) +    end + +    links +  end +end diff --git a/app/decorators/referential_line_decorator.rb b/app/decorators/referential_line_decorator.rb new file mode 100644 index 000000000..55acf7ed9 --- /dev/null +++ b/app/decorators/referential_line_decorator.rb @@ -0,0 +1,64 @@ +class ReferentialLineDecorator < Draper::Decorator +  decorates Chouette::Line + +  delegate_all + +  # Requires: +  #   context: { +  #     referential: , +  #     current_organisation: +  #   } +  def action_links +    links = [] + +    links << Link.new( +      content: Chouette::Line.human_attribute_name(:footnotes), +      href: h.referential_line_footnotes_path(context[:referential], object) +    ) + +    links << Link.new( +      content: h.t('routing_constraint_zones.index.title'), +      href: h.referential_line_routing_constraint_zones_path( +        context[:referential], +        object +      ) +    ) + +    if h.policy(Chouette::Line).create? && +        context[:referential].organisation == context[:current_organisation] +      links << Link.new( +        content: h.t('actions.new'), +        href: h.new_referential_line_path(context[:referential]) +      ) +    end + +    if h.policy(object).update? +      links << Link.new( +        content: h.t('actions.edit'), +        href: h.edit_referential_line_path(context[:referential], object) +      ) +    end + +    if h.policy(object).destroy? +      links << Link.new( +        content: h.destroy_link_content('actions.destroy'), +        href: h.referential_line_path(context[:referential], object), +        method: :delete, +        data: { confirm: t('lines.actions.destroy_confirm') } +      ) +    end + +    if !object.hub_restricted? || +        (object.hub_restricted? && object.routes.size < 2) +      if h.policy(Chouette::Route).create? && +          context[:referential].organisation == context[:current_organisation] +        links << Link.new( +          content: h.t('routes.actions.new'), +          href: h.new_referential_line_route_path(context[:referential], object) +        ) +      end +    end + +    links +  end +end diff --git a/app/decorators/referential_network_decorator.rb b/app/decorators/referential_network_decorator.rb new file mode 100644 index 000000000..9eb94c8d2 --- /dev/null +++ b/app/decorators/referential_network_decorator.rb @@ -0,0 +1,38 @@ +class ReferentialNetworkDecorator < Draper::Decorator +  decorates Chouette::Network + +  delegate_all + +  # Requires: +  #   context: { +  #     referential: , +  #   } +  def action_links +    links = [] + +    if h.policy(Chouette::Network).create? +      links << Link.new( +        content: h.t('networks.actions.new'), +        href: h.new_referential_network_path(context[:referential]) +      ) +    end + +    if h.policy(object).update? +      links << Link.new( +        content: h.t('networks.actions.edit'), +        href: h.edit_referential_network_path(context[:referential], object) +      ) +    end + +    if h.policy(object).destroy? +      links << Link.new( +        content: h.destroy_link_content('networks.actions.destroy'), +        href: h.referential_network_path(context[:referential], object), +        method: :delete, +        data: { confirm: t('networks.actions.destroy_confirm') } +      ) +    end + +    links +  end +end diff --git a/app/decorators/stop_area_decorator.rb b/app/decorators/stop_area_decorator.rb new file mode 100644 index 000000000..4e777292d --- /dev/null +++ b/app/decorators/stop_area_decorator.rb @@ -0,0 +1,43 @@ +class StopAreaDecorator < Draper::Decorator +  decorates Chouette::StopArea + +  delegate_all + +  def action_links(stop_area = nil) +    links = [] +    stop_area ||= object + +    if h.policy(Chouette::StopArea).new? +      links << Link.new( +        content: h.t('stop_areas.actions.new'), +        href: h.new_stop_area_referential_stop_area_path( +          stop_area.stop_area_referential +        ) +      ) +    end + +    if h.policy(stop_area).update? +      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 +        ) +      ) +    end + +    if h.policy(stop_area).destroy? +      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') } +      ) +    end + +    links +  end +end diff --git a/app/decorators/stop_point_decorator.rb b/app/decorators/stop_point_decorator.rb new file mode 100644 index 000000000..196d6d490 --- /dev/null +++ b/app/decorators/stop_point_decorator.rb @@ -0,0 +1,9 @@ +class StopPointDecorator < StopAreaDecorator +  decorates Chouette::StopPoint + +  delegate_all + +  def action_links +    super(object.stop_area) +  end +end diff --git a/app/helpers/table_builder_helper.rb b/app/helpers/table_builder_helper.rb index e1b8b406d..897e842a8 100644 --- a/app/helpers/table_builder_helper.rb +++ b/app/helpers/table_builder_helper.rb @@ -104,10 +104,6 @@ module TableBuilderHelper    end    def tbody(collection, columns, selectable, links) -    # Certain controllers don't define a `#current_referential`. In these -    # cases, avoid a `NoMethodError`. -    referential = current_referential if respond_to?(:current_referential) -      content_tag :tbody do        collection.map do |item| @@ -161,7 +157,7 @@ module TableBuilderHelper      menu = content_tag :ul, class: 'dropdown-menu' do        ( -        CustomLinks.new(item, pundit_user, links).links + +        CustomLinks.new(item, pundit_user, links, referential).links +          item.action_links.select { |link| link.is_a?(Link) }        ).map do |link|          gear_menu_link(link) @@ -238,4 +234,10 @@ module TableBuilderHelper        class: ('delete-action' if link.method == :delete)      )    end + +  def referential +    # Certain controllers don't define a `#current_referential`. In these +    # cases, avoid a `NoMethodError`. +    @__referential__ ||= try(:current_referential) +  end  end diff --git a/app/helpers/table_builder_helper/custom_links.rb b/app/helpers/table_builder_helper/custom_links.rb index 4e385b266..b1bb11f10 100644 --- a/app/helpers/table_builder_helper/custom_links.rb +++ b/app/helpers/table_builder_helper/custom_links.rb @@ -8,12 +8,13 @@ module TableBuilderHelper        unarchive: :put      } -    attr_reader :actions, :object, :user_context +    attr_reader :actions, :object, :user_context, :referential -    def initialize(object, user_context, actions) +    def initialize(object, user_context, actions, referential = nil)        @object       = object        @user_context = user_context        @actions      = actions +      @referential  = referential      end      def links @@ -33,10 +34,7 @@ module TableBuilderHelper          polymorph_url << action        end -      polymorph_url += URL.polymorphic_url_parts( -        object, -        user_context.context[:referential] -      ) +      polymorph_url += URL.polymorphic_url_parts(object, referential)      end      def method_for_action(action) diff --git a/app/views/companies/index.html.slim b/app/views/companies/index.html.slim index 8605a213b..ceea385b3 100644 --- a/app/views/companies/index.html.slim +++ b/app/views/companies/index.html.slim @@ -22,11 +22,20 @@      - if @companies.any?        .row          .col-lg-12 -          = table_builder @companies, -            { 'Oid' => Proc.new { |n| n.try(:objectid).try(:local_id) }, :name => 'name' }, -            [:show, :edit, :delete], -            [], -            'table has-search' +          = table_builder_2 @companies, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'Oid', \ +                attribute: Proc.new { |n| n.try(:objectid).try(:local_id) }, \ +                sortable: false \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ) \ +            ], +            links: [:show, :edit], +            cls: 'table has-search'            = new_pagination @companies, 'pull-right' diff --git a/app/views/networks/index.html.slim b/app/views/networks/index.html.slim index 7381b62f4..4c1f9783c 100644 --- a/app/views/networks/index.html.slim +++ b/app/views/networks/index.html.slim @@ -22,12 +22,20 @@      - if @networks.any?        .row          .col-lg-12 -          = table_builder @networks, -            { 'Oid' => Proc.new { |n| n.try(:objectid).try(:local_id) }, -            :name => 'name' }, -            [:show, :edit, :delete], -            [], -            'table has-search' +          = table_builder_2 @networks, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'Oid', \ +                attribute: Proc.new { |n| n.try(:objectid).try(:local_id) }, \ +                sortable: false \ +              ), +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ), \ +            ], +            links: [:show], +            cls: 'table has-search'            = new_pagination @networks, 'pull-right' diff --git a/app/views/networks/show.html.slim b/app/views/networks/show.html.slim index 1f24fc5c1..09edbad2e 100644 --- a/app/views/networks/show.html.slim +++ b/app/views/networks/show.html.slim @@ -7,14 +7,12 @@    / Below is secundary actions & optional contents (filters, ...)    .row      .col-lg-12.text-right.mb-sm -      - if policy(Chouette::Network).create? -        = link_to t('networks.actions.new'), new_line_referential_network_path(@line_referential), class: 'btn btn-primary' -      - if policy(@network).update? -        = link_to t('networks.actions.edit'), edit_line_referential_network_path(@line_referential, @network), class: 'btn btn-primary' -      - if policy(@network).destroy? -        = link_to line_referential_network_path(@line_referential, @network), method: :delete, data: { confirm: t('networks.actions.destroy_confirm')}, class: 'btn btn-primary' do -          span.fa.fa-trash -          span = t('networks.actions.destroy') +      - @network.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 diff --git a/app/views/referential_companies/index.html.slim b/app/views/referential_companies/index.html.slim index 85d1d416d..23eea40ce 100644 --- a/app/views/referential_companies/index.html.slim +++ b/app/views/referential_companies/index.html.slim @@ -22,12 +22,32 @@      - if @companies.any?        .row          .col-lg-12 -          = table_builder @companies, -            { 'ID Codifligne' => Proc.new { |n| n.try(:objectid).try(:local_id) }, -            :name => 'name', :phone => 'phone', :email => 'email', :url => 'url' }, -            [:show, :edit, :delete], -            [], -            'table has-search' +          = table_builder_2 @companies, +            [ \ +              TableBuilderHelper::Column.new( \ +                  name: 'ID Codifligne', \ +                  attribute: Proc.new { |n| n.try(:objectid).try(:local_id) }, \ +                  sortable: false \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :phone, \ +                attribute: 'phone' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :email, \ +                attribute: 'email' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :url, \ +                attribute: 'url' \ +              ) \ +            ], +            links: [:show, :edit], +            cls: 'table has-search'            = new_pagination @companies, 'pull-right' diff --git a/app/views/referential_lines/_lines.html.slim b/app/views/referential_lines/_lines.html.slim deleted file mode 100644 index 54f22c978..000000000 --- a/app/views/referential_lines/_lines.html.slim +++ /dev/null @@ -1,13 +0,0 @@ -- if @lines.any? -  = table_builder @lines, -    { 'Oid' => Proc.new { |n| n.objectid.local_id }, :id => 'id', -    :number => 'number', :name => 'name', :network => Proc.new { |n| n.try(:network).try(:name) }, :company => Proc.new { |n| n.try(:company).try(:name) } }, -    [:show], -    [], -    'table table-bordered' - -  .text-center -    = will_paginate @lines, container: false, renderer: RemoteBootstrapPaginationLinkRenderer - -- else -  = replacement_msg t('referential_lines.search_no_results') diff --git a/app/views/referential_lines/index.html.slim b/app/views/referential_lines/index.html.slim deleted file mode 100644 index 6b4fd5f38..000000000 --- a/app/views/referential_lines/index.html.slim +++ /dev/null @@ -1,33 +0,0 @@ -= title_tag t('lines.index.title') - -= render partial: 'shared/lines_search_form', locals: { referential: @referential } - -#lines -  = render 'lines' - -- content_for :sidebar do -  ul.actions -    - if policy(Chouette::Line).create? && @referential.organisation == current_organisation -      li -        = link_to t('lines.actions.new'), new_referential_line_path(@referential), class: 'add' - -  - if policy(Chouette::Line).destroy? -    #multiple_selection_menu -      h4 = t(".multi_selection") - -      .disabled -        a.enable href="#" -          = t(".multi_selection_enable") - -      .enabled style="display: none;" -        a.disable href="#" -          = t(".multi_selection_disable") - -        ul.actions -          = link_to t(".delete_selected"), referential_lines_path(@referential), "data-multiple-method" => "delete", :class => "remove", "confirmation-text" => t("lines.actions.destroy_selection_confirm") - -      a.select_all href="#" -        = t(".select_all") -      = " | " -      a.deselect_all href="#" -        = t(".deselect_all") diff --git a/app/views/referential_lines/show.html.slim b/app/views/referential_lines/show.html.slim index 14e300aa2..34c296932 100644 --- a/app/views/referential_lines/show.html.slim +++ b/app/views/referential_lines/show.html.slim @@ -7,21 +7,12 @@    / Below is secundary actions & optional contents    .row      .col-lg-12.text-right.mb-sm -      = link_to @line.human_attribute_name(:footnotes), referential_line_footnotes_path(@referential, @line), class: 'btn btn-primary' -      = link_to t('routing_constraint_zones.index.title'), referential_line_routing_constraint_zones_path(@referential, @line), class: 'btn btn-primary' - -      - if policy(Chouette::Line).create? && @referential.organisation == current_organisation -        = link_to t('actions.new'), new_referential_line_path(@referential), class: 'btn btn-primary' -      - if policy(@line).update? -        = link_to t('actions.edit'), edit_referential_line_path(@referential, @line), class: 'btn btn-primary' -      - if policy(@line).destroy? -        = link_to referential_line_path(@referential, @line), method: :delete, data: {confirm: t('lines.actions.destroy_confirm')}, class: 'btn btn-primary' do -          span.fa.fa-trash -          span = t('actions.destroy') - -      - if !@line.hub_restricted? || (@line.hub_restricted? && @line.routes.size < 2) -        - if policy(Chouette::Route).create? && @referential.organisation == current_organisation -          = link_to t('routes.actions.new'), new_referential_line_route_path(@referential, @line), class: 'btn btn-primary' +      - @line.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 diff --git a/app/views/referential_networks/index.html.slim b/app/views/referential_networks/index.html.slim index d6c52d352..c58a91321 100644 --- a/app/views/referential_networks/index.html.slim +++ b/app/views/referential_networks/index.html.slim @@ -22,11 +22,20 @@      - if @networks.any?        .row          .col-lg-12 -          = table_builder @networks, -            { 'ID Codifligne' => Proc.new { |n| n.try(:objectid).try(:local_id) }, :name => 'name' }, -            [:show, :edit, :delete], -            [], -            'table has-search' +          = table_builder_2 @networks, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'ID Codifligne', \ +                attribute: Proc.new { |n| n.try(:objectid).try(:local_id) }, \ +                sortable: false \ +              ), +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ) \ +            ], +            links: [:show], +            cls: 'table has-search'            = new_pagination @networks, 'pull-right' diff --git a/app/views/referential_networks/show.html.slim b/app/views/referential_networks/show.html.slim index 59bdd0dee..b9d9d5d8b 100644 --- a/app/views/referential_networks/show.html.slim +++ b/app/views/referential_networks/show.html.slim @@ -7,14 +7,12 @@    / Below is secundary actions & optional contents (filters, ...)    .row      .col-lg-12.text-right.mb-sm -      - if policy(Chouette::Network).create? -        = link_to t('networks.actions.new'), new_referential_network_path(@referential), class: 'btn btn-primary' -      - if policy(@network).update? -        = link_to t('networks.actions.edit'), edit_referential_network_path(@referential, @network), class: 'btn btn-primary' -      - if policy(@network).destroy? -        = link_to referential_network_path(@referential, @network), method: :delete, data: { confirm: t('networks.actions.destroy_confirm')}, class: 'btn btn-primary' do -          span.fa.fa-trash -          span = t('networks.actions.destroy') +      - @network.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 diff --git a/app/views/referential_stop_areas/show.html.slim b/app/views/referential_stop_areas/show.html.slim index 7932b6c2e..d594665f7 100644 --- a/app/views/referential_stop_areas/show.html.slim +++ b/app/views/referential_stop_areas/show.html.slim @@ -5,14 +5,12 @@    .row      .col-lg-12.text-right.mb-sm -      - if policy(Chouette::StopArea).new? -        = link_to t('stop_areas.actions.new'), new_stop_area_referential_stop_area_path(@stop_area_referential), class: 'btn btn-primary' -      - if policy(@stop_area).update? -        = link_to t('stop_areas.actions.edit'), edit_stop_area_referential_stop_area_path(@stop_area_referential, @stop_area), class: 'btn btn-primary' -      - if policy(@stop_area).destroy? -        = link_to stop_area_referential_stop_area_path(@stop_area_referential, @stop_area), method: :delete, data: {confirm: t('stop_areas.actions.destroy_confirm')}, class: 'btn btn-primary' do -          span.fa.fa-trash -          span = t('stop_areas.actions.destroy') +      - @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 diff --git a/app/views/referentials/_filters.html.slim b/app/views/referentials/_filters.html.slim index 4b09ce1a6..9302ccaa8 100644 --- a/app/views/referentials/_filters.html.slim +++ b/app/views/referentials/_filters.html.slim @@ -8,15 +8,15 @@    .ffg-row      .form-group.togglable -      = f.label @reflines.human_attribute_name(:transport_mode), required: false, class: 'control-label' +      = f.label Chouette::Line.human_attribute_name(:transport_mode), required: false, class: 'control-label'        = f.input :transport_mode_eq_any, collection: @referential.lines.pluck(:transport_mode).uniq.compact, as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + t("enumerize.line.transport_mode.#{l}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list' }      .form-group.togglable -      = f.label @reflines.human_attribute_name(:network), required: false, class: 'control-label' +      = f.label Chouette::Line.human_attribute_name(:network), required: false, class: 'control-label'        = f.input :network_id_eq_any, collection: LineReferential.first.networks.order('name').pluck(:id), as: :check_boxes, label: false, label_method: lambda{|l| ("<span>#{LineReferential.first.networks.find(l).name}</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list' }      .form-group.togglable -      = f.label @reflines.human_attribute_name(:company), required: false, class: 'control-label' +      = f.label Chouette::Line.human_attribute_name(:company), required: false, class: 'control-label'        = f.input :company_id_eq_any, collection: LineReferential.first.companies.order('name').pluck(:id), as: :check_boxes, label: false, label_method: lambda{|l| ("<span>#{LineReferential.first.companies.find(l).name}</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list' }    .actions diff --git a/app/views/referentials/show.html.slim b/app/views/referentials/show.html.slim index 17ba8ad88..d3687c3a7 100644 --- a/app/views/referentials/show.html.slim +++ b/app/views/referentials/show.html.slim @@ -38,17 +38,40 @@        .row          .col-lg-12            / ID Codif, nom court, nom de la ligne, réseau, mode, transporteur principal, actions = [show, edit_notes] -          = table_builder @reflines, -            { 'ID Codifligne' => Proc.new { |n| n.objectid.local_id }, -            :number => 'number', -            :name => 'name', -            :deactivated => Proc.new{ |n| n.deactivated? ? t('false') : t('true') }, -            :transport_mode => Proc.new{ |n| n.transport_mode ? t("enumerize.line.transport_mode.#{n.transport_mode}") : '' }, -            'networks.name' => Proc.new { |n| n.try(:network).try(:name) }, -            'companies.name' => Proc.new { |n| n.try(:company).try(:name) } }, -            [:show], -            [], -            'table has-filter has-search' +          = table_builder_2 @reflines, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'ID Codifligne', \ +                attribute: Proc.new { |n| n.objectid.local_id }, \ +                sortable: false \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :number, \ +                attribute: 'number' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :deactivated, \ +                attribute: Proc.new { |n| n.deactivated? ? t('false') : t('true') } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :transport_mode, \ +                attribute: Proc.new { |n| n.transport_mode ? t("enumerize.line.transport_mode.#{n.transport_mode}") : '' }, \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: 'networks.name', \ +                attribute: Proc.new { |n| n.try(:network).try(:name) } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: 'companies.name', \ +                attribute: Proc.new { |n| n.try(:company).try(:name) } \ +              ) \ +            ], +            links: [:show], +            cls: 'table has-filter has-search'            = new_pagination @reflines, 'pull-right' diff --git a/app/views/routes/show.html.slim b/app/views/routes/show.html.slim index eee19d85a..f2f8f1a9d 100644 --- a/app/views/routes/show.html.slim +++ b/app/views/routes/show.html.slim @@ -33,18 +33,44 @@      .row        .col-lg-12          - if @route_sp.any? -          = table_builder @route_sp, -            { 'ID Reflex' => Proc.new {|s| s.try(:stop_area).try(:user_objectid)}, -              :name => Proc.new {|s| s.try(:stop_area).try(:name)}, -              :deleted_at => Proc.new{|s| s.try(:stop_area).deleted_at ? t('false') : t('true')}, -              :zip_code => Proc.new {|s| s.try(:stop_area).try(:zip_code)}, -              :city_name => Proc.new {|s| s.try(:stop_area).try(:city_name)}, -              :for_boarding => Proc.new {|s| t("stop_points.stop_point.for_boarding.#{s.for_boarding}")}, -              :for_alighting => Proc.new {|s| t("stop_points.stop_point.for_alighting.#{s.for_alighting}")}, -              :position => 'position' }, -            [:show], -            [], -            'table' +          = table_builder_2 @route_sp, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'ID Reflex', \ +                attribute: Proc.new { |s| s.try(:stop_area).try(:user_objectid) }, \ +                sortable: false \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: Proc.new {|s| s.try(:stop_area).try(:name)} \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :deleted_at, \ +                attribute: Proc.new { |s| s.try(:stop_area).deleted_at ? t('false') : t('true') } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :zip_code, \ +                attribute: Proc.new { |s| s.try(:stop_area).try(:zip_code) } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :city_name, \ +                attribute: Proc.new { |s| s.try(:stop_area).try(:city_name) } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :for_boarding, \ +                attribute: Proc.new { |s| t("stop_points.stop_point.for_boarding.#{s.for_boarding}") } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :for_alighting, \ +                attribute: Proc.new { |s| t("stop_points.stop_point.for_alighting.#{s.for_alighting}") } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :position, \ +                attribute: 'position' \ +              ), \ +            ], +            links: [:show], +            cls: 'table'          - else            = replacement_msg t('stop_areas.search_no_results') diff --git a/app/views/routing_constraint_zones/index.html.slim b/app/views/routing_constraint_zones/index.html.slim index 596ea9e91..6b3e73096 100644 --- a/app/views/routing_constraint_zones/index.html.slim +++ b/app/views/routing_constraint_zones/index.html.slim @@ -16,13 +16,28 @@      - if @routing_constraint_zones.any?        .row          .col-lg-12 -          = table_builder @routing_constraint_zones, -            { 'ID' => Proc.new { |n| n.try(:objectid).try(:local_id) }, -              :name => 'name', :stop_points_count => 'stop_points_count', -              :route => 'route_name' }, -            [:show, :edit, :delete], -            [], -            'table has-filter has-search' +          = table_builder_2 @routing_constraint_zones, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'ID', \ +                attribute: Proc.new { |n| n.try(:objectid).try(:local_id) }, \ +                sortable: false \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :stop_points_count, \ +                attribute: 'stop_points_count' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :route, \ +                attribute: 'route_name' \ +              ), \ +            ], +            links: [:show], +            cls: 'table has-filter has-search'      - unless @routing_constraint_zones.any?        .row.mt-xs diff --git a/app/views/stop_areas/_filters.html.slim b/app/views/stop_areas/_filters.html.slim index b7c57e842..3b99f377c 100644 --- a/app/views/stop_areas/_filters.html.slim +++ b/app/views/stop_areas/_filters.html.slim @@ -7,11 +7,11 @@            span.fa.fa-search    .ffg-row -    = f.input :zip_code_cont, placeholder: t('.zip_code'), label: @stop_areas.human_attribute_name(:zip_code), required: false -    = f.input :city_name_cont, placeholder: t('.city_name'), label: @stop_areas.human_attribute_name(:city_name), required: false +    = f.input :zip_code_cont, placeholder: t('.zip_code'), label: Chouette::StopArea.human_attribute_name(:zip_code), required: false +    = f.input :city_name_cont, placeholder: t('.city_name'), label: Chouette::StopArea.human_attribute_name(:city_name), required: false      .form-group.togglable -      = f.label @stop_areas.human_attribute_name(:area_type), required: false, class: 'control-label' +      = f.label Chouette::StopArea.human_attribute_name(:area_type), required: false, class: 'control-label'        = f.input :area_type_eq_any, collection: Chouette::StopArea.area_type.options.sort, as: :check_boxes, label: false, label_method: lambda{|w| ("<span>" + t("enumerize.stop_area.area_type.#{w[1]}") + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list' }    .actions diff --git a/app/views/stop_areas/index.html.slim b/app/views/stop_areas/index.html.slim index 338e7e878..adb023633 100644 --- a/app/views/stop_areas/index.html.slim +++ b/app/views/stop_areas/index.html.slim @@ -16,12 +16,40 @@      - if @stop_areas.any?        .row          .col-lg-12 -          = table_builder @stop_areas, -            { 'ID Reflex' => Proc.new { |n| n.try(:user_objectid) }, :name => 'name', :registration_number => 'registration_number', :deleted_at => Proc.new{|s| s.deleted_at ? t('false') : t('true')}, -            :zip_code => 'zip_code', :city_name => 'city_name', :area_type => Proc.new{|s| (s.area_type.nil? ? '-' : t("enumerize.stop_area.area_type.#{s.try(:area_type)}"))} }, -            [:show, :edit, :delete], -            [], -            'table has-filter has-search' +          = table_builder_2 @stop_areas, +            [ \ +              TableBuilderHelper::Column.new( \ +                name: 'ID Reflex', \ +                attribute: Proc.new { |n| n.try(:user_objectid) }, \ +                sortable: false \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :name, \ +                attribute: 'name' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :registration_number, \ +                attribute: 'registration_number' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :deleted_at, \ +                attribute: Proc.new { |s| s.deleted_at ? t('false') : t('true') } \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :zip_code, \ +                attribute: 'zip_code' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :city_name, \ +                attribute: 'city_name' \ +              ), \ +              TableBuilderHelper::Column.new( \ +                key: :area_type, \ +                attribute: Proc.new { |s| (s.area_type.nil? ? '-' : t("enumerize.stop_area.area_type.#{s.try(:area_type)}")) } \ +              ), \ +            ], +            links: [:show, :edit, :delete], +            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 0427554ef..05f66a33a 100644 --- a/app/views/stop_areas/show.html.slim +++ b/app/views/stop_areas/show.html.slim @@ -5,14 +5,12 @@    .row      .col-lg-12.text-right.mb-sm -      - if policy(Chouette::StopArea).new? -        = link_to t('stop_areas.actions.new'), new_stop_area_referential_stop_area_path(@stop_area_referential), class: 'btn btn-primary' -      - if policy(@stop_area).update? -        = link_to t('stop_areas.actions.edit'), edit_stop_area_referential_stop_area_path(@stop_area_referential, @stop_area), class: 'btn btn-primary' -      - if policy(@stop_area).destroy? -        = link_to stop_area_referential_stop_area_path(@stop_area_referential, @stop_area), method: :delete, data: {confirm: t('stop_areas.actions.destroy_confirm')}, class: 'btn btn-primary' do -          span.fa.fa-trash -          span = t('stop_areas.actions.destroy') +      - @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  | 
