--- loncom/interface/lonhelper.pm 2005/02/22 22:56:08 1.99 +++ loncom/interface/lonhelper.pm 2005/04/07 06:56:23 1.100 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # .helper XML handler to implement the LON-CAPA helper # -# $Id: lonhelper.pm,v 1.99 2005/02/22 22:56:08 foxr Exp $ +# $Id: lonhelper.pm,v 1.100 2005/04/07 06:56:23 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,10 +25,6 @@ # # http://www.lon-capa.org/ # -# (Page Handler -# -# (.helper handler -# =pod @@ -186,6 +182,7 @@ use Apache::Constants qw(:common); use Apache::File; use Apache::lonxml; use Apache::lonlocal; +use Apache::lonnet; # Register all the tags with the helper, so the helper can # push and pop them @@ -255,7 +252,7 @@ sub real_handler { my $r = shift; my $uri = shift; if (!defined($uri)) { $uri = $r->uri(); } - $ENV{'request.uri'} = $uri; + $env{'request.uri'} = $uri; my $filename = '/home/httpd/html' . $uri; my $fh = Apache::File->new($filename); my $file; @@ -263,7 +260,7 @@ sub real_handler { # Send header, don't cache this page - if ($ENV{'browser.mathml'}) { + if ($env{'browser.mathml'}) { &Apache::loncommon::content_type($r,'text/xml'); } else { &Apache::loncommon::content_type($r,'text/html'); @@ -278,7 +275,7 @@ sub real_handler { my $allowed = $helper->allowedCheck(); if (!$allowed) { - $ENV{'user.error.msg'} = $ENV{'request.uri'}.':'.$helper->{REQUIRED_PRIV}. + $env{'user.error.msg'} = $env{'request.uri'}.':'.$helper->{REQUIRED_PRIV}. ":0:0:Permission denied to access this helper."; return HTTP_NOT_ACCEPTABLE; } @@ -363,6 +360,7 @@ use HTML::Entities(); use Apache::loncommon; use Apache::File; use Apache::lonlocal; +use Apache::lonnet; sub new { my $proto = shift; @@ -374,16 +372,16 @@ sub new { # If there is a state from the previous form, use that. If there is no # state, use the start state parameter. - if (defined $ENV{"form.CURRENT_STATE"}) + if (defined $env{"form.CURRENT_STATE"}) { - $self->{STATE} = $ENV{"form.CURRENT_STATE"}; + $self->{STATE} = $env{"form.CURRENT_STATE"}; } else { $self->{STATE} = "START"; } - $self->{TOKEN} = $ENV{'form.TOKEN'}; + $self->{TOKEN} = $env{'form.TOKEN'}; # If a token was passed, we load that in. Otherwise, we need to create a # new storage file # Tried to use standard Tie'd hashes, but you can't seem to take a @@ -416,16 +414,16 @@ sub new { return undef; } # Must create the storage - $self->{TOKEN} = md5_hex($ENV{'user.name'} . $ENV{'user.domain'} . + $self->{TOKEN} = md5_hex($env{'user.name'} . $env{'user.domain'} . time() . rand()); $self->{FILENAME} = $Apache::lonnet::tmpdir . md5_hex($self->{TOKEN}); } # OK, we now have our persistent storage. - if (defined $ENV{"form.RETURN_PAGE"}) + if (defined $env{"form.RETURN_PAGE"}) { - $self->{RETURN_PAGE} = $ENV{"form.RETURN_PAGE"}; + $self->{RETURN_PAGE} = $env{"form.RETURN_PAGE"}; } else { @@ -486,11 +484,11 @@ sub declareVar { } my $envname = 'form.' . $var . '.forminput'; - if (defined($ENV{$envname})) { - if (ref($ENV{$envname})) { - $self->{VARS}->{$var} = join('|||', @{$ENV{$envname}}); + if (defined($env{$envname})) { + if (ref($env{$envname})) { + $self->{VARS}->{$var} = join('|||', @{$env{$envname}}); } else { - $self->{VARS}->{$var} = $ENV{$envname}; + $self->{VARS}->{$var} = $env{$envname}; } } } @@ -502,7 +500,7 @@ sub allowedCheck { return 1; } - return Apache::lonnet::allowed($self->{REQUIRED_PRIV}, $ENV{'request.course.id'}); + return Apache::lonnet::allowed($self->{REQUIRED_PRIV}, $env{'request.course.id'}); } sub changeState { @@ -524,7 +522,7 @@ sub process { # Phase 1: Post processing for state of previous screen (which is actually # the "current state" in terms of the helper variables), if it wasn't the # beginning state. - if ($self->{STATE} ne "START" || $ENV{"form.SUBMIT"} eq &mt("Next ->")) { + if ($self->{STATE} ne "START" || $env{"form.SUBMIT"} eq &mt("Next ->")) { my $prevState = $self->{STATES}{$self->{STATE}}; $prevState->postprocess(); } @@ -1115,6 +1113,7 @@ no strict; @ISA = ("Apache::lonhelper::element"); use strict; use Apache::lonlocal; +use Apache::lonnet; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::choices', @@ -1293,7 +1292,7 @@ BUTTONS # given, switch to it sub postprocess { my $self = shift; - my $chosenValue = $ENV{'form.' . $self->{'variable'} . '.forminput'}; + my $chosenValue = $env{'form.' . $self->{'variable'} . '.forminput'}; if (!defined($chosenValue) && !$self->{'allowempty'}) { $self->{ERROR_MSG} = @@ -1347,6 +1346,7 @@ no strict; @ISA = ("Apache::lonhelper::element"); use strict; use Apache::lonlocal; +use Apache::lonnet; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::dropdown', @@ -1447,7 +1447,7 @@ sub render { # given, switch to it sub postprocess { my $self = shift; - my $chosenValue = $ENV{'form.' . $self->{'variable'} . '.forminput'}; + my $chosenValue = $env{'form.' . $self->{'variable'} . '.forminput'}; if (!defined($chosenValue) && !$self->{'allowempty'}) { $self->{ERROR_MSG} = "You must choose one or more choices to" . @@ -1506,7 +1506,7 @@ no strict; @ISA = ("Apache::lonhelper::element"); use strict; use Apache::lonlocal; # A localization nightmare - +use Apache::lonnet; use Time::localtime; BEGIN { @@ -1650,14 +1650,14 @@ sub render { sub postprocess { my $self = shift; my $var = $self->{'variable'}; - my $month = $ENV{'form.' . $var . 'month'}; - my $day = $ENV{'form.' . $var . 'day'}; - my $year = $ENV{'form.' . $var . 'year'}; + my $month = $env{'form.' . $var . 'month'}; + my $day = $env{'form.' . $var . 'day'}; + my $year = $env{'form.' . $var . 'year'}; my $min = 0; my $hour = 0; if ($self->{'hoursminutes'}) { - $min = $ENV{'form.' . $var . 'minute'}; - $hour = $ENV{'form.' . $var . 'hour'}; + $min = $env{'form.' . $var . 'minute'}; + $hour = $env{'form.' . $var . 'hour'}; } my $chosenDate; @@ -1757,6 +1757,7 @@ than 1 part. no strict; @ISA = ("Apache::lonhelper::element"); use strict; +use Apache::lonnet; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::resource', @@ -2075,7 +2076,7 @@ BUTTONS ; RADIO - $ENV{'form.condition'} = !$self->{'toponly'}; + $env{'form.condition'} = !$self->{'toponly'}; my $cols = [$renderColFunc]; if ($self->{'addparts'}) { push(@$cols, $renderPartsFunc); } push(@$cols, Apache::lonnavmaps::resource()); @@ -2155,7 +2156,7 @@ no strict; @ISA = ("Apache::lonhelper::element"); use strict; use Apache::lonlocal; - +use Apache::lonnet; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::student', @@ -2371,7 +2372,7 @@ BUTTONS sub postprocess { my $self = shift; - my $result = $ENV{'form.' . $self->{'variable'} . '.forminput'}; + my $result = $env{'form.' . $self->{'variable'} . '.forminput'}; if (!$result) { $self->{ERROR_MSG} = &mt('You must choose at least one student to continue.'); @@ -2441,7 +2442,7 @@ no strict; @ISA = ("Apache::lonhelper::element"); use strict; use Apache::lonlocal; - +use Apache::lonnet; use Apache::lonpubdir; # for getTitleString BEGIN { @@ -2605,7 +2606,7 @@ BUTTONS @fileList = &Apache::lonnet::dirlist($subdir, $domain, $user, ''); } else { # local library server resource space - @fileList = &Apache::lonnet::dirlist($subdir, $ENV{'user.domain'}, $ENV{'user.name'}, ''); + @fileList = &Apache::lonnet::dirlist($subdir, $env{'user.domain'}, $env{'user.name'}, ''); } # Sort the fileList into order @@ -2698,9 +2699,9 @@ sub fileState { my $constructionSpaceDir = shift; my $file = shift; - my ($uname,$udom)=($ENV{'user.name'},$ENV{'user.domain'}); - if ($ENV{'request.role'}=~/^ca\./) { - (undef,$udom,$uname)=split(/\//,$ENV{'request.role'}); + my ($uname,$udom)=($env{'user.name'},$env{'user.domain'}); + if ($env{'request.role'}=~/^ca\./) { + (undef,$udom,$uname)=split(/\//,$env{'request.role'}); } my $docroot = $Apache::lonnet::perlvar{'lonDocRoot'}; my $subdirpart = $constructionSpaceDir; @@ -2725,7 +2726,7 @@ sub fileState { sub postprocess { my $self = shift; - my $result = $ENV{'form.' . $self->{'variable'} . '.forminput'}; + my $result = $env{'form.' . $self->{'variable'} . '.forminput'}; if (!$result) { $self->{ERROR_MSG} = 'You must choose at least one file '. 'to continue.'; @@ -2932,7 +2933,7 @@ package Apache::lonhelper::general; =head2 General-purpose tag: X The contents of the exec tag are executed as Perl code, B inside a -safe space, so the full range of $ENV and such is available. The code +safe space, so the full range of $env and such is available. The code will be executed as a subroutine wrapped with the following code: "sub { my $helper = shift; my $state = shift;" and @@ -3085,6 +3086,7 @@ no strict; @ISA = ("Apache::lonhelper::element"); use strict; use Apache::lonlocal; +use Apache::lonnet; BEGIN { &Apache::lonhelper::register('Apache::lonhelper::final', ('final', 'exitpage')); @@ -3182,12 +3184,12 @@ sub render { if ($self->{'restartCourse'}) { my $actionURL = '/adm/roles'; $targetURL = '/adm/menu'; - if ($ENV{'course.'.$ENV{'request.course.id'}.'.url'}=~/^uploaded/) { + if ($env{'course.'.$env{'request.course.id'}.'.url'}=~/^uploaded/) { $targetURL = '/adm/coursedocs'; } else { $targetURL = '/adm/navmaps'; } - if ($ENV{'course.'.$ENV{'request.course.id'}.'.clonedfrom'}) { + if ($env{'course.'.$env{'request.course.id'}.'.clonedfrom'}) { $targetURL = '/adm/parmset?overview=1'; } my $finish=&mt('Finish Course Initialization'); @@ -3199,7 +3201,7 @@ sub render { "" . "" . "\n" . - "\n\n" . "";