--- rat/lonsequence.pm 2003/04/07 20:47:06 1.15
+++ rat/lonsequence.pm 2004/09/10 06:38:24 1.20
@@ -2,7 +2,7 @@
#
# Sequence Handler
#
-# $Id: lonsequence.pm,v 1.15 2003/04/07 20:47:06 www Exp $
+# $Id: lonsequence.pm,v 1.20 2004/09/10 06:38:24 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -46,6 +46,7 @@ use Apache::lonratedt;
use Apache::lonratsrv;
use Apache::lonpageflip;
use Apache::loncommon;
+use Apache::lonlocal;
my %selhash;
my $successtied;
@@ -164,7 +165,7 @@ ENDSELECT
# ----------------------------- successtied is now '1' if in working selectmode
my ($errtext,$fatal)=&mapread(&Apache::lonnet::filelocation('',$url),'');
if ($fatal==1) {
- $r->print('
Map contents are not shown in order.
');
+ $r->print(''.&mt('Map contents are not shown in order.').'
');
}
my $idx=0;
foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
@@ -177,7 +178,7 @@ ENDSELECT
$title=~s/\&colon\;/\:/g;
$url=~s/\&colon\;/\:/g;
unless ($title) { $title=(split(/\//,$url))[-1] };
- unless ($title) { $title='Empty'; }
+ unless ($title) { $title=''.&mt('Empty').''; }
if ($url) {
if ($successtied) {
my $checked='';
@@ -229,7 +230,7 @@ sub handler {
my $r=shift;
if ($r->header_only) {
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
return OK;
}
@@ -245,6 +246,8 @@ sub handler {
# ------------------------------------------------------------ Tie symb db file
my $disurl='';
my $dismapid='';
+ my $exitdisid = '';
+ my $arrow_dir = '';
if (($ENV{'request.course.fn'}) && (!$ENV{'form.forceselect'})) {
my $last;
@@ -262,18 +265,26 @@ sub handler {
if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',
&GDBM_READER(),0640)) {
my $disid='';
+ my $randomout ='';
if ($direction eq 'back') {
$disid=$bighash{'map_finish_'.$requrl};
} else {
$disid=$bighash{'map_start_'.$requrl};
- }
+ }
if ($disid) {
$disurl=$bighash{'src_'.$disid};
$dismapid=(split(/\./,$disid))[1];
+ $randomout = $bighash{'randomout_'.$disid};
+ } elsif (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'_symb.db',
+ &GDBM_READER(),0640)) {
+ $last=$hash{'last_known'};
+ untie(%hash);
}
-# ------------------------- If this is an empty one, skip to next non-empty one
- if ((!$disurl) && ($disid)) {
+
+
+# ----------- If this is an empty one, or hidden, skip to next non-empty or non-hidden one
+ while ( ((!$disurl) && ($disid)) || ($randomout && $disid) ) {
$direction=($direction?$direction:'forward');
($disid,$requrl)=
&Apache::lonpageflip::fullmove($disid,
@@ -281,8 +292,11 @@ sub handler {
if ($disid) {
$disurl=$bighash{'src_'.$disid};
$dismapid=(split(/\./,$disid))[1];
+ $randomout = $bighash{'randomout_'.$disid};
}
}
+ $exitdisid = $disid;
+ $arrow_dir = $direction;
# --------------------------------------- Untie hash, make sure to come by here
untie(%bighash);
@@ -290,18 +304,48 @@ 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 => $dismapid,
'last_known' => &Apache::lonnet::declutter($disurl));
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->header_out(Location => 'http://'.$ENV{'HTTP_HOST'}.$disurl);
return REDIRECT;
} else {
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
- &viewmap($r,$requrl);
+ if ($exitdisid eq '') {
+ my %lt =&Apache::lonlocal::texthash(
+ 'back' => 'beginning',
+ 'forward' => 'end',
+ 'emfo' => 'Empty Folder/Sequence',
+ 'nere' => 'Next resource could not be displayed',
+ 'goba' => 'Go Back',
+ 'nacc' => 'Navigate Course Content',
+ );
+ my $warnmsg = 'As all folders and sequences ';
+ if ($arrow_dir eq 'forward') {
+ $warnmsg .= &mt('following the current resource were empty').',';
+ } elsif ($arrow_dir eq 'back') {
+ $warnmsg .= &mt('preceding the current resource were empty').',';
+ }
+ $warnmsg .= &mt('you have now reached the').' '.$lt{$arrow_dir}.' '.&mt('of the course.');
+ my $bodytag=&Apache::loncommon::bodytag('Empty Folder/Sequence');
+ $r->print(<$lt{'emfo'}
+$bodytag
+$lt{'nere'}
+$warnmsg
+
+