version 1.465.2.15, 2011/12/10 18:23:13
|
version 1.494, 2011/07/28 02:53:38
|
Line 178 sub file_delchk_js {
|
Line 178 sub file_delchk_js {
|
return <<"ENDSCRIPT"; |
return <<"ENDSCRIPT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[ |
// <![CDATA[ |
function file_deletion_check(formname) { |
function file_deletion_check(formname,uploadid) { |
var elemnum = formname.elements.length; |
var elemnum = formname.elements.length; |
if (elemnum == 0) { |
if (elemnum == 0) { |
return true; |
return true; |
} |
} |
var str = new RegExp("^HWFILE.+_delete\$"); |
var alluploads = new Array(); |
var delboxes = new Array(); |
if ((uploadid != '') && (uploadid != undefined)) { |
for (i=0; i<formname.elements.length; i++) { |
alluploads.push(uploadid); |
|
} else { |
|
var uploadstr = /^HWFILE.+\$/; |
|
for (var i=0; i<formname.elements.length; i++) { |
|
var id = formname.elements[i].id; |
|
if (id != '') { |
|
if (uploadstr.test(id)) { |
|
if (formname.elements[i].type == 'file') { |
|
alluploads.push(id); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
for (var i=0; i<alluploads.length; i++) { |
|
var delstr = new RegExp('^'+alluploads[i]+'_\\\\d+_delete\$'); |
|
var delboxes = new Array(); |
|
for (var j=0; j<formname.elements.length; j++) { |
|
var id = formname.elements[j].id; |
|
if (id != '') { |
|
if (delstr.test(id)) { |
|
if (formname.elements[j].type == 'checkbox') { |
|
if (formname.elements[j].checked) { |
|
delboxes.push(id); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if (delboxes.length > 0) { |
|
if (!confirm("$delfilewarn")) { |
|
for (var j=0; j<delboxes.length; j++) { |
|
formname.elements[delboxes[j]].checked = false; |
|
} |
|
return false; |
|
} |
|
} |
|
} |
|
return true; |
|
} |
|
// ]]> |
|
</script> |
|
ENDSCRIPT |
|
} |
|
|
|
sub file_overwritechk_js { |
|
my $overwritewarn = &mt('File(s) you uploaded for your submission will overwrite existing file(s) submitted for this item').'\\n'. |
|
&mt('Continue submission and overwrite the file(s)?'); |
|
return <<"ENDSCRIPT"; |
|
<script type="text/javascript"> |
|
// <![CDATA[ |
|
function file_overwrite_check(formname,path,multiresp) { |
|
var elemnum = formname.elements.length; |
|
if (elemnum == 0) { |
|
return true; |
|
} |
|
var alluploads = new Array(); |
|
var uploaded = new Array(); |
|
var uploadstr = /^HWFILE.+\$/; |
|
var fnametrim = /[^\\/\\\\]+\$/; |
|
for (var i=0; i<formname.elements.length; i++) { |
var id = formname.elements[i].id; |
var id = formname.elements[i].id; |
if (id != '') { |
if (id != '') { |
if (str.test(id)) { |
if (uploadstr.test(id)) { |
if (formname.elements[i].type == 'checkbox') { |
if (formname.elements[i].type == 'file') { |
if (formname.elements[i].checked) { |
alluploads.push(id); |
delboxes.push(id); |
if ((formname.elements[i].value != undefined) && |
|
(formname.elements[i].value != '')) { |
|
uploaded.push(id); |
} |
} |
} |
} |
} |
} |
} |
} |
} |
} |
if (delboxes.length > 0) { |
for (var i=0; i<alluploads.length; i++) { |
if (confirm("$delfilewarn")) { |
var delstr = new RegExp("^"+alluploads[i]+"_\\\\d+_delete\$"); |
return true; |
var delboxes = new Array(); |
} else { |
for (var j=0; j<formname.elements.length; j++) { |
for (var j=0; j<delboxes.length; j++) { |
var id = formname.elements[j].id; |
formname.elements[delboxes[j]].checked = false; |
if (id != '') { |
|
if (delstr.test(id)) { |
|
if (formname.elements[j].type == 'checkbox') { |
|
delboxes.push(id); |
|
} |
|
} |
|
} |
|
} |
|
var overwrites = new Array(); |
|
if (delboxes.length > 0) { |
|
if ((formname.elements[alluploads[i]].value != undefined) && |
|
(formname.elements[alluploads[i]].value != '')) { |
|
var filepath = formname.elements[alluploads[i]].value; |
|
var newfilename = fnametrim.exec(filepath); |
|
if (newfilename != null) { |
|
var filename = String(newfilename); |
|
var nospaces = filename.replace(/\\s+/g,'_'); |
|
var nospecials = nospaces.replace(/[^\\/\\w\\.\\-]/g,''); |
|
var cleanfilename = nospecials.replace(/\\.(\\d+\\.)/g,"_\$1"); |
|
if (cleanfilename != '') { |
|
var fullpath = path+"/"+cleanfilename; |
|
if (multiresp == 1) { |
|
var partid = String(alluploads[i]); |
|
var subdir = partid.replace(/^HWFILE/,''); |
|
if (subdir != "" && subdir != undefined) { |
|
fullpath = path+"/"+subdir+"/"+cleanfilename; |
|
} |
|
} |
|
for (var k=0; k<delboxes.length; k++) { |
|
if (fullpath == formname.elements[delboxes[k]].value) { |
|
var id = formname.elements[delboxes[k]].id; |
|
if (id != '') { |
|
if (!formname.elements[delboxes[k]].checked) { |
|
overwrites.push(id); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if (overwrites.length > 0) { |
|
if (confirm("$overwritewarn")) { |
|
var delcheck = file_deletion_check(formname,alluploads[i]); |
|
if (delcheck == false) { |
|
return false; |
|
} |
|
} else { |
|
for (var n=0; n<overwrites.length; n++) { |
|
formname.elements[overwrites[n]].value = ""; |
|
} |
|
return false; |
|
} |
|
} else { |
|
var delcheck = file_deletion_check(formname); |
|
if (delcheck == false) { |
|
return false; |
|
} |
} |
} |
return false; |
|
} |
} |
} else { |
|
return true; |
|
} |
} |
|
return true; |
} |
} |
// ]]> |
// ]]> |
</script> |
</script> |
Line 240 sub page_start {
|
Line 357 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; |
if ($is_task) { |
if ($is_task) { |
$extra_head .= &file_delchk_js(); |
$extra_head .= &file_delchk_js(); |
|
} else { |
|
if (&Apache::lonnet::EXT("resource.$Apache::inputtags::part.uploadedfiletypes") ne '') { |
|
$needs_upload = 1; |
|
} else { |
|
unless ($env{'request.state'} eq 'construct') { |
|
my ($symb)= &Apache::lonnet::whichuser(); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
if (ref($navmap)) { |
|
my $res = $navmap->getBySymb($symb); |
|
if (ref($res)) { |
|
my $partlist = $res->parts(); |
|
if (ref($partlist) eq 'ARRAY') { |
|
foreach my $part (@{$partlist}) { |
|
my @types = $res->responseType($part); |
|
my @ids = $res->responseIds($part); |
|
for (my $i=0; $i < scalar(@ids); $i++) { |
|
if ($types[$i] eq 'essay') { |
|
my $partid = $part.'_'.$ids[$i]; |
|
if (&Apache::lonnet::EXT("resource.$partid.uploadedfiletypes") ne '') { |
|
$needs_upload = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($needs_upload) { |
|
$extra_head .= &file_overwritechk_js()."\n". |
|
&file_delchk_js(); |
} |
} |
|
|
my %body_args; |
my %body_args; |
Line 268 sub page_start {
|
Line 420 sub page_start {
|
} elsif (!defined($found{'body'}) |
} elsif (!defined($found{'body'}) |
&& $env{'request.state'} eq 'construct') { |
&& $env{'request.state'} eq 'construct') { |
if ($target eq 'web' || $target eq 'edit') { |
if ($target eq 'web' || $target eq 'edit') { |
if ($env{'environment.remote'} ne 'off') { |
|
$body_args{'only_body'} = 1; |
|
} |
|
# Breadcrumbs for Construction Space |
# Breadcrumbs for Construction Space |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::add_breadcrumb({ |
&Apache::lonhtmlcommon::add_breadcrumb({ |
Line 304 sub page_start {
|
Line 453 sub page_start {
|
# $body_args{'no_title'} = 1; |
# $body_args{'no_title'} = 1; |
$body_args{'force_register'} = 1; |
$body_args{'force_register'} = 1; |
$body_args{'add_entries'} = \%add_entries; |
$body_args{'add_entries'} = \%add_entries; |
if ($env{'environment.remote'} eq 'off' |
if ( $env{'request.state'} eq 'construct') { |
&& $env{'request.state'} eq 'construct') { |
|
$body_args{'only_body'} = 1; |
$body_args{'only_body'} = 1; |
} |
} |
} |
} |
Line 328 sub page_start {
|
Line 476 sub page_start {
|
if (!defined($found{'body'}) && $env{'request.state'} ne 'construct') { |
if (!defined($found{'body'}) && $env{'request.state'} ne 'construct') { |
$page_start .= &Apache::lonxml::message_location(); |
$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="'; |
Line 339 sub page_start {
|
Line 486 sub page_start {
|
if ($target eq 'edit') { |
if ($target eq 'edit') { |
$form_tag_start.=&Apache::edit::form_change_detection(); |
$form_tag_start.=&Apache::edit::form_change_detection(); |
} |
} |
|
my ($symb,$courseid,$udom,$uname)=&Apache::lonnet::whichuser(); |
|
my ($path,$multiresp) = |
|
&Apache::loncommon::get_turnedin_filepath($symb,$uname,$udom); |
if ($is_task) { |
if ($is_task) { |
$form_tag_start .= ' onsubmit="return file_deletion_check(this);"'; |
$form_tag_start .= ' onsubmit="return file_deletion_check(this);"'; |
|
} elsif ($needs_upload) { |
|
$form_tag_start .= ' onsubmit="return file_overwrite_check(this,'."'$path','$multiresp'".');"'; |
} |
} |
$form_tag_start.='>'."\n"; |
$form_tag_start.='>'."\n"; |
|
|
Line 406 sub setup_rndseed {
|
Line 558 sub setup_rndseed {
|
} |
} |
$env{'form.rndseed'}=$rndseed; |
$env{'form.rndseed'}=$rndseed; |
} |
} |
if (($env{'request.state'} eq "construct") && |
if (($env{'request.state'} eq "construct") && |
($Apache::lonhomework::type eq 'randomizetry')) { |
($Apache::lonhomework::type eq 'randomizetry')) { |
my $tries = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.tries"}; |
my $tries = $Apache::lonhomework::history{"resource.$Apache::inputtags::part.tries"}; |
if ($tries) { |
if ($tries) { |
Line 423 sub setup_rndseed {
|
Line 575 sub setup_rndseed {
|
delete($env{'form.resetdata'}); |
delete($env{'form.resetdata'}); |
delete($env{'form.newrandomization'}); |
delete($env{'form.newrandomization'}); |
} |
} |
if (defined($rndseed) && $rndseed ne int($rndseed)) { |
$rndseed=~s/\,/\:/g; |
$rndseed=join(':',&Apache::lonnet::digest($rndseed)); |
$rndseed=~s/[^\w\d\:\-]//g; |
|
if (defined($rndseed)) { |
|
my ($c1,$c2)=split(/\:/,$rndseed); |
|
unless ($c2) { $c2=0; } |
|
unless (($c1==int($c1)) && ($c2==int($c2))) { |
|
$rndseed=join(':',&Apache::lonnet::digest($rndseed)); |
|
} |
} |
} |
if ($Apache::lonhomework::history{'resource.CODE'}) { |
if ($Apache::lonhomework::history{'resource.CODE'}) { |
$rndseed=&Apache::lonnet::rndseed(); |
$rndseed=&Apache::lonnet::rndseed(); |
Line 484 sub problem_edit_action_button {
|
Line 642 sub problem_edit_action_button {
|
} |
} |
|
|
sub problem_edit_buttons { |
sub problem_edit_buttons { |
my ($mode)=@_; |
my ($mode)=@_; |
# Buttons that do not save |
# Buttons that do not save |
my $result='<div class="LC_edit_problem_discards">'. |
my $result='<div class="LC_edit_problem_discards">'. |
&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); |
$result.=&problem_edit_action_button('subundo','undoxml','u','Undo',1); |
$result.=&problem_edit_action_button('subundo','undoxml','u','Undo',1); |
$result.=&Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1); |
$result.=&Apache::lonhtmlcommon::dragmath_button("LC_editxmltext",1); |
} else { |
} else { |
$result.=&problem_edit_action_button('subeditxml','editxml','x','EditXML',1); |
$result.=&problem_edit_action_button('subeditxml','editxml','x','EditXML',1); |
$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 |
# Buttons that save |
$result.='<div class="LC_edit_problem_saves">'; |
$result.='<div class="LC_edit_problem_saves">'; |
if ($mode eq 'editxml') { |
if ($mode eq 'editxml') { |
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
$result.=&problem_edit_action_button('subsaveedit','saveeditxml','s','Save and EditXML'); |
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
$result.=&problem_edit_action_button('subsaveview','saveviewxml','v','Save and View'); |
} else { |
} else { |
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
$result.=&problem_edit_action_button('subsaveedit','saveedit','s','Save and Edit'); |
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
$result.=&problem_edit_action_button('subsaveview','saveview','v','Save and View'); |
} |
} |
$result.="\n</div>\n"; |
$result.="\n</div>\n"; |
return $result; |
return $result; |
} |
} |
|
|
sub problem_edit_header { |
sub problem_edit_header { |
Line 654 $show_all
|
Line 812 $show_all
|
<div class="LC_edit_problem_header_randomize_row"> |
<div class="LC_edit_problem_header_randomize_row"> |
<input type="submit" name="newrandomization" accesskey="a" value="'.&mt('New Randomization').'" /> |
<input type="submit" name="newrandomization" accesskey="a" value="'.&mt('New Randomization').'" /> |
<input type="submit" name="changerandseed" value="'.&mt('Change Random Seed To:').'" /> |
<input type="submit" name="changerandseed" value="'.&mt('Change Random Seed To:').'" /> |
<input type="text" name="rndseed" size="10" value="'. |
<input type="text" name="rndseed" size="24" value="'. |
$rndseed.'" |
$rndseed.'" |
onchange="javascript:document.lonhomework.changerandseed.click()" />'; |
onchange="javascript:document.lonhomework.changerandseed.click()" />'; |
|
|
Line 793 sub store_aggregates {
|
Line 951 sub store_aggregates {
|
foreach my $part (@parts) { |
foreach my $part (@parts) { |
if ($env{'request.role'} =~/^st/) { |
if ($env{'request.role'} =~/^st/) { |
if ($Apache::lonhomework::results{'resource.'.$part.'.award'} |
if ($Apache::lonhomework::results{'resource.'.$part.'.award'} |
eq 'APPROX_ANS' || |
eq 'APPROX_ANS' || |
$Apache::lonhomework::results{'resource.'.$part.'.award'} |
$Apache::lonhomework::results{'resource.'.$part.'.award'} |
eq 'EXACT_ANS') { |
eq 'EXACT_ANS') { |
$aggregate{$symb."\0".$part."\0correct"} = 1; |
$aggregate{$symb."\0".$part."\0correct"} = 1; |
} |
} |
if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) { |
if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) { |
$aggregate{$symb."\0".$part."\0users"} = 1; |
$aggregate{$symb."\0".$part."\0users"} = 1; |
} else { |
} else { |
my (undef,$last_reset) = &Apache::grades::get_last_resets($symb,$env{'request.course.id'},[$part]); |
my (undef,$last_reset) = &Apache::grades::get_last_resets($symb,$env{'request.course.id'},[$part]); |
if ($last_reset) { |
if ($last_reset) { |
if (&Apache::grades::get_num_tries(\%Apache::lonhomework::history,$last_reset,$part) == 0) { |
if (&Apache::grades::get_num_tries(\%Apache::lonhomework::history,$last_reset,$part) == 0) { |
$aggregate{$symb."\0".$part."\0users"} = 1; |
$aggregate{$symb."\0".$part."\0users"} = 1; |
Line 810 sub store_aggregates {
|
Line 968 sub store_aggregates {
|
} |
} |
$aggregate{$symb."\0".$part."\0attempts"} = 1; |
$aggregate{$symb."\0".$part."\0attempts"} = 1; |
} |
} |
if (($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurvey') || |
if (($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurvey') || |
($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurveycred') || |
($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurveycred') || |
($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'randomizetry')) { |
($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'randomizetry')) { |
if ($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'randomizetry') { |
if ($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'randomizetry') { |
Line 819 sub store_aggregates {
|
Line 977 sub store_aggregates {
|
$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 945 sub reset_problem_globals {
|
Line 1103 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); |
if ($type eq 'Task') { |
|
undef($Apache::inputtags::slot_name); |
|
} |
|
#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 |
# undef($Apache::lonhomework::parsing_a_problem); |
# undef($Apache::lonhomework::parsing_a_problem); |
Line 1060 sub start_problem {
|
Line 1215 sub start_problem {
|
if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval,$target); } |
if ($target eq 'analyze') { my $rndseed=&setup_rndseed($safeeval,$target); } |
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') { |
#handle exam checkout |
|
if ($Apache::lonhomework::type eq 'exam') { |
|
my $token= |
|
$Apache::lonhomework::history{"resource.0.outtoken"}; |
|
if (($env{'form.doescheckout'}) && (!$token)) { |
|
$token=&Apache::lonxml::maketoken(); |
|
$Apache::lonhomework::history{"resource.0.outtoken"}= |
|
$token; |
|
} |
|
$result.=&Apache::lonxml::printtokenheader($target,$token); |
|
} |
|
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]); |
&Apache::lonnet::set_first_access($interval[1]); |
Line 1196 sub start_problem {
|
Line 1340 sub start_problem {
|
$result .= '<input type="hidden" name="grade_'.$field. |
$result .= '<input type="hidden" name="grade_'.$field. |
'" value="'.$env{"form.grade_$field"}.'" />'."\n"; |
'" value="'.$env{"form.grade_$field"}.'" />'."\n"; |
} |
} |
foreach my $field ('questiontype','rndseed') { |
foreach my $field ('trial','questiontype') { |
if ($env{"form.grade_$field"} ne '') { |
if ($env{"form.grade_$field"} ne '') { |
$result .= '<input type="hidden" name="grade_'.$field. |
$result .= '<input type="hidden" name="grade_'.$field. |
'" value="'.$env{"form.grade_$field"}.'" />'."\n"; |
'" value="'.$env{"form.grade_$field"}.'" />'."\n"; |
} |
} |
} |
} |
|
|
} |
} |
|
if ($env{'form.grade_imsexport'}) { |
|
$result = ''; |
|
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
$result .= 'INSERTTEXFRONTMATTERHERE'; |
|
|
Line 1342 sub end_problem {
|
Line 1488 sub end_problem {
|
} |
} |
} elsif ( ($target eq 'web' || $target eq 'tex') && |
} elsif ( ($target eq 'web' || $target eq 'tex') && |
$Apache::inputtags::part eq '0' && |
$Apache::inputtags::part eq '0' && |
$status ne 'UNCHECKEDOUT' && $status ne 'NOT_YET_VIEWED') { |
$status ne 'UNCHECKEDOUT' && $status ne 'NOT_YET_VIEWED' |
|
&& !$env{'form.grade_imsexport'}) { |
# if part is zero, no <part>s existed, so we need show the current |
# if part is zero, no <part>s existed, so we need show the current |
# grading status |
# grading status |
my $gradestatus = &Apache::inputtags::gradestatus($Apache::inputtags::part,$target); |
my $gradestatus = &Apache::inputtags::gradestatus($Apache::inputtags::part,$target); |
Line 1353 sub end_problem {
|
Line 1500 sub end_problem {
|
($target eq 'answer') || ($target eq 'tex') |
($target eq 'answer') || ($target eq 'tex') |
) { |
) { |
if (($target ne 'tex') && |
if (($target ne 'tex') && |
($env{'form.answer_output_mode'} ne 'tex')) { |
($env{'form.answer_output_mode'} ne 'tex') && |
|
(!$env{'form.grade_imsexport'})) { |
$result.="</form>"; |
$result.="</form>"; |
} |
} |
if ($target eq 'web') { |
if ($target eq 'web') { |
Line 1879 sub ordered_show_check {
|
Line 2027 sub ordered_show_check {
|
return $in_order_show; |
return $in_order_show; |
} |
} |
|
|
|
|
sub start_startpartmarker { |
sub start_startpartmarker { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $result=''; |
my $result=''; |
Line 1887 sub start_startpartmarker {
|
Line 2036 sub start_startpartmarker {
|
$result.=&mt('Marker for the start of a part. Place end marker below to wrap in-between tags into a new part.').'</td></tr>'; |
$result.=&mt('Marker for the start of a part. Place end marker below to wrap in-between tags into a new part.').'</td></tr>'; |
$result.=&Apache::edit::end_table(); |
$result.=&Apache::edit::end_table(); |
|
|
} |
} |
return $result; |
return $result; |
} |
} |
|
|
Line 1917 sub end_endpartmarker {
|
Line 2066 sub end_endpartmarker {
|
return @result; |
return @result; |
} |
} |
|
|
|
|
|
|
|
|
|
|
sub start_part { |
sub start_part { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
if (!$Apache::lonxml::metamode) { |
if (!$Apache::lonxml::metamode) { |
Line 2007 sub start_part {
|
Line 2160 sub start_part {
|
} |
} |
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
if ($status eq 'CAN_ANSWER') { |
if ($status eq 'CAN_ANSWER') { |
my $problemstatus = &get_problem_status($Apache::inputtags::part); |
my $problemstatus = &get_problem_status($Apache::inputtags::part); |
my $probrandomize = &Apache::lonnet::EXT("resource.$Apache::inputtags::partlist[0].type"); |
my $probrandomize = &Apache::lonnet::EXT("resource.$Apache::inputtags::partlist[0].type"); |
my $probrandtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::partlist[0].randomizeontries"); |
my $probrandtries = &Apache::lonnet::EXT("resource.$Apache::inputtags::partlist[0].randomizeontries"); |
my $num = scalar(@Apache::inputtags::partlist)-1; |
my $num = scalar(@Apache::inputtags::partlist)-1; |
Line 2025 sub start_part {
|
Line 2178 sub start_part {
|
$result .= &randomizetry_part_header($problemstatus,$reqtries,$num); |
$result .= &randomizetry_part_header($problemstatus,$reqtries,$num); |
} |
} |
} |
} |
$result.='<a name="'.&escape($Apache::inputtags::part).'"></a>'; |
$result.='<a name="'.&escape($Apache::inputtags::part).'" ></a>'; |
} |
} |
} |
} |
} |
} |
Line 2071 sub end_part {
|
Line 2224 sub end_part {
|
!$hidden && $in_order_show) { |
!$hidden && $in_order_show) { |
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, |
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, |
$target); |
$target); |
if ($Apache::lonhomework::type eq 'exam' && $target eq 'tex') { |
if (($Apache::lonhomework::type eq 'exam' && $target eq 'tex') || |
|
($env{'form.grade_imsexport'})) { |
$gradestatus=''; |
$gradestatus=''; |
} |
} |
$result.=$gradestatus; |
$result.=$gradestatus; |
Line 2239 sub end_startouttext {
|
Line 2393 sub end_startouttext {
|
.'</span></td>' |
.'</span></td>' |
.'<td align="left"><span id="math_'.$areaid.'" />' |
.'<td align="left"><span id="math_'.$areaid.'" />' |
.&Apache::lonhtmlcommon::dragmath_button($areaid,1) |
.&Apache::lonhtmlcommon::dragmath_button($areaid,1) |
.'</td>' |
.'<span></td>' |
.'<td>' |
.'<td>' |
.&Apache::edit::insertlist($target,$token) |
.&Apache::edit::insertlist($target,$token) |
.'</td>' |
.'</td>' |