From 919e930aa9279b3c5cd12b593889cd6de79d67bf Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Fri, 12 Jun 2015 15:19:00 -0700 Subject: rt 4.0.23 --- rt/share/html/Admin/Users/CustomFields.html | 2 +- rt/share/html/Admin/Users/GnuPG.html | 2 +- rt/share/html/Admin/Users/History.html | 2 +- rt/share/html/Admin/Users/Memberships.html | 2 +- rt/share/html/Admin/Users/Modify.html | 2 +- rt/share/html/Admin/Users/MyRT.html | 2 +- rt/share/html/Admin/Users/index.html | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) (limited to 'rt/share/html/Admin/Users') diff --git a/rt/share/html/Admin/Users/CustomFields.html b/rt/share/html/Admin/Users/CustomFields.html index b57cfa522..1c6473b14 100644 --- a/rt/share/html/Admin/Users/CustomFields.html +++ b/rt/share/html/Admin/Users/CustomFields.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Admin/Users/GnuPG.html b/rt/share/html/Admin/Users/GnuPG.html index 71cf22b54..3ca593a5d 100644 --- a/rt/share/html/Admin/Users/GnuPG.html +++ b/rt/share/html/Admin/Users/GnuPG.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Admin/Users/History.html b/rt/share/html/Admin/Users/History.html index d6e4aa3e8..752b20f83 100644 --- a/rt/share/html/Admin/Users/History.html +++ b/rt/share/html/Admin/Users/History.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Admin/Users/Memberships.html b/rt/share/html/Admin/Users/Memberships.html index ba88905ce..74f10b813 100644 --- a/rt/share/html/Admin/Users/Memberships.html +++ b/rt/share/html/Admin/Users/Memberships.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Admin/Users/Modify.html b/rt/share/html/Admin/Users/Modify.html index 2483e5b7f..62d828c18 100755 --- a/rt/share/html/Admin/Users/Modify.html +++ b/rt/share/html/Admin/Users/Modify.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Admin/Users/MyRT.html b/rt/share/html/Admin/Users/MyRT.html index 1836b43df..c9a193aec 100644 --- a/rt/share/html/Admin/Users/MyRT.html +++ b/rt/share/html/Admin/Users/MyRT.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) diff --git a/rt/share/html/Admin/Users/index.html b/rt/share/html/Admin/Users/index.html index 31e1c122d..ec3368b3b 100755 --- a/rt/share/html/Admin/Users/index.html +++ b/rt/share/html/Admin/Users/index.html @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) -- cgit v1.2.1 From 1c538bfabc2cd31f27067505f0c3d1a46cba6ef0 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Thu, 9 Jul 2015 22:18:55 -0700 Subject: RT 4.2.11, ticket#13852 --- rt/share/html/Admin/Users/DashboardsInMenu.html | 118 ++++++++++ rt/share/html/Admin/Users/GnuPG.html | 116 ---------- rt/share/html/Admin/Users/History.html | 5 +- rt/share/html/Admin/Users/Keys.html | 131 +++++++++++ rt/share/html/Admin/Users/Memberships.html | 90 +------- rt/share/html/Admin/Users/Modify.html | 287 +++++++++--------------- rt/share/html/Admin/Users/MyRT.html | 11 +- rt/share/html/Admin/Users/index.html | 25 +-- 8 files changed, 369 insertions(+), 414 deletions(-) create mode 100644 rt/share/html/Admin/Users/DashboardsInMenu.html delete mode 100644 rt/share/html/Admin/Users/GnuPG.html create mode 100644 rt/share/html/Admin/Users/Keys.html (limited to 'rt/share/html/Admin/Users') diff --git a/rt/share/html/Admin/Users/DashboardsInMenu.html b/rt/share/html/Admin/Users/DashboardsInMenu.html new file mode 100644 index 000000000..bdbcc9816 --- /dev/null +++ b/rt/share/html/Admin/Users/DashboardsInMenu.html @@ -0,0 +1,118 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2015 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 +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# 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 &> +<& /Elements/Tabs &> + +<& /Elements/ListActions, actions => \@actions &> + +
+ + + +
+ +
+ +% for my $pane (@panes) { +<&|/Widgets/TitleBox, title => loc('Dashboards in menu'), bodyclass => "" &> +<& /Widgets/SelectionBox:show, self => $pane &> +
+% } + +<%init> +my @actions; +my $UserObj = RT::User->new($session{'CurrentUser'}); +$UserObj->Load($id) || Abort("Couldn't load user '" . ($id || '') . "'"); +my $title = loc("Dashboards in menu for the user [_1]", $UserObj->Name); + +if ($ARGS{Reset}) { + my ($ok, $msg) = $UserObj->SetPreferences('DashboardsInMenu', {}); + push @actions, $ok ? loc('Preferences saved for user [_1].', $UserObj->Name) : $msg; +} + +my ($default_dashboards) = +RT::System->new($session{'CurrentUser'})->Attributes->Named('DashboardsInMenu'); + +my $user = RT::CurrentUser->new( $session{CurrentUser} ); +$user->Load( $UserObj->id ); +my @dashboards = + map { [ $_->id, $_->Name ] } + $m->comp( "/Dashboards/Elements/ListOfDashboards", User => $user, IncludeSuperuserGroups => 0 ); + + +my $current_pref = + $UserObj->Preferences( 'DashboardsInMenu', + $default_dashboards ? $default_dashboards->Content : () ); +my $current_portlets = + $current_pref && $current_pref->{dashboards} + ? $current_pref->{dashboards} + : []; + +my @panes = $m->comp( + '/Admin/Elements/ConfigureDashboardsInMenu', + Action => "DashboardsInMenu.html?id=$id", + panes => ['dashboards_in_menu'], + items => \@dashboards, + current_portlets => $current_portlets, + OnSave => sub { + my ($conf) = @_; + my ( $ok, $msg ) = + $UserObj->SetPreferences( 'DashboardsInMenu', $conf ); + push @actions, + $ok ? loc('Preferences saved for dashboards in menu.') : $msg; + } +); + + +$m->comp( '/Widgets/SelectionBox:process', %ARGS, self => $_ ) + for @panes; + + +<%ARGS> +$id => undef + diff --git a/rt/share/html/Admin/Users/GnuPG.html b/rt/share/html/Admin/Users/GnuPG.html deleted file mode 100644 index 3ca593a5d..000000000 --- a/rt/share/html/Admin/Users/GnuPG.html +++ /dev/null @@ -1,116 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2015 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 -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# 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 &> -<& /Elements/Tabs &> - -<& /Elements/ListActions, actions => \@results &> - -% if ( $email ) { -<& /Admin/Elements/ShowKeyInfo, EmailAddress => $email &> -% } else { -

