Commit 8474e73b authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 359943: Prev/Next <link rel>s not working on process_bug.cgi page - Patch by…

Bug 359943: Prev/Next <link rel>s not working on process_bug.cgi page - Patch by Fré©ric Buclin <LpSolit@gmail.com> r=wurblzap a=LpSolit
parent 90bf2307
...@@ -203,11 +203,35 @@ $vars->{'title_tag'} = "bug_processed"; ...@@ -203,11 +203,35 @@ $vars->{'title_tag'} = "bug_processed";
# Set up the vars for navigational <link> elements # Set up the vars for navigational <link> elements
my @bug_list; my @bug_list;
if ($cgi->cookie("BUGLIST") && defined $cgi->param('id')) { if ($cgi->cookie("BUGLIST")) {
@bug_list = split(/:/, $cgi->cookie("BUGLIST")); @bug_list = split(/:/, $cgi->cookie("BUGLIST"));
$vars->{'bug_list'} = \@bug_list; $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 # 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. # is currently in, before we allow them to change anything.
foreach my $bug (@bug_objects) { foreach my $bug (@bug_objects) {
...@@ -615,23 +639,10 @@ eval { ...@@ -615,23 +639,10 @@ eval {
$vars->{'patchviewerinstalled'} = 1; $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) { if (Bugzilla->usage_mode == USAGE_MODE_EMAIL) {
# Do nothing. # Do nothing.
} }
elsif ($action eq 'next_bug') { 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 ($next_bug) {
if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) { if (detaint_natural($next_bug) && Bugzilla->user->can_see_bug($next_bug)) {
my $bug = new Bugzilla::Bug($next_bug); my $bug = new Bugzilla::Bug($next_bug);
...@@ -664,9 +675,6 @@ elsif ($action eq 'next_bug') { ...@@ -664,9 +675,6 @@ elsif ($action eq 'next_bug') {
# End the response page. # End the response page.
unless (Bugzilla->usage_mode == USAGE_MODE_EMAIL) { 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) $template->process("bug/navigate.html.tmpl", $vars)
|| ThrowTemplateError($template->error()); || ThrowTemplateError($template->error());
$template->process("global/footer.html.tmpl", $vars) $template->process("global/footer.html.tmpl", $vars)
......
...@@ -44,5 +44,6 @@ ...@@ -44,5 +44,6 @@
[% PROCESS global/header.html.tmpl [% PROCESS global/header.html.tmpl
javascript_urls = [ "js/util.js", "js/keyword-chooser.js", "js/field.js", javascript_urls = [ "js/util.js", "js/keyword-chooser.js", "js/field.js",
"js/yui/yahoo-dom-event.js", "js/yui/calendar.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"
%]
...@@ -41,8 +41,8 @@ ...@@ -41,8 +41,8 @@
] ]
javascript_urls = [ "js/util.js", "js/keyword-chooser.js", "js/field.js", javascript_urls = [ "js/util.js", "js/keyword-chooser.js", "js/field.js",
"js/yui/yahoo-dom-event.js", "js/yui/calendar.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" doc_section = "bug_page.html"
%] %]
[% END %] [% END %]
......
...@@ -33,26 +33,27 @@ ...@@ -33,26 +33,27 @@
<link rel="Top" href="[% urlbase FILTER html %]"> <link rel="Top" href="[% urlbase FILTER html %]">
[%# *** Bug List Navigation *** %] [%# *** 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="Up" href="buglist.cgi?regetlastlist=1">
<link rel="First" href="show_bug.cgi?id=[% bug_list.first %]"> <link rel="First" href="show_bug.cgi?id=[% bug_list.first %]">
<link rel="Last" href="show_bug.cgi?id=[% bug_list.last %]"> <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 %] [% IF current_bug_idx + 1 < bug_list.size %]
[% prev_bug = current_bug_idx - 1 %] [% next_bug = current_bug_idx + 1 %]
<link rel="Prev" href="show_bug.cgi?id=[% bug_list.$prev_bug %]"> <link rel="Next" href="show_bug.cgi?id=[% bug_list.$next_bug %]">
[% END %] [% 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 %] [% END %]
[% END %] [% END %]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment