version 1.234, 2004/02/12 19:07:12
|
version 1.256, 2004/06/12 01:09:30
|
Line 25
|
Line 25
|
# |
# |
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# 2/19 Guy |
### |
# 6/26/2001 fixed extra web display at end of <web></web> tags |
|
# 8/17,8/18,8/20 Gerd Kortemeyer |
|
|
|
|
|
package Apache::structuretags; |
package Apache::structuretags; |
Line 40 use Apache::lonlocal;
|
Line 38 use Apache::lonlocal;
|
use Apache::lonxml; |
use Apache::lonxml; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext', |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag')); |
'simpleeditbutton','definetag')); |
|
} |
} |
|
|
sub start_web { |
sub start_web { |
Line 85 sub page_start {
|
Line 82 sub page_start {
|
if (!defined($found{'html'})) { |
if (!defined($found{'html'})) { |
$result=&Apache::londefdef::start_html($target,$token,$tagstack, |
$result=&Apache::londefdef::start_html($target,$token,$tagstack, |
$parstack,$parser,$safeeval); |
$parstack,$parser,$safeeval); |
$head_tag_start='<head>'.&Apache::lonmenu::registerurl(undef,$target); |
$head_tag_start='<head>'.&Apache::lonmenu::registerurl(undef,$target). |
|
&Apache::lonhtmlcommon::htmlareaheaders(); |
} |
} |
my $body_tag_start; |
my $body_tag_start; |
if (!defined($found{'body'})) { |
if (!defined($found{'body'})) { |
Line 120 sub page_start {
|
Line 118 sub page_start {
|
$body_tag_start.=$help; |
$body_tag_start.=$help; |
} |
} |
} |
} |
|
$body_tag_start.=&Apache::lonxml::message_location(); |
} |
} |
my $form_tag_start; |
my $form_tag_start; |
if (!defined($found{'form'})) { |
if (!defined($found{'form'})) { |
Line 152 sub setup_rndseed {
|
Line 151 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" || $symb eq '' || |
|
$Apache::lonhomework::history{'resource.CODE'}) { |
$rndseed=$ENV{'form.rndseed'}; |
$rndseed=$ENV{'form.rndseed'}; |
if (!$rndseed) { |
if (!$rndseed) { |
$rndseed=$Apache::lonhomework::history{'rndseed'}; |
$rndseed=$Apache::lonhomework::history{'rndseed'}; |
if (!$rndseed) { |
if (!$rndseed) { |
$rndseed=time; |
$rndseed=time; |
$ENV{'form.rndseed'}=$rndseed; |
|
} |
} |
|
$ENV{'form.rndseed'}=$rndseed; |
} |
} |
if ($ENV{'form.resetdata'} eq &mt('New Problem Variation') || |
if ($ENV{'form.resetdata'} eq &mt('New Problem Variation') || |
$ENV{'form.newrandomization'} eq &mt('New Randomization')) { |
$ENV{'form.newrandomization'} eq &mt('New Randomization')) { |
Line 172 sub setup_rndseed {
|
Line 172 sub setup_rndseed {
|
if (defined($rndseed) && $rndseed ne int($rndseed)) { |
if (defined($rndseed) && $rndseed ne int($rndseed)) { |
$rndseed=join(',',&Math::Random::random_seed_from_phrase($rndseed)); |
$rndseed=join(',',&Math::Random::random_seed_from_phrase($rndseed)); |
} |
} |
|
if ($Apache::lonhomework::history{'resource.CODE'}) { |
|
$rndseed=&Apache::lonnet::rndseed(); |
|
} |
if ($safeeval) { |
if ($safeeval) { |
&Apache::lonxml::debug("Setting rndseed to $rndseed"); |
&Apache::lonxml::debug("Setting rndseed to $rndseed"); |
&Apache::run::run('$external::randomseed='.$rndseed.';',$safeeval); |
&Apache::run::run('$external::randomseed="'.$rndseed.'";',$safeeval); |
} |
} |
} |
} |
return $rndseed; |
return $rndseed; |
Line 183 sub setup_rndseed {
|
Line 186 sub setup_rndseed {
|
sub problem_edit_header { |
sub problem_edit_header { |
return '<input type="hidden" name="submitted" value="edit" /> |
return '<input type="hidden" name="submitted" value="edit" /> |
<input type="hidden" name="problemmode" value="'.&mt('Edit').'" /> |
<input type="hidden" name="problemmode" value="'.&mt('Edit').'" /> |
<input type="submit" name="problemmode" value="'.&mt('Discard Edits and View').'" /> |
<input type="submit" name="problemmode" accesskey="d" value="'.&mt('Discard Edits and View').'" /> |
<input type="submit" name="problemmode" value="'.&mt('EditXML').'" /> |
<input type="submit" name="problemmode" accesskey="x" value="'.&mt('EditXML').'" /> |
<input type="submit" name="Undo" value="'.&mt('undo').'" /> <hr /> |
<input type="submit" name="Undo" accesskey="u" value="'.&mt('undo').'" /> <hr /> |
<input type="submit" name="submit" value="'.&mt('Submit Changes and Edit').'" /> |
<input type="submit" name="submit" accesskey="s" value="'.&mt('Submit Changes and Edit').'" /> |
<input type="submit" name="submit" value="'.&mt('Submit Changes and View').'" /><table><tr><td>'. |
<input type="submit" name="submit" accesskey="v" value="'.&mt('Submit Changes and View').'" /><table><tr><td>'. |
&Apache::loncommon::help_open_topic('Problem_Editor_XML_Index', |
&Apache::loncommon::help_open_topic('Problem_Editor_XML_Index', |
'Problem Editing Help').'</td><td>'. |
'Problem Editing Help').'</td><td>'. |
&Apache::loncommon::help_open_faq(5). |
&Apache::loncommon::help_open_faq(5). |
Line 197 sub problem_edit_header {
|
Line 200 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). |
|
"\n</form>\n</body>\n</html>"; |
|
} |
|
|
|
sub option { |
|
my ($value,$name) = @_; |
|
my $result ="<option value='".$value."' "; |
|
if ($ENV{'form.'.$name} eq $value) { |
|
$result.=" selected='on' "; |
|
} |
|
$result.='>'; |
|
return $result; |
} |
} |
|
|
sub problem_web_to_edit_header { |
sub problem_web_to_edit_header { |
my ($rndseed)=@_; |
my ($rndseed)=@_; |
my $result.='<input type="hidden" name="problemmode" value="'.&mt('View').'" /> |
my $result.='<input type="hidden" name="problemmode" value="'.&mt('View').'" /> |
<input type="submit" name="problemmode" value="'.&mt('Edit').'" /> |
<input type="submit" name="problemmode" accesskey="e" value="'.&mt('Edit').'" /> |
<input type="submit" name="problemmode" value="'.&mt('EditXML').'" /> |
<input type="submit" name="problemmode" accesskey="x" value="'.&mt('EditXML').'" /> |
<input type="submit" name="newrandomization" value="'.&mt('New Randomization').'" /> |
<input type="submit" name="newrandomization" accesskey="a" value="'.&mt('New Randomization').'" /> |
<input type="submit" name="resetdata" value="'.&mt('Reset Submissions').'" /> |
<input type="submit" name="resetdata" accesskey="r" value="'.&mt('Reset Submissions').'" /> |
<nobr><input type="submit" name="changerandseed" value="'.&mt('Change Random Seed To:').'" /> |
<nobr><input type="submit" name="changerandseed" value="'.&mt('Change Random Seed To:').'" /> |
<input type="text" name="rndseed" width="10" value="'. |
<input type="text" name="rndseed" width="10" value="'. |
$rndseed.'" |
$rndseed.'" |
Line 216 sub problem_web_to_edit_header {
|
Line 231 sub problem_web_to_edit_header {
|
$result.= ' />'.&mt(' Show All Foils'). |
$result.= ' />'.&mt(' Show All Foils'). |
&Apache::loncommon::help_open_topic('Problem_Editor_Testing_Area','Testing Problems'). |
&Apache::loncommon::help_open_topic('Problem_Editor_Testing_Area','Testing Problems'). |
'<hr />'; |
'<hr />'; |
|
$result.=" |
|
<nobr> |
|
Problem Status: |
|
<select name='problemstate'> |
|
<option name=''></option> |
|
".&option('CLOSED' ,'problemstate').&mt("Closed")."</option> |
|
".&option('CAN_ANSWER' ,'problemstate').&mt("Answerable")."</option> |
|
".&option('CANNOT_ANSWER_tries' ,'problemstate').&mt("Open with full tries")."</option> |
|
".&option('CANNOT_ANSWER_correct','problemstate').&mt("Open and correct")."</option> |
|
".&option('SHOW_ANSWER' ,'problemstate').&mt("Show Answer")."</option> |
|
</select> |
|
</nobr> |
|
<nobr> |
|
Problem Type: |
|
<select name='problemtype'> |
|
<option name=''></option> |
|
".&option('exam' ,'problemtype').&mt("Exam Problem")."</option> |
|
".&option('problem','problemtype').&mt("Homework problem")."</option> |
|
".&option('survey' ,'problemtype').&mt("Survey Question")."</option> |
|
</select> |
|
</nobr> |
|
<nobr> |
|
Feedback Mode: |
|
<select name='problemstatus'> |
|
<option value=''></option> |
|
".&option('yes','problemstatus').&mt("Show Feedback")."</option> |
|
".&option('no', 'problemstatus').&mt("Don't Show Feedback")."</option> |
|
</select> |
|
</nobr> |
|
<input type='submit' name='changeproblemmode' value='".&mt("Change")."' /> |
|
<hr />"; |
my $numtoanalyze=$ENV{'form.numtoanalyze'}; |
my $numtoanalyze=$ENV{'form.numtoanalyze'}; |
if (!$numtoanalyze) { $numtoanalyze=20; } |
if (!$numtoanalyze) { $numtoanalyze=20; } |
$result.= '<input type="submit" name="problemmode" value='. |
$result.= '<input type="submit" name="problemmode" value='. |
Line 289 sub checkout_msg {
|
Line 335 sub checkout_msg {
|
ENDCHECKOUT |
ENDCHECKOUT |
} |
} |
|
|
|
sub firstaccess_msg { |
|
my ($time,$symb)=@_; |
|
my ($map)=&Apache::lonnet::decode_symb($symb); |
|
my $foldertitle=&Apache::lonnet::gettitle($map); |
|
&Apache::lonxml::debug("map is $map title is $foldertitle"); |
|
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> |
|
<form name="markaccess" method="POST" action="$ENV{'request.uri'}"> |
|
<input type="hidden" name="markaccess" value="yes" /> |
|
<input type="button" name="accessbutton" value="Show Resource" onClick="javascript:if (confirm('Start Timer?')) { document.markaccess.submit(); }" /> |
|
</form> |
|
ENDCHECKOUT |
|
} |
|
|
sub init_problem_globals { |
sub init_problem_globals { |
my ($type)=@_; |
my ($type)=@_; |
#initialize globals |
#initialize globals |
if ($type eq 'problem') { |
if ($type eq 'problem') { |
$Apache::inputtags::part='0'; |
$Apache::inputtags::part='0'; |
@Apache::inputtags::partlist=('0'); |
@Apache::inputtags::partlist=('0'); |
$Apache::lonhomework::problemstatus= |
|
&Apache::lonnet::EXT('resource.0.problemstatus'); |
$Apache::lonhomework::problemstatus=&get_problem_status('0') |
} else { |
} else { |
$Apache::inputtags::part=''; |
$Apache::inputtags::part=''; |
@Apache::inputtags::partlist=(); |
@Apache::inputtags::partlist=(); |
Line 326 sub reset_problem_globals {
|
Line 386 sub reset_problem_globals {
|
undef($Apache::lonhomework::name); |
undef($Apache::lonhomework::name); |
} |
} |
|
|
|
sub set_problem_state { |
|
my ($part)=@_; |
|
if ($ENV{'form.problemstate'} eq 'CANNOT_ANSWER_correct') { |
|
$Apache::lonhomework::history{"resource.$part.solved"}= |
|
'correct_by_student'; |
|
} |
|
} |
|
|
|
sub get_problem_status { |
|
my ($part)=@_; |
|
my $problem_status=&Apache::lonnet::EXT("resource.$part.problemstatus"); |
|
&Apache::lonxml::debug("problem status for $part is $problem_status"); |
|
&Apache::lonxml::debug("env probstat is ".$ENV{'form.problemstatus'}); |
|
if ($ENV{'request.state'} eq 'construct' && |
|
defined($ENV{'form.problemstatus'})) { |
|
$problem_status=$ENV{'form.problemstatus'}; |
|
} |
|
return $problem_status; |
|
} |
|
|
sub start_problem { |
sub start_problem { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
|
Line 343 sub start_problem {
|
Line 423 sub start_problem {
|
$Apache::lonhomework::scantronmode=1; |
$Apache::lonhomework::scantronmode=1; |
} |
} |
|
|
|
&initialize_storage(); |
if ($target ne 'analyze') { |
if ($target ne 'analyze') { |
&initialize_storage(); |
|
if ($target eq 'web') { |
if ($target eq 'web') { |
&Apache::lonhomework::showhash(%Apache::lonhomework::history); |
&Apache::lonhomework::showhash(%Apache::lonhomework::history); |
} |
} |
|
if ($ENV{'request.state'} eq 'construct') { &set_problem_state('0'); } |
$Apache::lonhomework::type=&Apache::lonnet::EXT('resource.0.type'); |
$Apache::lonhomework::type=&Apache::lonnet::EXT('resource.0.type'); |
&Apache::lonxml::debug("Found this to be of type :$Apache::lonhomework::type:"); |
if (($ENV{'request.state'} eq 'construct') && |
|
defined($ENV{'form.problemtype'})) { |
|
$Apache::lonhomework::type=$ENV{'form.problemtype'}; |
|
} |
|
&Apache::lonxml::debug("Found this to be of type :$Apache::ltonhomework::type:"); |
} |
} |
if ($Apache::lonhomework::type eq '' ) { |
if ($Apache::lonhomework::type eq '' ) { |
my $uri=$ENV{'request.uri'}; |
my $uri=$ENV{'request.uri'}; |
Line 364 sub start_problem {
|
Line 449 sub start_problem {
|
|
|
#added vars to the scripting enviroment |
#added vars to the scripting enviroment |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
|
$expression.='$external::type=\''.$Apache::lonhomework::type.'\';'; |
&Apache::run::run($expression,$safeeval); |
&Apache::run::run($expression,$safeeval); |
my $status; |
my $status; |
my $accessmsg; |
my $accessmsg; |
Line 387 sub start_problem {
|
Line 473 sub start_problem {
|
} |
} |
$body_tag_start.=&Apache::lonxml::printtokenheader($target,$token); |
$body_tag_start.=&Apache::lonxml::printtokenheader($target,$token); |
} |
} |
|
if ($ENV{'form.markaccess'}) { |
|
&Apache::lonnet::set_first_access('map'); |
|
} |
#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(); |
Line 407 sub start_problem {
|
Line 495 sub start_problem {
|
&Apache::lonxml::debug("Got $status"); |
&Apache::lonxml::debug("Got $status"); |
if (( $status eq 'CLOSED' ) || |
if (( $status eq 'CLOSED' ) || |
( $status eq 'UNCHECKEDOUT') || |
( $status eq 'UNCHECKEDOUT') || |
|
( $status eq 'NOT_YET_VIEWED') || |
( $status eq 'BANNED') || |
( $status eq 'BANNED') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'INVALID_ACCESS')) { |
( $status eq 'INVALID_ACCESS')) { |
Line 415 sub start_problem {
|
Line 504 sub start_problem {
|
$result.= $head_tag_start.'</head>'; |
$result.= $head_tag_start.'</head>'; |
my $msg=$body_tag_start; |
my $msg=$body_tag_start; |
if ($status eq 'UNAVAILABLE') { |
if ($status eq 'UNAVAILABLE') { |
$result.='<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>'; |
} else { |
} elsif ($status ne 'NOT_YET_VIEWED') { |
$result.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
$msg.='<h1>'.&mt('Not open to be viewed').'</h1>'; |
} |
} |
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') { |
|
$msg.=&firstaccess_msg($accessmsg,$symb); |
} |
} |
$result.=$msg.'<br />'; |
$result.=$msg.'<br />'; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
Line 522 sub end_problem {
|
Line 613 sub end_problem {
|
my $status=$Apache::inputtags::status['-1']; |
my $status=$Apache::inputtags::status['-1']; |
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 'tex') { |
if ( $target eq 'grade' && $Apache::inputtags::part eq '0' && |
if ( $target eq 'grade' && $Apache::inputtags::part eq '0') { |
($status eq 'CAN_ANSWER' || $Apache::lonhomework::scantronmode)) { |
|
# if part is zero, no <part>s existed, so we need to the grading |
# if part is zero, no <part>s existed, so we need to the grading |
&Apache::inputtags::grade; |
if ($status eq 'CAN_ANSWER' ||$Apache::lonhomework::scantronmode) { |
|
&Apache::inputtags::grade; |
|
} else { |
|
# move any submission data to .hidden |
|
&Apache::inputtags::hidealldata($Apache::inputtags::part); |
|
} |
} 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 'UNCHECKEDOUT' && $status ne 'NOT_YET_VIEWED') { |
# 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 540 sub end_problem {
|
Line 635 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></body>\n"; |
$result.="</form>"; |
|
$result.=&Apache::lonhtmlcommon::htmlareaselectactive(@Apache::lonxml::htmlareafields); |
|
$result.="</body>\n"; |
} |
} |
if ($target eq 'web') { |
if ($target eq 'web') { |
$result.=&Apache::lonxml::xmlend(); |
$result.=&Apache::lonxml::xmlend(); |
Line 590 sub end_problem {
|
Line 687 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,$head_tag_start,$body_tag_start,$form_tag_start); |
if ($$tagstack[0] eq 'library') { &init_problem_globals('library') }; |
if ($$tagstack[0] eq 'library') { |
|
&init_problem_globals('library'); |
|
$Apache::lonhomework::type='problem'; |
|
} |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
($result,$head_tag_start,$body_tag_start,$form_tag_start)= |
($result,$head_tag_start,$body_tag_start,$form_tag_start)= |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
&page_start($target,$token,$tagstack,$parstack,$parser,$safeeval); |
Line 905 sub shuffle {
|
Line 1005 sub shuffle {
|
my $a=shift; |
my $a=shift; |
my $i; |
my $i; |
if (defined(@$a)) { |
if (defined(@$a)) { |
&Apache::response::setrandomnumber(); |
&Apache::response::pushrandomnumber(); |
for($i=@$a;--$i;) { |
for($i=@$a;--$i;) { |
my $j=int(&Math::Random::random_uniform() * ($i+1)); |
my $j=int(&Math::Random::random_uniform() * ($i+1)); |
next if $i == $j; |
next if $i == $j; |
@$a[$i,$j] = @$a[$j,$i]; |
@$a[$i,$j] = @$a[$j,$i]; |
} |
} |
|
&Apache::response::poprandomnumber(); |
} |
} |
} |
} |
|
|
Line 934 sub start_part {
|
Line 1035 sub start_part {
|
@Apache::inputtags::response=(); |
@Apache::inputtags::response=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous=(); |
@Apache::inputtags::previous_version=(); |
@Apache::inputtags::previous_version=(); |
$Apache::lonhomework::problemstatus= |
$Apache::lonhomework::problemstatus=&get_problem_status($id); |
&Apache::lonnet::EXT("resource.$id.problemstatus"); |
|
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part); |
my $hidden=&Apache::loncommon::check_if_partid_hidden($Apache::inputtags::part); |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
my $expression='$external::part=\''.$Apache::inputtags::part.'\';'; |
&Apache::run::run($expression,$safeeval); |
&Apache::run::run($expression,$safeeval); |
Line 954 sub start_part {
|
Line 1054 sub start_part {
|
my $expression='$external::datestatus="'.$status.'";'; |
my $expression='$external::datestatus="'.$status.'";'; |
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$id.solved"}.'";'; |
$expression.='$external::gradestatus="'.$Apache::lonhomework::history{"resource.$id.solved"}.'";'; |
&Apache::run::run($expression,$safeeval); |
&Apache::run::run($expression,$safeeval); |
|
if ($ENV{'request.state'} eq 'construct') { |
|
&set_problem_state($Apache::inputtags::part); |
|
} |
if (( $status eq 'CLOSED' ) || |
if (( $status eq 'CLOSED' ) || |
( $status eq 'UNCHECKEDOUT') || |
( $status eq 'UNCHECKEDOUT') || |
|
( $status eq 'NOT_YET_VIEWED') || |
( $status eq 'BANNED') || |
( $status eq 'BANNED') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'UNAVAILABLE') || |
( $status eq 'INVALID_ACCESS')) { |
( $status eq 'INVALID_ACCESS')) { |
Line 1017 sub end_part {
|
Line 1121 sub end_part {
|
my $result=''; |
my $result=''; |
if ( $target eq 'meta' ) { |
if ( $target eq 'meta' ) { |
$result=''; |
$result=''; |
} elsif ($target eq 'grade' && |
} elsif ($target eq 'grade') { |
($status eq 'CAN_ANSWER' || $Apache::lonhomework::scantronmode) && |
if (($status eq 'CAN_ANSWER' || $Apache::lonhomework::scantronmode) && |
!$hidden) { |
!$hidden) { |
$result=&Apache::inputtags::grade; |
$result=&Apache::inputtags::grade; |
|
} else { |
|
# move any submission data to .hidden |
|
&Apache::inputtags::hidealldata($Apache::inputtags::part); |
|
} |
} elsif (($target eq 'web' || $target eq 'tex') && !$hidden ) { |
} elsif (($target eq 'web' || $target eq 'tex') && !$hidden ) { |
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, |
my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, |
$target); |
$target); |
Line 1039 sub end_part {
|
Line 1147 sub end_part {
|
sub start_preduedate { |
sub start_preduedate { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { |
|
&Apache::lonxml::debug("State in preduedate is ". $Apache::inputtags::status['-1']); |
if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && |
if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && |
$Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER' && |
$Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') { |
$Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { |
&Apache::lonxml::debug("Wha? ". ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER')); |
&Apache::lonxml::get_all_text("/preduedate",$parser); |
&Apache::lonxml::get_all_text("/preduedate",$parser); |
} |
} |
} |
} |
Line 1074 sub start_notsolved {
|
Line 1183 sub start_notsolved {
|
$target eq 'tex') { |
$target eq 'tex') { |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
&Apache::lonxml::debug("not solved has :$gradestatus:"); |
&Apache::lonxml::debug("not solved has :$gradestatus:"); |
if ($gradestatus =~ /^correct/) { |
if ($gradestatus =~ /^correct/ && |
|
&Apache::response::show_answer()) { |
&Apache::lonxml::debug("skipping"); |
&Apache::lonxml::debug("skipping"); |
&Apache::lonxml::get_all_text("/notsolved",$parser); |
&Apache::lonxml::get_all_text("/notsolved",$parser); |
} |
} |
Line 1091 sub start_solved {
|
Line 1201 sub start_solved {
|
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') { |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
my $gradestatus=$Apache::lonhomework::history{"resource.$Apache::inputtags::part.solved"}; |
if ($gradestatus !~ /^correct/) { |
if ($gradestatus !~ /^correct/ || |
|
!&Apache::response::show_answer()) { |
&Apache::lonxml::get_all_text("/solved",$parser); |
&Apache::lonxml::get_all_text("/solved",$parser); |
} |
} |
} |
} |
Line 1102 sub end_solved {
|
Line 1213 sub end_solved {
|
return ''; |
return ''; |
} |
} |
|
|
|
sub start_problemtype { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
my $result; |
|
if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || |
|
$target eq 'tex' || $target eq 'analyze') { |
|
my $mode=lc(&Apache::lonxml::get_param('mode',$parstack,$safeeval)); |
|
if (!defined($mode)) { $mode='show'; } |
|
my $for=&Apache::lonxml::get_param('for',$parstack,$safeeval); |
|
my $found=0; |
|
foreach my $type (split(',',$for)) { |
|
if ($Apache::lonhomework::type eq lc($type)) { $found=1; } |
|
} |
|
if ($mode eq 'show' && !$found) { |
|
&Apache::lonxml::get_all_text("/problemtype",$parser); |
|
} |
|
if ($mode eq 'hide' && $found) { |
|
&Apache::lonxml::get_all_text("/problemtype",$parser); |
|
} |
|
} elsif ($target eq 'edit') { |
|
$result .=&Apache::edit::tag_start($target,$token); |
|
$result.=&Apache::edit::select_arg('Mode:','mode', |
|
[['show','Show'], |
|
['hide','Hide']] |
|
,$token); |
|
$result .=&Apache::edit::checked_arg('When used as type(s):','for', |
|
[ ['exam','Exam/Quiz Problem'], |
|
['survey','Survey'], |
|
['problem','Homework Problem'] ] |
|
,$token); |
|
$result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'mode','for'); |
|
if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } |
|
} |
|
return $result; |
|
} |
|
|
|
sub end_problemtype { |
|
return ''; |
|
} |
|
|
sub start_startouttext { |
sub start_startouttext { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my @result=(''.''); |
my @result=(''.''); |
Line 1125 sub end_startouttext {
|
Line 1278 sub end_startouttext {
|
&Apache::edit::end_row(). |
&Apache::edit::end_row(). |
&Apache::edit::start_spanning_row()."\n" |
&Apache::edit::start_spanning_row()."\n" |
. &Apache::loncommon::helpLatexCheatsheet () . |
. &Apache::loncommon::helpLatexCheatsheet () . |
&Apache::edit::editfield($token->[1],$text,"",80,4); |
&Apache::edit::editfield($token->[1],$text,"",80,8,1); |
} |
} |
if ($target eq 'modified') { |
if ($target eq 'modified') { |
$result='<startouttext />'.&Apache::edit::modifiedfield("endouttext",$parser); |
$result='<startouttext />'.&Apache::edit::modifiedfield("endouttext",$parser); |