remove "create ticket on custom field change" (#10139) to avoid conflicts with RT 4.2
authorMark Wells <mark@freeside.biz>
Tue, 14 Jul 2015 03:55:30 +0000 (20:55 -0700)
committerMark Wells <mark@freeside.biz>
Tue, 14 Jul 2015 03:55:30 +0000 (20:55 -0700)
12 files changed:
rt/etc/initialdata
rt/etc/upgrade/4.0-customfield-checkbox-extension
rt/etc/upgrade/upgrade-articles
rt/lib/RT/Action.pm
rt/lib/RT/Action/CreateTickets.pm
rt/lib/RT/Condition.pm
rt/lib/RT/Condition/CustomFieldChange.pm [deleted file]
rt/lib/RT/Scrip.pm
rt/share/html/Admin/Elements/EditScrip [deleted file]
rt/share/html/Admin/Elements/EditScripOptions [deleted file]
rt/share/html/Admin/Elements/SelectScripAction
rt/share/html/Admin/Elements/SelectScripCondition

index 9b2af37..96255b5 100644 (file)
     },
 
     #freeside
-    {  Name                 => 'On Custom Field Transaction',
-       Description          => 'When a custom field is changed',
-       ExecModule           => 'CustomFieldTransaction',
-       ApplicableTransTypes => 'Any',
-    },
-    {  Name                 => 'On Custom Field Change',
-       Description          => 'When a custom field is changed to some value',
-       ExecModule           => 'CustomFieldChange',
-       ApplicableTransTypes => 'Any',
-    },
+    #{  Name                 => 'On Custom Field Transaction',
+    #   Description          => 'When a custom field is changed',
+    #   ExecModule           => 'CustomFieldTransaction',
+    #   ApplicableTransTypes => 'Any',
+    #},
+    #{  Name                 => 'On Custom Field Change',
+    #   Description          => 'When a custom field is changed to some value',
+    #   ExecModule           => 'CustomFieldChange',
+    #   ApplicableTransTypes => 'Any',
+    #},
 
 );
 
index dc8904e..a83ac3e 100755 (executable)
@@ -53,7 +53,7 @@ use warnings;
 use lib "/opt/rt3/local/lib";
 use lib "/opt/rt3/lib";
 
-use RT -init
+use RT -init;
 
 $| = 1;
 
index 6ff4a2a..a3852df 100755 (executable)
@@ -56,8 +56,8 @@ use lib "/opt/rt3/lib";
 use RT::Interface::CLI qw(Init);
 Init();
 
- my $db_name = RT->Config->Get('DatabaseName');
- my $db_type = RT->Config->Get('DatabaseType');
+my $db_name = RT->Config->Get('DatabaseName');
+my $db_type = RT->Config->Get('DatabaseType');
 
 my $dbh = $RT::Handle->dbh;
 
index 1740b1d..5c295cb 100755 (executable)
@@ -172,17 +172,6 @@ sub Prepare  {
 }
 
 
-sub Options {
-  my $self = shift;
-  return();
-}
-
-sub Rules {
-  my $self = shift;
-  return () if !$self->ScripObj or !$self->ScripObj->ActionRules;
-  return(split "\n", $self->ScripObj->ActionRules);
-}
-
 RT::Base->_ImportOverlays();
 
 1;
