Commit e7f6dc0a authored by myk%mozilla.org's avatar myk%mozilla.org

Fix for bug 82878: Generate RSS 1.0 version of bug lists.

Patch by Jason Remillard. r=myk a=myk
parent 5d6b815d
......@@ -126,10 +126,11 @@ use constant LOGOUT_KEEP_CURRENT => 2;
use constant contenttypes =>
{
"html" => "text/html" ,
"html"=> "text/html" ,
"rdf" => "application/rdf+xml" ,
"rss" => "application/rss+xml" ,
"xml" => "application/xml" ,
"js" => "application/x-javascript" ,
"js" => "application/x-javascript" ,
"csv" => "text/plain" ,
"png" => "image/png" ,
"ics" => "text/calendar" ,
......
......@@ -461,7 +461,22 @@
get the buglist as comma-separated values, for import into e.g.
a spreadsheet.</member>
<member>
<emphasis>RSS</emphasis>
get the buglist as a RSS 1.0 feed. It is used by setting up your
buglist query and then copying this links url into your RSS reader. If
you are using firefox, you can also save the buglist as a live
bookmark. If you would like to limit the number of RSS items, add
a limit=n url parameter.</memeber>
<member>
<emphasis>iCalendar</emphasis>
Get the buglist as an iCalendar file. Each bug is represented as a
to-do item in the imported calendar.</member>
<member>
<emphasis>Change Columns:</emphasis>
......@@ -494,6 +509,17 @@
</member>
</simplelist>
</para>
<para>
If you would like to access the bug list from another program
it is often useful to have the list returned in something other
than HTML. By adding the ctype=type parameter into the bug list URL
you can specify several alternate formats. The supported formats
are: Comma Separated Values (ctype=csv), iCalendar (ctype=ics),
RDF Site Summary (RSS) 1.0 (ctype=rss), ECMAScript, also known
as JavaScript (ctype=js), and finally Resource Description Framework
RDF/XML (ctype=rdf).
</para>
</section>
<section id="bugreports">
......
......@@ -35,6 +35,7 @@
# style: string. CSS style.
# style_urls: list. List of URLs to CSS style sheets.
# message: string. A message to display to the user. May contain HTML.
# rsslink: rss link url, May contain HTML
#%]
[% IF message %]
......@@ -99,6 +100,13 @@
[% END %]
[% END %]
[%# this puts the live bookmark up on firefox for the RSS feed %]
[% IF rsslink %]
<link rel="alternate"
type="application/rss+xml" title="RSS 1.0"
href="[% rsslink FILTER html %]" />
[% END %]
</head>
[%# Migration note: contents of the old Param 'bodyhtml' go in the body tag,
......
......@@ -48,6 +48,7 @@
[% PROCESS global/header.html.tmpl
title = title
style = style
rsslink = "buglist.cgi?$urlquerypart&ctype=rss"
%]
<div align="center">
......@@ -150,6 +151,8 @@
<a href="buglist.cgi?
[% urlquerypart FILTER html %]&amp;ctype=csv">CSV</a> |
<a href="buglist.cgi?
[% urlquerypart FILTER html %]&amp;ctype=rss">RSS</a> |
<a href="buglist.cgi?
[% urlquerypart FILTER html %]&amp;ctype=ics">iCalendar</a> |
<a href="colchange.cgi?
[% urlquerypart FILTER html %]">Change&nbsp;Columns</a> |
......
......@@ -18,7 +18,7 @@
#
# Contributor(s): William Jon McCann <mccann@jhu.edu>
#%]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS global/variables.none.tmpl %][% USE date %]
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
[%+ PROCESS ics_prodid +%]
......@@ -32,7 +32,7 @@ BEGIN:VTODO
[%+ PROCESS ics_status bug_status = bug.bug_status +%]
[%+ PROCESS ics_dtstamp +%]
[% IF bug.changeddate %]
[%+ bug.changeddate FILTER ics('LAST-MODIFIED') +%]
[%+ date.format(bug.changedtime,"%Y%m%dT%H%M%SZ") FILTER ics('LAST-MODIFIED') +%]
[% END %]
[% IF bug.percentage_complete %]
[%+ bug.percentage_complete FILTER format('%d') FILTER ics('PERCENT-COMPLETE') +%]
......@@ -66,11 +66,11 @@ END:VCALENDAR
[% END %]
[% BLOCK ics_dtstart %]
[% bug.opendate FILTER ics('DTSTART') %]
[% date.format(bug.opentime,"%Y%m%dT%H%M%SZ") FILTER ics('DTSTART') %]
[% END %]
[% BLOCK ics_dtstamp %]
[% currenttime FILTER ics('DTSTAMP') %]
[% date.format(date.now,"%Y%m%dT%H%M%SZ") FILTER ics('DTSTAMP') %]
[% END %]
[% BLOCK ics_status %]
......
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Walter Hoehn <wassa@columbia.edu>
# John Belmonte <john@neggie.net>
# Jason Remillard <jremillardshop@letterboxes.org>
#
# This is a template for generating an RSS 1.0 representation of a buglist.
#%]
[% PROCESS global/variables.none.tmpl %]
[% USE date %]
[% DEFAULT title = "$terms.Bugzilla $terms.Bugs" %]
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:sy="http://pur1.org/rss/1.0/modules/syndication/"
xmlns:dc="http://pur1.org/rss/dc/elements/1.1/"
xmlns="http://purl.org/rss/1.0/">
<channel rdf:about="[% Param('urlbase') %]buglist.cgi?
[%- urlquerypart.replace('ctype=rss[&]?','') FILTER xml %]" >
<title>[% title FILTER xml %]</title>
<description>[% "$terms.Bugzilla $terms.bug list" FILTER xml %]</description>
<link>[% Param('urlbase') %]buglist.cgi?
[%- urlquerypart.replace('ctype=rss[&]?','') FILTER xml -%]
</link>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>2</sy:updateFrequency>
<items>
<rdf:Seq>
[% FOREACH bug = bugs %]
<rdf:li rdf:resource="[% Param('urlbase') FILTER xml %]show_bug.cgi?id=[% bug.bug_id FILTER xml %]" />
[% END %]
</rdf:Seq>
</items>
</channel>
[% FOREACH bug = bugs %]
<item rdf:about="[% Param('urlbase') FILTER xml %]show_bug.cgi?id=[% bug.bug_id FILTER xml %]">
<title>[% bug.short_desc FILTER xml %]</title>
<link>[% Param('urlbase') FILTER xml %]show_bug.cgi?id=[% bug.bug_id FILTER xml %]</link>
<dc:creator>[% bug.reporter_realname FILTER xml %]</dc:creator>
<dc:date>[% date.format( format=>"%Y-%m-%dT%H:%MZ",time=>bug.opentime) FILTER xml %]</dc:date>
<description>
[%# Filter out the entire block, so that we don't need to escape the html code out %]
[% FILTER xml %]
<table>
<tr>
<th>Field</th><th>Value</th>
</tr><tr>
<td>[% columns.opendate.title FILTER none %]</td>
<td>[% bug.opendate FILTER none %]</td>
</tr><tr>
<td>[% columns.assigned_to_realname.title FILTER none %]</td>
<td>[% bug.assigned_to_realname FILTER none %]</td>
</tr><tr>
<td>[% columns.priority.title FILTER none %]</td>
<td>[% bug.priority FILTER none %]</td>
</tr><tr>
<td>[% columns.bug_severity.title FILTER none %] </td>
<td>[% bug.bug_severity FILTER none %]</td>
</tr><tr>
<td>[% columns.bug_status.title FILTER none %]</td>
<td>[% bug.bug_status FILTER none %]</td>
</tr><tr>
<td>[% columns.changeddate.title FILTER none %]</td>
<td>[% bug.changeddate FILTER none -%]</td>
</tr>
</table>
[% END %]
</description>
</item>
[% END %]
</rdf:RDF>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment