X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FTicket%2FElements%2FReminders;h=78f5c382eb27d4b4f4c66085b2d69c6804fa961e;hp=8526da3c014f93ceb204c50bb279ba9f154beb71;hb=44dd00a3ff974a17999e86e64488e996edc71e3c;hpb=fc6209f398899f0211cfcedeb81a3cd65e04a941 diff --git a/rt/share/html/Ticket/Elements/Reminders b/rt/share/html/Ticket/Elements/Reminders index 8526da3c0..78f5c382e 100644 --- a/rt/share/html/Ticket/Elements/Reminders +++ b/rt/share/html/Ticket/Elements/Reminders @@ -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 %# %# %# (Except where explicitly superseded by other copyright notices) @@ -50,101 +50,96 @@ $Ticket => undef $id => undef $ShowCompleted => 0 $Edit => 0 +$ShowSave => 1 <%init> $Ticket = LoadTicket($id) if ($id); +my $resolve_status = $Ticket->LifecycleObj->ReminderStatusOnResolve; -my $request_args = $m->request_args(); - -my $reminder_collection = $Ticket->Reminders->Collection; - -if ( $request_args->{'update-reminders'} ) { - while ( my $reminder = $reminder_collection->Next ) { - if ( $reminder->Status ne 'resolved' && $request_args->{ 'Complete-Reminder-' . $reminder->id } ) { - $Ticket->Reminders->Resolve($reminder); - } - elsif ( $reminder->Status eq 'resolved' && !$request_args->{ 'Complete-Reminder-' . $reminder->id } ) { - $Ticket->Reminders->Open($reminder); - } - - if ( exists( $request_args->{ 'Reminder-Subject-' . $reminder->id } ) && ( $reminder->Subject ne $request_args->{ 'Reminder-Subject-' . $reminder->id } )) { - $reminder->SetSubject( $request_args->{ 'Reminder-Subject-' . $reminder->id } ) ; - } - - if ( exists( $request_args->{ 'Reminder-Owner-' . $reminder->id } ) && ( $reminder->Owner != $request_args->{ 'Reminder-Owner-' . $reminder->id } )) { - $reminder->SetOwner( $request_args->{ 'Reminder-Owner-' . $reminder->id } , "Force" ) ; - } - - if ( exists( $request_args->{ 'Reminder-Due-' . $reminder->id } ) && ( $reminder->DueObj->Date ne $request_args->{ 'Reminder-Due-' . $reminder->id } )) { - $reminder->SetDue( $request_args->{ 'Reminder-Due-' . $reminder->id } ) ; - } - } -} - -if ( $request_args->{'NewReminder-Subject'} ) { - my $due_obj = RT::Date->new( $session{'CurrentUser'} ); - my $date = Time::ParseDate::parsedate( - $request_args->{'NewReminder-Due'}, - UK => RT->Config->Get('DateDayBeforeMonth'), - PREFER_PAST => 0, - PREFER_FUTURE => 1 - ); - $due_obj->Set( Value => $date, Format => 'unix' ); - my ( $add_id, $msg, $txnid ) = $Ticket->Reminders->Add( - - Subject => $request_args->{'NewReminder-Subject'}, - Owner => $request_args->{'NewReminder-Owner'}, - Due => $due_obj->ISO - ); +my $count_reminders = RT::Reminders->new($session{'CurrentUser'}); +$count_reminders->Ticket($Ticket->id); +my $count_tickets = $count_reminders->Collection; +if (!$ShowCompleted) { + # XXX: don't break encapsulation if we can avoid it + $count_tickets->FromSQL(q{Type = "reminder" AND RefersTo = "} . $Ticket->id . qq{" AND Status != "$resolve_status" }); } +my $has_reminders = $count_tickets->Count; # We've made changes, let's reload our search - -$reminder_collection = $Ticket->Reminders->Collection; +my $reminder_collection = $count_reminders->Collection; -
-% while (my $reminder = $reminder_collection->Next) { -% if ($reminder->Status eq 'resolved' && !$ShowCompleted) { - -% } elsif ($Edit) { -<& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket &> +% my $editable = 0; +% if ($has_reminders) { +> + +% if ( $Edit ) { + +% } else { + + + + +% } + +% my $i = 0; +% while ( my $reminder = $reminder_collection->Next ) { +% $i++; +% if ( $reminder->Status eq $resolve_status && !$ShowCompleted ) { + +% $i++; +% } +% else { +% $editable = 1 if !$editable && $reminder->CurrentUserHasRight( 'ModifyTicket' ); +% if ($Edit) { +<& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &> % } else { -<& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket &> +<& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &> % } % } -% if ($reminder_collection->Count) { -<&|/l&>(Check box to delete)

% } - -
+
<&|/l&>Reminders<&|/l&>Reminder<&|/l&>Due<&|/l&>Owner
+% if ( $editable ) { +<&|/l&>(Check box to complete)

+% } +% } else { + +%# we must always include resolved reminders due to the browser +%# checkbox-with-false-value issue +% while ( my $reminder = $reminder_collection->Next ) { +% if ( $reminder->Status eq $resolve_status && !$ShowCompleted ) { + +% } +% } +% } + +% if (lc $Ticket->Status ne "deleted" and $Ticket->QueueObj->CurrentUserHasRight('CreateTicket') and $Ticket->CurrentUserHasRight('ModifyTicket') ) { <&|/l&>New reminder: <& SELF:NewReminder, Ticket => $Ticket &> -
+% $editable = 1; +% } + +% if ( $editable && $ShowSave ) { +
+% } <%method NewReminder> <%args> $Ticket - - - + + + - - + + + - - - + + +
- -
<&|/l&>Subject:
- -<& /Elements/SelectOwner, Name => 'NewReminder-Owner', QueueObj => $Ticket->QueueObj, Default=>$session{'CurrentUser'}->id, DefaultValue => 0 &> -
<&|/l&>Owner:<& /Elements/SelectOwner, Name => 'NewReminder-Owner', QueueObj => $Ticket->QueueObj, Default=>$session{'CurrentUser'}->id, DefaultValue => 0 &>
-<& /Elements/SelectDate, Name => "NewReminder-Due", Default => "" &> -
<&|/l&>Due:<& /Elements/SelectDate, Name => "NewReminder-Due", Default => "" &>
@@ -152,28 +147,64 @@ $Ticket <%args> $Reminder $Ticket +$Index -Status eq 'resolved' ? 'checked="checked"' : '' %> -/> - • - <& /Elements/SelectOwner, Name => 'Reminder-Owner-'.$Reminder->id, Queue => $Ticket->QueueObj, Default => $Reminder->Owner, DefaultValue => 0 &> - <& /Elements/SelectDate, Name => 'Reminder-Due-'.$Reminder->id, Default => $Reminder->DueObj->Date &> - (<%$Reminder->DueObj->Unix>0 ? $Reminder->DueObj->AgeAsString : '' %>)
+ + +% unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) { +Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 1 : 0 %> /> +% } + +Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %> +% unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) { +disabled="disabled" +% } +/> +<&|/l&>Subject: + +CurrentUserHasRight('ModifyTicket') ) { +readonly="readonly" +% } +/> + + + +  +<&|/l&>Owner: +<& /Elements/SelectOwner, Name => 'Reminder-Owner-'.$Reminder->id, QueueObj => $Ticket->QueueObj, Default => $Reminder->Owner, DefaultValue => 0 &> +<&|/l&>Due: + +% if ( $Reminder->CurrentUserHasRight('ModifyTicket') ) { +<& /Elements/SelectDate, Name => 'Reminder-Due-'.$Reminder->id &> +% } +(<% $Reminder->DueObj->AsString %>) + + <%method ShowEntry> <%args> $Reminder $Ticket +$Index -Status eq 'resolved' ? 'checked="checked"' : '' %> -/> - <%$Reminder->Subject%> • - <& /Elements/ShowUser, User => $Reminder->OwnerObj &> - <%$Reminder->DueObj->Unix>0 ? "• ". $Reminder->DueObj->AgeAsString : '' |n%>
+% my $dueobj = $Reminder->DueObj; +% my $overdue = $dueobj->IsSet && $dueobj->Diff < 0 ? 1 : 0; + + + +% unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) { +Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 1 : 0 %> /> +% } +Status eq $Reminder->LifecycleObj->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %> +% unless ( $Reminder->CurrentUserHasRight('ModifyTicket') ) { +disabled="disabled" +% } +/> + +<% $overdue ? '' : '' |n %><% $dueobj->AgeAsString || loc('Not set') %><% $overdue ? '' : '' |n %> +<& /Elements/ShowUser, User => $Reminder->OwnerObj &> +