version 1.524, 2014/11/24 02:36:26
|
version 1.539, 2015/09/14 13:45:19
|
Line 224 sub end_tex {
|
Line 224 sub end_tex {
|
} |
} |
|
|
sub homework_js { |
sub homework_js { |
|
my ($postsubmit,$timeout); |
|
if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) { |
|
my $crstype; |
|
if (&Apache::loncommon::course_type() eq 'Community') { |
|
$crstype = 'community'; |
|
} else { |
|
if ($env{'course.'.$env{'request.course.id'}.'.internal.coursecode'}) { |
|
$crstype = 'official'; |
|
} elsif ($env{'course.'.$env{'request.course.id'}.'.internal.textbook'}) { |
|
$crstype = 'textbook'; |
|
} else { |
|
$crstype = 'unofficial'; |
|
} |
|
} |
|
$postsubmit = $env{'course.'.$env{'request.course.id'}.'.internal.postsubmit'}; |
|
if ($postsubmit eq '') { |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'}); |
|
$postsubmit = $domdefs{'postsubmit'}; |
|
unless ($postsubmit eq 'off') { |
|
$timeout = $domdefs{$crstype.'postsubtimeout'}; |
|
} |
|
} elsif ($postsubmit eq '0') { |
|
$postsubmit = 'off'; |
|
} elsif ($postsubmit eq '1') { |
|
$postsubmit = 'on'; |
|
$timeout = $env{'course.'.$env{'request.course.id'}.'.internal.postsubtimeout'}; |
|
if ($timeout eq '') { |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'}); |
|
$timeout = $domdefs{$crstype.'postsubtimeout'}; |
|
} |
|
} |
|
if ($timeout eq '') { |
|
$timeout = 60; |
|
} |
|
} else { |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($env{'request.role.domain'}); |
|
$postsubmit = $domdefs{'postsubmit'}; |
|
unless ($postsubmit eq 'off') { |
|
$timeout = 60; |
|
} |
|
} |
|
my $jstimeout = 0; |
|
if ($timeout) { |
|
$jstimeout = 1000 * $timeout; |
|
} |
return &Apache::loncommon::resize_textarea_js(). |
return &Apache::loncommon::resize_textarea_js(). |
|
&Apache::loncommon::colorfuleditor_js(). |
&setmode_javascript(). |
&setmode_javascript(). |
<<'JS'; |
<<"JS"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
function setSubmittedPart (part,prefix) { |
function setSubmittedPart (part,prefix) { |
Line 241 function setSubmittedPart (part,prefix)
|
Line 287 function setSubmittedPart (part,prefix)
|
} |
} |
} |
} |
|
|
|
function disableAutoComplete (id) { |
|
var field = document.getElementById(id); |
|
if (field != null && field != undefined){ |
|
if ('autocomplete' in field) { |
|
field.autocomplete = "off"; |
|
} else { |
|
field.setAttribute("autocomplete", "off"); |
|
} |
|
} |
|
} |
|
|
function image_response_click (which, e) { |
function image_response_click (which, e) { |
init_geometry(); |
init_geometry(); |
if (!e) { e = window.event; } //IE |
if (!e) { e = window.event; } //IE |
Line 257 function image_response_click (which, e)
|
Line 314 function image_response_click (which, e)
|
|
|
var submithandled = 0; |
var submithandled = 0; |
var keypresshandled = 0; |
var keypresshandled = 0; |
|
var postsubmit = '$postsubmit'; |
|
|
$(document).ready(function(){ |
\$(document).ready(function(){ |
|
if (postsubmit != 'off') { |
$(document).keypress(function(event){ |
\$(document).keypress(function(event){ |
var keycode = (event.keyCode ? event.keyCode : event.which); |
var keycode = (event.keyCode ? event.keyCode : event.which); |
if ((keycode == '13') && (keypresshandled == 0)) { |
if ((keycode == '13') && (keypresshandled == 0)) { |
if ( $( document.activeElement ).hasClass("LC_textline") ) { |
if ( \$( document.activeElement ).hasClass("LC_textline") ) { |
keypresshandled = 1; |
keypresshandled = 1; |
var idsArray = $( document.activeElement ).attr("id").split(/HWVAL_/); |
var idsArray = \$( document.activeElement ).attr("id").split(/HWVAL_/); |
if (idsArray.length) { |
if (idsArray.length) { |
event.preventDefault(); |
event.preventDefault(); |
var itemsArray = idsArray[1].split(/_/); |
var itemsArray = idsArray[1].split(/_/); |
var buttonId = idsArray[0]+'submit_'+itemsArray[0]; |
var buttonId = idsArray[0]+'submit_'+itemsArray[0]; |
$("#"+buttonId).trigger("click"); |
\$("#"+buttonId).trigger("click"); |
} |
} |
} |
} |
} |
} |
}); |
}); |
|
|
$(document).delegate('form :submit', 'click', function( event ) { |
\$(document).delegate('form :submit', 'click', function( event ) { |
if ( $( this ).hasClass( "LC_hwk_submit" ) ) { |
if ( \$( this ).hasClass( "LC_hwk_submit" ) ) { |
var buttonId = this.id; |
var buttonId = this.id; |
|
var timeout = $jstimeout; |
if (submithandled == 0) { |
if (submithandled == 0) { |
submithandled = 1; |
submithandled = 1; |
$( "#msg_"+buttonId ).css({"display": "inline","background-color": "#87cefa", |
\$( "#msg_"+buttonId ).css({"display": "inline","background-color": "#87cefa", |
"color": "black","padding": "2px"}) ; |
"color": "black","padding": "2px"}) ; |
if (( $(this.form).id == "LC_page" ) && ($('input[name="all_submit"]').length )) { |
if (( \$(this.form).id == "LC_page" ) && (\$('input[name="all_submit"]').length )) { |
if (buttonId != "all_submit") { |
if (buttonId != "all_submit") { |
$( ".LC_status_"+buttonId ).hide(); |
\$( ".LC_status_"+buttonId ).hide(); |
if (( "#"+buttonId+"_pressed" ).length) { |
if (( "#"+buttonId+"_pressed" ).length) { |
$( "#"+buttonId+"_pressed" ).val( "1" ); |
\$( "#"+buttonId+"_pressed" ).val( "1" ); |
} |
} |
} |
} |
} else { |
} else { |
$( ".LC_status_"+buttonId ).hide(); |
\$( ".LC_status_"+buttonId ).hide(); |
} |
} |
$(this.form).submit(); |
\$(this.form).submit(); |
$( ".LC_hwk_submit" ).prop( "disabled", true); |
\$( ".LC_hwk_submit" ).prop( "disabled", true); |
$( ".LC_textline" ).prop( "readonly", "readonly"); |
\$( ".LC_textline" ).prop( "readonly", "readonly"); |
event.preventDefault(); |
event.preventDefault(); |
|
|
|
if (timeout > 0) { |
|
setTimeout(function(){ |
|
\$( "#msg_"+buttonId ).css({"display": "none"}); |
|
if (( \$(this.form).id == "LC_page" ) && (\$('input[name="all_submit"]').length )) { |
|
if (buttonId != "all_submit") { |
|
if (( "#"+buttonId+"_pressed" ).length) { |
|
\$( "#"+buttonId+"_pressed" ).val( "" ); |
|
} |
|
} |
|
} |
|
\$( ".LC_hwk_submit" ).prop( "disabled", false); |
|
\$( ".LC_textline" ).prop( "readonly", false); |
|
submithandled = 0; |
|
keypresshandled = 0; |
|
}, timeout); |
|
} |
return true; |
return true; |
} |
} |
} |
} |
}); |
}); |
|
} |
}); |
}); |
|
|
// ]]> |
// ]]> |
Line 346 sub page_start {
|
Line 423 sub page_start {
|
$extra_head .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args); |
$extra_head .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args); |
} |
} |
my $is_task = ($env{'request.uri'} =~ /\.task$/); |
my $is_task = ($env{'request.uri'} =~ /\.task$/); |
my $needs_upload; |
my ($needs_upload,$partlist); |
my ($symb)= &Apache::lonnet::whichuser(); |
my ($symb)= &Apache::lonnet::whichuser(); |
my ($map,$resid,$resurl)=&Apache::lonnet::decode_symb($symb); |
my ($map,$resid,$resurl)=&Apache::lonnet::decode_symb($symb); |
if ($is_task) { |
if ($is_task) { |
Line 364 sub page_start {
|
Line 441 sub page_start {
|
unless ($is_page) { |
unless ($is_page) { |
$needs_upload = 1; |
$needs_upload = 1; |
} |
} |
|
if ((ref($tagstack) eq 'ARRAY') && ($tagstack->[-1] eq 'problem')) { |
|
my $res = $navmap->getBySymb($symb); |
|
if (ref($res)) { |
|
$partlist = $res->parts(); |
|
} |
|
} |
} |
} |
} |
} |
} else { |
} else { |
Line 375 sub page_start {
|
Line 458 sub page_start {
|
if (ref($mapres)) { |
if (ref($mapres)) { |
$is_page = $mapres->is_page(); |
$is_page = $mapres->is_page(); |
} |
} |
unless ($is_page) { |
if ($is_page) { |
|
if ((ref($tagstack) eq 'ARRAY') && ($tagstack->[-1] eq 'problem')) { |
|
my $res = $navmap->getBySymb($symb); |
|
if (ref($res)) { |
|
$partlist = $res->parts(); |
|
} |
|
} |
|
} else { |
my $res = $navmap->getBySymb($symb); |
my $res = $navmap->getBySymb($symb); |
if (ref($res)) { |
if (ref($res)) { |
my $partlist = $res->parts(); |
$partlist = $res->parts(); |
if (ref($partlist) eq 'ARRAY') { |
if (ref($partlist) eq 'ARRAY') { |
foreach my $part (@{$partlist}) { |
foreach my $part (@{$partlist}) { |
my @types = $res->responseType($part); |
my @types = $res->responseType($part); |
Line 400 sub page_start {
|
Line 490 sub page_start {
|
} |
} |
} |
} |
if ($needs_upload) { |
if ($needs_upload) { |
$extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js(); |
$extra_head .= &Apache::lonhtmlcommon::file_submissionchk_js() |
|
.'<script type="text/javascript" |
|
src="/res/adm/includes/file_upload.js"></script>'; |
} |
} |
} |
} |
|
|
Line 419 sub page_start {
|
Line 511 sub page_start {
|
"if (typeof swmenu != 'undefined') {swmenu.currentURL=null;}\n". |
"if (typeof swmenu != 'undefined') {swmenu.currentURL=null;}\n". |
&Apache::loncommon::browser_and_searcher_javascript(). |
&Apache::loncommon::browser_and_searcher_javascript(). |
"\n</script>\n"; |
"\n</script>\n"; |
|
if ($target eq 'edit') { |
|
$extra_head .= &Apache::edit::js_update_linknum(); |
|
} |
} |
} |
} |
} |
|
|
Line 511 sub page_start {
|
Line 606 sub page_start {
|
"\t".'<input type="hidden" name="symb" value="'.$symb.'" />'."\n"; |
"\t".'<input type="hidden" name="symb" value="'.$symb.'" />'."\n"; |
} |
} |
} |
} |
return ($page_start,$form_tag_start); |
return ($page_start,$form_tag_start,$partlist); |
} |
} |
|
|
#use Time::HiRes(); |
#use Time::HiRes(); |
Line 542 sub get_resource_name {
|
Line 637 sub get_resource_name {
|
} |
} |
|
|
sub setup_rndseed { |
sub setup_rndseed { |
my ($safeeval,$target)=@_; |
my ($safeeval,$target,$probpartlist)=@_; |
my ($symb)=&Apache::lonnet::whichuser(); |
my ($symb)=&Apache::lonnet::whichuser(); |
my ($questiontype,$set_safespace,$rndseed); |
my ($questiontype,$set_safespace,$rndseed); |
if ($target eq 'analyze') { |
if ($target eq 'analyze') { |
Line 603 sub setup_rndseed {
|
Line 698 sub setup_rndseed {
|
} |
} |
unless (($target eq 'analyze') && (defined($rndseed))) { |
unless (($target eq 'analyze') && (defined($rndseed))) { |
$rndseed=&Apache::lonnet::rndseed(); |
$rndseed=&Apache::lonnet::rndseed(); |
my $curr_try = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.tries"}; |
my $partfortries = $Apache::inputtags::part; |
|
if (ref($probpartlist) eq 'ARRAY') { |
|
if ((@{$probpartlist} == 1) && ($probpartlist->[0] ne $Apache::inputtags::part)) { |
|
$partfortries = $probpartlist->[0]; |
|
} |
|
} |
|
my $curr_try = $Apache::lonhomework::history{"resource.$partfortries.tries"}; |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
if ($Apache::inputtags::status[-1] eq 'CAN_ANSWER') { |
$curr_try ++; |
$curr_try ++; |
} |
} |
Line 611 sub setup_rndseed {
|
Line 712 sub setup_rndseed {
|
$rndseed = $1; |
$rndseed = $1; |
} |
} |
if ($curr_try) { |
if ($curr_try) { |
my $reqtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::part.randomizeontries"); |
my $reqtries = &Apache::lonnet::EXT("resource.$partfortries.randomizeontries"); |
if (($reqtries =~ /^\d+$/) && ($reqtries > 1)) { |
if (($reqtries =~ /^\d+$/) && ($reqtries > 1)) { |
my $inc = int(($curr_try-1)/$reqtries); |
my $inc = int(($curr_try-1)/$reqtries); |
$rndseed += $inc; |
$rndseed += $inc; |
Line 621 sub setup_rndseed {
|
Line 722 sub setup_rndseed {
|
} |
} |
} |
} |
$set_safespace = 1; |
$set_safespace = 1; |
|
if ($target eq 'grade') { |
|
$Apache::lonhomework::rawrndseed = $rndseed; |
|
} |
} |
} |
if ($set_safespace) { |
if ($set_safespace) { |
if ($safeeval) { |
if ($safeeval) { |
Line 650 sub problem_edit_action_button {
|
Line 754 sub problem_edit_action_button {
|
|
|
sub problem_edit_buttons { |
sub problem_edit_buttons { |
my ($mode)=@_; |
my ($mode)=@_; |
|
# Buttons that save |
|
my $result = '<div style="float:right">'; |
|
if ($mode eq 'editxml') { |
|
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
|
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
|
} else { |
|
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
|
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
|
} |
|
$result.="\n</div>\n"; |
# Buttons that do not save |
# Buttons that do not save |
my $result='<div class="LC_edit_problem_discards">'. |
$result .= '<div>'. |
&problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1); |
&problem_edit_action_button('subdiscview','discard','d','Discard Edits and View',1); |
if ($mode eq 'editxml') { |
if ($mode eq 'editxml') { |
$result.=&problem_edit_action_button('subedit','edit','e','Edit',1); |
$result.=&problem_edit_action_button('subedit','edit','e','Edit',1); |
Line 662 sub problem_edit_buttons {
|
Line 776 sub problem_edit_buttons {
|
$result.=&problem_edit_action_button('subundo','undo','u','Undo',1); |
$result.=&problem_edit_action_button('subundo','undo','u','Undo',1); |
} |
} |
$result.="\n</div>"; |
$result.="\n</div>"; |
# Buttons that save |
|
$result.='<div class="LC_edit_problem_saves">'; |
|
if ($mode eq 'editxml') { |
|
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
|
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
|
} else { |
|
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
|
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
|
} |
|
$result.="\n</div>\n"; |
|
return $result; |
return $result; |
} |
} |
|
|
sub problem_edit_header { |
sub problem_edit_header { |
return '<input type="hidden" name="submitted" value="edit" />'. |
my ($mode)=@_; |
|
my $return = '<input type="hidden" name="submitted" value="edit" />'. |
&remember_problem_state('edit').' |
&remember_problem_state('edit').' |
<div class="LC_edit_problem_header"> |
<div class="LC_edit_problem_header"> |
<div class="LC_edit_problem_header_title"> |
<div class="LC_edit_problem_header_title"> |
'.&mt('Problem Editing').&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').' |
'.&mt('Problem Editing').$mode.&Apache::loncommon::help_open_menu('Problem Editing','Problem_Editor_XML_Index',5,'Authoring').' |
</div>'. |
</div><div class="LC_edit_actionbar" id="actionbar">'. |
'<input type="hidden" name="problemmode" value="saveedit" />'. |
'<input type="hidden" name="problemmode" value="saveedit" />'. |
&problem_edit_buttons().' |
&problem_edit_buttons(); |
<hr style="clear:both;" /> |
|
'.&Apache::lonxml::message_location().' |
$return .= '</div></div>' . &Apache::lonxml::message_location(); |
</div> |
$return .= '<link rel="stylesheet" href="/adm/codemirror/codemirror-combined.css" /> |
'. |
<script type="text/javascript" src="/adm/codemirror/codemirror-compressed-colorful.js"></script>'; |
'<table id="LC_edit_problem_colorful" border="0" width="100%"><tr><td bgcolor="#F8F8F8">'; |
|
|
$return .= '<script type="text/javascript" src="/adm/jQuery/addons/jquery-scrolltofixed.js"></script> |
|
<script type="text/javascript"> |
|
// unless internet explorer |
|
if (!(window.navigator.appName == "Microsoft Internet Explorer" && (document.documentMode || document.compatMode))){ |
|
$(document).ready( |
|
function() { |
|
$(\'.LC_edit_actionbar\').scrollToFixed( |
|
{ |
|
fixed: function(){ |
|
//$(this).find(\'.LC_edit_actionbar\').css(\'height\', \'31px\'); |
|
$(this).find(\'.LC_edit_actionbar\'); |
|
} |
|
} |
|
); |
|
} |
|
); |
|
} |
|
</script> |
|
<table id="LC_edit_problem_colorful" border="0" width="100%"><tr><td bgcolor="#F8F8F8">'; |
|
return $return; |
} |
} |
|
|
sub problem_edit_footer { |
sub problem_edit_footer { |
|
my $resource = $env{'request.ambiguous'}; |
return '</td></tr></table><br /> |
return '</td></tr></table><br /> |
<div class="LC_edit_problem_footer"> |
<div class="LC_edit_problem_footer"> |
<hr />'. |
<hr />'. |
&problem_edit_buttons().' |
&problem_edit_buttons().' |
<hr style="clear:both;" /> |
<hr style="clear:both;" /> |
|
<script type="text/javascript"> |
|
restoreState("'.$resource.'"); |
|
restoreScrollPosition("'.$resource.'"); |
|
</script> |
</div> |
</div> |
'. |
'. |
"\n</form>\n".&Apache::loncommon::end_page(); |
"\n</form>\n".&Apache::loncommon::end_page(); |
Line 881 sub initialize_storage {
|
Line 1011 sub initialize_storage {
|
} |
} |
%Apache::lonhomework::history= |
%Apache::lonhomework::history= |
&Apache::lonnet::tmprestore($namespace,'',$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 { |
%Apache::lonhomework::history= |
%Apache::lonhomework::history= |
Line 889 sub initialize_storage {
|
Line 1019 sub initialize_storage {
|
} |
} |
|
|
#ignore error conditions |
#ignore error conditions |
my ($temp)=keys %Apache::lonhomework::history ; |
my ($temp)=keys(%Apache::lonhomework::history); |
if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } |
if ($temp =~ m/^error:.*/) { %Apache::lonhomework::history=(); } |
} |
} |
|
|
Line 1148 sub store_aggregates {
|
Line 1278 sub store_aggregates {
|
} else { |
} else { |
$anoncounter{$symb."\0".$part} = 1; |
$anoncounter{$symb."\0".$part} = 1; |
} |
} |
my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}}; |
my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}.':'}; |
if ($needsrelease) { |
if ($needsrelease) { |
my $curr_required = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'}; |
my $curr_required = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'}; |
if ($curr_required eq '') { |
if ($curr_required eq '') { |
&Apache::lonnet::update_released_required($needsrelease); |
&Apache::lonnet::update_released_required($needsrelease); |
Line 1163 sub store_aggregates {
|
Line 1293 sub store_aggregates {
|
} |
} |
} |
} |
} |
} |
if (keys (%aggregate) > 0) { |
if (keys(%aggregate) > 0) { |
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
$cdomain,$cname); |
$cdomain,$cname); |
} |
} |
Line 1260 sub init_problem_globals {
|
Line 1390 sub init_problem_globals {
|
@Apache::inputtags::importlist = (); |
@Apache::inputtags::importlist = (); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous_version=(); |
@Apache::inputtags::previous_version=(); |
|
$Apache::inputtags::leniency=''; |
$Apache::structuretags::printanswer='No'; |
$Apache::structuretags::printanswer='No'; |
@Apache::structuretags::whileconds=(); |
@Apache::structuretags::whileconds=(); |
@Apache::structuretags::whilebody=(); |
@Apache::structuretags::whilebody=(); |
Line 1275 sub reset_problem_globals {
|
Line 1406 sub reset_problem_globals {
|
undef(%Apache::lonhomework::history); |
undef(%Apache::lonhomework::history); |
undef(%Apache::lonhomework::results); |
undef(%Apache::lonhomework::results); |
undef($Apache::inputtags::part); |
undef($Apache::inputtags::part); |
|
undef($Apache::inputtags::leniency); |
if ($type eq 'Task') { |
if ($type eq 'Task') { |
undef($Apache::inputtags::slot_name); |
undef($Apache::inputtags::slot_name); |
|
} elsif ($type eq 'problem') { |
|
undef($Apache::lonhomework::rawrndseed); |
} |
} |
#don't undef this, lonhomework.pm takes care of this, we use this to |
#don't undef this, lonhomework.pm takes care of this, we use this to |
#detect if we try to do 2 problems in one file |
#detect if we try to do 2 problems in one file |
Line 1378 sub start_problem {
|
Line 1512 sub start_problem {
|
my $resource_due; |
my $resource_due; |
|
|
my $name= &get_resource_name($parstack,$safeeval); |
my $name= &get_resource_name($parstack,$safeeval); |
my ($result,$form_tag_start,$slot_name,$slot); |
my ($result,$form_tag_start,$slot_name,$slot,$probpartlist); |
|
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
$target eq 'tex') { |
$target eq 'tex') { |
if ($env{'form.markaccess'}) { |
if ($env{'form.markaccess'}) { |
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
my @interval=&Apache::lonnet::EXT("resource.0.interval"); |
&Apache::lonnet::set_first_access($interval[1],$interval[0]); |
my ($timelimit) = split(/_/,$interval[0]); |
|
&Apache::lonnet::set_first_access($interval[1],$timelimit); |
} |
} |
|
|
($status,$accessmsg,$slot_name,$slot) = |
($status,$accessmsg,$slot_name,$slot) = |
Line 1394 sub start_problem {
|
Line 1529 sub start_problem {
|
|
|
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'tex' |
if ($target eq 'web' || $target eq 'webgrade' || $target eq 'tex' |
|| $target eq 'edit') { |
|| $target eq 'edit') { |
($result,$form_tag_start) = |
($result,$form_tag_start,$probpartlist) = |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval, |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval, |
$name); |
$name); |
|
} elsif (($target eq 'grade') && ($Apache::lonhomework::type eq 'randomizetry')) { |
|
my ($symb)= &Apache::lonnet::whichuser(); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (ref($navmap)) { |
|
my $res = $navmap->getBySymb($symb); |
|
if (ref($res)) { |
|
$probpartlist = $res->parts(); |
|
} |
|
} |
} |
} |
|
|
if ($target eq 'tex' and $env{'request.symb'} =~ m/\.page_/) {$result='';} |
if ($target eq 'tex' and $env{'request.symb'} =~ m/\.page_/) {$result='';} |
Line 1406 sub start_problem {
|
Line 1550 sub start_problem {
|
$target eq 'tex') { |
$target eq 'tex') { |
|
|
#handle rand seed in construction space |
#handle rand seed in construction space |
my $rndseed=&setup_rndseed($safeeval,$target); |
my $rndseed=&setup_rndseed($safeeval,$target,$probpartlist); |
|
if (($target eq 'grade') && &Apache::response::submitted()) { |
|
if ($Apache::lonhomework::type eq 'randomizetry') { |
|
$Apache::lonhomework::results{'resource.0.rndseed'}=$rndseed; |
|
} else { |
|
my @parts; |
|
if (ref($probpartlist) eq 'ARRAY') { |
|
@parts = @{$probpartlist}; |
|
} |
|
unless (@parts) { |
|
$Apache::lonhomework::results{'resource.0.rndseed'}=$Apache::lonhomework::rawrndseed; |
|
} |
|
} |
|
} |
my ($symb)=&Apache::lonnet::whichuser(); |
my ($symb)=&Apache::lonnet::whichuser(); |
|
|
if ($env{'request.state'} ne "construct" && |
if ($env{'request.state'} ne "construct" && |
Line 1614 sub end_problem {
|
Line 1771 sub end_problem {
|
my $id = $Apache::inputtags::part; |
my $id = $Apache::inputtags::part; |
my $weight = &Apache::lonnet::EXT("resource.$id.weight"); |
my $weight = &Apache::lonnet::EXT("resource.$id.weight"); |
my $packages=&Apache::lonnet::metadata($env{'request.uri'},'packages'); |
my $packages=&Apache::lonnet::metadata($env{'request.uri'},'packages'); |
my @packages = split /,/,$packages; |
my @packages = split(/,/,$packages); |
my $allow_print_points = 0; |
my $allow_print_points = 0; |
foreach my $partial_key (@packages) { |
foreach my $partial_key (@packages) { |
if ($partial_key=~m/^part_0$/) { |
if ($partial_key=~m/^part_0$/) { |
Line 2348 sub start_randomlist {
|
Line 2505 sub start_randomlist {
|
} |
} |
} |
} |
} |
} |
for(0 .. $show) { |
for my $i (0 .. $show) { |
$bodytext .= "$randomlist[ $idx_arr[$_] ]"; |
$bodytext .= "$randomlist[ $idx_arr[$i] ]"; |
} |
} |
&Apache::lonxml::newparser($parser,\$bodytext); |
&Apache::lonxml::newparser($parser,\$bodytext); |
} |
} |
Line 2454 sub start_part {
|
Line 2611 sub start_part {
|
my $id= &Apache::lonxml::get_id($parstack,$safeeval); |
my $id= &Apache::lonxml::get_id($parstack,$safeeval); |
$Apache::inputtags::part=$id; |
$Apache::inputtags::part=$id; |
push(@Apache::inputtags::partlist,$id); |
push(@Apache::inputtags::partlist,$id); |
|
$Apache::inputtags::leniency=''; |
@Apache::inputtags::response=(); |
@Apache::inputtags::response=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous_version=(); |
@Apache::inputtags::previous_version=(); |
Line 2463 sub start_part {
|
Line 2621 sub start_part {
|
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part); |
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part); |
my $newtype=&Apache::lonnet::EXT("resource.$id.type"); |
my $newtype=&Apache::lonnet::EXT("resource.$id.type"); |
if ($newtype) { $Apache::lonhomework::type=$newtype; } |
if ($newtype) { $Apache::lonhomework::type=$newtype; } |
|
if ($Apache::lonhomework::type eq 'randomizetry') { |
|
my $rndseed=&setup_rndseed($safeeval,$target); |
|
if (($target eq 'grade') && &Apache::response::submitted()) { |
|
$Apache::lonhomework::results{"resource.$id.rndseed"}=$rndseed; |
|
} |
|
} elsif (($target eq 'grade') && &Apache::response::submitted()) { |
|
$Apache::lonhomework::results{"resource.$id.rndseed"}=$Apache::lonhomework::rawrndseed; |
|
} |
my $in_order_show=&ordered_show_check(); |
my $in_order_show=&ordered_show_check(); |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
$expression.='$external::type=\''.$Apache::lonhomework::type.'\';'; |
$expression.='$external::type=\''.$Apache::lonhomework::type.'\';'; |
Line 2513 sub start_part {
|
Line 2679 sub start_part {
|
} |
} |
my $weight = &Apache::lonnet::EXT("resource.$id.weight"); |
my $weight = &Apache::lonnet::EXT("resource.$id.weight"); |
my $allkeys=&Apache::lonnet::metadata($env{'request.uri'},'packages'); |
my $allkeys=&Apache::lonnet::metadata($env{'request.uri'},'packages'); |
my @allkeys = split /,/,$allkeys; |
my @allkeys = split(/,/,$allkeys); |
my $allow_print_points = 0; |
my $allow_print_points = 0; |
foreach my $partial_key (@allkeys) { |
foreach my $partial_key (@allkeys) { |
if ($partial_key=~m/^part_(.*)$/) { |
if ($partial_key=~m/^part_(.*)$/) { |
Line 2611 sub end_part {
|
Line 2777 sub end_part {
|
} |
} |
pop @Apache::inputtags::status; |
pop @Apache::inputtags::status; |
$Apache::inputtags::part=''; |
$Apache::inputtags::part=''; |
|
$Apache::inputtags::leniency=''; |
$Apache::lonhomework::type = $Apache::lonhomework::default_type; |
$Apache::lonhomework::type = $Apache::lonhomework::default_type; |
return $result; |
return $result; |
} |
} |
Line 2761 sub end_startouttext {
|
Line 2928 sub end_startouttext {
|
if ($target eq 'edit') { |
if ($target eq 'edit') { |
my $areaid = 'homework_edit_'.$Apache::lonxml::curdepth; |
my $areaid = 'homework_edit_'.$Apache::lonxml::curdepth; |
$text=&Apache::lonxml::get_all_text("endouttext",$parser,$style); |
$text=&Apache::lonxml::get_all_text("endouttext",$parser,$style); |
$result.=&Apache::edit::start_table($token)."<tr><td>".&mt('Text Block')."</td>" |
$result.=&Apache::edit::start_table($token)."<tr><td>".&Apache::loncommon::insert_folding_button() |
|
." ".&mt('Text Block')."</td>" |
.'<td><span class="LC_nobreak">'.&mt('Delete?').' ' |
.'<td><span class="LC_nobreak">'.&mt('Delete?').' ' |
.&Apache::edit::deletelist($target,$token) |
.&Apache::edit::deletelist($target,$token) |
.'</span></td>' |
.'</span></td>' |