metadata_presenter 2.16.12 → 2.16.13

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: 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