% unless ( $opt{'js_only'} ) { <% include( 'select.html', 'field' => $name.'_conditionname', 'id' => $id.'_conditionname', 'options' => \@conditions, 'curr_value' => $conditionname, 'labels' => { '' => 'Select Condition' }, 'onchange' => $name.'_changed', ) %> <% include( 'select.html', 'field' => $name.'_op', 'id' => $id.'_op', 'options' => \@op, 'curr_value' => scalar($cgi->param($name.'_op')) || $cgp_rule_condition->op, 'disabled' => $disabled, 'style' => $style, ) %> <% include( 'input-text.html', 'field' => $name.'_params', 'id' => $id.'_params', 'curr_value' => scalar($cgi->param($name.'_params')) || $cgp_rule_condition->params, 'disabled' => $disabled, 'style' => $style, 'nodarken_disabled' => 1, ) %> % # could add more UI sugar for date/time ranges, string #lists, etc. % } % unless ( $opt{'html_only'} || $opt{'js_only'} ) { % } <%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', 'Cc', 'Reply-To', 'Any To or Cc', 'Each To or Cc', 'Return-Path', "'From' Name", 'Subject', 'Message-ID', 'Message Size', 'Human Generated', 'Header Field', 'Any Recipient', 'Each Recipient', 'Source', 'Security', 'Any Route', 'Each Route' ); my %bool = ( map { $_=>1 } ( #hide the op and valud dropdowns entirely '', 'Human Generated', )); my %no_in = ( map { $_=>1 } ( #hide in/not in 'Message Size', 'Current Date', 'Existing Mailbox', )); my %lt_gt = ( map { $_=>1 } ( #add less than/greater than 'Message Size', 'Time of Day', 'Current Date', )); 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; }; <%init> my %opt = @_; my $name = $opt{'element_name'} || $opt{'field'} || 'ruleconditionnum'; #my $id = $opt{'id'} || 'contactnum'; my $id = $opt{'id'} || $opt{'field'} || 'ruleconditionnum'; my $curr_value = $opt{'curr_value'} || $opt{'value'}; my $onchange = ''; if ( $opt{'onchange'} ) { $onchange = $opt{'onchange'}; $onchange .= '(what)' unless $onchange =~ /\(\w*\);?$/; } my $cgp_rule_condition; if ( $curr_value ) { $cgp_rule_condition = qsearchs('cgp_rule_condition', { 'ruleconditionnum' => $curr_value } ); } else { $cgp_rule_condition = new FS::cgp_rule_condition {}; } my $conditionname = scalar($cgi->param($name.'_conditionname')) || $cgp_rule_condition->conditionname; my @op = &$cond2op($conditionname); my $disabled = scalar(@op) ? '' : 1; my $style = $disabled ? 'visibility:hidden' : '';