[Rt-commit] rt branch, 4.2/auto-open-inactive-action, created. rt-4.1.5-233-g1b328f1

? sunnavy sunnavy at bestpractical.com
Mon Apr 29 10:16:49 EDT 2013


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

- Log -----------------------------------------------------------------
commit cb8b4b583a529947905f340ff6a61db6fd86e141
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 96867e0..52b0c66 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..ce87e13
--- /dev/null
+++ b/lib/RT/Action/AutoOpenInactive.pm
@@ -0,0 +1,105 @@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2012 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->Lifecycle->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 6c0fc8dffe595e1f615bcedbe37789c68d038041
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 5112dba..74b7602 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 4800777af3af8e9343393e948377c82097de0466
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 52b0c66..610b848 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 1b328f1c545bb1d84cf79f35f12fccbdee2dc6ca
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Mon Apr 29 21:56:23 2013 +0800

    upgrading doc for the new "Open Inactive Tickets" action and "On Correspond Open Inactive Tickets" scrip

diff --git a/docs/UPGRADING-4.2 b/docs/UPGRADING-4.2
index 4b165ff..8cbbc4d 100644
--- a/docs/UPGRADING-4.2
+++ b/docs/UPGRADING-4.2
@@ -61,3 +61,8 @@ UPGRADING FROM RT 4.0.0 and greater
   you had copied @JSFiles to add extra entries in your RT_SiteConfig,
   remove the core JS from the list, or RT will serve those files
   multiple times.
+
+* action "Open Inactive Tickets" action is added and the default scrip
+  "On Correspond Open Tickets" is replaced by the new one
+  "On Correspond Open Inactive Tickets". The main difference is the new scrip
+  ignores those already active tickets.

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


More information about the Rt-commit mailing list