jekyll-attendease 0.6.40.1 → 0.6.43a

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
- SHA256:
3
- metadata.gz: db0c159b0fa699299f4e97aff0d2a0cd31fc9c808eebec74a28280db69b62034
4
- data.tar.gz: 9aa91183afe29fc8213d1948c74e9adc4bbb8a6fb8ece3c3dd481145924c1923
2
+ SHA1:
3
+ metadata.gz: 030303bddc685fa1a75c1e9a42326167be5775e1
4
+ data.tar.gz: bb95231b170b8c7eea6210bdff37838b942cda02
5
5
  SHA512:
6
- metadata.gz: 74855390ef3dcdabea4d2b7a01ac62e90ea0a4df6f9f7e023b8f2cd971a03b6a6e86c361d0908f30dcf84665ad91f7fee5e1fc55e5a321292001b07244008bef
7
- data.tar.gz: 5988b76b138d58e8be1c60a957078597fdf55ed07118b2afdb73102f82f9c774bbd23575541183927839775f7e99c34ef81dc636c891c50287cefd3b82679797
6
+ metadata.gz: bb8cb3dd54a8927805b14500e371416309fca935d1db5546a70b7e0c81387a13b333ad8da41f4e9389579d42b3dff94cccf97d95391d03cf80815c4355aac7c7
7
+ data.tar.gz: dedb337e660d2eea86cadf853d418bd659f73183f3132f8322e4da5d35b2ac97998b602a1798db83cd405681006e10395f76e920c4a0a3e1f1885efa1711a325
@@ -16,5 +16,10 @@ Liquid::Template.register_tag('attendease_t', Jekyll::AttendeaseP
16
16
  Liquid::Template.register_tag('attendease_nav', Jekyll::AttendeasePlugin::NavigationTag)
17
17
  Liquid::Template.register_tag('attendease_portal_nav', Jekyll::AttendeasePlugin::PortalNavigationTag)
18
18
  Liquid::Template.register_tag('attendease_block_renderer', Jekyll::AttendeasePlugin::BlockRendererTag)
19
+ Liquid::Template.register_tag('attendease_analytics_gtm_head', Jekyll::AttendeasePlugin::AnalyticsGoogleTagManagerHeadTag)
20
+ Liquid::Template.register_tag('attendease_analytics_gtm_body', Jekyll::AttendeasePlugin::AnalyticsGoogleTagManagerBodyTag)
21
+ Liquid::Template.register_tag('attendease_analytics_ga_gtag', Jekyll::AttendeasePlugin::AnalyticsGoogleAnalyticsGtagTag)
22
+ Liquid::Template.register_tag('attendease_analytics_facebook', Jekyll::AttendeasePlugin::AnalyticsFacebookPixelTag)
23
+ Liquid::Template.register_tag('attendease_analytics_linkedin', Jekyll::AttendeasePlugin::AnalyticsLinkedInTag)
19
24
 
20
25
  Liquid::Template.register_filter(Jekyll::AttendeasePlugin::Filters)
@@ -151,13 +151,14 @@ module Jekyll
151
151
 
152
152
  def render(context)
153
153
  config = context.registers[:site].config['attendease']
154
- siteSettings = context.registers[:site].data['site_settings'].clone
155
- siteSettings.delete_if {|key, value| ['analytics', 'meta', 'general'].include? key }
154
+ site_settings = context.registers[:site].data['site_settings'].clone
155
+ analytics = site_settings.delete 'analytics'
156
+ site_settings.delete_if {|key, value| ['analytics', 'meta', 'general'].include? key }
156
157
 
157
- organizationSiteSettings = {}
158
+ organization_site_settings = {}
158
159
  if context.registers[:site].data['organization_site_settings']
159
- organizationSiteSettings = context.registers[:site].data['organization_site_settings'].clone
160
- organizationSiteSettings.delete_if {|key, value| ['analytics', 'meta', 'general'].include? key }
160
+ organization_site_settings = context.registers[:site].data['organization_site_settings'].clone
161
+ organization_site_settings.delete_if {|key, value| ['analytics', 'meta', 'general'].include? key }
161
162
  end
162
163
 
163
164
  parent_pages_are_clickable = config['parent_pages_are_clickable']
@@ -205,49 +206,49 @@ module Jekyll
205
206
  # related code in the platform is backwards-compatible.
206
207
 
207
208
  if config['mode'] == 'organization'
208
- script = <<_EOT
209
- <script type="text/javascript">
210
- (function(w) {
211
- w.AttendeaseConstants = {
212
- locale: "en",
213
- orgURL: "#{ config['api_host'] }",
214
- orgId: "#{ config['source_id'] }",
215
- privateSite: #{ config['private_site'] },
216
- authApiEndpoint: "#{ config['auth_host'] }api",
217
- orgLocales: #{ config['available_portal_locales'] },
218
- features: #{ config['features'].to_json },
219
- pages: #{ pages.to_json },
220
- settings: { parentPagesAreClickable: #{!!parent_pages_are_clickable} },
221
- siteSettings: #{ siteSettings.to_json }
222
- }
223
- })(window)
224
- </script>
225
-
226
- _EOT
209
+ constants = {
210
+ 'locale' => 'en',
211
+ 'siteName' => config['organization_name'],
212
+ 'orgURL' => config['api_host'],
213
+ 'orgId' => config['source_id'],
214
+ 'privateSite' => config['private_site'],
215
+ 'authApiEndpoint' => "#{config['auth_host']}api",
216
+ 'orgLocales' => config['available_portal_locales'],
217
+ 'features' => config['features'],
218
+ 'pages' => pages,
219
+ 'settings' => { parentPagesAreClickable: !!parent_pages_are_clickable },
220
+ 'siteSettings' => site_settings,
221
+ 'analytics' => analytics
222
+ }
227
223
  else
228
- script = <<_EOT
224
+ constants = {
225
+ 'locale' => config['locale'],
226
+ 'siteName' => config['data']['event_name'],
227
+ 'eventApiEndpoint' => "#{config['api_host']}api",
228
+ 'eventId' => config['source_id'],
229
+ 'orgURL' => config['organization_url'],
230
+ 'orgId' => config['organization_id'],
231
+ 'privateSite' => config['private_site'],
232
+ 'authApiEndpoint' => "#{config['auth_host']}api",
233
+ 'features' => config['features'],
234
+ 'pages' => pages,
235
+ 'portalPages' => portal_pages,
236
+ 'settings' => { parentPagesAreClickable: !!parent_pages_are_clickable },
237
+ 'siteSettings' => site_settings,
238
+ 'organizationSiteSettings' => organization_site_settings,
239
+ 'analytics' => analytics
240
+ }
241
+ end
242
+ script = <<_EOT
229
243
  <script type="text/javascript">
230
244
  (function(w) {
231
245
  w.AttendeaseConstants = {
232
- locale: "#{ config['locale'] }",
233
- eventApiEndpoint: "#{ config['api_host'] }api",
234
- eventId: "#{ config['source_id'] }",
235
- orgURL: "#{ config['organization_url'] }",
236
- orgId: "#{ config['organization_id'] }",
237
- privateSite: #{ config['private_site'] },
238
- authApiEndpoint: "#{ config['auth_host'] }api",
239
- features: #{ config['features'].to_json },
240
- pages: #{ pages.to_json },
241
- portalPages: #{ portal_pages.to_json },
242
- settings: { parentPagesAreClickable: #{!!parent_pages_are_clickable} },
243
- siteSettings: #{ siteSettings.to_json },
244
- organizationSiteSettings: #{ organizationSiteSettings.to_json }
246
+ #{ constants.map{ |k, v| " #{k}: #{v.to_json}," }.join("\n") }
245
247
  }
246
248
  })(window)
247
249
  </script>
248
250
 
249
251
  _EOT
250
- end
251
252
 
252
253
  if @url_override.match(/^(https:)?\/\/.+/)
253
254
  url = @url_override
@@ -271,5 +272,124 @@ _EOT
271
272
  script
272
273
  end
273
274
  end
275
+
276
+ class AnalyticsGoogleTagManagerHeadTag < Liquid::Tag
277
+ def render(context)
278
+ require 'pry'
279
+ site_settings = context.registers[:site].data['site_settings'].clone
280
+ analytics = site_settings['analytics']
281
+
282
+
283
+ return '' if analytics.nil? || !analytics['googleTagManagerId']
284
+ script = <<_EOT
285
+ <script>
286
+ window.dataLayer = [];
287
+ </script>
288
+ <!-- Google Tag Manager -->
289
+ <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
290
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
291
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
292
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
293
+ })(window,document,'script','dataLayer','#{analytics['googleTagManagerId']}');</script>
294
+ <!-- End Google Tag Manager -->
295
+ _EOT
296
+ script
297
+ end
298
+ end
299
+
300
+ class AnalyticsGoogleTagManagerBodyTag < Liquid::Tag
301
+ def render(context)
302
+ site_settings = context.registers[:site].data['site_settings'].clone
303
+ analytics = site_settings['analytics']
304
+
305
+ return '' if analytics.nil? || !analytics['googleTagManagerId']
306
+ script = <<_EOT
307
+ <!-- Google Tag Manager (noscript) -->
308
+ <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=#{analytics['googleTagManagerId']}"
309
+ height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
310
+ <!-- End Google Tag Manager (noscript) -->
311
+ _EOT
312
+ script
313
+ end
314
+ end
315
+
316
+ class AnalyticsGoogleAnalyticsGtagTag < Liquid::Tag
317
+ def render(context)
318
+ site_settings = context.registers[:site].data['site_settings'].clone
319
+ analytics = site_settings['analytics']
320
+
321
+ return '' if analytics.nil? || !analytics['googleAnalyticsTrackingId']
322
+
323
+ adwordsId = analytics['googleAnalyticsAdwordsId']
324
+ script = <<_EOT
325
+ <!-- Global Site Tag (gtag.js) - Google Analytics -->
326
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.data.site_settings.analytics.googleAnalyticsTrackingId }}"></script>
327
+ <script>
328
+ window.dataLayer = window.dataLayer || [];
329
+ function gtag(){dataLayer.push(arguments);}
330
+ gtag('js', new Date());
331
+
332
+ gtag('config', '#{analytics['googleAnalyticsTrackingId']}');
333
+ #{ adwordsId ? "gtag('config', '#{adwordsId}');" : ''}
334
+ </script>
335
+ _EOT
336
+ script
337
+ end
338
+ end
339
+
340
+ class AnalyticsLinkedInTag < Liquid::Tag
341
+ def render(context)
342
+ site_settings = context.registers[:site].data['site_settings'].clone
343
+ analytics = site_settings['analytics']
344
+
345
+ return '' if analytics.nil? || !analytics['linkedinInsightsId']
346
+ script = <<_EOT
347
+ <script type="text/javascript">
348
+ _linkedin_partner_id = "#{analytics['linkedinInsightsId']}";
349
+ window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
350
+ window._linkedin_data_partner_ids.push(_linkedin_partner_id);
351
+ </script><script type="text/javascript">
352
+ (function(){var s = document.getElementsByTagName("script")[0];
353
+ var b = document.createElement("script");
354
+ b.type = "text/javascript";b.async = true;
355
+ b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js";
356
+ s.parentNode.insertBefore(b, s);})();
357
+ </script>
358
+ <noscript>
359
+ <img height="1" width="1" style="display:none;" alt="" src="https://dc.ads.linkedin.com/collect/?pid=#{analytics['linkedinInsightsId']}&fmt=gif" />
360
+ </noscript>
361
+ _EOT
362
+ script
363
+ end
364
+ end
365
+
366
+ class AnalyticsFacebookPixelTag < Liquid::Tag
367
+ def render(context)
368
+ site_settings = context.registers[:site].data['site_settings'].clone
369
+ analytics = site_settings['analytics']
370
+
371
+ return '' if analytics.nil? || !analytics['facebookPixelId']
372
+ script = <<_EOT
373
+ <!-- Facebook Pixel Code -->
374
+ <script>
375
+ !function(f,b,e,v,n,t,s)
376
+ {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
377
+ n.callMethod.apply(n,arguments):n.queue.push(arguments)};
378
+ if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
379
+ n.queue=[];t=b.createElement(e);t.async=!0;
380
+ t.src=v;s=b.getElementsByTagName(e)[0];
381
+ s.parentNode.insertBefore(t,s)}(window, document,'script',
382
+ 'https://connect.facebook.net/en_US/fbevents.js');
383
+ fbq('init', '#{analytics['facebookPixelId']}');
384
+ fbq('track', 'PageView');
385
+ </script>
386
+ <noscript><img height="1" width="1" style="display:none"
387
+ src="https://www.facebook.com/tr?id=#{analytics['facebookPixelId']}&ev=PageView&noscript=1"
388
+ /></noscript>
389
+ <!-- End Facebook Pixel Code -->
390
+ _EOT
391
+ script
392
+ end
393
+ end
274
394
  end
