X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FAdmin%2FElements%2FEditScrip;h=3e2227c7381bed2152397d04d7f0eabeaced0801;hp=29ec71cd70af5cb3beefd8fc54aa231bf495c921;hb=ac20214d38d9af00430423f147b5a0e50751b050;hpb=b4b0c7e72d7eaee2fbfc7022022c9698323203dd diff --git a/rt/share/html/Admin/Elements/EditScrip b/rt/share/html/Admin/Elements/EditScrip index 29ec71cd7..3e2227c73 100755 --- a/rt/share/html/Admin/Elements/EditScrip +++ b/rt/share/html/Admin/Elements/EditScrip @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2014 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 @@ -43,42 +43,81 @@ %# 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') &> - - + ScripObj => $scrip, + Queue => $Queue, +&> +% } + + +<& /Admin/Elements/EditScripOptions, + Name => "Condition", + Default => $ARGS{"Scrip-$id-ConditionRules"} || $scrip->ConditionRules, + Queue => $Queue, + ScripX => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id, +&> - + ScripObj => $scrip, + Queue => $Queue, +&> +% } + - +&> + -
<&|/l&>Description: -<&|/l&>Description:\ +% if ( $immutable ) { +<% $scrip->Description %> (system scrip) + +% } else { +Description || '' %>" /> +% }
<&|/l&>Condition: +
<&|/l&>Condition:\ +% if ( $immutable ) { +<% loc( $scrip->ConditionObj->Name ) %> + +% } else { <& /Admin/Elements/SelectScripCondition, Name => "Scrip-$id-ScripCondition", Default => $ARGS{"Scrip-$id-ScripCondition"} || $scrip->ConditionObj->Id, -&>
<&|/l&>Action: +
<&|/l&>Action:\ +% if ( $immutable ) { +<% loc( $scrip->ActionObj->Name ) %> + +% } else { <& /Admin/Elements/SelectScripAction, Name => "Scrip-$id-ScripAction", Default => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id, -&>
<&|/l&>Template: +<& /Admin/Elements/EditScripOptions, + Name => "Action", + Default => $ARGS{"Scrip-$id-ActionRules"} || $scrip->ActionRules, + Queue => $Queue, + ScripX => $ARGS{"Scrip-$id-ScripAction"} || $scrip->ActionObj->Id, +&> + +
<&|/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: +
<&|/l&>Stage:\ +%# or this <& /Admin/Elements/SelectStage, Name => "Scrip-$id-Stage", Default => $ARGS{"Scrip-$id-Stage"} || $scrip->Stage, @@ -87,6 +126,7 @@
+% if ($session{CurrentUser}->HasRight(Object => $RT::System, Right => 'ExecuteCode')) { <& /Elements/Submit, Label => $SubmitLabel, Reset => 1, @@ -98,21 +138,21 @@ <&|/l&>(Use these fields when you choose 'User Defined' for a condition or action) -<&|/l&>Custom condition: +<&|/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: +<&|/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: +<&|/l&>Custom action cleanup code: % $code = $ARGS{"Scrip-$id-CustomCommitCode"} || $scrip->CustomCommitCode || ''; % $lines = @{[ $code =~ /\n/gs ]} + 3; % $lines = $min_lines if $lines < $min_lines; @@ -122,6 +162,8 @@ +% } + <& /Elements/Submit, Label => $SubmitLabel, Reset => 1, @@ -132,6 +174,7 @@ my (@actions, $SubmitLabel); my $scrip = RT::Scrip->new( $session{'CurrentUser'} ); +my $immutable = 0; if ( $id ) { $scrip->Load( $id ); @@ -139,6 +182,10 @@ if ( $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 ) { @@ -148,6 +195,9 @@ unless ( $id ) { my $min_lines = 10; +my ($ok, $msg) = $scrip->CompileCheck; +push @actions, $msg if !$ok; + <%ARGS> @@ -164,6 +214,18 @@ $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( @@ -176,6 +238,8 @@ if ( $id eq 'new' ) { 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 { @@ -184,7 +248,8 @@ else { unless $scrip->id; my @attribs = qw(Queue ScripAction ScripCondition Template Stage - Description CustomPrepareCode CustomCommitCode CustomIsApplicableCode); + Description CustomPrepareCode CustomCommitCode CustomIsApplicableCode + ConditionRules ActionRules); my @results = UpdateRecordObject( AttributesRef => \@attribs, AttributePrefix => 'Scrip-'.$scrip->Id,