content_block_tools 0.6.2 → 0.6.3
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/CHANGELOG.md +4 -0
- data/lib/content_block_tools/presenters/base_presenter.rb +26 -12
- data/lib/content_block_tools/presenters/block_presenters/base_presenter.rb +1 -0
- data/lib/content_block_tools/presenters/block_presenters/contact/telephone_presenter.rb +3 -1
- data/lib/content_block_tools/presenters/field_presenters/base_presenter.rb +1 -0
- data/lib/content_block_tools/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b4f73d4250542e48814f4b1a7f9963315909983df3cd8f306316c00945c0f27
|
4
|
+
data.tar.gz: b376678520df72388f10802a1652fa3819a0a3ad13d295ed681a5c7bdaf20b1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ab65c991be77d1feb1f8720e9d36d193bfacae7a5e57cebad50ea894ea28a1ceac34c03df4660f0fc8d7f2ecc2195e005fd2a33133540502655e19334fc7a27
|
7
|
+
data.tar.gz: aab61f2f75566b7e869ac36fc8535ad5f5a48bb8dce7304952cdf3a5f056f10e9b396c4e0cf5d7d5491d54535f6f4c131f73fc097017edb1b597adb2a6abf994
|
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.3
|
11
|
+
|
12
|
+
- Fix rendering telephone numbers and rendering individual nested fields ([53](https://github.com/alphagov/govuk_content_block_tools/pull/53))
|
13
|
+
|
10
14
|
## 0.6.2
|
11
15
|
|
12
16
|
- Handle UK call charges for a Contact block, remove links from telephone numbers ([51](https://github.com/alphagov/govuk_content_block_tools/pull/51))
|
@@ -70,20 +70,12 @@ module ContentBlockTools
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def content_for_field_names
|
73
|
-
|
74
|
-
|
75
|
-
if content.blank?
|
73
|
+
if field_or_block_content.blank?
|
76
74
|
ContentBlockTools.logger.warn("Content not found for content block #{content_block.content_id} and fields #{field_names}")
|
77
75
|
return content_block.embed_code
|
78
76
|
end
|
79
77
|
|
80
|
-
|
81
|
-
block_presenter || ContentBlockTools::Presenters::BlockPresenters::BasePresenter
|
82
|
-
else
|
83
|
-
field_presenter || ContentBlockTools::Presenters::FieldPresenters::BasePresenter
|
84
|
-
end
|
85
|
-
|
86
|
-
presenter.new(content).render
|
78
|
+
field_or_block_presenter.new(field_or_block_content).render
|
87
79
|
end
|
88
80
|
|
89
81
|
def field_names
|
@@ -91,11 +83,33 @@ module ContentBlockTools
|
|
91
83
|
embed_code_match = ContentBlockReference::EMBED_REGEX.match(content_block.embed_code)
|
92
84
|
if embed_code_match.present?
|
93
85
|
all_fields = embed_code_match[4]&.reverse&.chomp("/")&.reverse
|
94
|
-
all_fields&.split("/")&.map
|
86
|
+
all_fields&.split("/")&.map do |item|
|
87
|
+
is_number?(item) ? item.to_i : item.to_sym
|
88
|
+
end
|
95
89
|
end
|
96
90
|
end
|
97
91
|
end
|
98
92
|
|
93
|
+
def is_number?(item)
|
94
|
+
Float(item, exception: false)
|
95
|
+
end
|
96
|
+
|
97
|
+
def field_or_block_content
|
98
|
+
@field_or_block_content ||= field_names.any? ? content_block.details.deep_symbolize_keys.dig(*field_names) : nil
|
99
|
+
end
|
100
|
+
|
101
|
+
def rendering_block?
|
102
|
+
field_or_block_content.is_a?(Hash)
|
103
|
+
end
|
104
|
+
|
105
|
+
def field_or_block_presenter
|
106
|
+
@field_or_block_presenter ||= if rendering_block?
|
107
|
+
block_presenter || ContentBlockTools::Presenters::BlockPresenters::BasePresenter
|
108
|
+
else
|
109
|
+
field_presenter || ContentBlockTools::Presenters::FieldPresenters::BasePresenter
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
99
113
|
def field_presenter
|
100
114
|
@field_presenter ||= field_names ? self.class::FIELD_PRESENTERS[field_names.last] : nil
|
101
115
|
end
|
@@ -105,7 +119,7 @@ module ContentBlockTools
|
|
105
119
|
end
|
106
120
|
|
107
121
|
def base_tag
|
108
|
-
field_names ?
|
122
|
+
field_names ? field_or_block_presenter::BASE_TAG_TYPE : self.class::BASE_TAG_TYPE
|
109
123
|
end
|
110
124
|
|
111
125
|
def embedded_objects_of_type(type)
|
@@ -3,6 +3,8 @@ module ContentBlockTools
|
|
3
3
|
module BlockPresenters
|
4
4
|
module Contact
|
5
5
|
class TelephonePresenter < ContentBlockTools::Presenters::BlockPresenters::BasePresenter
|
6
|
+
BASE_TAG_TYPE = :div
|
7
|
+
|
6
8
|
def render
|
7
9
|
content_tag(:div, class: "govuk-body") do
|
8
10
|
concat number_list
|
@@ -11,7 +13,7 @@ module ContentBlockTools
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def number_list
|
14
|
-
content_tag(:ul, class: "govuk-!-padding-0 govuk-!-margin-0
|
16
|
+
content_tag(:ul, class: "govuk-!-padding-0 govuk-!-margin-0 govuk-list") do
|
15
17
|
item[:telephone_numbers].each do |number|
|
16
18
|
concat number_list_item(number)
|
17
19
|
end
|