diff options
Diffstat (limited to 'extensions/BMO')
3 files changed, 63 insertions, 5 deletions
diff --git a/extensions/BMO/Extension.pm b/extensions/BMO/Extension.pm index 717f347de..40a00a625 100644 --- a/extensions/BMO/Extension.pm +++ b/extensions/BMO/Extension.pm @@ -73,7 +73,8 @@ BEGIN { *Bugzilla::Product::default_platform = \&_product_default_platform; *Bugzilla::Product::default_op_sys = \&_product_default_op_sys; *Bugzilla::check_default_product_security_group = \&_check_default_product_security_group; - *Bugzilla::Attachment::is_bounty_attachment = \&_is_bounty_attachment; + *Bugzilla::Attachment::is_bounty_attachment = \&_attachment_is_bounty_attachment; + *Bugzilla::Attachment::bounty_details = \&_attachment_bounty_details; } sub template_before_process { @@ -224,7 +225,7 @@ sub bounty_attachment { my $input = Bugzilla->input_params; my $dbh = Bugzilla->dbh; my $bug = Bugzilla::Bug->check({ id => $input->{bug_id}, cache => 1 }); - my $attachment = first { $_ && _is_bounty_attachment($_) } @{$bug->attachments}; + my $attachment = first { $_ && _attachment_is_bounty_attachment($_) } @{$bug->attachments}; $vars->{bug} = $bug; if ($input->{submit}) { @@ -261,12 +262,11 @@ sub bounty_attachment { } if ($attachment) { - my $form = parse_bounty_attachment_description($attachment->description); - $vars->{form} = $form; + $vars->{form} = $attachment->bounty_details; } } -sub _is_bounty_attachment { +sub _attachment_is_bounty_attachment { my ($attachment) = @_; return 0 unless $attachment->filename eq 'bugbounty.data'; @@ -275,6 +275,19 @@ sub _is_bounty_attachment { return $attachment->description =~ /^(?:[^,]*,)+[^,]*$/; } +sub _attachment_bounty_details { + my ($attachment) = @_; + if (!exists $attachment->{bounty_details}) { + if ($attachment->is_bounty_attachment) { + $attachment->{bounty_details} = parse_bounty_attachment_description($attachment->description); + } + else { + $attachment->{bounty_details} = undef; + } + } + return $attachment->{bounty_details}; +} + sub format_bounty_attachment_description { my ($form) = @_; my @fields = ( diff --git a/extensions/BMO/template/en/default/hook/bug_modal/attachments-actions.html.tmpl b/extensions/BMO/template/en/default/hook/bug_modal/attachments-actions.html.tmpl new file mode 100644 index 000000000..97d0ed739 --- /dev/null +++ b/extensions/BMO/template/en/default/hook/bug_modal/attachments-actions.html.tmpl @@ -0,0 +1,13 @@ +[%# This Source Code Form is subject to the terms of the Mozilla Public + # License, v. 2.0. If a copy of the MPL was not distributed with this + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + # + # This Source Code Form is "Incompatible With Secondary Licenses", as + # defined by the Mozilla Public License, v. 2.0. + #%] + +[% RETURN IF !user.in_group("bounty-team") || has_bounty_attachment %] +<button type="button" class="minor" + onclick="document.location='page.cgi?id=attachment_bounty_form.html&bug_id=[% bug.id FILTER none %]'"> + Add Bounty Tracking Attachment +</button> diff --git a/extensions/BMO/template/en/default/hook/bug_modal/attachments-row.html.tmpl b/extensions/BMO/template/en/default/hook/bug_modal/attachments-row.html.tmpl new file mode 100644 index 000000000..67ab62f5a --- /dev/null +++ b/extensions/BMO/template/en/default/hook/bug_modal/attachments-row.html.tmpl @@ -0,0 +1,32 @@ +[%# This Source Code Form is subject to the terms of the Mozilla Public + # License, v. 2.0. If a copy of the MPL was not distributed with this + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + # + # This Source Code Form is "Incompatible With Secondary Licenses", as + # defined by the Mozilla Public License, v. 2.0. + #%] + +[% + RETURN UNLESS attachment.is_bounty_attachment; + has_bounty_attachment = 1; + attachment_rendered = 1; + bounty = attachment.bounty_details; +%] +<tr class="bz_private"> + <td colspan="2"> + Bounty: [% bounty.reporter_email FILTER html %] + $[% bounty.amount_paid || '-' FILTER html %]<br> + Reported: [% bounty.reported_date || '-' FILTER html %] + Fixed: [% bounty.fixed_date || '-' FILTER html %] + Awarded: [% bounty.awarded_date || '-' FILTER html %] + Publish: [% bounty.publish ? "Yes" : "No" FILTER none %]<br> + [% IF bounty.credit.size %] + Credit: [% bounty.credit.join(", ") FILTER html %] + [% END %] + </td> + <td class="attach-actions"> + <a href="page.cgi?id=attachment_bounty_form.html&bug_id=[% bug.id FILTER none %]"> + Edit Bounty + </a> + </td> +</tr> |