metadata_presenter 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
}
|