From: Mark Wells Date: Tue, 14 Jul 2015 03:55:30 +0000 (-0700) Subject: remove "create ticket on custom field change" (#10139) to avoid conflicts with RT 4.2 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=d0b51206d9d8ba21b820df6be0a342179fea68aa remove "create ticket on custom field change" (#10139) to avoid conflicts with RT 4.2 --- diff --git a/rt/etc/initialdata b/rt/etc/initialdata index 9b2af3744..96255b5ed 100644 --- a/rt/etc/initialdata +++ b/rt/etc/initialdata @@ -247,16 +247,16 @@ }, #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', + #}, ); diff --git a/rt/etc/upgrade/4.0-customfield-checkbox-extension b/rt/etc/upgrade/4.0-customfield-checkbox-extension index dc8904e43..a83ac3e14 100755 --- a/rt/etc/upgrade/4.0-customfield-checkbox-extension +++ b/rt/etc/upgrade/4.0-customfield-checkbox-extension @@ -53,7 +53,7 @@ use warnings; use lib "/opt/rt3/local/lib"; use lib "/opt/rt3/lib"; -use RT -init +use RT -init; $| = 1; diff --git a/rt/etc/upgrade/upgrade-articles b/rt/etc/upgrade/upgrade-articles index 6ff4a2a13..a3852dfb3 100755 --- a/rt/etc/upgrade/upgrade-articles +++ b/rt/etc/upgrade/upgrade-articles @@ -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; diff --git a/rt/lib/RT/Action.pm b/rt/lib/RT/Action.pm index 1740b1d66..5c295cb8b 100755 --- a/rt/lib/RT/Action.pm +++ b/rt/lib/RT/Action.pm @@ -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; diff --git a/rt/lib/RT/Action/CreateTickets.pm b/rt/lib/RT/Action/CreateTickets.pm index 03bc21255..d19f152d0 100644 --- a/rt/lib/RT/Action/CreateTickets.pm +++ b/rt/lib/RT/Action/CreateTickets.pm @@ -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; diff --git a/rt/lib/RT/Condition.pm b/rt/lib/RT/Condition.pm index bd495db76..69aaf8664 100755 --- a/rt/lib/RT/Condition.pm +++ b/rt/lib/RT/Condition.pm @@ -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 index b9228a50f..000000000 --- a/rt/lib/RT/Condition/CustomFieldChange.pm +++ /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; - diff --git a/rt/lib/RT/Scrip.pm b/rt/lib/RT/Scrip.pm index eedd4060f..5bd86e0d7 100755 --- a/rt/lib/RT/Scrip.pm +++ b/rt/lib/RT/Scrip.pm @@ -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 index defe09b01..000000000 --- a/rt/share/html/Admin/Elements/EditScrip +++ /dev/null @@ -1,262 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC -%# -%# -%# (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 &> - -
- - - -<&| /Widgets/TitleBox, title => loc('Scrip Fields') &> - - - - - - -<& /Admin/Elements/EditScripOptions, - Name => "Condition", - Default => $ARGS{"Scrip-$id-ConditionRules"} || $scrip->ConditionRules, - Queue => $Queue, - ScripX => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id, -&> - - - -<& /Admin/Elements/EditScripOptions, - Name => "Action", - Default => $ARGS{"Scrip-$id-ActionRules"} || $scrip->ActionRules, - Queue => $Queue, - ScripX => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id, -&> - - - - - -
<&|/l&>Description:\ -% if ( $immutable ) { -<% $scrip->Description %> (system scrip) - -% } else { -Description || '' %>" /> -% } -
<&|/l&>Condition:\ -% if ( $immutable ) { -<% loc( $scrip->ConditionObj->Name ) %> - -% } else { -<& /Admin/Elements/SelectScripCondition, - Name => "Scrip-$id-ScripCondition", - Default => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id, - ScripObj => $scrip, - Queue => $Queue, -&> -% } -
<&|/l&>Action:\ -% if ( $immutable ) { -<% loc( $scrip->ActionObj->Name ) %> - -% } else { -<& /Admin/Elements/SelectScripAction, - Name => "Scrip-$id-ScripAction", - Default => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id, - ScripObj => $scrip, - Queue => $Queue, -&> -% } -
<&|/l&>Template:\ -%# immutable flag doesn't affect this -<& /Admin/Elements/SelectTemplate, - Name => "Scrip-$id-Template", - Default => $ARGS{"Scrip-$id-Template"} || $scrip->TemplateObj->Id, - Queue => $Queue, -&> -
<&|/l&>Stage:\ -%# or this -<& /Admin/Elements/SelectStage, - Name => "Scrip-$id-Stage", - Default => $ARGS{"Scrip-$id-Stage"} || $scrip->Stage, -&>
- - -% if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) { -<& /Elements/Submit, - Label => $SubmitLabel, - Reset => 1, -&>
- -<&| /Widgets/TitleBox, title => loc('User Defined conditions and actions') &> - - - - - - - - - -
-<&|/l&>(Use these fields when you choose 'User Defined' for a condition or action) -
<&|/l&>Custom condition: -% my $code = $ARGS{"Scrip-$id-CustomIsApplicableCode"} || $scrip->CustomIsApplicableCode || ''; -% my $lines = @{[ $code =~ /\n/gs ]} + 3; -% $lines = $min_lines if $lines < $min_lines; - -
<&|/l&>Custom action preparation code: -% $code = $ARGS{"Scrip-$id-CustomPrepareCode"} || $scrip->CustomPrepareCode || ''; -% $lines = @{[ $code =~ /\n/gs ]} + 3; -% $lines = $min_lines if $lines < $min_lines; - -
<&|/l&>Custom action cleanup code: -% $code = $ARGS{"Scrip-$id-CustomCommitCode"} || $scrip->CustomCommitCode || ''; -% $lines = @{[ $code =~ /\n/gs ]} + 3; -% $lines = $min_lines if $lines < $min_lines; - -
- - -% } - -<& /Elements/Submit, - Label => $SubmitLabel, - Reset => 1, -&> - -
-<%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; - - - -<%ARGS> -$id => undef -$title => undef -$Queue => 0 - - -<%METHOD Process> -<%ARGS> -$id => undef -$Queue => undef - -<%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); -} - - diff --git a/rt/share/html/Admin/Elements/EditScripOptions b/rt/share/html/Admin/Elements/EditScripOptions deleted file mode 100644 index 264ca3a20..000000000 --- a/rt/share/html/Admin/Elements/EditScripOptions +++ /dev/null @@ -1,48 +0,0 @@ -% return if !@options; - -% my $prefix = $Name.'Rules-'; -% foreach my $o (@options) { -% my $curr_value = $rules{ $o->{'name'} }; - - -% } #foreach $o -
<% $o->{'label'} %>: -% if ( $o->{'type'} eq 'text' ) { - -% } -% elsif ( $o->{'type'} eq 'checkbox' ) { - > -% } -% elsif ( $o->{'type'} eq 'select' and ref $o->{'options'} ) { - -% } # else $o->{'type'} -
- -<%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); -} - - -<%ARGS> -$Name => undef -$Default => undef -$Queue => 0 -$ScripX => undef - diff --git a/rt/share/html/Admin/Elements/SelectScripAction b/rt/share/html/Admin/Elements/SelectScripAction index 88c2f2035..395a1a353 100755 --- a/rt/share/html/Admin/Elements/SelectScripAction +++ b/rt/share/html/Admin/Elements/SelectScripAction @@ -45,10 +45,7 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} - diff --git a/rt/share/html/Admin/Elements/SelectScripCondition b/rt/share/html/Admin/Elements/SelectScripCondition index ae663c764..2cc5bc9c7 100755 --- a/rt/share/html/Admin/Elements/SelectScripCondition +++ b/rt/share/html/Admin/Elements/SelectScripCondition @@ -45,10 +45,7 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} -