From 886d8d9970ccfe4eae1efe0c11160ad0c69c1339 Mon Sep 17 00:00:00 2001 From: mark Date: Wed, 7 Sep 2011 23:43:24 +0000 Subject: [PATCH] future ticket resolve fixes, #13583 --- rt/FREESIDE_MODIFIED | 16 ++++++++++++---- rt/lib/RT/Action/SetWillResolve.pm | 24 ++++++++++++++++-------- rt/lib/RT/URI/freeside/Internal.pm | 3 +-- rt/share/html/Ticket/Elements/EditDates | 2 +- rt/share/html/Ticket/Elements/ShowDates | 2 +- rt/share/html/Ticket/Update.html | 19 ++++++++++--------- 6 files changed, 41 insertions(+), 25 deletions(-) diff --git a/rt/FREESIDE_MODIFIED b/rt/FREESIDE_MODIFIED index 1f7af7cd7..c6aa3c22d 100644 --- a/rt/FREESIDE_MODIFIED +++ b/rt/FREESIDE_MODIFIED @@ -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 diff --git a/rt/lib/RT/Action/SetWillResolve.pm b/rt/lib/RT/Action/SetWillResolve.pm index 807b3c64c..2f9f6190f 100644 --- a/rt/lib/RT/Action/SetWillResolve.pm +++ b/rt/lib/RT/Action/SetWillResolve.pm @@ -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(); diff --git a/rt/lib/RT/URI/freeside/Internal.pm b/rt/lib/RT/URI/freeside/Internal.pm index 6d3adc2ef..9c9700032 100644 --- a/rt/lib/RT/URI/freeside/Internal.pm +++ b/rt/lib/RT/URI/freeside/Internal.pm @@ -26,14 +26,13 @@ # 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; diff --git a/rt/share/html/Ticket/Elements/EditDates b/rt/share/html/Ticket/Elements/EditDates index 371f6e31e..4b9a93bb8 100755 --- a/rt/share/html/Ticket/Elements/EditDates +++ b/rt/share/html/Ticket/Elements/EditDates @@ -71,7 +71,7 @@ - <&|/l&>Close After: + <&|/l&>Resolve After: <& /Elements/SelectDate, menu_prefix => 'WillResolve', current => 0 &> (<% $TicketObj->WillResolveObj->AsString %>) diff --git a/rt/share/html/Ticket/Elements/ShowDates b/rt/share/html/Ticket/Elements/ShowDates index fc0146194..1df0f8084 100755 --- a/rt/share/html/Ticket/Elements/ShowDates +++ b/rt/share/html/Ticket/Elements/ShowDates @@ -72,7 +72,7 @@ % } - <&|/l&>Closed: + <&|/l&>Resolved: <% $Ticket->ResolvedObj->AsString %> % my $willresolve = $Ticket->WillResolveObj; diff --git a/rt/share/html/Ticket/Update.html b/rt/share/html/Ticket/Update.html index 7c28cc30d..0d4e3b223 100755 --- a/rt/share/html/Ticket/Update.html +++ b/rt/share/html/Ticket/Update.html @@ -90,15 +90,7 @@ function changeStatus() { || ($TicketObj->Status eq $DefaultStatus ? undef : $DefaultStatus, onchange => 'changeStatus()' )&> -<&|/l&>Owner: -<& /Elements/SelectOwner, - Name => "Owner", - TicketObj => $TicketObj, - QueueObj => $TicketObj->QueueObj, - DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $TicketObj->OwnerObj)), - Default => $ARGS{'Owner'} -&> -<&|/l&>Close this Ticket on: +<&|/l&>Resolve this Ticket on: <& /Elements/SelectDate, menu_prefix => 'WillResolve', current => 0, @@ -132,6 +124,15 @@ changeStatus(); % if (!$skip) {
% } +<&|/l&>Owner: +<& /Elements/SelectOwner, + Name => "Owner", + TicketObj => $TicketObj, + QueueObj => $TicketObj->QueueObj, + DefaultLabel => loc("[_1] (Unchanged)", $m->scomp('/Elements/ShowUser', User => $TicketObj->OwnerObj)), + Default => $ARGS{'Owner'} +&> + <&|/l&>Update Type: