This feature lets any page or template retrieve and display current and upcoming talks and events.
The template function current_events() returns a hash with two keys:
current and upcoming. For each key, the value is a hash whose keys
are the rooms and the values are the corresponding event.
This snippet of code displays the entire structure:
<table>
[% events = current_events();
FOREACH period = events.keys.sort %]
<tr><td colspan="3"><h2>[% period %]</h2></td></tr>
[% FOREACH room = events.$period.keys.sort;
event = events.$period.$room %]
<tr><td>[% global.config.rooms.$room OR loc("room_$room") %]</td>
<td>[% date_format(event.datetime, 'time') %]</td>
<td><b>[% event.title %]</b>
<i>([% event.duration %] {{min}})</i>
[% IF global.config.talks_languages %]
- [% global.config.talks_languages.${event.lang} %]
[% END %]
[% IF event.user %]
<br />{{by}} [% user_info_base(event.user) %]
[% END %]
</td>
</tr>
[% END %]
[% END %]
</table>
current_events() uses the current date and time to determine current
and upcoming events. To accomodate testing ahead of time, the function
takes a datetime string as an optional argument:
[% events = current_events('2007-08-28 10:00:00') %]
The following example creates a full screen window displaying on the left side the current talks and events, and a slideshow on the right side. This requires 2 files. The first file fullscreen_start.html creates a full screen window.
[% WRAPPER ui title="Photos" %]
<script language="JavaScript">
window.open('[% make_uri("fullscreen.html") %]', '', 'fullscreen=yes, scrollbars=auto');
</script>
[% END %]
The second file fullscreen.html displays the current and upcoming talks and events and the slideshow. The talk and event list is refreshed every 5 minutes.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="[% global.request.language %]" xml:lang="[% global.request.language %]">
<head>
<meta http-equiv="refresh" content="300"/>
<title>[% global.conference.name %]</title>
<style>
body {
font-family: sans-serif;
font-size: 15pt;
font-weight:normal;
background-color: #FFF;
padding: 0;
margin: 0;
}
h1 {
font-size: 20pt;
color: #22b5d7;
}
table {
border: none;
}
td {
vertical-align: top;
}
</style>
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/act.js"></script><script language="JavaScript">
if (window.act) {
$(function() {
var photos = [
[% photos = flickr_get(); FOREACH p = photos %]
'[% p.medium %]'[% ',' UNLESS loop.last %]
[% END %]
];
function newpic()
{
var i = Math.floor(Math.random() * photos.length);
$("#flickrimage").attr('src', photos[i]);
setTimeout(newpic, 5000);
}
newpic();
});
}
</script>
</head>
<body>
<table width="100%" cellpadding="10">
<tr>
<td width="50%">
<table>
[% events = current_events();
FOREACH period = events.keys.sort %]
<tr><td colspan="3"><h1>[% period %]</h1></td></tr>
[% FOREACH room = events.$period.keys.sort;
event = events.$period.$room %]
<tr><td>[% global.config.rooms.$room %]</td>
<td>[% date_format(event.datetime, 'time') %]</td>
<td><b>[% event.title %]</b> <i>([% event.duration %]mn)</i></td>
</tr>
[% END %]
[% END %]
</table>
</td>
[% IF photos.size %]
<td>
<img id="flickrimage" src="" />
</td>
[% END %]
</tr>
</table>
</body>