version 1.92, 2009/10/26 10:17:58
|
version 1.100, 2013/01/15 14:14:31
|
Line 158 sub handler {
|
Line 158 sub handler {
|
my $number_of_columns = 1; |
my $number_of_columns = 1; |
my $requrl=$r->uri; |
my $requrl=$r->uri; |
my $target = $env{'form.grade_target'}; |
my $target = $env{'form.grade_target'}; |
|
|
|
# Short term solution: define target as 'tex_answer' when retrieving answers |
|
# for resources in a .page when generating printouts. |
|
# A better long-term fix would be to modify the way problem rendering, and |
|
# answer rendering are retrieved for individual resources when printing a .page, |
|
# so rendered problem and answer are sequential for individual resources in |
|
# the .page |
|
# |
|
if ($target eq 'answer') { |
|
if ($env{'form.answer_output_mode'} eq 'tex') { |
|
$target = 'tex_answer'; |
|
} |
|
} |
# &Apache::lonnet::logthis("Got a target of $target"); |
# &Apache::lonnet::logthis("Got a target of $target"); |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
Line 201 sub handler {
|
Line 214 sub handler {
|
my $lcm=1; |
my $lcm=1; |
my $contents=0; |
my $contents=0; |
my $nforms=0; |
my $nforms=0; |
|
my $nuploads=0; |
|
my %turninpaths; |
|
my %multiresps; |
|
my $turninparent; |
|
|
my %ssibody=(); |
my %ssibody=(); |
my %ssibgcolor=(); |
my %ssibgcolor=(); |
Line 210 sub handler {
|
Line 227 sub handler {
|
my %ssialink=(); |
my %ssialink=(); |
|
|
my %cellemb=(); |
my %cellemb=(); |
|
my %cellexternal=(); |
|
|
my $allscript=''; |
my $allscript=''; |
my $allmeta=''; |
my $allmeta=''; |
Line 227 sub handler {
|
Line 245 sub handler {
|
$lcm*=($#colcont+1)/euclid($lcm,($#colcont+1)); |
$lcm*=($#colcont+1)/euclid($lcm,($#colcont+1)); |
foreach (@colcont) { |
foreach (@colcont) { |
my $src=$hash{'src_'.$_}; |
my $src=$hash{'src_'.$_}; |
my ($extension)=($src=~/\.(\w+)$/); |
my ($extension)=($src=~/\.(\w+)$/); |
|
$cellexternal{$_}=($hash{'ext_'.$_} eq 'true:'); |
if ($hash{'encrypted_'.$_}) { |
if ($hash{'encrypted_'.$_}) { |
$src=&Apache::lonenc::encrypted($src); |
$src=&Apache::lonenc::encrypted($src); |
} |
} |
$cellemb{$_}= |
$cellemb{$_}= |
&Apache::loncommon::fileembstyle($extension); |
&Apache::loncommon::fileembstyle($extension); |
if ($cellemb{$_} eq 'ssi') { |
if ($cellexternal{$_}) { |
|
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
|
$ssibody{$_} = <<ENDEXT; |
|
<iframe src="$src" width="100%">No iframe support!</iframe> |
|
ENDEXT |
|
} |
|
} elsif ($cellemb{$_} eq 'ssi') { |
# --------------------------------------------------------- This is an SSI cell |
# --------------------------------------------------------- This is an SSI cell |
my ($mapid,$resid)=split(/\./,$_); |
my ($mapid,$resid)=split(/\./,$_); |
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src); |
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src); |
Line 242 sub handler {
|
Line 267 sub handler {
|
my %posthash=('request.prefix' => $prefix, |
my %posthash=('request.prefix' => $prefix, |
'LONCAPA_INTERNAL_no_discussion' => 'true', |
'LONCAPA_INTERNAL_no_discussion' => 'true', |
'symb' => $symb); |
'symb' => $symb); |
if ($env{'form.grade_target'} eq 'tex') { |
if (($env{'form.grade_target'} eq 'tex') || |
|
($env{'form.answer_output_mode'} eq 'tex')) { |
$posthash{'grade_target'}=$env{'form.grade_target'}; |
$posthash{'grade_target'}=$env{'form.grade_target'}; |
$posthash{'textwidth'}=$env{'form.textwidth'}; |
$posthash{'textwidth'}=$env{'form.textwidth'}; |
$posthash{'problem_split'}=$env{'form.problem_split'}; |
$posthash{'problem_split'}=$env{'form.problem_split'}; |
$posthash{'latex_type'}=$env{'form.latex_type'}; |
$posthash{'latex_type'}=$env{'form.latex_type'}; |
$posthash{'rndseed'}=$env{'form.rndseed'}; |
$posthash{'rndseed'}=$env{'form.rndseed'}; |
|
$posthash{'answer_output_mode'} = $env{'form.answer_output_mode'}; |
} |
} |
my $submitted=exists($env{'form.all_submit'}); |
my $submitted=exists($env{'form.all_submit'}); |
if (!$submitted) { |
if (!$submitted) { |
Line 271 sub handler {
|
Line 298 sub handler {
|
} |
} |
my $output=Apache::lonnet::ssi($src,%posthash); |
my $output=Apache::lonnet::ssi($src,%posthash); |
$output=~s|//(\s*<!--)? BEGIN LON-CAPA Internal.+?// END LON-CAPA Internal\s*(-->)?\s||gs; |
$output=~s|//(\s*<!--)? BEGIN LON-CAPA Internal.+?// END LON-CAPA Internal\s*(-->)?\s||gs; |
if ($target eq 'tex') { |
if (($target eq 'tex') || ($target eq 'tex_answer')) { |
$output =~ s/^([^&]+)\\begin{document}//; |
$output =~ s/^([^&]+)\\begin{document}//; |
$output =~ s/\\end{document}//; |
$output =~ s/\\end{document}//; |
# $output = '\parbox{\minipagewidth}{ '.$output.' }'; |
# $output = '\parbox{\minipagewidth}{ '.$output.' }'; |
Line 337 sub handler {
|
Line 364 sub handler {
|
$nforms++; |
$nforms++; |
$output=~s/\<form[^\>]*\>//gsi; |
$output=~s/\<form[^\>]*\>//gsi; |
$output=~s/\<\/form[^\>]*\>//gsi; |
$output=~s/\<\/form[^\>]*\>//gsi; |
|
if ($output=~/\<input[^\>]+name\s*=\s*[\'\"]*HWFILE/) { |
|
$nuploads++; |
|
} |
$output=~ |
$output=~ |
s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi; |
s/\<((?:input|select|button|textarea)[^\>]+)name\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 name="$prefix$2" $3\>/gsi; |
|
if ($nuploads) { |
|
$output=~ |
|
s/\<(input[^\>]+name=\"\Q$prefix\EHWFILE[^\>]+)\s*id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\)]*)\>/\<$1 id="$prefix$2" $3\>/gsi; |
|
($turninpaths{$prefix},$multiresps{$prefix}) = |
|
&Apache::loncommon::get_turnedin_filepath($symb,$env{'user.name'},$env{'user.domain'}); |
|
if ($turninparent eq '') { |
|
$turninparent = $turninpaths{$prefix}; |
|
$turninparent =~ s{(/[^/]+)$}{}; |
|
} |
|
} |
|
$output=~ |
|
s/\<((?:input|select)[^\>]+\Qjavascript:setSubmittedPart\E)\(\s*[\'\"]([^\'\"]+)[\'\"]*\s*\)/\<$1('$2','$prefix')/gsi; |
} |
} |
$thisdir=~s/\/[^\/]*$//; |
$thisdir=~s/\/[^\/]*$//; |
foreach (@rlinks) { |
foreach (@rlinks) { |
Line 372 sub handler {
|
Line 414 sub handler {
|
# ------------------------------------------------------------------ Build page |
# ------------------------------------------------------------------ Build page |
|
|
# ---------------------------------------------------------------- Send headers |
# ---------------------------------------------------------------- Send headers |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
if ($isxml) { |
if ($isxml) { |
&Apache::loncommon::content_type($r,'text/xml'); |
&Apache::loncommon::content_type($r,'text/xml'); |
} else { |
} else { |
Line 386 sub handler {
|
Line 428 sub handler {
|
$allscript. |
$allscript. |
"\n</script>\n"; |
"\n</script>\n"; |
} |
} |
|
if (($nforms) && ($nuploads)) { |
|
$allscript .= &Apache::lonhtmlcommon::file_submissionchk_js(\%turninpaths,\%multiresps); |
|
} |
# ------------------------------------------------------------------ Start body |
# ------------------------------------------------------------------ Start body |
$r->print(&Apache::loncommon::start_page(undef,$allscript, |
$r->print(&Apache::loncommon::start_page(undef,$allscript, |
{'force_register' => 1, |
{'force_register' => 1, |
'bgcolor' => '#ffffff',})); |
'bgcolor' => '#ffffff',})); |
# ------------------------------------------------------------------ Start form |
# ------------------------------------------------------------------ Start form |
if ($nforms) { |
if ($nforms) { |
$r->print('<form name="lonhomework" method="post" enctype="multipart/form-data" action="'. |
my $fmtag = '<form name="lonhomework" method="post" enctype="multipart/form-data"'; |
|
if ($nuploads) { |
|
my $multi; |
|
if ($nuploads > 1) { |
|
$multi = 1; |
|
} |
|
$fmtag .= 'onsubmit="return file_submission_check(this,'."'$turninparent','$multi'".');"'; |
|
} |
|
$fmtag .= ' action="'. |
&Apache::lonenc::check_encrypt($requrl) |
&Apache::lonenc::check_encrypt($requrl) |
.'">'); |
.'">'; |
|
$r->print($fmtag); |
} |
} |
} elsif ($target eq 'tex') { |
} elsif (($target eq 'tex') || ($target eq 'tex_answer')) { |
# I think this is not needed as the header |
# I think this is not needed as the header |
# will be put in for each of the page parts |
# will be put in for each of the page parts |
# by the londefdef.pm now that we are opening up |
# by the londefdef.pm now that we are opening up |
Line 410 sub handler {
|
Line 464 sub handler {
|
# \begin{document}'); |
# \begin{document}'); |
} |
} |
# ----------------------------------------------------------------- Start table |
# ----------------------------------------------------------------- Start table |
if ($target eq 'tex') { |
if (($target eq 'tex') || ($target eq 'tex_answer')) { |
# # $r->print('\begin{longtable}INSERTTHEHEADOFLONGTABLE\endfirsthead\endhead '); |
# # $r->print('\begin{longtable}INSERTTHEHEADOFLONGTABLE\endfirsthead\endhead '); |
if ($number_of_columns le $lcm) {$number_of_columns=$lcm;}; |
if ($number_of_columns le $lcm) {$number_of_columns=$lcm;}; |
} else { |
} else { |
Line 419 sub handler {
|
Line 473 sub handler {
|
# generate rows |
# generate rows |
for ($i=0;$i<=$#rows;$i++) { |
for ($i=0;$i<=$#rows;$i++) { |
if ($rows[$i]) { |
if ($rows[$i]) { |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print("\n<tr>"); |
$r->print("\n<tr>"); |
} |
} |
my @colcont=split(/\&/,$rows[$i]); |
my @colcont=split(/\&/,$rows[$i]); |
Line 428 sub handler {
|
Line 482 sub handler {
|
my $rid=$colcont[$j]; |
my $rid=$colcont[$j]; |
|
|
my $metainfo =&get_buttons(\%hash,$rid).'<br />'; |
my $metainfo =&get_buttons(\%hash,$rid).'<br />'; |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print('<td colspan="'.$avespan.'"'); |
$r->print('<td colspan="'.$avespan.'"'); |
} |
} |
if ($cellemb{$rid} eq 'ssi') { |
if (($cellemb{$rid} eq 'ssi') || ($cellexternal{$rid})) { |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
if ($ssibgcolor{$rid}) { |
if ($ssibgcolor{$rid}) { |
$r->print(' bgcolor="'. |
$r->print(' bgcolor="'. |
$ssibgcolor{$rid}.'"'); |
$ssibgcolor{$rid}.'"'); |
Line 453 sub handler {
|
Line 507 sub handler {
|
} |
} |
$r->print('>'); |
$r->print('>'); |
} |
} |
$r->print($ssibody{$rid}); |
unless (($cellexternal{$rid}) && |
unless ($target eq 'tex') { |
($target eq 'tex') && ($target eq 'tex_answer')) { |
|
$r->print($ssibody{$rid}); |
|
} |
|
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print('</font>'); |
$r->print('</font>'); |
} |
} |
if ($env{'course.'. |
if ($env{'course.'. |
$env{'request.course.id'}. |
$env{'request.course.id'}. |
'.pageseparators'} eq 'yes') { |
'.pageseparators'} eq 'yes') { |
unless($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print('<hr />'); |
$r->print('<hr />'); |
} |
} |
} |
} |
Line 475 sub handler {
|
Line 532 sub handler {
|
&mt('It is recommended that you use an up-to-date virus scanner before handling this file.').'</p><p><table>'. |
&mt('It is recommended that you use an up-to-date virus scanner before handling this file.').'</p><p><table>'. |
&Apache::londocs::entryline(0,&mt("Click to download or use your browser's Save Link function"),'/'.&Apache::lonnet::declutter($hash{'src_'.$rid})).'</table></p><br />'); |
&Apache::londocs::entryline(0,&mt("Click to download or use your browser's Save Link function"),'/'.&Apache::lonnet::declutter($hash{'src_'.$rid})).'</table></p><br />'); |
} |
} |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print('</td>'); |
$r->print('</td>'); |
} else { |
} else { |
# for (my $incol=1;$incol<=$avespan;$incol++) { |
# for (my $incol=1;$incol<=$avespan;$incol++) { |
Line 483 sub handler {
|
Line 540 sub handler {
|
# } |
# } |
} |
} |
} |
} |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print('</tr>'); |
$r->print('</tr>'); |
} else { |
} else { |
# $r->print('REMOVETHEHEADOFLONGTABLE\\\\'); |
# $r->print('REMOVETHEHEADOFLONGTABLE\\\\'); |
} |
} |
} |
} |
} |
} |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print("\n</table>"); |
$r->print("\n</table>"); |
} else { |
} else { |
# $r->print('\end{longtable}\strut'); |
# $r->print('\end{longtable}\strut'); |
Line 501 sub handler {
|
Line 558 sub handler {
|
'<input name="all_submit" value="Submit All" type="'. |
'<input name="all_submit" value="Submit All" type="'. |
(($nforms>1)?'submit':'hidden').'"></input></form>'); |
(($nforms>1)?'submit':'hidden').'"></input></form>'); |
} |
} |
unless ($target eq 'tex') { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print(&Apache::loncommon::end_page({'discussion' |
$r->print(&Apache::loncommon::end_page({'discussion' |
=> 1,})); |
=> 1,})); |
} else { |
} else { |
Line 538 sub handler {
|
Line 595 sub handler {
|
sub get_buttons { |
sub get_buttons { |
my ($hash,$rid) = @_; |
my ($hash,$rid) = @_; |
|
|
# which icons do we use? |
|
my $extension='png'; |
|
if ($env{'environment.icons'} eq 'classic') { $extension='gif'; } |
|
|
|
my $metainfo = ''; |
my $metainfo = ''; |
my $esrc=&Apache::lonnet::declutter($hash->{'src_'.$rid}); |
my $esrc=&Apache::lonnet::declutter($hash->{'src_'.$rid}); |
my ($mapid,$resid)=split(/\./,$rid); |
my ($mapid,$resid)=split(/\./,$rid); |
Line 553 sub get_buttons {
|
Line 606 sub get_buttons {
|
$esrc=&Apache::lonenc::encrypted($esrc); |
$esrc=&Apache::lonenc::encrypted($esrc); |
} |
} |
if ($hash->{'src_'.$rid} !~ m-^/uploaded/- |
if ($hash->{'src_'.$rid} !~ m-^/uploaded/- |
|
&& $hash->{'src_'.$rid} !~ m{^https?://} |
&& !$env{'request.enc'} |
&& !$env{'request.enc'} |
&& ($env{'request.role.adv'} |
&& ($env{'request.role.adv'} |
|| !$hash->{'encrypted_'.$rid})) { |
|| !$hash->{'encrypted_'.$rid})) { |
$metainfo .='<a name="'.&escape($symb).'" />'. |
$metainfo .='<a name="'.&escape($symb).'" />'. |
'<a href="'.$hash->{'src_'.$rid}.'.meta'.'" target="LONcatInfo">'. |
'<a href="'.$hash->{'src_'.$rid}.'.meta'.'" target="LONcatInfo">'. |
'<img src="/adm/lonMisc/cat_button.'.$extension.'" class="LC_icon" />'. |
'<img src="/res/adm/pages/catalog.png" class="LC_icon"'. |
|
' alt="'.&mt('Show Metadata').'"'. |
|
' title="'.&mt('Show Metadata').'" />'. |
|
'</a>'; |
|
} |
|
if (($hash->{'src_'.$rid} !~ m{^/uploaded/}) && |
|
($hash->{'src_'.$rid} !~ m{^https?://})) { |
|
$metainfo .= '<a href="/adm/evaluate?postdata='. |
|
&escape($esrc). |
|
'" target="LONcatInfo">'. |
|
'<img src="/res/adm/pages/eval.png" class="LC_icon"'. |
|
' alt="'.&mt('Provide my evaluation of this resource').'"'. |
|
' title="'.&mt('Provide my evaluation of this resource').'" />'. |
'</a>'; |
'</a>'; |
} |
} |
$metainfo .= '<a href="/adm/evaluate?postdata='. |
if (($hash->{'src_'.$rid}=~/$LONCAPA::assess_re/) && |
&escape($esrc). |
|
'" target="LONcatInfo">'. |
|
'<img src="/adm/lonMisc/eval_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'; |
|
if (($hash->{'src_'.$rid}=~/\.(problem|exam|quiz|assess|survey|form)$/) && |
|
($hash->{'src_'.$rid} !~ m-^/uploaded/-)) { |
($hash->{'src_'.$rid} !~ m-^/uploaded/-)) { |
|
|
if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) { |
Line 574 sub get_buttons {
|
Line 635 sub get_buttons {
|
'<a href="/adm/grades?symb='.&escape($symb). |
'<a href="/adm/grades?symb='.&escape($symb). |
# '&command=submission" target="LONcatInfo">'. |
# '&command=submission" target="LONcatInfo">'. |
'&command=submission">'. |
'&command=submission">'. |
'<img src="/adm/lonMisc/subm_button.'.$extension.'" class="LC_icon" />'. |
'<img src="/adm/lonMisc/subm_button.png" class="LC_icon"'. |
|
' alt="'.&mt('View Submissions for a Student or a Group of Students').'"'. |
|
' title="'.&mt('View Submissions for a Student or a Group of Students').'" />'. |
'</a>'. |
'</a>'. |
'<a href="/adm/grades?symb='.&escape($symb). |
'<a href="/adm/grades?symb='.&escape($symb). |
# '&command=gradingmenu" target="LONcatInfo">'. |
# '&command=gradingmenu" target="LONcatInfo">'. |
'&command=gradingmenu">'. |
'&command=gradingmenu">'. |
'<img src="/adm/lonMisc/pgrd_button.'.$extension.'" class="LC_icon" />'. |
'<img src="/res/adm/pages/pgrd.png" class="LC_icon"'. |
|
' alt="'.&mt('Content Grades').'"'. |
|
' title="'.&mt('Content Grades').'" />'. |
'</a>'; |
'</a>'; |
} |
} |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
Line 587 sub get_buttons {
|
Line 652 sub get_buttons {
|
'<a href="/adm/parmset?symb='.&escape($symb). |
'<a href="/adm/parmset?symb='.&escape($symb). |
# '" target="LONcatInfo">'. |
# '" target="LONcatInfo">'. |
'" >'. |
'" >'. |
'<img src="/adm/lonMisc/pprm_button.'.$extension.'" class="LC_icon" />'. |
'<img src="/adm/lonMisc/pprm_button.png" class="LC_icon"'. |
|
' alt="'.&mt('Content Settings').'"'. |
|
' title="'.&mt('Content Settings').'" />'. |
'</a>'; |
'</a>'; |
} |
} |
} |
} |