metadata_presenter 2.16.12 → 2.16.13

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: 4ed9df3a1d56df6ff57746e7976d578741de8df0214f1080fbc661a087753bea
4
- data.tar.gz: 85783ae10996111d01c523cff076ca0b82634cac855dfdf32f88665c5187a6d7
3
+ metadata.gz: f654eb8910e6b544c20c7b4966c923dfaa60fe94bf2afb0602ba6522b22c897b
4
+ data.tar.gz: fdaf6374f850ecd62c1b41fb2c985d98e5fd422943012e437344086a7fd9ad07
5
5
  SHA512:
6
- metadata.gz: 9c9fc79586eef3d60144b6bdb0093adf3a0ea07db6833a504d65a0bd96c474a66009a1900d071d51370db0857231430b7e18d2777bb7748d216b708f13bd5702
7
- data.tar.gz: 27b1519b719d9f0c845271523e4afe4f89366e373868e2b18b10dd3d5360b49b22ba384789dd6a8c3cca46dab4599114a5845a8ecd47d833af8a832c1fcf1f7e
6
+ metadata.gz: bd349181c6279c3f338b6004a8730d4b6f9f5624be90d99712875e16c799827936837c66b24d99738440588b26ee8ab67213bf18cabfb35e788da8e7734f49d7
7
+ data.tar.gz: ae76a89d85d486dfea4f4154e5bfd3da23455501eec8ac6c9b8ec28a015fa87253e5d093afcdec60e9e0928cdeff4b43072376f8f2c3ba0d1bb572168d7ef223
@@ -35,6 +35,21 @@ module MetadataPresenter
35
35
  end
36
36
  helper_method :answered?
37
37
 
38
+ def analytics_cookie_name
39
+ @analytics_cookie_name ||= "analytics-#{service.service_name.parameterize}"
40
+ end
41
+ helper_method :analytics_cookie_name
42
+
43
+ def allow_analytics?
44
+ no_analytics_cookie? || cookies[analytics_cookie_name] == 'accepted'
45
+ end
46
+ helper_method :allow_analytics?
47
+
48
+ def show_cookie_banner?
49
+ no_analytics_cookie? && analytics_tags_present?
50
+ end
51
+ helper_method :show_cookie_banner?
52
+
38
53
  private
39
54
 
40
55
  def not_found
@@ -44,5 +59,15 @@ module MetadataPresenter
44
59
  def redirect_to_page(url)
45
60
  redirect_to File.join(request.script_name, url)
46
61
  end
62
+
63
+ def analytics_tags_present?
64
+ Rails.application.config.supported_analytics.values.flatten.any? do |analytic|
65
+ ENV[analytic].present?
66
+ end
67
+ end
68
+
69
+ def no_analytics_cookie?
70
+ cookies[analytics_cookie_name].blank?
71
+ end
47
72
  end
48
73
  end
@@ -4,7 +4,7 @@
4
4
  <title><%= service.service_name %></title>
5
5
  <%= csrf_meta_tags %>
6
6
  <%= csp_meta_tag %>
7
-
7
+
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
9
9
  <link rel="shortcut icon" sizes="16x16 32x32 48x48" href="<%= asset_pack_url('media/images/favicon.ico') %>" type="image/x-icon" />
10
10
  <link rel="mask-icon" href="<%= asset_pack_url('media/images/govuk-mask-icon.svg') %>" color="blue">
@@ -15,9 +15,17 @@
15
15
 
16
16
  <%= stylesheet_pack_tag 'govuk' %>
17
17
  <%= stylesheet_link_tag 'application', media: 'all' %>
18
+
19
+ <% if allow_analytics? %>
20
+ <%= render template: 'metadata_presenter/analytics/analytics' %>
21
+ <% end %>
18
22
  </head>
19
23
 
20
24
  <body class="govuk-template__body">
25
+ <% if show_cookie_banner? %>
26
+ <%= render partial: 'metadata_presenter/analytics/cookie_banner' %>
27
+ <% end %>
28
+
21
29
  <%= render template: 'metadata_presenter/header/show' %>
22
30
  <div class="govuk-width-container govuk-body-m">
23
31
  <main class="govuk-main-wrapper govuk-main-wrapper--auto-spacing" id="main-content" role="main">
