Diff for /rat/lonsequence.pm between versions 1.14 and 1.19

version 1.14, 2002/08/31 00:43:13 version 1.19, 2004/08/29 16:30:53
Line 46  use Apache::lonratedt; Line 46  use Apache::lonratedt;
 use Apache::lonratsrv;  use Apache::lonratsrv;
 use Apache::lonpageflip;  use Apache::lonpageflip;
 use Apache::loncommon;  use Apache::loncommon;
   use Apache::lonlocal;
   
 my %selhash;  my %selhash;
 my $successtied;  my $successtied;
Line 62  sub attemptread { Line 63  sub attemptread {
     }      }
 }  }
   
   sub mapread {
       my $fn=shift;
       &Apache::lonnet::repcopy($fn);
       if (-e $fn) {
    return &Apache::lonratedt::mapread($fn,'');
       } else {
           return ();
       }
   }
   
 # ---------------------------------------------------------------- View Handler  # ---------------------------------------------------------------- View Handler
   
 sub viewmap {  sub viewmap {
Line 152  ENDSELECT Line 163  ENDSELECT
         }          }
     }      }
 # ----------------------------- successtied is now '1' if in working selectmode  # ----------------------------- successtied is now '1' if in working selectmode
       my ($errtext,$fatal)=&mapread(&Apache::lonnet::filelocation('',$url),'');
       if ($fatal==1) {
          $r->print('<p><b><font color="red">'.&mt('Map contents are not shown in order.').'</font></b></p><br />');
       }
     my $idx=0;      my $idx=0;
     foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {      foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
  if (defined($_)) {   if (defined($_)) {
Line 163  ENDSELECT Line 178  ENDSELECT
             $title=~s/\&colon\;/\:/g;              $title=~s/\&colon\;/\:/g;
             $url=~s/\&colon\;/\:/g;              $url=~s/\&colon\;/\:/g;
             unless ($title) { $title=(split(/\//,$url))[-1] };              unless ($title) { $title=(split(/\//,$url))[-1] };
             unless ($title) { $title='<i>Empty</i>'; }              unless ($title) { $title='<i>'.&mt('Empty').'</i>'; }
             if ($url) {              if ($url) {
  if ($successtied) {   if ($successtied) {
     my $checked='';      my $checked='';
Line 215  sub handler { Line 230  sub handler {
    my $r=shift;     my $r=shift;
   
    if ($r->header_only) {     if ($r->header_only) {
       $r->content_type('text/html');        &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;        $r->send_http_header;
       return OK;        return OK;
    }     }
Line 231  sub handler { Line 246  sub handler {
 # ------------------------------------------------------------ Tie symb db file  # ------------------------------------------------------------ Tie symb db file
   my $disurl='';    my $disurl='';
   my $dismapid='';    my $dismapid='';
     my $exitdisid = '';
     my $arrow_dir = '';
   
   if (($ENV{'request.course.fn'}) && (!$ENV{'form.forceselect'})) {    if (($ENV{'request.course.fn'}) && (!$ENV{'form.forceselect'})) {
        my $last;         my $last;
Line 248  sub handler { Line 265  sub handler {
        if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',         if (tie(%bighash,'GDBM_File',$ENV{'request.course.fn'}.'.db',
                     &GDBM_READER(),0640)) {                      &GDBM_READER(),0640)) {
    my $disid='';     my $disid='';
              my $randomout ='';
   
            if ($direction eq 'back') {             if ($direction eq 'back') {
        $disid=$bighash{'map_finish_'.$requrl};         $disid=$bighash{'map_finish_'.$requrl};
            } else {             } else {
                $disid=$bighash{'map_start_'.$requrl};                 $disid=$bighash{'map_start_'.$requrl};
            }              }
            if ($disid) {             if ($disid) {
        $disurl=$bighash{'src_'.$disid};         $disurl=$bighash{'src_'.$disid};
                $dismapid=(split(/\./,$disid))[1];                 $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');         $direction=($direction?$direction:'forward');
                ($disid,$requrl)=                 ($disid,$requrl)=
                          &Apache::lonpageflip::fullmove($disid,                           &Apache::lonpageflip::fullmove($disid,
Line 267  sub handler { Line 292  sub handler {
                if ($disid) {                 if ($disid) {
            $disurl=$bighash{'src_'.$disid};             $disurl=$bighash{'src_'.$disid};
                    $dismapid=(split(/\./,$disid))[1];                     $dismapid=(split(/\./,$disid))[1];
                      $randomout = $bighash{'randomout_'.$disid};
                }                 }
     }      }
              $exitdisid = $disid;
              $arrow_dir = $direction;
   
 # --------------------------------------- Untie hash, make sure to come by here  # --------------------------------------- Untie hash, make sure to come by here
            untie(%bighash);             untie(%bighash);
Line 276  sub handler { Line 304  sub handler {
    }     }
   
 # now either disurl is set (going to first page), or we need another display  # now either disurl is set (going to first page), or we need another display
   
    if ($disurl) {     if ($disurl) {
 # -------------------------------------------------- Has first or last resource  # -------------------------------------------------- Has first or last resource
       &Apache::lonnet::symblist($requrl,$disurl => $dismapid,        &Apache::lonnet::symblist($requrl,$disurl => $dismapid,
                    'last_known' => &Apache::lonnet::declutter($disurl));                      '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);        $r->header_out(Location => 'http://'.$ENV{'HTTP_HOST'}.$disurl);
       return REDIRECT;        return REDIRECT;
    } else {     } else {
        $r->content_type('text/html');         &Apache::loncommon::content_type($r,'text/html');
        $r->send_http_header;         $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(&mt('emfo'));
              $r->print(<<ENDNONE);
   <head><title>$lt{'emfo'}</title></head>
   $bodytag
   <h3>$lt{'nere'}</h3>
   <p>$warnmsg</p>
   <ul>
     <li><a href="javascript:history.go(-1)">$lt{'goba'}</a></li>
     <li><a href="/adm/navmaps">$lt{'nacc'}</a></li>
   </ul>
   </body>
    </html>
   ENDNONE
          } else {
              &viewmap($r,$requrl);
          }
        return OK;         return OK;
    }     }
 }  }

Removed from v.1.14  
changed lines
  Added in v.1.19


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>