govuk_web_banners 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e90dcafd54461fe4a723458faccd96d342d6d4d4ad26451ea38431b94d56c2b4
4
- data.tar.gz: c12a85485ac267611ca6096fd3185bbb9c84123fb106f0102d9f88e872aeda11
3
+ metadata.gz: ddede52ca24adcae2aa28d4dc5f449c53be00ab21806415acaaa6b49a740f27a
4
+ data.tar.gz: e87d8c81b5efd160291082c460a7136454be0fc5fc2f981ea065a1dfba10d48d
5
5
  SHA512:
6
- metadata.gz: 68690f93a35d664a9d6ed0103b6082987196a190b8089005ca0b6fe7a0cf3892106836f6e27c1f0bd033edf33dc9c9ddc5994cad80cca419ea5c2cf95cee6d1c
7
- data.tar.gz: a40d8c454e7b64ade2254e18c6ef09965b0023b1d79223771177c703d0182b9ffb14e7db63d3048223b1f054d4431b0bdee3aa589bf8f432895fea9600148a84
6
+ metadata.gz: d2c9d65a8a83b580c26dd1867a06f8cc00e0dae232994c853e43ddcc32818f8dec30346e9486b234d4dc6cb6a97b070f4072b127053b3212f7e1e3a45842f8a9
7
+ data.tar.gz: d87961bc141844b15a3666f0b33a29c023c0c6b9515378497e5a77069a1e70ec873bbb970bc8c165f9fe86e101effc6d4ead173c52b22f1ecb5fce19028283de
data/README.md CHANGED
@@ -3,7 +3,7 @@ Proof of Concept for centralising handling of Recruitment, Global, and Emergency
3
3
  banners (currently spread across apps)
4
4
 
5
5
  ## Usage
6
- Currently supports recruitment banners
6
+ Currently supports the emergency banner and recruitment banners.
7
7
 
8
8
  ## Adding the gem to your application
9
9
  Add this line to your application's Gemfile:
@@ -28,6 +28,39 @@ Add the JS dependencies to your existing asset dependencies file:
28
28
  //= require govuk_web_banners/dependencies
