X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FTicket%2FElements%2FReminders;h=37b360bd2edff5d8d1fce11bb1f8bfc27fbae518;hb=679854b8bbc65d112071111bbd7f34a6a481fb30;hp=8526da3c014f93ceb204c50bb279ba9f154beb71;hpb=0fb307c305e4bc2c9c27dc25a3308beae3a4d33c;p=freeside.git diff --git a/rt/share/html/Ticket/Elements/Reminders b/rt/share/html/Ticket/Elements/Reminders index 8526da3c0..37b360bd2 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-2013 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -54,97 +54,85 @@ $Edit => 0 <%init> $Ticket = LoadTicket($id) if ($id); +my $resolve_status = $Ticket->QueueObj->Lifecycle->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; +my $visible = 0; -
-% while (my $reminder = $reminder_collection->Next) { -% if ($reminder->Status eq 'resolved' && !$ShowCompleted) { +% if ($has_reminders) { +> + +% if ( $Edit ) { + +% } else { + + + + +% } + +% my $i = 0; +% while ( my $reminder = $reminder_collection->Next ) { +% $i++; +% if ( $reminder->Status eq $resolve_status && !$ShowCompleted ) { + +% $i++; +% } elsif ($Edit) { +<& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &> +% $visible++; +% } else { +<& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket, Index => $i &> +% $visible++; +% } +% } +
<&|/l&>Reminders<&|/l&>Reminder<&|/l&>Due<&|/l&>Owner
+% if ( $visible > 0 ) { +<&|/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 ) { -% } elsif ($Edit) { -<& SELF:EditEntry, Reminder => $reminder, Ticket => $Ticket &> -% } else { -<& SELF:ShowEntry, Reminder => $reminder, Ticket => $Ticket &> -% } % } -% if ($reminder_collection->Count) { -<&|/l&>(Check box to delete)

% } -
-
+% } + +% if ($Ticket->Status ne "deleted") { <&|/l&>New reminder: <& SELF:NewReminder, Ticket => $Ticket &> -
+% } +% return($Ticket->Status ne "deleted" or $visible); <%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 +140,33 @@ $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 : '' %>)
+ +Status eq $Reminder->QueueObj->Lifecycle->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %> /> +<&|/l&>Subject: + + + +  +<&|/l&>Owner: +<& /Elements/SelectOwner, Name => 'Reminder-Owner-'.$Reminder->id, QueueObj => $Ticket->QueueObj, Default => $Reminder->Owner, DefaultValue => 0 &> +<&|/l&>Due: +<& /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->Unix > 0 && $dueobj->Diff < 0 ? 1 : 0; + +Status eq $Reminder->QueueObj->Lifecycle->ReminderStatusOnResolve ? 'checked="checked"' : '' |n %> /> +<% $Reminder->Subject %> +<% $overdue ? '' : '' |n %><% $dueobj->AgeAsString || loc('Not set') %><% $overdue ? '' : '' |n %> +<& /Elements/ShowUser, User => $Reminder->OwnerObj &> +