rt 4.2.15
[freeside.git] / rt / share / html / Elements / SelectOwner
index 6bdb240..48f6be0 100755 (executable)
@@ -1,40 +1,40 @@
 %# BEGIN BPS TAGGED BLOCK {{{
-%# 
+%#
 %# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
-%#                                          <jesse@bestpractical.com>
-%# 
+%#
+%# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC
+%#                                          <sales@bestpractical.com>
+%#
 %# (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
 %# 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 }}}
-<select name="<%$Name%>" id="<%$Name%>">
-%if ($DefaultValue) {
-<option value=""<% !$Default ? qq[ selected="selected"] : '' |n %>><%$DefaultLabel%></option>
-%}
-% $Default = 0 unless defined $Default && $Default =~ /^\d+$/;
-% my @formatednames = sort {lc $a->[1] cmp lc $b->[1]} map {[$_, $m->scomp('/Elements/ShowUser', User => $_)]} @users;
-%foreach my $UserRef ( @formatednames)  {
-%my $User = $UserRef->[0];
-<option <% ( $User->Id == $Default) ? qq[ selected="selected"] : '' |n %>
-%if ($ValueAttribute eq 'id') {
-    value="<%$User->id%>"
-%} elsif ($ValueAttribute eq 'Name') {
-    value="<%$User->Name%>"
-%}
-><% $UserRef->[1] |n %></option>
-%}
-</select>
+<& "SelectOwner$Widget", %ARGS, Objects => \@objects &>
 <%INIT>
+my $Widget;
+if ( !$QueueObj && !$TicketObj && RT->Config->Get('AutocompleteOwnersForSearch') ) {
+    $Widget = 'Autocomplete';
+}
+$Widget ||= RT->Config->Get('AutocompleteOwners', $session{'CurrentUser'})
+                ? 'Autocomplete' : 'Dropdown';
 
 my @objects;
 if ($TicketObj) {
     @objects = ($TicketObj);
 } elsif ($QueueObj) {
     @objects = ($QueueObj);
-} elsif ($cfqueues) {
-    @objects = keys %{$cfqueues};
+} elsif (%Queues) {
+    for my $name (keys %Queues) {
+        my $q = RT::Queue->new($session{'CurrentUser'});
+        $q->Load($name);
+        push @objects, $q;
+    }
 } else {
-# Let's check rights on an empty queue object. that will do a search
-# for any queue.
+    # Let's check rights on an empty queue object. that will do a search
+    # for any queue.
     my $queue = RT::Queue->new( $session{'CurrentUser'} );
     push( @objects, $queue );
 }
 
-my %user_uniq_hash;
-
 $m->callback(
     %ARGS,
     objects      => \@objects,
     CallbackName => 'UpdateObjectList'
 );
-
-my $isSU = $session{CurrentUser}
-    ->HasRight( Right => 'SuperUser', Object => $RT::System );
-foreach my $object (@objects) {
-    my $Users = RT::Users->new( $session{CurrentUser} );
-    $Users->WhoHaveRight(
-        Right               => 'OwnTicket',
-        Object              => $object,
-        IncludeSystemRights => 1,
-        IncludeSuperusers   => $isSU
-    );
-    while ( my $User = $Users->Next() ) {
-        next
-            if ( $User->id == $RT::Nobody->id )
-            ;    # skip nobody here, so we can make them first later
-        $user_uniq_hash{ $User->Id() } = $User;
-    }
-}
-if ($Default && $Default != $RT::Nobody->id && !$user_uniq_hash{$Default}) {
-    $user_uniq_hash{$Default} = RT::User->new($session{CurrentUser});
-    $user_uniq_hash{$Default}->Load($Default);
-}
-
-my @users = sort { uc( $a->Name ) cmp uc( $b->Name ) } values %user_uniq_hash;
-unshift( @users, $RT::Nobody );
-
-$m->callback(
-    %ARGS,
-    objects      => \@objects,
-    CallbackName => 'UpdateObjectList'
-);
-
-
 </%INIT>
-
 <%ARGS>
-$QueueObj => undef
-$Name => undef
-$Default => 0
-$User => undef
-$TicketObj => undef
-$DefaultValue => 1
-$DefaultLabel => "-"
-$ValueAttribute => 'id'
-$cfqueues => undef
+$TicketObj  => undef
+$QueueObj   => undef
+%Queues     => ()
 </%ARGS>