--- loncom/interface/lonhelper.pm 2005/10/11 22:05:20 1.122
+++ loncom/interface/lonhelper.pm 2005/10/17 21:17:59 1.127
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# .helper XML handler to implement the LON-CAPA helper
#
-# $Id: lonhelper.pm,v 1.122 2005/10/11 22:05:20 albertel Exp $
+# $Id: lonhelper.pm,v 1.127 2005/10/17 21:17:59 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2017,6 +2017,18 @@ BUTTONS
$mapUrl = $self->{MAP_URL};
}
+ my %defaultSymbs;
+ if (defined($self->{DEFAULT_VALUE})) {
+ my $valueFunc = eval($self->{DEFAULT_VALUE});
+ die 'Error in default value code for variable ' .
+ $self->{'variable'} . ', Perl said: ' . $@ if $@;
+ my @defaultSymbs = &$valueFunc($helper, $self);
+ if (!$multichoice && @defaultSymbs) { # only allowed 1
+ @defaultSymbs = ($defaultSymbs[0]);
+ }
+ %defaultSymbs = map { if ($_) {($_,1) } } @defaultSymbs;
+ delete($defaultSymbs{''});
+ }
# Create the composite function that renders the column on the nav map
# have to admit any language that lets me do this can't be all bad
@@ -2065,13 +2077,21 @@ BUTTONS
}
$col .= "
";
@@ -2189,6 +2209,10 @@ selection. Defaults to false.
If true, only active students and course personnel will be
shown. Defaults to false.
+=item * B:
+
+If true, the selection of no users is allowed. Defaults to false.
+
=back
=cut
@@ -2224,6 +2248,7 @@ sub start_student {
if (defined($token->[2]{'nextstate'})) {
$paramHash->{NEXTSTATE} = $token->[2]{'nextstate'};
}
+ $paramHash->{'emptyallowed'} = $token->[2]{'emptyallowed'};
}
@@ -2345,6 +2370,18 @@ BUTTONS
$result .= '' . $self->{ERROR_MSG} . '
';
}
+ my %defaultUsers;
+ if (defined($self->{DEFAULT_VALUE})) {
+ my $valueFunc = eval($self->{DEFAULT_VALUE});
+ die 'Error in default value code for variable ' .
+ $self->{'variable'} . ', Perl said: ' . $@ if $@;
+ my @defaultUsers = &$valueFunc($helper, $self);
+ if (!$self->{'multichoice'} && @defaultUsers) { # only allowed 1
+ @defaultUsers = ($defaultUsers[0]);
+ }
+ %defaultUsers = map { if ($_) {($_,1) } } @defaultUsers;
+ delete($defaultUsers{''});
+ }
my $choices = [];
# Load up the non-students, if necessary
@@ -2410,7 +2447,13 @@ BUTTONS
$result .= "
{'multichoice'} && !$checked) {
+ if (%defaultUsers) {
+ my $user=$choice->[0];
+ if (exists($defaultUsers{$user})) {
+ $result .= " checked='checked' ";
+ $checked = 1;
+ }
+ } elsif (!$self->{'multichoice'} && !$checked) {
$result .= " checked='checked' ";
$checked = 1;
}
@@ -2485,9 +2528,14 @@ sub postprocess {
my $self = shift;
my $result = $env{'form.' . $self->{'variable'} . '.forminput'};
- if (!$result) {
- $self->{ERROR_MSG} =
- &mt('You must choose at least one student to continue.');
+ if (!$result && !$self->{'emptyallowed'}) {
+ if ($self->{'coursepersonnel'}) {
+ $self->{ERROR_MSG} =
+ &mt('You must choose at least one user to continue.');
+ } else {
+ $self->{ERROR_MSG} =
+ &mt('You must choose at least one student to continue.');
+ }
return 0;
}
@@ -3313,8 +3361,11 @@ sub render {
}
my $previous = HTML::Entities::encode(&mt("<- Previous"), '<>&"');
my $next = HTML::Entities::encode(&mt("Next ->"), '<>&"');
+ my $target = " target='loncapaclient'";
+ if (($env{'browser.interface'} eq 'textual') ||
+ ($env{'environment.remote'} eq 'off')) { $target=''; }
$result .= "