--- rat/lonsequence.pm 2002/05/24 14:44:32 1.12 +++ rat/lonsequence.pm 2004/05/21 20:16:40 1.17 @@ -2,7 +2,7 @@ # # Sequence Handler # -# $Id: lonsequence.pm,v 1.12 2002/05/24 14:44:32 www Exp $ +# $Id: lonsequence.pm,v 1.17 2004/05/21 20:16:40 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,6 +45,8 @@ use GDBM_File; use Apache::lonratedt; use Apache::lonratsrv; use Apache::lonpageflip; +use Apache::loncommon; +use Apache::lonlocal; my %selhash; my $successtied; @@ -61,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 { @@ -89,7 +101,7 @@ function queue(val) { ENDSCRIPT } - $r->print(''); + $r->print(&Apache::loncommon::bodytag('Map Contents').'

'.$url.'

'); # ------------------ This is trying to select. Provide buttons and tie %selhash if ($ENV{'form.forceselect'}) { $r->print(< @@ -100,7 +112,7 @@ onClick="javascript:select_group()"> ENDSELECT my $diropendb = "/home/httpd/perl/tmp/$ENV{'user.domain'}\_$ENV{'user.name'}_groupsec.db"; - if (tie(%selhash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) { + if (tie(%selhash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) { if ($ENV{'form.launch'} eq '1') { &start_fresh_session(); } @@ -151,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($_)) { @@ -162,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=''; @@ -214,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; } @@ -234,7 +250,7 @@ sub handler { if (($ENV{'request.course.fn'}) && (!$ENV{'form.forceselect'})) { my $last; if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'_symb.db', - &GDBM_READER,0640)) { + &GDBM_READER(),0640)) { $last=$hash{'last_direction'}; untie(%hash); } @@ -245,8 +261,9 @@ sub handler { } # ------------------------------------------------------------- Tie big db file if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db', - &GDBM_READER,0640)) { + &GDBM_READER(),0640)) { my $disid=''; + my $randomout =''; if ($direction eq 'back') { $disid=$bighash{'map_finish_'.$requrl}; @@ -256,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, @@ -280,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;