Added csc:term()
[mspang/www.git] / cscweb.xsl
1 <?xml version='1.0'?>
2
3 <xsl:stylesheet version="1.0"
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 HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]>
13 </xsl:text>
14 <html>
15 <head>
16  <title><xsl:value-of select="@title"/></title>
17   <style type="text/css">
18    <![CDATA[<!-- @import url('/default.css'); -->]]>
19   </style>
20 </head>
21 <body>
22 <p>
23   <xsl:value-of select="csc:term($date)"/>
24 </p>
25 <xsl:apply-templates select="biglogo"/>
26 <xsl:apply-templates select="header">
27  <xsl:with-param name="title" select="@title"/>
28 </xsl:apply-templates>
29 <xsl:apply-templates select="section|menu"/>
30 <xsl:apply-templates select="footer"/>
31 </body>
32 </html>
33 </xsl:template>
34
35 <xsl:template match="section">
36  <h2><xsl:value-of select="@title"/></h2>
37  <xsl:apply-templates />
38 </xsl:template>
39
40 <xsl:template match="biglogo" name="menu">
41   <table cellspacing="0" cellpadding="2" border="0" align="center">
42    <tr>
43     <td width="174" rowspan="2"><img src="/logos/csc_160_70.png" alt="CSC" width="165" height="75" /></td>
44     <td>University of Waterloo</td>
45    </tr>
46    <tr>
47     <td>Computer Science Club</td>
48    </tr>
49   </table>
50 </xsl:template>
51
52 <xsl:template match="menuitem">
53     <td class="button">
54      <a href="{@href}"><img border="0" src="/buttons/{@icon}.png"
55      width="40" height="40" alt="" /></a><br />
56      <a href="{@href}"><xsl:value-of select="@title"/></a>
57     </td>
58 </xsl:template>
59
60 <xsl:template match="menudefs">
61  <table cellspacing="1" cellpadding="3" border="0" bgcolor="black" align="center">
62   <tr>
63    <xsl:apply-templates select="menuitem"/>
64   </tr>
65  </table>
66 </xsl:template>
67
68 <xsl:template match="menu" name="menu">
69  <xsl:apply-templates select="document('menu.xml')/menudefs"/>
70 </xsl:template>
71
72 <xsl:template match="header" name="header">
73   <table cellspacing="0" cellpadding="2" border="0" width="100%"
74   bgcolor="#cee6ff">
75    <tr>
76     <td width="84"><a href="/"><img src="/logos/csc_80_35.png"
77     alt="CSC" width="80" height="35" border="0" /></a></td>
78     <td class="pagetitle"><xsl:value-of select="$title"/></td>
79    </tr>
80    <tr>
81     <td colspan="2">
82      <xsl:apply-templates
83       select="document(concat($pwd,'/directory.xml'))/directory"/>
84     </td>
85    </tr>
86  </table>
87 </xsl:template>
88
89 <xsl:template match="directory">
90  [<a href="index.html"><xsl:value-of select="@title"/></a>]
91  <xsl:apply-templates match="diritem"/>
92 </xsl:template>
93
94 <xsl:template match="diritem">
95  [<a href="{@href}"><xsl:value-of select="@title"/></a>]
96 </xsl:template>
97
98 <xsl:template match="footer" name="footer">
99  <hr />
100  <xsl:call-template name="menu"/>
101  <p>
102   This page was generated on <xsl:value-of select="$date"/> at
103   <xsl:value-of select="$time"/>.
104  </p>
105  <p>
106    Copyright 2002 the Computer Science Club of the University of
107    Waterloo. Please direct website comments to the <a
108    href="mailto:www@csclub.uwaterloo.ca">Webmaster</a>. 
109  </p>
110 </xsl:template>
111
112 <xsl:template match="newsdefs">
113  <xsl:apply-templates select="newsitem"/>
114 </xsl:template>
115
116 <xsl:template match="newsitem">
117    <tr>
118     <td class="newsdate"><xsl:value-of select="@date"/></td>
119     <td rowspan="2" valign="top" class="newsitem"><xsl:apply-templates/></td>
120    </tr>
121    <tr>
122     <td class="newsauthor"><xsl:value-of select="@author"/></td>
123    </tr>
124 </xsl:template>
125
126 <xsl:template match="news" name="news">
127  <tr>
128   <th colspan="2" class="news">
129    News
130   </th>
131  </tr>
132  <xsl:apply-templates select="document('news.xml')/newsdefs"/>
133  <tr>
134   <td class="newsitem" colspan="2">
135    <a href="news/">Older news items</a> are available. Make sure you
136    check out the <a href="nntp://uw.csc">uw.csc</a> newsgroup and our
137    announcement boards on the second and third floor of MC for more
138    updates.
139   </td>
140  </tr>
141 </xsl:template>
142
143 <xsl:template match="events" name="events">
144    <tr>
145     <th colspan="2" class="news">
146      Upcoming Events
147     </th>
148    </tr>
149    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
150     <xsl:sort select="translate(@date, '-', '')"
151               order="ascending"
152               data-type="number"/>
153     <xsl:if test="translate(@date, '-', '') &gt;= translate($date, '-', '')">
154      <tr>
155       <td class="eventdate"><xsl:value-of select="@date"/></td>
156       <td rowspan="2" valign="top" class="eventitem">
157         <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
158          <xsl:value-of select="@title"/>
159         </a>.
160         <xsl:value-of select="short"/>
161       </td>
162      </tr>
163      <tr>
164       <td class="eventroom"><xsl:value-of select="@time"/>,
165       <xsl:value-of select="@room"/></td>
166      </tr>
167     </xsl:if>
168    </xsl:for-each>
169    <tr>
170     <td class="eventitem" colspan="2"><a href="events/">Past
171     events</a> are available.</td>
172    </tr>
173 </xsl:template>
174
175 <xsl:template match="eventdefs">
176  <xsl:apply-templates/>
177 </xsl:template>
178
179 <xsl:template match="eventitem">
180  <xsl:document method="html"
181   href="{translate(concat($root, '/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
182 <xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">]]>
183 </xsl:text>
184 <html>
185 <head>
186  <title><xsl:value-of select="@title"/></title>
187   <style type="text/css">
188    <![CDATA[<!-- @import url('/default.css'); -->]]>
189   </style>
190 </head>
191 <body>
192  <xsl:call-template name="header">
193   <xsl:with-param name="title" select="@title"/>
194  </xsl:call-template>
195  <p>
196   Held in <xsl:value-of select="@room"/> at
197   <xsl:value-of select="@date"/>, <xsl:value-of select="@time"/>.
198  </p>
199  <h2>Abstract</h2>
200  <xsl:apply-templates select="abstract"/>
201  <xsl:call-template name="footer"/>
202 </body>
203 </html>
204  </xsl:document>
205 </xsl:template>
206
207 <xsl:template match="news-and-events">
208  <table cellspacing="1" cellpadding="2" bgcolor="black">
209   <xsl:call-template name="news"/>
210   <xsl:call-template name="events"/>
211  </table>
212 </xsl:template>
213
214 <xsl:template match="events-this-term">
215   <p>The events for <xsl:value-of select="csc:term($date)"/> are listed here.</p>
216    <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
217     <xsl:sort select="translate(@date, '-', '')"
218               order="ascending"
219               data-type="number"/>
220     <xsl:if test="@term = csc:term($date)">
221      <h3><xsl:value-of select="@title"/></h3>
222      <p>
223       <b><xsl:value-of select="@room"/>,
224       <xsl:value-of select="@date"/>, <xsl:value-of
225       select="@time"/>: </b>
226       <xsl:value-of select="short"/>
227       <a href="{translate(concat('/events/', @room, '-', @date, '-', @time, '.html'), ' ', '_')}">
228        More information</a>.
229      </p>
230     </xsl:if>
231    </xsl:for-each>
232 </xsl:template>
233
234 <xsl:template match="generate-event-files">
235  <xsl:apply-templates select="document('events.xml')/eventdefs"/>
236 </xsl:template>
237
238 <xsl:template match="old-events">
239  <xsl:for-each select="document('events.xml')/eventdefs/eventitem">
240   <xsl:sort select="term"
241             order="descending"
242             data-type="number"/>
243
244  </xsl:for-each>
245 </xsl:template>
246
247 <xsl:template match="execlist">
248  <h3>Elected positions</h3>
249  <ul>
250   <xsl:apply-templates select="exec[@type='elected']"/>
251  </ul>
252  <h3>Appointed positions</h3>
253  <ul>
254   <xsl:apply-templates select="exec[@type='appointed']"/>
255  </ul>
256 </xsl:template>
257
258 <xsl:template match="exec">
259  <li><xsl:value-of select="@name"/> is this term's <b><xsl:value-of
260  select="@position"/></b>. You can <a
261  href="mailto:{@userid}@csclub.uwaterloo.ca">e-mail them</a><xsl:if
262  test="not(@href='')"> or <a href="{@href}">visit their
263  homepage</a></xsl:if>.
264  </li>
265 </xsl:template>
266
267 <xsl:template match="*">
268 <xsl:copy>
269 <xsl:copy-of select="@*" />
270 <xsl:apply-templates />
271 </xsl:copy>
272 </xsl:template>
273
274
275 </xsl:stylesheet>