275
395
  end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module AttendeasePlugin
3
- VERSION = '0.6.40.1'
3
+ VERSION = '0.6.43a'
4
4
  end
5
5
  end
@@ -85,6 +85,7 @@ RSpec.describe "Jekyll Attendease tags" do
85
85
  subject { render("{% attendease_block_renderer %}") }
86
86
 
87
87
  it { is_expected.to match(/locale: "en"/) }
88
+ it { is_expected.to match(/siteName: "My Attendease Test Event"/) }
88
89
  it { is_expected.to match(/eventApiEndpoint: "https:\/\/foobar\/api"/) }
89
90
  it { is_expected.to match(/eventId: "foobar"/) }
90
91
  it { is_expected.to match(/orgURL: "https:\/\/foobar.org\/"/) }
@@ -104,16 +105,46 @@ RSpec.describe "Jekyll Attendease tags" do
104
105
  subject { org_render("{% attendease_block_renderer %}") }
105
106
 
106
107
  it { is_expected.to match(/locale: "en"/) }
108
+ it { is_expected.to match(/siteName: "Foo Bar Widgets"/) }
107
109
  it { is_expected.to match(/orgURL: "https:\/\/foobar\/"/) }
108
110
  it { is_expected.to match(/orgId: "foobar"/) }
109
111
  it { is_expected.to match(/authApiEndpoint: "https:\/\/foobar.auth\/api"/) }
110
112
  it { is_expected.to match(/dashboard.attendease.com\/webpack_assets\/blockrenderer.bundle.js/) }
111
- it { is_expected.to match(/orgLocales: \["en", "fr", "it", "es", "de"\]/) }
113
+ it { is_expected.to match(/orgLocales: \["en","fr","it","es","de"\]/) }
112
114
 
113
115
  it { is_expected.to_not match(/eventApiEndpoint/) }
114
116
  it { is_expected.to_not match(/eventId/) }
115
117
  end
116
118
 
119
+ describe "{% attendease_analytics_gtm_head %}" do
120
+ subject { cms_render("{% attendease_analytics_gtm_head %}") }
121
+
122
+ it { is_expected.to match(/Google Tag Manager/) }
123
+ end
124
+
125
+ describe "{% attendease_analytics_gtm_body %}" do
126
+ subject { cms_render("{% attendease_analytics_gtm_body %}") }
127
+
128
+ it { is_expected.to match(/Google Tag Manager \(noscript\)/) }
129
+ end
130
+
131
+ describe "{% attendease_analytics_ga_gtag %}" do
132
+ subject { cms_render("{% attendease_analytics_ga_gtag %}") }
133
+
134
+ it { is_expected.to match(/Global Site Tag \(gtag.js\)/) }
135
+ end
136
+
137
+ describe "{% attendease_analytics_linked_in %}" do
138
+ subject { cms_render("{% attendease_analytics_linkedin %}") }
139
+
140
+ it { is_expected.to match(/_linkedin_partner_id = "foo";/) }
141
+ end
142
+
143
+ describe "{% attendease_analytics_fackebook %}" do
144
+ subject { cms_render("{% attendease_analytics_facebook %}") }
145
+
146
+ it { is_expected.to match(/Facebook Pixel Code/) }
147
+ end
117
148
  end
