--- rat/lonsequence.pm 2002/08/31 00:43:13 1.14
+++ rat/lonsequence.pm 2004/05/21 20:16:40 1.17
@@ -2,7 +2,7 @@
#
# Sequence Handler
#
-# $Id: lonsequence.pm,v 1.14 2002/08/31 00:43:13 www Exp $
+# $Id: lonsequence.pm,v 1.17 2004/05/21 20:16:40 raeburn 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;
@@ -62,6 +63,16 @@ sub attemptread {
}
}
+sub mapread {
+ my $fn=shift;
+ &Apache::lonnet::repcopy($fn);
+ if (-e $fn) {
+ return &Apache::lonratedt::mapread($fn,'');
+ } else {
+ return ();
+ }
+}
+
# ---------------------------------------------------------------- View Handler
sub viewmap {
@@ -152,6 +163,10 @@ ENDSELECT
}
}
# ----------------------------- successtied is now '1' if in working selectmode
+ my ($errtext,$fatal)=&mapread(&Apache::lonnet::filelocation('',$url),'');
+ if ($fatal==1) {
+ $r->print('
'.&mt('Map contents are not shown in order.').'
');
+ }
my $idx=0;
foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
if (defined($_)) {
@@ -163,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='';
@@ -215,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;
}
@@ -248,6 +263,7 @@ 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};
@@ -257,9 +273,10 @@ sub handler {
if ($disid) {
$disurl=$bighash{'src_'.$disid};
$dismapid=(split(/\./,$disid))[1];
+ $randomout = $bighash{'randomout_'.$disid};
}
-# ------------------------- 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
+ if ( ((!$disurl) && ($disid)) || ($randomout && $disid) ) {
$direction=($direction?$direction:'forward');
($disid,$requrl)=
&Apache::lonpageflip::fullmove($disid,
@@ -281,11 +298,11 @@ sub handler {
# -------------------------------------------------- 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);
return OK;