summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlpsolit%gmail.com <>2008-02-06 20:34:49 +0100
committerlpsolit%gmail.com <>2008-02-06 20:34:49 +0100
commit8474e73b2aed9342d7ffe12aaf40adf085fdc606 (patch)
treec9575f2e53ed14d5725fdb050be4d6da3e44fc68
parent90bf2307e3f5f19171e5f60bfe34d7c90ad1bf10 (diff)
downloadbugzilla-8474e73b2aed9342d7ffe12aaf40adf085fdc606.tar.gz
bugzilla-8474e73b2aed9342d7ffe12aaf40adf085fdc606.tar.xz
Bug 359943: Prev/Next <link rel>s not working on process_bug.cgi page - Patch by Frédéric Buclin <LpSolit@gmail.com> r=wurblzap a=LpSolit
-rwxr-xr-xprocess_bug.cgi42
-rw-r--r--template/en/default/bug/process/header.html.tmpl5
-rw-r--r--template/en/default/bug/show.html.tmpl4
-rw-r--r--template/en/default/global/site-navigation.html.tmpl23
4 files changed, 42 insertions, 32 deletions
diff --git a/process_bug.cgi b/process_bug.cgi
index 1cc4e542d..4ea6c1f7f 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -203,11 +203,35 @@ $vars->{'title_tag'} = "bug_processed";
# Set up the vars for navigational <link> elements
my @bug_list;
-if ($cgi->cookie("BUGLIST") && defined $cgi->param('id')) {
+if ($cgi->cookie("BUGLIST")) {
@bug_list = split(/:/, $cgi->cookie("BUGLIST"));
$vars->{'bug_list'} = \@bug_list;
}
+my ($action, $next_bug);
+if (defined $cgi->param('id')) {
+ $action = Bugzilla->user->settings->{'post_bug_submit_action'}->{'value'};
+
+ if ($action eq 'next_bug') {
+ my $cur = lsearch(\@bug_list, $cgi->param('id'));
+ if ($cur >= 0 && $cur < $#bug_list) {
+ $next_bug = $bug_list[$cur + 1];
+ # No need to check whether the user can see the bug or not.
+ # All we want is its ID. An error will be thrown later
+ # if the user cannot see it.
+ $vars->{'bug'} = {bug_id => $next_bug};
+ }
+ }
+ # Include both action = 'same_bug' and 'nothing'.
+ else {
+ $vars->{'bug'} = {bug_id => $cgi->param('id')};
+ }
+}
+else {
+ # param('id') is not defined when changing multiple bugs at once.
+ $action = 'nothing';
+}
+
# For each bug, we have to check if the user can edit the bug the product
# is currently in, before we allow them to change anything.
foreach my $bug (@bug_objects) {
@@ -615,23 +639,10 @@ eval {
$vars->{'patchviewerinstalled'} = 1;
};
-my $action;
-if (defined $cgi->param('id')) {
- $action = Bugzilla->user->settings->{'post_bug_submit_action'}->{'value'};
-} else {
- # param('id') is not defined when changing multiple bugs
- $action = 'nothing';
-}
-
if (Bugzilla->usage_mode == USAGE_MODE_EMAIL) {
# Do nothing.
}
elsif ($action eq 'next_bug') {
- my $next_bug;
- my $cur = lsearch(\@bug_list, $cgi->param("id"));
- if ($cur >= 0 && $cur < $#bug_list) {
- $next_bug = $bug_list[$cur + 1];
- }
if ($next_bug) {
if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) {
my $bug = new Bugzilla::Bug($next_bug);
@@ -664,9 +675,6 @@ elsif ($action eq 'next_bug') {
# End the response page.
unless (Bugzilla->usage_mode == USAGE_MODE_EMAIL) {
- # The user pref is 'Do nothing', so all we need is the current bug ID.
- $vars->{'bug'} = {bug_id => scalar $cgi->param('id')};
-
$template->process("bug/navigate.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("global/footer.html.tmpl", $vars)
diff --git a/template/en/default/bug/process/header.html.tmpl b/template/en/default/bug/process/header.html.tmpl
index f31a9f8e4..5472aa7dd 100644
--- a/template/en/default/bug/process/header.html.tmpl
+++ b/template/en/default/bug/process/header.html.tmpl
@@ -44,5 +44,6 @@
[% PROCESS global/header.html.tmpl
javascript_urls = [ "js/util.js", "js/keyword-chooser.js", "js/field.js",
"js/yui/yahoo-dom-event.js", "js/yui/calendar.js" ]
- style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ]
- %]
+ style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ]
+ doc_section = "bug_page.html"
+%]
diff --git a/template/en/default/bug/show.html.tmpl b/template/en/default/bug/show.html.tmpl
index a6f9e8b97..78d166537 100644
--- a/template/en/default/bug/show.html.tmpl
+++ b/template/en/default/bug/show.html.tmpl
@@ -41,8 +41,8 @@
]
javascript_urls = [ "js/util.js", "js/keyword-chooser.js", "js/field.js",
"js/yui/yahoo-dom-event.js", "js/yui/calendar.js" ]
- style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ]
-doc_section = "bug_page.html"
+ style_urls = [ "skins/standard/yui/calendar.css", "skins/standard/show_bug.css" ]
+ doc_section = "bug_page.html"
%]
[% END %]
diff --git a/template/en/default/global/site-navigation.html.tmpl b/template/en/default/global/site-navigation.html.tmpl
index d533627a3..2acbcf44d 100644
--- a/template/en/default/global/site-navigation.html.tmpl
+++ b/template/en/default/global/site-navigation.html.tmpl
@@ -33,26 +33,27 @@
<link rel="Top" href="[% urlbase FILTER html %]">
[%# *** Bug List Navigation *** %]
- [% IF bug && bug_list && bug_list.size > 0 %]
+ [% IF bug_list && bug_list.size > 0 %]
<link rel="Up" href="buglist.cgi?regetlastlist=1">
<link rel="First" href="show_bug.cgi?id=[% bug_list.first %]">
<link rel="Last" href="show_bug.cgi?id=[% bug_list.last %]">
- [% current_bug_idx = lsearch(bug_list, bug.bug_id) %]
+ [% IF bug && bug.bug_id %]
+ [% current_bug_idx = lsearch(bug_list, bug.bug_id) %]
+ [% IF current_bug_idx != -1 %]
- [% IF current_bug_idx != -1 %]
+ [% IF current_bug_idx > 0 %]
+ [% prev_bug = current_bug_idx - 1 %]
+ <link rel="Prev" href="show_bug.cgi?id=[% bug_list.$prev_bug %]">
+ [% END %]
- [% IF current_bug_idx > 0 %]
- [% prev_bug = current_bug_idx - 1 %]
- <link rel="Prev" href="show_bug.cgi?id=[% bug_list.$prev_bug %]">
- [% END %]
+ [% IF current_bug_idx + 1 < bug_list.size %]
+ [% next_bug = current_bug_idx + 1 %]
+ <link rel="Next" href="show_bug.cgi?id=[% bug_list.$next_bug %]">
+ [% END %]
- [% IF current_bug_idx + 1 < bug_list.size %]
- [% next_bug = current_bug_idx + 1 %]
- <link rel="Next" href="show_bug.cgi?id=[% bug_list.$next_bug %]">
[% END %]
-
[% END %]
[% END %]