version 1.527, 2015/01/19 15:35:53
|
version 1.534, 2015/04/10 12:01:28
|
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(). |
&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 242 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 258 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 347 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 365 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 376 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 515 sub page_start {
|
Line 604 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 546 sub get_resource_name {
|
Line 635 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 607 sub setup_rndseed {
|
Line 696 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 615 sub setup_rndseed {
|
Line 710 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 625 sub setup_rndseed {
|
Line 720 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 720 sub template_dropdown_datastructure {
|
Line 818 sub template_dropdown_datastructure {
|
close(FH); |
close(FH); |
|
|
if ($code ne '') { |
if ($code ne '') { |
my $href = 'javascript:insertText(\'' . &convert_for_js(&HTML::Entities::encode($code)) . '\')'; |
my $href = 'javascript:insertText(\'' . &convert_for_js(&HTML::Entities::encode($code,'<>&"')) . '\')'; |
my $currItem = [$href, $title, undef]; |
my $currItem = [$href, $title, undef]; |
push @{$catItems}, $currItem; |
push @{$catItems}, $currItem; |
} |
} |
Line 877 sub helpmenu_datastructure {
|
Line 975 sub helpmenu_datastructure {
|
sub convert_for_js { |
sub convert_for_js { |
my $return = shift; |
my $return = shift; |
$return =~ s|script|ESCAPEDSCRIPT|g; |
$return =~ s|script|ESCAPEDSCRIPT|g; |
|
$return =~ s|\\|\\\\|g; |
$return =~ s|\n|\\r\\n|g; |
$return =~ s|\n|\\r\\n|g; |
$return =~ s|'|\\'|g; |
$return =~ s|'|\\'|g; |
$return =~ s|'|\\'|g; |
$return =~ s|'|\\'|g; |
Line 1512 sub reset_problem_globals {
|
Line 1611 sub reset_problem_globals {
|
undef($Apache::inputtags::part); |
undef($Apache::inputtags::part); |
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 1613 sub start_problem {
|
Line 1714 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') { |
Line 1629 sub start_problem {
|
Line 1730 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 1641 sub start_problem {
|
Line 1751 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 2698 sub start_part {
|
Line 2821 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.'\';'; |