summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormyk%mozilla.org <>2005-03-16 02:16:15 +0100
committermyk%mozilla.org <>2005-03-16 02:16:15 +0100
commite7f6dc0a5754ae6607bebfcedc1130cd12e43f5d (patch)
tree2a5a4726dcdede65098c2c692d8308e21c1521df
parent5d6b815d1ce8eece29e22e09781f890375f3c403 (diff)
downloadbugzilla-e7f6dc0a5754ae6607bebfcedc1130cd12e43f5d.tar.gz
bugzilla-e7f6dc0a5754ae6607bebfcedc1130cd12e43f5d.tar.xz
Fix for bug 82878: Generate RSS 1.0 version of bug lists.
Patch by Jason Remillard. r=myk a=myk
-rw-r--r--Bugzilla/Constants.pm5
-rw-r--r--docs/xml/using.xml28
-rw-r--r--template/en/default/global/header.html.tmpl8
-rw-r--r--template/en/default/list/list.html.tmpl3
-rw-r--r--template/en/default/list/list.ics.tmpl8
-rw-r--r--template/en/default/list/list.rss.tmpl95
6 files changed, 140 insertions, 7 deletions
diff --git a/Bugzilla/Constants.pm b/Bugzilla/Constants.pm
index d59ae0f84..45897a332 100644
--- a/Bugzilla/Constants.pm
+++ b/Bugzilla/Constants.pm
@@ -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" ,
diff --git a/docs/xml/using.xml b/docs/xml/using.xml
index 43adc3bfc..de5d9d26d 100644
--- a/docs/xml/using.xml
+++ b/docs/xml/using.xml
@@ -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">
diff --git a/template/en/default/global/header.html.tmpl b/template/en/default/global/header.html.tmpl
index 3c7c6f170..90c3659fe 100644
--- a/template/en/default/global/header.html.tmpl
+++ b/template/en/default/global/header.html.tmpl
@@ -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,
diff --git a/template/en/default/list/list.html.tmpl b/template/en/default/list/list.html.tmpl
index e0a5a2b93..ce42ed03a 100644
--- a/template/en/default/list/list.html.tmpl
+++ b/template/en/default/list/list.html.tmpl
@@ -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> |
diff --git a/template/en/default/list/list.ics.tmpl b/template/en/default/list/list.ics.tmpl
index 27dc1b401..6246cf755 100644
--- a/template/en/default/list/list.ics.tmpl
+++ b/template/en/default/list/list.ics.tmpl
@@ -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 %]
diff --git a/template/en/default/list/list.rss.tmpl b/template/en/default/list/list.rss.tmpl
new file mode 100644
index 000000000..53352f225
--- /dev/null
+++ b/template/en/default/list/list.rss.tmpl
@@ -0,0 +1,95 @@
+[%# 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>