version 1.242, 2004/02/16 20:30:34
|
version 1.249, 2004/05/20 23:11:12
|
Line 40 use Apache::lonlocal;
|
Line 40 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 120 sub page_start {
|
Line 119 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 152 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'}; |
Line 172 sub setup_rndseed {
|
Line 173 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); |
Line 183 sub setup_rndseed {
|
Line 187 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 213 sub option {
|
Line 217 sub option {
|
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 404 sub start_problem {
|
Line 408 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); |
} |
} |
Line 430 sub start_problem {
|
Line 434 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 481 sub start_problem {
|
Line 486 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 { |
} else { |
$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; |
Line 588 sub end_problem {
|
Line 593 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') { |
Line 656 sub end_problem {
|
Line 665 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 1085 sub end_part {
|
Line 1097 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 1173 sub end_solved {
|
Line 1189 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=(''.''); |