diff options
author | lpsolit%gmail.com <> | 2008-02-06 20:34:49 +0100 |
---|---|---|
committer | lpsolit%gmail.com <> | 2008-02-06 20:34:49 +0100 |
commit | 8474e73b2aed9342d7ffe12aaf40adf085fdc606 (patch) | |
tree | c9575f2e53ed14d5725fdb050be4d6da3e44fc68 | |
parent | 90bf2307e3f5f19171e5f60bfe34d7c90ad1bf10 (diff) | |
download | bugzilla-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-x | process_bug.cgi | 42 | ||||
-rw-r--r-- | template/en/default/bug/process/header.html.tmpl | 5 | ||||
-rw-r--r-- | template/en/default/bug/show.html.tmpl | 4 | ||||
-rw-r--r-- | template/en/default/global/site-navigation.html.tmpl | 23 |
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 %] |