118
149
 
119
150
  def schedule_widget_data
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-attendease
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.40.1
4
+ version: 0.6.43a
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Wood
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-10-11 00:00:00.000000000 Z
14
+ date: 2018-11-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: httparty
@@ -233,27 +233,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
233
233
  version: '0'
234
234
  required_rubygems_version: !ruby/object:Gem::Requirement
235
235
  requirements:
236
- - - ">="
236
+ - - ">"
237
237
  - !ruby/object:Gem::Version
238
- version: '0'
238
+ version: 1.3.1
239
239
  requirements: []
240
240
  rubyforge_project:
241
- rubygems_version: 2.7.7
241
+ rubygems_version: 2.2.5
242
242
  signing_key:
243
243
  specification_version: 4
244
244
  summary: Attendease event helper for Jekyll
245
245
  test_files:
246
- - spec/lib/jekyll/attendease_plugin/event_data_generator_spec.rb
247
- - spec/lib/jekyll/attendease_plugin/event_layout_generator_spec.rb
248
- - spec/lib/jekyll/attendease_plugin/event_template_generator_spec.rb
249
- - spec/lib/jekyll/attendease_plugin/filters_spec.rb
250
- - spec/lib/jekyll/attendease_plugin/helpers_spec.rb
251
- - spec/lib/jekyll/attendease_plugin/organization_data_generator_spec.rb
246
+ - spec/spec_helper.rb
247
+ - spec/support/fixtures_helpers.rb
252
248
  - spec/lib/jekyll/attendease_plugin/pre_zero_point_six_link_redirect_generator_spec.rb
253
- - spec/lib/jekyll/attendease_plugin/schedule_generator_spec.rb
249
+ - spec/lib/jekyll/attendease_plugin/sponsor_generator_spec.rb
254
250
  - spec/lib/jekyll/attendease_plugin/site_page_spec.rb
255
251
  - spec/lib/jekyll/attendease_plugin/site_pages_generator_spec.rb
256
- - spec/lib/jekyll/attendease_plugin/sponsor_generator_spec.rb
252
+ - spec/lib/jekyll/attendease_plugin/event_layout_generator_spec.rb
253
+ - spec/lib/jekyll/attendease_plugin/helpers_spec.rb
254
+ - spec/lib/jekyll/attendease_plugin/organization_data_generator_spec.rb
257
255
  - spec/lib/jekyll/attendease_plugin/tags_spec.rb
258
- - spec/spec_helper.rb
259
- - spec/support/fixtures_helpers.rb
256
+ - spec/lib/jekyll/attendease_plugin/event_template_generator_spec.rb
257
+ - spec/lib/jekyll/attendease_plugin/filters_spec.rb
258
+ - spec/lib/jekyll/attendease_plugin/schedule_generator_spec.rb
259
+ - spec/lib/jekyll/attendease_plugin/event_data_generator_spec.rb