<% loc("User has empty email address") %>

-% } - - -
- - -<&|/Widgets/TitleBox, title => 'GnuPG private key'&> -<& /Widgets/Form/Select, - Name => 'PrivateKey', - Description => loc('Private Key'), - Values => \@potential_keys, - CurrentValue => $UserObj->PrivateKey, - DefaultLabel => loc('No private key'), -&> - - -<& /Elements/Submit, Name => 'Update', Label => loc('Save Changes') &> -
-<%ARGS> -$id => undef -$Update => undef - -<%INIT> -return unless RT->Config->Get('GnuPG')->{'Enable'}; - -require RT::Crypt::GnuPG; - -my @results; - -my $UserObj = RT::User->new( $session{'CurrentUser'} ); -$UserObj->Load( $id ); -unless ( $UserObj->id ) { - Abort( loc("Couldn't load user #[_1]", $id) ); -} -$id = $ARGS{'id'} = $UserObj->id; - -my $email = $UserObj->EmailAddress; -my %keys_meta = RT::Crypt::GnuPG::GetKeysForSigning( $email ); -my @potential_keys = map $_->{'Key'}, @{ $keys_meta{'info'} || [] }; - -$ARGS{'PrivateKey'} = $m->comp('/Widgets/Form/Select:Process', - Name => 'PrivateKey', - Arguments => \%ARGS, - Default => 1, -); - -if ( $Update ) { - if (not $ARGS{'PrivateKey'} or grep {$_ eq $ARGS{'PrivateKey'}} @potential_keys) { - if (($ARGS{'PrivateKey'}||'') ne ($UserObj->PrivateKey||'')) { - my ($status, $msg) = $UserObj->SetPrivateKey( $ARGS{'PrivateKey'} ); - push @results, $msg; - } - } else { - push @results, loc("Invalid key [_1] for address '[_2]'", $ARGS{'PrivateKey'}, $email); - } -} - -my $title = loc("[_1]'s GnuPG keys",$UserObj->Name); - - diff --git a/rt/share/html/Admin/Users/History.html b/rt/share/html/Admin/Users/History.html index 752b20f83..cda3f736e 100644 --- a/rt/share/html/Admin/Users/History.html +++ b/rt/share/html/Admin/Users/History.html @@ -48,9 +48,10 @@ <& /Admin/Elements/Header, Title => $title &> <& /Elements/Tabs &> -<& /Ticket/Elements/ShowHistory, - Ticket => $UserObj, +<& /Elements/ShowHistory, + Object => $UserObj, ShowDisplayModes => 0, + DisplayPath => 'History.html', &> <%INIT> diff --git a/rt/share/html/Admin/Users/Keys.html b/rt/share/html/Admin/Users/Keys.html new file mode 100644 index 000000000..699075904 --- /dev/null +++ b/rt/share/html/Admin/Users/Keys.html @@ -0,0 +1,131 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2015 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 +%# you are the copyright holder for those contributions and you grant +%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, +%# 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 => loc("[_1]'s encryption keys",$UserObj->Name) &> +<& /Elements/Tabs &> + +<& /Elements/ListActions, actions => \@results &> + +% if ( $email ) { +<& /Admin/Elements/ShowKeyInfo, EmailAddress => $email &> +% } else { +

