X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FAdmin%2FUsers%2FModify.html;h=205a6841f6aa9f47454dc9bde30c0a8ad2a5a019;hp=70650a47d76d3a71653faa4258a3279046909180;hb=7322f2afedcc2f427e997d1535a503613a83f088;hpb=0fb307c305e4bc2c9c27dc25a3308beae3a4d33c diff --git a/rt/share/html/Admin/Users/Modify.html b/rt/share/html/Admin/Users/Modify.html index 70650a47d..205a6841f 100755 --- a/rt/share/html/Admin/Users/Modify.html +++ b/rt/share/html/Admin/Users/Modify.html @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +%# +%# %# (Except where explicitly superseded by other copyright notices) -%# -%# +%# +%# %# LICENSE: -%# +%# %# This work is made available to you under the terms of Version 2 of %# the GNU General Public License. A copy of that license should have %# been provided with this software, but in any event can be snarfed %# from www.gnu.org. -%# +%# %# This work is distributed in the hope that it will be useful, but %# WITHOUT ANY WARRANTY; without even the implied warranty of %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU %# General Public License for more details. -%# +%# %# You should have received a copy of the GNU General Public License %# along with this program; if not, write to the Free Software %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# CONTRIBUTION SUBMISSION POLICY: -%# +%# %# (The following paragraph is not intended to limit the rights granted %# to you to modify and distribute this software under the terms of %# the GNU General Public License and is only of importance to you if %# you choose to contribute your changes and enhancements to the %# community by submitting them to Best Practical Solutions, LLC.) -%# +%# %# By intentionally submitting any modifications, corrections or %# derivatives to this work, or any other work intended for use with %# Request Tracker, to Best Practical Solutions, LLC, you confirm that @@ -43,18 +43,14 @@ %# royalty-free, perpetual, license to use, copy, create derivative %# works based on those contributions, and sublicense and distribute %# those contributions and any derivatives thereof. -%# +%# %# END BPS TAGGED BLOCK }}} <& /Admin/Elements/Header, Title => $title &> -<& /Admin/Elements/UserTabs, - id => $id, - UserObj => $UserObj, - current_tab => $current_tab, - Title => $title &> +<& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &> -
+ %if ($Create) { % } else { @@ -64,46 +60,48 @@ -<&| /Widgets/TitleBox, title => loc('Identity') &> +<&| /Widgets/TitleBox, title => loc('Identity'), class => 'user-info-identity' &> +<& /Elements/EditCustomFields, Object => $UserObj, Grouping => 'Identity', InTable => 1 &>
<&|/l&>Username: - <&|/l&>(required) + <&|/l&>(required)
<&|/l&>Email: - +
-<&|/l&>Real Name: +<&|/l&>Real Name: - +
-<&|/l&>Nickname: +<&|/l&>Nickname: - +
-<&|/l&>Unix login: +<&|/l&>Unix login: - +
-<&|/l&>Language: +<&|/l&>Language: -<& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang &> +<& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang//$ARGS{Lang} &>
-<&|/l&>Extra info: +<&|/l&>Extra info: - +
+
<&| /Widgets/TitleBox, title => loc('Customers') &> @@ -111,119 +109,117 @@
-<&| /Widgets/TitleBox, title => loc('Access control') &> +<&| /Widgets/TitleBox, title => loc('Access control'), class => 'user-info-access-control' &> - /> -<&|/l&>Let this user access RT
+Id && $UserObj->Disabled) ? '' : 'checked="checked"' |n%> /> +
+% my $PrivilegedChecked = ((!$Create && $UserObj->Privileged()) or (!$UserObj->Id and $ARGS{Privileged})) ? 'checked="checked"' : ''; - /> <&|/l&>Let this user be granted rights
+ /> +
<& /Elements/EditPassword, User => $UserObj, Name => [qw(CurrentPass Pass1 Pass2)], &> + +<& /Elements/EditCustomFields, Object => $UserObj, Grouping => 'Access control' &> + % $m->callback( %ARGS, CallbackName => 'LeftColumnBottom', UserObj => $UserObj ); -<&| /Widgets/TitleBox, title => loc('Location') &> +<&| /Widgets/TitleBox, title => loc('Location'), class => 'user-info-location' &> + +<& /Elements/EditCustomFields, Object => $UserObj, Grouping => 'Location', InTable => 1 &> +
-<&|/l&>Organization: +<&|/l&>Organization: - +
-<&|/l&>Address1: +<&|/l&>Address1: - +
-<&|/l&>Address2: +<&|/l&>Address2: - +
-<&|/l&>City: +<&|/l&>City: - +
-<&|/l&>State: +<&|/l&>State: - +
-<&|/l&>Zip: +<&|/l&>Zip: - +
-<&|/l&>Country: +<&|/l&>Country: - +

