[Rt-commit] rt branch, 4.2/auto-open-inactive-action, created. rt-4.1.8-215-g669b119

Alex Vandiver alexmv at bestpractical.com
Fri May 3 15:06:42 EDT 2013


The branch, 4.2/auto-open-inactive-action has been created
        at  669b1191025f30f979b2d73d64f106a8183c0c27 (commit)

- Log -----------------------------------------------------------------
commit 88d8c21a76fecbeec265e17770eda9893f8fd47a
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Fri Jan 4 00:16:17 2013 +0800

    auto open inactive action
    
    the main difference opposed to the old AutoOpen action is the new action won't
    touch active tickets.
    
    e.g. if customized active statuses are something like "inquiry", "quoting" and
    "bid sent", people usually don't want current active status to be changed by
    AutoOpen action at all.

diff --git a/etc/initialdata b/etc/initialdata
index 76dc108..a0d3124 100755
--- a/etc/initialdata
+++ b/etc/initialdata
@@ -95,6 +95,9 @@
     { Name        => 'Open Tickets',                                      # loc
       Description => 'Open tickets on correspondence',                    # loc
       ExecModule  => 'AutoOpen' },
+    { Name        => 'Open Inactive Tickets',                             # loc
+      Description => 'Open inactive tickets',                             # loc
+      ExecModule  => 'AutoOpenInactive' },
     { Name        => 'Extract Subject Tag',                               # loc
       Description => 'Extract tags from a Transaction\'s subject and add them to the Ticket\'s subject.', # loc
       ExecModule  => 'ExtractSubjectTag' },
diff --git a/lib/RT/Action/AutoOpenInactive.pm b/lib/RT/Action/AutoOpenInactive.pm
new file mode 100644
index 0000000..58c55cb
--- /dev/null
+++ b/lib/RT/Action/AutoOpenInactive.pm
@@ -0,0 +1,105 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+
+package RT::Action::AutoOpenInactive;
+
+use strict;
+use warnings;
+use base qw(RT::Action);
+
+=head1 DESCRIPTION
+
+This action automatically moves an inactive ticket to an active status.
+
+Status is not changed if there is no active statuses in the lifecycle.
+
+Status is not changed if message's head has field C<RT-Control> with
+C<no-autoopen> substring.
+
+Status is set to the first possible active status. If the ticket's status is
+C<Resolved> then RT finds all possible transitions from C<Resolved> status and
+selects first one that results in the ticket having an active status.
+
+=cut
+
+sub Prepare {
+    my $self = shift;
+
+    my $ticket = $self->TicketObj;
+    return 0 if $ticket->LifecycleObj->IsActive( $ticket->Status );
+
+    if ( my $msg = $self->TransactionObj->Message->First ) {
+        return 0
+          if ( $msg->GetHeader('RT-Control') || '' ) =~
+          /\bno-autoopen\b/i;
+    }
+
+    my $next = $ticket->FirstActiveStatus;
+    return 0 unless defined $next;
+
+    $self->{'set_status_to'} = $next;
+
+    return 1;
+}
+
+sub Commit {
+    my $self = shift;
+
+    return 1 unless my $new_status = $self->{'set_status_to'};
+
+    my ($val, $msg) = $self->TicketObj->SetStatus( $new_status );
+    unless ( $val ) {
+        $RT::Logger->error( "Couldn't auto-open-inactive ticket: ". $msg );
+        return 0;
+    }
+    return 1;
+}
+
+RT::Base->_ImportOverlays();
+
+1;

commit d72c6b5357da044381b86ba00fdd83e0cdf83bc8
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Sat Apr 13 12:59:51 2013 +0800

    delete a wrong comment

diff --git a/lib/RT/Action/AutoOpen.pm b/lib/RT/Action/AutoOpen.pm
index ebe77e3..30a58a7 100644
--- a/lib/RT/Action/AutoOpen.pm
+++ b/lib/RT/Action/AutoOpen.pm
@@ -46,7 +46,6 @@
 #
 # END BPS TAGGED BLOCK }}}
 
-# This Action will open the BASE if a dependent is resolved.
 package RT::Action::AutoOpen;
 
 use strict;

commit 98985c4187e5543be5ea14df1b054fc36858c978
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Sat Apr 13 13:06:38 2013 +0800

    use AutoOpenInactive action instead in the default "On Correspond Open Tickets" scrip
    
    the action is smarter and works better with customized lifecycles

diff --git a/etc/initialdata b/etc/initialdata
index a0d3124..47a9b38 100755
--- a/etc/initialdata
+++ b/etc/initialdata
@@ -534,9 +534,9 @@ Hour:         { $SubscriptionObj->SubValue('Hour') }
        ScripCondition => 'On Correspond',
        ScripAction    => 'Notify Requestors And Ccs',
        Template       => 'Correspondence' },
-    {  Description    => 'On Correspond Open Tickets',
+    {  Description    => 'On Correspond Open Inactive Tickets',
        ScripCondition => 'On Correspond',
-       ScripAction    => 'Open Tickets',
+       ScripAction    => 'Open Inactive Tickets',
        Template       => 'Blank' },
     {  Description    => 'On Create Autoreply To Requestors',
        ScripCondition => 'On Create',

commit 669b1191025f30f979b2d73d64f106a8183c0c27
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Apr 29 21:56:23 2013 +0800

    upgrading doc for the new "Open Inactive Tickets" action

diff --git a/docs/UPGRADING-4.2 b/docs/UPGRADING-4.2
index 7d5c0cb..29bd771 100644
--- a/docs/UPGRADING-4.2
+++ b/docs/UPGRADING-4.2
@@ -88,3 +88,11 @@ UPGRADING FROM RT 4.0.0 and greater
 
   This command deletes records from Transactions table. This script can only fix
   TimeWorked mismatch, but not TimeLeft or TimeEstimated.
+
+* A new action, "Open Inactive Tickets", has been added, and on new
+  installs the default scrip "On Correspond Open Tickets" has been
+  replaced by "On Correspond Open Inactive Tickets".  The key difference
+  between "Open Tickets" and "Open Inactive Tickets" is that the latter
+  will not adjust the status of a ticket if it is already active.  This
+  is particularly useful when creating complex workflows using
+  Lifecycles.

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


More information about the Rt-commit mailing list