govuk_publishing_components 34.4.2 → 34.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +1 -29
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4.js +0 -1
- data/app/assets/javascripts/govuk_publishing_components/components/cookie-banner.js +2 -2
- data/app/assets/javascripts/govuk_publishing_components/dependencies.js +0 -10
- data/app/assets/javascripts/govuk_publishing_components/load-analytics.js +126 -30
- data/app/assets/javascripts/govuk_publishing_components/modules.js +7 -2
- data/app/views/govuk_publishing_components/components/_cookie_banner.html.erb +8 -4
- data/app/views/govuk_publishing_components/components/_image_card.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +3 -3
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +33 -4
- data/config/locales/ar.yml +6 -2
- data/config/locales/az.yml +6 -2
- data/config/locales/be.yml +6 -2
- data/config/locales/bg.yml +6 -2
- data/config/locales/bn.yml +6 -2
- data/config/locales/cs.yml +6 -2
- data/config/locales/cy.yml +6 -2
- data/config/locales/da.yml +6 -2
- data/config/locales/de.yml +6 -2
- data/config/locales/dr.yml +6 -2
- data/config/locales/el.yml +6 -2
- data/config/locales/en.yml +7 -3
- data/config/locales/es-419.yml +6 -2
- data/config/locales/es.yml +6 -2
- data/config/locales/et.yml +6 -2
- data/config/locales/fa.yml +6 -2
- data/config/locales/fi.yml +6 -2
- data/config/locales/fr.yml +6 -2
- data/config/locales/gd.yml +6 -2
- data/config/locales/gu.yml +6 -2
- data/config/locales/he.yml +6 -2
- data/config/locales/hi.yml +6 -2
- data/config/locales/hr.yml +6 -2
- data/config/locales/hu.yml +6 -2
- data/config/locales/hy.yml +6 -2
- data/config/locales/id.yml +6 -2
- data/config/locales/is.yml +6 -2
- data/config/locales/it.yml +6 -2
- data/config/locales/ja.yml +6 -2
- data/config/locales/ka.yml +6 -2
- data/config/locales/kk.yml +6 -2
- data/config/locales/ko.yml +6 -2
- data/config/locales/lt.yml +6 -2
- data/config/locales/lv.yml +6 -2
- data/config/locales/ms.yml +6 -2
- data/config/locales/mt.yml +6 -2
- data/config/locales/nl.yml +6 -2
- data/config/locales/no.yml +6 -2
- data/config/locales/pa-pk.yml +6 -2
- data/config/locales/pa.yml +6 -2
- data/config/locales/pl.yml +6 -2
- data/config/locales/ps.yml +6 -2
- data/config/locales/pt.yml +6 -2
- data/config/locales/ro.yml +6 -2
- data/config/locales/ru.yml +6 -2
- data/config/locales/si.yml +6 -2
- data/config/locales/sk.yml +6 -2
- data/config/locales/sl.yml +6 -2
- data/config/locales/so.yml +6 -2
- data/config/locales/sq.yml +6 -2
- data/config/locales/sr.yml +6 -2
- data/config/locales/sv.yml +6 -2
- data/config/locales/sw.yml +6 -2
- data/config/locales/ta.yml +6 -2
- data/config/locales/th.yml +6 -2
- data/config/locales/tk.yml +6 -2
- data/config/locales/tr.yml +6 -2
- data/config/locales/uk.yml +6 -2
- data/config/locales/ur.yml +6 -2
- data/config/locales/uz.yml +6 -2
- data/config/locales/vi.yml +6 -2
- data/config/locales/zh-hk.yml +6 -2
- data/config/locales/zh-tw.yml +6 -2
- data/config/locales/zh.yml +6 -2
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/axe-core/README.md +1 -1
- data/node_modules/axe-core/axe.js +175 -129
- data/node_modules/axe-core/axe.min.js +2 -2
- data/node_modules/axe-core/package.json +27 -27
- data/node_modules/axe-core/sri-history.json +4 -0
- metadata +3 -4
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b707429deb149f910265dd604cb0f9eb30836f1e4a0c87a0dcf169ca5f28f244
|
4
|
+
data.tar.gz: 6687ea613dd5bfe99e7098506acc5965a3f025f5d0a4e75ce5203835d810c3a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc4ecc673dbc67b7721f56127962ffc48aa66a54d5ede115c8b1d773a45f0e59683708ebb075e70ec1cf618a95eaf0b379e5928ef28f98ea2194dcf41857cbe7
|
7
|
+
data.tar.gz: 60647d60da042e96eecf6ddec99c8717a5f4b9b1aebb110a3916a4b1f519d2e847bb5ef475bef048a7618b048e7efd9c7156a89ecc6ed115b1041a057c9ea43f
|
@@ -6,39 +6,11 @@ window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {};
|
|
6
6
|
'use strict'
|
7
7
|
|
8
8
|
var core = {
|
9
|
-
load: function () {
|
10
|
-
var firstScript = document.getElementsByTagName('script')[0]
|
11
|
-
var newScript = document.createElement('script')
|
12
|
-
newScript.async = true
|
13
|
-
|
14
|
-
// initialise GTM
|
15
|
-
window.dataLayer = window.dataLayer || []
|
16
|
-
window.dataLayer.push({ 'gtm.blocklist': ['customPixels', 'customScripts', 'html', 'nonGoogleScripts'] })
|
17
|
-
window.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' })
|
18
|
-
|
19
|
-
var auth = window.GOVUK.analyticsGa4.vars.auth || ''
|
20
|
-
var preview = window.GOVUK.analyticsGa4.vars.preview || ''
|
21
|
-
if (auth) {
|
22
|
-
auth = '>m_auth=' + auth
|
23
|
-
}
|
24
|
-
if (preview) {
|
25
|
-
preview = '>m_preview=' + preview + '>m_cookies_win=x'
|
26
|
-
}
|
27
|
-
|
28
|
-
this.googleSrc = 'https://www.googletagmanager.com/gtm.js?id=' + window.GOVUK.analyticsGa4.vars.id + auth + preview
|
29
|
-
newScript.src = this.googleSrc
|
30
|
-
firstScript.parentNode.insertBefore(newScript, firstScript)
|
31
|
-
},
|
32
|
-
|
33
9
|
sendData: function (data) {
|
34
|
-
data.govuk_gem_version =
|
10
|
+
data.govuk_gem_version = window.GOVUK.analyticsGa4.vars.gem_version
|
35
11
|
window.dataLayer.push(data)
|
36
12
|
},
|
37
13
|
|
38
|
-
getGemVersion: function () {
|
39
|
-
return window.GOVUK.analyticsGa4.vars.gem_version || 'not found'
|
40
|
-
},
|
41
|
-
|
42
14
|
trackFunctions: {
|
43
15
|
findTrackingAttributes: function (clicked, trackingTrigger) {
|
44
16
|
if (clicked.hasAttribute('[' + trackingTrigger + ']')) {
|
@@ -76,7 +76,7 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
76
76
|
|
77
77
|
CookieBanner.prototype.setCookieConsent = function () {
|
78
78
|
if (this.$acceptCookiesButton.getAttribute('data-cookie-types') === 'all') {
|
79
|
-
this.$module.
|
79
|
+
this.$module.querySelector('.gem-c-cookie-banner__confirmation-message__accepted').hidden = false
|
80
80
|
}
|
81
81
|
window.GOVUK.approveAllCookieTypes()
|
82
82
|
this.$module.showConfirmationMessage()
|
@@ -92,7 +92,7 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
92
92
|
}
|
93
93
|
|
94
94
|
CookieBanner.prototype.rejectCookieConsent = function () {
|
95
|
-
this.$module.
|
95
|
+
this.$module.querySelector('.gem-c-cookie-banner__confirmation-message__rejected').hidden = false
|
96
96
|
this.$module.showConfirmationMessage()
|
97
97
|
this.$module.cookieBannerConfirmationMessage.focus()
|
98
98
|
window.GOVUK.cookie('cookies_preferences_set', 'true', { days: 365 })
|
@@ -8,15 +8,5 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
8
8
|
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
9
9
|
window.GOVUK.analyticsVars = window.GOVUK.analyticsVars || {}
|
10
10
|
|
11
|
-
// if statements ensure these functions don't execute during testing
|
12
|
-
if (typeof window.GOVUK.loadAnalytics !== 'undefined') {
|
13
|
-
if (typeof window.GOVUK.analyticsGa4.vars === 'undefined') {
|
14
|
-
window.GOVUK.loadAnalytics.loadGa4()
|
15
|
-
}
|
16
|
-
if (typeof window.GOVUK.analyticsVars.gaProperty === 'undefined') {
|
17
|
-
window.GOVUK.loadAnalytics.loadUa()
|
18
|
-
}
|
19
|
-
}
|
20
|
-
|
21
11
|
window.GOVUK.modules.start()
|
22
12
|
})
|
@@ -2,6 +2,8 @@
|
|
2
2
|
//= require govuk_publishing_components/analytics-ga4
|
3
3
|
//= require govuk_publishing_components/analytics/linked-domains
|
4
4
|
|
5
|
+
window.GOVUK = window.GOVUK || {}
|
6
|
+
|
5
7
|
window.GOVUK.loadAnalytics = {
|
6
8
|
productionDomains: [
|
7
9
|
'www.gov.uk',
|
@@ -45,6 +47,7 @@ window.GOVUK.loadAnalytics = {
|
|
45
47
|
},
|
46
48
|
|
47
49
|
loadUa: function (currentDomain) {
|
50
|
+
// The domain can be overridden. This is needed for testing as we need to fake the domain that we are on to test each environment.
|
48
51
|
currentDomain = currentDomain || window.location.hostname
|
49
52
|
|
50
53
|
// Universal Analytics variables
|
@@ -54,13 +57,13 @@ window.GOVUK.loadAnalytics = {
|
|
54
57
|
window.GOVUK.analyticsVars.gaProperty = 'UA-UNSET'
|
55
58
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-UNSET'
|
56
59
|
|
57
|
-
if (this.arrayContains(currentDomain, this.productionDomains)) {
|
60
|
+
if (this.arrayContains({ valueToFind: currentDomain, array: this.productionDomains })) {
|
58
61
|
window.GOVUK.analyticsVars.gaProperty = 'UA-26179049-1'
|
59
62
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-145652997-1'
|
60
|
-
} else if (this.arrayContains(currentDomain, this.stagingDomains)) {
|
63
|
+
} else if (this.arrayContains({ valueToFind: currentDomain, array: this.stagingDomains })) {
|
61
64
|
window.GOVUK.analyticsVars.gaProperty = 'UA-26179049-20'
|
62
65
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-145652997-1'
|
63
|
-
} else if (this.arrayContains(currentDomain, this.integrationDomains)) {
|
66
|
+
} else if (this.arrayContains({ valueToFind: currentDomain, array: this.integrationDomains })) {
|
64
67
|
window.GOVUK.analyticsVars.gaProperty = 'UA-26179049-22'
|
65
68
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-145652997-1'
|
66
69
|
}
|
@@ -71,43 +74,136 @@ window.GOVUK.loadAnalytics = {
|
|
71
74
|
}
|
72
75
|
},
|
73
76
|
|
77
|
+
loadGa4Vars: function () {
|
78
|
+
// If we recognise the environment, load the GA4 vars
|
79
|
+
if (this.ga4EnvironmentVariables[this.environment]) {
|
80
|
+
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
81
|
+
window.GOVUK.analyticsGa4.vars = window.GOVUK.analyticsGa4.vars || {}
|
82
|
+
window.GOVUK.analyticsGa4.vars.id = 'GTM-MG7HG5W'
|
83
|
+
window.GOVUK.analyticsGa4.vars.auth = this.ga4EnvironmentVariables[this.environment].auth
|
84
|
+
window.GOVUK.analyticsGa4.vars.preview = this.ga4EnvironmentVariables[this.environment].preview
|
85
|
+
window.GOVUK.analyticsGa4.vars.environment = this.environment // Used for testing and debugging
|
86
|
+
|
87
|
+
window.GOVUK.analyticsGa4.vars.gem_version = 'not found'
|
88
|
+
var gemMeta = document.querySelector('meta[name="govuk:components_gem_version"]')
|
89
|
+
if (gemMeta) {
|
90
|
+
window.GOVUK.analyticsGa4.vars.gem_version = gemMeta.getAttribute('content')
|
91
|
+
}
|
92
|
+
|
93
|
+
window.GOVUK.analyticsGa4.vars.internalDomains = []
|
94
|
+
window.GOVUK.analyticsGa4.vars.internalDomains.push(window.GOVUK.analyticsGa4.core.trackFunctions.getHostname())
|
95
|
+
window.GOVUK.analyticsGa4.core.trackFunctions.appendDomainsWithoutWWW(window.GOVUK.analyticsGa4.vars.internalDomains)
|
96
|
+
}
|
97
|
+
},
|
98
|
+
|
99
|
+
addGtmScriptToDom: function () {
|
100
|
+
var firstScript = document.getElementsByTagName('script')[0]
|
101
|
+
var newScript = document.createElement('script')
|
102
|
+
newScript.async = true
|
103
|
+
|
104
|
+
// initialise GTM
|
105
|
+
window.dataLayer = window.dataLayer || []
|
106
|
+
window.dataLayer.push({ 'gtm.blocklist': ['customPixels', 'customScripts', 'html', 'nonGoogleScripts'] })
|
107
|
+
window.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' })
|
108
|
+
|
109
|
+
var auth = window.GOVUK.analyticsGa4.vars.auth || ''
|
110
|
+
var preview = window.GOVUK.analyticsGa4.vars.preview || ''
|
111
|
+
if (auth) {
|
112
|
+
auth = '>m_auth=' + auth
|
113
|
+
}
|
114
|
+
if (preview) {
|
115
|
+
preview = '>m_preview=' + preview + '>m_cookies_win=x'
|
116
|
+
}
|
117
|
+
|
118
|
+
this.googleSrc = 'https://www.googletagmanager.com/gtm.js?id=' + window.GOVUK.analyticsGa4.vars.id + auth + preview
|
119
|
+
newScript.src = this.googleSrc
|
120
|
+
firstScript.parentNode.insertBefore(newScript, firstScript)
|
121
|
+
},
|
122
|
+
|
74
123
|
loadGa4: function (currentDomain) {
|
124
|
+
// The domain can be overridden. This is needed for testing as we need to fake the domain that we are on to test each environment.
|
75
125
|
currentDomain = currentDomain || window.location.hostname
|
76
|
-
var environment = ''
|
77
126
|
|
127
|
+
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
128
|
+
|
129
|
+
if (typeof window.GOVUK.analyticsGa4.core === 'undefined') {
|
130
|
+
console.error('load-analytics.js: window.GOVUK.analyticsGa4.core was not found - has ./analytics-ga4.js been imported?')
|
131
|
+
return
|
132
|
+
}
|
133
|
+
|
134
|
+
this.environment = ''
|
78
135
|
// Categorise current environment
|
79
|
-
if (this.arrayContains(currentDomain, this.productionDomains)) {
|
80
|
-
environment = 'production'
|
81
|
-
} else if (this.arrayContains(currentDomain, this.stagingDomains)) {
|
82
|
-
environment = 'staging'
|
83
|
-
} else if (this.arrayContains(currentDomain, this.integrationDomains)) {
|
84
|
-
environment = 'integration'
|
85
|
-
} else if (this.arrayContains(currentDomain, this.developmentDomains) || currentDomain.indexOf('.dev.gov.uk') !== -1) {
|
86
|
-
environment = 'development'
|
136
|
+
if (this.arrayContains({ valueToFind: currentDomain, array: this.productionDomains })) {
|
137
|
+
this.environment = 'production'
|
138
|
+
} else if (this.arrayContains({ valueToFind: currentDomain, array: this.stagingDomains })) {
|
139
|
+
this.environment = 'staging'
|
140
|
+
} else if (this.arrayContains({ valueToFind: currentDomain, array: this.integrationDomains })) {
|
141
|
+
this.environment = 'integration'
|
142
|
+
} else if (this.arrayContains({ valueToFind: currentDomain, array: this.developmentDomains }) || currentDomain.indexOf('.dev.gov.uk') !== -1) {
|
143
|
+
this.environment = 'development'
|
144
|
+
}
|
145
|
+
|
146
|
+
if (!this.environment) {
|
147
|
+
console.error('load-analytics.js: environment for GA4 not recognised - ' + this.environment + ' on ' + currentDomain)
|
148
|
+
return
|
149
|
+
}
|
150
|
+
|
151
|
+
// Don't load GA4 if initialiseGA4 is set to false. This allows us to disable analytics if required.
|
152
|
+
if (!this.ga4EnvironmentVariables[this.environment].initialiseGA4) {
|
153
|
+
return
|
87
154
|
}
|
88
155
|
|
89
|
-
//
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
156
|
+
// to be added: digital identity consent mechanism
|
157
|
+
var consentCookie = window.GOVUK.getConsentCookie()
|
158
|
+
if (consentCookie && consentCookie.usage) {
|
159
|
+
// Creates 'window.GOVUK.analyticsGa4.vars', then adds the gtm.js script to the DOM.
|
160
|
+
window.GOVUK.loadAnalytics.loadGa4Vars()
|
161
|
+
window.GOVUK.loadAnalytics.addGtmScriptToDom()
|
162
|
+
|
163
|
+
/* Initialises our GA4 modules once the DOM has loaded.
|
164
|
+
document.readyState is needed as when cookies aren't set the DOM is likely already loaded.
|
165
|
+
Therefore, if they accept cookies after the page has loaded our modules wouldn't initialise,
|
166
|
+
as DOMContentLoaded won't fire if the DOM has already loaded. */
|
167
|
+
if (document.readyState === 'complete') {
|
168
|
+
window.GOVUK.loadAnalytics.startGa4Modules()
|
169
|
+
} else {
|
170
|
+
window.addEventListener('DOMContentLoaded', function () {
|
171
|
+
window.GOVUK.loadAnalytics.startGa4Modules()
|
172
|
+
})
|
173
|
+
}
|
174
|
+
|
175
|
+
// to be added: cross domain tracking code
|
176
|
+
} else {
|
177
|
+
window.addEventListener('cookie-consent', function (e) {
|
178
|
+
window.GOVUK.loadAnalytics.loadGa4()
|
179
|
+
})
|
180
|
+
}
|
181
|
+
},
|
182
|
+
|
183
|
+
startGa4Modules: function () {
|
184
|
+
// Some tests initialise GA4, but we do not want our modules initialising, so this check is in place.
|
185
|
+
if (!window.GOVUK.analyticsGa4.vars.disableModules) {
|
186
|
+
var analyticsModules = window.GOVUK.analyticsGa4.analyticsModules
|
187
|
+
for (var property in analyticsModules) {
|
188
|
+
var module = analyticsModules[property]
|
189
|
+
if (typeof module.init === 'function') {
|
190
|
+
module.init()
|
104
191
|
}
|
105
|
-
window.GOVUK.analyticsGa4.init()
|
106
192
|
}
|
107
193
|
}
|
108
194
|
},
|
109
195
|
|
110
|
-
arrayContains: function (
|
111
|
-
|
196
|
+
arrayContains: function (params) {
|
197
|
+
if (!params || !params.valueToFind || !params.array) {
|
198
|
+
return false
|
199
|
+
}
|
200
|
+
|
201
|
+
return params.array.indexOf(params.valueToFind) !== -1
|
112
202
|
}
|
113
203
|
}
|
204
|
+
|
205
|
+
// This if statement stops this function running during testing
|
206
|
+
if (!window.jasmine) {
|
207
|
+
window.GOVUK.loadAnalytics.loadUa()
|
208
|
+
window.GOVUK.loadAnalytics.loadGa4()
|
209
|
+
}
|
@@ -38,8 +38,13 @@
|
|
38
38
|
if (typeof GOVUK.Modules[moduleName] === 'function' && !started) {
|
39
39
|
// Vanilla JavaScript GOV.UK Modules and GOV.UK Frontend Modules
|
40
40
|
if (GOVUK.Modules[moduleName].prototype.init) {
|
41
|
-
|
42
|
-
|
41
|
+
try {
|
42
|
+
new GOVUK.Modules[moduleName](element).init()
|
43
|
+
element.setAttribute('data-' + moduleNames[j] + '-module-started', true)
|
44
|
+
} catch (e) {
|
45
|
+
// if there's a problem with the module, catch the error to allow other modules to start
|
46
|
+
console.error('Error starting ' + moduleName + ' component JS: ' + e.message, window.location)
|
47
|
+
}
|
43
48
|
}
|
44
49
|
}
|
45
50
|
}
|
@@ -14,9 +14,9 @@
|
|
14
14
|
text = raw(text)
|
15
15
|
|
16
16
|
cookie_preferences_href ||= "/help/cookies"
|
17
|
-
confirmation_message ||= raw(t("components.cookie_banner.
|
17
|
+
confirmation_message ||= raw(t("components.cookie_banner.confirmation_message.html",
|
18
18
|
link: link_to(
|
19
|
-
t("components.cookie_banner.
|
19
|
+
t("components.cookie_banner.confirmation_message.link"),
|
20
20
|
cookie_preferences_href,
|
21
21
|
class: "govuk-link",
|
22
22
|
data: {
|
@@ -79,13 +79,17 @@
|
|
79
79
|
"track-action": "Cookie banner rejected",
|
80
80
|
}
|
81
81
|
} %>
|
82
|
-
<a class="govuk-link" href="<%= cookie_preferences_href %>"
|
82
|
+
<a class="govuk-link" href="<%= cookie_preferences_href %>"><%= t("components.cookie_banner.buttons.view_cookies") %></a>
|
83
83
|
</div>
|
84
84
|
<% end %>
|
85
85
|
</div>
|
86
86
|
</div>
|
87
87
|
<div class="gem-c-cookie-banner__confirmation govuk-width-container" tabindex="-1" hidden>
|
88
|
-
<p class="gem-c-cookie-banner__confirmation-message" role="alert"
|
88
|
+
<p class="gem-c-cookie-banner__confirmation-message" role="alert">
|
89
|
+
<span class="gem-c-cookie-banner__confirmation-message__accepted" hidden><%= t("components.cookie_banner.confirmation_message.accepted") %>. </span>
|
90
|
+
<span class="gem-c-cookie-banner__confirmation-message__rejected" hidden><%= t("components.cookie_banner.confirmation_message.rejected") %>. </span>
|
91
|
+
<%= confirmation_message %>
|
92
|
+
</p>
|
89
93
|
<div class="govuk-button-group">
|
90
94
|
<button class="gem-c-cookie-banner__hide-button govuk-button" data-hide-cookie-banner="true" data-module="gem-track-click" data-track-category="cookieBanner" data-track-action="Hide cookie banner"><%= t("components.cookie_banner.hide") %></button>
|
91
95
|
</div>
|
@@ -26,7 +26,7 @@
|
|
26
26
|
extra_link_classes << brand_helper.color_class
|
27
27
|
|
28
28
|
data_modules = %w[]
|
29
|
-
data_modules << "gem-track-click" if card_helper.is_tracking?
|
29
|
+
data_modules << "gem-track-click ga4-link-tracker" if card_helper.is_tracking?
|
30
30
|
data_modules << "image-card" if card_helper.youtube_video_id
|
31
31
|
%>
|
32
32
|
<% if card_helper.href || card_helper.extra_details.any? %>
|
@@ -58,6 +58,9 @@
|
|
58
58
|
"lux-reporter-script": path_to_javascript("govuk_publishing_components/vendor/lux/lux-reporter")
|
59
59
|
}
|
60
60
|
} %>
|
61
|
+
|
62
|
+
<% # Used for Google Analytics 4 debugging. Must be placed before load-analytics script. %>
|
63
|
+
<meta name="govuk:components_gem_version" content="<%= GovukPublishingComponents::VERSION %>" />
|
61
64
|
<%= javascript_include_tag "govuk_publishing_components/load-analytics" %>
|
62
65
|
|
63
66
|
<%= csrf_meta_tags %>
|
@@ -79,9 +82,6 @@
|
|
79
82
|
<% # The default og:image is added below :head so that scrapers see any custom metatags first, and this is just a fallback %>
|
80
83
|
<meta property="og:image" content="<%= asset_path "govuk-opengraph-image.png" %>">
|
81
84
|
|
82
|
-
<% # Used for Google Analytics 4 debugging %>
|
83
|
-
<meta name="govuk:components_gem_version" content="<%= GovukPublishingComponents::VERSION %>" />
|
84
|
-
|
85
85
|
<%= yield :head %>
|
86
86
|
</head>
|
87
87
|
<%= tag.body class: body_css_classes do %>
|
data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb
CHANGED
@@ -14,8 +14,14 @@
|
|
14
14
|
show_search_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.show", :label => "search")
|
15
15
|
hide_navigation_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.hide", :label => "navigation")
|
16
16
|
show_navigation_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.show", :label => "navigation")
|
17
|
+
|
18
|
+
navigation_links_length = 1 # GOVUK Logo makes this start from 1
|
19
|
+
navigation_links_columns.each do | column |
|
20
|
+
navigation_links_length = navigation_links_length + column[:menu_contents].length
|
21
|
+
end
|
22
|
+
navigation_links_length = navigation_links_length + popular_links.length
|
17
23
|
%>
|
18
|
-
<header role="banner" class="gem-c-layout-super-navigation-header" data-module="gem-track-click ga4-event-tracker" data-track-links-only data-ga4-expandable>
|
24
|
+
<header role="banner" class="gem-c-layout-super-navigation-header" data-module="gem-track-click ga4-event-tracker ga4-link-tracker" data-track-links-only data-ga4-expandable>
|
19
25
|
<div class="gem-c-layout-super-navigation-header__container govuk-width-container govuk-clearfix">
|
20
26
|
<div class="gem-c-layout-super-navigation-header__header-logo">
|
21
27
|
<a
|
@@ -28,6 +34,15 @@
|
|
28
34
|
href="<%= logo_link %>"
|
29
35
|
id="logo"
|
30
36
|
title="<%= logo_link_title %>"
|
37
|
+
data-ga4-link="<%= {
|
38
|
+
"event_name": "navigation",
|
39
|
+
"type": "header menu bar",
|
40
|
+
"external": "false",
|
41
|
+
"text": "GOV.UK",
|
42
|
+
"section": "Logo",
|
43
|
+
"index": 0,
|
44
|
+
"index_total": navigation_links_length
|
45
|
+
}.to_json %>"
|
31
46
|
>
|
32
47
|
<span class="govuk-header__logotype">
|
33
48
|
<!--[if gt IE 8]><!-->
|
@@ -125,7 +140,7 @@
|
|
125
140
|
<div class="gem-c-layout-super-navigation-header__width-container">
|
126
141
|
<div class="govuk-grid-row">
|
127
142
|
|
128
|
-
<% navigation_links_columns.each_with_index do | column,
|
143
|
+
<% navigation_links_columns.each_with_index do | column, column_index | %>
|
129
144
|
<%
|
130
145
|
case column[:size]
|
131
146
|
when 2
|
@@ -142,7 +157,7 @@
|
|
142
157
|
<%= column[:label] %>
|
143
158
|
</h3>
|
144
159
|
<ul class="gem-c-layout-super-navigation-header__navigation-second-items gem-c-layout-super-navigation-header__navigation-second-items--<%= column[:label].downcase.sub(" ", "-") %>">
|
145
|
-
<% column[:menu_contents].
|
160
|
+
<% column[:menu_contents].each_with_index do | item, index | %>
|
146
161
|
<%
|
147
162
|
has_description = item[:description].present?
|
148
163
|
link_classes = %w[govuk-link gem-c-layout-super-navigation-header__navigation-second-item-link]
|
@@ -158,6 +173,13 @@
|
|
158
173
|
track_label: item[:href],
|
159
174
|
track_dimension: item[:label],
|
160
175
|
track_dimension_index: "29",
|
176
|
+
ga4_link: {
|
177
|
+
"event_name": "navigation",
|
178
|
+
"type": "header menu bar",
|
179
|
+
"index": "1.#{column_index + 1}.#{index + 1}",
|
180
|
+
"index_total": navigation_links_length,
|
181
|
+
"section": column[:label],
|
182
|
+
}
|
161
183
|
}
|
162
184
|
} %>
|
163
185
|
<%= tag.p item[:description], class: "gem-c-layout-super-navigation-header__navigation-second-item-description" if has_description %>
|
@@ -279,7 +301,7 @@
|
|
279
301
|
<div class="govuk-grid-column-full">
|
280
302
|
<h3 class="govuk-heading-m"><%= popular_links_heading %></h3>
|
281
303
|
<ul class="govuk-list">
|
282
|
-
<% popular_links.
|
304
|
+
<% popular_links.each_with_index do | popular_link, index | %>
|
283
305
|
<li class="gem-c-layout-super-navigation-header__popular-item">
|
284
306
|
<%= link_to popular_link[:label], popular_link[:href], {
|
285
307
|
class: [
|
@@ -292,6 +314,13 @@
|
|
292
314
|
track_label: popular_link[:href],
|
293
315
|
track_dimension: popular_link[:label],
|
294
316
|
track_dimension_index: "29",
|
317
|
+
ga4_link: {
|
318
|
+
"event_name": "navigation",
|
319
|
+
"type": "header menu bar",
|
320
|
+
"index": "2.2.#{index + 1}",
|
321
|
+
"index_total": navigation_links_length,
|
322
|
+
"section": popular_links_heading,
|
323
|
+
}
|
295
324
|
}
|
296
325
|
} %>
|
297
326
|
</li>
|
data/config/locales/ar.yml
CHANGED
@@ -44,8 +44,12 @@ ar:
|
|
44
44
|
buttons:
|
45
45
|
accept_cookies: قبول ملفات تعريف الارتباط الإضافية
|
46
46
|
reject_cookies: رفض ملفات تعريف الارتباط الإضافية
|
47
|
-
|
48
|
-
|
47
|
+
view_cookies:
|
48
|
+
confirmation_message:
|
49
|
+
accepted:
|
50
|
+
html: يمكنك %{link} في أي وقت.
|
51
|
+
link: قم بتغيير إعدادات ملفات تعريف الارتباط الخاصة بك
|
52
|
+
rejected:
|
49
53
|
hide: إخفاء هذه الرسالة
|
50
54
|
text:
|
51
55
|
- نحن نستخدم بعض ملفات تعريف الارتباط الأساسية لجعل هذا الموقع يعمل.
|
data/config/locales/az.yml
CHANGED
@@ -40,8 +40,12 @@ az:
|
|
40
40
|
buttons:
|
41
41
|
accept_cookies: Əlavə kukilər qəbul edin
|
42
42
|
reject_cookies: Əlavə kukilərdən imtina edin
|
43
|
-
|
44
|
-
|
43
|
+
view_cookies:
|
44
|
+
confirmation_message:
|
45
|
+
accepted:
|
46
|
+
html: İstənilən vaxt %{link}.
|
47
|
+
link: Kuki parametrlərinizi dəyişdirin
|
48
|
+
rejected:
|
45
49
|
hide: Bu mesajı gizlət
|
46
50
|
text:
|
47
51
|
- Biz bu vebsaytın işləməsini təmin etmək üçün bəzi zəruri kukilərdən istifadə edirik.
|
data/config/locales/be.yml
CHANGED
@@ -42,8 +42,12 @@ be:
|
|
42
42
|
buttons:
|
43
43
|
accept_cookies: Прыняць дадатковыя файлы cookie
|
44
44
|
reject_cookies: Адхіліць дадатковыя файлы cookie
|
45
|
-
|
46
|
-
|
45
|
+
view_cookies:
|
46
|
+
confirmation_message:
|
47
|
+
accepted:
|
48
|
+
html: Вы можаце %{link} у любы час.
|
49
|
+
link: змяніць налады файлаў cookie
|
50
|
+
rejected:
|
47
51
|
hide: Схаваць гэта паведамленне
|
48
52
|
text:
|
49
53
|
- Мы выкарыстоўваем некаторыя асноўныя файлы cookie для забеспячэння працы гэтага сайта.
|
data/config/locales/bg.yml
CHANGED
@@ -40,8 +40,12 @@ bg:
|
|
40
40
|
buttons:
|
41
41
|
accept_cookies: Приемане на допълнителни бисквитки
|
42
42
|
reject_cookies: Отказване от допълнителни бисквитки
|
43
|
-
|
44
|
-
|
43
|
+
view_cookies:
|
44
|
+
confirmation_message:
|
45
|
+
accepted:
|
46
|
+
html: Можете да %{link} по всяко време.
|
47
|
+
link: Промяна на настройките за бисквитките
|
48
|
+
rejected:
|
45
49
|
hide: Скриване на това съобщение
|
46
50
|
text:
|
47
51
|
- Използваме някои основни бисквитки
|
data/config/locales/bn.yml
CHANGED
@@ -40,8 +40,12 @@ bn:
|
|
40
40
|
buttons:
|
41
41
|
accept_cookies: অতিরিক্ত কুকিজ গ্রহণ করুন
|
42
42
|
reject_cookies: অতিরিক্ত কুকিজ প্রত্যাখ্যান করুন
|
43
|
-
|
44
|
-
|
43
|
+
view_cookies:
|
44
|
+
confirmation_message:
|
45
|
+
accepted:
|
46
|
+
html: আপনি যেকোনো সময় %{link} করতে পারেন।
|
47
|
+
link: আপনার কুকি সেটিংস পরিবর্তন করুন
|
48
|
+
rejected:
|
45
49
|
hide: এই মেসেজটি লুকিয়ে রাখুন
|
46
50
|
text:
|
47
51
|
- "“এই ওয়েবসাইটটি যেন কাজ করে সেজন্য আমরা কিছু প্রয়োজনীয় কুকি ব্যবহার করি”"
|
data/config/locales/cs.yml
CHANGED
@@ -41,8 +41,12 @@ cs:
|
|
41
41
|
buttons:
|
42
42
|
accept_cookies: Přijmout další soubory cookie
|
43
43
|
reject_cookies: Odmítnutí dalších souborů cookie
|
44
|
-
|
45
|
-
|
44
|
+
view_cookies:
|
45
|
+
confirmation_message:
|
46
|
+
accepted:
|
47
|
+
html: Kdykoli můžete %{link}.
|
48
|
+
link: Změna nastavení souborů cookie
|
49
|
+
rejected:
|
46
50
|
hide: Skrýt tuto zprávu
|
47
51
|
text:
|
48
52
|
- Používáme některé základní soubory cookie
|
data/config/locales/cy.yml
CHANGED
@@ -44,8 +44,12 @@ cy:
|
|
44
44
|
buttons:
|
45
45
|
accept_cookies: Derbyn cwcis ychwanegol
|
46
46
|
reject_cookies: Gwrthod cwcis ychwanegol
|
47
|
-
|
48
|
-
|
47
|
+
view_cookies:
|
48
|
+
confirmation_message:
|
49
|
+
accepted:
|
50
|
+
html: Gallwch %{link} unrhyw bryd.
|
51
|
+
link: newid eich gosodiadau cwcis
|
52
|
+
rejected:
|
49
53
|
hide: Cuddio'r neges hon
|
50
54
|
text:
|
51
55
|
- Rydyn ni'n defnyddio rhai cwcis hanfodol i wneud i'r wefan hon weithio.
|
data/config/locales/da.yml
CHANGED
@@ -40,8 +40,12 @@ da:
|
|
40
40
|
buttons:
|
41
41
|
accept_cookies: Accepter yderligere cookies
|
42
42
|
reject_cookies: Afvise yderligere cookies
|
43
|
-
|
44
|
-
|
43
|
+
view_cookies:
|
44
|
+
confirmation_message:
|
45
|
+
accepted:
|
46
|
+
html: Du kan %{link} når som helst.
|
47
|
+
link: ændre dine cookie-indstillinger
|
48
|
+
rejected:
|
45
49
|
hide: Skjul denne meddelelse
|
46
50
|
text:
|
47
51
|
- Vi bruger nogle vigtige cookies for at få dette websted til at fungere.
|
data/config/locales/de.yml
CHANGED
@@ -40,8 +40,12 @@ de:
|
|
40
40
|
buttons:
|
41
41
|
accept_cookies: Zusätzliche Cookies akzeptieren
|
42
42
|
reject_cookies: Zusätzliche Cookies ablehnen
|
43
|
-
|
44
|
-
|
43
|
+
view_cookies:
|
44
|
+
confirmation_message:
|
45
|
+
accepted:
|
46
|
+
html: Sie können jederzeit %{link}.
|
47
|
+
link: Cookie-Einstellungen ändern
|
48
|
+
rejected:
|
45
49
|
hide: Diese Meldung ausblenden
|
46
50
|
text:
|
47
51
|
- Wir verwenden einige essenzielle Cookies
|
data/config/locales/dr.yml
CHANGED
@@ -43,8 +43,12 @@ dr:
|
|
43
43
|
buttons:
|
44
44
|
accept_cookies: کوکی هایی اضافی را بپذیرید
|
45
45
|
reject_cookies: کوکی هایی اضافی را رد نمایید
|
46
|
-
|
47
|
-
|
46
|
+
view_cookies:
|
47
|
+
confirmation_message:
|
48
|
+
accepted:
|
49
|
+
html: در هر زمان میتوانید %{link} کنید.
|
50
|
+
link: تنظیمات کوکی خودرا تغییر دهید
|
51
|
+
rejected:
|
48
52
|
hide: این پیام را مخفی نمایید
|
49
53
|
text:
|
50
54
|
- ما از برخی کوکی هایی ضروری برای اینکه این ویبسایت کار نماید استفاده میکنیم.
|
data/config/locales/el.yml
CHANGED
@@ -40,8 +40,12 @@ el:
|
|
40
40
|
buttons:
|
41
41
|
accept_cookies: Αποδοχή επιπλέον cookies
|
42
42
|
reject_cookies: Απόρριψη επιπλέον cookies
|
43
|
-
|
44
|
-
|
43
|
+
view_cookies:
|
44
|
+
confirmation_message:
|
45
|
+
accepted:
|
46
|
+
html: Μπορείτε %{link} ανά πάσα στιγμή.
|
47
|
+
link: αλλάξτε τις ρυθμίσεις cookies
|
48
|
+
rejected:
|
45
49
|
hide: Απόκρυψη αυτού του μηνύματος
|
46
50
|
text:
|
47
51
|
- Χρησιμοποιούμε μερικά βασικά cookies για να λειτουργήσει αυτός ο ιστότοπος.
|