version 1.227, 2011/11/14 03:08:01
|
version 1.237, 2014/09/24 18:14:27
|
Line 53 package Apache::response;
|
Line 53 package Apache::response;
|
use strict; |
use strict; |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use Apache::inputtags(); |
use Apache::lonmaxima(); |
use Apache::lonmaxima(); |
use Apache::lonr(); |
use Apache::lonr(); |
|
|
Line 398 sub end_dataresponse {
|
Line 399 sub end_dataresponse {
|
$Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}='SUBMITTED'; |
$Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}='SUBMITTED'; |
} |
} |
} else { |
} else { |
$result='Not Permitted to change values.' |
$result=&mt('Not Permitted to change values'); |
} |
} |
} |
} |
} |
} |
Line 468 sub end_customresponse {
|
Line 469 sub end_customresponse {
|
$error = $award; |
$error = $award; |
$award = 'ERROR'; |
$award = 'ERROR'; |
} |
} |
|
if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' || |
|
$award eq 'EXACT_ANS')) { |
|
if ($Apache::lonhomework::type eq 'survey') { |
|
$award='SUBMITTED'; |
|
} elsif ($Apache::lonhomework::type eq 'surveycred') { |
|
$award='SUBMITTED_CREDIT'; |
|
} elsif ($Apache::lonhomework::type eq 'anonsurvey') { |
|
$award='ANONYMOUS'; |
|
} elsif ($Apache::lonhomework::type eq 'anonsurveycred') { |
|
$award='ANONYMOUS_CREDIT'; |
|
} |
|
} |
&Apache::response::handle_previous(\%previous,$award); |
&Apache::response::handle_previous(\%previous,$award); |
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= |
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= |
$award; |
$award; |
Line 490 sub end_customresponse {
|
Line 503 sub end_customresponse {
|
$result .= &Apache::response::answer_footer('customresponse'); |
$result .= &Apache::response::answer_footer('customresponse'); |
} |
} |
if ($target eq 'web') { |
if ($target eq 'web') { |
&setup_prior_tries_hash(\&format_prior_response_math); |
&setup_prior_tries_hash(\&format_prior_response_custom); |
} |
} |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || |
$target eq 'tex' || $target eq 'analyze') { |
$target eq 'tex' || $target eq 'analyze') { |
Line 511 sub end_customresponse {
|
Line 524 sub end_customresponse {
|
|
|
sub format_prior_response_custom { |
sub format_prior_response_custom { |
my ($mode,$answer) =@_; |
my ($mode,$answer) =@_; |
|
if (ref($answer) eq 'ARRAY') { |
|
$answer = '('.join(', ', @{ $answer }).')'; |
|
} |
return '<span class="LC_prior_custom">'. |
return '<span class="LC_prior_custom">'. |
&HTML::Entities::encode($answer,'"<>&').'</span>'; |
&HTML::Entities::encode($answer,'"<>&').'</span>'; |
} |
} |
Line 562 sub start_mathresponse {
|
Line 578 sub start_mathresponse {
|
|
|
sub edit_mathresponse_button { |
sub edit_mathresponse_button { |
my ($id,$field)=@_; |
my ($id,$field)=@_; |
my $button=&mt('Edit Answer'); |
my $btype = $env{'browser.type'}; |
# my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor'); |
my $bversion = $env{'browser.version'}; |
my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'}; |
if (($btype eq 'explorer' && $bversion < 9) || ($btype eq 'safari' && $bversion < 3) || |
return(<<ENDFORMULABUTTON); |
($btype eq 'mozilla' && $bversion < 3)) { |
|
# DragMath applet |
|
my $button=&mt('Edit Answer'); |
|
# my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor'); |
|
my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'}; |
|
return(<<ENDFORMULABUTTON); |
<script type="text/javascript" language="JavaScript"> |
<script type="text/javascript" language="JavaScript"> |
function edit_${id}_${field} (textarea) { |
function edit_${id}_${field} (textarea) { |
thenumber = textarea; |
thenumber = textarea; |
thedata = document.forms['lonhomework'].elements[textarea].value; |
thedata = document.forms['lonhomework'].elements[textarea].value; |
newwin = window.open("/adm/dragmath/applet/MaximaPopup.html","","width=565,height=400,resizable"); |
newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable"); |
} |
} |
</script> |
</script> |
<a href="javascript:edit_${id}_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a> |
<a href="javascript:edit_${id}_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a> |
ENDFORMULABUTTON |
ENDFORMULABUTTON |
|
|
|
} else { |
|
# LON-CAPA math equation editor |
|
return(<<EQ_EDITOR_SCRIPT); |
|
<script type="text/javascript"> |
|
var field = document.getElementById('${field}'); |
|
field.className += ' math'; // note the space |
|
var LCMATH_started; |
|
if (typeof LCMATH_started === 'undefined') { |
|
LCMATH_started = true; |
|
var script = document.createElement("script"); |
|
script.type = "text/javascript"; |
|
script.src = "/adm/LC_math_editor/LC_math_editor.min.js"; |
|
document.body.appendChild(script); |
|
window.addEventListener('load', function(e) { |
|
LCMATH.initEditors(); |
|
}, false); |
|
} |
|
</script> |
|
EQ_EDITOR_SCRIPT |
|
} |
} |
} |
|
|
sub end_mathresponse { |
sub end_mathresponse { |
Line 610 sub end_mathresponse {
|
Line 652 sub end_mathresponse {
|
$error = $award; |
$error = $award; |
$award = 'ERROR'; |
$award = 'ERROR'; |
} |
} |
|
if (($award eq 'INCORRECT' || $award eq 'APPROX_ANS' || |
|
$award eq 'EXACT_ANS')) { |
|
if ($Apache::lonhomework::type eq 'survey') { |
|
$award='SUBMITTED'; |
|
} elsif ($Apache::lonhomework::type eq 'surveycred') { |
|
$award='SUBMITTED_CREDIT'; |
|
} elsif ($Apache::lonhomework::type eq 'anonsurvey') { |
|
$award='ANONYMOUS'; |
|
} elsif ($Apache::lonhomework::type eq 'anonsurveycred') { |
|
$award='ANONYMOUS_CREDIT'; |
|
} |
|
} |
&Apache::response::handle_previous(\%previous,$award); |
&Apache::response::handle_previous(\%previous,$award); |
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= |
$Apache::lonhomework::results{"resource.$part.$id.awarddetail"}= |
$award; |
$award; |
Line 835 sub answer_header {
|
Line 889 sub answer_header {
|
if ($Apache::lonhomework::type eq 'exam') { |
if ($Apache::lonhomework::type eq 'exam') { |
$bit = ($Apache::lonxml::counter+$increment).') '; |
$bit = ($Apache::lonxml::counter+$increment).') '; |
} else { |
} else { |
$bit .= ' Answer for Part: \verb|'. |
$bit .= ' '.&mt('Answer for Part: [_1]', |
$Apache::inputtags::part.'| '; |
'\verb|'.$Apache::inputtags::part.'|').' '; |
} |
} |
push(@answer_bits,$bit); |
push(@answer_bits,$bit); |
} else { |
} else { |
Line 1131 sub scored_response {
|
Line 1185 sub scored_response {
|
sub whichorder { |
sub whichorder { |
my ($max,$randomize,$showall,$hash,$rndseed)=@_; |
my ($max,$randomize,$showall,$hash,$rndseed)=@_; |
#&Apache::lonxml::debug("man $max randomize $randomize"); |
#&Apache::lonxml::debug("man $max randomize $randomize"); |
if (!defined(@{ $$hash{'names'} })) { return; } |
my @names; |
my @names = @{ $$hash{'names'} }; |
if (ref($hash->{'names'}) eq 'ARRAY') { |
|
@names = @{$hash->{'names'}}; |
|
} |
|
return if (!@names); |
my @whichopt =(); |
my @whichopt =(); |
my (%top,@toplist,%bottom,@bottomlist); |
my (%top,@toplist,%bottom,@bottomlist); |
if (!($showall || ($randomize eq 'no'))) { |
if (!($showall || ($randomize eq 'no'))) { |
Line 1181 sub whichorder {
|
Line 1238 sub whichorder {
|
|
|
sub show_answer { |
sub show_answer { |
my $part = $Apache::inputtags::part; |
my $part = $Apache::inputtags::part; |
my $award = $Apache::lonhomework::history{"resource.$part.awarded"}; |
my $award = $Apache::lonhomework::history{"resource.$part.solved"}; |
my $status = $Apache::inputtags::status[-1]; |
my $status = $Apache::inputtags::status[-1]; |
return ( ($award ==1 |
my $canshow = 0; |
&& &Apache::lonhomework::show_problem_status()) |
if ($award =~ /^correct/) { |
|| $status eq "SHOW_ANSWER"); |
if (($Apache::lonhomework::history{"resource.$part.awarded"} >= 1) || |
|
(&Apache::lonnet::EXT("resource.$part.retrypartial") !~/^1|on|yes$/)) { |
|
$canshow = 1; |
|
} |
|
} |
|
return (($canshow && &Apache::lonhomework::show_problem_status()) |
|
|| $status eq "SHOW_ANSWER"); |
} |
} |
|
|
sub analyze_store_foilgroup { |
sub analyze_store_foilgroup { |
Line 1213 sub check_if_computed {
|
Line 1276 sub check_if_computed {
|
|
|
sub pick_foil_for_concept { |
sub pick_foil_for_concept { |
my ($target,$attrs,$hinthash,$parstack,$safeeval)=@_; |
my ($target,$attrs,$hinthash,$parstack,$safeeval)=@_; |
if (not defined(@{ $Apache::response::conceptgroup{'names'} })) { return; } |
my @names; |
my @names = @{ $Apache::response::conceptgroup{'names'} }; |
if (ref($Apache::response::conceptgroup{'names'}) eq 'ARRAY') { |
|
@names = @{ $Apache::response::conceptgroup{'names'} }; |
|
} |
|
return if (!@names); |
my $pick=int(&Math::Random::random_uniform() * ($#names+1)); |
my $pick=int(&Math::Random::random_uniform() * ($#names+1)); |
my $name=$names[$pick]; |
my $name=$names[$pick]; |
push @{ $Apache::response::foilgroup{'names'} }, $name; |
push @{ $Apache::response::foilgroup{'names'} }, $name; |
Line 1339 sub check_status {
|
Line 1405 sub check_status {
|
if (!defined($id)) { $id=$Apache::inputtags::part; } |
if (!defined($id)) { $id=$Apache::inputtags::part; } |
my $curtime=&Apache::lonnet::EXT('system.time'); |
my $curtime=&Apache::lonnet::EXT('system.time'); |
my $opendate=&Apache::lonnet::EXT("resource.$id.opendate"); |
my $opendate=&Apache::lonnet::EXT("resource.$id.opendate"); |
my $duedate=&Apache::lonnet::EXT("resource.$id.duedate"); |
my $duedate=&Apache::lonhomework::due_date($id); |
my $answerdate=&Apache::lonnet::EXT("resource.$id.answerdate"); |
my $answerdate=&Apache::lonnet::EXT("resource.$id.answerdate"); |
if ( $opendate && $curtime > $opendate && |
if ( $opendate && $curtime > $opendate && |
$duedate && $curtime > $duedate && |
$duedate && $curtime > $duedate && |