card-mod-google_analytics 0.13.2 → 0.15

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: 5dcd36529299fa6c209403d904e0b455d9d0e3e8db3ac3ee9a0428fcbfe23e1c
4
- data.tar.gz: 105361cca8e531c4f91c85161af734f1d5df844a541bad42230cf559f262dee8
3
+ metadata.gz: c957d1bd240ffbdb77a69deb65a4c19837bdf554fdf7aa2e9365405b4881558b
4
+ data.tar.gz: bbd312be50e17bed094781042b2bd56a3f8e552a430c8cbae0ca52b7b853fa9f
5
5
  SHA512:
6
- metadata.gz: 9a05facf0d7bd4e0dfc24c9af7517d875c5aeb7e819aa7e1aeb0b385594e69bfe852b7948b8ef4c458faa6b5fe1fa029dfda8a37ebf693b64e955e9284e033dd
7
- data.tar.gz: c90bfb04ceee1f794f7a840f2a129931f6b6597310a8d30e3cdb074c6cb54398ae7608f400cd8c83c9f5abc91625e3a2bde6a1b1134f60b35ef322812bb7feaa
6
+ metadata.gz: 0e2dd623747ace80b0149f8fc5ec399d843e16011ce35d17a50f2cfe8d5c9f66c44c4da1f976b0af606d3e62237004f016b6869ad2cbb1c2651d26bbf11afb0c
7
+ data.tar.gz: e7a718192871a2cd1f5c1cbd092c789c594d7d5a0ffe05da9c04702d5f229ceaa1096114ce5ebd7babe82899962e220d2818453ff20bd64915c9e81cce37b4f1
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ <!--
2
+ # @title README - mod: google analytics
3
+ -->
4
+
5
+ # Google Analytics mod
6
+
7
+ This mod supports the inclusion of Google Analytics snippets in the `<head>` tag
8
+ of Decko pages.
9
+
10
+ _Note: this mod currently supports only Universal Analytics, but GA4 support is
11
+ coming soon._
12
+
13
+ ## Client-side tracking: Snippets
14
+
15
+ To add a snippet, Monkeys can add a universal analytics key for your GA property
16
+ to `config.google_analytics_key`. Sharks can also edit
17
+ the `:google_analytics_key` card.
18
+
19
+ ## Server-side tracking (experimental)
20
+
21
+ It is possible to send information to Google Analytics about server requests
22
+ that never go through a browser (and therefore can't be captured using
23
+ snippets). Any request for which the method `#track_page_from_server?`
24
+ returns true for the main card will send information to the Google Analytics
25
+ account configured. If you want these requests to go to a different property
26
+ (which is recommended, because without the extra browser information, these
27
+ requests have far less metadata and are thus harder for GA to interpret as
28
+ part of continuous user journeys), then you can add a key for that property
29
+ using `config.google_analytics_tracker_key`.
@@ -8,20 +8,19 @@ def track_page!
8
8
  tracker.pageview tracker_options
9
9
  end
10
10
 
11
- # TODO: optimize so it doesn't keep doing lookup if there is no key.
12
- def google_analytics_key
13
- @google_analytics_key ||=
14
- Card::Rule.global_setting(:google_analytics_key) ||
15
- Card.config.google_analytics_key
11
+ def google_analytics_keys
12
+ @google_analytics_keys ||= Array.wrap(
13
+ Card::Rule.global_setting(:google_analytics_key) || Card.config.google_analytics_key
14
+ )
16
15
  end
17
16
 
18
17
  def tracker
19
18
  tracker_key && ::Staccato.tracker(tracker_key) # , nil, ssl: true
20
19
  end
21
20
 
22
- # can override to have separate keys for web and API
21
+ # can have separate keys for web and API
23
22
  def tracker_key
24
- google_analytics_key
23
+ Card.config.google_analytics_tracker_key || google_analytics_keys.first
25
24
  end
26
25
 
27
26
  def tracker_options
@@ -41,14 +40,28 @@ def track_page_from_server?
41
40
  end
42
41
 
43
42
  format :html do
44
- delegate :google_analytics_key, to: :card
43
+ delegate :google_analytics_keys, to: :card
44
+
45
+ def body_tag klasses=""
46
+ super { "#{render(:google_analytics_noscript)}\n\n#{yield}" }
47
+ end
45
48
 
46
49
  def views_in_head
47
- super << :google_analytics_snippet
50
+ super.unshift :google_analytics_snippets
51
+ end
52
+
53
+ view :google_analytics_snippets, unknown: true, perms: :none do
54
+ haml :google_analytics_snippets if google_analytics_keys.present?
55
+ end
56
+
57
+ view :google_analytics_noscript, unknown: true, perms: :none do
58
+ haml :google_analytics_noscript if google_tag_manager_keys.present?
48
59
  end
