--- loncom/xml/lonxml.pm 2002/12/06 17:49:48 1.217 +++ loncom/xml/lonxml.pm 2003/01/15 23:59:27 1.225 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.217 2002/12/06 17:49:48 matthew Exp $ +# $Id: lonxml.pm,v 1.225 2003/01/15 23:59:27 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -101,7 +101,6 @@ use Apache::File(); use Apache::loncommon(); use Apache::lonfeedback(); use Apache::lonmsg(); -use Apache::lonmenu(); use Apache::loncacc(); #================================================== Main subroutine: xmlparse @@ -193,7 +192,8 @@ sub xmlend { my $idx; for ($idx=1;$idx<=$contrib{'version'};$idx++) { my $hidden=($contrib{'hidden'}=~/\.$idx\./); - unless (($hidden) && (!$seeid)) { + my $deleted=($contrib{'deleted'}=~/\.$idx\./); + unless ((($hidden) && (!$seeid)) || ($deleted)) { my $message=$contrib{$idx.':message'}; $message=~s/\n/\
/g; $message=&Apache::lontexconvert::msgtexconverted($message); @@ -227,8 +227,10 @@ sub xmlend { } else { $sender.=' Hide'; - } - } + } + $sender.=' Delete'; + } } else { if ($screenname) { $sender=''.$screenname.''; @@ -353,7 +355,7 @@ sub printtokenheader { if ($target eq 'web') { my %idhash=&Apache::lonnet::idrget($tudom,($tuname)); return - ''. + ''. 'Checked out for '.$plainname. '
User: '.$tuname.' at '.$tudom. '
ID: '.$idhash{$tuname}. @@ -406,8 +408,7 @@ sub registerurl { } if ($Apache::lonxml::registered && !$forcereg) { return ''; } $Apache::lonxml::registered=1; - my $nothing=''; - if ($ENV{'browser.type'} eq 'explorer') { $nothing='javascript:void(0);'; } + my $reopen=&Apache::lonmenu::reopenmenu(); my $newmail=''; if (&Apache::lonmsg::newmail()) { $newmail='menu.setstatus("you have","messages");'; @@ -497,7 +498,7 @@ ENDPARM // BEGIN LON-CAPA Internal function LONCAPAreg() { - menu=window.open("$nothing","LONCAPAmenu","",false); + menu=$reopen; menu.clearTimeout(menu.menucltim); $timesync $newmail @@ -508,7 +509,7 @@ ENDPARM menu.currentStale=0; menu.clearbut(3,1); menu.switchbutton - (6,3,'catalog.gif','catalog','info','catalog_info()'); + (6,3,'catalog.gif','catalog','info','catalog_info()','Show catalog information'); menu.switchbutton (8,1,'eval.gif','evaluate','this','gopost("/adm/evaluate",currentURL)','Provide my evaluation of this resource'); menu.switchbutton @@ -530,7 +531,7 @@ ENDPARM } function LONCAPAstale() { - menu=window.open("$nothing","LONCAPAmenu","",false); + menu=$reopen menu.currentStale=1; if (menu.reloadURL!='' && menu.reloadURL!= null) { menu.switchbutton @@ -541,7 +542,7 @@ ENDPARM menu.clearbut(7,3); menu.menucltim=menu.setTimeout( 'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+ - 'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3)', + 'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3);clearbut(6,1)', 2000); } @@ -557,7 +558,7 @@ ENDREGTHIS // BEGIN LON-CAPA Internal function LONCAPAreg() { - menu=window.open("$nothing","LONCAPAmenu","",false); + menu=$reopen $timesync menu.currentStale=1; menu.clearbut(2,1); @@ -772,7 +773,7 @@ sub inner_xmlparse { if ($token->[0] eq 'E') { &end_tag($stack,$parstack,$token); } - } + } if ($#$pars > -1) { pop @$pars; pop @Apache::lonxml::pwd; @@ -814,13 +815,13 @@ sub callsub { } if (!$deleted) { if ($space) { - &Apache::lonxml::debug("Calling sub $sub in $space $metamode"); + #&Apache::lonxml::debug("Calling sub $sub in $space $metamode"); $sub1="$space\:\:$sub"; ($currentstring,$nodefault) = &$sub1($target,$token,$tagstack, $parstack,$parser,$safeeval, $style); } else { - &Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode"); + #&Apache::lonxml::debug("NOT Calling sub $sub in $space $metamode"); if ($metamode <1) { if (defined($token->[4]) && ($metamode < 1)) { $currentstring = $token->[4]; @@ -832,7 +833,7 @@ sub callsub { # &Apache::lonxml::debug("nodefalt:$nodefault:"); if ($currentstring eq '' && $nodefault eq '') { if ($target eq 'edit') { - &Apache::lonxml::debug("doing default edit for $token->[1]"); + #&Apache::lonxml::debug("doing default edit for $token->[1]"); if ($token->[0] eq 'S') { $currentstring = &Apache::edit::tag_start($target,$token); } elsif ($token->[0] eq 'E') { @@ -1114,7 +1115,9 @@ sub store_counter { sub get_all_text { my($tag,$pars)= @_; &Apache::lonxml::debug("Got a ".ref($pars)); + my $gotfullstack=1; if (ref($pars) ne 'ARRAY') { + $gotfullstack=0; $pars=[$pars]; } my $depth=0; @@ -1123,7 +1126,8 @@ sub get_all_text { if ( $tag =~ m:^/: ) { my $tag=substr($tag,1); #&Apache::lonxml::debug("have:$tag:"); - while (($depth >=0) && ($#$pars > -1)) { + my $top_empty=0; + while (($depth >=0) && ($#$pars > -1) && (!$top_empty)) { while (($depth >=0) && ($token = $$pars[-1]->get_token)) { #&Apache::lonxml::debug("e token:$token->[0]:$depth:$token->[1]:".$#$pars.":".$#Apache::lonxml::pwd); if (($token->[0] eq 'T')||($token->[0] eq 'C')||($token->[0] eq 'D')) { @@ -1145,6 +1149,16 @@ sub get_all_text { pop(@$pars); pop(@Apache::lonxml::pwd); } + if (($depth >=0) && ($#$pars == 0) ) { &debug("here4");$top_empty=1; } + } + if ($top_empty && $depth >= 0) { + #never found the end tag ran out of text, throw error send back blank + &error('Never found end tag for <'.$tag.'>'); + if ($gotfullstack) { + my $newstring=''.$result; + &Apache::lonxml::newparser($pars,\$newstring); + } + $result=''; } } else { while ($#$pars > -1) {