Skip to content

Commit

Permalink
Add sub navigation tab and their respective routes to edit page
Browse files Browse the repository at this point in the history
Add new routes and helper for tabs
  • Loading branch information
davidtrussler authored and syed-ali-tw committed Sep 19, 2024
1 parent 0c830c4 commit e1efb14
Show file tree
Hide file tree
Showing 10 changed files with 136 additions and 5 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ gem "gds-sso"
gem "govspeak"
gem "govuk_admin_template"
gem "govuk_app_config"
gem "govuk_publishing_components"
gem 'govuk_publishing_components'

Check failure on line 18 in Gemfile

View workflow job for this annotation

GitHub Actions / Lint Ruby / Run RuboCop

Style/StringLiterals: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping. (https://rubystyle.guide#consistent-string-literals)
gem "govuk_sidekiq"
gem "has_scope"
gem "html2text"
Expand Down
6 changes: 3 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,10 @@ GEM
sentry-rails (~> 5.3)
sentry-ruby (~> 5.3)
statsd-ruby (~> 1.5)
govuk_personalisation (0.16.0)
govuk_personalisation (1.0.0)
plek (>= 1.9.0)
rails (>= 6, < 8)
govuk_publishing_components (41.1.1)
govuk_publishing_components (43.3.0)
govuk_app_config
govuk_personalisation (>= 0.7.0)
kramdown
Expand Down Expand Up @@ -688,7 +688,7 @@ GEM
rexml (3.3.6)
strscan
rinku (2.0.6)
rouge (4.3.0)
rouge (4.4.0)
rubocop (1.64.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
Expand Down
2 changes: 2 additions & 0 deletions app/assets/stylesheets/application.scss
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
$govuk-page-width: 1140px;

// GOVUK Design System
@import "govuk/base";
@import 'govuk_publishing_components/govuk_frontend_support';
@import 'govuk_publishing_components/component_support';
@import 'govuk_publishing_components/components/button';
Expand All @@ -23,6 +24,7 @@ $govuk-page-width: 1140px;
@import 'govuk_publishing_components/components/notice';
@import 'govuk_publishing_components/components/previous-and-next-navigation';
@import 'govuk_publishing_components/components/search';
@import 'govuk_publishing_components/components/secondary-navigation';
@import 'govuk_publishing_components/components/select';
@import 'govuk_publishing_components/components/skip-link';
@import 'govuk_publishing_components/components/success-alert';
Expand Down
20 changes: 20 additions & 0 deletions app/controllers/editions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ def show
render action: "show"
end

def metadata
render action: "show"
end

def history
render action: "show"
end

def admin
render action: "show"
end

def linking
render action: "show"
end

def unpublish
render action: "show"
end

protected

def setup_view_paths
Expand Down
32 changes: 32 additions & 0 deletions app/helpers/tabbed_nav_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
module TabbedNavHelper
def edition_nav_items(edition)
nav_items = []
items = %w[edit tagging metadata history admin related_external_links unpublish]

items.each do |item|
nav_items << standard_nav_items(item, edition)
end

nav_items.flatten
end

def standard_nav_items(item, edition)
url = item.eql?("edit") ? url_for([:edition, { id: edition.id }]) : url_for([:edition, { action: item, id: edition.id }])

label = Edition::Tab[item].title
href = url
current = request.path == url

edit_nav_item(label, href, current)
end

def edit_nav_item(label, href, current)
[
{
label:,
href:,
current:,
},
]
end
end
4 changes: 4 additions & 0 deletions app/views/editions/_secondary_navigation.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<%= render "govuk_publishing_components/components/secondary_navigation", {
aria_label: "Document navigation",
items: edition_nav_items(@edition),
} %>
4 changes: 4 additions & 0 deletions app/views/editions/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,8 @@
],
} %>
</div>

<div class="govuk-grid-column-full">
<%= render partial: "secondary_navigation" %>
</div>
</div>
11 changes: 10 additions & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,16 @@
resources :artefacts, only: %i[new create update]

constraints FeatureConstraint.new("design_system_edit") do
resources :editions, only: %i[show index]
resources :editions do
member do
get "metadata"
get "history"
get "admin"
get "related_external_links", to: "editions#linking"
get "tagging", to: "editions#linking"
get "unpublish"
end
end
end

get "editions/:id" => "legacy_editions#show"
Expand Down
13 changes: 13 additions & 0 deletions test/integration/edition_edit_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,17 @@ class EditionEditTest < IntegrationTest
assert row[2].has_text?("1")
assert row[2].has_text?("Draft")
end

should "show all the tabs for the edit" do
edition = FactoryBot.create(:guide_edition, title: "Edit page title", state: "draft")
visit edition_path(edition)

assert page.has_text?("Edit")
assert page.has_text?("Tagging")
assert page.has_text?("Metadata")
assert page.has_text?("History and notes")
assert page.has_text?("Admin")
assert page.has_text?("Related external links")
assert page.has_text?("Unpublish")
end
end
47 changes: 47 additions & 0 deletions test/unit/helpers/admin/tabbed_nav_helper_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
require "test_helper"

class TabbedNavHelperTest < ActionView::TestCase
test "#secondary_navigation_tabs_items for edit edition page" do
resource = FactoryBot.create(:guide_edition, title: "Edit page title", state: "draft")

expected_output = [
{
label: "Edit",
href: "/editions/#{resource.id}",
current: false,
},
{
label: "Tagging",
href: "/editions/#{resource.id}/tagging",
current: false,
},
{
label: "Metadata",
href: "/editions/#{resource.id}/metadata",
current: false,
},
{
label: "History and notes",
href: "/editions/#{resource.id}/history",
current: false,
},
{
label: "Admin",
href: "/editions/#{resource.id}/admin",
current: false,
},
{
label: "Related external links",
href: "/editions/#{resource.id}/related_external_links",
current: false,
},
{
label: "Unpublish",
href: "/editions/#{resource.id}/unpublish",
current: false,
},
]

assert_equal expected_output, edition_nav_items(resource)
end
end

0 comments on commit e1efb14

Please sign in to comment.