diff options
| author | Zog | 2018-01-16 16:08:19 +0100 |
|---|---|---|
| committer | Zog | 2018-01-25 17:17:59 +0100 |
| commit | 305c10faa98bcf157ca114293b634da32a16cc37 (patch) | |
| tree | 0118b32900fb62243b68aa1693cf50dcddd03d78 | |
| parent | 936650bb189104bf9795e0a7e9b5b8044e59a652 (diff) | |
| download | chouette-core-305c10faa98bcf157ca114293b634da32a16cc37.tar.bz2 | |
Refs #5586 @1h; Ensure retrocompatibility
And remove snapshots (we don't need it anymore)
| -rw-r--r-- | app/assets/stylesheets/components/_buttons.sass | 4 | ||||
| -rw-r--r-- | app/assets/stylesheets/components/_dropdown.sass | 22 | ||||
| -rw-r--r-- | app/helpers/table_builder_helper.rb | 34 | ||||
| -rw-r--r-- | app/views/layouts/navigation/_page_header.html.slim | 20 | ||||
| -rw-r--r-- | lib/af83/enhanced_decorator.rb | 1 | ||||
| -rw-r--r-- | spec/views/lines/__snapshots__/lines/index.snap | 1 | ||||
| -rw-r--r-- | spec/views/lines/index.html.slim_spec.rb | 6 |
7 files changed, 56 insertions, 32 deletions
diff --git a/app/assets/stylesheets/components/_buttons.sass b/app/assets/stylesheets/components/_buttons.sass index e70c89733..9a99ba8bc 100644 --- a/app/assets/stylesheets/components/_buttons.sass +++ b/app/assets/stylesheets/components/_buttons.sass @@ -148,7 +148,6 @@ table, .table > li > a, > li > button padding: 5px 15px white-space: nowrap - color: black padding: 5px 15px font-weight: normal line-height: 1.42857 @@ -156,8 +155,7 @@ table, .table font-size: 14px &:hover text-decoration: none - color: #262626 - background-color: whitesmoke + &:not(:first-child) position: relative margin-top: 11px diff --git a/app/assets/stylesheets/components/_dropdown.sass b/app/assets/stylesheets/components/_dropdown.sass index 8a8d69063..a0d217b14 100644 --- a/app/assets/stylesheets/components/_dropdown.sass +++ b/app/assets/stylesheets/components/_dropdown.sass @@ -18,9 +18,19 @@ background-color: whitesmoke outline: none - > .disabled > a, > .disabled > button - cursor: not-allowed - &, &:hover, &:focus - color: rgba($darkgrey, 0.5) - background-color: transparent - outline: none + &, & > ul + > .disabled > a, > .disabled > button + cursor: not-allowed + &, &:hover, &:focus + color: rgba($darkgrey, 0.5) + background-color: transparent + outline: none + + > ul > li > a + display: block + padding: 3px 20px + clear: both + font-weight: normal + line-height: 1.42857 + color: #333333 + white-space: nowrap diff --git a/app/helpers/table_builder_helper.rb b/app/helpers/table_builder_helper.rb index bece3bb2a..e29695b55 100644 --- a/app/helpers/table_builder_helper.rb +++ b/app/helpers/table_builder_helper.rb @@ -188,7 +188,9 @@ module TableBuilderHelper end # Inserts a blank column for the gear menu - if has_links || collection.last.try(:action_links).try(:any?) + last_item = collection.last + action_links = last_item && last_item.respond_to?(:action_links) && (last_item&.action_links&.is_a?(AF83::Decorator::ActionLinks) ? last_item.action_links(params[:action]) : last_item.action_links) + if has_links || action_links.try(:any?) hcont << content_tag(:th, '') end @@ -267,7 +269,9 @@ module TableBuilderHelper end end - if links.any? || item.try(:action_links).try(:any?) + action_links = item && item.respond_to?(:action_links) && (item.action_links.is_a?(AF83::Decorator::ActionLinks) ? item.action_links(params[:action]) : item.action_links) + + if links.any? || action_links.try(:any?) bcont << content_tag( :td, build_links(item, links), @@ -306,14 +310,26 @@ module TableBuilderHelper content_tag :span, '', class: 'fa fa-cog' end - menu = content_tag :div, class: 'dropdown-menu' do - item.action_links(params[:action]).grouped_by(:primary, :secondary, :footer).map do |group, _links| - if _links.any? - content_tag :ul, class: group do - _links.map{|link| gear_menu_link(link)}.join.html_safe + action_links = item.action_links + if action_links.is_a?(AF83::Decorator::ActionLinks) + menu = content_tag :div, class: 'dropdown-menu' do + item.action_links(params[:action]).grouped_by(:primary, :secondary, :footer).map do |group, _links| + if _links.any? + content_tag :ul, class: group do + _links.map{|link| gear_menu_link(link)}.join.html_safe + end end - end - end.join.html_safe + end.join.html_safe + end + else + menu = content_tag :ul, class: 'dropdown-menu' do + ( + CustomLinks.new(item, pundit_user, links, referential).links + + action_links.select { |link| link.is_a?(Link) } + ).map do |link| + gear_menu_link(link) + end.join.html_safe + end end content_tag :div, trigger + menu, class: 'btn-group' diff --git a/app/views/layouts/navigation/_page_header.html.slim b/app/views/layouts/navigation/_page_header.html.slim index 353361992..c916c4037 100644 --- a/app/views/layouts/navigation/_page_header.html.slim +++ b/app/views/layouts/navigation/_page_header.html.slim @@ -1,3 +1,6 @@ +- action_links = resource.action_links(params[:action]) rescue nil +- action_links ||= decorated_collection.action_links(params[:action]) rescue nil + div.page_header div.container-fluid div.row @@ -18,17 +21,16 @@ div.page_header = yield :page_header_meta - if content_for? :page_header_actions = yield :page_header_actions + - if action_links&.primary&.any? + - action_links.primary.each do |link| + = link.to_html do |l| + - l.class "btn btn-default #{l.disabled ? "disabled" : ""}" - - action_links = resource.action_links(params[:action]) rescue nil - - action_links ||= decorated_collection.action_links(params[:action]) rescue nil - - if action_links&.primary&.any? || action_links&.secondary&.any? + - if action_links&.secondary&.any? || content_for?(:page_header_content) .row .col-lg-12.text-right.mb-sm - - action_links.primary.each do |link| - = link.to_html do |l| - - l.class "btn btn-primary #{l.disabled ? "disabled" : ""} sticky-action" - - action_links.secondary.each do |link| + - action_links && action_links.secondary.each do |link| = link.to_html do |l| - l.class "btn btn-primary #{l.disabled ? "disabled" : ""}" - - if content_for? :page_header_content - = yield :page_header_content + - if content_for? :page_header_content + = yield :page_header_content diff --git a/lib/af83/enhanced_decorator.rb b/lib/af83/enhanced_decorator.rb index 41cc17f85..ad9a75000 100644 --- a/lib/af83/enhanced_decorator.rb +++ b/lib/af83/enhanced_decorator.rb @@ -58,6 +58,7 @@ module AF83::EnhancedDecorator end def action_links action=:index, opts={} + @action = action&.to_sym links = AF83::Decorator::ActionLinks.new links: self.class.action_links(action), context: self, action: action group = opts[:group] links = links.for_group opts[:group] diff --git a/spec/views/lines/__snapshots__/lines/index.snap b/spec/views/lines/__snapshots__/lines/index.snap deleted file mode 100644 index f68f4f13b..000000000 --- a/spec/views/lines/__snapshots__/lines/index.snap +++ /dev/null @@ -1 +0,0 @@ -<div class="page_content"><div class="container-fluid"><div class="row"><div class="col-lg-12"><form class="form form-filter" id="chouette/line_search" action="/line_referentials/4/lines" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" /><div class="ffg-row"><div class="input-group search_bar"><input placeholder="Recherche par nom, nom court ou ID Codif..." class="form-control" type="search" name="q[name_or_number_or_objectid_cont]" id="q_name_or_number_or_objectid_cont" /><span class="input-group-btn"><button class="btn btn-default" id="search-btn" type="submit"><span class="fa fa-search"></span></button></span></div></div><div class="ffg-row"><div class="form-group togglable"><label class="control-label" for="q_Réseau">Réseau</label><div class="form-group checkbox_list"><input type="hidden" name="q[network_id_eq_any][]" value="" /></div></div><div class="form-group togglable"><label class="control-label" for="q_Transporteur principal">Transporteur principal</label><div class="form-group checkbox_list"><input type="hidden" name="q[company_id_eq_any][]" value="" /></div></div><div class="form-group togglable"><label class="control-label" for="q_Mode de transport">Mode de transport</label><div class="form-group checkbox_list"><span class="checkbox"><label for="q_transport_mode_eq_any_bus"><input class="check_boxes optional" type="checkbox" value="bus" name="q[transport_mode_eq_any][]" id="q_transport_mode_eq_any_bus" /><span>Bus</span></label></span><span class="checkbox"><label for="q_transport_mode_eq_any_funicular"><input class="check_boxes optional" type="checkbox" value="funicular" name="q[transport_mode_eq_any][]" id="q_transport_mode_eq_any_funicular" /><span>Funiculaire</span></label></span><span class="checkbox"><label for="q_transport_mode_eq_any_metro"><input class="check_boxes optional" type="checkbox" value="metro" name="q[transport_mode_eq_any][]" id="q_transport_mode_eq_any_metro" /><span>Métro</span></label></span><span class="checkbox"><label for="q_transport_mode_eq_any_rail"><input class="check_boxes optional" type="checkbox" value="rail" name="q[transport_mode_eq_any][]" id="q_transport_mode_eq_any_rail" /><span>Train</span></label></span><span class="checkbox"><label for="q_transport_mode_eq_any_tram"><input class="check_boxes optional" type="checkbox" value="tram" name="q[transport_mode_eq_any][]" id="q_transport_mode_eq_any_tram" /><span>Tramway</span></label></span><input type="hidden" name="q[transport_mode_eq_any][]" value="" /></div></div><div class="form-group togglable"><label class="control-label" for="q_Sous mode de transport">Sous mode de transport</label><div class="form-group checkbox_list"><span class="checkbox"><label for="q_transport_submode_eq_any_highfrequencybus"><input class="check_boxes optional" type="checkbox" value="highFrequencyBus" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_highfrequencybus" /><span>Bus à haute fréquence</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_demandandresponsebus"><input class="check_boxes optional" type="checkbox" value="demandAndResponseBus" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_demandandresponsebus" /><span>Bus à la demande</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_nightbus"><input class="check_boxes optional" type="checkbox" value="nightBus" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_nightbus" /><span>Bus de nuit</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_expressbus"><input class="check_boxes optional" type="checkbox" value="expressBus" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_expressbus" /><span>Bus express</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_interregionalrail"><input class="check_boxes optional" type="checkbox" value="interregionalRail" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_interregionalrail" /><span>Intercités</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_airportlinkbus"><input class="check_boxes optional" type="checkbox" value="airportLinkBus" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_airportlinkbus" /><span>Navette interne aéroport</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_regionalrail"><input class="check_boxes optional" type="checkbox" value="regionalRail" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_regionalrail" /><span>TER</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_suburbanrailway"><input class="check_boxes optional" type="checkbox" value="suburbanRailway" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_suburbanrailway" /><span>Train</span></label></span><span class="checkbox"><label for="q_transport_submode_eq_any_railshuttle"><input class="check_boxes optional" type="checkbox" value="railShuttle" name="q[transport_submode_eq_any][]" id="q_transport_submode_eq_any_railshuttle" /><span>Val</span></label></span><input type="hidden" name="q[transport_submode_eq_any][]" value="" /></div></div></div><div class="actions"><a class="btn btn-link" href="/line_referentials/4/lines">Effacer</a><input type="submit" name="commit" value="Filtrer" class="btn btn-default" /></div></form></div></div><div class="row"><div class="col-lg-12"><table class="table has-filter has-search"><thead><tr><th>ID Codifligne</th><th><a href="/line_referentials/4/lines?direction=desc&sort=number">Numéro<span class="orderers"><span class="fa fa-sort-asc active"></span><span class="fa fa-sort-desc "></span></span></a></th><th><a href="/line_referentials/4/lines?direction=desc&sort=name">Nom de la ligne<span class="orderers"><span class="fa fa-sort-asc active"></span><span class="fa fa-sort-desc "></span></span></a></th><th><a href="/line_referentials/4/lines?direction=desc&sort=deactivated">Activé<span class="orderers"><span class="fa fa-sort-asc active"></span><span class="fa fa-sort-desc "></span></span></a></th><th><a href="/line_referentials/4/lines?direction=desc&sort=networks.name">Réseau<span class="orderers"><span class="fa fa-sort-asc active"></span><span class="fa fa-sort-desc "></span></span></a></th><th><a href="/line_referentials/4/lines?direction=desc&sort=companies.name">Transporteur principal<span class="orderers"><span class="fa fa-sort-asc active"></span><span class="fa fa-sort-desc "></span></span></a></th><th><a href="/line_referentials/4/lines?direction=desc&sort=transport_mode">Mode de transport<span class="orderers"><span class="fa fa-sort-asc active"></span><span class="fa fa-sort-desc "></span></span></a></th><th><a href="/line_referentials/4/lines?direction=desc&sort=transport_submode">Sous mode de transport<span class="orderers"><span class="fa fa-sort-asc active"></span><span class="fa fa-sort-desc "></span></span></a></th><th></th></tr></thead><tbody><tr class="line-1"><td>1</td><td>1</td><td title="Voir"><a href="/line_referentials/4/lines/1">Line 1</a></td><td><span class="fa fa-check-circle fa-lg text-success"></span>Oui</td><td>Network 1</td><td>Company 1</td><td>Bus</td><td>-</td><td class="actions"><div class="btn-group"><div class="btn dropdown-toggle" data-toggle="dropdown"><span class="fa fa-cog"></span></div><ul class="dropdown-menu"><li><a href="/line_referentials/4/lines/1">Consulter</a></li><li><a href="/line_referentials/4/networks/1">Voir le réseau</a></li><li><a href="/line_referentials/4/companies/1">Voir le transporteur principal</a></li></ul></div></td></tr><tr class="line-2"><td>2</td><td>2</td><td title="Voir"><a href="/line_referentials/4/lines/2">Line 2</a></td><td><span class="fa fa-check-circle fa-lg text-success"></span>Oui</td><td>Network 2</td><td>Company 2</td><td>Bus</td><td>-</td><td class="actions"><div class="btn-group"><div class="btn dropdown-toggle" data-toggle="dropdown"><span class="fa fa-cog"></span></div><ul class="dropdown-menu"><li><a href="/line_referentials/4/lines/2">Consulter</a></li><li><a href="/line_referentials/4/networks/2">Voir le réseau</a></li><li><a href="/line_referentials/4/companies/2">Voir le transporteur principal</a></li></ul></div></td></tr></tbody></table><div class="pagination pull-right">Liste des lignes 1 à 2 sur 2</div></div></div></div></div>
\ No newline at end of file diff --git a/spec/views/lines/index.html.slim_spec.rb b/spec/views/lines/index.html.slim_spec.rb index 9237487e3..fb436c545 100644 --- a/spec/views/lines/index.html.slim_spec.rb +++ b/spec/views/lines/index.html.slim_spec.rb @@ -19,7 +19,9 @@ describe "/lines/index", :type => :view do deactivated_line allow(view).to receive(:collection).and_return(lines) allow(view).to receive(:current_referential).and_return(line_referential) + allow(view).to receive(:params).and_return({action: :index}) controller.request.path_parameters[:line_referential_id] = line_referential.id + controller.request.path_parameters[:action] = "index" render end @@ -32,10 +34,6 @@ describe "/lines/index", :type => :view do common_items.call() it { should have_the_right_number_of_links(lines, 3) } - it "should match the snapshot" do - expect(rendered).to match_snapshot("lines/index") - end - with_permission "lines.change_status" do common_items.call() it { should have_link_for_each_item(lines, "deactivate", -> (line){ view.deactivate_line_referential_line_path(line_referential, line) }) } |
