content_block_tools 0.5.4 → 0.6.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c89dc222cfb30a2a3ab8263c0203fc06fb59f5c19140b49104fa76e3a55ebf76
|
4
|
+
data.tar.gz: 750d97c98bea404136dd7ab33416409cd9cb352ae587268c405c8e22236d984c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed10a2a905af5a7747f8222d2ed9c815140371651ed2e0d9082d68c4b3ac333b1f6dc7d7c20cf6f2f4bfb376ab5896143d549760cb43eb0f01a8e2dc5520f4d4
|
7
|
+
data.tar.gz: 1eb7eb43cfbcf21cddd296d4cc1dd7985cd6b3d3ceba02bf7bab78bcbc7ce4c2aee976eabd685b2f16b39b38632c224c03c2b8909c7d70e2178550aabbce7632
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,10 @@
|
|
7
7
|
useful summary for people upgrading their application, not a replication
|
8
8
|
of the commit log.
|
9
9
|
|
10
|
+
## 0.6.0
|
11
|
+
|
12
|
+
- Support rendering nested blocks ([45](https://github.com/alphagov/govuk_content_block_tools/pull/45))
|
13
|
+
|
10
14
|
## 0.5.4
|
11
15
|
|
12
16
|
- Remove old email_address and postal_address types ([38](https://github.com/alphagov/govuk_content_block_tools/pull/38))
|
@@ -10,6 +10,9 @@ module ContentBlockTools
|
|
10
10
|
# A lookup of presenters for particular fields - can be overridden in a subclass
|
11
11
|
FIELD_PRESENTERS = {}.freeze
|
12
12
|
|
13
|
+
# A lookup of presenters for particular blocks - can be overridden in a subclass
|
14
|
+
BLOCK_PRESENTERS = {}.freeze
|
15
|
+
|
13
16
|
def self.has_embedded_objects(*object_types)
|
14
17
|
@embedded_objects = object_types
|
15
18
|
|
@@ -59,26 +62,28 @@ module ContentBlockTools
|
|
59
62
|
# {#content}
|
60
63
|
def content
|
61
64
|
ContentBlockTools.logger.info("Getting content for content block #{content_block.content_id}")
|
62
|
-
|
63
|
-
content_for_fields
|
64
|
-
else
|
65
|
-
default_content
|
66
|
-
end
|
65
|
+
field_names.present? ? content_for_field_names : default_content
|
67
66
|
end
|
68
67
|
|
69
68
|
def default_content
|
70
69
|
content_block.title
|
71
70
|
end
|
72
71
|
|
73
|
-
def
|
72
|
+
def content_for_field_names
|
74
73
|
content = content_block.details.deep_symbolize_keys.dig(*field_names)
|
74
|
+
|
75
75
|
if content.blank?
|
76
76
|
ContentBlockTools.logger.warn("Content not found for content block #{content_block.content_id} and fields #{field_names}")
|
77
|
-
content_block.embed_code
|
78
|
-
else
|
79
|
-
presenter = field_presenter || ContentBlockTools::Presenters::FieldPresenters::BasePresenter
|
80
|
-
presenter.new(content).render
|
77
|
+
return content_block.embed_code
|
81
78
|
end
|
79
|
+
|
80
|
+
presenter = if content.is_a?(Hash)
|
81
|
+
block_presenter || ContentBlockTools::Presenters::BlockPresenters::BasePresenter
|
82
|
+
else
|
83
|
+
field_presenter || ContentBlockTools::Presenters::FieldPresenters::BasePresenter
|
84
|
+
end
|
85
|
+
|
86
|
+
presenter.new(content).render
|
82
87
|
end
|
83
88
|
|
84
89
|
def field_names
|
@@ -95,6 +100,10 @@ module ContentBlockTools
|
|
95
100
|
@field_presenter ||= field_names ? self.class::FIELD_PRESENTERS[field_names.last] : nil
|
96
101
|
end
|
97
102
|
|
103
|
+
def block_presenter
|
104
|
+
@block_presenter ||= field_names ? self.class::BLOCK_PRESENTERS[field_names.first] : nil
|
105
|
+
end
|
106
|
+
|
98
107
|
def base_tag
|
99
108
|
field_names ? :span : self.class::BASE_TAG_TYPE
|
100
109
|
end
|
@@ -9,6 +9,10 @@ module ContentBlockTools
|
|
9
9
|
email_address: ContentBlockTools::Presenters::FieldPresenters::Contact::EmailAddressPresenter,
|
10
10
|
}.freeze
|
11
11
|
|
12
|
+
BLOCK_PRESENTERS = {
|
13
|
+
addresses: ContentBlockTools::Presenters::BlockPresenters::Contact::AddressPresenter,
|
14
|
+
}.freeze
|
15
|
+
|
12
16
|
has_embedded_objects :addresses, :email_addresses, :telephones, :contact_forms
|
13
17
|
|
14
18
|
private
|