metadata_presenter 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98b871be342033efb49a77309b9d1e506318660eb2b93693bc4148e609d37f7c
4
- data.tar.gz: c03685b11d5c258410a5964021886c6eb4105b82698d66bc1c4dd6715559be6e
3
+ metadata.gz: 4502db8905d70f018c8229e2fffb8f1c392415ee4ee8214bfc9bde851e563c8e
4
+ data.tar.gz: ddaacc9a8520bdb2df646150e3f10001d06c9865a0008e68b8e117320b8e0d85
5
5
  SHA512:
6
- metadata.gz: 57651e49df9cd24e838f578b2f61a6413524678b4e2caf82fe548d028190df8aae511af71ccc03a576e799050834c7d0cf3a1c91eac7d03e73de7641850fd08a
7
- data.tar.gz: 529e16568eaba2c55b69bae60f895c3c6b275e59e49deab85a207c612561adfa9f8b2f8e85c2a3244e2c7c534beaa17e1010dca57d75f1647e818c376c382e91
6
+ metadata.gz: f21f6779bf1c90b4a09a7042f2117b5b2712fc72d2eb331226bd6142452abf2a6eac9f1c3b221c12bef9c2d46584f6f514b4918ba3f90381ffaf6d6daebbf9a4
7
+ data.tar.gz: dd6bcd473cdd65ace450ec00e1c4431d7844bf99201471e330752254b2eb2193cf15ad2ed0936a31c5483b97a3b7c4e4924c0b63d1d4a6aea21a5905279d530c
data/README.md CHANGED
@@ -47,6 +47,7 @@ that you need to write the following methods in your controller:
47
47
 
48
48
  1. save_user_data
49
49
  2. load_user_data
50
+ 3. editable?
50
51
 
51
52
  The user answers can be accessed via `params[:answers]`.
52
53
 
@@ -63,6 +64,18 @@ An example of implementation:
63
64
  end