49
60
 
50
- view :google_analytics_snippet, unknown: true, perms: :none do
51
- haml :google_analytics_snippet if google_analytics_key
61
+ def google_tag_manager_keys
62
+ @google_tag_manager_keys ||= google_analytics_keys.find_all do |key|
63
+ key.match?(/^GTM-/)
64
+ end
52
65
  end
53
66
 
54
67
  def google_analytics_snippet_vars
@@ -0,0 +1,8 @@
1
+ / Google Tag Manager (noscript)
2
+ - google_tag_manager_keys.each do |ga_key|
3
+ %noscript
4
+ %iframe{ src: "https://www.googletagmanager.com/ns.html?id=#{ga_key}",
5
+ height: "0",
6
+ width: "0",
7
+ style: "display:none;visibility:hidden" }
8
+ / End Google Tag Manager (noscript)
@@ -0,0 +1,36 @@
1
+ / Google Analytics
2
+ - google_analytics_keys.each do |ga_key|
3
+ - case ga_key
4
+ - when /^UA-/
5
+ / Universal Analytics Tag (analytics.js)
6
+ %script
7
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
8
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
9
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
10
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
11
+
12
+ ga('create', '#{ga_key}', 'auto');
13
+ - google_analytics_snippet_vars.each do |key, value|
14
+ - value = "'#{value}'" if value.is_a? String
15
+ ga('set', '#{key}', #{value})
16
+ ga('send', 'pageview');
17
+
18
+ - when /^G-/
19
+ / Global site tag (gtag.js)
20
+ %script{ async: true, src: "https://www.googletagmanager.com/gtag/js?id=#{ga_key}" }
21
+ %script
22
+ window.dataLayer = window.dataLayer || [];
23
+ function gtag(){dataLayer.push(arguments);}
24
+ gtag('js', new Date());
25
+ = "gtag('config', '#{ga_key}');"
26
+
27
+ - when /^GTM-/
28
+ / Google Tag Manager (gtm.js)
29
+ %script
30
+ (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
31
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
32
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
33
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
34
+ })(window,document,'script','dataLayer','#{ga_key}');
35
+
36
+ / End Google Analytics
metadata CHANGED
@@ -1,31 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-google_analytics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.2
4
+ version: '0.15'
5
5
  platform: ruby
6
6
  authors:
7
- - Ethan McCutchen
8
7
  - Philipp Kühl
9
- - Gerry Gleason
8
+ - Ethan McCutchen
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2021-08-06 00:00:00.000000000 Z
12
+ date: 2021-12-23 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: card
17
16
  requirement: !ruby/object:Gem::Requirement
18
17
  requirements:
19
- - - '='
18
+ - - ">="
20
19
  - !ruby/object:Gem::Version
21
- version: 1.103.2
20
+ version: '0'
22
21
  type: :runtime
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
24
  requirements:
26
- - - '='
25
+ - - ">="
27
26
  - !ruby/object:Gem::Version
28
- version: 1.103.2
27
+ version: '0'
29
28
  - !ruby/object:Gem::Dependency
30
29
  name: staccato
31
30
  requirement: !ruby/object:Gem::Requirement
@@ -47,18 +46,15 @@ executables: []
47
46
  extensions: []
48
47
  extra_rdoc_files: []
49
48
  files:
49
+ - README.md
50
50
  - lib/card/mod/google_analytics.rb
51
51
  - set/all/google_analytics.rb
52
- - set/all/google_analytics_snippet.haml
53
- homepage: https://decko.org
52
+ - set/all/google_analytics_noscript.haml
53
+ - set/all/google_analytics_snippets.haml
54
+ homepage: http://decko.org
54
55
  licenses:
55
56
  - GPL-3.0
56
57
  metadata:
57
- source_code_uri: https://github.com/decko-commons/decko
58
- homepage_uri: https://decko.org
59
- bug_tracker_uri: https://github.com/decko-commons/decko/issues
60
- wiki_uri: https://decko.org
61
- documentation_url: http://docs.decko.org/
62
58
  card-mod: google_analytics
63
59
  post_install_message:
64
60
  rdoc_options: []
@@ -75,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
71
  - !ruby/object:Gem::Version
76
72
  version: '0'
77
73
  requirements: []
78
- rubygems_version: 3.1.6
74
+ rubygems_version: 3.2.15
79
75
  signing_key:
80
76
  specification_version: 4
81
77
  summary: Google Analytics support for decko
@@ -1,13 +0,0 @@
1
- / Google 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', '#{google_analytics_key}', 'auto');
9
- - google_analytics_snippet_vars.each do |key, value|
10
- - value = "'#{value}'" if value.is_a? String
11
- ga('set', '#{key}', #{value})
12
- ga('send', 'pageview');
13
- / End Google Analytics