зеркало из https://github.com/mozilla/pjs.git
Fix for bug 82878: Generate RSS 1.0 version of bug lists.
Patch by Jason Remillard. r=myk a=myk
This commit is contained in:
Родитель
b62a161c65
Коммит
fe67724925
|
@ -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 %]&ctype=csv">CSV</a> |
|
||||
<a href="buglist.cgi?
|
||||
[% urlquerypart FILTER html %]&ctype=rss">RSS</a> |
|
||||
<a href="buglist.cgi?
|
||||
[% urlquerypart FILTER html %]&ctype=ics">iCalendar</a> |
|
||||
<a href="colchange.cgi?
|
||||
[% urlquerypart FILTER html %]">Change 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 %]
|
||||
|
|
|
@ -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>
|
Загрузка…
Ссылка в новой задаче