content_block_tools 0.5.4 → 0.6.1

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: 317a33abd963522a97d5421d905b916f8c178935645081bba320b984ed0108b4
4
- data.tar.gz: 9503e913fb0c5826cfbafae81e7263351e149b44009e0bb836ac1d1dc00c8ca4
3
+ metadata.gz: 1b432a7791692f66578f8ac72f9e02548436de162c781c1359758779c72d5beb
4
+ data.tar.gz: 94df9abb5ba25e1338396802d0040659e836d1a4aca0825a86921f7045281f1b
5
5
  SHA512:
6
- metadata.gz: 716b6950c8633ccc8f80eba30d685e117ce638471f9eadc5c7353e8189a2e2d0eb263e86dd4f6e340cc68d3c54b234e758fc3211ff0078e5ab0dba12c298695e
7
- data.tar.gz: '078faf1ebb791e906f33744cf8dd0f3a6a8c5355c5b2296926bc68eaccff13c931df39786ac59b5af9958fbe61b7162a9868cb50edf5afb94e4b7f33a06f39d5'
6
+ metadata.gz: 1ef1c7687153fb85bb6c92f732846f6227ed2f68f19f7c7660ac0a8c0c9d11f1943da3749d35072ac1a5f34f9402a953480597dbac7b6b11397cb3d1bbce9632
7
+ data.tar.gz: 776b3c2b907514517da5e47b206f96def040815b76edfdab10cd74b20092767a814d28f093de51358b36100ae5be7998025014e51ec773df31c90dc6288098df
data/.gitignore CHANGED
@@ -10,4 +10,10 @@
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
12
  Gemfile.lock
13
+
14
+ # DS Store
13
15
  /.DS_Store
16
+ lib/.DS_Store
17
+ spec/.DS_Store
18
+ lib/content_block_tools/.DS_Store
19
+ spec/content_block_tools/.DS_Store
data/CHANGELOG.md CHANGED
@@ -7,6 +7,14 @@
7
7
  useful summary for people upgrading their application, not a replication
8
8
  of the commit log.
9
9
 
10
+ ## 0.6.1
11
+
12
+ - Handle multiple telephone numbers for a Contact block ([48](https://github.com/alphagov/govuk_content_block_tools/pull/48)
13
+
14
+ ## 0.6.0
15
+
16
+ - Support rendering nested blocks ([45](https://github.com/alphagov/govuk_content_block_tools/pull/45))
17
+
10
18
  ## 0.5.4
11
19
 
12
20
  - 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
- if field_names.present?
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 content_for_fields
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
@@ -4,12 +4,26 @@ module ContentBlockTools
4
4
  module Contact
5
5
  class TelephonePresenter < ContentBlockTools::Presenters::BlockPresenters::BasePresenter
6
6
  def render
7
- content_tag(:p, class: "govuk-body govuk-!-margin-bottom-4") do
8
- concat content_tag(:span, title_content)
7
+ content_tag(:div, class: "govuk-body govuk-!-margin-bottom-4") do
8
+ concat number_list
9
+ end
10
+ end
11
+
12
+ def number_list
13
+ content_tag(:ul, class: "govuk-!-padding-0", style: "list-style: none;") do
14
+ item[:telephone_numbers].each do |number|
15
+ concat number_list_item(number)
16
+ end
17
+ end
18
+ end
19
+
20
+ def number_list_item(number)
21
+ content_tag(:li) do
22
+ concat content_tag(:span, "#{number[:label]}: ")
9
23
  concat content_tag(:a,
10
- item[:telephone],
24
+ number[:telephone_number],
11
25
  class: "govuk-link",
12
- href: "tel:#{CGI.escape item[:telephone]}")
26
+ href: "tel:#{CGI.escape number[:telephone_number]}")
13
27
  end
14
28
  end
15
29
  end
@@ -9,6 +9,11 @@ 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
+ telephones: ContentBlockTools::Presenters::BlockPresenters::Contact::TelephonePresenter,
15
+ }.freeze
16
+
12
17
  has_embedded_objects :addresses, :email_addresses, :telephones, :contact_forms
13
18
 
14
19
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContentBlockTools
4
- VERSION = "0.5.4"
4
+ VERSION = "0.6.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: content_block_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev