rt 4.2.16
[freeside.git] / rt / share / html / Ticket / Elements / ShowRequestor
index b5d7c7d..4fea9b9 100755 (executable)
@@ -2,7 +2,7 @@
 %#
 %# COPYRIGHT:
 %#
-%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2019 Best Practical Solutions, LLC
 %#                                          <sales@bestpractical.com>
 %#
 %# (Except where explicitly superseded by other copyright notices)
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<%PERL>
-# Unsure sane default
-unless ( @$conditions ) {
-    foreach (RT::Queue->ActiveStatusArray()) {
-        push @$conditions, { cond => "Status = '$_'", name => loc($_) };
-    }
-}
-my $rows = 10;
-my $has_right_adminusers = $session{'CurrentUser'}->HasRight(
-    Object => $RT::System, Right => 'AdminUsers'
-);
-$has_right_adminusers &&= $session{'CurrentUser'}->HasRight(
-    Object => $RT::System, Right => 'ShowConfigTab'
-);
-my $people = $Ticket->Requestors->UserMembersObj;
-while ( my $requestor = $people->Next ) {
-    next if $requestor->Privileged;
-    my $name = $m->scomp('/Elements/ShowUser', User => $requestor);
-
-    my $tickets = RT::Tickets->new( $session{'CurrentUser'} );
-    $tickets->FromSQL( "Requestor.id = ". $requestor->id ." AND (".join( " OR ", map $_->{cond}, @$conditions).")" );
-    $tickets->RowsPerPage( $rows );
-    $tickets->OrderBy( FIELD => 'Priority', ORDER => 'DESC' );
-</%PERL>
+% if ($ShowTickets) {
+<script type="text/javascript">
+    jQuery(function() {
+        jQuery(".more-about-requestor-tickets").tabs({
+            cache: true,
+            collapsible: true,
+            active: <% $selected %>
+        });
+    });
+</script>
+% }
 
 <&| /Widgets/TitleBox,
-    title_href => $has_right_adminusers? RT->Config->Get('WebPath')."/Admin/Users/Modify.html?id=".$requestor->id: undef,
-    title_raw => loc("More about [_1]", $name),
+    title_raw => loc("More about the requestors"),
     class => 'ticket-info-requestor'
 &>
 
+<div id="requestor-accordion" class="user-accordion">
+
+% while ( my $requestor = $people->Next ) {
+<h3><a href="#"><& /Elements/ShowUser, User => $requestor, Link => 0 &></a>
+    <a class="user-summary" href="<%RT->Config->Get('WebPath')%>/User/Summary.html?id=<%$requestor->Id%>">User Summary</a></h3>
+  <div class="details">
+
 %# Additional information about this user.  Empty by default.
 % $m->callback( requestor => $requestor, %ARGS, CallbackName => 'AboutThisUser' );
+<& ShowRequestorExtraInfo, Requestor => $requestor &>
+
+% if ( $ShowComments ) {
+<div class="comments-about-user">
+  <span class="label"><&|/l&>Comments about this user</&>:</span>
+  <span class="value"><% ($requestor->Comments || loc("No comment entered about this user")) %></span>
+</div>
+% }
 
-<span class="label"><&|/l&>Comments about this user</&>:</span><br />
-<b class="value"><% ($requestor->Comments || loc("No comment entered about this user")) %></b><br />
+% $m->callback( requestor => $requestor, %ARGS, CallbackName => 'AfterComments' );
+
+% if ( $ShowTickets ) {
+<div class="more-about-requestor-tickets ui-tabs" id="more-about-requestor-tickets-<%$requestor->Id%>">
+  <ul>
+% my $index = 1;
+% for my $status ( @$status_order ) {
+    <li>
+% if ( $status eq $DefaultTicketsTab ) {
+      <a href="#requestor-<%$requestor->Id%>-ticket-tab-default">\
+% } else {
+%     my $url = RT->Config->Get('WebPath').'/Helpers/Toggle/ShowRequestor?'.
+%     $m->comp('/Elements/QueryString', Requestor => $requestor->Id , Status => $status);
+      <a href="<% $url | n %>" title="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>">\
+% }
+<% $status_link_text->{$status} %></a>
+    </li>
+% }
+  </ul>
+% $index = 1;
+% for my $status (@$status_order) {
+% if ( $status eq $DefaultTicketsTab ) {
+  <div id="requestor-<%$requestor->Id%>-ticket-tab-default">
+    <& $TicketTemplate, Requestor => $requestor &>
+% } else {
+  <div id="requestor-<%$requestor->Id%>-ticket-tab-<% $index++ %>" class="hidden">
+    <span class="label"><&|/l&>Loading...</&></span>
+% }
+  </div>
+% }
+</div>
+% }
 
-<span class="label"><&|/l, $rows &>This user's [_1] highest priority tickets</&>:</span>
-<ul>
-%while (my $w=$tickets->Next) {
-%my $uri = RT::URI->new( $session{'CurrentUser'} );
-%$uri->FromObject($w);
-<li class="value"><& /Elements/ShowLink, URI => $uri &></li>
-%}
-</ul>
+% my $grouplimit = RT->Config->Get('MoreAboutRequestorGroupsLimit');
+% if ( $ShowGroups and defined $grouplimit ) {
+<div class="more-about-user-groups">
+  <span class="label">
+    <&|/l&>Groups this user belongs to</&>
+    
+% if ( $session{CurrentUser}->HasRight( Right => 'AdminUsers', Object => $RT::System ) &&
+%      $session{CurrentUser}->HasRight( Right => 'ShowConfigTab', Object =>$RT::System ) ) {
+  [<a href=<% RT->Config->Get('WebPath') . '/Admin/Users/Memberships.html?id=' . $requestor->id %> ><&|/l&>Edit</&></a>]
+% }
+  </span>
+  <span class="value"><& /Elements/ShowMemberships, UserObj => $requestor, Limit => $grouplimit &></span>
+</div>
+% }
 
-<&|/l&>Groups this user belongs to</&>:<br />
+%# end of individual requestor details <div>
+  </div>
+% }
+%# end of requestors loop
 
-<& /Elements/ShowMemberships, UserObj => $requestor &>
+% $m->callback( %ARGS, CallbackName => 'AfterRequestors' );
 
+</div>
 </&>
+<%INIT>
+my $show_privileged = RT->Config->Get('ShowMoreAboutPrivilegedUsers');
 
-% }
+my $people = $Ticket->Requestors->UserMembersObj;
+$people->LimitToUnprivileged unless $show_privileged;
+
+my $count = $people->Count;
+return unless $count;
+
+my $has_right_adminusers = $session{'CurrentUser'}->HasRight(
+    Object => $RT::System, Right => 'AdminUsers'
+);
+$has_right_adminusers &&= $session{'CurrentUser'}->HasRight(
+    Object => $RT::System, Right => 'ShowConfigTab'
+);
+
+# Ticket list tabs
+my $selected = -1;
+$DefaultTicketsTab ||= RT->Config->Get('MoreAboutRequestorTicketList', $session{CurrentUser}) || 'Active';
+my $status_link_text = {Active   => loc('Active Tickets'),
+                        Inactive => loc('Inactive Tickets'),
+                        All      => loc('All Tickets')};
+my $status_order = [qw/Active Inactive All/];
+$m->callback( CallbackName => 'AddStatus', status_link_text => \$status_link_text, status_order => \$status_order );
+
+$ShowTickets = 0 if $DefaultTicketsTab eq 'None';
+
+my $TicketTemplate;
+if ($ShowTickets) {
+    for (0 .. (@$status_order - 1)) {
+        if ( $status_order->[$_] eq $DefaultTicketsTab ) {
+            $selected = $_;
+            last;
+        }
+    }
+
+    $TicketTemplate = "ShowRequestorTickets$DefaultTicketsTab";
+    $TicketTemplate = "ShowRequestorTicketsActive"
+        unless RT::Interface::Web->ComponentPathIsSafe($TicketTemplate)
+            and $m->comp_exists($TicketTemplate);
+}
+</%INIT>
 <%ARGS>
 $Ticket=>undef
-$DisplayPath => "/Ticket/Display.html"
-$conditions => []
+$DefaultTicketsTab => undef
+$ShowComments => 1
+$ShowTickets => 1
+$ShowGroups => 1
+$Title => 'More about [_1]'
 </%ARGS>