version 1.100, 2013/01/15 14:14:31
|
version 1.110, 2015/07/17 19:00:47
|
Line 36 use strict;
|
Line 36 use strict;
|
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncommon(); |
use Apache::loncommon(); |
|
use Apache::lonhtmlcommon; |
use Apache::lonxml(); |
use Apache::lonxml(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonmenu; |
use Apache::lonmenu; |
Line 215 sub handler {
|
Line 216 sub handler {
|
my $contents=0; |
my $contents=0; |
my $nforms=0; |
my $nforms=0; |
my $nuploads=0; |
my $nuploads=0; |
|
my $ntimers=0; |
my %turninpaths; |
my %turninpaths; |
my %multiresps; |
my %multiresps; |
my $turninparent; |
my $turninparent; |
Line 264 ENDEXT
|
Line 266 ENDEXT
|
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src); |
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src); |
|
|
my $prefix=$_.'_'; |
my $prefix=$_.'_'; |
|
my $idprefix= join('_',($mapid,$resid,'')); |
my %posthash=('request.prefix' => $prefix, |
my %posthash=('request.prefix' => $prefix, |
'LONCAPA_INTERNAL_no_discussion' => 'true', |
'LONCAPA_INTERNAL_no_discussion' => 'true', |
'symb' => $symb); |
'symb' => $symb); |
Line 305 ENDEXT
|
Line 308 ENDEXT
|
#some additional cleanup necessary for LateX (due to limitations of table environment |
#some additional cleanup necessary for LateX (due to limitations of table environment |
$output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g; |
$output =~ s/(\\vskip\s*\d+mm)\s*(\\\\)+/$1/g; |
} |
} |
|
my $matheditor; |
|
if ($output =~ /\Qjavascript:LC_mathedit_HWVAL_\E/) { |
|
$matheditor = 'dragmath'; |
|
} elsif ($output =~ /LCmathField/) { |
|
$matheditor = 'lcmath'; |
|
} |
my $parser=HTML::TokeParser->new(\$output); |
my $parser=HTML::TokeParser->new(\$output); |
my $token; |
my $token; |
my $thisdir=$src; |
my $thisdir=$src; |
Line 361 ENDEXT
|
Line 370 ENDEXT
|
} |
} |
$output=~s/\<\/body\>.*//si; |
$output=~s/\<\/body\>.*//si; |
if ($output=~/\<form/si) { |
if ($output=~/\<form/si) { |
|
my $hastimer; |
$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/) { |
if ($output=~/\<input[^\>]+name\s*=\s*[\'\"]*HWFILE/) { |
$nuploads++; |
$nuploads++; |
} |
} |
|
if ($output=~/\<input[^\>]+name\s*=\s*[\'\"]*accessbutton/) { |
|
$ntimers++; |
|
$hastimer = 1; |
|
} |
$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; |
|
$output=~ |
|
s/\<((?:input|select|button|textarea)[^\>]+)id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\>]*)\>/\<$1 id="$idprefix$2" $3\>/gsi; |
|
if ($hastimer) { |
|
$output=~ |
|
s/\<(input[^\>]+name=\Q"$prefix\Eaccessbutton"[^\>]+)(?:\Qdocument.markaccess.submit();\E)([^\>]*)\>/\<$1pageTimer(this.form,'$prefix')$2\>/gsi; |
|
$output=~ s/\<(input[^\>]+name=\Q"$prefix\Emarkaccess"[^\>]+value=["'])(?:yes)(['"][^\>]*)\>/\<$1$2\>/gsi; |
|
} |
|
if ($matheditor eq 'dragmath') { |
|
$output=~ |
|
s/(\Qjavascript:LC_mathedit_\E)(HWVAL_)([^'"]+?)(\(['"]*)(\QHWVAL_\E\3['"]\)\;void\(0\)\;)/$1$idprefix$2$3$4$idprefix$5/g; |
|
$output=~ |
|
s/(function\s+LC_mathedit_)(HWVAL_)([^'"]+?)(\s+\(LCtextline\))/$1$idprefix$2$3$4/g; |
|
} elsif ($matheditor eq 'lcmath') { |
|
$output=~ |
|
s/(var\s+LCmathField\s+=\s+document\.getElementById\(['"])([^'"]+?)(['"]\)\;)/$1$idprefix$2$3/g; |
|
} |
|
$output=~ |
|
s/(\Q<div id="msg_\E)(\Qsubmit_\E)([^"]*)(\Q" style="display:none">\E)/<input type="hidden" name="$prefix$2$3_pressed" id="$idprefix$2$3_pressed" value="" \/>$1$idprefix$2$3$4/g; |
|
$output=~ |
|
s/(\Q<td class="LC_status_\E)(\Qsubmit_\E)([^\"]*)(\s*[^\"]*"\>)/$1$idprefix$2$3$4/g; |
if ($nuploads) { |
if ($nuploads) { |
$output=~ |
$output=~ |
s/\<(input[^\>]+name=\"\Q$prefix\EHWFILE[^\>]+)\s*id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\)]*)\>/\<$1 id="$prefix$2" $3\>/gsi; |
s/\<(input[^\>]+name=\"\Q$prefix\EHWFILE[^\>]+)\s*id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\)]*)\>/\<$1 id="$prefix$2" $3\>/gsi; |
Line 381 ENDEXT
|
Line 415 ENDEXT
|
} |
} |
$output=~ |
$output=~ |
s/\<((?:input|select)[^\>]+\Qjavascript:setSubmittedPart\E)\(\s*[\'\"]([^\'\"]+)[\'\"]*\s*\)/\<$1('$2','$prefix')/gsi; |
s/\<((?:input|select)[^\>]+\Qjavascript:setSubmittedPart\E)\(\s*[\'\"]([^\'\"]+)[\'\"]*\s*\)/\<$1('$2','$prefix')/gsi; |
|
$output=~ |
|
s/\<(input[^\>]+\Qonfocus=\"javascript:disableAutoComplete\E)\(\'([^\']+)\'\)(;\")/\<$1('$idprefix$2')$3/gsi; |
} |
} |
$thisdir=~s/\/[^\/]*$//; |
$thisdir=~s/\/[^\/]*$//; |
foreach (@rlinks) { |
foreach (@rlinks) { |
Line 431 ENDEXT
|
Line 467 ENDEXT
|
if (($nforms) && ($nuploads)) { |
if (($nforms) && ($nuploads)) { |
$allscript .= &Apache::lonhtmlcommon::file_submissionchk_js(\%turninpaths,\%multiresps); |
$allscript .= &Apache::lonhtmlcommon::file_submissionchk_js(\%turninpaths,\%multiresps); |
} |
} |
|
if (($nforms) && (&Apache::lonhtmlcommon::htmlareabrowser())) { |
|
my %textarea_args = ( |
|
dragmath => 'math', |
|
); |
|
$allscript .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args); |
|
} |
|
if ($ntimers) { |
|
$allscript .= '<script type="text/javascript">'."\n". |
|
'// <![CDATA['."\n". |
|
'function pageTimer(form,prefix) {'."\n". |
|
" form.elements[prefix+'markaccess'].value = 'yes';\n". |
|
" form.submit();\n". |
|
'}'."\n". |
|
'// ]]>'. |
|
"\n</script>\n"; |
|
} |
# ------------------------------------------------------------------ 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, |
Line 447 ENDEXT
|
Line 499 ENDEXT
|
} |
} |
$fmtag .= ' action="'. |
$fmtag .= ' action="'. |
&Apache::lonenc::check_encrypt($requrl) |
&Apache::lonenc::check_encrypt($requrl) |
.'">'; |
.'" id="LC_page">'; |
$r->print($fmtag); |
$r->print($fmtag); |
} |
} |
} elsif (($target eq 'tex') || ($target eq 'tex_answer')) { |
} elsif (($target eq 'tex') || ($target eq 'tex_answer')) { |
Line 480 ENDEXT
|
Line 532 ENDEXT
|
my $avespan=$lcm/($#colcont+1); |
my $avespan=$lcm/($#colcont+1); |
for ($j=0;$j<=$#colcont;$j++) { |
for ($j=0;$j<=$#colcont;$j++) { |
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') || ($target eq 'tex_answer')) { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print('<td colspan="'.$avespan.'"'); |
$r->print('<td colspan="'.$avespan.'"'); |
Line 528 ENDEXT
|
Line 579 ENDEXT
|
$r->print('>'.$metainfo.'<embed src="'. |
$r->print('>'.$metainfo.'<embed src="'. |
$hash{'src_'.$rid}.'"></embed>'); |
$hash{'src_'.$rid}.'"></embed>'); |
} elsif (&Apache::lonnet::declutter($hash{'src_'.$rid}) !~/\.(sequence|page)$/) { |
} elsif (&Apache::lonnet::declutter($hash{'src_'.$rid}) !~/\.(sequence|page)$/) { |
$r->print($metainfo.'<b>'.$hash{'title_'.$rid}.'</b><br />'. |
$r->print($metainfo.'<b>'.$hash{'title_'.$rid}.'</b><br />'); |
&mt('It is recommended that you use an up-to-date virus scanner before handling this file.').'</p><p><table>'. |
unless ($cellemb{$rid} eq 'wrp') { |
&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 />'); |
$r->print(&mt('It is recommended that you use an up-to-date virus scanner before handling this file.')); |
|
} |
|
$r->print('</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 />'); |
} |
} |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print('</td>'); |
$r->print('</td>'); |
Line 554 ENDEXT
|
Line 611 ENDEXT
|
} |
} |
# ---------------------------------------------------------------- Submit, etc. |
# ---------------------------------------------------------------- Submit, etc. |
if ($nforms) { |
if ($nforms) { |
|
my $class; |
|
if ($nforms > 1) { |
|
$class = ' class="LC_hwk_submit"'; |
|
if ($ntimers) { |
|
$nforms = 1; |
|
$class = ''; |
|
} |
|
} |
$r->print( |
$r->print( |
'<input name="all_submit" value="Submit All" type="'. |
'<input name="all_submit" value="'.&mt('Submit All').'" type="'. |
(($nforms>1)?'submit':'hidden').'"></input></form>'); |
(($nforms>1)?'submit':'hidden').'"'.$class.' id="all_submit" />'. |
|
'<div id="msg_all_submit" style="display:none">'. |
|
&mt('Processing your submission ...').'</div></form>'); |
} |
} |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
unless (($target eq 'tex') || ($target eq 'tex_answer')) { |
$r->print(&Apache::loncommon::end_page({'discussion' |
$r->print(&Apache::loncommon::end_page({'discussion' |
Line 601 sub get_buttons {
|
Line 668 sub get_buttons {
|
my $symb=&Apache::lonnet::encode_symb($hash->{'map_id_'.$mapid}, |
my $symb=&Apache::lonnet::encode_symb($hash->{'map_id_'.$mapid}, |
$resid, |
$resid, |
$hash->{'src_'.$rid}); |
$hash->{'src_'.$rid}); |
|
unless ($env{'request.role.adv'}) { |
|
if (&Apache::lonnet::EXT('resource.0.buttonshide',$symb)) { |
|
return; |
|
} |
|
} |
if ($hash->{'encrypted_'.$rid}) { |
if ($hash->{'encrypted_'.$rid}) { |
$symb=&Apache::lonenc::encrypted($symb); |
$symb=&Apache::lonenc::encrypted($symb); |
$esrc=&Apache::lonenc::encrypted($esrc); |
$esrc=&Apache::lonenc::encrypted($esrc); |
Line 658 sub get_buttons {
|
Line 730 sub get_buttons {
|
'</a>'; |
'</a>'; |
} |
} |
} |
} |
|
if (($env{'request.course.id'}) && (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) { |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $file=&Apache::lonnet::declutter($hash->{'src_'.$rid}); |
|
my ($cfile,$home,$switchserver,$forceedit,$forceview) = |
|
&Apache::lonnet::can_edit_resource($file,$cnum,$cdom,$hash->{'src_'.$rid},$symb); |
|
if ($cfile ne '') { |
|
my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver, |
|
$forceedit,1,$symb,undef, |
|
&escape($env{'form.title'})); |
|
if ($jscall) { |
|
my $icon = 'pcstr.png'; |
|
my $label = &mt('Edit'); |
|
my $title = &mt('Edit this resource'); |
|
my $pic = '<img src="'.&Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$icon).'"'. |
|
' class="LC_icon" alt="'.$label.'" title="'.$title.'" />'; |
|
$metainfo .= ' <a href="javascript:'.$jscall.';">'.$pic.'</a>'; |
|
} |
|
} |
|
} |
return $metainfo; |
return $metainfo; |
} |
} |
|
|