future ticket resolve fixes, #13583
authormark <mark>
Wed, 7 Sep 2011 23:43:24 +0000 (23:43 +0000)
committermark <mark>
Wed, 7 Sep 2011 23:43:24 +0000 (23:43 +0000)
rt/FREESIDE_MODIFIED
rt/lib/RT/Action/SetWillResolve.pm
rt/lib/RT/URI/freeside/Internal.pm
rt/share/html/Ticket/Elements/EditDates
rt/share/html/Ticket/Elements/ShowDates
rt/share/html/Ticket/Update.html

index 1f7af7c..c6aa3c2 100644 (file)
@@ -28,16 +28,16 @@ lib/RT/Action/SetPriority_Local.pm #ticket escalation
 lib/RT/CustomFieldValues/Queues.pm #ticket escalation
 lib/RT/Condition/CustomFieldChange.pm #create ticket on custom field change
 lib/RT/Condition/CustomFieldTransaction.pm #notify on custom field change
-lib/RT/Interface/Web_Vendor.pm
+lib/RT/Interface/Web_Vendor.pm #willresolve
  lib/RT/Interface/Web/Handler.pm #freeside comp_root for dashboard emails
  lib/RT/Record.pm #and customfield date patch #fix transaction custom fields
 lib/RT/SavedSearches_Local.pm #saved searches
 lib/RT/Search/Googleish.pm #option to include resolved tickets
 lib/RT/SearchBuilder.pm #need DBIx::SearchBuilder >= 1.36 for Pg 8.1+
 lib/RT/Transaction_Overlay.pm #fix transaction custom fields
-lib/RT/Tickets_Overlay.pm #customfield date patch #SearchCustomerFields #this-month condition 
+lib/RT/Tickets_Overlay.pm #customfield date patch #SearchCustomerFields #this-month condition #willresolve
  lib/RT/Ticket_Overlay.pm #fix transaction custom fields
-lib/RT/Ticket_Vendor.pm #bulk increment priority #mandatory fields
+lib/RT/Ticket_Vendor.pm #bulk increment priority #mandatory fields #willresolve
  lib/RT/Users_Overlay.pm
  lib/RT/Groups_Overlay.pm
 lib/RT/Date.pm #this-month condition
@@ -107,7 +107,7 @@ share/html/Ticket/Elements/ShowMembers_Checklist
  share/html/Ticket/Elements/ShowSummary
  share/html/Ticket/Elements/ShowTransactionAttachments
  share/html/Ticket/Elements/Tabs #saved searches #mandatory fields
-share/html/Ticket/Update.html #timeworked custom fields
+share/html/Ticket/Update.html #timeworked custom fields #willresolve
 share/html/Ticket/ModifyCustomers.html
  html/NoAuth/css/3.5-default/main.css
  html/NoAuth/css/3.5-default/misc.css
@@ -144,3 +144,11 @@ share/html/Elements/ColumnMap
 lib/RT/Extension/MobileUI.pm
 share/html/Callbacks/RT-Extension-MobileUI/*
 share/html/m/*
+
+#willresolve
+lib/RT/Action/ScheduledResolve.pm
+lib/RT/Action/SetWillResolve.pm
+lib/RT/Transaction_Vendor.pm
+share/html/Elements/SelectStatus 
+share/html/Ticket/Elements/EditDates
+share/html/Ticket/Elements/ShowDates
index 807b3c6..2f9f619 100644 (file)
@@ -8,18 +8,26 @@ sub Describe  {
   return (ref $self ." will set a ticket's future resolve date to the argument.");
 }
 
-sub Prepare  {
-    return 1;
+sub Prepare {
+    my $self = shift;
+    my $DateObj = RT::Date->new( $self->CurrentUser );
+    if ( length($self->Argument) ) {
+        $DateObj->Set(
+            Format => 'unknown',
+            Value  => $self->Argument
+        )
+    }
+    else { # special case: treat Argument => '' as "never"
+        $DateObj->Unix(-1);
+    }
+    $self->{new_value} = $DateObj->ISO;
+    # if the before and after values are string-equivalent, don't bother
+    return ($DateObj->AsString ne $self->TicketObj->WillResolveAsString);
 }
 
 sub Commit {
     my $self = shift;
-    my $DateObj = RT::Date->new( $self->CurrentUser );
-    $DateObj->Set(
-      Format => 'unknown', 
-      Value  => $self->Argument,
-    );
-    $self->TicketObj->SetWillResolve( $DateObj->ISO );
+    $self->TicketObj->SetWillResolve( $self->{new_value} );
 }
 
 RT::Base->_ImportOverlays();
index 6d3adc2..9c97000 100644 (file)
 # END LICENSE BLOCK
 #
 use strict;
-no warnings qw(redefine);
 
 #use vars qw($conf);
 
 use FS;
 use FS::UID qw(dbh);
 use FS::CGI qw(popurl);
-use FS::UI::Web::small_custview qw(small_custview);
+use FS::UI::Web::small_custview;
 use FS::Conf;
 use FS::Record qw(qsearchs qsearch dbdef);
 use FS::cust_main;
index 371f6e3..4b9a93b 100755 (executable)
@@ -71,7 +71,7 @@
     </td>
   </tr>
   <tr>
-    <td class="label"><&|/l&>Close After</&>:</td>
+    <td class="label"><&|/l&>Resolve After</&>:</td>
     <td class="entry">
       <& /Elements/SelectDate, menu_prefix => 'WillResolve', current => 0 &> (<% $TicketObj->WillResolveObj->AsString %>)
     </td>
index fc01461..1df0f80 100755 (executable)
@@ -72,7 +72,7 @@
 % }
   </tr>
   <tr>
-    <td class="label date resolved"><&|/l&>Closed</&>:</td>
+    <td class="label date resolved"><&|/l&>Resolved</&>:</td>
     <td class="value date resolved"><% $Ticket->ResolvedObj->AsString  %></td>
   </tr>
 % my $willresolve = $Ticket->WillResolveObj;
index 7c28cc3..0d4e3b2 100755 (executable)
@@ -90,15 +90,7 @@ function changeStatus() {
               || ($TicketObj->Status eq $DefaultStatus ? undef : $DefaultStatus,
     onchange => 'changeStatus()'
 )&>
-<span class="label"><&|/l&>Owner</&>:</span>
-<& /Elements/SelectOwner,
-    Name         => "Owner",
-    TicketObj    => $TicketObj,
-    QueueObj     => $TicketObj->QueueObj,
-    DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $TicketObj->OwnerObj)),
-    Default      => $ARGS{'Owner'}
-&>
-<span class="label"><&|/l&>Close this Ticket on</&>:</span>
+<span class="label"><&|/l&>Resolve this Ticket on</&>:</span>
 <& /Elements/SelectDate, 
     menu_prefix => 'WillResolve',
     current => 0,
@@ -132,6 +124,15 @@ changeStatus();
 % if (!$skip) {
 <input type="hidden" class="hidden" name="id" value="<%$TicketObj->Id%>" /><br />
 % }
+<tr><td class="label"><&|/l&>Owner</&>:</td>
+<td><& /Elements/SelectOwner,
+    Name         => "Owner",
+    TicketObj    => $TicketObj,
+    QueueObj     => $TicketObj->QueueObj,
+    DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $TicketObj->OwnerObj)),
+    Default      => $ARGS{'Owner'}
+&></td>
+</tr>
 <tr><td class="label"><&|/l&>Update Type</&>:</td>
 <td><select name="UpdateType">
 % if ($CanComment) {