diff options
author | mark <mark> | 2010-11-17 20:44:11 +0000 |
---|---|---|
committer | mark <mark> | 2010-11-17 20:44:11 +0000 |
commit | 5ef064aeca4a22dbe38b538e65d512d5d398fe2f (patch) | |
tree | 81959e7fd86bc537b61cf530983df26b01ca4fba /rt/share/html/Admin | |
parent | 2a874cdff2e2bc0d5d6920aae306d5b7c3d4aa97 (diff) |
create ticket on custom field change, RT#10139
Diffstat (limited to 'rt/share/html/Admin')
-rwxr-xr-x | rt/share/html/Admin/Elements/EditScrip | 35 | ||||
-rw-r--r-- | rt/share/html/Admin/Elements/EditScripOptions | 44 | ||||
-rwxr-xr-x | rt/share/html/Admin/Elements/SelectScripAction | 5 | ||||
-rwxr-xr-x | rt/share/html/Admin/Elements/SelectScripCondition | 5 |
4 files changed, 86 insertions, 3 deletions
diff --git a/rt/share/html/Admin/Elements/EditScrip b/rt/share/html/Admin/Elements/EditScrip index 2bcf64d49..a4e8beb4a 100755 --- a/rt/share/html/Admin/Elements/EditScrip +++ b/rt/share/html/Admin/Elements/EditScrip @@ -64,14 +64,32 @@ <& /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 align="right"><&|/l&>Action</&>:</td><td> <& /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 align="right"><&|/l&>Template</&>:</td><td> <& /Admin/Elements/SelectTemplate, Name => "Scrip-$id-Template", @@ -165,6 +183,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( @@ -177,6 +207,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 { @@ -185,7 +217,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, diff --git a/rt/share/html/Admin/Elements/EditScripOptions b/rt/share/html/Admin/Elements/EditScripOptions new file mode 100644 index 000000000..7b3848419 --- /dev/null +++ b/rt/share/html/Admin/Elements/EditScripOptions @@ -0,0 +1,44 @@ +% return if !@options; +<tr><td></td><td><table> +% my $prefix = $Name.'Rules-'; +% foreach my $o (@options) { + <tr><td align="right"><% $o->{'label'} %>:</td> + <td> +% if ( $o->{'type'} eq 'text' ) { + <input type="text" name="<% $prefix.$o->{'name'} %>" value="<% $rules{$o->{'name'}} %>"> +% } +% 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 %>"<% ($rules{$o->{'name'}} 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> diff --git a/rt/share/html/Admin/Elements/SelectScripAction b/rt/share/html/Admin/Elements/SelectScripAction index f6d5bb23f..48065905c 100755 --- a/rt/share/html/Admin/Elements/SelectScripAction +++ b/rt/share/html/Admin/Elements/SelectScripAction @@ -45,7 +45,10 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} -<select name="<%$Name%>"> +<select name="<%$Name%>" +onchange="var idobj = document.getElementsByName('id')[0]; +if (idobj.value=='new') idobj.value = ''; +form.submit()"> <option value="" <% ! defined $Default && qq[ selected="selected"] |n %> >-</option> diff --git a/rt/share/html/Admin/Elements/SelectScripCondition b/rt/share/html/Admin/Elements/SelectScripCondition index 34e700d9e..516766157 100755 --- a/rt/share/html/Admin/Elements/SelectScripCondition +++ b/rt/share/html/Admin/Elements/SelectScripCondition @@ -45,7 +45,10 @@ %# those contributions and any derivatives thereof. %# %# END BPS TAGGED BLOCK }}} -<select name="<%$Name%>"> +<select name="<%$Name%>" +onchange="var idobj = document.getElementsByName('id')[0]; +if (idobj.value=='new') idobj.value = ''; +form.submit()"> <option value="" <% ! defined $Default && qq[ selected="selected"] %> >-</option> |