[Rt-commit] r5000 - in rtir/branches/1.9-EXPERIMENTAL: . etc lib/RT/Action

ruz at bestpractical.com ruz at bestpractical.com
Mon Apr 10 09:55:39 EDT 2006


Author: ruz
Date: Mon Apr 10 09:55:38 2006
New Revision: 5000

Added:
   rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_SetIncidentResolution.pm
Modified:
   rtir/branches/1.9-EXPERIMENTAL/   (props changed)
   rtir/branches/1.9-EXPERIMENTAL/etc/initialdata
   rtir/branches/1.9-EXPERIMENTAL/etc/upgrade/1.9.0/content

Log:
 r1272 at cubic-pc:  cubic | 2006-04-10 17:48:55 +0400
 * add scrip that set Incident's resolution field if there is no value allready


Modified: rtir/branches/1.9-EXPERIMENTAL/etc/initialdata
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/etc/initialdata	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/etc/initialdata	Mon Apr 10 09:55:38 2006
@@ -394,6 +394,10 @@
        Description => 'Set the state of an Incident' ,                                            # loc
        ExecModule => 'RTIR_SetIncidentState',
     },
+    {  Name        => 'RTIR Set Incident Resolution',    # loc
+       Description => 'Set the default resolution of an Incident' ,                                            # loc
+       ExecModule => 'RTIR_SetIncidentResolution',
+    },
 );
 
 @ScripConditions = (
@@ -577,6 +581,12 @@
        ScripCondition    => 'On Status Change',
        ScripAction       => 'RTIR Open Parent',
        Template          => 'Blank', },
+
+    {  Description       => "SetDefaultIncidentResolution",
+       Queue             => 'Incidents',
+       ScripCondition    => 'On Status Change',
+       ScripAction       => 'RTIR Set Incident Resolution',
+       Template          => 'Blank', },
 );
 
 @Templates = (

Modified: rtir/branches/1.9-EXPERIMENTAL/etc/upgrade/1.9.0/content
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/etc/upgrade/1.9.0/content	(original)
+++ rtir/branches/1.9-EXPERIMENTAL/etc/upgrade/1.9.0/content	Mon Apr 10 09:55:38 2006
@@ -125,12 +125,21 @@
     );
 }
 
+ at ScripActions = (
+    {  Name        => 'RTIR Set Incident Resolution',    # loc
+       Description => 'Set the default resolution of an Incident' ,                                            # loc
+       ExecModule => 'RTIR_SetIncidentResolution',
+    },
+);
+
+);
+
 @Scrips = (
     {  Description       => "SetStartsDateOnQueueChange",
        Queue             => 'Incidents',
        ScripCondition    => 'On Queue Change',
        ScripAction       => 'RTIR Set Starts to Now',
-       Template          => 'Blank' },
+       Teemplate          => 'Blank' },
     {  Description       => "SetStartsOnQueueChange",
        Queue             => [ 'Incident Reports', 'Investigations', 'Blocks' ],
        ScripCondition    => 'On Queue Change',
@@ -147,6 +156,11 @@
        ScripCondition    => 'On Queue Change',
        ScripAction       => 'RTIR Set Due Correspond',
        Template          => 'Blank' },
+    {  Description       => "SetDefaultIncidentResolution",
+       Queue             => 'Incidents',
+       ScripCondition    => 'On Status Change',
+       ScripAction       => 'RTIR Set Incident Resolution',
+       Template          => 'Blank', },
 );
 
 push @ACL, (

Added: rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_SetIncidentResolution.pm
==============================================================================
--- (empty file)
+++ rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_SetIncidentResolution.pm	Mon Apr 10 09:55:38 2006
@@ -0,0 +1,48 @@
+package RT::Action::RTIR_SetIncidentResolution;
+
+use strict;
+use base 'RT::Action::RTIR';
+
+=head2 Prepare
+
+Always run this.
+
+=cut
+
+sub Prepare { return 1 }
+
+=head2 Commit
+
+Set the resolution if there is no value.
+
+=cut
+
+sub Commit {
+    my $self = shift;
+
+    my $t = $self->TicketObj;
+
+    my $status = $t->Status;
+    return 1 unless $t->QueueObj->IsInactiveStatus( $t->Status );
+
+    my $value = RT->Config->Get("_RTIR_Resolution_${status}_default");
+    return 1 unless $value;
+
+    my $cf = RT::CustomField->new( $self->TransactionObj->CurrentUser );
+    $cf->LoadByNameAndQueue( Queue => $t->QueueObj->Id, Name => '_RTIR_Resolution' );
+    return 1 unless $cf->Id;
+
+    return 1 if $t->FirstCustomFieldValue( $cf->id );
+
+    my ($res, $msg) = $t->AddCustomFieldValue( Field => $cf->id, Value => $value );
+    $RT::Logger->warning("Couldn't add custom field value: $msg") unless $res;
+    return 1;
+}
+
+eval "require RT::Action::RTIR_SetIncidentResolution_Vendor";
+die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RTIR_SetIncidentResolution_Vendor.pm});
+eval "require RT::Action::RTIR_SetIncidentResolution_Local";
+die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/RTIR_SetIncidentResolution_Local.pm});
+
+1;
+


More information about the Rt-commit mailing list