--- loncom/xml/lonxml.pm 2011/10/14 00:40:32 1.521 +++ loncom/xml/lonxml.pm 2012/04/11 15:58:07 1.529 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.521 2011/10/14 00:40:32 www Exp $ +# $Id: lonxml.pm,v 1.529 2012/04/11 15:58:07 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -113,6 +113,7 @@ use Apache::lonr(); use Apache::lonlocal; use Apache::lonhtmlcommon(); use Apache::functionplotresponse(); +use Apache::lonnavmaps(); #==================================== Main subroutine: xmlparse @@ -210,8 +211,12 @@ sub xmlend { my $discussion; &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['LONCAPA_INTERNAL_no_discussion']); - if (! exists($env{'form.LONCAPA_INTERNAL_no_discussion'}) || - $env{'form.LONCAPA_INTERNAL_no_discussion'} ne 'true') { + if ( + ( (!exists($env{'form.LONCAPA_INTERNAL_no_discussion'})) + || ($env{'form.LONCAPA_INTERNAL_no_discussion'} ne 'true') + ) + && ($env{'form.inhibitmenu'} ne 'yes') + ) { $discussion=&Apache::lonfeedback::list_discussion($mode,$status); } if ($target eq 'tex') { @@ -301,7 +306,8 @@ sub xmlparse { &clean_safespace($safeeval); if (@script_var_displays) { - $finaloutput .= join('',@script_var_displays); + my $scriptoutput = join('',@script_var_displays); + $finaloutput=~s{(\s*)\s*$}{$scriptoutput$1}s; undef(@script_var_displays); } &init_state(); @@ -792,6 +798,10 @@ sub init_safespace { $safehole->wrap(\&Apache::functionplotresponse::fpr_f,$safeeval,'&fpr_f'); $safehole->wrap(\&Apache::functionplotresponse::fpr_dfdx,$safeeval,'&fpr_dfdx'); $safehole->wrap(\&Apache::functionplotresponse::fpr_d2fdx2,$safeeval,'&fpr_d2fdx2'); + $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorcoords,$safeeval,'&fpr_vectorcoords'); + $safehole->wrap(\&Apache::functionplotresponse::fpr_objectcoords,$safeeval,'&fpr_objectcoords'); + $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorlength,$safeeval,'&fpr_vectorlength'); + $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorangle,$safeeval,'&fpr_vectorangle'); # use Data::Dumper; # $safehole->wrap(\&Data::Dumper::Dumper,$safeeval,'&LONCAPA_INTERNAL_Dumper'); @@ -844,7 +854,8 @@ sub initialize_rndseed { sub default_homework_load { my ($safeeval)=@_; &Apache::lonxml::debug('Loading default_homework'); - my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm'); + my $default=&Apache::lonnet::getfile($Apache::lonnet::perlvar{'lonIncludes'}. + '/default_homework.lcpm'); if ($default eq -1) { &Apache::lonxml::error("Unable to find default_homework.lcpm"); } else { @@ -1014,7 +1025,7 @@ the current 'bubble line number' is stor The value of it is stored in $Apache:lonxml::counter when live and stored back to env after done. -=item &increment_counter($increment); +=item &increment_counter($increment, $part_response); Increments the internal counter environment variable a specified amount @@ -1491,7 +1502,8 @@ sub renderingoptions { {&Apache::lonlocal::texthash ('' => '', 'tth' => 'tth (TeX to HTML)', - 'jsMath' => 'jsMath', + 'MathJax' => 'MathJax', + 'jsMath' => 'jsMath', 'mimetex' => 'mimetex (Convert to Images)')}). ''; return $output; @@ -1753,7 +1765,7 @@ ENDNOTFOUND } my $brcrum; if ($env{'request.state'} eq 'construct') { - $brcrum = [{'href' => &Apache::loncommon::authorspace(), + $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri), 'text' => 'Construction Space'}, {'href' => '', 'text' => $breadcrumbtext}]; @@ -1778,7 +1790,22 @@ ENDNOTFOUND if ($env{'form.editmode'} && (!($env{'form.viewmode'})) && (!($env{'form.discardview'}))) { my $displayfile=$request->uri; - $displayfile=~s/^\/[^\/]*//; + if ($displayfile =~ m{^/uploaded/}) { + if ($env{'request.course.id'}) { + my $symb = &Apache::lonnet::symbread(); + my ($map,$id,$res)=&Apache::lonnet::decode_symb($symb); + my $navmap=Apache::lonnavmaps::navmap->new; + if (ref($navmap)) { + my $res = $navmap->getBySymb($symb); + my @pathitems = + &Apache::loncommon::get_folder_hierarchy($navmap,$map,1); + push(@pathitems,$res->compTitle()); + $displayfile = join(' » ',@pathitems); + } + } + } else { + $displayfile=~s/^\/[^\/]*//; + } my ($edit_info, $add_to_onload, $add_to_onresize)= &inserteditinfo($filecontents,$filetype,$displayfile); @@ -1790,7 +1817,7 @@ ENDNOTFOUND my $header; if ($env{'request.state'} eq 'construct') { $options{'bread_crumbs'} = [{ - 'href' => &Apache::loncommon::authorspace(), + 'href' => &Apache::loncommon::authorspace($request->uri), 'text' => 'Construction Space'}, {'href' => '', 'text' => $breadcrumbtext}]; @@ -1847,8 +1874,9 @@ sub debug { } sub show_error_warn_msg { - if ($env{'request.filename'} eq '/home/httpd/html/res/lib/templates/simpleproblem.problem' && - &Apache::lonnet::allowed('mdc',$env{'request.course.id'})) { + if (($env{'request.filename'} eq + $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/lib/templates/simpleproblem.problem') && + (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) { return 1; } return (($Apache::lonxml::debug eq 1) || @@ -2043,11 +2071,13 @@ sub register_insert_xml { while (my $token = $parser->get_token()) { if ($token->[0] eq 'S') { my $key; - if ($token->[1] eq 'tag') { + if ($token->[1] eq 'tag') { $tag = $token->[2]{'name'}; - $insertlist{$tagnum.'.tag'} = $tag; - $insertlist{$tag.'.num'} = $tagnum; - push(@alltags,$tag); + if (defined($tag)) { + $insertlist{$tagnum.'.tag'} = $tag; + $insertlist{$tag.'.num'} = $tagnum; + push(@alltags,$tag); + } } elsif ($in_help && $token->[1] eq 'file') { $key = $tag.'.helpfile'; } elsif ($in_help && $token->[1] eq 'description') {