--- loncom/homework/structuretags.pm 2003/05/14 18:02:56 1.174 +++ loncom/homework/structuretags.pm 2003/06/07 04:08:43 1.181 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.174 2003/05/14 18:02:56 sakharuk Exp $ +# $Id: structuretags.pm,v 1.181 2003/06/07 04:08:43 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -146,9 +146,16 @@ sub setup_rndseed { $ENV{'form.rndseed'}=$rndseed; } } - if ($ENV{'form.resetdata'} eq 'New Problem Variation') { + if ($ENV{'form.resetdata'} eq 'New Problem Variation' || + $ENV{'form.newrandomization'} eq 'New Randomization') { $rndseed=time; + if ($rndseed eq $ENV{'form.rndseed'}) { + srand($rndseed); + $rndseed=int(rand(1000000000)); + } $ENV{'form.rndseed'}=$rndseed; + delete($ENV{'form.resetdata'}); + delete($ENV{'form.newrandomization'}); } &Apache::lonxml::debug("Setting rndseed to $rndseed"); &Apache::run::run('$external::randomseed='.$rndseed.';',$safeeval); @@ -177,19 +184,24 @@ sub problem_web_to_edit_header { my $result.=' - Random Seed: - + + + for
'; + $numtoanalyze.'" size="5" /> versions of this problem.'. + &Apache::loncommon::help_open_topic("Analyze_Problem", + '',undef,undef,300). + '
'; return $result; } @@ -264,7 +276,9 @@ sub start_problem { } #initialize globals $Apache::inputtags::part='0'; + @Apache::inputtags::partlist=('0'); @Apache::inputtags::responselist = (); + @Apache::inputtags::importlist = (); @Apache::inputtags::previous=(); @Apache::inputtags::previous_version=(); $Apache::structuretags::printanswer='No'; @@ -391,6 +405,10 @@ sub start_problem { "$name\n$body_tag_start\n"; } } elsif ($target eq 'tex') { + my $startminipage = ''; + if ($ENV{'form.problem_split'} ne 'yes') { + $startminipage = '\begin{minipage}{\textwidth}'; + } my $name= &Apache::lonxml::get_param('name',$parstack,$safeeval); if ($name eq '') { $name=&Apache::lonnet::EXT('resource.title'); @@ -425,9 +443,9 @@ sub start_problem { print $temp_file "$duedate\n"; if (not $ENV{'request.symb'} =~ m/\.page_/) { if(not $duedate=~m/1969/ and $Apache::lonhomework::type ne 'exam') { - $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource

"'.$name_of_resourse.'"

located in
'.$ENV{'request.uri'}.'
STAMPOFPASSEDRESOURCEEND} \noindent\textit{Due date: '.$duedate.'} \vskip 1 mm\noindent \begin{minipage}{\textwidth}'; + $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource

"'.$name_of_resourse.'"

located in
'.$ENV{'request.uri'}.'
STAMPOFPASSEDRESOURCEEND} \noindent\textit{Due date: '.$duedate.'} \vskip 1 mm\noindent '.$startminipage; } else { - $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource

"'.$name_of_resourse.'"

located in
'.$ENV{'request.uri'}.'
STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm \noindent\begin{minipage}{\textwidth}'; + $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource

"'.$name_of_resourse.'"

located in
'.$ENV{'request.uri'}.'
STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm \noindent'.$startminipage; if ($Apache::lonhomework::type eq 'exam' and $allow_print_points==1) { $result .= '\fbox{\textit{'.$weight.' pt}}';} } } else { @@ -435,7 +453,7 @@ sub start_problem { } } else { if (not $ENV{'request.symb'} =~ m/\.page_/) { - $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource

"'.$name_of_resourse.'"

located in
'.$ENV{'request.uri'}.'
STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm\noindent\begin{minipage}{\textwidth}'; + $result .= '\begin{document} \typeout{STAMPOFPASSEDRESOURCESTART Resource

"'.$name_of_resourse.'"

located in
'.$ENV{'request.uri'}.'
STAMPOFPASSEDRESOURCEEND} \noindent \vskip 1 mm\noindent'.$startminipage; if (($Apache::lonhomework::type eq 'exam') and ($allow_print_points==1)) { $result .= '\fbox{\textit{'.$weight.' pt}}';} } else { $result .= '\vskip 1mm \\\\\\\\'; @@ -493,9 +511,13 @@ sub end_problem { if ($target eq 'web') { $result.=&Apache::lonxml::xmlend(); } elsif ($target eq 'tex') { + my $endminipage = ''; + if ($ENV{'form.problem_split'} ne 'yes') { + $endminipage = '\end{minipage}'; + } $result .= '\keephidden{ENDOFPROBLEM}\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}'; if (not $ENV{'request.symb'} =~ m/\.page_/) { - $result .= '\end{minipage}\end{document} '; + $result .= $endminipage.'\end{document} '; } else { $result .= ''; } @@ -512,6 +534,7 @@ sub end_problem { } } elsif ($target eq 'meta') { if ($Apache::inputtags::part eq '0') { + @Apache::inputtags::response=(); $result=&Apache::response::mandatory_part_meta; } } elsif ($target eq 'edit') { @@ -519,6 +542,9 @@ sub end_problem { $result = &problem_edit_footer(); } + if ($ENV{'request.state'} eq 'construct' && $target eq 'web') { + &Apache::inputtags::check_for_duplicate_ids(); + } undef(%Apache::lonhomework::history); undef(%Apache::lonhomework::results); undef($Apache::inputtags::part); @@ -844,7 +870,8 @@ sub start_part { my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); if ($id eq '') { $id = $Apache::lonxml::curdepth; } $Apache::inputtags::part=$id; - @Apache::inputtags::responselist = (); + push(@Apache::inputtags::partlist,$id); + @Apache::inputtags::response=(); @Apache::inputtags::previous=(); @Apache::inputtags::previous_version=(); $Apache::lonhomework::problemstatus= @@ -909,6 +936,8 @@ sub end_part { $target); if ($Apache::lonhomework::type eq 'exam') {$gradestatus='';} $result=$gradestatus; + } elsif ($target eq 'edit') { + $result=&Apache::edit::end_table(); } pop @Apache::inputtags::status; $Apache::inputtags::part='';