summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgerv%gerv.net <>2001-09-11 06:26:05 +0200
committergerv%gerv.net <>2001-09-11 06:26:05 +0200
commita0951fc965aafba2c182d761bc0636ddbd324cf2 (patch)
treed69a8c01e755de2a8f6c9e7e8cf1551f0b5ee3aa
parentc58ca9fbad118fd898bdd6aedee9fbf82abd2fb8 (diff)
downloadbugzilla-a0951fc965aafba2c182d761bc0636ddbd324cf2.tar.gz
bugzilla-a0951fc965aafba2c182d761bc0636ddbd324cf2.tar.xz
Make Bugzilla support <link> tag for buglists. Bug 87818. r=jake, caillon.
-rw-r--r--CGI.pl43
-rwxr-xr-xbuglist.cgi2
-rwxr-xr-xshow_bug.cgi2
3 files changed, 45 insertions, 2 deletions
diff --git a/CGI.pl b/CGI.pl
index 3c0795d44..7fb0298d8 100644
--- a/CGI.pl
+++ b/CGI.pl
@@ -22,6 +22,7 @@
# Joe Robins <jmrobins@tgix.com>
# Dave Miller <justdave@syndicomm.com>
# Christopher Aillon <christopher@aillon.com>
+# Gervase Markham <gerv@gerv.net>
# Contains some global routines used throughout the CGI scripts of Bugzilla.
@@ -408,6 +409,48 @@ sub navigation_header {
print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF=enter_bug.cgi>Enter new bug</A>\n"
}
+# Adds <link> elements for bug lists. These can be inserted into the header by
+# (ab)using the "jscript" parameter to PutHeader, which inserts an arbitrary
+# string into the header. This function is modelled on the one above.
+sub navigation_links($) {
+ my ($buglist) = @_;
+
+ my $retval = "";
+
+ # We need to be able to pass in a buglist because when you sort on a column
+ # the bugs in the cookie you are given will still be in the old order.
+ # If a buglist isn't passed, we just use the cookie.
+ $buglist ||= $::COOKIE{"BUGLIST"};
+
+ if (defined $buglist && $buglist ne "") {
+ my @bugs = split(/:/, $buglist);
+
+ if (defined $::FORM{'id'}) {
+ # We are on an individual bug
+ my $cur = lsearch(\@bugs, $::FORM{"id"});
+
+ if ($cur > 0) {
+ $retval .= "<link rel=\"First\" href=\"show_bug.cgi?id=$bugs[0]\" />\n";
+ $retval .= "<link rel=\"Prev\" href=\"show_bug.cgi?id=$bugs[$cur - 1]\" />\n";
+ }
+ if ($cur < $#bugs) {
+ $retval .= "<link rel=\"Next\" href=\"show_bug.cgi?id=$bugs[$cur + 1]\" />\n";
+ $retval .= "<link rel=\"Last\" href=\"show_bug.cgi?id=$bugs[$#bugs]\" />\n";
+ }
+
+ $retval .= "<link rel=\"Up\" href=\"buglist.cgi?regetlastlist=1\" />\n";
+ $retval .= "<link rel=\"Contents\" href=\"buglist.cgi?regetlastlist=1\" />\n";
+ } else {
+ # We are on a bug list
+ $retval .= "<link rel=\"First\" href=\"show_bug.cgi?id=$bugs[0]\" />\n";
+ $retval .= "<link rel=\"Next\" href=\"show_bug.cgi?id=$bugs[0]\" />\n";
+ $retval .= "<link rel=\"Last\" href=\"show_bug.cgi?id=$bugs[$#bugs]\" />\n";
+ }
+ }
+
+ return $retval;
+}
+
sub make_checkboxes {
my ($src,$default,$isregexp,$name) = (@_);
my $last = "";
diff --git a/buglist.cgi b/buglist.cgi
index e08df3952..f6143abaa 100755
--- a/buglist.cgi
+++ b/buglist.cgi
@@ -1313,7 +1313,7 @@ if (length($buglist) < 4000) {
print "Set-Cookie: BUGLIST=\n\n";
$toolong = 1;
}
-PutHeader($::querytitle);
+PutHeader($::querytitle, undef, "", "", navigation_links($buglist));
print "
diff --git a/show_bug.cgi b/show_bug.cgi
index eced9cfbe..c5b569a45 100755
--- a/show_bug.cgi
+++ b/show_bug.cgi
@@ -68,7 +68,7 @@ GetVersionTable();
SendSQL("SELECT short_desc FROM bugs WHERE bug_id = $::FORM{'id'}");
my ($summary) = FetchSQLData();
$summary = html_quote($summary);
-PutHeader("Bug $::FORM{'id'} - $summary", "Bugzilla Bug $::FORM{'id'}", $summary );
+PutHeader("Bug $::FORM{'id'} - $summary", "Bugzilla Bug $::FORM{'id'}", $summary, "", navigation_links() );
navigation_header();