Skip to content

Commit 9348cdc

Browse files
authored
Merge pull request #2620 from alphagov/use-declaration_markdown
Use declaration markdown
2 parents 84b44f0 + aecef3e commit 9348cdc

26 files changed

+297
-285
lines changed

app/controllers/forms/declaration_controller.rb

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ class DeclarationController < FormsController
33
def new
44
authorize current_form, :can_view_form?
55
@declaration_input = DeclarationInput.new(form: current_form).assign_form_values
6+
@preview_html = preview_html(@declaration_input)
67
end
78

89
def create
910
authorize current_form, :can_view_form?
1011
@declaration_input = DeclarationInput.new(**declaration_input_params)
12+
@preview_html = preview_html(@declaration_input)
1113

1214
if @declaration_input.submit
1315
success_message = if @declaration_input.mark_complete == "true"
@@ -22,10 +24,24 @@ def create
2224
end
2325
end
2426

27+
def render_preview
28+
authorize current_form, :can_view_form?
29+
@declaration_input = DeclarationInput.new(declaration_markdown: params[:markdown])
30+
@declaration_input.validate
31+
32+
render json: { preview_html: preview_html(@declaration_input), errors: @declaration_input.errors[:declaration_markdown] }.to_json
33+
end
34+
2535
private
2636

2737
def declaration_input_params
28-
params.require(:forms_declaration_input).permit(:declaration_text, :mark_complete).merge(form: current_form)
38+
params.require(:forms_declaration_input).permit(:declaration_markdown, :mark_complete).merge(form: current_form)
39+
end
40+
41+
def preview_html(declaration_input)
42+
return t("markdown_editor.no_markdown_content_html") if declaration_input.declaration_markdown.blank?
43+
44+
GovukFormsMarkdown.render(declaration_input.declaration_markdown, allow_headings: false)
2945
end
3046
end
3147
end
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
class Forms::DeclarationInput < Forms::MarkCompleteInput
22
include TextInputHelper
33

4-
attr_accessor :declaration_text
4+
attr_accessor :declaration_markdown
55

6-
validates :declaration_text, length: { maximum: 2000 }
6+
validates :declaration_markdown, length: { maximum: 2000 }
77

88
before_validation :strip_carriage_returns_from_input
99

1010
def submit
1111
return false if invalid?
1212

13-
form.declaration_text = declaration_text
14-
form.declaration_markdown = MarkdownConversionService.new(declaration_text).to_markdown
13+
form.declaration_markdown = declaration_markdown
1514
form.declaration_section_completed = mark_complete
1615
form.save_draft!
1716
end
1817

1918
def assign_form_values
20-
self.declaration_text = form.declaration_text
19+
self.declaration_markdown = form.declaration_markdown
2120
self.mark_complete = form.try(:declaration_section_completed)
2221
self
2322
end
2423

2524
private
2625

2726
def strip_carriage_returns_from_input
28-
strip_carriage_returns!(declaration_text)
27+
strip_carriage_returns!(declaration_markdown)
2928
end
3029
end

app/input_objects/forms/welsh_translation_input.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Forms::WelshTranslationInput < Forms::MarkCompleteInput
1212
attribute :support_phone_cy
1313
attribute :support_url_cy
1414
attribute :support_url_text_cy
15-
attribute :declaration_text_cy
15+
attribute :declaration_markdown_cy
1616
attribute :what_happens_next_markdown_cy
1717
attribute :payment_url_cy
1818

@@ -35,8 +35,8 @@ class Forms::WelshTranslationInput < Forms::MarkCompleteInput
3535
validates :support_url_text_cy, presence: true, if: -> { marked_complete? && form_has_support_url? }
3636
validates :support_url_text_cy, length: { maximum: 120 }, if: -> { support_url_text_cy.present? }
3737

38-
validates :declaration_text_cy, presence: true, if: -> { marked_complete? && form_has_declaration? }
39-
validates :declaration_text_cy, length: { maximum: 2000 }, if: -> { declaration_text_cy.present? }
38+
validates :declaration_markdown_cy, presence: true, if: -> { marked_complete? && form_has_declaration? }
39+
validates :declaration_markdown_cy, length: { maximum: 2000 }, if: -> { declaration_markdown_cy.present? }
4040

4141
validates :what_happens_next_markdown_cy, presence: true, if: -> { marked_complete? && form.what_happens_next_markdown.present? }
4242
validates :what_happens_next_markdown_cy, markdown: { allow_headings: false }, if: -> { what_happens_next_markdown_cy.present? }
@@ -74,8 +74,7 @@ def submit
7474
return false if invalid?
7575

7676
form.name_cy = name_cy
77-
form.declaration_text_cy = form_has_declaration? ? declaration_text_cy : nil
78-
form.declaration_markdown_cy = form_has_declaration? ? MarkdownConversionService.new(form.declaration_text_cy).to_markdown : nil
77+
form.declaration_markdown_cy = form_has_declaration? ? declaration_markdown_cy : nil
7978
form.payment_url_cy = form_has_payment_url? ? payment_url_cy : nil
8079
form.privacy_policy_url_cy = privacy_policy_url_cy
8180
form.support_email_cy = form_has_support_email? ? support_email_cy : nil
@@ -111,7 +110,7 @@ def assign_form_values
111110
self.support_phone_cy = form.support_phone_cy
112111
self.support_url_cy = form.support_url_cy
113112
self.support_url_text_cy = form.support_url_text_cy
114-
self.declaration_text_cy = form.declaration_text_cy
113+
self.declaration_markdown_cy = form.declaration_markdown_cy
115114
self.what_happens_next_markdown_cy = form.what_happens_next_markdown_cy
116115
self.payment_url_cy = form.payment_url_cy
117116

