summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReed Loden <reed@reedloden.com>2012-06-26 17:20:26 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2012-06-26 17:20:26 +0200
commit5b3ea4d476084d47c99e3d2e9d409fea84c16831 (patch)
tree88588a72c98dfc3cfdc3e4b37b196c3f48d31da6
parenta4ef21ac8165538bf9cfe7adb7272fda4cece5d6 (diff)
downloadbugzilla-5b3ea4d476084d47c99e3d2e9d409fea84c16831.tar.gz
bugzilla-5b3ea4d476084d47c99e3d2e9d409fea84c16831.tar.xz
Bug 138546: Add a checkbox to add himself to the CC list when creating or editing an attachment
r/a=LpSolit
-rw-r--r--Bugzilla/Bug.pm24
-rwxr-xr-xattachment.cgi4
-rw-r--r--template/en/default/attachment/create.html.tmpl9
-rw-r--r--template/en/default/attachment/edit.html.tmpl12
-rw-r--r--template/en/default/bug/edit.html.tmpl7
5 files changed, 36 insertions, 20 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index 1bf5a11cd..3d9689aca 100644
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -3614,23 +3614,23 @@ sub user {
return {} if $self->{'error'};
my $user = Bugzilla->user;
-
my $prod_id = $self->{'product_id'};
- my $unknown_privileges = $user->in_group('editbugs', $prod_id);
- my $canedit = $unknown_privileges
- || $user->id == $self->{'assigned_to'}
- || (Bugzilla->params->{'useqacontact'}
- && $self->{'qa_contact'}
- && $user->id == $self->{'qa_contact'});
- my $canconfirm = $unknown_privileges
- || $user->in_group('canconfirm', $prod_id);
- my $isreporter = $user->id
- && $user->id == $self->{reporter_id};
+ my $editbugs = $user->in_group('editbugs', $prod_id);
+ my $is_reporter = $user->id == $self->{reporter_id} ? 1 : 0;
+ my $is_assignee = $user->id == $self->{'assigned_to'} ? 1 : 0;
+ my $is_qa_contact = Bugzilla->params->{'useqacontact'}
+ && $self->{'qa_contact'}
+ && $user->id == $self->{'qa_contact'} ? 1 : 0;
+
+ my $canedit = $editbugs || $is_assignee || $is_qa_contact;
+ my $canconfirm = $editbugs || $user->in_group('canconfirm', $prod_id);
+ my $has_any_role = $is_reporter || $is_assignee || $is_qa_contact;
$self->{'user'} = {canconfirm => $canconfirm,
canedit => $canedit,
- isreporter => $isreporter};
+ isreporter => $is_reporter,
+ has_any_role => $has_any_role};
return $self->{'user'};
}
diff --git a/attachment.cgi b/attachment.cgi
index 92f48d05d..16c964e47 100755
--- a/attachment.cgi
+++ b/attachment.cgi
@@ -574,6 +574,8 @@ sub insert {
$owner = $bug->assigned_to->login;
$bug->set_assigned_to($user);
}
+
+ $bug->add_cc($user) if $cgi->param('addselfcc');
$bug->update($timestamp);
$dbh->bz_commit_transaction;
@@ -686,6 +688,8 @@ sub update {
extra_data => $attachment->id });
}
+ $bug->add_cc($user) if $cgi->param('addselfcc');
+
if ($can_edit) {
my ($flags, $new_flags) =
Bugzilla::Flag->extract_flags_from_cgi($bug, $attachment, $vars);
diff --git a/template/en/default/attachment/create.html.tmpl b/template/en/default/attachment/create.html.tmpl
index 97408deac..8f5477e23 100644
--- a/template/en/default/attachment/create.html.tmpl
+++ b/template/en/default/attachment/create.html.tmpl
@@ -92,6 +92,15 @@ TUI_hide_default('attachment_text_field');
cols = constants.COMMENT_COLS
wrap = 'soft'
%]
+ [% IF NOT bug.cc || NOT bug.cc.contains(user.login) %]
+ <br>
+ <input type="checkbox" id="addselfcc" name="addselfcc"
+ [%~ ' checked="checked"'
+ IF user.settings.state_addselfcc.value == 'always'
+ || (!bug.user.has_any_role
+ && user.settings.state_addselfcc.value == 'cc_unless_role') %]>
+ <label for="addselfcc">Add me to CC list</label>
+ [% END %]
</td>
</tr>
[% IF user.is_insider %]
diff --git a/template/en/default/attachment/edit.html.tmpl b/template/en/default/attachment/edit.html.tmpl
index c6ee527a5..2062e6d6c 100644
--- a/template/en/default/attachment/edit.html.tmpl
+++ b/template/en/default/attachment/edit.html.tmpl
@@ -253,10 +253,18 @@
minrows = 10
cols = 80
wrap = 'soft'
- classes = classNames
+ classes = classNames
%]
+ [% IF NOT attachment.bug.cc || NOT attachment.bug.cc.contains(user.login) %]
+ <input type="checkbox" id="addselfcc" name="addselfcc"
+ [%~ ' checked="checked"'
+ IF user.settings.state_addselfcc.value == 'always'
+ || (!attachment.bug.user.has_any_role
+ && user.settings.state_addselfcc.value == 'cc_unless_role') %]>
+ <label for="addselfcc">Add me to CC list</label>
+ [% END %]
</div>
- [% END %]
+ [% END %]
<div id="attachment_flags">
[% IF attachment.flag_types.size > 0 %]
[% PROCESS "flag/list.html.tmpl" flag_types = attachment.flag_types
diff --git a/template/en/default/bug/edit.html.tmpl b/template/en/default/bug/edit.html.tmpl
index ba36d0a2f..9295e178c 100644
--- a/template/en/default/bug/edit.html.tmpl
+++ b/template/en/default/bug/edit.html.tmpl
@@ -722,15 +722,10 @@
<td>
[% IF user.id %]
[% IF NOT bug.cc || NOT bug.cc.contains(user.login) %]
- [% has_role = bug.user.isreporter
- || bug.assigned_to.id == user.id
- || (Param('useqacontact')
- && bug.qa_contact
- && bug.qa_contact.id == user.id) %]
<input type="checkbox" id="addselfcc" name="addselfcc"
[% " checked=\"checked\""
IF user.settings.state_addselfcc.value == 'always'
- || (!has_role
+ || (!bug.user.has_any_role
&& user.settings.state_addselfcc.value == 'cc_unless_role') %]>
<label for="addselfcc">Add me to CC list</label>
<br>