@@ -0,0 +1,63 @@
1
+ <div class="govuk-cookie-banner" id="govuk-cookie-banner" data-nosnippet role="region" aria-label="<%= t('analytics.heading', service_name: service.service_name) %>">
2
+ <div class="govuk-cookie-banner__message govuk-width-container" id="govuk-cookie-banner-message">
3
+
4
+ <div class="govuk-grid-row">
5
+ <div class="govuk-grid-column-two-thirds">
6
+ <h2 class="govuk-cookie-banner__heading govuk-heading-m">
7
+ <%= t('analytics.heading', service_name: service.service_name) %>
8
+ </h2>
9
+
10
+ <div class="govuk-cookie-banner__content">
11
+ <p class="govuk-body"><%= t('analytics.body_1') %></p>
12
+ <p class="govuk-body"><%= t('analytics.body_2') %></p>
13
+ </div>
14
+ </div>
15
+ </div>
16
+
17
+ <div class="govuk-button-group">
18
+ <button type="button" class="govuk-button" data-module="govuk-button" onclick='analytics.accept("<%= analytics_cookie_name %>")'>
19
+ <%= t('analytics.accept') %>
20
+ </button>
21
+ <button type="button" class="govuk-button" data-module="govuk-button" onclick='analytics.reject("<%= analytics_cookie_name %>")'>
22
+ <%= t('analytics.reject') %>
23
+ </button>
24
+ <a class="govuk-link" href="/cookies"><%= t('analytics.view_cookies') %></a>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="govuk-cookie-banner__message govuk-width-container" id="govuk-cookie-banner-message-accepted" role="alert" style="display: none;">
29
+ <div class="govuk-grid-row">
30
+ <div class="govuk-grid-column-two-thirds">
31
+ <div class="govuk-cookie-banner__content">
32
+ <p class="govuk-body">
33
+ <%= t('analytics.confirmation', action: t('analytics.accepted')) %>
34
+ </p>
35
+ </div>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="govuk-button-group">
40
+ <button class="govuk-button" data-module="govuk-button" onclick="analytics.hideCookieBanner()">
41
+ <%= t('analytics.hide') %>
42
+ </button>
43
+ </div>
44
+ </div>
45
+
46
+ <div class="govuk-cookie-banner__message govuk-width-container" id="govuk-cookie-banner-message-rejected" role="alert" style="display: none;">
47
+ <div class="govuk-grid-row">
48
+ <div class="govuk-grid-column-two-thirds">
49
+ <div class="govuk-cookie-banner__content">
50
+ <p class="govuk-body">
51
+ <%= t('analytics.confirmation', action: t('analytics.rejected')) %>
52
+ </p>
53
+ </div>
54
+ </div>
55
+ </div>
56
+
57
+ <div class="govuk-button-group">
58
+ <button class="govuk-button" data-module="govuk-button" onclick="analytics.hideCookieBanner()">
59
+ <%= t('analytics.hide') %>
60
+ </button>
61
+ </div>
62
+ </div>
63
+ </div>
@@ -0,0 +1,10 @@
1
+ <!-- Global site tag (gtag.js) - Google Analytics -->
2
+ <script async src="https://www.googletagmanager.com/gtag/js?id=<%= analytic_tag %>"></script>
3
+ <script>
4
+ window.dataLayer = window.dataLayer || [];
5
+ function gtag(){dataLayer.push(arguments);}
6
+ gtag('js', new Date());
7
+
8
+ gtag('config', <%= analytic_tag %>);
9
+ </script>
10
+ <!-- End Global site tag (gtag.js) - Google Analytics -->
@@ -0,0 +1,5 @@
1
+ <% analytics.each do |analytic| %>
2
+ <% if ENV[analytic].present? %>
3
+ <%= render partial: "metadata_presenter/analytics/#{analytic.downcase}", locals: { analytic_tag: ENV[analytic] } %>
4
+ <% end %>
5
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
3
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
4
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
5
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
6
+ })(window,document,'script','dataLayer',<%= analytic_tag %>);</script>
7
+ <!-- End Google Tag Manager -->
@@ -0,0 +1,11 @@
1
+ <!-- Google Universal Analytics -->
2
+ <script>
3
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
7
+
8
+ ga('create', <%= analytic_tag %>, 'auto');
9
+ ga('send', 'pageview');
10
+ </script>
11
+ <!-- End Google Universal Analytics -->
@@ -0,0 +1,3 @@
1
+ <% Rails.application.config.supported_analytics.each do |provider, analytics| %>
2
+ <%= render partial: "metadata_presenter/analytics/#{provider}", locals: { analytics: analytics } %>
3
+ <% end %>
@@ -0,0 +1 @@
1
+ Rails.application.config.supported_analytics = { google: %w[UA GTM GA4] }
@@ -0,0 +1,12 @@
1
+ en:
2
+ analytics:
3
+ heading: Cookies on %{service_name}
4
+ body_1: We use some essential cookies to make this service work.
5
+ body_2: We'd also like to use analytics cookies so we can understand how you use the service and make improvements.
6
+ accept: Accept analytics cookies
7
+ reject: Reject analytics cookies
8
+ view_cookies: View cookies
9
+ accepted: accepted
10
+ rejected: rejected
11
+ confirmation: You've %{action} analytics cookies.
12
+ hide: Hide this message
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.16.12'.freeze
2
+ VERSION = '2.16.13'.freeze
3
3
  end
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: 2.16.12
4
+ version: 2.16.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-01 00:00:00.000000000 Z
11
+ date: 2022-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -333,6 +333,12 @@ files:
333
333
  - app/validators/metadata_presenter/word_count.rb
334
334
  - app/views/errors/404.html
335
335
  - app/views/layouts/metadata_presenter/application.html.erb
336
+ - app/views/metadata_presenter/analytics/_cookie_banner.html.erb
337
+ - app/views/metadata_presenter/analytics/_ga4.html.erb
338
+ - app/views/metadata_presenter/analytics/_google.html.erb
339
+ - app/views/metadata_presenter/analytics/_gtm.html.erb
340
+ - app/views/metadata_presenter/analytics/_ua.html.erb
341
+ - app/views/metadata_presenter/analytics/analytics.html.erb
336
342
  - app/views/metadata_presenter/attribute/_body.html.erb
337
343
  - app/views/metadata_presenter/attribute/_heading.html.erb
338
344
  - app/views/metadata_presenter/attribute/_lede.html.erb
@@ -363,7 +369,9 @@ files:
363
369
  - config/initializers/default_text.rb
364
370
  - config/initializers/inflections.rb
365
371
  - config/initializers/schemas.rb
372
+ - config/initializers/supported_analytics.rb
366
373
  - config/initializers/supported_components.rb
374
+ - config/locales/en.yml
367
375
  - config/routes.rb
368
376
  - default_metadata/component/autocomplete.json
369
377
  - default_metadata/component/checkboxes.json