version 1.332.2.4, 2006/06/24 01:33:40
|
version 1.347, 2006/04/18 22:36:23
|
Line 36 use Apache::File();
|
Line 36 use Apache::File();
|
use Apache::lonmenu; |
use Apache::lonmenu; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonxml; |
use Apache::lonxml; |
|
use Apache::lonenc(); |
use Time::HiRes qw( gettimeofday tv_interval ); |
use Time::HiRes qw( gettimeofday tv_interval ); |
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag')); |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag')); |
Line 68 sub end_tex {
|
Line 69 sub end_tex {
|
return ''; |
return ''; |
} |
} |
|
|
sub body_tag_start { |
|
my ($target,$background,$bgcolor)=@_; |
|
my $body_tag_start='<body onload="'.&Apache::lonmenu::loadevents().'" '. |
|
'onunload="'.&Apache::lonmenu::unloadevents().'" '; |
|
if ($env{'browser.imagesuppress'} eq 'on') { $background=''; } |
|
if ($background) { |
|
&Apache::lonxml::extlink($background); |
|
$body_tag_start.='background="'.$background.'" '; |
|
} else { |
|
if (($bgcolor) && ($env{'browser.blackwhite'} ne 'on')) { |
|
$body_tag_start.='bgcolor="'.$bgcolor.'" '; |
|
} else { |
|
$body_tag_start.='bgcolor="#ffffff"'; |
|
} |
|
} |
|
if ($env{'browser.fontenhance'} eq 'on') { |
|
$body_tag_start.=' style="font-size: x-large;" '; |
|
} |
|
$body_tag_start.='>'.&Apache::lonmenu::menubuttons(undef,$target,1); |
|
|
|
&Apache::lontexconvert::jsMath_reset(); |
|
if ($env{'environment.texengine'} eq 'jsMath') { |
|
$body_tag_start.=&Apache::lontexconvert::jsMath_header(); |
|
} |
|
return $body_tag_start; |
|
} |
|
|
|
sub page_start { |
sub page_start { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$name, |
|
$extra_head)=@_; |
my %found; |
my %found; |
foreach my $taginside (@$tagstack) { |
foreach my $taginside (@$tagstack) { |
foreach my $taglookedfor ('html','body','form') { |
foreach my $taglookedfor ('html','body','form') { |
Line 104 sub page_start {
|
Line 79 sub page_start {
|
} |
} |
} |
} |
|
|
my $result; |
|
my $head_tag_start; |
if ($target eq 'tex') { |
if (!defined($found{'html'})) { |
return |
$result=&Apache::londefdef::start_html($target,$token,$tagstack, |
&Apache::londefdef::start_html($target,$token,$tagstack, |
$parstack,$parser,$safeeval); |
$parstack,$parser,$safeeval); |
$head_tag_start='<head>'.&Apache::lonmenu::registerurl(undef,$target). |
} |
&Apache::lonhtmlcommon::htmlareaheaders(). |
|
&Apache::lonhtmlcommon::spellheader(). |
my %body_args; |
&Apache::lonxml::fontsettings(); |
if (defined($found{'html'})) { |
|
$body_args{'skip_phases'}{'head'}=1; |
|
} else { |
|
|
|
$extra_head .= &Apache::lonhtmlcommon::spellheader(); |
|
|
my $css_href = &Apache::lonnet::EXT('resource.0.cssfile'); |
my $css_href = &Apache::lonnet::EXT('resource.0.cssfile'); |
if ($css_href =~ /\S/) { |
if ($css_href =~ /\S/) { |
&Apache::lonxml::extlink($css_href); |
&Apache::lonxml::extlink($css_href); |
$head_tag_start = |
$extra_head .= |
'<link rel="stylesheet" type="text/css" href="'.$css_href.'" />'; |
'<link rel="stylesheet" type="text/css" href="'.$css_href.'" />'; |
} |
} |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
$head_tag_start.=&Apache::edit::js_change_detection(); |
$extra_head.=&Apache::edit::js_change_detection(). |
|
"<script type=\"text/javascript\">\n". |
|
"if (typeof swmenu != 'undefined') {swmenu.currentURL=null;}\n". |
|
&Apache::loncommon::browser_and_searcher_javascript(). |
|
"\n</script>\n"; |
} |
} |
} |
} |
my $body_tag_start; |
|
if (!defined($found{'body'}) && $env{'request.state'} eq 'construct') { |
if (defined($found{'body'})) { |
if ($env{'environment.remote'} eq 'off') { |
$body_args{'skip_phases'}{'body'}=1; |
if ($target eq 'web' || $target eq 'edit') { |
} elsif (!defined($found{'body'}) |
$body_tag_start=&Apache::loncommon::bodytag(); |
&& $env{'request.state'} eq 'construct') { |
$body_tag_start.=&Apache::lonxml::message_location(); |
if ($target eq 'web' || $target eq 'edit') { |
} |
# no extra args to bodytag |
} else { |
|
if ($target eq 'web' || $target eq 'edit') { |
|
$body_tag_start=&Apache::loncommon::bodytag(undef,undef,undef,1); |
|
$body_tag_start.=&Apache::lonxml::message_location(); |
|
} |
|
} |
} |
} elsif (!defined($found{'body'})) { |
} elsif (!defined($found{'body'})) { |
|
my %add_entries; |
my $background=&Apache::lonxml::get_param('background',$parstack, |
my $background=&Apache::lonxml::get_param('background',$parstack, |
$safeeval); |
$safeeval); |
|
if ($background ne '' ) { |
|
$add_entries{'background'} = $background; |
|
} |
|
|
my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack, |
my $bgcolor=&Apache::lonxml::get_param('bgcolor',$parstack, |
$safeeval); |
$safeeval); |
$body_tag_start=&body_tag_start($target,$background,$bgcolor); |
if ($bgcolor eq '' ) { $bgcolor = '#FFFFFF'; } |
if ( ($target eq 'web' || $target eq 'webgrade') |
|
&& $env{'request.state'} ne 'construct') { |
$body_args{'bgcolor'} = $bgcolor; |
my ($symb,undef,undef,undef,$publicuser)= |
$body_args{'no_title'} = 1; |
&Apache::lonxml::whichuser(); |
$body_args{'force_register'} = 1; |
if ($symb eq '' && !$publicuser) { |
$body_args{'add_entries'} = \%add_entries; |
my $help = &Apache::loncommon::help_open_topic("Ambiguous_Reference"); |
} |
$help=&mt("Browsing resource, all submissions are temporary.")."<br />"; |
|
$body_tag_start.=$help; |
my $page_start = &Apache::loncommon::start_page($name,$extra_head, |
} |
\%body_args); |
|
|
|
if (!defined($found{'body'}) |
|
&& $env{'request.state'} ne 'construct' |
|
&& ($target eq 'web' || $target eq 'webgrade')) { |
|
|
|
my ($symb,undef,undef,undef,$publicuser)= &Apache::lonxml::whichuser(); |
|
if ($symb eq '' && !$publicuser) { |
|
my $help = &Apache::loncommon::help_open_topic("Ambiguous_Reference"); |
|
$help=&mt("Browsing resource, all submissions are temporary.")."<br />"; |
|
$page_start .= $help; |
} |
} |
$body_tag_start.=&Apache::lonxml::message_location(); |
|
} |
} |
|
|
|
if (!defined($found{'body'})) { |
|
$page_start .= &Apache::lonxml::message_location(); |
|
} |
|
|
my $form_tag_start; |
my $form_tag_start; |
if (!defined($found{'form'})) { |
if (!defined($found{'form'})) { |
$form_tag_start='<form name="lonhomework" enctype="multipart/form-data" method="POST" action="'; |
$form_tag_start='<form name="lonhomework" enctype="multipart/form-data" method="post" action="'; |
my $uri=$env{'request.uri'}; |
my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
if ($env{'request.enc'}) { $uri=&Apache::lonenc::encrypted($uri); } |
|
$form_tag_start.=$uri.'" '; |
$form_tag_start.=$uri.'" '; |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
$form_tag_start.=&Apache::edit::form_change_detection(); |
$form_tag_start.=&Apache::edit::form_change_detection(); |
} |
} |
$form_tag_start.='>'; |
$form_tag_start.='>'; |
} |
} |
return ($result,$head_tag_start,$body_tag_start,$form_tag_start); |
|
|
return ($page_start,$form_tag_start); |
} |
} |
|
|
#use Time::HiRes(); |
#use Time::HiRes(); |
Line 192 sub setup_rndseed {
|
Line 190 sub setup_rndseed {
|
my ($safeeval)=@_; |
my ($safeeval)=@_; |
my $rndseed; |
my $rndseed; |
my ($symb)=&Apache::lonxml::whichuser(); |
my ($symb)=&Apache::lonxml::whichuser(); |
if ($env{'request.state'} eq "construct" || $symb eq '' || |
if ($env{'request.state'} eq "construct" |
$Apache::lonhomework::history{'resource.CODE'}) { |
|| $symb eq '' |
|
|| $Apache::lonhomework::type eq 'practice' |
|
|| $Apache::lonhomework::history{'resource.CODE'}) { |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['rndseed']); |
['rndseed']); |
$rndseed=$env{'form.rndseed'}; |
$rndseed=$env{'form.rndseed'}; |
Line 250 sub problem_edit_header {
|
Line 250 sub problem_edit_header {
|
sub problem_edit_footer { |
sub problem_edit_footer { |
return '</td></tr></table><br /><input type="submit" name="submit" value="'.&mt('Submit Changes and Edit').'" /> |
return '</td></tr></table><br /><input type="submit" name="submit" value="'.&mt('Submit Changes and Edit').'" /> |
<input type="submit" name="submit" value="'.&mt('Submit Changes and View').'" />'. |
<input type="submit" name="submit" value="'.&mt('Submit Changes and View').'" />'. |
&Apache::lonhtmlcommon::htmlareaselectactive(@Apache::lonxml::htmlareafields). |
&Apache::lonhtmlcommon::htmlareaselectactive(&Apache::lonhtmcommon::get_htmlareafields()). |
"\n</form>\n".&Apache::loncommon::endbodytag()."\n</html>"; |
"\n</form>\n".&Apache::loncommon::end_page(); |
} |
} |
|
|
sub option { |
sub option { |
Line 336 sub initialize_storage {
|
Line 336 sub initialize_storage {
|
%Apache::lonhomework::results=(); |
%Apache::lonhomework::results=(); |
%Apache::lonhomework::history=(); |
%Apache::lonhomework::history=(); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
if ($env{'request.state'} eq 'construct' || $symb eq '') { |
if ($env{'request.state'} eq 'construct' |
|
|| $symb eq '' |
|
|| $Apache::lonhomework::type eq 'practice') { |
|
|
|
my $namespace = $symb || $env{'request.uri'}; |
|
if ($env{'form.resetdata'} eq &mt('Reset Submissions') || |
|
$env{'form.resetdata'} eq &mt('New Problem Variation') || |
|
$env{'form.newrandomization'} eq &mt('New Randomization')) { |
|
&Apache::lonnet::tmpreset($namespace,'',$domain,$name); |
|
&Apache::lonxml::debug("Attempt reset"); |
|
} |
%Apache::lonhomework::history= |
%Apache::lonhomework::history= |
&Apache::lonnet::tmprestore($env{'request.uri'},'',$domain,$name); |
&Apache::lonnet::tmprestore($namespace,'',$domain,$name); |
my ($temp)=keys %Apache::lonhomework::history ; |
my ($temp)=keys %Apache::lonhomework::history ; |
&Apache::lonxml::debug("Return message of $temp"); |
&Apache::lonxml::debug("Return message of $temp"); |
} else { |
} else { |
Line 362 sub finalize_storage {
|
Line 372 sub finalize_storage {
|
my @remove = grep(/^INTERNAL_/,keys(%Apache::lonhomework::results)); |
my @remove = grep(/^INTERNAL_/,keys(%Apache::lonhomework::results)); |
delete(@Apache::lonhomework::results{@remove}); |
delete(@Apache::lonhomework::results{@remove}); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
my ($symb,$courseid,$domain,$name) = &Apache::lonxml::whichuser(); |
if ($env{'request.state'} eq 'construct' || $symb eq '') { |
if ($env{'request.state'} eq 'construct' |
|
|| $symb eq '' |
|
|| $Apache::lonhomework::type eq 'practice') { |
|
my $namespace = $symb || $env{'request.uri'}; |
$Apache::lonhomework::results{'rndseed'}=$env{'form.rndseed'}; |
$Apache::lonhomework::results{'rndseed'}=$env{'form.rndseed'}; |
$result=&Apache::lonnet::tmpstore(\%Apache::lonhomework::results, |
$result=&Apache::lonnet::tmpstore(\%Apache::lonhomework::results, |
$env{'request.uri'},'',$domain,$name); |
$namespace,'',$domain,$name); |
&Apache::lonxml::debug('Construct Store return message:'.$result); |
&Apache::lonxml::debug('Construct Store return message:'.$result); |
} else { |
} else { |
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results, |
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results, |
Line 429 sub checkout_msg {
|
Line 442 sub checkout_msg {
|
'warning'=>'Checking out resources is subject to course policies, and may exclude future credit even if done erroneously.', |
'warning'=>'Checking out resources is subject to course policies, and may exclude future credit even if done erroneously.', |
'checkout'=>'Check out Exam for Viewing', |
'checkout'=>'Check out Exam for Viewing', |
'checkout?'=>'Check out Exam?'); |
'checkout?'=>'Check out Exam?'); |
my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
|
return (<<ENDCHECKOUT); |
return (<<ENDCHECKOUT); |
<h2>$lt{'resource'}</h2> |
<h2>$lt{'resource'}</h2> |
<p>$lt{'id_expln'}</p> |
<p>$lt{'id_expln'}</p> |
<font color="red"> |
<font color="red"> |
<p>$lt{'warning'}</p> |
<p>$lt{'warning'}</p> |
</font> |
</font> |
<form name="checkout" method="POST" action="$uri"> |
<form name="checkout" method="POST" action="$env{'request.uri'}"> |
<input type="hidden" name="doescheckout" value="yes" /> |
<input type="hidden" name="doescheckout" value="yes" /> |
<input type="button" name="checkoutbutton" value="$lt{'checkout'}" onClick="javascript:if (confirm('$lt{'checkout?'}')) { document.checkout.submit(); }" /> |
<input type="button" name="checkoutbutton" value="$lt{'checkout'}" onClick="javascript:if (confirm('$lt{'checkout?'}')) { document.checkout.submit(); }" /> |
</form> |
</form> |
Line 448 sub firstaccess_msg {
|
Line 460 sub firstaccess_msg {
|
my ($map)=&Apache::lonnet::decode_symb($symb); |
my ($map)=&Apache::lonnet::decode_symb($symb); |
my $foldertitle=&Apache::lonnet::gettitle($map); |
my $foldertitle=&Apache::lonnet::gettitle($map); |
&Apache::lonxml::debug("map is $map title is $foldertitle"); |
&Apache::lonxml::debug("map is $map title is $foldertitle"); |
my $uri = &Apache::lonenc::check_encrypt($env{'request.uri'}); |
|
return (<<ENDCHECKOUT); |
return (<<ENDCHECKOUT); |
<h2>The resources in "$foldertitle" are open for a limited time. Once you click the 'Show Resource' button below you have $time to complete all resources "$foldertitle".</h2> |
<h2>The resources in "$foldertitle" are open for a limited time. Once you click the 'Show Resource' button below you have $time to complete all resources "$foldertitle".</h2> |
<form name="markaccess" method="POST" action="$uri"> |
<form name="markaccess" method="POST" action="$env{'request.uri'}"> |
<input type="hidden" name="markaccess" value="yes" /> |
<input type="hidden" name="markaccess" value="yes" /> |
<input type="button" name="accessbutton" value="Show Resource" onClick="javascript:if (confirm('Start Timer?')) { document.markaccess.submit(); }" /> |
<input type="button" name="accessbutton" value="Show Resource" onClick="javascript:if (confirm('Start Timer?')) { document.markaccess.submit(); }" /> |
</form> |
</form> |
Line 492 sub init_problem_globals {
|
Line 503 sub init_problem_globals {
|
@Apache::structuretags::whileline=(); |
@Apache::structuretags::whileline=(); |
$Apache::lonhomework::scantronmode=0; |
$Apache::lonhomework::scantronmode=0; |
undef($Apache::lonhomework::name); |
undef($Apache::lonhomework::name); |
undef($Apache::lonhomework::default_type); |
|
undef($Apache::lonhomework::type); |
|
undef($Apache::lonhomework::problemstatus); |
|
} |
} |
|
|
sub reset_problem_globals { |
sub reset_problem_globals { |
Line 506 sub reset_problem_globals {
|
Line 515 sub reset_problem_globals {
|
#detect if we try to do 2 problems in one file |
#detect if we try to do 2 problems in one file |
# undef($Apache::lonhomework::parsing_a_problem); |
# undef($Apache::lonhomework::parsing_a_problem); |
undef($Apache::lonhomework::name); |
undef($Apache::lonhomework::name); |
undef($Apache::lonhomework::default_type); |
|
undef($Apache::lonhomework::type); |
|
undef($Apache::lonhomework::scantronmode); |
|
undef($Apache::lonhomework::problemstatus); |
|
undef($Apache::lonhomework::ignore_response_errors); |
|
} |
} |
|
|
sub set_problem_state { |
sub set_problem_state { |
Line 592 sub start_problem {
|
Line 596 sub start_problem {
|
my $status; |
my $status; |
my $accessmsg; |
my $accessmsg; |
|
|
#should get back a <html> or the neccesary stuff to start XML/MathML |
my $name= &get_resource_name($parstack,$safeeval); |
my ($result,$head_tag_start,$body_tag_start,$form_tag_start)= |
my ($result,$form_tag_start)= |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval, |
|
$name); |
if ($target eq 'tex' and $env{'request.symb'} =~ m/\.page_/) {$result='';} |
if ($target eq 'tex' and $env{'request.symb'} =~ m/\.page_/) {$result='';} |
|
|
if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval); } |
if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval); } |
Line 609 sub start_problem {
|
Line 614 sub start_problem {
|
$Apache::lonhomework::history{"resource.0.outtoken"}= |
$Apache::lonhomework::history{"resource.0.outtoken"}= |
$token; |
$token; |
} |
} |
$body_tag_start.=&Apache::lonxml::printtokenheader($target,$token); |
$result.=&Apache::lonxml::printtokenheader($target,$token); |
} |
} |
if ($env{'form.markaccess'}) { |
if ($env{'form.markaccess'}) { |
&Apache::lonnet::set_first_access('map'); |
&Apache::lonnet::set_first_access('map'); |
Line 617 sub start_problem {
|
Line 622 sub start_problem {
|
#handle rand seed in construction space |
#handle rand seed in construction space |
my $rndseed=&setup_rndseed($safeeval); |
my $rndseed=&setup_rndseed($safeeval); |
my ($symb)=&Apache::lonxml::whichuser(); |
my ($symb)=&Apache::lonxml::whichuser(); |
if ($env{'request.state'} ne "construct" && $symb eq '') { |
if ($env{'request.state'} ne "construct" && |
|
($symb eq '' || $Apache::lonhomework::type eq 'practice')) { |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$rndseed.'" />'. |
$rndseed.'" />'. |
'<input type="submit" name="resetdata" |
'<input type="submit" name="resetdata" |
value="'.&mt('New Problem Variation').'" />'. |
value="'.&mt('New Problem Variation').'" />'; |
|
if (exists($env{'form.username'})) { |
|
$form_tag_start.= |
'<input type="hidden" name="username" |
'<input type="hidden" name="username" |
value="'.$env{'form.username'}.'" />'; |
value="'.$env{'form.username'}.'" />'; |
if ($env{'user.adv'}) { |
} |
|
if ($env{'request.role.adv'}) { |
$form_tag_start.= |
$form_tag_start.= |
' <label><input type="checkbox" name="showallfoils" '; |
' <label><input type="checkbox" name="showallfoils" '; |
if (defined($env{'form.showallfoils'})) { |
if (defined($env{'form.showallfoils'})) { |
Line 655 sub start_problem {
|
Line 664 sub start_problem {
|
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
if ( $target eq "web" ) { |
if ( $target eq "web" ) { |
$result.= $head_tag_start.'</head>'; |
my $msg; |
my $msg=$body_tag_start; |
|
if ($status eq 'UNAVAILABLE') { |
if ($status eq 'UNAVAILABLE') { |
$msg.='<h1>'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</h1>'; |
$msg.='<h1>'.&mt('Unable to determine if this resource is open due to network problems. Please try again later.').'</h1>'; |
} elsif ($status ne 'NOT_YET_VIEWED') { |
} elsif ($status ne 'NOT_YET_VIEWED') { |
Line 665 sub start_problem {
|
Line 673 sub start_problem {
|
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
if ($status eq 'CLOSED' || $status eq 'INVALID_ACCESS') { |
$msg.='The problem '.$accessmsg; |
$msg.='The problem '.$accessmsg; |
} elsif ($status eq 'UNCHECKEDOUT') { |
} elsif ($status eq 'UNCHECKEDOUT') { |
$msg.=&checkout_msg; |
$msg.=&checkout_msg(); |
} elsif ($status eq 'NOT_YET_VIEWED') { |
} elsif ($status eq 'NOT_YET_VIEWED') { |
$msg.=&firstaccess_msg($accessmsg,$symb); |
$msg.=&firstaccess_msg($accessmsg,$symb); |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
} elsif ($status eq 'NOT_IN_A_SLOT') { |
Line 687 sub start_problem {
|
Line 695 sub start_problem {
|
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
my $bodytext=&Apache::lonxml::get_all_text("/problem",$parser, |
$style); |
$style); |
if ($target eq 'web') { |
if ($target eq 'web') { |
$result .= $head_tag_start.'</head>'; |
|
$result .= $body_tag_start; |
|
$result .= &Apache::bridgetask::proctor_validation_screen(); |
$result .= &Apache::bridgetask::proctor_validation_screen(); |
} elsif ($target eq 'grade') { |
} elsif ($target eq 'grade') { |
&Apache::bridgetask::proctor_check_auth($slot_name,$slot, |
&Apache::bridgetask::proctor_check_auth($slot_name,$slot, |
'problem'); |
'problem'); |
} |
} |
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
my $name= &get_resource_name($parstack,$safeeval); |
$result.="\n $form_tag_start". |
$result.="$head_tag_start<title>$name</title></head> |
|
$body_tag_start \n $form_tag_start". |
|
'<input type="hidden" name="submitted" value="yes" />'; |
'<input type="hidden" name="submitted" value="yes" />'; |
# create a page header and exit |
# create a page header and exit |
if ($env{'request.state'} eq "construct") { |
if ($env{'request.state'} eq "construct") { |
Line 715 sub start_problem {
|
Line 719 sub start_problem {
|
|
|
} |
} |
} elsif ($target eq 'edit') { |
} elsif ($target eq 'edit') { |
$result.=$head_tag_start."</head>".$body_tag_start.$form_tag_start. |
$result .= $form_tag_start.&problem_edit_header(); |
&problem_edit_header(); |
|
$Apache::lonxml::warnings_error_header= |
$Apache::lonxml::warnings_error_header= |
&mt("Editor Errors - these errors might not effect the running of the problem, but they will likely cause problems with further use of the Edit mode. Please use the EditXML mode to fix these errors.")."<br />"; |
&mt("Editor Errors - these errors might not effect the running of the problem, but they will likely cause problems with further use of the Edit mode. Please use the EditXML mode to fix these errors.")."<br />"; |
my $temp=&Apache::edit::insertlist($target,$token); |
my $temp=&Apache::edit::insertlist($target,$token); |
Line 858 sub end_problem {
|
Line 861 sub end_problem {
|
if ($target ne 'tex' && |
if ($target ne 'tex' && |
$env{'form.answer_output_mode'} ne 'tex') { |
$env{'form.answer_output_mode'} ne 'tex') { |
$result.="</form>"; |
$result.="</form>"; |
$result.=&Apache::lonhtmlcommon::htmlareaselectactive(@Apache::lonxml::htmlareafields); |
$result.= &Apache::lonhtmlcommon::htmlareaselectactive(&Apache::lonhtmcommon::get_htmlareafields()); |
} |
} |
if ($target eq 'web') { |
if ($target eq 'web') { |
$result.=&Apache::lonxml::xmlend().'</html>'; |
$result.= &Apache::loncommon::end_page({'discussion' => 1}); |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
my $endminipage = ''; |
my $endminipage = ''; |
if (not $env{'form.problem_split'}=~/yes/) { |
if (not $env{'form.problem_split'}=~/yes/) { |
Line 886 sub end_problem {
|
Line 889 sub end_problem {
|
} |
} |
if ($target eq 'answer' && ($env{'request.state'} eq 'construct') |
if ($target eq 'answer' && ($env{'request.state'} eq 'construct') |
&& $env{'form.answer_output_mode'} ne 'tex') { |
&& $env{'form.answer_output_mode'} ne 'tex') { |
$result.=&Apache::lonxml::xmlend().'</html>'; |
$result.=&Apache::loncommon::end_page({'discussion' => 1}); |
# normally we get it from above, but in CSTR |
# normally we get it from above, but in CSTR |
# we always show answer mode too. |
# we always show answer mode too. |
} |
} |
Line 917 sub end_problem {
|
Line 920 sub end_problem {
|
|
|
sub start_library { |
sub start_library { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($result,$head_tag_start,$body_tag_start,$form_tag_start); |
my ($result,$form_tag_start); |
if ($$tagstack[0] eq 'library') { |
if ($$tagstack[0] eq 'library') { |
&init_problem_globals('library'); |
&init_problem_globals('library'); |
$Apache::lonhomework::type='problem'; |
$Apache::lonhomework::type='problem'; |
} |
} |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
($result,$head_tag_start,$body_tag_start,$form_tag_start)= |
($result,$form_tag_start)= |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval, |
$result.=$head_tag_start."</head>".$body_tag_start.$form_tag_start. |
'Edit'); |
&problem_edit_header(); |
$result.=$form_tag_start.&problem_edit_header(); |
my $temp=&Apache::edit::insertlist($target,$token); |
my $temp=&Apache::edit::insertlist($target,$token); |
$result.=$temp; |
$result.=$temp; |
} elsif ($target eq 'modified') { |
} elsif ($target eq 'modified') { |
$result=$token->[4]; |
$result=$token->[4]; |
$result.=&Apache::edit::handle_insert(); |
$result.=&Apache::edit::handle_insert(); |
} elsif ($target eq 'web' && $$tagstack[0] ne 'problem' && |
} elsif (($target eq 'web' || $target eq 'webgrade') |
$env{'request.state'} eq "construct" ) { |
&& $$tagstack[0] eq 'library' |
($result,$head_tag_start,$body_tag_start,$form_tag_start)= |
&& $env{'request.state'} eq "construct" ) { |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
|
my $name=&get_resource_name($parstack,$safeeval); |
my $name=&get_resource_name($parstack,$safeeval); |
|
($result,$form_tag_start)= |
|
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval, |
|
$name); |
my $rndseed=&setup_rndseed($safeeval); |
my $rndseed=&setup_rndseed($safeeval); |
$result.="$head_tag_start<title>$name</title></head> |
$result.=" \n $form_tag_start". |
$body_tag_start \n $form_tag_start". |
|
'<input type="hidden" name="submitted" value="yes" />'; |
'<input type="hidden" name="submitted" value="yes" />'; |
$result.=&problem_web_to_edit_header($rndseed); |
$result.=&problem_web_to_edit_header($rndseed); |
} |
} |
Line 953 sub end_library {
|
Line 957 sub end_library {
|
$result=&problem_edit_footer(); |
$result=&problem_edit_footer(); |
} elsif ($target eq 'web' && $$tagstack[0] ne 'problem' && |
} elsif ($target eq 'web' && $$tagstack[0] ne 'problem' && |
$env{'request.state'} eq "construct") { |
$env{'request.state'} eq "construct") { |
$result.='</form>'.&Apache::loncommon::endbodytag(). |
$result.='</form>'.&Apache::lonxml::xmlend(); |
&Apache::lonxml::xmlend(); |
|
} |
} |
if ($$tagstack[0] eq 'library') { &reset_problem_globals('library') }; |
if ($$tagstack[0] eq 'library') { &reset_problem_globals('library') }; |
return $result; |
return $result; |