<% loc("User has empty email address") %>

+% } + +
+ + +% if (RT::Crypt->UseForOutgoing eq 'GnuPG') { +<&|/Widgets/TitleBox, title => loc('GnuPG private key') &> +<& /Widgets/Form/Select, + Name => 'PrivateKey', + Description => loc('Private Key'), + Values => \@potential_keys, + CurrentValue => $UserObj->PrivateKey, + DefaultLabel => loc('No private key'), +&> + +% } + +% if (RT::Crypt->UseForOutgoing eq 'SMIME') { +<&|/Widgets/TitleBox, title => loc('SMIME Certificate') &> + + +% } + +<& /Elements/Submit, Name => 'Update', Label => loc('Save Changes') &> +
+ +<%ARGS> +$id => undef +$Update => undef + +<%INIT> +return unless RT->Config->Get('Crypt')->{'Enable'}; + +my @results; + +my $UserObj = RT::User->new( $session{'CurrentUser'} ); +$UserObj->Load( $id ); +unless ( $UserObj->id ) { + Abort( loc("Couldn't load user #[_1]", $id) ); +} +$id = $ARGS{'id'} = $UserObj->id; + +my @potential_keys; +my $email = $UserObj->EmailAddress; + +if (RT::Crypt->UseForOutgoing eq 'GnuPG') { + my %keys_meta = RT::Crypt->GetKeysForSigning( Signer => $email, Protocol => 'GnuPG' ); + @potential_keys = map $_->{'Key'}, @{ $keys_meta{'info'} || [] }; + + $ARGS{'PrivateKey'} = $m->comp('/Widgets/Form/Select:Process', + Name => 'PrivateKey', + Arguments => \%ARGS, + Default => 1, + ); + + if ( $Update ) { + if (not $ARGS{'PrivateKey'} or grep {$_ eq $ARGS{'PrivateKey'}} @potential_keys) { + if (($ARGS{'PrivateKey'}||'') ne ($UserObj->PrivateKey||'')) { + my ($status, $msg) = $UserObj->SetPrivateKey( $ARGS{'PrivateKey'} ); + push @results, $msg; + } + } else { + push @results, loc("Invalid key [_1] for address '[_2]'", $ARGS{'PrivateKey'}, $email); + } + } +} + +if (RT::Crypt->UseForOutgoing eq 'SMIME') { + if ( $Update and ($ARGS{'SMIMECertificate'}||'') ne ($UserObj->SMIMECertificate||'') ) { + my ($status, $msg) = $UserObj->SetSMIMECertificate( $ARGS{'SMIMECertificate'} ); + push @results, $msg; + } +} + + diff --git a/rt/share/html/Admin/Users/Memberships.html b/rt/share/html/Admin/Users/Memberships.html index 74f10b813..1910ff5c2 100644 --- a/rt/share/html/Admin/Users/Memberships.html +++ b/rt/share/html/Admin/Users/Memberships.html @@ -45,92 +45,4 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} -<& /Admin/Elements/Header, Title => $title &> -<& /Elements/Tabs &> - -<& /Elements/ListActions, actions => \@results &> - -
- - -