-<&| /Widgets/TitleBox, title => loc('Phone numbers') &> +<&| /Widgets/TitleBox, title => loc('Phone numbers'), class => 'user-info-phones' &> + +<& /Elements/EditCustomFields, Object => $UserObj, Grouping => 'Phones', InTable => 1 &> +
-<&|/l&>Residence: +<&|/l&>Residence: -
+
-<&|/l&>Work: +<&|/l&>Work: -
+
-<&|/l&>Mobile: +<&|/l&>Mobile: -
+
-<&|/l&>Pager: +<&|/l&>Pager: -
+

-<&| /Widgets/TitleBox, title => loc('Custom Fields') &> - -% my $CFs = $UserObj->CustomFields; -% while (my $CF = $CFs->Next) { - -% } -
-<% loc($CF->Name) %>: - -% if ($UserObj->id) { -<& /Elements/EditCustomField, %ARGS, Object => $UserObj, CustomField => $CF &> -% } else { -<& /Elements/EditCustomField, %ARGS, NamePrefix => 'Object-RT::User-new-CustomField-', CustomField => $CF &> -% } -
- + +<& /Elements/EditCustomFieldCustomGroupings, Object => $UserObj &> + % $m->callback( %ARGS, CallbackName => 'RightColumnBottom', UserObj => $UserObj ); -<&| /Widgets/TitleBox, title => loc('Comments about this user') &> - +<&| /Widgets/TitleBox, title => loc('Comments about this user'), class => 'user-info-comments' &> + %if (!$Create && $UserObj->Privileged) {
-<&| /Widgets/TitleBox, title => loc('Signature') &> - +<&| /Widgets/TitleBox, title => loc('Signature'), class => 'user-info-signature' &> + % } @@ -240,125 +236,70 @@ <%INIT> -my $current_tab; -my $UserObj = new RT::User($session{'CurrentUser'}); -my ($title, $PrivilegedChecked, $EnabledChecked, $Disabled, $result, @results); +my $UserObj = RT::User->new($session{'CurrentUser'}); ++my ($title, @results); my ($val, $msg); +$ARGS{Privileged} = $ARGS{Privileged} ? 1 : 0; +delete $ARGS{Privileged} unless $ARGS{SetPrivileged}; + +$ARGS{Disabled} = $ARGS{Enabled} ? 0 : 1; +delete $ARGS{Disabled} unless $ARGS{SetEnabled}; + +my @fields = qw(Name Comments Signature EmailAddress FreeformContactInfo + Organization RealName NickName Lang EmailEncoding WebEncoding + ExternalContactInfoId ContactInfoSystem Gecos ExternalAuthId + AuthSystem HomePhone WorkPhone MobilePhone PagerPhone Address1 + Address2 City State Zip Country + ); + if ($Create) { - $current_tab = 'Admin/Users/Modify.html?Create=1'; $title = loc("Create a new user"); -} -else { - - $current_tab = 'Admin/Users/Modify.html?id='.$id if $id; - - if ( defined $id && $id eq 'new') { - ( $val, $msg ) = $UserObj->Create( - Name => $Name, - EmailAddress => $ARGS{'EmailAddress'}, - Name => $ARGS{'Name'}, - Comments => $ARGS{'Comments'}, - Signature => $ARGS{'Signature'}, - EmailAddress => $ARGS{'EmailAddress'}, - FreeformContactInfo => $ARGS{'FreeformContactInfo'}, - Organization => $ARGS{'Organization'}, - RealName => $ARGS{'RealName'}, - NickName => $ARGS{'NickName'}, - Lang => $ARGS{'Lang'}, - EmailEncoding => $ARGS{'EmailEncoding'}, - WebEncoding => $ARGS{'WebEncoding'}, - ExternalContactInfoId => $ARGS{'ExternalContactInfoId'}, - ContactInfoSystem => $ARGS{'ContactInfoSystem'}, - Gecos => $ARGS{'Gecos'}, - ExternalAuthId => $ARGS{'ExternalAuthId'}, - AuthSystem => $ARGS{'AuthSystem'}, - HomePhone => $ARGS{'HomePhone'}, - WorkPhone => $ARGS{'WorkPhone'}, - MobilePhone => $ARGS{'MobilePhone'}, - PagerPhone => $ARGS{'PagerPhone'}, - Address1 => $ARGS{'Address1'}, - Address2 => $ARGS{'Address2'}, - City => $ARGS{'City'}, - State => $ARGS{'State'}, - Zip => $ARGS{'Zip'}, - Country => $ARGS{'Country'}, - Privileged => $ARGS{'Privileged'}, - Disabled => ($ARGS{'Enabled'} ? 0 : 1) - ); - - if ($val) { - push @results, $msg; - foreach my $key ( keys %ARGS) { - # Convert custom fields on the "new" object to custom fields on the one we've just created - if ($key =~ /^Object-RT::User-new-CustomField-(.*)$/) { - $ARGS{'Object-RT::User-'.$val.'-CustomField-'.$1} = delete $ARGS{$key}; - } - } - push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $UserObj ); - } else { - push @results, loc('User could not be created: [_1]', $msg); - } - } else { - $UserObj->Load($id) || $UserObj->Load($Name) - || Abort("Couldn't load user '" . ( $Name || '') . "'"); - $val = $UserObj->Id(); - } +} elsif ( defined $id && $id eq 'new') { + ( $val, $msg ) = $UserObj->Create( + (map {($_ => $ARGS{$_})} @fields), + Privileged => $ARGS{'Privileged'}, + Disabled => $ARGS{'Disabled'}, + ); if ($val) { - $title = loc("Modify the user [_1]", $UserObj->Name); - } - - # If the create failed - else { - $title = loc("Create a new user"); - $Create = 1; + push @results, $msg; + push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $UserObj ); + $title = loc("Modify the user [_1]", $UserObj->Name); + } else { + push @results, loc('User could not be created: [_1]', $msg); + $title = loc("Create a new user"); + $Create = 1; } -} - - +} else { + $UserObj->Load($id) || $UserObj->Load($ARGS{Name}) + || Abort("Couldn't load user '" . ( $ARGS{Name} || '') . "'"); + $title = loc("Modify the user [_1]", $UserObj->Name); -# If we have a user to modify, lets try. -if ($UserObj->Id && $id ne 'new') { - - my @fields = qw(Name Comments Signature EmailAddress FreeformContactInfo - Organization RealName NickName Lang EmailEncoding WebEncoding - ExternalContactInfoId ContactInfoSystem Gecos ExternalAuthId - AuthSystem HomePhone WorkPhone MobilePhone PagerPhone Address1 - Address2 City State Zip Country - ); + $m->callback( %ARGS, CallbackName => 'BeforeUpdate', User => $UserObj, ARGSRef => \%ARGS, Results => \@results ); my @fieldresults = UpdateRecordObject ( AttributesRef => \@fields, - Object => $UserObj, - ARGSRef => \%ARGS ); + Object => $UserObj, + ARGSRef => \%ARGS ); push (@results,@fieldresults); push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS, Object => $UserObj ); #deal with freeside customer links push @results, ProcessObjectCustomers( ARGSRef => \%ARGS, Object => $UserObj ); - # {{{ Deal with special fields: Privileged, Enabled - if ( $SetPrivileged and $Privileged != $UserObj->Privileged ) { - my ($code, $msg) = $UserObj->SetPrivileged($Privileged); - push @results, loc('Privileged status: [_1]', loc_fuzzy($msg)); + if ( defined $ARGS{Privileged} and $ARGS{Privileged} != ($UserObj->Privileged || 0) ) { + my ($code, $msg) = $UserObj->SetPrivileged($ARGS{Privileged}); + push @results, loc('Privileged status: [_1]', loc_fuzzy($msg)); } - #we're asking about enabled on the web page but really care about disabled. - $Disabled = $Enabled ? 0 : 1; - - if ( ($SetEnabled) and ( $Disabled != $UserObj->Disabled) ) { - my ($code, $msg) = $UserObj->SetDisabled($Disabled); + if ( defined $ARGS{Disabled} and $ARGS{Disabled} != $UserObj->Disabled ) { + my ($code, $msg) = $UserObj->SetDisabled($ARGS{Disabled}); push @results, $msg; } - - - # }}} } - -my %password_cond = $UserObj->CurrentUserRequireToSetPassword; if ( $UserObj->Id ) { # Deal with Password field my ($status, $msg) = $UserObj->SafeSetPassword( @@ -373,55 +314,17 @@ if ( $UserObj->Id ) { } } - -# Do some setup for the ui -unless ( $UserObj->id && $UserObj->Disabled ) { - $EnabledChecked = 'checked="checked"'; -} - -if (!$Create && $UserObj->Privileged()) { - $PrivilegedChecked = 'checked="checked"'; -} - -# set the id, so the the menu will have the right info, this needs to -# be done here to avoid creating and then modifying a user -$id = $UserObj->Id; +# This code does automatic redirection if any updates happen. +MaybeRedirectForResults( + Actions => \@results, + Arguments => { id => $UserObj->Id }, +) if $UserObj->Id; <%ARGS> $id => undef -$Name => undef -$Comments => undef -$Signature => undef -$EmailAddress => undef -$FreeformContactInfo => undef -$Organization => undef -$RealName => undef -$NickName => undef -$Privileged => undef -$SetPrivileged => undef -$Enabled => undef -$SetEnabled => undef -$Lang => undef -$EmailEncoding => undef -$WebEncoding => undef -$ExternalContactInfoId => undef -$ContactInfoSystem => undef -$Gecos => undef -$ExternalAuthId => undef -$AuthSystem => undef -$HomePhone => undef -$WorkPhone => undef -$MobilePhone => undef -$PagerPhone => undef -$Address1 => undef -$Address2 => undef -$City => undef -$State => undef -$Zip => undef -$Country => undef $CurrentPass => undef $Pass1 => undef $Pass2 => undef