Commit 2a5d8de8 authored by travis%sedsystems.ca's avatar travis%sedsystems.ca

Bug 119485 : Templatise editusers.cgi

Patch by Marc Schumann <wurblzap@gmail.com> r=GavinS, mkanat a=justdave
parent 86cdd89c
......@@ -86,6 +86,7 @@ sub _create {
'name' => '',
'login' => '',
'showmybugslink' => 0,
'disabledtext' => '',
'flags' => {},
};
bless ($self, $class);
......@@ -101,9 +102,11 @@ sub _create {
my ($id,
$login,
$name,
$disabledtext,
$mybugslink) = $dbh->selectrow_array(qq{SELECT userid,
login_name,
realname,
disabledtext,
mybugslink
FROM profiles
WHERE $cond},
......@@ -115,6 +118,7 @@ sub _create {
$self->{'id'} = $id;
$self->{'name'} = $name;
$self->{'login'} = $login;
$self->{'disabledtext'} = $disabledtext;
$self->{'showmybugslink'} = $mybugslink;
# Now update any old group information if needed
......@@ -951,12 +955,14 @@ sub get_userlist {
return $self->{'userlist'};
}
sub insert_new_user ($$) {
my ($username, $realname) = (@_);
sub insert_new_user ($$;$$) {
my ($username, $realname, $password, $disabledtext) = (@_);
my $dbh = Bugzilla->dbh;
# Generate a new random password for the user.
my $password = &::GenerateRandomPassword();
$disabledtext ||= '';
# If not specified, generate a new random password for the user.
$password ||= &::GenerateRandomPassword();
my $cryptpassword = bz_crypt($password);
# XXX - These should be moved into ValidateNewUser or CheckEmailSyntax
......@@ -966,10 +972,12 @@ sub insert_new_user ($$) {
# Insert the new user record into the database.
$dbh->do("INSERT INTO profiles
(login_name, realname, cryptpassword, emailflags)
VALUES (?, ?, ?, ?)",
(login_name, realname, cryptpassword, emailflags,
disabledtext)
VALUES (?, ?, ?, ?, ?)",
undef,
($username, $realname, $cryptpassword, DEFAULT_EMAIL_SETTINGS));
($username, $realname, $cryptpassword, DEFAULT_EMAIL_SETTINGS,
$disabledtext));
# Return the password to the calling code so it can be included
# in an email sent to the user.
......@@ -1039,7 +1047,7 @@ Bugzilla::User - Object for a Bugzilla user
my $user = new Bugzilla::User($id);
# Class Functions
$random_password = insert_new_user($username, $realname);
$password = insert_new_user($username, $realname, $password, $disabledtext);
=head1 DESCRIPTION
......@@ -1132,6 +1140,10 @@ linkinfooter - Whether or not the query should be displayed in the footer.
=back
=item C<disabledtext>
Returns the disable text of the user, if any.
=item C<flush_queries_cache>
Some code modifies the set of stored queries. Because C<Bugzilla::User> does
......@@ -1254,12 +1266,18 @@ called "statically," just like a normal procedural function.
=item C<insert_new_user>
Creates a new user in the database with a random password.
Creates a new user in the database.
Params: $username (scalar, string) - The login name for the new user.
$realname (scalar, string) - The full name for the new user.
Returns: The password that we randomly generated for this user, in plain text.
$password (scalar, string) - Optional. The password for the new user;
if not given, a random password will be
generated.
$disabledtext (scalar, string) - Optional. The disable text for the new
user; if not given, it will be empty.
Returns: The password for this user, in plain text, so it can be included
in an e-mail sent to the user.
=item C<is_available_username>
......
......@@ -213,7 +213,7 @@ sub CheckEmailSyntax {
my ($addr) = (@_);
my $match = Param('emailregexp');
if ($addr !~ /$match/ || $addr =~ /[\\\(\)<>&,;:"\[\] \t\r\n]/) {
ThrowUserError("illegal_email_address", { addr => $addr });
ThrowUserError("illegal_email_address", { addr => $addr }, 'abort');
}
}
......
......@@ -1061,10 +1061,12 @@ Reason: %reason%
{
name => 'allowuserdeletion',
desc => 'The pages to edit users can also let you delete a user. But there ' .
'is no code that goes and cleans up any references to that user in ' .
'other tables, so such deletions are kinda scary. So, you have to ' .
'turn on this option before any such deletions will ever happen.',
desc => 'The pages to edit users can also let you delete a user. ' .
'Bugzilla will issue a warning in case you\'d run into ' .
'inconsistencies when you\'re about to do so, ' .
'but such deletions remain kinda scary. ' .
'So, you have to turn on this option before any such deletions ' .
'will ever happen.',
type => 'b',
default => 0
},
......
......@@ -613,11 +613,11 @@ sub ValidatePassword {
my ($password, $matchpassword) = @_;
if (length($password) < 3) {
ThrowUserError("password_too_short");
ThrowUserError("password_too_short", undef, 'abort');
} elsif (length($password) > 16) {
ThrowUserError("password_too_long");
ThrowUserError("password_too_long", undef, 'abort');
} elsif ((defined $matchpassword) && ($password ne $matchpassword)) {
ThrowUserError("passwords_dont_match");
ThrowUserError("passwords_dont_match", undef, 'abort');
}
}
......
/* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Bugzilla Bug Tracking System.
*
* Contributor(s): Marc Schumann <wurblzap@gmail.com>
*/
ul.warningmessages {
background-color: white;
border-style: solid;
border-width: 1px;
border-color: yellow;
padding: 1ex 1ex 1ex 4ex;
}
p.areyoureallyreallysure {
color: red;
font-size: 120%;
font-weight: bold;
}
/* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Bugzilla Bug Tracking System.
*
* Contributor(s): Marc Schumann <wurblzap@gmail.com>
*/
table.main {
border-spacing: 1em;
}
table.main tr {
vertical-align: top;
border-top: solid thin black;
}
table.main th {
text-align: right;
white-space: nowrap;
}
table.main th,
table.main td {
padding: 0;
}
table.main ul {
list-style-type: none;
padding-left: 0
}
table.groups {
border-spacing: 1px;
}
table.groups tr.indirect {
background-color: #cccccc;
}
table.groups th {
text-align: left;
padding: 0 0 0 1ex;
}
table.groups td {
padding: 2px;
}
table.groups td.checkbox {
text-align: center;
white-space: nowrap;
}
......@@ -56,7 +56,7 @@
<p><b>One or more users belong to this group. You cannot delete
this group while there are users in it.</b>
<br><a href="editusers.cgi?action=list&group=[% gid FILTER html %]">Show
<br><a href="editusers.cgi?action=list&group=[% gid FILTER html %]&grouprestrict=1">Show
me which users</a> - <input type="checkbox" name="removeusers">Remove
all users from this group for me.</p>
[% END %]
......
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
#
# listselectionvalues: selection values to recreate the current user list.
# editusers: is viewing user member of editusers?
#%]
[% PROCESS global/header.html.tmpl
title = "Add user"
style_urls = ['skins/standard/editusers.css']
onload = "document.forms['f'].login.focus()"
%]
[% PROCESS admin/users/listselectvars.html.tmpl
listselectionvalues = listselectionvalues
%]
<form name="f" method="post" action="editusers.cgi">
<table class="main">
[% PROCESS admin/users/userdata.html.tmpl
editform = 0
editusers = editusers
otheruser = []
%]
</table>
<p>
<input type="submit" value="Add" />
<input type="hidden" name="action" value="new" />
[% INCLUDE listselectionhiddenfields %]
</p>
</form>
<p>
You can also <a href="editusers.cgi">find a user</a>
[% IF listselectionvalues %],
or
<a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">go
back to the user list</a>
[% END %].
</p>
[% PROCESS global/footer.html.tmpl %]
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
#
# message: message tag specifying a global/messages.html.tmpl
# message
# listselectionvalues: selection values to recreate the current user list.
# editusers: is viewing user member of editusers?
# otheruser: Bugzilla::User object of viewed user.
# groups: array of group information (name, grant type,
# canbless) for viewed user.
#%]
[% PROCESS global/header.html.tmpl
title = "Edit user $login"
message = message
style_urls = ['skins/standard/editusers.css']
%]
[% PROCESS admin/users/listselectvars.html.tmpl
listselectionvalues = listselectionvalues
%]
<form method="post" action="editusers.cgi">
<table class="main">
[% PROCESS admin/users/userdata.html.tmpl
editform = 1
editusers = editusers
otheruser = otheruser
%]
[% IF groups.size %]
<tr>
<th>Group access:</th>
<td>
<table class="groups">
<tr>
[% IF editusers %]
<th colspan="3">
Can turn these [% terms.bits %] on for other users
</th>
[% END %]
</tr>
<tr>
[% IF editusers %]
<td style="text-align: center; font-weight: bold">|</td>
[% END %]
<th colspan="2">User is a member of these groups</th>
</tr>
[% FOREACH group = groups %]
[% perms = permissions.${group.id} %]
<tr class="[% 'in' IF perms.regexpmember || perms.derivedmember %]direct">
[% IF editusers %]
<td class="checkbox">
[% '[' IF perms.indirectbless %]
[% %]<input type="checkbox"
name="bless_[% group.id %]"
value="1"
[% ' checked="checked"' IF perms.directbless %] />
[% ']' IF perms.indirectbless %]
[% %]<input type="hidden" name="oldbless_[% group.id %]"
value="[% perms.directbless %]" /></td>
[% END %]
<td class="checkbox">
[% '[' IF perms.derivedmember %]
[% '*' IF perms.regexpmember %]
[%%]<input type="checkbox"
id="group_[% group.id %]"
name="group_[% group.id %]"
value="1"
[% ' checked="checked"' IF perms.directmember %] />
[% '*' IF perms.regexpmember %]
[% ']' IF perms.derivedmember %]
[% %]<input type="hidden" name="oldgroup_[% group.id %]"
value="[% perms.directmember %]" /></td>
<td class="groupname">
<label for="group_[% group.id %]">
<strong>[% group.name FILTER html %]:</strong>
[%+ group.description FILTER html %]
</label>
</td>
</tr>
[% END %]
</table>
</td>
</tr>
[% END %]
</table>
<p>
<input type="submit" value="Update" />
<input type="hidden" name="userid" value="[% otheruser.id %]" />
<input type="hidden" name="action" value="update" />
[% INCLUDE listselectionhiddenfields %]
</p>
</form>
<p>
User is a member of any groups shown with a check or grey bar.
A grey bar indicates indirect membership, either derived from other
groups (marked with square brackets) or via regular expression
(marked with '*').
</p>
[% IF editusers %]
<p>
Square brackets around the bless checkbox indicate the ability
to bless users (grant them membership in the group) as a result
of membership in another group.
</p>
[% END %]
[% IF Param('allowuserdeletion') && editusers %]
<form method="post" action="editusers.cgi">
<p>
<input type="submit" value="Delete User" />
<input type="hidden" name="action" value="del" />
<input type="hidden" name="userid" value="[% otheruser.id %]" />
[% INCLUDE listselectionhiddenfields %]
</p>
</form>
[% END %]
<p>
You can also
[% IF editusers %]
<a href="editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
a new user</a>
[% IF listselectionvalues %],
[% END %]
[% END %]
[% IF listselectionvalues %]
go
<a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">back
to the user list</a>,
[% END %]
[% IF editusers OR listselectionvalues %]
or
[% END %]
<a href="editusers.cgi">find other users</a>.
</p>
[% PROCESS global/footer.html.tmpl %]
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
#
# listselectionvalues: selection values to recreate the current user list.
# editusers: is viewing user member of editusers?
# users: list of user information (id, login_name, realname,
# disabledtext).
#%]
[% PROCESS global/header.html.tmpl
title = "Select user"
style_urls = ['skins/standard/editusers.css']
%]
[% PROCESS admin/users/listselectvars.html.tmpl
listselectionvalues = listselectionvalues
%]
[% listselectionurlparams = INCLUDE listselectionurlparams %]
[% columns =
[{name => 'login_name'
heading => 'Edit user...'
contentlink => 'editusers.cgi?action=edit&amp;userid=%%userid%%' _
listselectionurlparams
allow_html_content => 1
}
{name => 'realname'
heading => 'Real name'
allow_html_content => 1
}
]
%]
[% IF Param('allowuserdeletion') && editusers %]
[% columns.push({heading => 'Action'
content => 'Delete'
contentlink => 'editusers.cgi?action=del' _
'&amp;userid=%%userid%%' _
listselectionurlparams
}
)
%]
[% END %]
[% FOREACH thisuser = users %]
[%# We FILTER html here because we need admin/table.html.tmpl to accept HTML
# for styling, so we cannot let admin/table.html.tmpl do the FILTER.
#%]
[% thisuser.login_name = BLOCK %]
[% thisuser.login_name FILTER html %]
[% END %]
[% IF thisuser.realname %]
[% thisuser.realname = BLOCK %]
[% thisuser.realname FILTER html %]
[% END %]
[% ELSE %]
[% SET thisuser.realname = '<span style="color: red">missing</span>' %]
[% END %]
[% IF thisuser.disabledtext %]
[% thisuser.login_name = "<span class=\"bz_inactive\">$thisuser.login_name</span>" %]
[% thisuser.realname = "<span class=\"bz_inactive\">$thisuser.realname</span>" %]
[% END %]
[% END %]
<p>[% users.size %] user[% "s" UNLESS users.size == 1 %] found.</p>
[% PROCESS admin/table.html.tmpl
columns = columns
data = users
%]
<p>
If you do not wish to modify a user account at this time, you can
<a href="editusers.cgi">find other users</a>
[% IF editusers %]
or
<a href="editusers.cgi?action=add[% INCLUDE listselectionurlparams %]">add
a new user</a>
[% END %].
</p>
[% PROCESS global/footer.html.tmpl %]
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
#
# listselectionvalues: selection values to recreate the current user list.
#%]
[% BLOCK listselectionurlparams %]
[% FOREACH field = listselectionvalues.keys %]&amp;
[% field FILTER url_quote %]=
[% listselectionvalues.$field FILTER url_quote %]
[% END %]
[% END %]
[% BLOCK listselectionhiddenfields %]
[% FOREACH field = listselectionvalues.keys %]
<input type="hidden" name="[% field FILTER html %]"
value="[% listselectionvalues.$field FILTER html %]" />
[% END %]
[% END %]
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
#
# editusers: is viewing user member of editusers?
# restrictablegroups: list of groups visible to the user:
# id: group id
# name: group name
#%]
[% PROCESS global/header.html.tmpl
title = "Search users"
style_urls = ['skins/standard/editusers.css']
onload = "document.forms['f'].matchstr.focus()"
%]
[% PROCESS admin/users/listselectvars.html.tmpl
listselectionvalues = listselectionvalues
%]
<form name="f" method="get" action="editusers.cgi">
<input type="hidden" name="action" value="list" />
<p><label for="matchstr">List users with login name matching</label>
<input size="32" name="matchstr" id="matchstr" />
<select name="matchtype">
<option value="substr" selected="selected">case-insensitive substring</option>
<option value="regexp">case-insensitive regexp</option>
<option value="notregexp">not (case-insensitive regexp)</option>
</select>
<input type="submit" value="Search" /></p>
[% IF restrictablegroups.size %]
<p><input type="checkbox" name="grouprestrict" value="1" id="grouprestrict" />
<label for="grouprestrict">Restrict to users belonging to group</label>
<select name="groupid"
onchange="document.forms['f'].grouprestrict.checked=true">
[% FOREACH group = restrictablegroups %]
<option value="[% group.id FILTER html %]">[% group.name FILTER html %]</option>
[% END %]
</select></p>
[% END %]
</form>
[% IF editusers %]
<p>
You can also <a href="editusers.cgi?action=add">add a new user</a>
[%- IF listselectionvalues %],
or
<a href="editusers.cgi?action=list[% INCLUDE listselectionurlparams %]">show
the user list again</a>
[%- END %].
</p>
[% END %]
[% PROCESS global/footer.html.tmpl %]
[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# Contributor(s): Marc Schumann <wurblzap@gmail.com>
#%]
[%# INTERFACE:
#
# editform: is this an edit form? (It's a create form otherwise)
# editusers: is viewing user member of editusers?
# otheruser: Bugzilla::User object of user to edit
#%]
<tr>
<th><label for="login">Login name:</label></th>
<td>
[% IF editusers %]
<input size="64" maxlength="255" name="login"
id="login" value="[% otheruser.login FILTER html %]" />
[% IF editform %]
<input type="hidden" name="loginold"
value="[% otheruser.login FILTER html %]" />
[% END %]
[% ELSE %]
[% otheruser.login FILTER html %]
[% END %]
</td>
</tr>
<tr>
<th><label for="name">Real name:</label></th>
<td>
[% IF editusers %]
<input size="64" maxlength="255" name="name"
id="name" value="[% otheruser.name FILTER html %]" />
[% IF editform %]
<input type="hidden" name="nameold"
value="[% otheruser.name FILTER html %]" />
[% END %]
[% ELSE %]
[% otheruser.name FILTER html %]
[% END %]
</td>
</tr>
[% IF editusers %]
<tr>
<th><label for="password">Password:</label></th>
<td>
<input type="password" size="16" maxlength="16" name="password"
id="password" value="" />
[% IF editform %]<br />
(Enter new password to change.)
[% END %]
</td>
</tr>
<tr>
<th><label for="disabledtext">Disable text:</label></th>
<td>
<textarea name="disabledtext" rows="10"
id="disabledtext"
cols="60">[% otheruser.disabledtext FILTER html %]</textarea><br />
(If non-empty, then the account will be disabled, and this text should
explain why.)
[% IF editform %]
<input type="hidden" name="disabledtextold"
value="[% otheruser.disabledtext FILTER html %]" />
[% END %]
</td>
</tr>
[% END %]
......@@ -581,6 +581,31 @@
'deleted_bug_count'
],
'admin/users/confirm-delete.html.tmpl' => [
'andstring',
'responsibilityterms.$responsibility',
'bugs',
'cc',
'flags.requestee',
'flags.setter',
'longdescs',
'namedqueries',
'votes',
'series',
'watch.watched',
'watch.watcher',
'whine_events',
'whine_schedules',
'otheruser.id'
],
'admin/users/edit.html.tmpl' => [
'otheruser.id',
'group.id',
'perms.directbless',
'perms.directmember',
],
'admin/components/edit.html.tmpl' => [
'bug_count'
],
......
......@@ -186,6 +186,10 @@
The keyword ID <em>[% id FILTER html %]</em> couldn't be
found.
[% ELSIF error == "invalid_user_id" %]
[% title = "Invalid User ID" %]
There is no user account with ID <em>[% userid FILTER html %]</em>.
[% ELSIF error == "missing_bug_id" %]
No [% terms.bug %] ID was given.
......
......@@ -30,7 +30,77 @@
[% message_tag = message %]
[% message = BLOCK %]
[% IF message_tag == "buglist_adding_field" %]
[% IF message_tag == "account_created" %]
[% title = "User $otheruser.login created" %]
A new user account [% otheruser.login FILTER html %] has been created
successfully.
[% IF groups.size %]
You may want to edit the group settings now, using the form below.
[% END %]
[% ELSIF message_tag == "account_updated" %]
[% IF changed_fields.size
+ groups_added_to.size + groups_removed_from.size
+ groups_granted_rights_to_bless.size + groups_denied_rights_to_bless.size %]
[% title = "User $loginold updated" %]
The following changes have been made to the user account
[%+ loginold FILTER html %]:
<ul>
[% FOREACH field = changed_fields %]
<li>
[% IF field == 'login_name' %]
The login is now [% otheruser.login FILTER html %].
[% ELSIF field == 'realname' %]
The real name has been updated.
[% ELSIF field == 'cryptpassword' %]
A new password has been set.
[% ELSIF field == 'disabledtext' %]
The disable text has been modified.
[% END %]
</li>
[% END %]
[% IF groups_added_to.size %]
<li>
The account has been added to the
[%+ groups_added_to.join(', ') FILTER html %]
group[% 's' IF groups_added_to.size > 1 %].
</li>
[% END %]
[% IF groups_removed_from.size %]
<li>
The account has been removed from the
[%+ groups_removed_from.join(', ') FILTER html %]
group[% 's' IF groups_removed_from.size > 1 %].
</li>
[% END %]
[% IF groups_granted_rights_to_bless.size %]
<li>
The account has been granted rights to bless the
[%+ groups_granted_rights_to_bless.join(', ') FILTER html %]
group[% 's' IF groups_granted_rights_to_bless.size > 1 %].
</li>
[% END %]
[% IF groups_denied_rights_to_bless.size %]
<li>
The account has been denied rights to bless the
[%+ groups_denied_rights_to_bless.join(', ') FILTER html %]
group[% 's' IF groups_denied_rights_to_bless.size > 1 %].
</li>
[% END %]
</ul>
[% ELSE %]
[% title = "User $otheruser.login not changed" %]
You didn't request any change on the user account
[%+ otheruser.login FILTER html %].
[% END %]
[%# changed_fields.join(', ') %]
[% ELSIF message_tag == "account_deleted" %]
[% title = "User $otheruser.login deleted" %]
The user account [% otheruser.login FILTER html %] has been deleted
successfully.
[% ELSIF message_tag == "buglist_adding_field" %]
[% title = "Adding field to search page..." %]
[% link = "Click here if the page does not redisplay automatically." %]
......
......@@ -108,6 +108,8 @@
[% IF group %] and [% END %]
[% IF reason == "cant_bless" %]
you don't have permissions to put people in or out of any group,
[% ELSIF reason == "not_visible" %]
there are visibility restrictions on certain user groups,
[% END %]
[% END %]
......@@ -146,6 +148,8 @@
products
[% ELSIF object == "reports" %]
whine reports
[% ELSIF object == "user" %]
the user you specified
[% ELSIF object == "users" %]
users
[% ELSIF object == "versions" %]
......@@ -1046,6 +1050,16 @@
[% title = "Deletion not activated" %]
Sorry, the deletion of user accounts is not allowed.
[% ELSIF error == "user_has_responsibility" %]
[% title = "Can't Delete User Account" %]
The user you want to delete is set up for roles as initial [% terms.bug %]
owner or QA contact for at least one component.
For this reason, you cannot delete the account at this time.
[% ELSIF error == "user_login_required" %]
[% title = "Login Name Required" %]
You must enter a login name for the new user.
[% ELSIF error == "votes_must_be_nonnegative" %]
[% title = "Votes Must Be Non-negative" %]
Only use non-negative numbers for your [% terms.bug %] votes.
......
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