summaryrefslogtreecommitdiff
path: root/httemplate/elements
diff options
context:
space:
mode:
authorivan <ivan>2010-04-29 02:59:23 +0000
committerivan <ivan>2010-04-29 02:59:23 +0000
commit2070eba260962b206f936e46c64d8072c58b2194 (patch)
tree9142bbb4ba9a43fd40330a13dcad78304a7c6d49 /httemplate/elements
parentdc3fc48e5104f649a4b11a8feb50b128e14f0bd9 (diff)
communigate (phase 2): rules: adding conditions and actions to rule edit. RT#7514
Diffstat (limited to 'httemplate/elements')
-rw-r--r--httemplate/elements/select-cgp_rule_action.html10
-rw-r--r--httemplate/elements/select-cgp_rule_condition.html154
2 files changed, 137 insertions, 27 deletions
diff --git a/httemplate/elements/select-cgp_rule_action.html b/httemplate/elements/select-cgp_rule_action.html
index 24301b59b..25c3a2567 100644
--- a/httemplate/elements/select-cgp_rule_action.html
+++ b/httemplate/elements/select-cgp_rule_action.html
@@ -20,6 +20,16 @@ my %opt = @_;
my @actions = (
'',
+
+ #generic http://www.communigate.com/CommunigatePro/Rules.html#Actions
+ 'Reject',
+ 'SendURL',
+ 'Send IM',
+ 'FingerNotify',
+ 'Write To Log',
+ "Remember 'From' in",
+
+ #email http://www.communigate.com/CommunigatePro/QueueRules.html#Actions
'Stop Processing',
'Discard',
'Reject With',
diff --git a/httemplate/elements/select-cgp_rule_condition.html b/httemplate/elements/select-cgp_rule_condition.html
index 1ce85bdb6..eaf7211fa 100644
--- a/httemplate/elements/select-cgp_rule_condition.html
+++ b/httemplate/elements/select-cgp_rule_condition.html
@@ -1,26 +1,106 @@
-<% include( 'select.html',
- %opt,
- 'options' => \@conditions, #reverse order if we ever need to spec
- 'labels' => { '' => 'Select Condition' },
- )
-%>
-<% include( 'select.html',
- 'name' => $opt{'field'}.'_op',
- 'id' => ($opt{'field'}||$opt{'id'}).'_op',
- 'options' => \@myop,
- )
-%>
-<% include( 'input-text.html',
- 'name' => $opt{'field'}.'_params',
- #XXX curr value... anything else?
- )
-%>
-<%init>
+% unless ( $opt{'js_only'} ) {
+ <% include( 'select.html',
+ %opt,
+ 'options' => \@conditions,
+ 'labels' => { '' => 'Select Condition' },
+ 'onchange' => $key.'_changed',
+ )
+ %>
+ <% include( 'select.html',
+ 'name' => $opt{'field'}.'_op',
+ 'id' => $key.'_op',
+ 'options' => \@op,
+ #XXX curr op
+ )
+ %>
+ <% include( 'input-text.html',
+ 'name' => $opt{'field'}.'_params',
+ 'id' => $key.'_params',
+ #XXX curr value... anything else?
+ )
+ %>
+% # could add more UI sugar for date/time ranges, string #lists, etc.
+% }
+% unless ( $opt{'html_only'} || $opt{'js_only'} ) {
+ <SCRIPT TYPE="text/javascript">
+% }
+% unless ( $opt{'html_only'} ) {
-my %opt = @_;
+ function opt(what,value,text) {
+ var optionName = new Option(text, value, false, false);
+ var length = what.length;
+ what.options[length] = optionName;
+ }
+
+ function <% $key %>_changed(what) {
+
+ <% $opt{'onchange'} %>
+
+ var <% $key %>_value = what.options[what.selectedIndex].value;
+ //alert ("condition changed to " + <% $key %>_value );
+
+ var op_Element = what.form.<% $key %>_op;
+ var params_Element = what.form.<% $key %>_params;
+
+ //cond2op in javascript... not as elegant cause my js << my perl
+
+ // if bool, hide/disable _op and _params entirely
+ if ( <%$key%>_value == '' || <%$key%>_value == 'Human Generated' ) {
+ op_Element.disabled = true;
+ op_Element.style.visibility = "hidden";
+ params_Element.disabled = true;
+ params_Element.style.visibility = "hidden";
+ return true;
+ }
+
+ var OpArray = [ 'is', 'is not' ];
+
+ // if lt_ge, add em
+ if ( <%$key%>_value == 'Message Size' || <%$key%>_value == 'Time of Day' || <%$key%>_value == 'Current Date' ) {
+ OpArray.push('less than');
+ OpArray.push('greater than');
+ }
+
+ // unless no_in, add em
+ if ( <%$key%>_value != 'Message Size' && <%$key%>_value != 'Current Date' && <%$key%>_value != 'Existing Mailbox' ) {
+ OpArray.push('in');
+ OpArray.push('not in');
+ }
+
+ // blank the current op list
+ for ( var i = op_Element.length; i >= 0; i-- )
+ op_Element.options[i] = null;
+
+ // update the _op select with this new array
+ for ( var s = 0; s < OpArray.length; s++ )
+ opt(what.form.<% $key %>_op, OpArray[s], OpArray[s]);
+
+ // show _op and _params (in case we were a bool before)
+ op_Element.disabled = false;
+ op_Element.style.visibility = "visible";
+ params_Element.disabled = false;
+ params_Element.style.visibility = "visible";
+
+ }
+% }
+% unless ( $opt{'html_only'} || $opt{'js_only'} ) {
+ </SCRIPT>
+% }
+<%once>
my @conditions = (
'',
+
+ #generic http://www.communigate.com/CommunigatePro/Rules.html#Conditions
+ 'Submit Address',
+ 'Time of Day',
+ 'Current Date',
+ 'Current Day',
+ 'Preference',
+ 'FreeBusy',
+ 'Existing Mailbox',
+
+ #email http://www.communigate.com/CommunigatePro/QueueRules.html#Conditions
'From',
'Sender',
'To',
@@ -43,21 +123,41 @@ my @conditions = (
'Each Route'
);
-my %bool = (
+my %bool = ( #hide the op and valud dropdowns entirely
+ '' => 1, #XXX hide _op and _params on "Select Condition"
'Human Generated' => 1,
);
-my %number = (
+my %no_in = ( #hide in/not in
'Message Size' => 1,
+ 'Current Date' => 1,
+ 'Existing Mailbox' => 1,
);
-#XXX curr value -> hidden op / param / param selects depending
+my %lt_gt = ( #add less than/greater than
+ 'Message Size' => 1,
+ 'Time of Day', => 1,
+ 'Current Date', => 1,
+);
-my @op = ( 'is', 'is not', 'in', 'not in' );
-my @op_number = ( 'is', 'is_not', 'less than', 'greater than' );
+my $cond2op = sub {
+ my $cond = shift;
+ return () if $bool{$cond};
+ my @op = ( 'is', 'is not' );
+ push @op, 'less than', 'greater than' if $lt_gt{$cond};
+ push @op, 'in', 'not in' unless $no_in{$cond};
+ @op;
+};
-my @myop = @op; #XXX $number{$curr_value} ? @op_number : @op;
-#XXX and a fancy onchange handler... yes.
-#XXX (and for total hiding of the %bool one)
+</%once>
+<%init>
+
+my %opt = @_;
+
+my $key = $opt{'field'} || $opt{'id'};
+
+#XXX curr value -> hidden op / param / param selects depending
+#my @op = &$cond2op($curr_value);
+my @op = &$cond2op();
</%init>