From 29e3eb8b03ba072fa4ce092b45fb98c2e2352744 Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Tue, 28 Apr 2015 12:41:44 +0800 Subject: Bug 1153102: add hooks for bug bounty display and form --- extensions/BMO/Extension.pm | 23 ++++++++++++---- .../hook/bug_modal/attachments-actions.html.tmpl | 13 +++++++++ .../hook/bug_modal/attachments-row.html.tmpl | 32 ++++++++++++++++++++++ .../en/default/bug_modal/attachments.html.tmpl | 16 ++++++++++- .../template/en/default/bug_modal/edit.html.tmpl | 10 +++---- extensions/BugModal/web/bug_modal.css | 8 ++++-- 6 files changed, 88 insertions(+), 14 deletions(-) create mode 100644 extensions/BMO/template/en/default/hook/bug_modal/attachments-actions.html.tmpl create mode 100644 extensions/BMO/template/en/default/hook/bug_modal/attachments-row.html.tmpl (limited to 'extensions') 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 %] + 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; +%] + + + Bounty: [% bounty.reporter_email FILTER html %] + $[% bounty.amount_paid || '-' FILTER html %]
+ 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 %]
+ [% IF bounty.credit.size %] + Credit: [% bounty.credit.join(", ") FILTER html %] + [% END %] + + + + Edit Bounty + + + diff --git a/extensions/BugModal/template/en/default/bug_modal/attachments.html.tmpl b/extensions/BugModal/template/en/default/bug_modal/attachments.html.tmpl index f9209d3bf..8e04392d8 100644 --- a/extensions/BugModal/template/en/default/bug_modal/attachments.html.tmpl +++ b/extensions/BugModal/template/en/default/bug_modal/attachments.html.tmpl @@ -8,11 +8,18 @@ [%# # bug: (bug object) the main bug object + # active_attachments: array of active attachment objects + # obsolete_attachments: array of obsolete attachment objects #%] [% FOREACH attachment IN bug.attachments %] - [% NEXT IF attachment.isprivate && !(user.is_insider || attachment.attacher.id == user.id) %] + [% + NEXT IF attachment.isprivate && !(user.is_insider || attachment.attacher.id == user.id); + attachment_rendered = 0; + Hook.process("row"); + NEXT IF attachment_rendered; + %] [% END %]
+ +
+ [% IF obsolete_attachments %] + + [% END %] + [% Hook.process('actions') %] +
diff --git a/extensions/BugModal/template/en/default/bug_modal/edit.html.tmpl b/extensions/BugModal/template/en/default/bug_modal/edit.html.tmpl index f9c93efd1..54ae9bec0 100644 --- a/extensions/BugModal/template/en/default/bug_modal/edit.html.tmpl +++ b/extensions/BugModal/template/en/default/bug_modal/edit.html.tmpl @@ -922,12 +922,10 @@ subtitle = sub.join(", ") collapsed = active_attachments == 0 %] - [% INCLUDE bug_modal/attachments.html.tmpl %] - [% IF obsolete_attachments %] -
- -
- [% END %] + [% INCLUDE bug_modal/attachments.html.tmpl + active_attachments = active_attachments + obsolete_attachments = obsolete_attachments + %] [% END %] [% END %] diff --git a/extensions/BugModal/web/bug_modal.css b/extensions/BugModal/web/bug_modal.css index b9e6817fc..f35ac415d 100644 --- a/extensions/BugModal/web/bug_modal.css +++ b/extensions/BugModal/web/bug_modal.css @@ -319,6 +319,10 @@ input[type="number"] { /* attachments */ +#module-attachments .module-content { + padding: 0; +} + #attachments { width: 100%; } @@ -379,8 +383,8 @@ input[type="number"] { display: inline; } -#attachments-actions { - padding: 2px; +#attachments-actions button { + margin: 2px; } #attachments .attach-flag .vcard { -- cgit v1.2.3-24-g4f1b