version 1.27, 2003/05/12 19:33:57
|
version 1.28, 2003/05/14 18:58:21
|
Line 344 sub new {
|
Line 344 sub new {
|
|
|
$self->{TITLE} = shift; |
$self->{TITLE} = shift; |
|
|
Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING}); |
|
|
|
# If there is a state from the previous form, use that. If there is no |
# If there is a state from the previous form, use that. If there is no |
# state, use the start state parameter. |
# state, use the start state parameter. |
if (defined $ENV{"form.CURRENT_STATE"}) |
if (defined $ENV{"form.CURRENT_STATE"}) |
Line 461 sub declareVar {
|
Line 459 sub declareVar {
|
|
|
my $envname = 'form.' . $var . '.forminput'; |
my $envname = 'form.' . $var . '.forminput'; |
if (defined($ENV{$envname})) { |
if (defined($ENV{$envname})) { |
$self->{VARS}->{$var} = $ENV{$envname}; |
if (ref($ENV{$envname})) { |
|
$self->{VARS}->{$var} = join('|||', @{$ENV{$envname}}); |
|
} else { |
|
$self->{VARS}->{$var} = $ENV{$envname}; |
|
} |
} |
} |
} |
} |
|
|
Line 545 sub display {
|
Line 547 sub display {
|
</head> |
</head> |
$bodytag |
$bodytag |
HEADER |
HEADER |
if (!$state->overrideForm()) { $result.="<form name='helpform' method='GET'>"; } |
if (!$state->overrideForm()) { $result.="<form name='helpform' method='POST'>"; } |
$result .= <<HEADER; |
$result .= <<HEADER; |
<table border="0"><tr><td> |
<table border="0"><tr><td> |
<h2><i>$stateTitle</i></h2> |
<h2><i>$stateTitle</i></h2> |
Line 682 sub addElement {
|
Line 684 sub addElement {
|
push @{$self->{ELEMENTS}}, $element; |
push @{$self->{ELEMENTS}}, $element; |
} |
} |
|
|
|
use Data::Dumper; |
sub render { |
sub render { |
my $self = shift; |
my $self = shift; |
my @results = (); |
my @results = (); |
Line 689 sub render {
|
Line 692 sub render {
|
for my $element (@{$self->{ELEMENTS}}) { |
for my $element (@{$self->{ELEMENTS}}) { |
push @results, $element->render(); |
push @results, $element->render(); |
} |
} |
|
|
return join("\n", @results); |
return join("\n", @results); |
} |
} |
|
|
Line 701 package Apache::lonhelper::element;
|
Line 705 package Apache::lonhelper::element;
|
|
|
=head2 Element Base Class |
=head2 Element Base Class |
|
|
The Apache::lonhelper::element base class provides support methods for |
The Apache::lonhelper::element base class provides support for elements |
the elements to use, such as a multiple value processer. |
and defines some generally useful tags for use in elements. |
|
|
B<Methods>: |
|
|
|
=over 4 |
|
|
|
=item * process_multiple_choices(formName, varName): Process the form |
|
element named "formName" and place the selected items into the helper |
|
variable named varName. This is for things like checkboxes or |
|
multiple-selection listboxes where the user can select more then |
|
one entry. The selected entries are delimited by triple pipes in |
|
the helper variables, like this: |
|
|
|
CHOICE_1|||CHOICE_2|||CHOICE_3 |
|
|
|
=back |
|
|
|
B<finalcode tag> |
B<finalcode tag> |
|
|
Line 831 sub overrideForm {
|
Line 820 sub overrideForm {
|
return 0; |
return 0; |
} |
} |
|
|
sub process_multiple_choices { |
|
my $self = shift; |
|
my $formname = shift; |
|
my $var = shift; |
|
|
|
# Must extract values from data directly, as there |
|
# may be more then one. |
|
my @values; |
|
for my $formparam (split (/&/, $ENV{QUERY_STRING})) { |
|
my ($name, $value) = split(/=/, $formparam); |
|
if ($name ne $formname) { |
|
next; |
|
} |
|
$value =~ tr/+/ /; |
|
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; |
|
push @values, $value; |
|
} |
|
$helper->{VARS}->{$var} = join('|||', @values); |
|
|
|
return; |
|
} |
|
|
|
1; |
1; |
|
|
package Apache::lonhelper::message; |
package Apache::lonhelper::message; |
Line 1205 sub postprocess {
|
Line 1172 sub postprocess {
|
return 0; |
return 0; |
} |
} |
|
|
if ($self->{'multichoice'}) { |
if (ref($chosenValue)) { |
$self->process_multiple_choices($self->{'variable'}.'.forminput', |
$helper->{VARS}->{$self->{'variable'}} = join('|||', @$chosenValue); |
$self->{'variable'}); |
|
} |
} |
|
|
if (defined($self->{NEXTSTATE})) { |
if (defined($self->{NEXTSTATE})) { |
Line 1693 BUTTONS
|
Line 1659 BUTTONS
|
sub postprocess { |
sub postprocess { |
my $self = shift; |
my $self = shift; |
|
|
if ($self->{'multichoice'}) { |
|
$self->process_multiple_choices($self->{'variable'}.'.forminput', |
|
$self->{'variable'}); |
|
} |
|
|
|
if ($self->{'multichoice'} && !$helper->{VARS}->{$self->{'variable'}}) { |
if ($self->{'multichoice'} && !$helper->{VARS}->{$self->{'variable'}}) { |
$self->{ERROR_MSG} = 'You must choose at least one resource to continue.'; |
$self->{ERROR_MSG} = 'You must choose at least one resource to continue.'; |
return 0; |
return 0; |
Line 1855 sub postprocess {
|
Line 1816 sub postprocess {
|
return 0; |
return 0; |
} |
} |
|
|
if ($self->{'multichoice'}) { |
|
$self->process_multiple_choices($self->{'variable'}.'.forminput', |
|
$self->{'variable'}); |
|
} |
|
if (defined($self->{NEXTSTATE})) { |
if (defined($self->{NEXTSTATE})) { |
$helper->changeState($self->{NEXTSTATE}); |
$helper->changeState($self->{NEXTSTATE}); |
} |
} |
Line 2143 sub postprocess {
|
Line 2100 sub postprocess {
|
return 0; |
return 0; |
} |
} |
|
|
if ($self->{'multichoice'}) { |
|
$self->process_multiple_choices($self->{'variable'}.'.forminput', |
|
$self->{'variable'}); |
|
} |
|
if (defined($self->{NEXTSTATE})) { |
if (defined($self->{NEXTSTATE})) { |
$helper->changeState($self->{NEXTSTATE}); |
$helper->changeState($self->{NEXTSTATE}); |
} |
} |