diff --git a/app/controllers/take_part_controller.rb b/app/controllers/take_part_controller.rb
new file mode 100644
index 0000000000..18717202e7
--- /dev/null
+++ b/app/controllers/take_part_controller.rb
@@ -0,0 +1,5 @@
+class TakePartController < ContentItemsController
+ def content_item_slug
+ request.path
+ end
+end
diff --git a/app/helpers/machine_readable_metadata_helper.rb b/app/helpers/machine_readable_metadata_helper.rb
new file mode 100644
index 0000000000..9c35a2af1c
--- /dev/null
+++ b/app/helpers/machine_readable_metadata_helper.rb
@@ -0,0 +1,6 @@
+module MachineReadableMetadataHelper
+ def machine_readable_metadata(content_item, args)
+ locals = { content_item: content_item.to_h }.merge(args)
+ render("govuk_publishing_components/components/machine_readable_metadata", locals)
+ end
+end
diff --git a/app/helpers/title_helper.rb b/app/helpers/title_helper.rb
new file mode 100644
index 0000000000..6271eaef41
--- /dev/null
+++ b/app/helpers/title_helper.rb
@@ -0,0 +1,10 @@
+module TitleHelper
+ def title_and_context(title, document_type)
+ {
+ title:,
+ context: I18n.t("formats.#{document_type}", count: 1),
+ context_locale: t_locale_fallback("formats.#{document_type}", count: 1),
+ average_title_length: "long",
+ }
+ end
+end
diff --git a/app/views/take_part/show.html.erb b/app/views/take_part/show.html.erb
new file mode 100644
index 0000000000..6112d9914e
--- /dev/null
+++ b/app/views/take_part/show.html.erb
@@ -0,0 +1,37 @@
+<% content_for :title do %>
+ <%= @content_item.title %> - GOV.UK
+<% end %>
+
+<% content_for :extra_headers do %>
+ <%= machine_readable_metadata(@content_item, schema: :article) %>
+
+<% end %>
+
+
+
+
+ <%= render 'govuk_publishing_components/components/title', title_and_context(@content_item.title, @content_item.document_type).except(:average_title_length) %>
+ <%= render 'govuk_publishing_components/components/lead_paragraph', text: @content_item.description %>
+
+
+ <%= render 'shared/translations' %>
+
+
+
+
+ <%= render 'components/figure',
+ src: @content_item.image["url"],
+ alt: @content_item.image["alt_text"],
+ credit: @content_item.image["credit"],
+ caption: @content_item.image["caption"] if @content_item.image %>
+
+ <%= render "govuk_publishing_components/components/govspeak", {
+ direction: page_text_direction
+ } do %>
+ <%= raw(@content_item.body) %>
+ <% end %>
+
+ <%= render 'shared/sidebar_navigation' %>
+
+
+<%= render 'shared/footer_navigation' %>
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 495518b547..86fbf05df3 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -747,6 +747,13 @@ cy:
start_again: Dechrau eto
your_answers: Eich atebion
start_now: Dechrau nawr
+ take_part:
+ few:
+ many:
+ one: Cymryd rhan
+ other: Cymryd rhan
+ two:
+ zero:
transaction:
before_you_start: Cyn i chi ddechrau
more_information: Rhagor o wybodaeth
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 2e3ae16745..375285d9a6 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -455,6 +455,9 @@ en:
start_again: Start again
your_answers: Your answers
start_now: Start now
+ take_part:
+ one: Take part
+ other: Take part
transaction:
before_you_start: Before you start
more_information: More information
diff --git a/config/routes.rb b/config/routes.rb
index 0f675570fb..38344997fb 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -70,8 +70,14 @@
# Media previews
get "/media/:id/:filename/preview", to: "csv_preview#show", filename: /[^\/]+/
- # Placeholder for attachments being virus-scanned
- get "/government/placeholder", to: "placeholder#show"
+ scope "/government" do
+ # Placeholder for attachments being virus-scanned
+ get "/placeholder", to: "placeholder#show"
+
+ scope "/get-involved" do
+ get "/take-part/:slug", to: "take_part#show"
+ end
+ end
# Simple Smart Answer pages
constraints FormatRoutingConstraint.new("simple_smart_answer") do
diff --git a/spec/system/take_part_spec.rb b/spec/system/take_part_spec.rb
new file mode 100644
index 0000000000..f848706c1e
--- /dev/null
+++ b/spec/system/take_part_spec.rb
@@ -0,0 +1,24 @@
+RSpec.describe "TakePart" do
+ before do
+ content_store_has_example_item("/government/get-involved/take-part/tp1", schema: :take_part)
+ end
+
+ context "/government/get-involved/take-part/:slug" do
+ it "displays the take_part page" do
+ visit "/government/get-involved/take-part/tp1"
+
+ expect(page).to have_title("Become a councillor - GOV.UK")
+
+ expect(page).to have_css("h1", text: "Become a councillor")
+ expect(page).to have_text("All councils are led by democratically elected councillors who set the vision and direction, and represent their local community.")
+
+ assert page.has_text?("There are roughly 20,000 local councillors in England. Councillors are elected to the local council to represent their own local community, so they must either live or work in the area.")
+ end
+
+ it "does not display a single page notification button" do
+ visit "/government/get-involved/take-part/tp1"
+
+ expect(page).not_to have_css(".gem-c-single-page-notification-button")
+ end
+ end
+end