Upgrade 4.0.17 clean.
[usit-rt.git] / share / html / Admin / Users / index.html
CommitLineData
84fb5b46
MKG
1%# BEGIN BPS TAGGED BLOCK {{{
2%#
3%# COPYRIGHT:
4%#
403d7b0b 5%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
84fb5b46
MKG
6%# <sales@bestpractical.com>
7%#
8%# (Except where explicitly superseded by other copyright notices)
9%#
10%#
11%# LICENSE:
12%#
13%# This work is made available to you under the terms of Version 2 of
14%# the GNU General Public License. A copy of that license should have
15%# been provided with this software, but in any event can be snarfed
16%# from www.gnu.org.
17%#
18%# This work is distributed in the hope that it will be useful, but
19%# WITHOUT ANY WARRANTY; without even the implied warranty of
20%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21%# General Public License for more details.
22%#
23%# You should have received a copy of the GNU General Public License
24%# along with this program; if not, write to the Free Software
25%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
26%# 02110-1301 or visit their web page on the internet at
27%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
28%#
29%#
30%# CONTRIBUTION SUBMISSION POLICY:
31%#
32%# (The following paragraph is not intended to limit the rights granted
33%# to you to modify and distribute this software under the terms of
34%# the GNU General Public License and is only of importance to you if
35%# you choose to contribute your changes and enhancements to the
36%# community by submitting them to Best Practical Solutions, LLC.)
37%#
38%# By intentionally submitting any modifications, corrections or
39%# derivatives to this work, or any other work intended for use with
40%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
41%# you are the copyright holder for those contributions and you grant
42%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
43%# royalty-free, perpetual, license to use, copy, create derivative
44%# works based on those contributions, and sublicense and distribute
45%# those contributions and any derivatives thereof.
46%#
47%# END BPS TAGGED BLOCK }}}
48<& /Admin/Elements/Header, Title => loc('Select a user') &>
49<& /Elements/Tabs &>
50
51<h1><% $caption %></h1>
52
53<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
54% foreach my $field( qw(Format Rows Page Order OrderBy) ) {
55% next unless defined $ARGS{ $field } && length $ARGS{ $field };
56<input type="hidden" name="<% $field %>" value="<% $ARGS{ $field } %>" />
57% }
58<input type="hidden" name="UserField" value="Name" />
59<input type="hidden" name="UserOp" value="LIKE" />
60<&|/l&>Go to user</&>
61<input type="text" name="UserString" value="" id="autocomplete-UserString" />
62<script type="text/javascript">
63jQuery(function(){
64 jQuery("#autocomplete-UserString").autocomplete({
65 source: <% RT->Config->Get('WebPath') |n,j%>+"/Helpers/Autocomplete/Users?return=Name",
66 // Auto-submit once a user is chosen
67 select: function( event, ui ) {
68 jQuery(event.target).val(ui.item.value);
69 var form = jQuery(event.target).closest('form');
70 form.find('input[name=UserOp]').val('=');
71 form.submit();
72 }
01e3b242 73 }).addClass("autocompletes-user");
84fb5b46
MKG
74});
75</script>
76</form>
77
78<form method="post" action="<% RT->Config->Get('WebPath') %>/Admin/Users/index.html">
79% foreach my $field( qw(Format Rows Page Order OrderBy) ) {
80% next unless defined $ARGS{ $field } && length $ARGS{ $field };
81<input type="hidden" name="<% $field %>" value="<% $ARGS{ $field } %>" />
82% }
83<&|/l&>Find all users whose</&> <& /Elements/SelectUsers, %ARGS, Fields => \@fields &><br />
84<input type="checkbox" class="checkbox" name="FindDisabledUsers" value="1" <% $FindDisabledUsers? 'checked="checked"': '' %> />
85<&|/l&>Include disabled users in search.</&>
86<br />
87<div align="right"><input type="submit" class="button" value="<&|/l&>Go!</&>" /></div>
88</form>
89
90% unless ( $users->Count ) {
91<em><&|/l&>No users matching search criteria found.</&></em>
92% } else {
93<p><&|/l&>Select a user</&>:</p>
94
95<& /Elements/CollectionList,
96 OrderBy => 'Name',
97 Order => 'ASC',
98 Rows => 100,
99 %ARGS,
100 Format => $Format,
101 Collection => $users,
102 AllowSorting => 1,
103 PassArguments => [qw(Format Rows Page Order OrderBy UserString UserOp UserField IdLike EmailLike FindDisabledUsers)],
104&>
105
106% }
107
108<%INIT>
109my $caption;
110my $users = RT::Users->new( $session{'CurrentUser'} );
111$users->FindAllRows if $FindDisabledUsers;
112
113if ( defined($UserString) && length $UserString ) {
114 $caption = loc("Users matching search criteria");
115 if ( $UserField =~ /^CustomField-(\d+)/ ) {
116 $users->LimitCustomField(
117 CUSTOMFIELD => $1,
118 OPERATOR => $UserOp,
119 VALUE => $UserString,
120 );
121 }
122 else {
123 $users->Limit(
124 FIELD => $UserField,
125 OPERATOR => $UserOp,
126 VALUE => $UserString,
127 );
128 }
129 RT::Interface::Web::Redirect(RT->Config->Get('WebURL')."Admin/Users/Modify.html?id=".$users->First->id)
130 if $users->Count == 1;
131}
132else {
133 $caption = loc("Privileged users");
134 $users->LimitToPrivileged;
135}
136
137$Format ||= RT->Config->Get('AdminSearchResultFormat')->{'Users'};
138
139# Build up the list of fields to display for searching
140my $i = 0;
141my %sorted = map { $_ => $i++ } qw(
142 Name EmailAddress RealName Organization NickName WorkPhone HomePhone
143 MobilePhone PagerPhone Address1 Address2 City State Zip Country
144 Timezone Lang Gecos Comments
145);
146
147my @attrs = sort { $sorted{$a} <=> $sorted{$b} }
148 grep { !/(?:^id$|ContactInfo|Encoding|^External|System|PGPKey|AuthToken|^Last|^Creat(?:ed|or)$|^Signature$)/ }
149 RT::User->ReadableAttributes;
150my @fields;
151
152for my $name (@attrs) {
153 my $label = $m->comp(
154 '/Elements/ColumnMap',
155 Class => 'RT__User',
156 Name => $name,
157 Attr => 'title'
158 );
159
160 push @fields, [ $name, $label || $name ];
161}
162</%INIT>
163<%ARGS>
164$Format => undef,
165
166$UserString => undef
167$UserOp => '='
168$UserField => 'Name'
169$IdLike => undef
170$EmailLike => undef
171
172$FindDisabledUsers => 0
173</%ARGS>