[Rt-commit] rt branch, 4.0/extract-reminder-processing, created. rt-3.9.7-1186-g22ccbc2

Alex Vandiver alexmv at bestpractical.com
Mon Jan 10 14:55:57 EST 2011


The branch, 4.0/extract-reminder-processing has been created
        at  22ccbc27b9a12b997b99494e54a3dcb9fa6488ab (commit)

- Log -----------------------------------------------------------------
commit 22ccbc27b9a12b997b99494e54a3dcb9fa6488ab
Author: Alex Vandiver <alexmv at bestpractical.com>
Date:   Mon Jan 10 14:51:11 2011 -0500

    Abstract out processing of ticket reminders

diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm
index 4744dc8..2395cba 100644
--- a/lib/RT/Interface/Web.pm
+++ b/lib/RT/Interface/Web.pm
@@ -1933,6 +1933,64 @@ sub ProcessTicketBasics {
     return (@results);
 }
 
+sub ProcessTicketReminders {
+    my %args = (
+        TicketObj => undef,
+        ARGSRef   => undef,
+        @_
+    );
+
+    my $Ticket = $args{'TicketObj'};
+    my $args   = $args{'ARGSRef'};
+    my @results;
+
+    my $reminder_collection = $Ticket->Reminders->Collection;
+
+    if ( $args->{'update-reminders'} ) {
+        while ( my $reminder = $reminder_collection->Next ) {
+            if (   $reminder->Status ne 'resolved' && $args->{ 'Complete-Reminder-' . $reminder->id } ) {
+                $Ticket->Reminders->Resolve($reminder);
+            }
+            elsif ( $reminder->Status eq 'resolved' && !$args->{ 'Complete-Reminder-' . $reminder->id } ) {
+                $Ticket->Reminders->Open($reminder);
+            }
+
+            if ( exists( $args->{ 'Reminder-Subject-' . $reminder->id } ) && ( $reminder->Subject ne $args->{ 'Reminder-Subject-' . $reminder->id } )) {
+                $reminder->SetSubject( $args->{ 'Reminder-Subject-' . $reminder->id } ) ;
+            }
+
+            if ( exists( $args->{ 'Reminder-Owner-' . $reminder->id } ) && ( $reminder->Owner != $args->{ 'Reminder-Owner-' . $reminder->id } )) {
+                $reminder->SetOwner( $args->{ 'Reminder-Owner-' . $reminder->id } , "Force" ) ;
+            }
+
+            if ( exists( $args->{ 'Reminder-Due-' . $reminder->id } ) && $args->{ 'Reminder-Due-' . $reminder->id } ne '' ) {
+                my $DateObj = RT::Date->new( $session{'CurrentUser'} );
+                $DateObj->Set(
+                    Format => 'unknown',
+                    Value  => $args->{ 'Reminder-Due-' . $reminder->id }
+                );
+                if ( defined $DateObj->Unix && $DateObj->Unix != $reminder->DueObj->Unix ) {
+                    $reminder->SetDue( $DateObj->ISO );
+                }
+            }
+        }
+    }
+
+    if ( $args->{'NewReminder-Subject'} ) {
+        my $due_obj = RT::Date->new( $session{'CurrentUser'} );
+        $due_obj->Set(
+          Format => 'unknown',
+          Value => $args->{'NewReminder-Due'}
+        );
+        my ( $add_id, $msg, $txnid ) = $Ticket->Reminders->Add(
+            Subject => $args->{'NewReminder-Subject'},
+            Owner   => $args->{'NewReminder-Owner'},
+            Due     => $due_obj->ISO
+        );
+        push @results, loc("Reminder '[_1]' added", $args->{'NewReminder-Subject'});
+    }
+    return @results;
+}
 
 sub ProcessTicketCustomFieldUpdates {
     my %args = @_;
diff --git a/share/html/Ticket/Display.html b/share/html/Ticket/Display.html
index c5305ee..7110df7 100755
--- a/share/html/Ticket/Display.html
+++ b/share/html/Ticket/Display.html
@@ -167,6 +167,7 @@ if ($ARGS{'id'} eq 'new') {
     push @Actions, ProcessTicketLinks(   ARGSRef => \%ARGS, TicketObj => $TicketObj );
     push @Actions, ProcessTicketDates(   ARGSRef => \%ARGS, TicketObj => $TicketObj );
     push @Actions, ProcessObjectCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $TicketObj );
+    push @Actions, ProcessTicketReminders( ARGSRef => \%ARGS, TicketObj => $TicketObj );
 
     # XXX: we shouldn't block actions here if user has no right to see the ticket,
     # but we should allow him to see actions he has done
@@ -182,6 +183,7 @@ if ($ARGS{'id'} eq 'new') {
     }
 }
 
