version 1.461, 2009/12/06 21:18:24
|
version 1.465.2.3, 2010/08/16 18:09:28
|
Line 66 use lib '/home/httpd/lib/perl/';
|
Line 66 use lib '/home/httpd/lib/perl/';
|
use LONCAPA; |
use LONCAPA; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','translated','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startouttext','endouttext','simpleeditbutton','definetag')); |
&Apache::lonxml::register('Apache::structuretags',('block','languageblock','translated','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','problemtype','startpartmarker','startouttext','endpartmarker','endouttext','simpleeditbutton','definetag')); |
} |
} |
|
|
sub start_web { |
sub start_web { |
Line 254 sub page_start {
|
Line 254 sub page_start {
|
my $page_start = &Apache::loncommon::start_page($name,$extra_head, |
my $page_start = &Apache::loncommon::start_page($name,$extra_head, |
\%body_args); |
\%body_args); |
$page_start .= $pageheader; |
$page_start .= $pageheader; |
|
if (!defined($found{'body'}) |
unless ($env{'request.gcicontext'} eq 'buildtest') { |
&& $env{'request.state'} ne 'construct' |
if (!defined($found{'body'}) |
&& ($target eq 'web' || $target eq 'webgrade')) { |
&& $env{'request.state'} ne 'construct' |
|
&& ($target eq 'web' || $target eq 'webgrade')) { |
my ($symb,undef,undef,undef,$publicuser)= &Apache::lonnet::whichuser(); |
|
if ($symb eq '' && !$publicuser) { |
my ($symb,undef,undef,undef,$publicuser)= &Apache::lonnet::whichuser(); |
$page_start .= '<p class="LC_info">' |
if ($symb eq '' && !$publicuser) { |
.&mt('Browsing resource, all submissions are temporary.') |
$page_start .= '<p class="LC_info">' |
.'</p>'; |
.&mt('Browsing resource, all submissions are temporary.') |
|
.'</p>'; |
|
} |
|
} |
} |
} |
} |
|
|
Line 276 sub page_start {
|
Line 273 sub page_start {
|
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="'; |
my $uri = Apache::loncommon::inhibit_menu_check( |
my $uri = &Apache::loncommon::inhibit_menu_check( |
&Apache::lonenc::check_encrypt($env{'request.uri'})); |
&Apache::lonenc::check_encrypt($env{'request.uri'})); |
|
$uri = &HTML::Entities::encode($uri,'<>&"'); |
$form_tag_start.=$uri.'" '; |
$form_tag_start.=$uri.'" '; |
if ($target eq 'edit') { |
if ($target eq 'edit') { |
$form_tag_start.=&Apache::edit::form_change_detection(); |
$form_tag_start.=&Apache::edit::form_change_detection(); |
Line 474 sub problem_web_to_edit_header {
|
Line 472 sub problem_web_to_edit_header {
|
".&option('exam' ,'problemtype').&mt("Exam Problem")."</option> |
".&option('exam' ,'problemtype').&mt("Exam Problem")."</option> |
".&option('problem','problemtype').&mt("Homework Problem")."</option> |
".&option('problem','problemtype').&mt("Homework Problem")."</option> |
".&option('survey' ,'problemtype').&mt("Survey Question")."</option> |
".&option('survey' ,'problemtype').&mt("Survey Question")."</option> |
|
".&option('surveycred' ,'problemtype').&mt("Survey Question (with credit)")."</option> |
|
".&option('anonsurvey' ,'problemtype').&mt("Anonymous Survey Question")."</option> |
|
".&option('anonsurveycred' ,'problemtype').&mt("Anonymous Survey Question (with credit)")."</option> |
".&option('practice' ,'problemtype').&mt("Practice Problem")."</option> |
".&option('practice' ,'problemtype').&mt("Practice Problem")."</option> |
</select> |
</select> |
</span> |
</span> |
Line 632 sub finalize_storage {
|
Line 633 sub finalize_storage {
|
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results, |
$result=&Apache::lonnet::cstore(\%Apache::lonhomework::results, |
$symb,$courseid,$domain,$name); |
$symb,$courseid,$domain,$name); |
&Apache::lonxml::debug('Store return message:'.$result); |
&Apache::lonxml::debug('Store return message:'.$result); |
if ($env{'request.role'} =~/^st/) { |
&store_aggregates($symb,$courseid); |
&store_aggregates($symb,$courseid); |
|
} |
|
} |
} |
} else { |
} else { |
&Apache::lonxml::debug('Nothing to store'); |
&Apache::lonxml::debug('Nothing to store'); |
Line 654 item store_aggregates()
|
Line 653 item store_aggregates()
|
|
|
sub store_aggregates { |
sub store_aggregates { |
my ($symb,$courseid) = @_; |
my ($symb,$courseid) = @_; |
my %aggregate; |
my (%aggregate,%anoncounter); |
my @parts; |
my @parts; |
my $cdomain = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdomain = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cname = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cname = $env{'course.'.$env{'request.course.id'}.'.num'}; |
Line 664 sub store_aggregates {
|
Line 663 sub store_aggregates {
|
} |
} |
} |
} |
foreach my $part (@parts) { |
foreach my $part (@parts) { |
if ($Apache::lonhomework::results{'resource.'.$part.'.award'} |
if ($env{'request.role'} =~/^st/) { |
eq 'APPROX_ANS' || |
if ($Apache::lonhomework::results{'resource.'.$part.'.award'} |
$Apache::lonhomework::results{'resource.'.$part.'.award'} |
eq 'APPROX_ANS' || |
eq 'EXACT_ANS') { |
$Apache::lonhomework::results{'resource.'.$part.'.award'} |
$aggregate{$symb."\0".$part."\0correct"} = 1; |
eq 'EXACT_ANS') { |
|
$aggregate{$symb."\0".$part."\0correct"} = 1; |
|
} |
|
if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) { |
|
$aggregate{$symb."\0".$part."\0users"} = 1; |
|
} else { |
|
my (undef,$last_reset) = &Apache::grades::get_last_resets($symb,$env{'request.course.id'},[$part]); |
|
if ($last_reset) { |
|
if (&Apache::grades::get_num_tries(\%Apache::lonhomework::history,$last_reset,$part) == 0) { |
|
$aggregate{$symb."\0".$part."\0users"} = 1; |
|
} |
|
} |
|
} |
|
$aggregate{$symb."\0".$part."\0attempts"} = 1; |
} |
} |
if ($Apache::lonhomework::results{'resource.'.$part.'.tries'} == 1) { |
if (($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurvey') || |
$aggregate{$symb."\0".$part."\0users"} = 1; |
($Apache::lonhomework::results{'resource.'.$part.'.type'} eq 'anonsurveycred')) { |
} else { |
$anoncounter{$symb."\0".$part} = 1; |
my (undef,$last_reset) = &Apache::grades::get_last_resets($symb,$env{'request.course.id'},[$part]); |
my $needsrelease = $Apache::lonnet::needsrelease{'parameter:type:'.$Apache::lonhomework::results{'resource.'.$part.'.type'}}; |
if ($last_reset) { |
if ($needsrelease) { |
if (&Apache::grades::get_num_tries(\%Apache::lonhomework::history,$last_reset,$part) == 0) { |
my $curr_required = $env{'course.'.$env{'request.course.id'}.'.internal.releaserequired'}; |
$aggregate{$symb."\0".$part."\0users"} = 1; |
if ($curr_required eq '') { |
|
&Apache::lonnet::update_released_required($needsrelease); |
|
} else { |
|
my ($currmajor,$currminor) = split(/\./,$curr_required); |
|
my ($needsmajor,$needsminor) = split(/\./,$needsrelease); |
|
if (($currmajor < $needsmajor) || ($currmajor == $needsmajor && $currminor < $needsminor)) { |
|
&Apache::lonnet::update_released_required($needsrelease); |
|
} |
} |
} |
} |
} |
} |
} |
$aggregate{$symb."\0".$part."\0attempts"} = 1; |
|
} |
} |
if (keys (%aggregate) > 0) { |
if (keys (%aggregate) > 0) { |
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
$cdomain,$cname); |
$cdomain,$cname); |
} |
} |
|
if (keys(%anoncounter) > 0) { |
|
&Apache::lonnet::cinc('nohist_anonsurveys',\%anoncounter, |
|
$cdomain,$cname); |
|
} |
} |
} |
|
|
sub checkout_msg { |
sub checkout_msg { |
Line 917 sub start_problem {
|
Line 939 sub start_problem {
|
if ($env{'request.state'} ne "construct" && |
if ($env{'request.state'} ne "construct" && |
($symb eq '' || $Apache::lonhomework::type eq 'practice')) { |
($symb eq '' || $Apache::lonhomework::type eq 'practice')) { |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$form_tag_start.='<input type="hidden" name="rndseed" value="'. |
$rndseed.'" />'; |
$rndseed.'" />'. |
unless ($env{'request.gcicontext'} eq 'buildtest') { |
'<input type="submit" name="resetdata" |
$form_tag_start .= '<input type="submit" name="resetdata"'. |
value="'.&mt('New Problem Variation').'" />'; |
' value="'.&mt('New Problem Variation').'" />'; |
|
} |
|
if (exists($env{'form.username'})) { |
if (exists($env{'form.username'})) { |
$form_tag_start.= |
$form_tag_start.= |
'<input type="hidden" name="username" |
'<input type="hidden" name="username" |
value="'.$env{'form.username'}.'" />'; |
value="'.$env{'form.username'}.'" />'; |
} |
} |
unless ($env{'request.gcicontext'} eq 'buildtest') { |
if ($env{'request.role.adv'}) { |
if ($env{'request.role.adv'}) { |
$form_tag_start.= ' <label class="LC_nobreak">' |
$form_tag_start.= ' <label class="LC_nobreak">' |
.'<input type="checkbox" name="showallfoils"'; |
.'<input type="checkbox" name="showallfoils"'; |
if (defined($env{'form.showallfoils'})) { |
if (defined($env{'form.showallfoils'})) { |
$form_tag_start.=' checked="checked"'; |
$form_tag_start.=' checked="checked"'; |
} |
} |
$form_tag_start.= ' /> ' |
$form_tag_start.= ' /> ' |
.&mt('Show All Foils') |
.&mt('Show All Foils') |
.'</label>'; |
.'</label>'; |
} |
} |
|
} |
|
if ($Apache::lonhomework::type eq 'practice') { |
if ($Apache::lonhomework::type eq 'practice') { |
$form_tag_start.=&practice_problem_header(); |
$form_tag_start.=&practice_problem_header(); |
} |
} |
unless ($env{'request.gcicontext'} eq 'buildtest') { |
$form_tag_start.='<hr />'; |
$form_tag_start.='<hr />'; |
|
} |
|
} |
} |
|
|
($status,$accessmsg,my $slot_name,my $slot) = |
($status,$accessmsg,my $slot_name,my $slot) = |
Line 1134 sub end_problem {
|
Line 1150 sub end_problem {
|
'\textit{'.$duedate_text.'} '.$toc_line; |
'\textit{'.$duedate_text.'} '.$toc_line; |
} else { |
} else { |
$frontmatter.= $begin_doc.$toc_line; |
$frontmatter.= $begin_doc.$toc_line; |
if ($Apache::lonhomework::type eq 'exam' and $allow_print_points==1) { $frontmatter .= '\fbox{\textit{'.$weight.' pt}}';} |
if ($Apache::lonhomework::type eq 'exam' and $allow_print_points==1) { |
|
$frontmatter .= '\fbox{\textit{'.$weight.' pt}}'; |
|
} |
} |
} |
} else { |
} else { |
$frontmatter .= '\vskip 1mm\textit{'.$duedate_text.'} \\\\\\\\'.$startminipage; |
$frontmatter .= '\vskip 1mm\textit{'.$duedate_text.'} \\\\\\\\'.$startminipage; |
Line 1142 sub end_problem {
|
Line 1160 sub end_problem {
|
} else { |
} else { |
if (not $env{'request.symb'} =~ m/\.page_/) { |
if (not $env{'request.symb'} =~ m/\.page_/) { |
$frontmatter .= $begin_doc.$toc_line; |
$frontmatter .= $begin_doc.$toc_line; |
if (($Apache::lonhomework::type eq 'exam') and ($allow_print_points==1)) { $frontmatter .= '\fbox{\textit{'.$weight.' pt}}';} |
if (($Apache::lonhomework::type eq 'exam') and ($allow_print_points==1)) { |
|
$frontmatter .= '\fbox{\textit{'.$weight.' pt}}'; |
|
} |
} else { |
} else { |
$frontmatter .= '\vskip 1mm \\\\\\\\'.$startminipage; |
$frontmatter .= '\vskip 1mm \\\\\\\\'.$startminipage; |
} |
} |
Line 1495 sub start_instructorcomment {
|
Line 1515 sub start_instructorcomment {
|
|
|
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 'analyze' || $target eq 'webgrade') { |
$target eq 'tex' || $target eq 'analyze' || $target eq 'webgrade') { |
$result=($env{'request.role'}=~/^(in|cc|au|ca|li)/); |
$result=($env{'request.role'}=~/^(in|cc|co|au|ca|li)/); |
if ( (! $result) or ($env{'form.instructor_comments'} eq 'hide')) { |
if ( (! $result) or ($env{'form.instructor_comments'} eq 'hide')) { |
my $skip=&Apache::lonxml::get_all_text("/instructorcomment", |
my $skip=&Apache::lonxml::get_all_text("/instructorcomment", |
$parser,$style); |
$parser,$style); |
Line 1700 sub ordered_show_check {
|
Line 1720 sub ordered_show_check {
|
return $in_order_show; |
return $in_order_show; |
} |
} |
|
|
|
sub start_startpartmarker { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
my $result=''; |
|
if ($target eq 'edit') { |
|
$result=&Apache::edit::tag_start($target,$token); |
|
$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(); |
|
|
|
} |
|
return $result; |
|
} |
|
|
|
sub end_startpartmarker { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
my @result; |
|
if ($target eq 'edit') { $result[1]='no'; } |
|
return @result; |
|
} |
|
|
|
sub start_endpartmarker { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
my $result=''; |
|
if ($target eq 'edit') { |
|
$result=&Apache::edit::tag_start($target,$token); |
|
$result.=&mt('Marker for the end of a part. Place start marker above to wrap in-between tags into a new part.').'</td></tr>'; |
|
$result.=&Apache::edit::end_table(); |
|
|
|
} |
|
return $result; |
|
} |
|
|
|
sub end_endpartmarker { |
|
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
|
my @result; |
|
if ($target eq 'edit') { $result[1]='no'; } |
|
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 1784 sub start_part {
|
Line 1842 sub start_part {
|
'.disableexampointprint'}) eq 'yes') { |
'.disableexampointprint'}) eq 'yes') { |
$allow_print_points=0; |
$allow_print_points=0; |
} |
} |
if (($Apache::lonhomework::type eq 'exam') && ($allow_print_points)) { $result .= '\fbox{\textit{'.$weight.' pt}}';} |
if (($Apache::lonhomework::type eq 'exam') && ($allow_print_points)) { |
|
$result .= '\vskip 10mm\fbox{\textit{'.$weight.' pt}}'; |
|
|
|
} |
} elsif ($target eq 'web') { |
} elsif ($target eq 'web') { |
$result.='<a name="'.&escape($Apache::inputtags::part).'" />'; |
$result.='<a name="'.&escape($Apache::inputtags::part).'" />'; |
} |
} |
Line 1953 sub start_problemtype {
|
Line 2014 sub start_problemtype {
|
$result .=&Apache::edit::checked_arg('When used as type(s):','for', |
$result .=&Apache::edit::checked_arg('When used as type(s):','for', |
[ ['exam','Exam/Quiz Problem'], |
[ ['exam','Exam/Quiz Problem'], |
['survey','Survey'], |
['survey','Survey'], |
|
['surveycred','Survey (with credit)'], |
|
['anonsurvey','Anonymous Survey'], |
|
['anonsurveycred','Anonymous Survey (with credit)'], |
['problem','Homework Problem'], |
['problem','Homework Problem'], |
['practice','Practice Problem'] ] |
['practice','Practice Problem'] ] |
,$token); |
,$token); |