<&|/l&>Groups the user is member of (check box to delete)

- -<& /Elements/CollectionList, - OrderBy => 'Name', - Order => 'ASC', - %ARGS, - Rows => 20, - DisplayFormat => "__CheckBox.{Delete}__,$Format", - Format => $Format, - Collection => $is_member, - AllowSorting => 1, - PassArguments => [qw(Format Rows Page Order OrderBy id)], -&> - -

<&|/l&>Groups the user is not member of (check box to add)

- -<& /Elements/CollectionList, - OrderBy => 'Name', - Order => 'ASC', - Rows => 20, - %ARGS, - DisplayFormat => "__CheckBox.{Add}__,'__HasMemberRecursively.{$id}__/TITLE:Recursive',$Format", - Format => $Format, - Collection => $is_not_member, - AllowSorting => 1, - PassArguments => [qw(Format Rows Page Order OrderBy id)], -&> - -<& /Elements/Submit, Label => loc('Update'), Name => 'Update' &> - -
- -<%INIT> -my $UserObj = RT::User->new($session{'CurrentUser'}); -$UserObj->Load( $id ) || Abort("Couldn't load user '$id'"); - -my $title = loc("Memberships of the user [_1]", $UserObj->Name); - -my @results; -if ( $Update ) { - foreach my $gid( @Add ) { - my $group = RT::Group->new( $session{'CurrentUser'} ); - $group->LoadUserDefinedGroup( $gid ); - unless ( $group->id ) { - push @results, loc( "Couldn't load group #[_1]", $gid ); - next; - } - my ($status, $msg) = $group->AddMember( $id ); - push @results, $msg; - } - foreach my $gid( @Delete ) { - my $group = RT::Group->new( $session{'CurrentUser'} ); - $group->LoadUserDefinedGroup( $gid ); - unless ( $group->id ) { - push @results, loc( "Couldn't load group #[_1]", $gid ); - next; - } - my ($status, $msg) = $group->DeleteMember( $id ); - push @results, $msg; - } -} - -my $is_member = RT::Groups->new( $session{'CurrentUser'} ); -$is_member->LimitToUserDefinedGroups; -$is_member->WithMember( PrincipalId => $UserObj->Id ); - -my $is_not_member = RT::Groups->new( $session{'CurrentUser'} ); -$is_not_member->LimitToUserDefinedGroups; -$is_not_member->WithoutMember( PrincipalId => $UserObj->Id ); - -$Format ||= RT->Config->Get('AdminSearchResultFormat')->{'Groups'}; - -<%ARGS> -$id => undef - -$Update => 0, -@Add => (), -@Delete => (), - -$Format => undef - +<& /Admin/Elements/MembershipsPage, %ARGS &> diff --git a/rt/share/html/Admin/Users/Modify.html b/rt/share/html/Admin/Users/Modify.html index 62d828c18..fc944dc3e 100755 --- a/rt/share/html/Admin/Users/Modify.html +++ b/rt/share/html/Admin/Users/Modify.html @@ -50,7 +50,7 @@ <& /Elements/ListActions, actions => \@results &> -
+ %if ($Create) { % } else { @@ -60,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||$Lang &> +<& /Elements/SelectLang, Name => 'Lang', Default => $UserObj->Lang//$ARGS{Lang} &>
-<&|/l&>Extra info: +<&|/l&>Extra info: - +
+
<&| /Widgets/TitleBox, title => loc('Customers') &> @@ -107,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 (<&|/l&>Privileged)
+ /> +
<& /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--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' &> + % } @@ -237,114 +237,69 @@ <%INIT> my $UserObj = RT::User->new($session{'CurrentUser'}); -my ($title, $PrivilegedChecked, $EnabledChecked, $Disabled, $result, @results); ++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) { $title = loc("Create a new user"); -} -else { - - 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; - 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; } -} - - -$m->callback( %ARGS, CallbackName => 'BeforeUpdate', User => $UserObj, ARGSRef => \%ARGS, Results => \@results ); +} 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( @@ -359,16 +314,6 @@ if ( $UserObj->Id ) { } } - -# Do some setup for the ui -unless ( $UserObj->id && $UserObj->Disabled ) { - $EnabledChecked = 'checked="checked"'; -} - -if ((!$Create && $UserObj->Privileged()) or (!$UserObj->Id and $Privileged)) { - $PrivilegedChecked = 'checked="checked"'; -} - # This code does automatic redirection if any updates happen. MaybeRedirectForResults( Actions => \@results, @@ -380,36 +325,6 @@ MaybeRedirectForResults( <%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 diff --git a/rt/share/html/Admin/Users/MyRT.html b/rt/share/html/Admin/Users/MyRT.html index c9a193aec..37d4b3b46 100644 --- a/rt/share/html/Admin/Users/MyRT.html +++ b/rt/share/html/Admin/Users/MyRT.html @@ -48,8 +48,6 @@ <& /Admin/Elements/Header, Title => $title &> <& /Elements/Tabs &> -<& /Widgets/SelectionBox:header, nojs => 1 &> - <& /Elements/ListActions, actions => \@actions &> @@ -62,7 +60,7 @@ % for my $pane (@panes) { <&|/Widgets/TitleBox, title => loc('RT at a glance').': '.loc($pane->{Name}), bodyclass => "" &> -<& /Widgets/SelectionBox:show, self => $pane, nojs => 1 &> +<& /Widgets/SelectionBox:show, self => $pane &>
% } @@ -100,7 +98,8 @@ for my $object (@objs) { else { my $oid = ref($object).'-'.$object->Id.'-SavedSearch-'.$search->Id; my $type = ($SearchType eq 'Ticket') - ? 'Saved Search' : $SearchType; # loc + ? 'Saved Search' # loc + : $SearchType; push @items, ["saved-$oid", loc($type).": $loc_desc"]; } } @@ -108,7 +107,7 @@ for my $object (@objs) { my @panes = $m->comp( '/Admin/Elements/ConfigureMyRT', - panes => ['body', 'summary'], + panes => ['body', 'sidebar'], Action => "MyRT.html?id=$id", items => \@items, current_portlets => $portlets, @@ -119,7 +118,7 @@ my @panes = $m->comp( } ); -$m->comp( '/Widgets/SelectionBox:process', %ARGS, self => $_, nojs => 1 ) +$m->comp( '/Widgets/SelectionBox:process', %ARGS, self => $_ ) for @panes; diff --git a/rt/share/html/Admin/Users/index.html b/rt/share/html/Admin/Users/index.html index ec3368b3b..94d0fa578 100755 --- a/rt/share/html/Admin/Users/index.html +++ b/rt/share/html/Admin/Users/index.html @@ -58,19 +58,13 @@ <&|/l&>Go to user - +
@@ -81,8 +75,8 @@ jQuery(function(){ % } <&|/l&>Find all users whose <& /Elements/SelectUsers, %ARGS, Fields => \@fields &>
- /> -<&|/l&>Include disabled users in search. + /> +
@@ -95,7 +89,7 @@ jQuery(function(){ <& /Elements/CollectionList, OrderBy => 'Name', Order => 'ASC', - Rows => 100, + Rows => $Rows, %ARGS, Format => $Format, Collection => $users, @@ -135,13 +129,14 @@ else { } $Format ||= RT->Config->Get('AdminSearchResultFormat')->{'Users'}; +my $Rows = RT->Config->Get('AdminSearchResultRows')->{'Users'} || 50; # Build up the list of fields to display for searching my $i = 0; my %sorted = map { $_ => $i++ } qw( Name EmailAddress RealName Organization NickName WorkPhone HomePhone MobilePhone PagerPhone Address1 Address2 City State Zip Country - Timezone Lang Gecos Comments + Timezone Lang Gecos SMIMECertificate Comments ); my @attrs = sort { $sorted{$a} <=> $sorted{$b} } -- cgit v1.2.1