Skip to content

Commit 79c437a

Browse files
committed
revert: restore summary
1 parent 223143d commit 79c437a

File tree

1 file changed

+376
-0
lines changed

1 file changed

+376
-0
lines changed

_layouts/summary.html

Lines changed: 376 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,376 @@
1+
---
2+
description: Summary of the conference and its instances throughout the years.
3+
---
4+
<!DOCTYPE html>
5+
<html>
6+
7+
<head>
8+
{% include head.html %}
9+
{% if page.mastodon %}
10+
<link rel="stylesheet" type="text/css" href="{{ "/static/css/mastodon.css" | prepend:site.baseurl_root }}">
11+
<script>
12+
document.addEventListener("DOMContentLoaded", function () {
13+
fetch("{{page.mastodon}}.rss")
14+
.then(function (response) {
15+
return response.text();
16+
})
17+
.then(function (xmlText) {
18+
var parser = new DOMParser();
19+
var xml = parser.parseFromString(xmlText, "text/xml");
20+
var items = xml.querySelectorAll("item");
21+
var feedContainer = document.getElementById("mastodon-feed");
22+
var postLimit = 2; // Number of posts to display
23+
24+
if (feedContainer) {
25+
for (var i = 0; i < postLimit && i < items.length; i++) {
26+
var item = items[i];
27+
var post = item.querySelector("description").textContent;
28+
var link = item.querySelector("link").textContent;
29+
var pubDate = item.querySelector("pubDate").textContent;
30+
31+
var feedItem = document.createElement("div");
32+
feedItem.setAttribute("class", "timeline-item")
33+
feedItem.innerHTML = '<div class="timeline-content">' + post + '</div><a href="' + link + '">' + pubDate + ' by {{page.conference}}</a>';
34+
feedContainer.appendChild(feedItem);
35+
}
36+
}
37+
})
38+
.catch(function (error) {
39+
console.log("Error fetching Mastodon RSS feed:", error);
40+
});
41+
});
42+
</script>
43+
{% elsif page.twitter %}
44+
<style>
45+
#twitter-widget {
46+
width: 100%;
47+
}
48+
49+
.twitter-timeline {
50+
width: 100% !important;
51+
}
52+
</style>
53+
{% endif %}
54+
</head>
55+
56+
<body>
57+
{% include header.html %}
58+
{% if page.alt_name and page.alt_name != nil %}
59+
{% assign confs = site.data.archive | concat: site.data.conferences | concat: site.data.legacy | where_exp:"item","page.conference contains item.conference or item.conference contains page.conference or page.alt_name == item.alt_name or page.conference contains item.alt_name or item.conference contains page.alt_name" | sort: "year" | reverse %}
60+
{% else %}
61+
{% assign confs = site.data.archive | concat: site.data.conferences | concat: site.data.legacy | where_exp:"item","page.conference contains item.conference or item.conference contains page.conference" | sort: "year" | reverse %}
62+
{% endif %}
63+
<div class="container">
64+
<div class="page-header" id="conf-title">
65+
<div class="row">
66+
<div class="col-sm-12">
67+
{% include_cached breadcrumbs.html url=page.url %}
68+
<h1>
69+
<span id="conf-title-href" href="{{site.baseurl_root}}/summary/{{page.conference | slugify: 'latin'}}/">{{title}}</span>
70+
<span id="twitter-box"><a href="https://twitter.com/share" class="twitter-share-button"
71+
data-text="Conference instances for the #{{ page.conference }} conference!" data-show-count="false"
72+
style="font-size:13px;">Tweet</a>
73+
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
74+
</span>
75+
</h1>
76+
</div>
77+
</div>
78+
<div class="row">
79+
<div class="col-sm-12" id="conf-subs">
80+
<span id="conf-subs" title="Conference subjects">
81+
{% assign subs = page.sub | split: "," %}
82+
{% for sub in subs %}
83+
<span class="{{sub}}-tag badge badge-light conf-sub conf-{{sub}}">
84+
{% for tp in site.data.types %}
85+
{% if sub == tp.sub %}
86+
{{tp.name}}
87+
{% endif %}
88+
{% endfor %}
89+
</span>
90+
{% endfor %}
91+
</span>
92+
</div>
93+
</div>
94+
</div>
95+
<div id="page-content">
96+
<div id="conf-key-facts" class="row">
97+
<div class="col-12 col-md-6">
98+
<div>
99+
<img src="/static/img/203-earth.svg" class="badge-link" alt="Earth Icon" width="16" height="16" />
100+
<a id="conf-website" target="_blank" href="{{confs[0].link}}">{{confs[0].link}}</a>
101+
</div>
102+
{% if confs[0].twitter %}
103+
<div>
104+
<img src="/static/img/407-twitter.svg" class="badge-link" alt="Twitter icon" width="16" height="16" />
105+
<a id="conf-twitter" target="_blank" href="https://twitter.com/{{confs[0].twitter}}">@{{confs[0].twitter}}</a>
106+
</div>
107+
{% endif %}
108+
{% if confs[0].mastodon %}
109+
<div>
110+
<img src="/static/img/407-mastodon.svg" class="badge-link" alt="Mastodon icon" width="16" height="16" />
111+
<a id="conf-mastodon" target="_blank" href="{{confs[0].mastodon}}">Mastodon</a>
112+
</div>
113+
{% endif %}
114+
</div>
115+
<div class="col-12 col-md-6">
116+
{% if confs[0].mastodon %}
117+
<!-- Mastodon timeline -->
118+
<div class="meta">Mastodon Posts by {{page.conference}}:</div>
119+
<div id="mastodon-feed"></div>
120+
<a href="{{ page.mastodon }}">See all Mastodon posts for {{ page.conference }}</a>
121+
{% elsif confs[0].twitter %}
122+
<!-- Twitter timeline -->
123+
<div id="twitter-widget">
124+
<a class="twitter-timeline" href="https://twitter.com/{{page.twitter}}" data-tweet-limit=2>Tweets by
125+
{{confs[0].twitter}}</a>
126+
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
127+
</div>
128+
{% endif %}
129+
</div>
130+
</div>
131+
<hr />
132+
<div id="all_confs">
133+
{% for conf in confs %}
134+
{% assign subs = conf.sub | split: "," %}
135+
<div id="{{conf.conference | slugify: "latin"}}-{{conf.year}}"
136+
class="ConfItem {% for sub in subs %} {{sub | strip}}-conf {% endfor %}">
137+
<div class="row conf-row">
138+
<div class="col-6">
139+
<span class="conf-title">
140+
<a title="Deadline Details"
141+
href="{{site.baseurl}}/conference/{{conf.conference | slugify: "latin"}}-{{conf.year}}/">{{conf.conference}} {{conf.year}}</a>
142+
</span>
143+
<span class="conf-title-small">
144+
<a title="Deadline Details"
145+
href="{{site.baseurl}}/conference/{{conf.conference | slugify: "latin"}}-{{conf.year}}/">{{conf.conference}} '{{conf.year |
146+
slice: -2, 3}}</a>
147+
</span>
148+
<span class="conf-title-icon">
149+
<a title="Conference Website" href="{{conf.link}}" target="_blank"><img src="/static/img/203-earth.svg"
150+
class="badge-link" alt="Link to Conference Website" width="16" height="16" /></a>
151+
&ZeroWidthSpace;
152+
</span>
153+
{% if conf.cfp_link %}
154+
<span class="conf-title-icon">
155+
<a title="Call for Participation for {{conf.conference}}" href="{{conf.cfp_link}}" target="_blank"><img
156+
src="/static/img/035-file-text.svg" class="badge-link"
157+
alt="Link to Call for Participation for {{conf.conference}}" width="16" height="16" /></a>
158+
&ZeroWidthSpace;
159+
</span>
160+
{% endif %}
161+
{% if conf.finaid %}
162+
<span class="conf-title-icon">
163+
<a title="Financial Aid from {{conf.conference}}" href="{{conf.finaid}}" target="_blank"><img
164+
src="/static/img/066-lifebuoy.svg" class="badge-link" alt="Link to Sponsorship page of {{conf.conference}}"
165+
width="16" height="16" /></a>
166+
&ZeroWidthSpace;
167+
</span>
168+
{% endif %}
169+
{% if conf.sponsor %}
170+
<span class="conf-title-icon">
171+
<a title="Sponsorship Opportunity for {{conf.conference}}" href="{{conf.sponsor}}" target="_blank"><img
172+
src="/static/img/060-coin-dollar.svg" class="badge-link" alt="Link to Sponsorship page of {{conf.conference}}"
173+
width="16" height="16" /></a>
174+
&ZeroWidthSpace;
175+
</span>
176+
{% endif %}
177+
{% if conf.mastodon %}
178+
<span class="conf-title-icon">
179+
<a title="Mastodon for {{conf.conference}}" href="{{conf.mastodon}}" target="_blank"><img
180+
src="/static/img/407-mastodon.svg" class="badge-link" alt="Link to Conference Mastodon" width="16"
181+
height="16" /></a>
182+
&ZeroWidthSpace;
183+
</span>
184+
{% elsif conf.twitter %}
185+
<span class="conf-title-icon">
186+
<a title="Twitter for {{conf.conference}}" href="https://twitter.com/{{conf.twitter}}" target="_blank"><img
187+
src="/static/img/407-twitter.svg" class="badge-link" alt="Link to Conference Twitter" width="16"
188+
height="16" /></a>
189+
&ZeroWidthSpace;
190+
</span>
191+
{% endif %}
192+
</div>
193+
<div class="col-6">
194+
<span class="countdown-display conf-timer"
195+
data-deadline="{% if conf.cfp_ext %}{{ conf.cfp_ext }}{% else %}{{ conf.cfp }}{% endif %}"
196+
data-timezone="{% if conf.timezone %}{{ conf.timezone }}{% else %}UTC-12{% endif %}">
197+
{% if conf.cfp == "TBA" or conf.cfp == "Cancelled" or conf.cfp == "None" %}{{ conf.cfp }}{% endif %}
198+
</span>
199+
<span class="countdown-display countdown-small conf-timer"
200+
data-deadline="{% if conf.cfp_ext %}{{ conf.cfp_ext }}{% else %}{{ conf.cfp }}{% endif %}"
201+
data-timezone="{% if conf.timezone %}{{ conf.timezone }}{% else %}UTC-12{% endif %}">
202+
{% if conf.cfp == "TBA" or conf.cfp == "Cancelled" or conf.cfp == "None" %}{{ conf.cfp }}{% endif %}
203+
</span>
204+
</div>
205+
</div>
206+
<div class="row">
207+
<div class="col-12 col-sm-6">
208+
<div class="meta">
209+
210+
<span class="conf-date">{%- translate_file dates/pretty_dates.html start=conf.start end=conf.end -%}.</span>
211+
<span class="conf-place">
212+
{% if conf.place == "Online" %}
213+
<a href="#">{{conf.place}}</a>
214+
{% else %}
215+
<a href="http://maps.google.com/?q={{conf.place}}">{{conf.place}}</a>
216+
{% if conf.extra_places %}
217+
{% for place in conf.extra_places %}
218+
& <a href="http://maps.google.com/?q={{place}}">{{place}}</a>
219+
{% endfor %}
220+
{% endif %}
221+
{% endif %}
222+
</span>
223+
</div>
224+
{% if conf.note %}
225+
<div class="note">
226+
<b>Note: </b>{{conf.note}}
227+
</div>
228+
{% endif %}
229+
230+
</div>
231+
<div class="col-12 col-sm-6">
232+
<div class="deadline">
233+
<div>Deadline:
234+
<span class="deadline-time">{{conf.cfp | date: "%A, %e %B %Y"}}</span>
235+
</div>
236+
</div>
237+
238+
</div>
239+
</div>
240+
<div class="row">
241+
<div class="col-6">
242+
{% assign subs = conf.sub | split: "," %}
243+
{% for sub in subs %}
244+
<span title="Click to only show {{sub | strip}} conferences" data-sub="{{sub | strip}}"
245+
class="badge badge-light conf-sub {{sub | strip}}-tag"></span>
246+
{% endfor %}
247+
</div>
248+
<div class="col-6">
249+
<div class="calendar"></div>
250+
</div>
251+
</div>
252+
<hr>
253+
</div>
254+
{% endfor %}
255+
</div>
256+
{% if page.place == confs[0].place and confs[0].place == confs[1].place %}
257+
<div class="row">
258+
{% google_map zoom="6" width="100%" %}
259+
</div>
260+
{% endif %}
261+
</div>
262+
</div>
263+
<footer>
264+
{% include_cached footer.html %}
265+
{% assign title_length = page.title | size | minus: 27 %}
266+
{% assign sliced_title = page.title | slice: 0, title_length %}
267+
268+
{% include_cached trademarks.html title=sliced_title %}
269+
</footer>
270+
<script type="text/javascript" charset="utf-8">
271+
$(function () {
272+
273+
var DateTime = luxon.DateTime;
274+
var today = DateTime.now();
275+
276+
{% include load_data.js %}
277+
{% include utils.js %}
278+
{% include multiselect_handler.js %}
279+
280+
// Set time zone to local timezone on web copy
281+
$('.local-timezone').text(today.toFormat('z'));
282+
283+
{% for conf in confs %}
284+
{% if conf.cfp_ext %}
285+
{% assign cfp = conf.cfp_ext %}
286+
{% else %}
287+
{% assign cfp = conf.cfp %}
288+
{% endif %}
289+
{% assign subs = conf.sub | split: "," %}
290+
{% for sub in subs %}
291+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}} .{{sub | strip}}-tag').html("{% t 'subs.{{sub | strip}}' %}".toLocaleLowerCase("{{ site.lang }}"));
292+
{% endfor %}
293+
{% if cfp == "TBA" or cfp == "Cancelled" or cfp == "None" %}
294+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}} .deadline-time').html("{{cfp}}");
295+
{% if cfp == "TBA" %}
296+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}}').attr("cfpDiff", Infinity);
297+
{% else %}
298+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}}').attr("cfpDiff", -Infinity);
299+
{% endif %}
300+
{% else %}
301+
302+
// Use specified timezone for deadlines if available else use AoE timezone
303+
{% if conf.timezone %}
304+
var cfpDate = DateTime.fromSQL("{{cfp}}", { zone: "{{conf.timezone}}" });
305+
var confDate = DateTime.fromSQL("{{conf.start}}", { zone: "{{conf.timezone}}" });
306+
{% else %}
307+
var cfpDate = DateTime.fromSQL("{{cfp}}", { zone: "UTC-12" });
308+
var confDate = DateTime.fromSQL("{{conf.start}}", { zone: "UTC-12" });
309+
{% endif %}
310+
311+
// check if timezone is valid otherwise replace by system timezone
312+
if (cfpDate.invalid || confDate.invalid) {
313+
var cfpDate = DateTime.fromSQL("{{cfp}}");
314+
var confDate = DateTime.fromSQL("{{conf.start}}");
315+
console.log("Invalid timezone in {{conf.conference | slugify: "latin"}}-{{conf.year}}. Using system timezone instead.");
316+
}
317+
318+
// Countdown timers are now handled by countdown-simple.js automatically
319+
320+
// deadline in local timezone
321+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}} .deadline-time').html(cfpDate.setZone('system').toLocaleString(DateTime.DATE_HUGE));
322+
323+
// add calendar button
324+
try {
325+
var myCalendar = createCalendarFromObject({
326+
id: '{{conf.conference | slugify: "latin"}}-{{conf.year}}',
327+
title: '{{conf.conference}} {{conf.year}} deadline',
328+
start_date: cfpDate.toJSDate(),
329+
duration: 60,
330+
place: '{{conf.place}}',
331+
link: '{{conf.link}}'
332+
});
333+
var calendarContainer = document.querySelector('#{{conf.conference | slugify: "latin"}}-{{conf.year}} .calendar');
334+
if (calendarContainer) {
335+
calendarContainer.appendChild(myCalendar);
336+
}
337+
} catch (err) {
338+
var calendarContainer = document.querySelector('#{{conf.conference | slugify: "latin"}}-{{conf.year}} .calendar');
339+
if (calendarContainer) {
340+
var errorMsg = document.createElement('p');
341+
errorMsg.textContent = 'Calendar not available.';
342+
calendarContainer.appendChild(errorMsg);
343+
}
344+
console.log("Error in cfp date.");
345+
}
346+
347+
// check if date has passed, add 'past' class to it
348+
cfpDiff = cfpDate.diffNow("seconds");
349+
confDiff = confDate.diffNow("seconds");
350+
351+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}}').attr("cfpDiff", cfpDiff.toMillis());
352+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}}').attr("confDiff", confDiff.toMillis());
353+
354+
if (cfpDiff < 0) {
355+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}}').addClass('pastcfp');
356+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}} .calendar').remove();
357+
}
358+
359+
if (confDiff < 0) {
360+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}}').addClass('pastconf');
361+
$('#{{conf.conference | slugify: "latin"}}-{{conf.year}} .calendar').remove();
362+
}
363+
{% endif %}
364+
{% endfor %}
365+
366+
// Sort conferences by CFP deadline
367+
$("#all_confs .ConfItem").sort(function (a, b) {
368+
return $(a).attr('cfpDiff') - $(b).attr('cfpDiff');
369+
}).appendTo($("#all_confs"));
370+
});
371+
</script>
372+
373+
{% include sneks.html %}
374+
</body>
375+
376+
</html>

0 commit comments

Comments
 (0)