--- loncom/xml/lonxml.pm 2001/12/14 22:59:34 1.141 +++ loncom/xml/lonxml.pm 2002/01/08 21:11:13 1.147 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.141 2001/12/14 22:59:34 albertel Exp $ +# $Id: lonxml.pm,v 1.147 2002/01/08 21:11:13 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -51,7 +51,12 @@ # 8/7,8/9,8/10,8/11,8/15,8/16,8/17,8/18,8/20,8/23,8/24 Gerd Kortemeyer # Guy Albertelli # 9/26 Gerd Kortemeyer - +# Dec Guy Albertelli +# YEAR=2002 +# 1/1 Gerd Kortemeyer +# 1/2 Matthew Hall +# 1/3 Gerd Kortemeyer +# package Apache::lonxml; use vars @@ -74,14 +79,13 @@ sub register { sub deregister { my ($space,@taglist) = @_; - &printalltags(); foreach my $temptag (@taglist) { my $tempspace = $Apache::lonxml::alltags{$temptag}[-1]; if ($tempspace eq $space) { pop(@{ $Apache::lonxml::alltags{$temptag} }); } } - &printalltags(); + #&printalltags(); } use Apache::Constants qw(:common); @@ -286,11 +290,14 @@ sub printtokenheader { $reply{'generation'}; if ($target eq 'web') { + my %idhash=&Apache::lonnet::idrget($tudom,($tuname)); return ''. 'Checked out for '.$plainname. '
User: '.$tuname.' at '.$tudom. + '
ID: '.$idhash{$tuname}. '
CourseID: '.$tcrsid. + '
Course: '.$ENV{'course.'.$tcrsid.'.description'}. '
DocID: '.$token. '
Time: '.localtime().'
'; } else { @@ -926,14 +933,14 @@ sub newparser { sub parstring { my ($token) = @_; my $temp=''; - map { + foreach (@{$token->[3]}) { unless ($_=~/\W/) { my $val=$token->[2]->{$_}; $val =~ s/([\%\@\\])/\\$1/g; #if ($val =~ m/^[\%\@]/) { $val="\\".$val; } $temp .= "my \$$_=\"$val\";" } - } @{$token->[3]}; + } return $temp; } @@ -946,10 +953,10 @@ sub writeallows { my $thisdir=$thisurl; $thisdir=~s/\/[^\/]+$//; my %httpref=(); - map { + foreach (@extlinks) { $httpref{'httpref.'. &Apache::lonnet::hreflocation($thisdir,$_)}=$thisurl; - } @extlinks; + } @extlinks=(); &Apache::lonnet::appenv(%httpref); } @@ -959,7 +966,7 @@ sub writeallows { # sub afterburn { my $result=shift; - map { + foreach (split(/&/,$ENV{'QUERY_STRING'})) { my ($name, $value) = split(/=/,$_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; @@ -968,22 +975,22 @@ sub afterburn { $ENV{'form.'.$name}=$value; } } - } (split(/&/,$ENV{'QUERY_STRING'})); + } if ($ENV{'form.highlight'}) { - map { + foreach (split(/\,/,$ENV{'form.highlight'})) { my $anchorname=$_; my $matchthis=$anchorname; $matchthis=~s/\_+/\\s\+/g; $result=~s/($matchthis)/\$1\<\/font\>/gs; - } split(/\,/,$ENV{'form.highlight'}); + } } if ($ENV{'form.link'}) { - map { + foreach (split(/\,/,$ENV{'form.link'})) { my ($anchorname,$linkurl)=split(/\>/,$_); my $matchthis=$anchorname; $matchthis=~s/\_+/\\s\+/g; $result=~s/($matchthis)/\$1\<\/a\>/gs; - } split(/\,/,$ENV{'form.link'}); + } } if ($ENV{'form.anchor'}) { my $anchorname=$ENV{'form.anchor'}; @@ -1004,6 +1011,8 @@ sub storefile { if (my $fh=Apache::File->new('>'.$file)) { print $fh $contents; $fh->close(); + } else { + &warning("Unable to save file $file"); } } @@ -1025,23 +1034,38 @@ sub inserteditinfo { SIMPLECONTENT } - my $editheader='Edit below
'; + + $filecontents =~ s::</textarea>:g; +# my $editheader='Edit below
'; my $editfooter=(<

+ +
ENDFOOTER - $result=~s/(\]*\>)/$1$editheader/is; +# $result=~s/(\]*\>)/$1$editheader/is; $result=~s/(\<\/body\>)/$editfooter/is; return $result; } +sub editbutton { + my ($result) = @_; + my $button=(< + + +EDITBUTTON + $result=~s/(\<\/body\>)/$button/is; + return $result; +} + sub handler { my $request=shift; @@ -1070,7 +1094,7 @@ sub handler { } } my %mystyle; - my $result = ''; + my $result = ''; my $filecontents=&Apache::lonnet::getfile($file); if ($filecontents == -1) { $result=(<uri); $request->print($result); return OK; } - + sub debug { if ($Apache::lonxml::debug eq 1) { - print("DEBUG:".$_[0]."
\n"); + $|=1; + print("DEBUG:".join('
',@_)."
\n"); } } sub error { if (($Apache::lonxml::debug eq 1) || ($ENV{'request.state'} eq 'construct') ) { - print "ERROR:".$_[0]."
\n"; + print "ERROR:".join('
',@_)."
\n"; } else { print "An Error occured while processing this resource. The instructor has been notified.
"; #notify author - &Apache::lonmsg::author_res_msg($ENV{'request.filename'},$_[0]); + &Apache::lonmsg::author_res_msg($ENV{'request.filename'},join('
',@_)); #notify course if ( $ENV{'request.course.id'} ) { my $users=$ENV{'course.'.$ENV{'request.course.id'}.'.comment.email'}; + my $declutter=&Apache::lonnet::declutter($ENV{'request.filename'}); foreach my $user (split /\,/, $users) { ($user,my $domain) = split /:/, $user; - &Apache::lonmsg::user_normal_msg($user,$domain,"Error in $ENV{'request.filename'}",$_[0]); + &Apache::lonmsg::user_normal_msg($user,$domain, + "Error [$declutter]",join('
',@_)); } } #FIXME probably shouldn't have me get everything forever. - &Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",$_[0]); + &Apache::lonmsg::user_normal_msg('albertel','msu',"Error in $ENV{'request.filename'}",join('
',@_)); #&Apache::lonmsg::user_normal_msg('albertel','103',"Error in $ENV{'request.filename'}",$_[0]); } } sub warning { if ($ENV{'request.state'} eq 'construct') { - print "WARNING:".$_[0]."
\n"; + print "WARNING:".join('
',@_)."
\n"; } } @@ -1194,7 +1228,7 @@ sub register_insert { my $line = $data[$i]; my ($mnemonic,@which) = split(/ +/,$line); my $tag = $insertlist{"$tagnum.tag"}; - for (my $j=0;$j <$#which;$j++) { + for (my $j=0;$j <=$#which;$j++) { if ( $which[$j] eq 'Y' ) { if ($insertlist{"$j.show"} ne 'no') { push(@{ $insertlist{"$tag.which"} },$j);