Updated webcam xml files
[www/www.git] / cscweb.xsl
1 <?xml version='1.0'?>
2
3 <xsl:stylesheet version="1.1"
4                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5                 xmlns:csc="http://www.csclub.uwaterloo.ca/cow"
6                 extension-element-prefixes="csc">
7
8 <xsl:output method="html" />
9
10 <xsl:template match="cscpage">
11
12 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
13 </xsl:text>
14 <html xmlns="http://www.w3.org/1999/xhtml">
15 <head>
16  <title><xsl:value-of select="@title"/></title>
17   <link rel="stylesheet" href="/default.css" type="text/css" />
18   <style type="text/css">
19    <![CDATA[<!-- @import url('/default.css'); -->]]>
20   </style>
21 </head>
22 <body bgcolor="#ffffff">
23 <a name="pagetop"></a>
24 <xsl:apply-templates select="biglogo"/>
25 <xsl:apply-templates select="header">
26 <xsl:with-param name="title" select="@title"/>
27 </xsl:apply-templates>
28 <xsl:apply-templates select="section|menu"/>
29 <xsl:apply-templates select="footer"/>
30 </body>
31 </html>
32 </xsl:template>
33
34 <xsl:template match="section">
35  <xsl:if test="@id != ''"><a id="{@id}" /></xsl:if>
36  <h2><xsl:value-of select="@title"/></h2>
37  <xsl:apply-templates />
38 </xsl:template>
39
40 <xsl:template match="biglogo" name="biglogo">
41 <div class="biglogo">
42   <table cellspacing="0" cellpadding="0" border="0" align="left">
43    <tr>
44     <td width="109"><a href="http://www.uwaterloo.ca/"><img
45     src="/logos/uw_logo_100_68.gif" alt="University of Waterloo"
46     width="100" height="68" align="center" border="0" /></a></td>
47     <!--<td width="174"><a href="/"><img src="/logos/csc_160_70.png"
48     alt="Computer Science Club" width="165" height="75" align="center"
49     border="0" /></a></td>-->
50     <td width="91"><a href="http://www.acm.org"><img width="82"
51     height="103" src="/logos/acm_logo.gif" alt="A Student Chapter of
52     the ACM" align="center" border="0" /></a></td>
53    </tr>
54   </table>
55 </div>
56 </xsl:template>
57
58 <xsl:template match="mediafile" >
59         <xsl:param name="ext" />
60         <xsl:param name="pre" />
61         ,<a href="{$pre}/media/files/{@file}{$ext}"><xsl:value-of select="@type" />(<xsl:value-of select="@size" />)</a>
62 </xsl:template>
63
64 <xsl:template match="mediaitem">
65          <xsl:document method="html"
66   href="{translate(concat($root, '/media/', @title , '.html'), ' ', ' ')}">
67 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
68 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
69 </xsl:text>
70 <html xmlns="http://www.w3.org/1999/xhtml">
71 <head>
72  <title><xsl:value-of select="@title"/></title>
73   <style type="text/css">
74    <![CDATA[<!-- @import url('/default.css'); -->]]>
75   </style>
76 </head>
77 <body bgcolor="#ffffff">
78  <xsl:call-template name="header">
79   <xsl:with-param name="title" select="@title"/>
80  </xsl:call-template>
81  <h2>Abstract</h2>
82  <p>
83  <xsl:apply-templates select="abstract"/>
84  </p>
85  <p>
86  Download <xsl:value-of select="@title"/> in a number of formats via 
87 <ul>
88 <li>bittorrent
89  <xsl:param name="ext">Unset</xsl:param>
90  <xsl:apply-templates select="mediafile" >
91  <xsl:with-param name="ext">.torrent</xsl:with-param>
92  </xsl:apply-templates>
93 </li>
94 <li>
95  via dijjer (a mostly seamless bittorrent alternative):
96  <xsl:apply-templates select="mediafile" >
97  <xsl:with-param name="pre">http://dijjer.org/get/http://www.csclub.uwaterloo.ca</xsl:with-param>
98  </xsl:apply-templates>
99 </li>
100 <li>
101  via http (regular web browser):
102  <xsl:apply-templates select="mediafile" >
103  <xsl:with-param name="ext"></xsl:with-param>
104  </xsl:apply-templates>
105 </li>
106 </ul>
107 </p>
108 <script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script>
109 <script language="javascript" src="http://reddit.com/button.js?t=3"></script>
110 <!--
111 <script type="text/javascript">
112 google_ad_client = "pub-5235744946475097";
113 google_ad_width = 728;
114 google_ad_height = 90;
115 google_ad_format = "728x90_as";
116 google_ad_type = "text_image";
117 //2007-03-21: mcc
118 google_ad_channel = "1106187834";
119 </script>
120 <script type="text/javascript"
121   src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
122 </script>
123 -->
124  <xsl:call-template name="footer"/>
125 </body>
126 </html>
127  </xsl:document>
128         <li><a href= "{@title}.html"><xsl:value-of select="@title" /></a> - <xsl:apply-templates select="mediafile" /></li>
129 </xsl:template>
130
131 <xsl:template match="menuitem">
132     <td align="center" class="menuitem">
133      <a href="{@href}"><img border="0" src="/buttons/{@icon}.png"
134      width="40" height="40" alt="{@title}" /><!--</a>--><br />
135      <!--<a href="{@href}">--><xsl:value-of select="@title"/></a>
136     </td>
137 </xsl:template>
138
139 <xsl:template match="menudefs">
140  <div class="menuspace">
141  <table cellspacing="0" cellpadding="0" border="0" align="center" class="menubar">
142   <tr>
143    <xsl:apply-templates select="menuitem"/>
144   </tr>
145  </table>
146  </div>
147 </xsl:template>
148
149 <xsl:template match="menu" name="menu">
150  <xsl:apply-templates select="document('menu.xml')/menudefs"/>
151 </xsl:template>
152
153 <xsl:template match="header" name="header">
154   <a name="pagetop"></a>
155   <div id="vfeed"></div>
156   <div class="webtitle"><div class="webtitle-inner">
157   <table cellpadding="0" cellspacing="0" border="0" align="left"><tr>
158     <td width="90">
159       <a href="/"><img src="/logos/csc_80_35_white.png" alt="CSC Logo" /></a>
160     </td><td>
161       <a href="/"><img src="/logos/csc_title.png" alt="CSC Title" /></a>
162     </td><td valign="top" align="right">
163     </td>
164   </tr></table>
165   </div></div>
166   <table cellspacing="0" cellpadding="2" border="0" width="100%"
167   class="template-header">
168    <tr>
169     <!--<td width="84"><a href="/"><img src="/logos/csc_80_35.png"
170     alt="CSC" width="80" height="35" border="0" /></a></td>-->
171     <td colspan="2" class="pagetitle"><xsl:value-of select="$title"/></td>
172    </tr>
173    <tr>
174     <td colspan="2">
175      <xsl:apply-templates
176       select="document(concat($pwd,'/directory.xml'))/directory"/>
177     </td>
178    </tr>
179  </table>
180 </xsl:template>
181
182 <xsl:template match="directory">
183  <xsl:if test="@href = ''"><a class="headdir diritem"
184    href="index.html"><xsl:value-of
185    select="@title"/></a></xsl:if><xsl:if test="@href != ''">
186       <a href="{@href}"><xsl:value-of select="@title"/></a></xsl:if>
187  <xsl:apply-templates match="diritem"/>
188 </xsl:template>
189
190 <xsl:template match="diritem">
191  <a class="diritem" href="{@href}"><xsl:value-of select="@title"/></a>
192 </xsl:template>
193
194 <xsl:template match="footer" name="footer">
195  <a href="#pagetop" class="pagetop">Go to top</a>
196  <div class="footer">
197  <xsl:call-template name="menu"/>
198  <p>
199   This page was generated on <xsl:value-of select="$date"/> at
200   <xsl:value-of select="$time"/>.
201  </p>
202  <p class="infobox">
203   The overall layout is designed specially for Mozilla-based browsers.
204   It is also printer-friendly version. Please report any difficulty you
205   may find, including the version of your browser and your operating system.
206  </p>
207  <p>
208    <a href="/"><img src="/logos/csc_80_35.png" alt="CSC" align="right"/></a>
209    Copyright
210    <xsl:text disable-output-escaping="yes">&amp;copy;</xsl:text>
211    2002<xsl:text disable-output-escaping="yes">&amp;ndash;</xsl:text>2007
212    Computer Science Club of the University of Waterloo.<br />
213    KDE Crystal theme icons are copyright
214    <xsl:text disable-output-escaping="yes">&amp;copy;</xsl:text>
215    2002 and following years KDE Artists.<br />
216    Please direct website comments to the <a
217    href="mailto:www@csclub.uwaterloo.ca">Webmaster</a>.
218  </p>
219  </div>
220 </xsl:template>
221
222 <xsl:template match="newsdefs">
223  <xsl:apply-templates select="newsitem[csc:term(@date) = csc:term($date)]">
224    <xsl:sort select="translate(@date, '-', '')"
225              order="descending"
226              data-type="number"/>
227  </xsl:apply-templates>
228 </xsl:template>
229
230 <xsl:template match="newsitem">
231    <tr>
232     <td class="newsdate" bgcolor="#eeeeff"><xsl:value-of select="@date"/></td>
233     <td rowspan="2" valign="top" class="newsitem" bgcolor="white"><xsl:apply-templates/></td>
234    </tr>
235    <tr>
236     <td class="newsauthor" bgcolor="#eeeeff"><xsl:value-of select="@author"/></td>
237    </tr>
238 </xsl:template>
239
240 <xsl:template match="news" name="news">
241  <tr>
242   <th colspan="2" class="news" bgcolor="#aaaaff">
243    News
244   </th>
245  </tr>
246  <xsl:apply-templates select="document('news.xml')/newsdefs"/>
247  <tr>
248   <td class="newsitem" bgcolor="white" colspan="2">
249    <a href="news/">Older news items</a> are available. Make sure you
250    check out the <a href="/newsgroup/thread.php?group=uw.csc">uw.csc</a> newsgroup and our
251    announcement boards on the second and third floor of MC for more
252    updates.
253   </td>
254  </tr>
255 </xsl:template>
256
257 <xsl:template match="events" name="events">
258    <tr>
259     <th colspan="2" class="news" bgcolor="#aaaaff">
260      Upcoming Events <a href="events.ics">ical</a>
261     </th>
262    </tr>
263    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
264     <xsl:sort select="translate(@date, '-', '')"
265               order="ascending"
266               data-type="number"/>
267     <xsl:if test="translate(@date, '-', '') &gt;= translate($date, '-', '')">
268      <tr>
269       <td class="eventdate" bgcolor="#eeffee"><xsl:value-of select="@date"/></td>
270       <td rowspan="2" valign="top" class="eventitem" bgcolor="white">
271         <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
272          <xsl:value-of select="@title"/>
273         </a>.
274         <xsl:value-of select="short"/>
275       </td>
276      </tr>
277      <tr>
278       <td class="eventroom" bgcolor="#eeffee"><xsl:value-of select="@time"/>,
279       <xsl:value-of select="@room"/></td>
280      </tr>
281     </xsl:if>
282    </xsl:for-each>
283    <tr>
284     <td class="eventitem" bgcolor="white" colspan="2"><a href="events/">Past
285     events</a> are available.</td>
286    </tr>
287 </xsl:template>
288
289 <xsl:template match="eventdefs">
290  <xsl:apply-templates/>
291 </xsl:template>
292
293 <xsl:template match="eventitem">
294  <xsl:document method="html"
295   href="{translate(concat($root, '/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
296 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
297 </xsl:text>
298 <html xmlns="http://www.w3.org/1999/xhtml">
299 <head>
300  <title><xsl:value-of select="@title"/></title>
301   <style type="text/css">
302    <![CDATA[<!-- @import url('/default.css'); -->]]>
303   </style>
304 </head>
305 <body bgcolor="#ffffff">
306  <xsl:call-template name="header">
307   <xsl:with-param name="title" select="@title"/>
308  </xsl:call-template>
309  <p>
310   Held in <xsl:value-of select="@room"/> at
311   <xsl:value-of select="@date"/>, <xsl:value-of select="@time"/>.
312  </p>
313  <h2>Abstract</h2>
314  <xsl:apply-templates select="abstract"/>
315  <xsl:call-template name="footer"/>
316 </body>
317 </html>
318  </xsl:document>
319 </xsl:template>
320
321 <xsl:template match="news-and-events">
322  <table cellspacing="1" cellpadding="2" bgcolor="black">
323   <xsl:call-template name="events"/>
324   <xsl:call-template name="news"/>
325  </table>
326 </xsl:template>
327
328 <xsl:template match="events-this-term" name="events-by-term">
329   <p>The events for <xsl:value-of select="csc:term($date)"/> are listed here or grab an <a href="/events.ics">ical</a>.</p>
330    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
331     <xsl:sort select="translate(@date, '-', '')"
332               order="ascending"
333               data-type="number"/>
334     <xsl:if test="csc:term(@date) = csc:term($date)">
335      <h3><a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}"><xsl:value-of select="@title"/></a></h3>
336      <p>
337       <b><xsl:value-of select="@room"/>,
338       <xsl:value-of select="@date"/>, <xsl:value-of
339       select="@time"/>: </b>
340       <xsl:value-of select="short"/>
341       <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
342        More information</a>.
343      </p>
344     </xsl:if>
345    </xsl:for-each>
346 </xsl:template>
347
348 <xsl:template match="news-this-term" name="news-by-term">
349   <p>The news for <xsl:value-of select="csc:term($date)"/> is listed here.</p>
350    <xsl:for-each select="document('news.xml')/newsdefs/newsitem">
351     <xsl:sort select="translate(@date, '-', '')"
352               order="descending"
353               data-type="number"/>
354     <xsl:if test="csc:term(@date) = csc:term($date)">
355      <p>
356       <b><xsl:value-of select="@date"/>,
357          <xsl:value-of select="@author"/>: </b> <xsl:apply-templates/>
358      </p>
359     </xsl:if>
360    </xsl:for-each>
361 </xsl:template>
362
363 <xsl:template match="members-this-term">
364   <p>The members for <xsl:value-of select="csc:term($date)"/> are
365   listed here. We currently have <xsl:value-of
366   select="count(document('members.xml')/memberlist/member)"/> members.</p>
367   <table>
368     <tr>
369       <th>Member ID</th>
370       <th>Name</th>
371       <th>Program</th>
372     </tr>
373     <xsl:for-each select="document('members.xml')/memberlist/member">
374       <tr>
375         <xsl:if test="position() mod 2 = 0">
376           <xsl:attribute name="bgcolor">#cee6ff</xsl:attribute>
377         </xsl:if>
378         <td><xsl:value-of select="@id"/></td>
379         <td><xsl:value-of select="@name"/></td>
380         <td><xsl:value-of select="@program"/></td>
381       </tr>
382     </xsl:for-each>
383   </table>
384 </xsl:template>
385
386 <xsl:template match="all-books">
387   <p>The books we currently own include:</p>
388   <table>
389     <tr>
390       <th>Title</th>
391       <th>Author</th>
392     </tr>
393     <xsl:for-each select="document('books.xml')/booklist/book">
394       <tr>
395         <xsl:if test="position() mod 2 = 0">
396           <xsl:attribute name="bgcolor">#cee6ff</xsl:attribute>
397         </xsl:if>
398         <td><a href="/office/books/{translate(@isbn, ' ', '_')}.html"><xsl:value-of
399         select="@title"/><xsl:if test="@edition != ''"> (<xsl:value-of
400         select="@edition"/>)</xsl:if></a></td>
401         <td><xsl:value-of select="@author"/></td>
402       </tr>
403 <xsl:document method="html" href="{translate(concat($root, '/office/books/', @isbn, '.html'), ' ', '_')}">
404 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
405 </xsl:text>
406 <html xmlns="http://www.w3.org/1999/xhtml">
407 <head>
408  <title>Book: <xsl:value-of select="@title"/></title>
409   <style type="text/css">
410    <![CDATA[<!-- @import url('/default.css'); -->]]>
411   </style>
412 </head>
413 <body bgcolor="#ffffff">
414  <xsl:call-template name="header">
415     <xsl:with-param name="title" select="@title"/>
416     <xsl:with-param name="pwd" select="concat($pwd, '/books')"/>
417  </xsl:call-template>
418 <p>
419  <b>Title: </b> <xsl:value-of select="@title"/><br />
420  <b>Edition: </b> <xsl:value-of select="@edition"/><br />
421  <b>ISBN: </b> <xsl:value-of select="@isbn"/><br />
422  <b>Author: </b> <xsl:value-of select="@author"/><br />
423  <b>Published: </b> <xsl:value-of select="@published"/><br />
424 </p>
425   <xsl:call-template name="footer"/>
426 </body>
427 </html>
428  </xsl:document>
429     </xsl:for-each>
430   </table>
431 </xsl:template>
432
433 <xsl:template match="generate-event-files">
434  <xsl:apply-templates select="document('events.xml')/eventdefs"/>
435 </xsl:template>
436
437 <xsl:key name="eventterm"
438     match="/eventdefs/eventitem"
439     use="csc:term(@date)" />
440
441   <xsl:template match="old-events">
442     <xsl:for-each
443       select="document('events.xml')/eventdefs/eventitem">
444
445      <xsl:sort select="translate(@date, '-', '')"
446               order="descending"
447               data-type="number"/>
448
449       <xsl:if
450               test="not(preceding-sibling::*[csc:term(@date)=csc:term(current()/@date)]) and not(csc:term(@date) = csc:term($date))">
451         <p><a href="{translate(concat('old-',
452         csc:term(@date), '.html'), ' ', '_')}">
453             <xsl:value-of
454               select="csc:term(@date)"/></a></p>
455  <xsl:document method="html" href="{translate(concat($root, '/events/old-', csc:term(@date), '.html'), ' ', '_')}">
456 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
457 </xsl:text>
458 <html xmlns="http://www.w3.org/1999/xhtml">
459 <head>
460  <title>Events for <xsl:value-of select="csc:term(@date)"/></title>
461   <style type="text/css">
462    <![CDATA[<!-- @import url('/default.css'); -->]]>
463   </style>
464 </head>
465 <body bgcolor="#ffffff">
466  <xsl:call-template name="header">
467   <xsl:with-param name="title" select="concat('Events for ', csc:term(@date))"/>
468  </xsl:call-template>
469  <xsl:call-template name="events-by-term">
470    <xsl:with-param name="date" select="@date"/>
471  </xsl:call-template>
472  <xsl:call-template name="footer"/>
473 </body>
474 </html>
475  </xsl:document>
476       </xsl:if>
477     </xsl:for-each>
478   </xsl:template>
479   
480 <xsl:key name="newsterm"
481     match="/newsdefs/newsitem"
482     use="csc:term(@date)" />
483
484   <xsl:template match="old-news">
485     <xsl:for-each
486       select="document('news.xml')/newsdefs/newsitem">
487
488      <xsl:sort select="translate(@date, '-', '')"
489               order="descending"
490               data-type="number"/>
491
492       <xsl:if
493               test="not(preceding-sibling::*[csc:term(@date)=csc:term(current()/@date)]) and not(csc:term(@date) = csc:term($date))">
494         <p><a href="{translate(concat('old-',
495         csc:term(@date), '.html'), ' ', '_')}">
496             <xsl:value-of
497               select="csc:term(@date)"/></a></p>
498  <xsl:document method="html" href="{translate(concat($root, '/news/old-', csc:term(@date), '.html'), ' ', '_')}">
499 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">]]>
500 </xsl:text>
501 <html xmlns="http://www.w3.org/1999/xhtml">
502 <head>
503  <title>News for <xsl:value-of select="csc:term(@date)"/></title>
504   <style type="text/css">
505    <![CDATA[<!-- @import url('/default.css'); -->]]>
506   </style>
507 </head>
508 <body bgcolor="#ffffff">
509  <xsl:call-template name="header">
510   <xsl:with-param name="title" select="concat('News for ', csc:term(@date))"/>
511  </xsl:call-template>
512  <xsl:call-template name="news-by-term">
513    <xsl:with-param name="date" select="@date"/>
514  </xsl:call-template>
515  <xsl:call-template name="footer"/>
516 </body>
517 </html>
518  </xsl:document>
519       </xsl:if>
520     </xsl:for-each>
521   </xsl:template>
522   
523 <xsl:template match="execlist">
524  <h3>Elected positions</h3>
525  <ul>
526   <xsl:apply-templates select="exec[@type='elected']"/>
527  </ul>
528  <h3>Appointed positions</h3>
529  <ul>
530   <xsl:apply-templates select="exec[@type='appointed']"/>
531  </ul>
532 </xsl:template>
533
534 <xsl:template match="exec">
535  <li><xsl:value-of select="@name"/> is this term's <b><xsl:value-of
536  select="@position"/></b>. You can <a
537  href="mailto:{@userid}@csclub.uwaterloo.ca">e-mail the <xsl:value-of select="@position"/></a><xsl:if
538  test="not(@href='')"> or <a href="{@href}">visit 
539  <xsl:choose>
540   <xsl:when test="@sex='male'"> his </xsl:when>
541   <xsl:when test="@sex='female'"> her </xsl:when>
542   <xsl:otherwise> his or her </xsl:otherwise>
543  </xsl:choose>
544  homepage</a></xsl:if>.
545  </li>
546 </xsl:template>
547
548 <xsl:template match="*">
549 <xsl:copy>
550 <xsl:copy-of select="@*" />
551 <xsl:apply-templates />
552 </xsl:copy>
553 </xsl:template>
554
555
556 </xsl:stylesheet>