Added support for images. Include all of the theme files in the bzr branch.
20
classic_fancy/config.ini
Normal file
@ -0,0 +1,20 @@
|
||||
# This theme is based on the one contained in Planet V2.0. It demonstrates
|
||||
# that one can mix the use of htmltmpl and xslt templates.
|
||||
|
||||
[Planet]
|
||||
template_files:
|
||||
atom.xml.xslt
|
||||
foafroll.xml.xslt
|
||||
index.html.tmpl
|
||||
opml.xml.xslt
|
||||
rss10.xml.tmpl
|
||||
rss20.xml.tmpl
|
||||
|
||||
template_directories:
|
||||
../common
|
||||
|
||||
bill_of_materials:
|
||||
planet.css
|
||||
images/feed-icon-10x10.png
|
||||
images/logo.png
|
||||
images/planet.png
|
126
classic_fancy/index.html.tmpl
Normal file
@ -0,0 +1,126 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
|
||||
### Fancy Planet HTML template.
|
||||
###
|
||||
### When combined with the stylesheet and images in the output/ directory
|
||||
### of the Planet source, this gives you a much prettier result than the
|
||||
### default examples template and demonstrates how to use the config file
|
||||
### to support things like faces
|
||||
###
|
||||
### For documentation on the more boring template elements, see
|
||||
### examples/config.ini and examples/index.html.tmpl in the Planet source.
|
||||
|
||||
<head>
|
||||
<title><TMPL_VAR name></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="generator" content="<TMPL_VAR generator ESCAPE="HTML">">
|
||||
<link rel="stylesheet" href="planet.css" type="text/css">
|
||||
<TMPL_IF feedtype>
|
||||
<link rel="alternate" href="<TMPL_VAR feed ESCAPE="HTML">" title="<TMPL_VAR channel_title_plain ESCAPE="HTML">" type="application/<TMPL_VAR feedtype>+xml">
|
||||
</TMPL_IF>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1><TMPL_VAR name></h1>
|
||||
<TMPL_VAR admin>
|
||||
|
||||
<TMPL_LOOP Items>
|
||||
<TMPL_IF new_date>
|
||||
<TMPL_UNLESS __FIRST__>
|
||||
### End <div class="channelgroup">
|
||||
</div>
|
||||
### End <div class="daygroup">
|
||||
</div>
|
||||
</TMPL_UNLESS>
|
||||
<div class="daygroup">
|
||||
<h2><TMPL_VAR new_date></h2>
|
||||
</TMPL_IF>
|
||||
|
||||
<TMPL_IF new_channel>
|
||||
<TMPL_UNLESS new_date>
|
||||
### End <div class="channelgroup">
|
||||
</div>
|
||||
</TMPL_UNLESS>
|
||||
<div class="channelgroup">
|
||||
|
||||
### Planet provides template variables for *all* configuration options for
|
||||
### the channel (and defaults), even if it doesn't know about them. We
|
||||
### exploit this here to add hackergotchi faces to our channels. Planet
|
||||
### doesn't know about the "face", "facewidth" and "faceheight" configuration
|
||||
### variables, but makes them available to us anyway.
|
||||
|
||||
<h3><a href="<TMPL_VAR channel_link ESCAPE="HTML">" title="<TMPL_VAR channel_title_plain ESCAPE="HTML">"><TMPL_VAR channel_name></a></h3>
|
||||
<TMPL_IF channel_face>
|
||||
<img class="face" src="images/<TMPL_VAR channel_face ESCAPE="HTML">" width="<TMPL_VAR channel_facewidth ESCAPE="HTML">" height="<TMPL_VAR channel_faceheight ESCAPE="HTML">" alt="">
|
||||
</TMPL_IF>
|
||||
</TMPL_IF>
|
||||
|
||||
|
||||
<div class="entrygroup" id="<TMPL_VAR id>"<TMPL_IF channel_language> lang="<TMPL_VAR channel_language>"</TMPL_IF>>
|
||||
<TMPL_IF title>
|
||||
<h4<TMPL_IF title_language> lang="<TMPL_VAR title_language>"</TMPL_IF>><a href="<TMPL_VAR link ESCAPE="HTML">"><TMPL_VAR title></a></h4>
|
||||
</TMPL_IF>
|
||||
<div class="entry">
|
||||
<div class="content"<TMPL_IF content_language> lang="<TMPL_VAR content_language>"</TMPL_IF>>
|
||||
<TMPL_VAR content>
|
||||
</div>
|
||||
|
||||
### Planet also makes available all of the information from the feed
|
||||
### that it can. Use the 'planet-cache' tool on the cache file for
|
||||
### a particular feed to find out what additional keys it supports.
|
||||
### Comment extra fields are 'author' and 'category' which we
|
||||
### demonstrate below.
|
||||
|
||||
<p class="date">
|
||||
<a href="<TMPL_VAR link ESCAPE="HTML">"><TMPL_IF author>by <TMPL_VAR author ESCAPE="HTML"> at </TMPL_IF><TMPL_VAR date><TMPL_IF category> under <TMPL_VAR category></TMPL_IF></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<TMPL_IF __LAST__>
|
||||
### End <div class="channelgroup">
|
||||
</div>
|
||||
### End <div class="daygroup">
|
||||
</div>
|
||||
</TMPL_IF>
|
||||
</TMPL_LOOP>
|
||||
|
||||
|
||||
<div class="sidebar">
|
||||
<img src="images/logo.png" width="136" height="136" alt="">
|
||||
|
||||
<h2>Subscriptions</h2>
|
||||
<ul>
|
||||
<TMPL_LOOP Channels>
|
||||
<li>
|
||||
<a href="<TMPL_VAR url ESCAPE="HTML">" title="subscribe"><img src="images/feed-icon-10x10.png" alt="(feed)"></a> <a <TMPL_IF link>href="<TMPL_VAR link ESCAPE="HTML">" </TMPL_IF><TMPL_IF message>class="message" title="<TMPL_VAR message ESCAPE="HTML">"</TMPL_IF><TMPL_UNLESS message>title="<TMPL_VAR title_plain ESCAPE="HTML">"</TMPL_UNLESS>><TMPL_VAR name></a>
|
||||
</li>
|
||||
</TMPL_LOOP>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<strong>Last updated:</strong><br>
|
||||
<TMPL_VAR date><br>
|
||||
<em>All times are UTC.</em><br>
|
||||
<br>
|
||||
Powered by:<br>
|
||||
<a href="http://www.planetplanet.org/"><img src="images/planet.png" width="80" height="15" alt="Planet" border="0"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<h2>Planetarium:</h2>
|
||||
<ul>
|
||||
<li><a href="http://www.planetapache.org/">Planet Apache</a></li>
|
||||
<li><a href="http://planet.debian.net/">Planet Debian</a></li>
|
||||
<li><a href="http://planet.freedesktop.org/">Planet freedesktop.org</a></li>
|
||||
<li><a href="http://planet.gnome.org/">Planet GNOME</a></li>
|
||||
<li><a href="http://planetsun.org/">Planet Sun</a></li>
|
||||
<li><a href="http://fedora.linux.duke.edu/fedorapeople/">Fedora People</a></li>
|
||||
<li><a href="http://www.planetplanet.org/">more...</a></li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
classic_fancy/index.html.tmplc
Normal file
150
classic_fancy/planet.css
Normal file
@ -0,0 +1,150 @@
|
||||
body {
|
||||
border-right: 1px solid black;
|
||||
margin-right: 200px;
|
||||
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 0px;
|
||||
padding-top: 20px;
|
||||
|
||||
font-family: "Bitstream Vera Sans", sans-serif;
|
||||
font-weight: normal;
|
||||
letter-spacing: -2px;
|
||||
text-transform: lowercase;
|
||||
text-align: right;
|
||||
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.admin {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: "Bitstream Vera Sans", sans-serif;
|
||||
font-weight: normal;
|
||||
color: #200080;
|
||||
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: "Bitstream Vera Sans", sans-serif;
|
||||
font-weight: normal;
|
||||
|
||||
background-color: #a0c0ff;
|
||||
border: 1px solid #5080b0;
|
||||
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
h3 a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-family: "Bitstream Vera Sans", sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h4 a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
img.face {
|
||||
float: right;
|
||||
margin-top: -3em;
|
||||
}
|
||||
|
||||
.entry {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
.entry .date {
|
||||
font-family: "Bitstream Vera Sans", sans-serif;
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.entry .date a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
right: 0px;
|
||||
width: 200px;
|
||||
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
padding-right: 0px;
|
||||
|
||||
padding-top: 20px;
|
||||
padding-left: 0px;
|
||||
|
||||
font-family: "Bitstream Vera Sans", sans-serif;
|
||||
font-size: 85%;
|
||||
}
|
||||
|
||||
.sidebar h2 {
|
||||
font-size: 110%;
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
|
||||
padding-left: 5px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.sidebar ul {
|
||||
padding-left: 1em;
|
||||
margin-left: 0px;
|
||||
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.sidebar ul li:hover {
|
||||
color: grey;
|
||||
}
|
||||
|
||||
.sidebar ul li a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.sidebar ul li a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.sidebar ul li a img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.sidebar p {
|
||||
border-top: 1px solid grey;
|
||||
margin-top: 30px;
|
||||
padding-top: 10px;
|
||||
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.sidebar .message {
|
||||
cursor: help;
|
||||
border-bottom: 1px dashed red;
|
||||
}
|
||||
|
||||
.sidebar a.message:hover {
|
||||
cursor: help;
|
||||
background-color: #ff0000;
|
||||
color: #ffffff !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline !important;
|
||||
color: blue !important;
|
||||
}
|
80
common/atom.xml.xslt
Normal file
@ -0,0 +1,80 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:access="http://www.bloglines.com/about/specs/fac-1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:indexing="urn:atom-extension:indexing"
|
||||
xmlns:planet="http://planet.intertwingly.net/"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
exclude-result-prefixes="planet xhtml">
|
||||
|
||||
<!-- strip planet elements and attributes -->
|
||||
<xsl:template match="planet:*|@planet:*"/>
|
||||
|
||||
<!-- strip obsolete link relationships -->
|
||||
<xsl:template match="atom:link[@rel='service.edit']"/>
|
||||
<xsl:template match="atom:link[@rel='service.post']"/>
|
||||
<xsl:template match="atom:link[@rel='service.feed']"/>
|
||||
|
||||
<!-- Feedburner detritus -->
|
||||
<xsl:template match="xhtml:div[@class='feedflare']"/>
|
||||
|
||||
<!-- Strip site meter -->
|
||||
<xsl:template match="xhtml:div[comment()[. = ' Site Meter ']]"/>
|
||||
|
||||
<!-- add Google/LiveJournal-esque and Bloglines noindex directive -->
|
||||
<xsl:template match="atom:feed">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="indexing:index">no</xsl:attribute>
|
||||
<xsl:apply-templates select="@*"/>
|
||||
<access:restriction relationship="deny"/>
|
||||
<xsl:apply-templates select="node()"/>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- popular customization: add planet name to each entry title
|
||||
<xsl:template match="atom:entry/atom:title">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*"/>
|
||||
<xsl:value-of select="../atom:source/planet:name"/>
|
||||
<xsl:text>: </xsl:text>
|
||||
<xsl:apply-templates select="node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
-->
|
||||
|
||||
<!-- indent atom elements -->
|
||||
<xsl:template match="atom:*">
|
||||
<!-- double space before atom:entries -->
|
||||
<xsl:if test="self::atom:entry">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
|
||||
<!-- indent start tag -->
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:for-each select="ancestor::*">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:for-each>
|
||||
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()"/>
|
||||
|
||||
<!-- indent end tag if there are element children -->
|
||||
<xsl:if test="*">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:for-each select="ancestor::*">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:for-each>
|
||||
</xsl:if>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- pass through everything else -->
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
39
common/foafroll.xml.xslt
Normal file
@ -0,0 +1,39 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
|
||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||
xmlns:rss="http://purl.org/rss/1.0/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:planet="http://planet.intertwingly.net/"
|
||||
exclude-result-prefixes="atom planet">
|
||||
|
||||
<xsl:output indent="yes" method="xml"/>
|
||||
|
||||
<xsl:template match="atom:feed">
|
||||
<rdf:RDF>
|
||||
<foaf:Group>
|
||||
<foaf:name><xsl:value-of select="atom:author/atom:name"/></foaf:name>
|
||||
<foaf:homepage><xsl:value-of select="atom:author/atom:uri"/></foaf:homepage>
|
||||
|
||||
<xsl:apply-templates select="planet:source"/>
|
||||
</foaf:Group>
|
||||
</rdf:RDF>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="planet:source">
|
||||
<foaf:member>
|
||||
<foaf:Agent>
|
||||
<foaf:name><xsl:value-of select="planet:name"/></foaf:name>
|
||||
<foaf:weblog>
|
||||
<foaf:Document rdf:about="{atom:link[@rel='alternate']/@href}">
|
||||
<dc:title><xsl:value-of select="atom:title"/></dc:title>
|
||||
<rdfs:seeAlso>
|
||||
<rss:channel rdf:about="{atom:link[@rel='self']/@href}" />
|
||||
</rdfs:seeAlso>
|
||||
</foaf:Document>
|
||||
</foaf:weblog>
|
||||
</foaf:Agent>
|
||||
</foaf:member>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
BIN
common/images/feed-icon-10x10.png
Normal file
After Width: | Height: | Size: 469 B |
BIN
common/images/foaf.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
common/images/logo.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
common/images/opml.png
Normal file
After Width: | Height: | Size: 804 B |
BIN
common/images/planet.png
Normal file
After Width: | Height: | Size: 426 B |
BIN
common/images/tcosm11.gif
Normal file
After Width: | Height: | Size: 203 B |
BIN
common/images/venus.ico
Normal file
After Width: | Height: | Size: 894 B |
BIN
common/images/venus.png
Normal file
After Width: | Height: | Size: 570 B |
40
common/opml.xml.xslt
Normal file
@ -0,0 +1,40 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:planet="http://planet.intertwingly.net/"
|
||||
exclude-result-prefixes="atom planet">
|
||||
|
||||
<xsl:output indent="yes" method="xml"/>
|
||||
|
||||
<xsl:template name="rfc822" xmlns:date="http://exslt.org/dates-and-times">
|
||||
<xsl:param name="date"/>
|
||||
<!-- http://www.trachtenberg.com/blog/2005/03/03/xslt-cookbook-generating-an-rfc-822-date/ -->
|
||||
<xsl:value-of select="concat(date:day-abbreviation($date), ', ',
|
||||
format-number(date:day-in-month($date), '00'), ' ',
|
||||
date:month-abbreviation($date), ' ', date:year($date), ' ',
|
||||
format-number(date:hour-in-day($date), '00'), ':',
|
||||
format-number(date:minute-in-hour($date), '00'), ':',
|
||||
format-number(date:second-in-minute($date), '00'), ' GMT')"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="atom:feed">
|
||||
<opml version="1.1">
|
||||
<head>
|
||||
<title><xsl:value-of select="atom:title"/></title>
|
||||
<dateModified>
|
||||
<xsl:call-template name="rfc822">
|
||||
<xsl:with-param name="date" select="atom:updated"/>
|
||||
</xsl:call-template>
|
||||
</dateModified>
|
||||
<ownerName><xsl:value-of select="atom:author/atom:name"/></ownerName>
|
||||
<ownerEmail><xsl:value-of select="atom:author/atom:email"/></ownerEmail>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<xsl:for-each select="planet:source">
|
||||
<outline type="rss" text="{planet:name}" title="{atom:title}"
|
||||
xmlUrl="{atom:link[@rel='self']/@href}"/>
|
||||
</xsl:for-each>
|
||||
</body>
|
||||
</opml>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
37
common/rss10.xml.tmpl
Normal file
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0"?>
|
||||
<rdf:RDF
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
||||
xmlns="http://purl.org/rss/1.0/"
|
||||
>
|
||||
<channel rdf:about="<TMPL_VAR link ESCAPE="HTML">">
|
||||
<title><TMPL_VAR name ESCAPE="HTML"></title>
|
||||
<link><TMPL_VAR link ESCAPE="HTML"></link>
|
||||
<description><TMPL_VAR name ESCAPE="HTML"> - <TMPL_VAR link ESCAPE="HTML"></description>
|
||||
|
||||
<items>
|
||||
<rdf:Seq>
|
||||
<TMPL_LOOP Items>
|
||||
<rdf:li rdf:resource="<TMPL_VAR id ESCAPE="HTML">" />
|
||||
</TMPL_LOOP>
|
||||
</rdf:Seq>
|
||||
</items>
|
||||
</channel>
|
||||
|
||||
<TMPL_LOOP Items>
|
||||
<item rdf:about="<TMPL_VAR id ESCAPE="HTML">">
|
||||
<title><TMPL_VAR channel_name ESCAPE="HTML"><TMPL_IF title>: <TMPL_VAR title_plain ESCAPE="HTML"></TMPL_IF></title>
|
||||
<link><TMPL_VAR link ESCAPE="HTML"></link>
|
||||
<TMPL_IF content>
|
||||
<content:encoded><TMPL_VAR content ESCAPE="HTML"></content:encoded>
|
||||
</TMPL_IF>
|
||||
<dc:date><TMPL_VAR date_iso></dc:date>
|
||||
<TMPL_IF author_name>
|
||||
<dc:creator><TMPL_VAR author_name></dc:creator>
|
||||
</TMPL_IF>
|
||||
</item>
|
||||
</TMPL_LOOP>
|
||||
|
||||
</rdf:RDF>
|
BIN
common/rss10.xml.tmplc
Normal file
33
common/rss20.xml.tmpl
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0"?>
|
||||
<rss version="2.0">
|
||||
|
||||
<channel>
|
||||
<title><TMPL_VAR name></title>
|
||||
<link><TMPL_VAR link ESCAPE="HTML"></link>
|
||||
<language>en</language>
|
||||
<description><TMPL_VAR name ESCAPE="HTML"> - <TMPL_VAR link ESCAPE="HTML"></description>
|
||||
|
||||
<TMPL_LOOP Items>
|
||||
<item>
|
||||
<title><TMPL_VAR channel_name ESCAPE="HTML"><TMPL_IF title>: <TMPL_VAR title_plain ESCAPE="HTML"></TMPL_IF></title>
|
||||
<guid isPermaLink="<TMPL_VAR guid_isPermaLink>"><TMPL_VAR id ESCAPE="HTML"></guid>
|
||||
<link><TMPL_VAR link ESCAPE="HTML"></link>
|
||||
<TMPL_IF content>
|
||||
<description><TMPL_VAR content ESCAPE="HTML"></description>
|
||||
</TMPL_IF>
|
||||
<pubDate><TMPL_VAR date_822></pubDate>
|
||||
<TMPL_IF author_email>
|
||||
<TMPL_IF author_name>
|
||||
<author><TMPL_VAR author_email> (<TMPL_VAR author_name>)</author>
|
||||
<TMPL_ELSE>
|
||||
<author><TMPL_VAR author_email></author>
|
||||
</TMPL_IF>
|
||||
</TMPL_IF>
|
||||
<TMPL_IF enclosure_href>
|
||||
<enclosure url="<TMPL_VAR enclosure_href ESCAPE="HTML">" length="<TMPL_VAR enclosure_length>" type="<TMPL_VAR enclosure_type>"/>
|
||||
</TMPL_IF>
|
||||
</item>
|
||||
</TMPL_LOOP>
|
||||
|
||||
</channel>
|
||||
</rss>
|
BIN
common/rss20.xml.tmplc
Normal file
146
common/validate.html.xslt
Normal file
@ -0,0 +1,146 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
xmlns:planet="http://planet.intertwingly.net/"
|
||||
xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<xsl:template match="atom:feed">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<!-- head -->
|
||||
<xsl:text> </xsl:text>
|
||||
<head>
|
||||
<title><xsl:value-of select="atom:title"/></title>
|
||||
<meta name="robots" content="noindex,nofollow" />
|
||||
<meta name="generator" content="{atom:generator}" />
|
||||
<link rel="shortcut icon" href="/favicon.ico" />
|
||||
<style type="text/css">
|
||||
img{border:0}
|
||||
a{text-decoration:none}
|
||||
a:hover{text-decoration:underline}
|
||||
.message{border-bottom:1px dashed red} a.message:hover{cursor: help;text-decoration: none}
|
||||
dl{margin:0}
|
||||
dt{float:left;width:9em}
|
||||
dt:after{content:':'}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<!-- body -->
|
||||
<xsl:text> </xsl:text>
|
||||
<body>
|
||||
<table border="1" cellpadding="3" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Name</th>
|
||||
<th>Format</th>
|
||||
<xsl:if test="//planet:ignore_in_feed | //planet:filters |
|
||||
//planet:xml_base | //planet:*[contains(local-name(),'_type')]">
|
||||
<th>Notes</th>
|
||||
</xsl:if>
|
||||
</tr>
|
||||
</thead>
|
||||
<xsl:apply-templates select="planet:source">
|
||||
<xsl:sort select="planet:name"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:text> </xsl:text>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="planet:source">
|
||||
<xsl:variable name="validome_format">
|
||||
<xsl:choose>
|
||||
<xsl:when test="planet:format = 'rss090'">rss_0_90</xsl:when>
|
||||
<xsl:when test="planet:format = 'rss091n'">rss_0_91</xsl:when>
|
||||
<xsl:when test="planet:format = 'rss091u'">rss_0_91</xsl:when>
|
||||
<xsl:when test="planet:format = 'rss10'">rss_1_0</xsl:when>
|
||||
<xsl:when test="planet:format = 'rss092'">rss_0_90</xsl:when>
|
||||
<xsl:when test="planet:format = 'rss093'"></xsl:when>
|
||||
<xsl:when test="planet:format = 'rss094'">rss_0_90</xsl:when>
|
||||
<xsl:when test="planet:format = 'rss20'">rss_2_0</xsl:when>
|
||||
<xsl:when test="planet:format = 'rss'">rss_2_0</xsl:when>
|
||||
<xsl:when test="planet:format = 'atom01'"></xsl:when>
|
||||
<xsl:when test="planet:format = 'atom02'"></xsl:when>
|
||||
<xsl:when test="planet:format = 'atom03'">atom_0_3</xsl:when>
|
||||
<xsl:when test="planet:format = 'atom10'">atom_1_0</xsl:when>
|
||||
<xsl:when test="planet:format = 'atom'">atom_1_0</xsl:when>
|
||||
<xsl:when test="planet:format = 'cdf'"></xsl:when>
|
||||
<xsl:when test="planet:format = 'hotrss'"></xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:text> </xsl:text>
|
||||
<tr>
|
||||
<xsl:if test="planet:bozo='true'">
|
||||
<xsl:attribute name="style">background-color:#FCC</xsl:attribute>
|
||||
</xsl:if>
|
||||
<td>
|
||||
<a title="feed validator">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:text>http://feedvalidator.org/check?url=</xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="planet:http_location">
|
||||
<xsl:value-of select="planet:http_location"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="atom:link[@rel='self']/@href">
|
||||
<xsl:value-of select="atom:link[@rel='self']/@href"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<img src="http://feedvalidator.org/favicon.ico" hspace='2' vspace='1'/>
|
||||
</a>
|
||||
<a title="validome">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:text>http://www.validome.org/rss-atom/validate?</xsl:text>
|
||||
<xsl:text>viewSourceCode=1&version=</xsl:text>
|
||||
<xsl:value-of select="$validome_format"/>
|
||||
<xsl:text>&url=</xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="planet:http_location">
|
||||
<xsl:value-of select="planet:http_location"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="atom:link[@rel='self']/@href">
|
||||
<xsl:value-of select="atom:link[@rel='self']/@href"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<img src="http://validome.org/favicon.ico" hspace='2' vspace='1'/>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{atom:link[@rel='alternate']/@href}">
|
||||
<xsl:choose>
|
||||
<xsl:when test="planet:message">
|
||||
<xsl:attribute name="class">message</xsl:attribute>
|
||||
<xsl:attribute name="title">
|
||||
<xsl:value-of select="planet:message"/>
|
||||
</xsl:attribute>
|
||||
</xsl:when>
|
||||
<xsl:when test="atom:title">
|
||||
<xsl:attribute name="title">
|
||||
<xsl:value-of select="atom:title"/>
|
||||
</xsl:attribute>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:value-of select="planet:name"/>
|
||||
</a>
|
||||
</td>
|
||||
<td><xsl:value-of select="planet:format"/></td>
|
||||
<xsl:if test="planet:ignore_in_feed | planet:filters | planet:xml_base |
|
||||
planet:*[contains(local-name(),'_type')]">
|
||||
<td>
|
||||
<dl>
|
||||
<xsl:for-each select="planet:ignore_in_feed | planet:filters |
|
||||
planet:xml_base | planet:*[contains(local-name(),'_type')]">
|
||||
<xsl:sort select="local-name()"/>
|
||||
<dt><xsl:value-of select="local-name()"/></dt>
|
||||
<dd><xsl:value-of select="."/></dd>
|
||||
</xsl:for-each>
|
||||
</dl>
|
||||
</td>
|
||||
</xsl:if>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
BIN
images/mordred.png
Normal file
After Width: | Height: | Size: 14 KiB |
19
planet.ini
@ -13,15 +13,30 @@ name = Planet OpenStack
|
||||
link = http://planet.openstack.org/
|
||||
owner_name = Monty Taylor
|
||||
owner_email = mordred@inaugust.com
|
||||
output_theme = theme
|
||||
output_theme = classic_fancy
|
||||
cache_directory = cache
|
||||
output_dir = /srv/planet
|
||||
feed_timeout = 20
|
||||
items_per_page = 60
|
||||
log_level = DEBUG
|
||||
|
||||
# additional files to copy (note the wildcards!)
|
||||
bill_of_materials:
|
||||
images/#{face}
|
||||
|
||||
# Options placed in the [DEFAULT] section provide defaults for the feed
|
||||
# sections. Placing a default here means you only need to override the
|
||||
# special cases later.
|
||||
[DEFAULT]
|
||||
# Hackergotchi default size.
|
||||
# If we want to put a face alongside a feed, and it's this size, we
|
||||
# can omit these variables.
|
||||
facewidth = 65
|
||||
faceheight = 85
|
||||
|
||||
# Subscription configuration
|
||||
|
||||
[http://inaugust.com/feed/rss2_0?tag=ubuntu]
|
||||
name = Monty Taylor
|
||||
|
||||
nick = mordred
|
||||
face = mordred.png
|
||||
|