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 +4 -4
- data/README.md +13 -0
- data/app/models/metadata_presenter/component.rb +1 -1
- data/app/models/metadata_presenter/next_page.rb +1 -1
- data/app/models/metadata_presenter/page.rb +4 -0
- data/app/validators/metadata_presenter/validate_schema.rb +1 -2
- data/app/views/metadata_presenter/component/_text.html.erb +1 -1
- data/app/views/metadata_presenter/page/{summary.html.erb → checkanswers.html.erb} +1 -1
- data/app/views/metadata_presenter/page/singlequestion.html.erb +1 -1
- data/app/views/metadata_presenter/page/start.html.erb +7 -1
- data/default_metadata/component/text.json +8 -0
- data/default_metadata/config/service.json +1 -4
- data/default_metadata/page/{summary.json → checkanswers.json} +4 -2
- data/default_metadata/page/confirmation.json +1 -0
- data/default_metadata/page/singlequestion.json +9 -0
- data/default_metadata/service/base.json +5 -4
- data/fixtures/non_finished_service.json +5 -8
- data/fixtures/service.json +6 -8
- data/fixtures/version.json +7 -9
- data/lib/metadata_presenter/test_helpers.rb +21 -0
- data/lib/metadata_presenter/version.rb +1 -1
- data/schemas/page/{summary.json → checkanswers.json} +3 -3
- data/schemas/page/start.json +12 -1
- data/schemas/request/service.json +13 -0
- data/schemas/service/base.json +0 -1
- metadata +9 -7
- data/schemas/request/services.json +0 -48
- data/schemas/request/versions.json +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4502db8905d70f018c8229e2fffb8f1c392415ee4ee8214bfc9bde851e563c8e
|
4
|
+
data.tar.gz: ddaacc9a8520bdb2df646150e3f10001d06c9865a0008e68b8e117320b8e0d85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
@@ -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.
|
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
|
-
|
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,
|
@@ -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.
|
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| %>
|
@@ -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>
|
@@ -1,6 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"_id": "page.
|
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,15 +1,16 @@
|
|
1
1
|
{
|
2
2
|
"_id": "service.base",
|
3
3
|
"_type": "service.base",
|
4
|
-
"service_name": "Service name
|
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": "
|
11
|
-
"
|
12
|
-
"
|
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": "
|
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
|
-
"
|
45
|
-
"
|
46
|
-
"
|
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",
|
data/fixtures/service.json
CHANGED
@@ -1,15 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"_id": "service.base",
|
3
3
|
"_type": "service.base",
|
4
|
-
"service_name": "
|
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
|
-
"
|
44
|
-
"
|
45
|
-
"
|
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
|
}
|
data/fixtures/version.json
CHANGED
@@ -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": "
|
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
|
-
"
|
45
|
-
"
|
46
|
-
"
|
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.
|
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,12 +1,12 @@
|
|
1
1
|
{
|
2
|
-
"$id": "http://gov.uk/schema/v1.0.0/page/
|
3
|
-
"_name": "page.
|
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.
|
9
|
+
"const": "page.checkanswers"
|
10
10
|
},
|
11
11
|
"section_heading": {
|
12
12
|
"title": "Section heading",
|
data/schemas/page/start.json
CHANGED
@@ -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
|
+
}
|
data/schemas/service/base.json
CHANGED
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.
|
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-
|
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/
|
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/
|
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
|
-
}
|