Commit c0486757 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 508737: Allow Bugzilla::Template::get_bug_link to take a Bugzilla::Bug…

Bug 508737: Allow Bugzilla::Template::get_bug_link to take a Bugzilla::Bug object if one is available Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit
parent c427a6f7
...@@ -34,6 +34,7 @@ package Bugzilla::Template; ...@@ -34,6 +34,7 @@ package Bugzilla::Template;
use strict; use strict;
use Bugzilla::Bug;
use Bugzilla::Constants; use Bugzilla::Constants;
use Bugzilla::Install::Requirements; use Bugzilla::Install::Requirements;
use Bugzilla::Install::Util qw(install_string template_include_path include_languages); use Bugzilla::Install::Util qw(install_string template_include_path include_languages);
...@@ -52,6 +53,7 @@ use File::Find; ...@@ -52,6 +53,7 @@ use File::Find;
use File::Path qw(rmtree mkpath); use File::Path qw(rmtree mkpath);
use File::Spec; use File::Spec;
use IO::Dir; use IO::Dir;
use Scalar::Util qw(blessed);
use base qw(Template); use base qw(Template);
...@@ -327,54 +329,46 @@ sub get_attachment_link { ...@@ -327,54 +329,46 @@ sub get_attachment_link {
# comment in the bug # comment in the bug
sub get_bug_link { sub get_bug_link {
my ($bug_num, $link_text, $options) = @_; my ($bug, $link_text, $options) = @_;
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
if (!defined($bug_num) || ($bug_num eq "")) { if (!$bug) {
return "&lt;missing bug number&gt;"; return html_quote('<missing bug number>');
} }
my $quote_bug_num = html_quote($bug_num);
detaint_natural($bug_num) || return "&lt;invalid bug number: $quote_bug_num&gt;";
my ($bug_alias, $bug_state, $bug_res, $bug_desc) = $bug = blessed($bug) ? $bug : new Bugzilla::Bug($bug);
$dbh->selectrow_array('SELECT bugs.alias, bugs.bug_status, bugs.resolution, bugs.short_desc return $link_text if $bug->{error};
FROM bugs WHERE bugs.bug_id = ?',
undef, $bug_num); if ($options->{use_alias} && $link_text =~ /^\d+$/ && $bug->alias) {
$link_text = $bug->alias;
if ($options->{use_alias} && $link_text =~ /^\d+$/ && $bug_alias) {
$link_text = $bug_alias;
} }
if ($bug_state) { # Initialize these variables to be "" so that we don't get warnings
# Initialize these variables to be "" so that we don't get warnings # if we don't change them below (which is highly likely).
# if we don't change them below (which is highly likely). my ($pre, $title, $post) = ("", "", "");
my ($pre, $title, $post) = ("", "", "");
$title = get_text('get_status', {status => $bug_state});
if ($bug_state eq 'UNCONFIRMED') {
$pre = "<i>";
$post = "</i>";
}
elsif (!is_open_state($bug_state)) {
$pre = '<span class="bz_closed">';
$title .= ' ' . get_text('get_resolution', {resolution => $bug_res});
$post = '</span>';
}
if (Bugzilla->user->can_see_bug($bug_num)) {
$title .= " - $bug_desc";
}
# Prevent code injection in the title.
$title = html_quote(clean_text($title));
my $linkval = "show_bug.cgi?id=$bug_num"; $title = get_text('get_status', { status => $bug->bug_status });
if ($options->{comment_num}) { if ($bug->bug_status eq 'UNCONFIRMED') {
$linkval .= "#c" . $options->{comment_num}; $pre = "<i>";
} $post = "</i>";
return qq{$pre<a href="$linkval" title="$title">$link_text</a>$post};
} }
else { if ($bug->resolution) {
return qq{$link_text}; $pre .= '<span class="bz_closed">';
$title .= ' ' . get_text('get_resolution',
{ resolution => $bug->resolution });
$post .= '</span>';
}
if (Bugzilla->user->can_see_bug($bug)) {
$title .= " - " . $bug->short_desc;
}
# Prevent code injection in the title.
$title = html_quote(clean_text($title));
my $linkval = "show_bug.cgi?id=" . $bug->id;
if ($options->{comment_num}) {
$linkval .= "#c" . $options->{comment_num};
} }
return qq{$pre<a href="$linkval" title="$title">$link_text</a>$post};
} }
############################################################################### ###############################################################################
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
[%# Define strings that will serve as the title and header of this page %] [%# Define strings that will serve as the title and header of this page %]
[% title = BLOCK %]Create New Attachment for [% terms.Bug %] #[% bug.bug_id %][% END %] [% title = BLOCK %]Create New Attachment for [% terms.Bug %] #[% bug.bug_id %][% END %]
[% header = BLOCK %]Create New Attachment for [% header = BLOCK %]Create New Attachment for
[%+ "$terms.Bug $bug.bug_id" FILTER bug_link(bug.bug_id) FILTER none %][% END %] [%+ "$terms.Bug $bug.bug_id" FILTER bug_link(bug) FILTER none %][% END %]
[% subheader = BLOCK %][% bug.short_desc FILTER html %][% END %] [% subheader = BLOCK %][% bug.short_desc FILTER html %][% END %]
[% PROCESS global/header.html.tmpl [% PROCESS global/header.html.tmpl
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
[% PROCESS global/variables.none.tmpl %] [% PROCESS global/variables.none.tmpl %]
[% filtered_summary = bugsummary FILTER html %] [% filtered_summary = bugsummary FILTER html %]
[% header = BLOCK %]View All Attachments for [% header = BLOCK %]View All Attachments for
[%+ "$terms.Bug $bug.bug_id" FILTER bug_link(bug.bug_id) FILTER none %][% END %] [%+ "$terms.Bug $bug.id" FILTER bug_link(bug) FILTER none %][% END %]
[% title = BLOCK %] [% title = BLOCK %]
View All Attachments for [% terms.Bug %] [%+ bug.bug_id FILTER html %] View All Attachments for [% terms.Bug %] [%+ bug.bug_id FILTER html %]
......
...@@ -35,14 +35,14 @@ ...@@ -35,14 +35,14 @@
%] %]
<p> <p>
[% "Back to $terms.bug $bug.bug_id" FILTER bug_link(bug.bug_id) FILTER none %] [% "Back to $terms.bug $bug.bug_id" FILTER bug_link(bug) FILTER none %]
</p> </p>
[% PROCESS bug/activity/table.html.tmpl %] [% PROCESS bug/activity/table.html.tmpl %]
[% IF operations.size > 0 %] [% IF operations.size > 0 %]
<p> <p>
[% "Back to $terms.bug $bug.bug_id" FILTER bug_link(bug.bug_id) FILTER none %] [% "Back to $terms.bug $bug.bug_id" FILTER bug_link(bug) FILTER none %]
</p> </p>
[% END %] [% END %]
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<p> <p>
Someone else has made changes to Someone else has made changes to
[%+ "$terms.bug $bug.id" FILTER bug_link(bug.id) FILTER none %] [%+ "$terms.bug $bug.id" FILTER bug_link(bug) FILTER none %]
at the same time you were trying to. at the same time you were trying to.
The changes made were: The changes made were:
</p> </p>
...@@ -101,7 +101,7 @@ You have the following choices: ...@@ -101,7 +101,7 @@ You have the following choices:
[% END %] [% END %]
<li> <li>
Throw away my changes, and Throw away my changes, and
[%+ "revisit $terms.bug $bug.id" FILTER bug_link(bug.id) FILTER none %] [%+ "revisit $terms.bug $bug.id" FILTER bug_link(bug) FILTER none %]
</li> </li>
</ul> </ul>
......
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
[% END %] [% END %]
</a></td> </a></td>
<td align="center"> <td align="center">
[% bug.id FILTER bug_link(bug.id) FILTER none %] [% bug.id FILTER bug_link(bug) FILTER none %]
</td> </td>
<td> <td>
[% bug.summary FILTER html %] [% bug.summary FILTER html %]
......
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