version 1.81, 2007/06/22 22:30:45
|
version 1.88, 2008/11/20 13:11:43
|
Line 27
|
Line 27
|
# |
# |
### |
### |
|
|
|
=head1 NAME |
|
|
|
Apache::lonpage - Page Handler |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked by /etc/httpd/conf/srm.conf: |
|
|
|
<LocationMatch "^/res/.*\.page$> |
|
SetHandler perl-script |
|
PerlHandler Apache::lonpage |
|
</LocationMatch> |
|
|
|
=head1 INTRODUCTION |
|
|
|
This module renders a .page resource. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 HANDLER SUBROUTINE |
|
|
|
This routine is called by Apache and mod_perl. |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
set document type for header only |
|
|
|
=item * |
|
|
|
tie db file |
|
|
|
=item * |
|
|
|
render page |
|
|
|
=item * |
|
|
|
add to symb list |
|
|
|
=item * |
|
|
|
page parms |
|
|
|
=item * |
|
|
|
Get SSI output, post parameters |
|
|
|
=item * |
|
|
|
SSI cell rendering |
|
|
|
=item * |
|
|
|
Deal with Applet codebases |
|
|
|
=item * |
|
|
|
Build page |
|
|
|
=item * |
|
|
|
send headers |
|
|
|
=item * |
|
|
|
start body |
|
|
|
=item * |
|
|
|
start form |
|
|
|
=item * |
|
|
|
start table |
|
|
|
=item * |
|
|
|
submit element, etc, render page, untie hash |
|
|
|
=back |
|
|
|
=head1 OTHER SUBROUTINES |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
euclid() : Euclid's method for determining the greatest common denominator. |
|
|
|
=item * |
|
|
|
tracetable() : Build page table. |
|
|
|
=back |
|
|
|
=cut |
|
|
|
|
package Apache::lonpage; |
package Apache::lonpage; |
|
|
use strict; |
use strict; |
Line 78 sub tracetable {
|
Line 179 sub tracetable {
|
my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}}; |
my $frid=$hash{'map_finish_'.$hash{'src_'.$rid}}; |
$sofar= |
$sofar= |
&tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}}, |
&tracetable($sofar,$hash{'map_start_'.$hash{'src_'.$rid}}, |
'&'.$frid.'&'); |
'&'.$frid.$beenhere); |
$sofar++; |
$sofar++; |
if ($hash{'src_'.$frid}) { |
if ($hash{'src_'.$frid}) { |
my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid}); |
my $brepriv=&Apache::lonnet::allowed('bre',$hash{'src_'.$frid}); |
Line 206 sub handler {
|
Line 307 sub handler {
|
my %ssivlink=(); |
my %ssivlink=(); |
my %ssialink=(); |
my %ssialink=(); |
|
|
my %metalink=(); |
|
|
|
my %cellemb=(); |
my %cellemb=(); |
|
|
my $allscript=''; |
my $allscript=''; |
Line 230 sub handler {
|
Line 329 sub handler {
|
if ($hash{'encrypted_'.$_}) { |
if ($hash{'encrypted_'.$_}) { |
$src=&Apache::lonenc::encrypted($src); |
$src=&Apache::lonenc::encrypted($src); |
} |
} |
$metalink{$_}=$src.'.meta'; |
|
$cellemb{$_}= |
$cellemb{$_}= |
&Apache::loncommon::fileembstyle($extension); |
&Apache::loncommon::fileembstyle($extension); |
if ($cellemb{$_} eq 'ssi') { |
if ($cellemb{$_} eq 'ssi') { |
Line 381 sub handler {
|
Line 479 sub handler {
|
$r->send_http_header; |
$r->send_http_header; |
# ------------------------------------------------------------------------ Head |
# ------------------------------------------------------------------------ Head |
if ($allscript) { |
if ($allscript) { |
$allscript .= |
$allscript = |
"\n<script type=\"text/javascript\">\n". |
"\n".'<script type="text/javascript">'."\n". |
$allscript."\n</script>\n"; |
$allscript. |
|
"\n</script>\n"; |
} |
} |
# ------------------------------------------------------------------ Start body |
# ------------------------------------------------------------------ Start body |
$r->print(&Apache::loncommon::start_page(undef,undef, |
$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 method="post" action="'. |
$r->print('<form name="lonhomework" method="post" enctype="multipart/form-data" action="'. |
&Apache::lonenc::check_encrypt($requrl) |
&Apache::lonenc::check_encrypt($requrl) |
.'">'); |
.'">'); |
} |
} |
Line 411 sub handler {
|
Line 510 sub handler {
|
} else { |
} else { |
$r->print('<table width="100%" cols="'.$lcm.'" border="0">'); |
$r->print('<table width="100%" cols="'.$lcm.'" border="0">'); |
} |
} |
# which icons do we use? |
|
my $extension='png'; |
|
if ($env{'environment.icons'} eq 'classic') { $extension='gif'; } |
|
# generate rows |
# generate rows |
for ($i=0;$i<=$#rows;$i++) { |
for ($i=0;$i<=$#rows;$i++) { |
if ($rows[$i]) { |
if ($rows[$i]) { |
Line 424 sub handler {
|
Line 520 sub handler {
|
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 = ''; |
|
my $esrc=&Apache::lonnet::declutter($hash{'src_'.$rid}); |
my $metainfo =&get_buttons(\%hash,$rid).'<br />'; |
my ($mapid,$resid)=split(/\./,$rid); |
|
my $symb=&Apache::lonnet::encode_symb($hash{'map_id_'.$mapid},$resid,$hash{'src_'.$rid}); |
|
if ($hash{'encrypted_'.$rid}) { |
|
$symb=&Apache::lonenc::encrypted($symb); |
|
$esrc=&Apache::lonenc::encrypted($esrc); |
|
} |
|
if ($hash{'src_'.$rid} !~ m-^/uploaded/- |
|
&& !$env{'request.enc'} |
|
&& ($env{'request.role.adv'} |
|
|| !$hash{'encrypted_'.$rid})) { |
|
$metainfo ='<a name="'.&escape($symb).'" />'. |
|
'<a href="'.$metalink{$rid}.'" target="LONcatInfo">'. |
|
'<img src="/adm/lonMisc/cat_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'; |
|
} |
|
$metainfo .= '<a href="/adm/evaluate?postdata='. |
|
&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)$/) && |
|
(&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) && |
|
($hash{'src_'.$rid} !~ m-^/uploaded/-)) { |
|
my ($mapid,$resid)=split(/\./,$rid); |
|
my $symb= |
|
&Apache::lonnet::declutter($hash{'map_id_'.$mapid}). |
|
'___'.$resid.'___'. |
|
&Apache::lonnet::declutter($hash{'src_'.$rid}); |
|
$metainfo.= |
|
'<a href="/adm/grades?symb='.&escape($symb). |
|
# '&command=submission" target="LONcatInfo">'. |
|
'&command=submission">'. |
|
'<img src="/adm/lonMisc/subm_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'. |
|
'<a href="/adm/grades?symb='.&escape($symb). |
|
# '&command=gradingmenu" target="LONcatInfo">'. |
|
'&command=gradingmenu">'. |
|
'<img src="/adm/lonMisc/pgrd_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'. |
|
'<a href="/adm/parmset?symb='.&escape($symb). |
|
# '" target="LONcatInfo">'. |
|
'" >'. |
|
'<img src="/adm/lonMisc/pprm_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'; |
|
} |
|
$metainfo.='<br></br>'; |
|
unless ($target eq 'tex') { |
unless ($target eq 'tex') { |
$r->print('<td colspan="'.$avespan.'"'); |
$r->print('<td colspan="'.$avespan.'"'); |
} |
} |
Line 580 sub handler {
|
Line 629 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
1; |
sub get_buttons { |
__END__ |
my ($hash,$rid) = @_; |
|
|
=head1 NAME |
|
|
|
Apache::lonpage - Page Handler |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked by /etc/httpd/conf/srm.conf: |
|
|
|
<LocationMatch "^/res/.*\.page$> |
# which icons do we use? |
SetHandler perl-script |
my $extension='png'; |
PerlHandler Apache::lonpage |
if ($env{'environment.icons'} eq 'classic') { $extension='gif'; } |
</LocationMatch> |
|
|
my $metainfo = ''; |
=head1 INTRODUCTION |
my $esrc=&Apache::lonnet::declutter($hash->{'src_'.$rid}); |
|
my ($mapid,$resid)=split(/\./,$rid); |
This module renders a .page resource. |
my $symb=&Apache::lonnet::encode_symb($hash->{'map_id_'.$mapid}, |
|
$resid, |
This is part of the LearningOnline Network with CAPA project |
$hash->{'src_'.$rid}); |
described at http://www.lon-capa.org. |
if ($hash->{'encrypted_'.$rid}) { |
|
$symb=&Apache::lonenc::encrypted($symb); |
=head1 HANDLER SUBROUTINE |
$esrc=&Apache::lonenc::encrypted($esrc); |
|
} |
This routine is called by Apache and mod_perl. |
if ($hash->{'src_'.$rid} !~ m-^/uploaded/- |
|
&& !$env{'request.enc'} |
=over 4 |
&& ($env{'request.role.adv'} |
|
|| !$hash->{'encrypted_'.$rid})) { |
=item * |
$metainfo .='<a name="'.&escape($symb).'" />'. |
|
'<a href="'.$hash->{'src_'.$rid}.'.meta'.'" target="LONcatInfo">'. |
set document type for header only |
'<img src="/adm/lonMisc/cat_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'; |
=item * |
} |
|
$metainfo .= '<a href="/adm/evaluate?postdata='. |
tie db file |
&escape($esrc). |
|
'" target="LONcatInfo">'. |
=item * |
'<img src="/adm/lonMisc/eval_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'; |
render page |
if (($hash->{'src_'.$rid}=~/\.(problem|exam|quiz|assess|survey|form)$/) && |
|
($hash->{'src_'.$rid} !~ m-^/uploaded/-)) { |
=item * |
|
|
if (&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) { |
add to symb list |
$metainfo.= |
|
'<a href="/adm/grades?symb='.&escape($symb). |
=item * |
# '&command=submission" target="LONcatInfo">'. |
|
'&command=submission">'. |
page parms |
'<img src="/adm/lonMisc/subm_button.'.$extension.'" class="LC_icon" />'. |
|
'</a>'. |
=item * |
'<a href="/adm/grades?symb='.&escape($symb). |
|
# '&command=gradingmenu" target="LONcatInfo">'. |
Get SSI output, post parameters |
'&command=gradingmenu">'. |
|
'<img src="/adm/lonMisc/pgrd_button.'.$extension.'" class="LC_icon" />'. |
=item * |
'</a>'; |
|
} |
SSI cell rendering |
if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) { |
|
$metainfo.= |
=item * |
'<a href="/adm/parmset?symb='.&escape($symb). |
|
# '" target="LONcatInfo">'. |
Deal with Applet codebases |
'" >'. |
|
'<img src="/adm/lonMisc/pprm_button.'.$extension.'" class="LC_icon" />'. |
=item * |
'</a>'; |
|
} |
Build page |
} |
|
return $metainfo; |
=item * |
} |
|
|
send headers |
|
|
|
=item * |
|
|
|
start body |
|
|
|
=item * |
|
|
|
start form |
|
|
|
=item * |
|
|
|
start table |
|
|
|
=item * |
|
|
|
submit element, etc, render page, untie hash |
|
|
|
=back |
|
|
|
=head1 OTHER SUBROUTINES |
|
|
|
=over 4 |
|
|
|
=item * |
|
|
|
euclid() : Euclid's method for determining the greatest common denominator. |
|
|
|
=item * |
|
|
|
tracetable() : Build page table. |
|
|
|
=back |
1; |
|
__END__ |
|
|
=cut |
|
|
|
|
|
|
|