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 +5 -5
- data/lib/jekyll-attendease.rb +5 -0
- data/lib/jekyll/attendease_plugin/tags.rb +159 -39
- data/lib/jekyll/attendease_plugin/version.rb +1 -1
- data/spec/lib/jekyll/attendease_plugin/tags_spec.rb +32 -1
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 030303bddc685fa1a75c1e9a42326167be5775e1
|
4
|
+
data.tar.gz: bb95231b170b8c7eea6210bdff37838b942cda02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb8cb3dd54a8927805b14500e371416309fca935d1db5546a70b7e0c81387a13b333ad8da41f4e9389579d42b3dff94cccf97d95391d03cf80815c4355aac7c7
|
7
|
+
data.tar.gz: dedb337e660d2eea86cadf853d418bd659f73183f3132f8322e4da5d35b2ac97998b602a1798db83cd405681006e10395f76e920c4a0a3e1f1885efa1711a325
|
data/lib/jekyll-attendease.rb
CHANGED
@@ -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
|
-
|
155
|
-
|
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
|
-
|
158
|
+
organization_site_settings = {}
|
158
159
|
if context.registers[:site].data['organization_site_settings']
|
159
|
-
|
160
|
-
|
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
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
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
|
-
|
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
|
-
|
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
|
@@ -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",
|
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.
|
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-
|
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:
|
238
|
+
version: 1.3.1
|
239
239
|
requirements: []
|
240
240
|
rubyforge_project:
|
241
|
-
rubygems_version: 2.
|
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/
|
247
|
-
- spec/
|
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/
|
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/
|
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/
|
259
|
-
- spec/
|
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
|