version 1.176, 2009/06/15 11:18:11
|
version 1.178, 2010/01/26 11:34:47
|
Line 2066 the toplevel default.sequence in the res
|
Line 2066 the toplevel default.sequence in the res
|
evaluated with "sub { my $helper = shift; my $state = shift;" and |
evaluated with "sub { my $helper = shift; my $state = shift;" and |
"}", with the return value used as the mapurl. |
"}", with the return value used as the mapurl. |
|
|
|
=item * <option />: Allows you to add optional elements to the |
|
resource chooser currently these can be a checkbox, or a text entry |
|
or hidden (see the 'type' attribute below). |
|
the following attributes are supported by this tag: |
|
|
|
=over 4 |
|
|
|
=item * type=control-type : determines the type of control displayed. |
|
This can be one of the following types: 'checkbox' provides a true/false |
|
checkbox. 'text' provides a text entry control. 'hidden' provides a |
|
hidden form element that returns the name of the resource for each |
|
element of the text box. |
|
|
|
=item * text=header-text : provides column header text for the option. |
|
|
|
=item * variable=helpervar : provides a helper variable to contain the |
|
value of the input control for each resource. In general, the result |
|
will be a set of values separated by ||| for the checkbox the value between |
|
the |||'s will either be empty, if the box is not checked, or the resource |
|
name if checked. For the text entry, the values will be the text in the |
|
text box. This could be empty. Hidden elements unconditionally provide |
|
the resource name for each row of the chooser and allow you to therefore |
|
correlate text entries to their resources. |
|
The helper variable can be initialized by the user code to pre-load values |
|
into the controls: |
|
|
|
=over 4 |
|
|
|
|
|
=item * Preloading checkboxes : Set the helper variable to the value you |
|
would have gotten from the control if it had been manually set as desired. |
|
|
|
=item * Preloading text entries : Set the helper variable to triple pipe |
|
separated values where each value is of the form resource-name=value |
|
|
|
=item * Preloading hidden fields : These cannot be pre-loaded and will always |
|
be pipe separated resource names. |
|
|
|
=back |
|
|
|
|
|
=back |
|
|
=back |
=back |
|
|
=cut |
=cut |
Line 2195 sub start_option {
|
Line 2238 sub start_option {
|
if (!defined($paramHash->{OPTION_TEXTS})) { |
if (!defined($paramHash->{OPTION_TEXTS})) { |
$paramHash->{OPTION_TEXTS} = [ ]; |
$paramHash->{OPTION_TEXTS} = [ ]; |
$paramHash->{OPTION_VARS} = [ ]; |
$paramHash->{OPTION_VARS} = [ ]; |
|
$paramHash->{OPTION_TYPES} = [ ]; |
|
|
} |
} |
|
# We can have an attribute: type which can have the |
|
# values: "checkbox" or "text" which defaults to |
|
# checkbox allowing us to change the type of input |
|
# for the option: |
|
# |
|
my $input_widget_type = 'checkbox'; |
|
if(defined($token->[2]{'type'})) { |
|
my $widget_type = $token->[2]{'type'}; |
|
if ($widget_type eq 'text') { # only accept legal alternatives |
|
$input_widget_type = $widget_type; # Illegals are checks. |
|
} elsif ($widget_type eq 'hidden') { |
|
$input_widget_type = $widget_type; |
|
} |
|
} |
|
|
# OPTION_TEXTS is a list of the text attribute |
# OPTION_TEXTS is a list of the text attribute |
# values used to create column headings. |
# values used to create column headings. |
# OPTION_VARS is a list of the variable names, used to create the checkbox |
# OPTION_VARS is a list of the variable names, used to create the checkbox |
# inputs. |
# inputs. |
|
# OPTION_TYPES is a list of the option types: |
|
# |
# We're ok with empty elements. as place holders |
# We're ok with empty elements. as place holders |
# Although the 'variable' element should really exist. |
# Although the 'variable' element should really exist. |
# |
# |
|
|
|
|
my $option_texts = $paramHash->{OPTION_TEXTS}; |
my $option_texts = $paramHash->{OPTION_TEXTS}; |
my $option_vars = $paramHash->{OPTION_VARS}; |
my $option_vars = $paramHash->{OPTION_VARS}; |
|
my $option_types = $paramHash->{OPTION_TYPES}; |
push(@$option_texts, $token->[2]{'text'}); |
push(@$option_texts, $token->[2]{'text'}); |
push(@$option_vars, $token->[2]{'variable'}); |
push(@$option_vars, $token->[2]{'variable'}); |
|
push(@$option_types, $input_widget_type); |
|
|
|
|
# Need to create and declare the option variables as well to make them |
# Need to create and declare the option variables as well to make them |
# persistent. |
# persistent. |
Line 2284 BUTTONS
|
Line 2349 BUTTONS
|
my $multichoice = $self->{'multichoice'}; |
my $multichoice = $self->{'multichoice'}; |
my $option_vars = $self->{OPTION_VARS}; |
my $option_vars = $self->{OPTION_VARS}; |
my $option_texts = $self->{OPTION_TEXTS}; |
my $option_texts = $self->{OPTION_TEXTS}; |
|
my $option_types = $self->{OPTION_TYPES}; |
my $addparts = $self->{'addparts'}; |
my $addparts = $self->{'addparts'}; |
my $headings_done = 0; |
my $headings_done = 0; |
|
|
Line 2342 BUTTONS
|
Line 2408 BUTTONS
|
my $resource_name = |
my $resource_name = |
HTML::Entities::encode($raw_name,"<>&\"'"); |
HTML::Entities::encode($raw_name,"<>&\"'"); |
if($option_vars) { |
if($option_vars) { |
|
my $option_num = 0; |
foreach my $option_var (@$option_vars) { |
foreach my $option_var (@$option_vars) { |
|
my $option_type = $option_types->[$option_num]; |
|
$option_num++; |
my $var_value = "\|\|\|" . $helper->{VARS}->{$option_var} . |
my $var_value = "\|\|\|" . $helper->{VARS}->{$option_var} . |
"\|\|\|"; |
"\|\|\|"; |
my $checked =""; |
my $checked =""; |
if($var_value =~ /\Q|||$raw_name|||\E/) { |
if($var_value =~ /\Q|||$raw_name|||\E/) { |
$checked = "checked='checked'"; |
$checked = "checked='checked'"; |
} |
} |
$col .= |
if ($option_type eq 'text') { |
"<td align='center'><input type='checkbox' name ='$option_var". |
# |
"_forminput' value='". |
# For text's the variable value is a ||| separated set of |
$resource_name . "' $checked /> </td>"; |
# resource_name=value |
|
# |
|
my @values = split(/\|\|\|/, $helper->{VARS}->{$option_var}); |
|
|
|
# Normal practice would be to toss this in a hash but |
|
# the only thing that saves is the compare in the loop |
|
# below and for all but one case we'll break out of the loop |
|
# before it completes. |
|
|
|
my $text_value = ''; # In case there's no match. |
|
foreach my $value (@values) { |
|
my ($res, $skip) = split(/=/, $value); |
|
if($res eq $resource_name) { |
|
$text_value = $skip; |
|
last; |
|
} |
|
} |
|
# TODO: add an attribute to <option> that allows the |
|
# programmer to set the width of the tex entry box. |
|
|
|
$col .= |
|
"<td align='center'><input type='text' name ='$option_var". |
|
"_forminput' value='".$text_value."' size='5' /> </td>"; |
|
} elsif ($option_type eq 'hidden') { |
|
$col .= "<td align='center'><input type='hidden' name ='$option_var". |
|
"_forminput' value='". |
|
$resource_name . "'/> </td>"; |
|
} else { |
|
$col .= |
|
"<td align='center'><input type=$option_type name ='$option_var". |
|
"_forminput' value='". |
|
$resource_name . "' $checked /> </td>"; |
|
} |
} |
} |
} |
} |
|
|