29
29
  ```
30
30
 
31
+ ## Adding emergency banners
32
+
33
+ Emergency banners are passed to the [Layout for Public](https://components.publishing.service.gov.uk/component-guide/layout_for_public) component, which is currently applied to each frontend app by the slimmer/static wrapping code - so you will only need to handle emergency banners in your app when Slimmer is removed from it. Once Slimmer is removed and you are calling the layout_for_public component directly in your app, add the emergency banner partial to the component's `emergency_banner:` key:
34
+
35
+ ```
36
+ <%= render "govuk_publishing_components/components/layout_for_public", {
37
+ draft_watermark: draft_environment,
38
+ emergency_banner: render("govuk_web_banners/emergency_banner"), # <-- Add this line
39
+ full_width: false,
40
+ ...etc
41
+ ```
42
+
43
+ if you want the homepage variant of the banner, you can add `homepage: true` to the render call:
44
+
45
+ ```
46
+ <%= render "govuk_publishing_components/components/layout_for_public", {
47
+ draft_watermark: draft_environment,
48
+ emergency_banner: render("govuk_web_banners/emergency_banner", homepage: true), # <-- Add this line
49
+ full_width: full_width,
50
+ ...etc
51
+ ```
52
+
53
+ Your app will also need access to the whitehall shared redis cluster (which is used to signal the emergency banner is up), via the `EMERGENCY_BANNER_REDIS_URL` environment variable (here is an example of [setting this in govuk-helm-charts](https://github.com/alphagov/govuk-helm-charts/blob/7818eaa22fc194d21548f316bcc5a46c2023dcb6/charts/app-config/values-staging.yaml#L3337-L3338)). You'll need to allow this in all three environments.
54
+
55
+ Finally, you'll need to configure a connection to the redis cluster, available at `Rails.application.config.emergency_banner_redis_client`. The suggested way of doing this is creating an initializer at `/config/initializers/govuk_web_banners.rb` with the content:
56
+
57
+ ```
58
+ Rails.application.config.emergency_banner_redis_client = Redis.new(
59
+ url: ENV["EMERGENCY_BANNER_REDIS_URL"],
60
+ reconnect_attempts: [15, 30, 45, 60],
61
+ )
62
+ ```
63
+
31
64
  ## Adding recruitment banners
32
65
 
33
66
  Add a call to the partial in the layout or view that you want banners to appear
@@ -0,0 +1,11 @@
1
+ <% emergency_banner = GovukWebBanners::EmergencyBanner.new %>
2
+ <% if emergency_banner.active? %>
3
+ <%= render "govuk_publishing_components/components/emergency_banner", {
4
+ campaign_class: emergency_banner.campaign_class,
5
+ heading: emergency_banner.heading,
6
+ link: emergency_banner.link,
7
+ link_text: emergency_banner.link_text,
8
+ short_description: emergency_banner.short_description,
9
+ homepage: local_assigns[:homepage] || false,
10
+ } %>
11
+ <% end %>
@@ -1,6 +1,6 @@
1
1
  <% recruitment_banner = GovukWebBanners::RecruitmentBanner.for_path(request.path) %>
2
2
  <% if recruitment_banner.present? %>
3
- <div class="govuk-width-container govuk-!-margin-top-4">
3
+ <div class="govuk-!-margin-top-4">
4
4
  <%= render "govuk_publishing_components/components/intervention", {
5
5
  new_tab: true,
6
6
  suggestion_text: recruitment_banner.suggestion_text,
@@ -16,32 +16,31 @@
16
16
  # Note that this file must contain a valid banners array, so if there are no banners
17
17
  # currently included, the file should at least contain banners: []
18
18
  banners:
19
- - name: AI banner 11/11/2024
19
+ - name: HMRC banner 03/01/2025
20
20
  suggestion_text: "Help improve GOV.UK"
21
21
  suggestion_link_text: "Sign up to take part in user research (opens in a new tab)"
22
- survey_url: https://survey.take-part-in-research.service.gov.uk/jfe/form/SV_2bggmg6xlelrO0S
22
+ survey_url: https://survey.take-part-in-research.service.gov.uk/jfe/form/SV_74GjifgnGv6GsMC?Source=BannerList_HMRC_CCG_Compliance
23
23
  page_paths:
24
- # government frontend:
25
- - /self-assessment-tax-returns
26
- - /working-for-yourself
27
- - /self-employed-records
28
- - /expenses-if-youre-self-employed
29
- - /first-company-accounts-and-return
30
- - /what-is-the-construction-industry-scheme
31
- - /capital-allowances
32
- - /simpler-income-tax-cash-basis
33
- - /expenses-and-benefits-a-to-z
34
- - /capital-gains-tax
35
- - /directors-loans
36
- - /self-assessment-tax-return-forms
37
- - /running-a-limited-company
38
- - /calculate-tax-on-company-cars
39
- - /introduction-to-business-rates
40
- - /calculate-your-business-rates
41
- - /apply-for-business-rate-relief
42
- - /stop-being-self-employed
43
- - /tax-codes
44
- # finder-frontend:
45
- - /business-finance-support
46
- start_date: 11/11/2024
47
- end_date: 06/01/2025
24
+ # government-frontend
25
+ - /government/collections/tax-compliance-detailed-information
26
+ - /government/collections/hm-revenue-and-customs-compliance-checks-factsheets
27
+ - /difficulties-paying-hmrc
28
+ - /tax-help
29
+ - /get-help-hmrc-extra-support
30
+ - /guidance/voluntary-and-community-sector-organisations-who-can-give-you-extra-support
31
+ - /tax-appeals
32
+ - /guidance/tax-disputes-alternative-dispute-resolution-adr
33
+ start_date: 03/01/2025
34
+ end_date: 31/01/2025
35
+ - name: UKVI banner 30/12/2025
36
+ suggestion_text: "Help improve GOV.UK"
37
+ suggestion_link_text: "Take part in user research (opens in a new tab)"
38
+ survey_url: https://surveys.publishing.service.gov.uk/s/XYVRGN/
39
+ page_paths:
40
+ # frontend
41
+ - /contact-ukvi-inside-outside-uk
42
+ # collections
43
+ - /browse/visas-immigration
44
+ - /government/organisations/uk-visas-and-immigration
45
+ start_date: 30/12/2024
46
+ end_date: 24/02/2025
@@ -0,0 +1,37 @@
1
+ require "govuk_app_config/govuk_error"
2
+ require "redis"
3
+
4
+ module GovukWebBanners
5
+ class EmergencyBanner
6
+ attr_reader :campaign_class, :heading, :short_description, :link, :link_text
7
+
8
+ def initialize
9
+ content = content_from_redis
10
+
11
+ @campaign_class = content[:campaign_class].presence
12
+ @heading = content[:heading].presence
13
+ @short_description = content[:short_description].presence
14
+ @link = content[:link].presence
15
+ @link_text = content[:link_text].presence
16
+ end
17
+
18
+ def active?
19
+ [campaign_class, heading].all?
20
+ end
21
+
22
+ private
23
+
24
+ def redis_client
25
+ Rails.application.config.emergency_banner_redis_client
26
+ end
27
+
28
+ def content_from_redis
29
+ Rails.cache.fetch("#emergency_banner/config", expires_in: 1.minute) do
30
+ redis_client.hgetall("emergency_banner").try(:symbolize_keys)
31
+ end
32
+ rescue StandardError => e
33
+ GovukError.notify(e, extra: { context: "Emergency Banner Redis" })
34
+ {}
35
+ end
36
+ end
37
+ end
@@ -1,3 +1,3 @@
1
1
  module GovukWebBanners
2
- VERSION = "0.2.0".freeze
2
+ VERSION = "0.4.0".freeze
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require "govuk_publishing_components"
2
2
 
3
+ require "govuk_web_banners/emergency_banner"
3
4
  require "govuk_web_banners/engine"
4
5
  require "govuk_web_banners/recruitment_banner"
5
6
  require "govuk_web_banners/version"
metadata CHANGED
@@ -1,15 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_web_banners
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-10 00:00:00.000000000 Z
10
+ date: 2025-01-20 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: govuk_app_config
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: govuk_publishing_components
15
28
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +51,20 @@ dependencies:
38
51
  - - ">="
39
52
  - !ruby/object:Gem::Version
40
53
  version: '7'
54
+ - !ruby/object:Gem::Dependency
55
+ name: redis
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
41
68
  - !ruby/object:Gem::Dependency
42
69
  name: byebug
43
70
  requirement: !ruby/object:Gem::Requirement
@@ -148,9 +175,11 @@ files:
148
175
  - Rakefile
149
176
  - app/assets/config/govuk_web_banners_manifest.js
150
177
  - app/assets/javascripts/govuk_web_banners/dependencies.js
178
+ - app/views/govuk_web_banners/_emergency_banner.html.erb
151
179
  - app/views/govuk_web_banners/_recruitment_banner.html.erb
152
180
  - config/govuk_web_banners/recruitment_banners.yml
153
181
  - lib/govuk_web_banners.rb
182
+ - lib/govuk_web_banners/emergency_banner.rb
154
183
  - lib/govuk_web_banners/engine.rb
155
184
  - lib/govuk_web_banners/recruitment_banner.rb
156
185
  - lib/govuk_web_banners/version.rb
@@ -161,7 +190,6 @@ metadata:
161
190
  homepage_uri: https://github.com/alphagov/govuk_web_banners
162
191
  source_code_uri: https://www.github.com/alphagov/govuk_web_banners
163
192
  changelog_uri: https://www.github.com/alphagov/govuk_web_banners/CHANGELOG.md
164
- post_install_message:
165
193
  rdoc_options: []
166
194
  require_paths:
167
195
  - lib
@@ -176,8 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
204
  - !ruby/object:Gem::Version
177
205
  version: '0'
178
206
  requirements: []
179
- rubygems_version: 3.5.23
180
- signing_key:
207
+ rubygems_version: 3.6.3
181
208
  specification_version: 4
182
209
  summary: A gem to support banners on GOV.UK frontend applications
183
210
  test_files: []