+
 $title = loc("#[_1]: [_2]", $TicketObj->Id, $TicketObj->Subject || '');
 
 $m->callback(
diff --git a/share/html/Ticket/Elements/Reminders b/share/html/Ticket/Elements/Reminders
index 50be14a..bc2e7c4 100644
--- a/share/html/Ticket/Elements/Reminders
+++ b/share/html/Ticket/Elements/Reminders
@@ -55,53 +55,6 @@ $Edit => 0
 
 $Ticket = LoadTicket($id) if ($id);
 
-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 } ) && $request_args->{ 'Reminder-Due-' . $reminder->id } ne '' ) {
-            my $DateObj = RT::Date->new( $session{'CurrentUser'} );
-            $DateObj->Set(
-                Format => 'unknown',
-                Value  => $request_args->{ 'Reminder-Due-' . $reminder->id }
-            );
-            if ( defined $DateObj->Unix && $DateObj->Unix != $reminder->DueObj->Unix ) {
-                $reminder->SetDue( $DateObj->ISO );
-            }
-        }
-    }
-}
-
-if ( $request_args->{'NewReminder-Subject'} ) {
-    my $due_obj = RT::Date->new( $session{'CurrentUser'} );
-    $due_obj->Set(
-      Format => 'unknown',
-      Value => $request_args->{'NewReminder-Due'}
-    );
-    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;
@@ -112,7 +65,7 @@ if (!$ShowCompleted) {
 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;
 </%init>
 <input type="hidden" class="hidden" name="id" value="<% $Ticket->id %>" />
 <input type="hidden" class="hidden" name="update-reminders" value="1" />
diff --git a/share/html/Ticket/Reminders.html b/share/html/Ticket/Reminders.html
index 7343b24..4508f5a 100755
--- a/share/html/Ticket/Reminders.html
+++ b/share/html/Ticket/Reminders.html
@@ -63,9 +63,9 @@
 
 
 <%INIT>
-  
 my $Ticket = LoadTicket($id);
-    
+
+ProcessTicketReminders( TicketObj => $Ticket, ARGSRef => \%ARGS );
 </%INIT>
 <%ARGS>
 $id => undef
diff --git a/share/html/m/ticket/show b/share/html/m/ticket/show
index 14933f6..0a4f1a4 100644
--- a/share/html/m/ticket/show
+++ b/share/html/m/ticket/show
@@ -110,6 +110,7 @@ if ($ARGS{'id'} eq 'new') {
     push @Actions, ProcessTicketLinks(   ARGSRef => \%ARGS, TicketObj => $Ticket );
     push @Actions, ProcessTicketDates(   ARGSRef => \%ARGS, TicketObj => $Ticket );
     push @Actions, ProcessObjectCustomFieldUpdates(ARGSRef => \%ARGS, TicketObj => $Ticket );
+    push @Actions, ProcessTicketReminders( ARGSRef => \%ARGS, TicketObj => $TicketObj );
 
     # XXX: we shouldn't block actions here if user has no right to see the ticket,
     # but we should allow him to see actions he has done

-----------------------------------------------------------------------


More information about the Rt-commit mailing list