]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Fix for bug 82878: Generate RSS 1.0 version of bug lists.
authormyk%mozilla.org <>
Wed, 16 Mar 2005 01:16:15 +0000 (01:16 +0000)
committermyk%mozilla.org <>
Wed, 16 Mar 2005 01:16:15 +0000 (01:16 +0000)
Patch by Jason Remillard.
r=myk
a=myk

Bugzilla/Constants.pm
docs/xml/using.xml
template/en/default/global/header.html.tmpl
template/en/default/list/list.html.tmpl
template/en/default/list/list.ics.tmpl
template/en/default/list/list.rss.tmpl [new file with mode: 0644]

index d59ae0f84f208e8fd407b0d6e9c827ac7d13a190..45897a3329634c1b6a5acca1b1a9861376e072de 100644 (file)
@@ -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" ,
index 43adc3bfc79953456984f32adcad3b2025a58a67..de5d9d26d6624edd3970071de69f044b16d0d00b 100644 (file)
 
       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>
 
       </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">
index 3c7c6f17034012ac172d65f0598ddfd41a4634c4..90c3659fe828059f117e806bab61ec1c1e6fe4de 100644 (file)
@@ -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 %]
       [% 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,
index e0a5a2b9367e22f8fa1ad5c76d89c2974d2dc62b..ce42ed03a6d306906a981aff744c1c191aa8f837 100644 (file)
@@ -48,6 +48,7 @@
 [% PROCESS global/header.html.tmpl
   title = title
   style = style
+  rsslink = "buglist.cgi?$urlquerypart&ctype=rss" 
 %]
 
 <div align="center">
         <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> |
index 27dc1b401ed9a5b7fb980b5197fceb365095b9c7..6246cf7551defac6eb37a162b9c0dfcebf1eddd8 100644 (file)
@@ -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 (file)
index 0000000..53352f2
--- /dev/null
@@ -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>