@@ -125,7 +124,7 @@ def assign_form_values
125124
end
126125

127126
def form_has_declaration?
128-
form.declaration_text.present?
127+
form.declaration_markdown.present?
129128
end
130129

131130
def form_has_payment_url?

app/models/form.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,7 @@ def has_welsh_translation?
197197
def normalise_welsh!
198198
return unless available_languages.include?("cy")
199199

200-
self.declaration_text_cy = nil if declaration_text.blank?
201-
self.declaration_markdown_cy = nil if declaration_text_cy.blank?
200+
self.declaration_markdown_cy = nil if declaration_markdown.blank?
202201
self.payment_url_cy = nil if payment_url.blank?
203202
self.support_email_cy = nil if support_email.blank?
204203
self.support_phone_cy = nil if support_phone.blank?

app/services/task_status_service.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def pages_status
5050

5151
def declaration_status
5252
return :completed if @form.declaration_section_completed
53-
return :in_progress if @form.declaration_text.present?
53+
return :in_progress if @form.declaration_markdown.present?
5454

5555
:not_started
5656
end

app/views/forms/_made_live_form.html.erb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<h3 class="govuk-heading-m"><%= t('.questions') %></h3>
6060
<p><%= govuk_link_to t('.questions_link', count: form_document.steps.count), questions_path %></p>
6161

62-
<% if form_document.declaration_text.present? %>
62+
<% if form_document.declaration_markdown.present? %>
6363
<% if form_document.has_welsh_translation? %>
6464
<%= govuk_summary_card(title: t('.declaration')) do |card| %>
6565
<%= govuk_table do |table| %>
@@ -69,10 +69,10 @@
6969
<%= table.with_body do |body|
7070
body.with_row do |row|
7171
row.with_cell do
72-
form_document.declaration_text
72+
GovukFormsMarkdown.render(form_document.declaration_markdown, locale: "en").html_safe
7373
end
7474
row.with_cell do
75-
welsh_form_document.declaration_text
75+
GovukFormsMarkdown.render(welsh_form_document.declaration_markdown, locale: "cy").html_safe
7676
end
7777
end
7878
end %>
@@ -81,7 +81,9 @@
8181
<% end %>
8282
<% else %>
8383
<h3 class="govuk-heading-m"><%= t('.declaration') %></h3>
84-
<p><%= form_document.declaration_text %></p>
84+
<div class="app-preview-area">
85+
<%= GovukFormsMarkdown.render(form_document.declaration_markdown, locale: "en").html_safe %>
86+
</div>
8587
<%= govuk_details(summary_text: t('.what_is_declaration'), text: t('.declaration_description')) %>
8688
<% end %>
8789
<% end %>

app/views/forms/declaration/new.html.erb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@
1515

1616
<%= t("declaration_input.new.body_html") %>
1717

18-
<%= f.govuk_text_area :declaration_text, max_chars: 2000, label: {size: 'm' } %>
18+
<%= render MarkdownEditorComponent::View.new(:declaration_markdown,
19+
form_builder: f,
20+
render_preview_path: declaration_render_preview_path(@declaration_input.form.id),
21+
preview_html: @preview_html,
22+
form_model: @declaration_input,
23+
label: "Enter a declaration for people to agree to (optional)",
24+
hint: nil,
25+
allow_headings: true) %>
1926

2027
<%= render MarkCompleteComponent::View.new(generate_form: false, form_builder: f, form_model: @declaration_input) %>
2128

app/views/forms/welsh_translation/new.html.erb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,18 @@
210210

211211
table.with_body do |body|
212212
body.with_row do |row|
213-
row.with_cell(text: @welsh_translation_input.form.declaration_text, classes: "govuk-!-text-break-word")
213+
row.with_cell(text: @welsh_translation_input.form.declaration_markdown, classes: "govuk-!-text-break-word")
214214
row.with_cell do
215-
f.govuk_text_area :declaration_text_cy, lang: "cy"
215+
f.govuk_text_area :declaration_markdown_cy, lang: "cy"
216+
render MarkdownEditorComponent::View.new(:declaration_markdown_cy,
217+
form_builder: f,
218+
render_preview_path: welsh_translation_render_preview_path(@welsh_translation_input.form.id),
219+
preview_html: nil,
220+
form_model: @welsh_translation_input,
221+
label: t("helpers.label.forms_welsh_translation_input.declaration_markdown_cy"),
222+
lang: "cy",
223+
allow_headings: true,
224+
label_heading: false)
216225
end
217226
end
218227
end

config/locales/input_objects/declaration.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ en:
55
models:
66
forms/declaration_input:
77
attributes:
8-
declaration_text:
8+
declaration_markdown:
99
too_long: The declaration cannot be longer than 2,000 characters
1010
mark_complete:
1111
blank: You must choose an option
1212
helpers:
1313
label:
1414
forms_declaration_input:
15-
declaration_text: Enter a declaration for people to agree to (optional)
15+
declaration_markdown: Enter a declaration for people to agree to (optional)

config/locales/input_objects/welsh_translation.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ en:
55
models:
66
forms/welsh_translation_input:
77
attributes:
8-
declaration_text_cy:
8+
declaration_markdown_cy:
99
blank: Enter a declaration in Welsh
1010
too_long: The declaration cannot be longer than 2,000 characters
1111
mark_complete:
@@ -41,7 +41,7 @@ en:
4141
helpers:
4242
label:
4343
forms_welsh_translation_input:
44-
declaration_text_cy: Enter your Welsh declaration
44+
declaration_markdown_cy: Enter your Welsh declaration
4545
name_cy: Enter your Welsh form name
4646
payment_url_cy: Enter Welsh GOV.UK Pay payment link
4747
privacy_policy_url_cy: Enter link to your Welsh privacy information

0 commit comments

Comments
 (0)