64
65
  ```
65
66
 
67
+ The `editable?` is related if the pages and components could be editable in the
68
+ mountable app:
69
+
70
+ ```ruby
71
+ class MyAwesomeController
72
+ def editable?
73
+ false
74
+ end
75
+ helper_method :editable?
76
+ end
77
+ ```
78
+
66
79
  ## Generate documentation
67
80
 
68
81
  Run `rake doc` and open the doc/index.html
@@ -1,5 +1,5 @@
1
1
  class MetadataPresenter::Component < MetadataPresenter::Metadata
2
2
  def to_partial_path
3
- "component/#{type}"
3
+ "metadata_presenter/component/#{type}"
4
4
  end
5
5
  end
@@ -9,7 +9,7 @@ module MetadataPresenter
9
9
  def find(session:, current_page_url:)
10
10
  if session[:return_to_check_you_answer].present?
11
11
  session[:return_to_check_you_answer] = nil
12
- service.pages.find { |page| page.type == 'page.summary' }
12
+ service.pages.find { |page| page.type == 'page.checkanswers' }
13
13
  else
14
14
  service.next_page(from: current_page_url)
15
15
  end
@@ -10,6 +10,10 @@ module MetadataPresenter
10
10
  id == other.id if other.respond_to? :id
11
11
  end
12
12
 
13
+ def editable_attributes
14
+ self.to_h.reject { |k,_| k.in?([:_id, :_type, :steps]) }
15
+ end
16
+
13
17
  def components
14
18
  metadata.components&.map do |component|
15
19
  MetadataPresenter::Component.new(component)
@@ -6,8 +6,7 @@ class MetadataPresenter::ValidateSchema
6
6
  def before(controller)
7
7
  return unless controller.request.post?
8
8
 
9
- schema_name = "request.#{controller.request.params['controller']}"
10
- validate(controller.request.params, schema_name)
9
+ validate(controller.request.params, 'request.service')
11
10
  rescue JSON::Schema::ValidationError, JSON::Schema::SchemaError, SchemaNotFoundError => e
12
11
  controller.render(
13
12
  json: ErrorsSerializer.new(message: e.message).attributes,
@@ -3,5 +3,5 @@
3
3
  label: { text: component.label },
4
4
  hint: { text: component.hint },
5
5
  name: "answers[#{component.name}]",
6
- value: @user_data[component.name]
6
+ value: @user_data ? @user_data[component.name] : nil
7
7
  %>
@@ -25,7 +25,7 @@
25
25
  <% end %>
26
26
 
27
27
  <%= form_for @page, url: reserved_submissions_path do |f| %>
28
- <div data-block-id="page.summary.answers" data-block-type="answers">
28
+ <div data-block-id="page.checkanswers.answers" data-block-type="answers">
29
29
  <dl class="fb-block fb-block-answers govuk-summary-list">
30
30
  <% @service.pages.each do |page| %>
31
31
  <% Array(page.components).each do |component| %>
@@ -11,7 +11,7 @@
11
11
  <%= render partial: component, locals: { component: component, f: f } %>
12
12
  <% end %>
13
13
 
14
- <%= f.govuk_submit %>
14
+ <%= f.govuk_submit(disabled: editable?) %>
15
15
  <% end %>
16
16
  </div>
17
17
  </div>
@@ -26,13 +26,19 @@
26
26
  <%- end %>
27
27
 
28
28
  <%= form_tag(reserved_answers_path(@page.url), method: :post) do %>
29
- <button class='govuk-button govuk-button--start govuk-!-margin-top-2'>
29
+ <button <%= 'disabled' if editable? %> class='govuk-button govuk-button--start govuk-!-margin-top-2'>
30
30
  Start
31
31
  <svg class="govuk-button__start-icon" xmlns="http://www.w3.org/2000/svg" width="17.5" height="19" viewBox="0 0 33 40" aria-hidden="true" focusable="false">
32
32
  <path fill="currentColor" d="M0 0h13l20 20-20 20H0l20-20z" />
33
33
  </svg>
34
34
  </button>
35
35
  <% end %>
36
+
37
+ <% if @page.before_you_start %>
38
+ <p class="govuk-body-l" data-block-id="<%= @page.id %>" data-block-property="before-you-start">
39
+ <%= to_markdown(@page.before_you_start) %>
40
+ </p>
41
+ <%- end %>
36
42
  </div>
37
43
  </div>
38
44
  </div>
@@ -0,0 +1,8 @@
1
+ {
2
+ "_id": "component.text",
3
+ "_type": "text",
4
+ "errors": {},
5
+ "hint": "Component hint",
6
+ "label": "Component label",
7
+ "name": "component-name"
8
+ }
@@ -1,7 +1,4 @@
1
1
  {
2
2
  "_id": "config.service",
3
- "_type": "config.service",
4
- "homepage_url": "https://www.gov.uk",
5
- "service_email_address": "moj-online@digital.justice.gov.uk",
6
- "service_url": "page.start"
3
+ "_type": "config.service"
7
4
  }
@@ -1,6 +1,8 @@
1
1
  {
2
- "_id": "page.summary",
2
+ "_id": "page.checkanswers",
3
+ "_type": "page.checkanswers",
3
4
  "heading": "Check your answers",
4
5
  "send_heading": "Now send your application",
5
- "send_body": "By submitting this application you confirm that, to the best of your knowledge, the details you are providing are correct."
6
+ "send_body": "By submitting this application you confirm that, to the best of your knowledge, the details you are providing are correct.",
7
+ "components": []
6
8
  }
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "_id": "page.confirmation",
3
+ "_type": "page.confirmation",
3
4
  "heading": "Required - Confirmation"
4
5
  }
@@ -0,0 +1,9 @@
1
+ {
2
+ "_id": "page.singlequestion",
3
+ "_type": "page.singlequestion",
4
+ "heading": "Question",
5
+ "lede": "This is the lede",
6
+ "body": "Body section",
7
+ "components": [],
8
+ "url": ""
9
+ }
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
- "service_name": "Service name goes here",
4
+ "service_name": "Service name",
5
5
  "configuration": {},
6
6
  "pages": [
7
7
  {
8
8
  "_id": "page.start",
9
9
  "_type": "page.start",
10
- "heading": "Start page heading",
11
- "body": "Start page body text",
12
- "lede": "Start page lede text",
10
+ "heading": "Service name goes here",
11
+ "lede": "This is your start page first paragraph. You can only have one paragraph here.",
12
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
13
+ "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
13
14
  "steps": [],
14
15
  "url": "/"
15
16
  }
@@ -2,15 +2,12 @@
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
4
  "service_id": "d243f5c0-e8a2-4b13-982c-7b5f3fa128cf",
5
- "service_name": "Main fixture to test Form builder",
5
+ "service_name": "Service name",
6
6
  "created_by": "4634ec01-5618-45ec-a4e2-bb5aa587e751",
7
7
  "configuration": {
8
8
  "service": {
9
9
  "_id": "config.service",
10
- "_type": "config.service",
11
- "homepage_url": "https://www.gov.uk",
12
- "service_email_address": "moj-online@digital.justice.gov.uk",
13
- "service_url": "page.start"
10
+ "_type": "config.service"
14
11
  },
15
12
  "meta": {
16
13
  "_id": "config.meta",
@@ -41,9 +38,9 @@
41
38
  {
42
39
  "_id": "page.start",
43
40
  "_type": "page.start",
44
- "body": "You cannot use this form to complain about:\r\n\r\n* the result of a case\r\n* a judge, magistrate, coroner or member of a tribunal\r\n\r\nThis online form is also available in [Welsh (Cymraeg)](https://complain-about-a-court-or-tribunal.form.service.justice.gov.uk/cy).",
45
- "heading": "Complain about a court or tribunal",
46
- "lede": "Your complaint will not affect your case.",
41
+ "heading": "Service name goes here",
42
+ "lede": "This is your start page first paragraph. You can only have one paragraph here.",
43
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
47
44
  "steps": [
48
45
  "page.name",
49
46
  "page.email-address",
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
- "service_name": "Complain about a court or tribunal",
4
+ "service_name": "Service name",
5
5
  "created_by": "4634ec01-5618-45ec-a4e2-bb5aa587e751",
6
6
  "configuration": {
7
7
  "service": {
8
8
  "_id": "config.service",
9
- "_type": "config.service",
10
- "homepage_url": "https://www.gov.uk",
11
- "service_email_address": "moj-online@digital.justice.gov.uk",
12
- "service_url": "page.start"
9
+ "_type": "config.service"
13
10
  },
14
11
  "meta": {
15
12
  "_id": "config.meta",
@@ -40,9 +37,10 @@
40
37
  {
41
38
  "_id": "page.start",
42
39
  "_type": "page.start",
43
- "body": "You cannot use this form to complain about:\r\n\r\n* the result of a case\r\n* a judge, magistrate, coroner or member of a tribunal\r\n\r\nThis online form is also available in [Welsh (Cymraeg)](https://complain-about-a-court-or-tribunal.form.service.justice.gov.uk/cy).",
44
- "heading": "Complain about a court or tribunal",
45
- "lede": "Your complaint will not affect your case.",
40
+ "heading": "Service name goes here",
41
+ "lede": "Use this service to:",
42
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
43
+ "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
46
44
  "steps": [],
47
45
  "url": "/"
48
46
  }
@@ -2,15 +2,12 @@
2
2
  "_id": "service.base",
3
3
  "_type": "service.base",
4
4
  "service_id": "d243f5c0-e8a2-4b13-982c-7b5f3fa128cf",
5
- "service_name": "Main fixture to test Form builder",
5
+ "service_name": "Service name",
6
6
  "created_by": "4634ec01-5618-45ec-a4e2-bb5aa587e751",
7
7
  "configuration": {
8
8
  "service": {
9
9
  "_id": "config.service",
10
- "_type": "config.service",
11
- "homepage_url": "https://www.gov.uk",
12
- "service_email_address": "moj-online@digital.justice.gov.uk",
13
- "service_url": "page.start"
10
+ "_type": "config.service"
14
11
  },
15
12
  "meta": {
16
13
  "_id": "config.meta",
@@ -41,9 +38,10 @@
41
38
  {
42
39
  "_id": "page.start",
43
40
  "_type": "page.start",
44
- "body": "You cannot use this form to complain about:\r\n\r\n* the result of a case\r\n* a judge, magistrate, coroner or member of a tribunal\r\n\r\nThis online form is also available in [Welsh (Cymraeg)](https://complain-about-a-court-or-tribunal.form.service.justice.gov.uk/cy).",
45
- "heading": "Complain about a court or tribunal",
46
- "lede": "Your complaint will not affect your case.",
41
+ "heading": "Service name goes here",
42
+ "lede": "This is your start page first paragraph. You can only have one paragraph here.",
43
+ "body": "Use this service to:\r\n\r\n* do something\r\n* update your name, address or other details\r\n* do something else\r\n\r\nRegistering takes around 5 minutes.",
44
+ "before_you_start": "###Before you start\r\nYou can also register by post.\r\n\r\nThe online service is also available in Welsh (Cymraeg).\r\n\r\nYou cannot register for this service if you’re in the UK illegally.",
47
45
  "steps": [
48
46
  "page.name",
49
47
  "page.email-address",
@@ -124,7 +122,7 @@
124
122
  },
125
123
  {
126
124
  "_id": "page._check-answers",
127
- "_type": "page.summary",
125
+ "_type": "page.checkanswers",
128
126
  "body": "Optional content",
129
127
  "heading": "Review your answer",
130
128
  "lede": "First paragraph",
@@ -0,0 +1,21 @@
1
+ module MetadataPresenter
2
+ module TestHelpers
3
+ def service
4
+ MetadataPresenter::Service.new(service_metadata)
5
+ end
6
+
7
+ def fixtures_directory
8
+ @_fixtures_directory ||=
9
+ Pathname.new(MetadataPresenter::Engine.root.join('fixtures'))
10
+ end
11
+
12
+ def service_metadata
13
+ metadata_fixture(:version)
14
+ JSON.parse(File.read(fixtures_directory.join('version.json')))
15
+ end
16
+
17
+ def metadata_fixture(fixture_name)
18
+ JSON.parse(File.read(fixtures_directory.join("#{fixture_name}.json")))
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '0.1.4'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -1,12 +1,12 @@
1
1
  {
2
- "$id": "http://gov.uk/schema/v1.0.0/page/summary",
3
- "_name": "page.summary",
2
+ "$id": "http://gov.uk/schema/v1.0.0/page/checkanswers",
3
+ "_name": "page.checkanswers",
4
4
  "title": "Check answers",
5
5
  "description": "Let users check and change their answers before submitting",
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "_type": {
9
- "const": "page.summary"
9
+ "const": "page.checkanswers"
10
10
  },
11
11
  "section_heading": {
12
12
  "title": "Section heading",
@@ -5,9 +5,16 @@
5
5
  "description": "Let users start using a service",
6
6
  "type": "object",
7
7
  "properties": {
8
+ "_id": {
9
+ "const": "page.start"
10
+ },
8
11
  "_type": {
9
12
  "const": "page.start"
10
13
  },
14
+ "before_you_start": {
15
+ "title": "Before you start",
16
+ "description": "A body of text that goes after the Start button"
17
+ },
11
18
  "enable_steps": {
12
19
  "const": true
13
20
  },
@@ -25,10 +32,14 @@
25
32
  "ui_category": {
26
33
  "main": [
27
34
  "lede",
28
- "body"
35
+ "body",
36
+ "before_you_start"
29
37
  ]
30
38
  },
31
39
  "required": [
40
+ "_id",
41
+ "_type",
42
+ "heading",
32
43
  "steps"
33
44
  ]
34
45
  }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/request/service",
3
+ "_name": "request.service",
4
+ "title": "Create new service",
5
+ "description": "Request object schema for creating and updating a new service",
6
+ "type": "object",
7
+ "properties": {
8
+ "metadata": {
9
+ "$ref": "service.base"
10
+ }
11
+ },
12
+ "required": ["metadata"]
13
+ }
@@ -42,7 +42,6 @@
42
42
  "required": [
43
43
  "_id",
44
44
  "_type",
45
- "service_id",
46
45
  "service_name",
47
46
  "created_by",
48
47
  "locale",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-06 00:00:00.000000000 Z
11
+ date: 2021-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -247,18 +247,20 @@ files:
247
247
  - app/views/layouts/metadata_presenter/application.html.erb
248
248
  - app/views/metadata_presenter/component/_text.html.erb
249
249
  - app/views/metadata_presenter/header/show.html.erb
250
+ - app/views/metadata_presenter/page/checkanswers.html.erb
250
251
  - app/views/metadata_presenter/page/confirmation.html.erb
251
252
  - app/views/metadata_presenter/page/form.html.erb
252
253
  - app/views/metadata_presenter/page/singlequestion.html.erb
253
254
  - app/views/metadata_presenter/page/start.html.erb
254
- - app/views/metadata_presenter/page/summary.html.erb
255
255
  - config/initializers/default_metadata.rb
256
256
  - config/initializers/schemas.rb
257
257
  - config/routes.rb
258
+ - default_metadata/component/text.json
258
259
  - default_metadata/config/meta.json
259
260
  - default_metadata/config/service.json
261
+ - default_metadata/page/checkanswers.json
260
262
  - default_metadata/page/confirmation.json
261
- - default_metadata/page/summary.json
263
+ - default_metadata/page/singlequestion.json
262
264
  - default_metadata/service/base.json
263
265
  - default_metadata/string/error.max_length.json
264
266
  - default_metadata/string/error.min_length.json
@@ -268,6 +270,7 @@ files:
268
270
  - fixtures/version.json
269
271
  - lib/metadata_presenter.rb
270
272
  - lib/metadata_presenter/engine.rb
273
+ - lib/metadata_presenter/test_helpers.rb
271
274
  - lib/metadata_presenter/version.rb
272
275
  - lib/tasks/metadata_presenter_tasks.rake
273
276
  - schemas/condition/condition.json
@@ -305,11 +308,10 @@ files:
305
308
  - schemas/definition/width_class.json
306
309
  - schemas/errors/errors.json
307
310
  - schemas/link/link.json
311
+ - schemas/page/checkanswers.json
308
312
  - schemas/page/confirmation.json
309
313
  - schemas/page/start.json
310
- - schemas/page/summary.json
311
- - schemas/request/services.json
312
- - schemas/request/versions.json
314
+ - schemas/request/service.json
313
315
  - schemas/service/base.json
314
316
  - schemas/service/configuration.json
315
317
  - schemas/service/locale.json
@@ -1,48 +0,0 @@
1
- {
2
- "$id": "http://gov.uk/schema/v1.0.0/request/services",
3
- "_name": "request.services",
4
- "title": "Create new service",
5
- "description": "Request schema for creating a new service",
6
- "type": "object",
7
- "properties": {
8
- "metadata": {
9
- "type": "object",
10
- "properties": {
11
- "_id": {
12
- "const": "service.base"
13
- },
14
- "_type": {
15
- "const": "service.base"
16
- },
17
- "service_name": {
18
- "type": "string"
19
- },
20
- "created_by": {
21
- "type": "string"
22
- },
23
- "configuration": {
24
- "$ref": "configuration"
25
- },
26
- "locale": {
27
- "$ref": "service.locale"
28
- },
29
- "pages": {
30
- "type": "array",
31
- "items": {
32
- "$ref": "definition.page"
33
- }
34
- }
35
- },
36
- "required": [
37
- "_id",
38
- "_type",
39
- "service_name",
40
- "created_by",
41
- "configuration",
42
- "pages"
43
- ],
44
- "additionalProperties": false
45
- }
46
- },
47
- "required": ["metadata"]
48
- }
@@ -1,13 +0,0 @@
1
- {
2
- "$id": "http://gov.uk/schema/v1.0.0/request/versions",
3
- "_name": "request.versions",
4
- "title": "Create new service version",
5
- "description": "Request schema for creating a new version of a service",
6
- "type": "object",
7
- "properties": {
8
- "metadata": {
9
- "$ref": "service.base"
10
- }
11
- },
12
- "required": ["metadata"]
13
- }