index 03bc212..d19f152 100644 (file)
@@ -733,7 +733,6 @@ sub ParseLines {
         FinalPriority   => $args{'finalpriority'} || 0,
         SquelchMailTo   => $args{'squelchmailto'},
         Type            => $args{'type'},
-        $self->Rules
     );
 
     if ( $args{content} ) {
@@ -1140,7 +1139,10 @@ sub UpdateCustomFields {
         }
 
         foreach my $value (@values) {
-            next unless length($value);
+            next if $ticket->CustomFieldValueIsEmpty(
+                Field => $cf,
+                Value => $value,
+            );
             my ( $val, $msg ) = $ticket->AddCustomFieldValue(
                 Field => $cf,
                 Value => $value
@@ -1214,24 +1216,6 @@ sub PostProcess {
 
 }
 
-sub Options {
-  my $self = shift;
-  my $queues = RT::Queues->new($self->CurrentUser);
-  $queues->UnLimit;
-  my @names;
-  while (my $queue = $queues->Next) {
-    push @names, $queue->Id, $queue->Name;
-  }
-  return (
-    {
-      'name'    => 'Queue',
-      'label'   => 'In queue',
-      'type'    => 'select',
-      'options' => \@names
-    }
-  )
-}
-
 RT::Base->_ImportOverlays();
 
 1;
index bd495db..69aaf86 100755 (executable)
@@ -193,19 +193,6 @@ sub IsApplicable  {
   return(undef);
 }
 
-sub Options {
-  my $self = shift;
-  return();
-}
-
-sub Rules {
-  my $self = shift;
-  return () if !$self->ScripObj or !$self->ScripObj->ConditionRules;
-  # By default, option names and values are on consecutive lines.
-  # Override this if you need anything more interesting.
-  return(split "\n", $self->ScripObj->ConditionRules);
-}
-
 sub DESTROY {
     my $self = shift;
 
diff --git a/rt/lib/RT/Condition/CustomFieldChange.pm b/rt/lib/RT/Condition/CustomFieldChange.pm
deleted file mode 100644 (file)
index b9228a5..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-package RT::Condition::CustomFieldChange;
-use base 'RT::Condition';
-use strict;
-
-=head2 IsApplicable
-
-If a custom field has a particular value.
-
-=cut
-
-# Based on Chuck Boeheim's code posted on the RT Wiki 3/13/06
-
-sub IsApplicable {
-    my $self = shift;
-    my $trans = $self->TransactionObj;
-    my $scrip = $self->ScripObj;
-    my %Rules = $self->Rules;
-    my ($field, $value) = @Rules{'field', 'value'};
-    return if !defined($field) or !defined($value);
-
-    if ($trans->Type eq 'Create') {
-        return 1 if $trans->TicketObj->FirstCustomFieldValue($field) eq $value;
-    }
-    if ($trans->Type eq 'CustomField') {
-        my $cf = RT::CustomField->new($self->CurrentUser);
-        $cf->Load($field);
-        return 1 if $trans->Field == $cf->Id and $trans->NewValue eq $value;
-    }
-    return undef;
-}
-
-sub Options {
-  my $self = shift;
-  my %args = ( 'QueueObj' => undef, @_ );
-  my $QueueObj = $args{'QueueObj'};
-  my $cfs = $QueueObj->TicketCustomFields();
-  my @fieldnames;
-  while ( my $cf = $cfs->Next ) {
-    push @fieldnames, $cf->Name, $cf->Name;
-  }
-  return (
-    { 
-      'name'    => 'field',
-      'label'   => 'Custom Field',
-      'type'    => 'select',
-      'options' => \@fieldnames,
-    },
-    {
-      'name'    => 'value',
-      'label'   => 'Value',
-      'type'    => 'text',
-    },
-  );
-}
-1;
-
index eedd406..5bd86e0 100755 (executable)
@@ -113,8 +113,6 @@ sub Create {
         CustomPrepareCode      => undef,
         CustomCommitCode       => undef,
         CustomIsApplicableCode => undef,
-        ConditionRules         => undef,
-        ActionRules            => undef,
         @_
     );
 
@@ -198,8 +196,6 @@ sub Create {
         CustomPrepareCode      => $args{'CustomPrepareCode'},
         CustomCommitCode       => $args{'CustomCommitCode'},
         CustomIsApplicableCode => $args{'CustomIsApplicableCode'},
-        ConditionRules         => $args{'ConditionRules'},
-        ActionRules            => $args{'ActionRules'},
     );
     return ( $id, $msg ) unless $id;
 
diff --git a/rt/share/html/Admin/Elements/EditScrip b/rt/share/html/Admin/Elements/EditScrip
deleted file mode 100755 (executable)
index defe09b..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-%# BEGIN BPS TAGGED BLOCK {{{
-%#
-%# COPYRIGHT:
-%#
-%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC
-%#                                          <sales@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 }}}
-<& /Elements/ListActions, actions => \@actions &>
-  
-<form method="post" action="Scrip.html" id="ModifyScrip" name="ModifyScrip">
-<input type="hidden" class="hidden" name="id" value="<% $id %>" />
-<input type="hidden" class="hidden" name="Queue" value="<% $Queue %>" />
-
-<&| /Widgets/TitleBox, title => loc('Scrip Fields') &>
-<table>
-
-<tr><td class="label"><&|/l&>Description</&>:</td><td class="value">\
-% if ( $immutable ) {
-<% $scrip->Description %> <i>(system scrip)</i>
-<input type="hidden" name="Scrip-<% $id %>-Description" value="<% $scrip->Description %>">
-% } else {
-<input name="Scrip-<% $id %>-Description" \
-    size="60" \
-    value="<% $ARGS{"Scrip-$id-Description"} || $scrip->Description || '' %>" />
-% }
-</td></tr>
-
-<tr><td class="label"><&|/l&>Condition</&>:</td><td class="value">\
-% if ( $immutable ) {
-<% loc( $scrip->ConditionObj->Name ) %>
-<input type="hidden" name="Scrip-<%$id%>-Condition" value="<% $scrip->ConditionObj->Id %>">
-% } else {
-<& /Admin/Elements/SelectScripCondition,
-    Name => "Scrip-$id-ScripCondition",
-    Default => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id,
-    ScripObj => $scrip,
-    Queue => $Queue,
-&>
-% }
-</td></tr>
-
-<& /Admin/Elements/EditScripOptions,
-    Name => "Condition",
-    Default => $ARGS{"Scrip-$id-ConditionRules"} || $scrip->ConditionRules,
-    Queue => $Queue,
-    ScripX => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id,
-&>
-
-<tr><td class="label"><&|/l&>Action</&>:</td><td class="value">\
-% if ( $immutable ) {
-<% loc( $scrip->ActionObj->Name ) %>
-<input type="hidden" name="Scrip-<%$id%>-Action" value="<% $scrip->ActionObj->Id %>">
-% } else {
-<& /Admin/Elements/SelectScripAction,
-    Name => "Scrip-$id-ScripAction",
-    Default => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id,
-    ScripObj => $scrip,
-    Queue => $Queue,
-&>
-% }
-</td></tr>
-
-<& /Admin/Elements/EditScripOptions,
-    Name => "Action",
-    Default => $ARGS{"Scrip-$id-ActionRules"} || $scrip->ActionRules,
-    Queue => $Queue,
-    ScripX => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id,
-&>
-
-<tr><td class="label"><&|/l&>Template</&>:</td><td class="value">\
-%# immutable flag doesn't affect this
-<& /Admin/Elements/SelectTemplate,
-    Name => "Scrip-$id-Template",
-    Default => $ARGS{"Scrip-$id-Template"} || $scrip->TemplateObj->Id,
-    Queue => $Queue,
-&>
-</td></tr>
-
-<tr><td class="label"><&|/l&>Stage</&>:</td><td class="value">\
-%# or this
-<& /Admin/Elements/SelectStage,
-    Name => "Scrip-$id-Stage",
-    Default => $ARGS{"Scrip-$id-Stage"} || $scrip->Stage,
-&></td></tr>
-
-</table>
-</&>
-
-% if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) {
-<& /Elements/Submit,
-    Label => $SubmitLabel,
-    Reset => 1,
-&><br />
-
-<&| /Widgets/TitleBox, title => loc('User Defined conditions and actions') &>
-<table>
-<tr><td colspan="2">
-<i><&|/l&>(Use these fields when you choose 'User Defined' for a condition or action)</&></i>
-</td></tr>
-
-<tr><td class="labeltop"><&|/l&>Custom condition</&>:</td><td class="value">
-% my $code = $ARGS{"Scrip-$id-CustomIsApplicableCode"} || $scrip->CustomIsApplicableCode || '';
-% my $lines = @{[ $code =~ /\n/gs ]} + 3;
-% $lines = $min_lines if $lines < $min_lines;
-<textarea cols="80" rows="<% $lines %>" name="Scrip-<% $id %>-CustomIsApplicableCode"><% $code %></textarea>
-</td></tr>
-
-<tr><td class="labeltop"><&|/l&>Custom action preparation code</&>:</td><td class="value">
-% $code = $ARGS{"Scrip-$id-CustomPrepareCode"} || $scrip->CustomPrepareCode || '';
-% $lines = @{[ $code =~ /\n/gs ]} + 3;
-% $lines = $min_lines if $lines < $min_lines;
-<textarea cols="80" rows="<% $lines %>" name="Scrip-<% $id %>-CustomPrepareCode"><% $code %></textarea>
-</td></tr>
-
-<tr><td class="labeltop"><&|/l&>Custom action cleanup code</&>:</td><td class="value">
-% $code = $ARGS{"Scrip-$id-CustomCommitCode"} || $scrip->CustomCommitCode || '';
-% $lines = @{[ $code =~ /\n/gs ]} + 3;
-% $lines = $min_lines if $lines < $min_lines;
-<textarea cols="80" rows="<% $lines %>" name="Scrip-<% $id || '' %>-CustomCommitCode"><% $code %></textarea>
-</td></tr>
-
-</table>
-</&>
-
-% }
-
-<& /Elements/Submit,
-    Label => $SubmitLabel,
-    Reset => 1,
-&>
-
-</form>
-<%init>
-
-my (@actions, $SubmitLabel);
-my $scrip = RT::Scrip->new( $session{'CurrentUser'} );
-my $immutable = 0;
-
-if ( $id ) {
-    $scrip->Load( $id );
-    unless ( $id = $scrip->id ) {
-        push @actions, loc("Couldn't load scrip #[_1]", $id);
-    }
-    $SubmitLabel = loc('Save Changes');
-    my $a = $scrip->FirstAttribute('Immutable');
-    if ( defined($a) and $a->Content ) {
-        $immutable = 1;
-    }
-}
-
-unless ( $id ) {
-    $id = 'new';
-    $SubmitLabel = loc('Create');
-}
-
-my $min_lines = 10;
-
-my ($ok, $msg) = $scrip->CompileCheck;
-push @actions, $msg if !$ok;
-
-</%init>
-
-<%ARGS>
-$id => undef
-$title => undef
-$Queue => 0
-</%ARGS>
-
-<%METHOD Process>
-<%ARGS>
-$id => undef
-$Queue => undef
-</%ARGS>
-<%INIT>
-return ($id) unless $id;
-
-my @rules = ('ConditionRules', 'ActionRules');
-if ( exists($ARGS{"Scrip-$id-ScripCondition"}) ) {
-  foreach my $rules (@rules) {
-    my $prefix = join('-', 'Scrip', $id, $rules);
-    $ARGS{$prefix} = join("\n", map {
-      $_ =~ /^$rules-(.*)$/ ? 
-            ($1, $ARGS{$_}) : ()
-    } keys(%ARGS)
-    );
-  }
-}
-
-my $scrip = RT::Scrip->new( $session{'CurrentUser'} );
-if ( $id eq 'new' ) {
-    return $scrip->Create(
-        Queue                  => $Queue,
-        ScripAction            => $ARGS{"Scrip-new-ScripAction"},
-        ScripCondition         => $ARGS{"Scrip-new-ScripCondition"},
-        Template               => $ARGS{"Scrip-new-Template"},
-        Description            => $ARGS{"Scrip-new-Description"},
-        CustomPrepareCode      => $ARGS{"Scrip-new-CustomPrepareCode"},
-        CustomCommitCode       => $ARGS{"Scrip-new-CustomCommitCode"},
-        CustomIsApplicableCode => $ARGS{"Scrip-new-CustomIsApplicableCode"},
-        Stage                  => $ARGS{"Scrip-new-Stage"},
-        ConditionRules         => $ARGS{"Scrip-new-ConditionRules"},
-        ActionRules            => $ARGS{"Scrip-new-ActionRules"},
-    );
-}
-else {
-    $scrip->Load( $id );
-    return (undef, loc("Couldn't load scrip #[_1]", $id))
-        unless $scrip->id;
-
-    my @attribs = qw(Queue ScripAction ScripCondition Template Stage
-        Description CustomPrepareCode CustomCommitCode CustomIsApplicableCode
-        ConditionRules ActionRules);
-    my @results = UpdateRecordObject(
-        AttributesRef   => \@attribs,
-        AttributePrefix => 'Scrip-'.$scrip->Id,
-        Object          => $scrip,
-        ARGSRef         => \%ARGS
-    );
-    return ($scrip->id, @results);
-}
-</%INIT>
-</%METHOD>
diff --git a/rt/share/html/Admin/Elements/EditScripOptions b/rt/share/html/Admin/Elements/EditScripOptions
deleted file mode 100644 (file)
index 264ca3a..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-% return if !@options;
-<tr><td></td><td><table>
-% my $prefix = $Name.'Rules-';
-% foreach my $o (@options) {
-%   my $curr_value = $rules{ $o->{'name'} };
-  <tr><td align="right"><% $o->{'label'} %>:</td>
-  <td>
-%   if ( $o->{'type'} eq 'text' ) {
-  <input type="text" name="<% $prefix.$o->{'name'} %>" value="<% $curr_value %>">
-%   }
-%   elsif ( $o->{'type'} eq 'checkbox' ) {
-  <input type="checkbox" name="<% $prefix.$o->{'name'} %>" value="1" <% $curr_value ? 'CHECKED' : '' %>>
-%   }
-%   elsif ( $o->{'type'} eq 'select' and ref $o->{'options'} ) {
-  <select name="<% $prefix.$o->{'name'} %>">
-%     my @choices = @{ $o->{'options'} };
-%     while (@choices) {
-%       my $v = shift @choices;
-%       my $l = shift @choices;
-  <option value="<% $v %>"<% ($curr_value eq $v) ? ' SELECTED' : ''%>>
-  <% $l %></option>
-%     }
-  </select>
-%   } # else $o->{'type'}
-</td></tr>
-% } #foreach $o
-</table></td></tr>
-
-<%INIT>
-my (@options, %rules);
-if ( $ScripX ) {
-  my $ScripXObj = "RT::Scrip$Name"->new($session{'CurrentUser'});
-  $ScripXObj->Load($ScripX);
-  my $QueueObj = RT::Queue->new($session{'CurrentUser'});
-  $QueueObj->Load($Queue);
-  my $method = "Load$Name";
-  my $XObj = $ScripXObj->$method();
-  @options = $XObj->Options('QueueObj' => $QueueObj);
-  %rules = split("\n", $Default);
-}
-</%INIT>
-
-<%ARGS>
-$Name => undef
-$Default => undef
-$Queue => 0
-$ScripX => undef
-</%ARGS>
index 88c2f20..395a1a3 100755 (executable)
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>"
-onchange="var idobj = document.getElementsByName('id')[0]; 
-if (idobj.value=='new') idobj.value = '';
-form.submit()">
+<select name="<%$Name%>">
 <option value="" 
 <% ! defined $Default && qq[ selected="selected"] |n %>
 >-</option>
index ae663c7..2cc5bc9 100755 (executable)
 %# those contributions and any derivatives thereof.
 %#
 %# END BPS TAGGED BLOCK }}}
-<select name="<%$Name%>"
-onchange="var idobj = document.getElementsByName('id')[0]; 
-if (idobj.value=='new') idobj.value = '';
-form.submit()">
+<select name="<%$Name%>">
 <option value="" 
 <% ! defined $Default && qq[ selected="selected"] %>
 >-</option>