diff options
Diffstat (limited to 'share/xml/templates.pastevents.xsl')
-rw-r--r-- | share/xml/templates.pastevents.xsl | 299 |
1 files changed, 299 insertions, 0 deletions
diff --git a/share/xml/templates.pastevents.xsl b/share/xml/templates.pastevents.xsl new file mode 100644 index 0000000000..f8cc194abe --- /dev/null +++ b/share/xml/templates.pastevents.xsl @@ -0,0 +1,299 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> +<!DOCTYPE xsl:stylesheet PUBLIC "-//FreeBSD//DTD FreeBSD XSLT 1.0 DTD Fragment//EN" + "http://www.FreeBSD.org/XML/www/share/xml/xslt10-freebsd.dtd" [ +<!ENTITY title "FreeBSD Past Events"> +<!ENTITY rsslink "&base;/events/rss.xml"> +<!ENTITY rsstitle "Upcoming FreeBSD Events"> +]> + +<!-- $FreeBSD$ --> + +<!-- Copyright (c) 2003 Simon L. Nielsen <simon@FreeBSD.org> + Copyright (c) 2008 Murray M Stokely <murray@FreeBSD.org> + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. +--> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:date="http://exslt.org/dates-and-times" + xmlns="http://www.w3.org/1999/xhtml" + extension-element-prefixes="date"> + + <xsl:import href="http://www.FreeBSD.org/XML/www/lang/share/xml/libcommon.xsl"/> + <xsl:import href="http://www.FreeBSD.org/XML/www/share/xml/xhtml.xsl"/> + + <!-- Do not add last modified date for old news/press --> + <xsl:variable name="date"/> + + <xsl:param name="pastyears">2003 2004 2005 2006</xsl:param> + + <xsl:key name="event-by-month" match="event" + use="concat(startdate/year, format-number(startdate/month, '00'))"/> + + <xsl:key name="event-by-country" match="event" + use="location/country" /> + + <xsl:key name="upcoming-event-by-country" match="event[((number(enddate/year) > number($curdate.year)) or + (number(enddate/year) = number($curdate.year) and + number(enddate/month) > number($curdate.month)) or + (number(enddate/year) = number($curdate.year) and + number(enddate/month) = number($curdate.month) and + enddate/day >= $curdate.day))]" + use="location/country" /> + + <xsl:variable name="charturl" select="'http://chart.apis.google.com/chart?cht=t&chs=400x200&chtm=world&chco=ffffff,ffbe38,600000&chf=bg,s,4D89F9'" /> + + <xsl:variable name="title">&title;</xsl:variable> + + <xsl:variable name="rsstitle">&rsstitle;</xsl:variable> + + <xsl:variable name="rsslink">&rsslink;</xsl:variable> + + <xsl:template name="process.content"> + + <xsl:variable name="chart-countries"> + <xsl:for-each select="//event[ + generate-id() = + generate-id(key('event-by-country', location/country)[1])]"> + <xsl:sort select="format-number(count(key('event-by-country', location/country)), '000')" order="descending"/> + <xsl:value-of select="location/country/@code" /> + </xsl:for-each> + </xsl:variable> + + <xsl:variable name="chart-country-counts"> + <xsl:for-each select="//event[ + generate-id() = + generate-id(key('event-by-country', location/country)[1])]"> + <xsl:sort select="format-number(count(key('event-by-country', location/country)), '000')" order="descending"/> + <xsl:if test="count(key('upcoming-event-by-country', location/country)) != 0">100.0</xsl:if> + <xsl:if test="count(key('upcoming-event-by-country', location/country)) = 0"><xsl:value-of select="count(key('event-by-country', location/country))" />.0</xsl:if> + <xsl:if test="position()!=last()">,</xsl:if></xsl:for-each> + </xsl:variable> + + <xsl:variable name="imageurl"><xsl:value-of select="$charturl"/>&chd=t:<xsl:value-of select="$chart-country-counts"/>&chld=<xsl:value-of select="$chart-countries"/></xsl:variable> + + <div id="sidewrap"> + &nav.community; + <div id="feedlinks"> + <ul> + <li> + <a href="&rsslink;" title="&rsstitle;"> + RSS 2.0 Feed + </a> + </li> + </ul> + </div> <!-- FEEDLINKS --> + </div> <!-- SIDEWRAP --> + + <div id="contentwrap"> + <h1>&title;</h1> + <!-- + Note the current date to have a reference, if the + upcoming/past events are split incorrectly. + --> + <xsl:comment> + <xsl:text>Generated on: </xsl:text> + <xsl:value-of select="concat($curdate.year, + format-number($curdate.month, '00'), + format-number($curdate.day, '00'))"/> + </xsl:comment> + + <xsl:for-each select="/events"> + <xsl:call-template name="html-events-list-preface" /> + + <xsl:call-template name="html-events-map"> + <xsl:with-param name="mapurl" select="$imageurl" /> + </xsl:call-template> + +<!-- with parameter $year here? --> + <xsl:call-template name="html-events-list-past-heading" /> + </xsl:for-each> + + <xsl:for-each select="/events/event[generate-id() = + generate-id(key('event-by-month', concat(startdate/year, + format-number(startdate/month, '00')))[1]) + and ((number(enddate/year) = $year))]"> + + <xsl:sort select="number(startdate/year)" order="descending"/> + <xsl:sort select="format-number(startdate/month, '00')" order="descending"/> + <xsl:sort select="format-number(startdate/day, '00')" order="descending"/> + + <h3> + <xsl:attribute name="id"> + <xsl:text>month:</xsl:text> + <xsl:value-of select="concat(startdate/year, + format-number(startdate/month, '00'))"/> + </xsl:attribute> + <xsl:call-template name="gen-long-en-month"> + <xsl:with-param name="nummonth" select="startdate/month"/> + </xsl:call-template > + <xsl:text> </xsl:text> + <xsl:value-of select="startdate/year"/> + </h3> + + <ul> + <xsl:for-each select="key('event-by-month', + concat(startdate/year, format-number(startdate/month, '00')))"> + + <xsl:sort select="format-number(startdate/day, '00')" order="descending"/> + <xsl:apply-templates select="."/> + </xsl:for-each> + </ul> + </xsl:for-each> + + <p><a href="events.html">Current Events</a></p> + + <p>Events from past years:</p> + + <ul id="events-past-years"> + <xsl:for-each select="/events"> + <xsl:call-template name="split-string"> + <xsl:with-param name="seperator" select="' '"/> + <xsl:with-param name="text" select="$pastyears"/> + </xsl:call-template> + </xsl:for-each> + </ul> + + </div> <!-- contentwrap --> + + <br class="clearboth" /> + </xsl:template> + + <!-- Template: event --> + <xsl:template name="eventbody"> + <xsl:attribute name="id"> + <xsl:call-template name="generate-event-anchor"/> + </xsl:attribute> + + <p> + <b> + <xsl:if test="url"> + <xsl:apply-templates select="url"/> + </xsl:if> + <xsl:if test="not(url)"> + <xsl:value-of select="name"/> + </xsl:if> + </b> + <xsl:if test="location/site!=''"> + <xsl:text>, </xsl:text> + <xsl:value-of select="location/site"/> + </xsl:if> + <xsl:if test="location/city!=''"> + <xsl:text>, </xsl:text> + <xsl:value-of select="location/city"/> + </xsl:if> + <xsl:if test="location/state!=''"> + <xsl:text>, </xsl:text> + <xsl:value-of select="location/state"/> + </xsl:if> + <xsl:if test="location/country!=''"> + <xsl:text>, </xsl:text> + <xsl:value-of select="location/country"/> + </xsl:if> + <br/> + <em> + <xsl:call-template name="gen-date-interval"> + <xsl:with-param name="startdate" select="startdate" /> + <xsl:with-param name="enddate" select="enddate" /> + </xsl:call-template> + </em><br/> + <xsl:apply-templates select="description/child::node()" mode="copy.html"/> + </p> + <xsl:if test="link"> + <p><xsl:apply-templates select="link"/></p> + </xsl:if> + </xsl:template> + + <!-- Template: event --> + <xsl:template match="event" mode="upcoming"> + <li> + <xsl:call-template name="eventbody"/> + <p>Social links: <a rel="nofollow"> + <xsl:attribute name="href">http://upcoming.yahoo.com/search?type=Events&q=<xsl:value-of select="name" />&Search=GO</xsl:attribute> +upcoming</a></p> + </li> + </xsl:template> + + <!-- Template: event --> + <xsl:template match="event"> + <xsl:variable name="lower">abcdefghijklmnopqrstuvwxyz</xsl:variable> + <xsl:variable name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable> + <xsl:variable name="name" select="name" /> + <xsl:variable name="lcname" select="translate($name, $upper, $lower)" /> + + <li> + <xsl:call-template name="eventbody"/> + <p>Social links: <a rel="nofollow"> + <xsl:attribute name="href">http://www.flickr.com/search/?w=all&q=<xsl:value-of select="name" />&m=text</xsl:attribute> + Flickr</a>, <a rel="nofollow"> + <xsl:attribute name="href">http://blogsearch.google.com/blogsearch?q=<xsl:value-of select="name" /></xsl:attribute>Blog Search</a><xsl:if test="contains($lcname, 'meetbsd') or contains($lcname, 'nycbsdcon')">, + <a rel="nofollow"> + <xsl:attribute name="href">http://www.youtube.com/results?search_query=bsdconferences+<xsl:value-of select="name" /></xsl:attribute>YouTube</a></xsl:if>.</p> + </li> + </xsl:template> + + <!-- Template: link --> + <xsl:template match="link"> + <xsl:apply-templates select="url"/> + <xsl:if test="not(position()=last())"> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:template> + + <!-- Template: url --> + <xsl:template match="url"> + <a> + <xsl:attribute name="href"> + <xsl:if test="@type='freebsd-website'">&base;</xsl:if> + <xsl:value-of select="."/> + </xsl:attribute> + <xsl:value-of select="../name"/> + </a> + </xsl:template> + + <xsl:template name="split-string"> + <xsl:param name="seperator"/> + <xsl:param name="text"/> + <xsl:variable name="first" select="substring-before($text, $seperator)"/> + <xsl:choose> + <xsl:when test="$first or substring-after($text,$seperator)"> + <xsl:if test="$first"> + <li><a> + <xsl:attribute name="href">events<xsl:value-of select="$first"/>.html</xsl:attribute> + <xsl:value-of select="$first" /> + </a></li> + </xsl:if> + <xsl:call-template name="split-string"> + <xsl:with-param name="text" select="substring-after($text,$seperator)"/> + <xsl:with-param name="seperator" select="$seperator"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <li><a> + <xsl:attribute name="href">events<xsl:value-of select="$text"/>.html</xsl:attribute> + <xsl:value-of select="$text" /> + </a></li> + </xsl:otherwise> + </xsl:choose> + </xsl:template> +</xsl:stylesheet> |