--- rat/lonpage.pm 2012/11/30 20:48:20 1.99
+++ rat/lonpage.pm 2014/12/30 20:03:19 1.107
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Page Handler
#
-# $Id: lonpage.pm,v 1.99 2012/11/30 20:48:20 raeburn Exp $
+# $Id: lonpage.pm,v 1.107 2014/12/30 20:03:19 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -36,6 +36,7 @@ use strict;
use Apache::Constants qw(:common :http);
use Apache::lonnet;
use Apache::loncommon();
+use Apache::lonhtmlcommon;
use Apache::lonxml();
use Apache::lonlocal;
use Apache::lonmenu;
@@ -264,6 +265,7 @@ ENDEXT
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$src);
my $prefix=$_.'_';
+ my $idprefix= join('_',($mapid,$resid,''));
my %posthash=('request.prefix' => $prefix,
'LONCAPA_INTERNAL_no_discussion' => 'true',
'symb' => $symb);
@@ -305,6 +307,12 @@ ENDEXT
#some additional cleanup necessary for LateX (due to limitations of table environment
$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 $token;
my $thisdir=$src;
@@ -369,6 +377,21 @@ ENDEXT
}
$output=~
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 ($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
\E)/
$1$idprefix$2$3$4/g;
+ $output=~
+ s/(\Q
)/$1$idprefix$2$3$4/g;
if ($nuploads) {
$output=~
s/\<(input[^\>]+name=\"\Q$prefix\EHWFILE[^\>]+)\s*id\s*\=\s*[\'\"]*([^\'\"]+)[\'\"]*([^\)]*)\>/\<$1 id="$prefix$2" $3\>/gsi;
@@ -431,6 +454,12 @@ ENDEXT
if (($nforms) && ($nuploads)) {
$allscript .= &Apache::lonhtmlcommon::file_submissionchk_js(\%turninpaths,\%multiresps);
}
+ if (($nforms) && (&Apache::lonhtmlcommon::htmlareabrowser())) {
+ my %textarea_args = (
+ dragmath => 'math',
+ );
+ $allscript .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args);
+ }
# ------------------------------------------------------------------ Start body
$r->print(&Apache::loncommon::start_page(undef,$allscript,
{'force_register' => 1,
@@ -447,7 +476,7 @@ ENDEXT
}
$fmtag .= ' action="'.
&Apache::lonenc::check_encrypt($requrl)
- .'">';
+ .'" id="LC_page">';
$r->print($fmtag);
}
} elsif (($target eq 'tex') || ($target eq 'tex_answer')) {
@@ -480,7 +509,6 @@ ENDEXT
my $avespan=$lcm/($#colcont+1);
for ($j=0;$j<=$#colcont;$j++) {
my $rid=$colcont[$j];
-
my $metainfo =&get_buttons(\%hash,$rid).' ';
unless (($target eq 'tex') || ($target eq 'tex_answer')) {
$r->print(' print('>'.$metainfo.' ');
} elsif (&Apache::lonnet::declutter($hash{'src_'.$rid}) !~/\.(sequence|page)$/) {
- $r->print($metainfo.''.$hash{'title_'.$rid}.' '.
- &mt('It is recommended that you use an up-to-date virus scanner before handling this file.').'
'.
- &Apache::londocs::entryline(0,&mt("Click to download or use your browser's Save Link function"),'/'.&Apache::lonnet::declutter($hash{'src_'.$rid})).'
');
+ $r->print($metainfo.''.$hash{'title_'.$rid}.' ');
+ unless ($cellemb{$rid} eq 'wrp') {
+ $r->print(&mt('It is recommended that you use an up-to-date virus scanner before handling this file.'));
+ }
+ $r->print('
'.
+ &Apache::londocs::entryline(0,
+ &mt("Click to download or use your browser's Save Link function"),
+ '/'.&Apache::lonnet::declutter($hash{'src_'.$rid})).
+ '
');
}
unless (($target eq 'tex') || ($target eq 'tex_answer')) {
$r->print(' ');
@@ -554,9 +588,15 @@ ENDEXT
}
# ---------------------------------------------------------------- Submit, etc.
if ($nforms) {
+ my $class;
+ if ($nforms > 1) {
+ $class = ' class="LC_hwk_submit"';
+ }
$r->print(
- '
');
+ '
'.
+ '
'.
+ &mt('Processing your submission ...').'
');
}
unless (($target eq 'tex') || ($target eq 'tex_answer')) {
$r->print(&Apache::loncommon::end_page({'discussion'
@@ -612,7 +652,9 @@ sub get_buttons {
|| !$hash->{'encrypted_'.$rid})) {
$metainfo .='
'.
'
'.
- ' '.
+ ' '.
' ';
}
if (($hash->{'src_'.$rid} !~ m{^/uploaded/}) &&
@@ -620,7 +662,9 @@ sub get_buttons {
$metainfo .= '
'.
- ' '.
+ ' '.
' ';
}
if (($hash->{'src_'.$rid}=~/$LONCAPA::assess_re/) &&
@@ -631,12 +675,16 @@ sub get_buttons {
'
'.
'&command=submission">'.
- ' '.
+ ' '.
' '.
'
'.
'&command=gradingmenu">'.
- ' '.
+ ' '.
' ';
}
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) {
@@ -644,10 +692,32 @@ sub get_buttons {
'
'.
'" >'.
- ' '.
+ ' '.
' ';
}
}
+ 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 = '
';
+ $metainfo .= '
'.$pic.' ';
+ }
+ }
+ }
return $metainfo;
}