% 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;
};
%once>
<%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' : '';
%init>