--- rat/lonsequence.pm 2008/11/18 19:13:37 1.34 +++ rat/lonsequence.pm 2021/12/14 21:38:14 1.48.2.4 @@ -2,7 +2,7 @@ # # Sequence Handler # -# $Id: lonsequence.pm,v 1.34 2008/11/18 19:13:37 jms Exp $ +# $Id: lonsequence.pm,v 1.48.2.4 2021/12/14 21:38:14 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,35 +27,7 @@ # http://www.lon-capa.org/ # -=head1 NAME - -Apache::lonsequence - -=head1 SYNOPSIS -Handler for showing sequence objects of -educational resources. - -This is part of the LearningOnline Network with CAPA project -described at http://www.lon-capa.org. - -=head1 SUBROUTINES - -=over - -=item handler() - -=item viewmap() - -=item attemptread() - -=item mapread() - -=item start_fresh_session() - -=back - -=cut package Apache::lonsequence; @@ -64,10 +36,13 @@ use Apache::lonnet; use Apache::Constants qw(:common :http REDIRECT); use GDBM_File; use LONCAPA::map(); +use LONCAPA; use Apache::lonpageflip(); use Apache::loncommon(); use Apache::groupsort(); use Apache::lonlocal; +use Apache::lonnavmaps(); +use Apache::lonenc(); use HTML::Entities(); my %selhash; @@ -130,14 +105,15 @@ ENDSCRIPT '
'.&mt('Map contents are not shown in order.').'
' + .&mt('Map contents are not shown in order.') + .'
'. + &mt('No items found in folder'). + '
'); + } + $r->print(&Apache::loncommon::end_page()); + } else { + $r->print(&Apache::loncommon::start_page($maptitle,undef,$args). + ''. + &mt('Folder no longer appears to be a part of the course'). + '
'. + &Apache::loncommon::end_page()); + } + } else { + $r->print(&Apache::loncommon::start_page($maptitle,undef,$args). + ''. + &mt('Error: could not determine contents of folder'). + '
'. + &Apache::loncommon::end_page()); + } + $r->rflush(); + return OK; + } + } my %hash; my %bighash; - my $requrl=$r->uri; $successtied=0; # ------------------------------------------------------------ Tie symb db file @@ -243,6 +332,7 @@ sub handler { my $dismapid=''; my $exitdisid = ''; my $arrow_dir = ''; + my $is_encrypted = ''; if (($env{'request.course.fn'}) && (!$env{'form.forceselect'})) { my $last; @@ -273,6 +363,9 @@ sub handler { if (!$env{'request.role.adv'}) { $randomout = $bighash{'randomout_'.$disid}; } + if (!$env{'request.role.adv'}) { + $is_encrypted = $bighash{'encrypted_'.$disid}; + } } elsif (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'_symb.db', &GDBM_READER(),0640)) { $last=$hash{'last_known'}; @@ -292,6 +385,9 @@ sub handler { if (!$env{'request.role.adv'}) { $randomout = $bighash{'randomout_'.$disid}; } + if (!$env{'request.role.adv'}) { + $is_encrypted = $bighash{'encrypted_'.$disid}; + } } } $exitdisid = $disid; @@ -305,29 +401,42 @@ sub handler { # now either disurl is set (going to first page), or we need another display if ($disurl) { # -------------------------------------------------- Has first or last resource - &Apache::lonnet::symblist($requrl,$disurl => [$disurl,$dismapid], - 'last_known' => [$disurl,$dismapid]); + my $showdisurl = $disurl; + if ($is_encrypted) { + $showdisurl = &Apache::lonenc::encrypted($disurl); + } + if ($disurl =~ m{^/adm/navmaps(\?|$)}) { + &Apache::lonnet::symblist($requrl,$disurl => [$disurl,$dismapid]); + } else { + &Apache::lonnet::symblist($requrl,$disurl => [$disurl,$dismapid], + 'last_known' => [$disurl,$dismapid]); + } &Apache::loncommon::content_type($r,'text/html'); - $r->header_out(Location => 'http://'.$ENV{'HTTP_HOST'}.$disurl); + $r->header_out(Location => &Apache::lonnet::absolute_url(). + $showdisurl); return REDIRECT; } else { &Apache::loncommon::content_type($r,'text/html'); $r->send_http_header; if ($exitdisid eq '' && $arrow_dir ne '') { my %lt =&Apache::lonlocal::texthash( - 'back' => 'beginning', - 'forward' => 'end', 'nere' => 'Next resource could not be displayed', 'goba' => 'Go Back', - 'nacc' => 'Navigate Course Content', + 'nacc' => 'Course Contents', ); - my $warnmsg = &mt('As all folders and sequences '); + if (&Apache::loncommon::course_type() eq 'Community') { + $lt{'nav'} = &mt('Community Contents'); + } + my $warnmsg; if ($arrow_dir eq 'forward') { - $warnmsg .= &mt('following the current resource were empty').','; + $warnmsg = &mt('As all folders and sequences ' + .'following the current resource were empty, ' + .'you have now reached the end of the course.'); } elsif ($arrow_dir eq 'back') { - $warnmsg .= &mt('preceding the current resource were empty').','; + $warnmsg = &mt('As all folders and sequences ' + .'preceding the current resource were empty, ' + .'you have now reached the beginning of the course.'); } - $warnmsg .= &mt('you have now reached the').' '.$lt{$arrow_dir}.' '.&mt('of the course.'); my $start_page= &Apache::loncommon::start_page('Empty Folder/Sequence'); my $end_page= @@ -352,7 +461,35 @@ ENDNONE 1; __END__ +=head1 NAME + +Apache::lonsequence + +=head1 SYNOPSIS + +Handler for showing sequence objects of +educational resources. + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + +=head1 SUBROUTINES + +=over + +=item handler() + +=item viewmap() + +=item attemptread() +=item mapread() + +=item start_fresh_session() + +=back + +=cut