Diff for /rat/lonsequence.pm between versions 1.8 and 1.11

version 1.8, 2002/05/23 10:19:30 version 1.11, 2002/05/23 15:07:55
Line 44  use Apache::Constants qw(:common :http R Line 44  use Apache::Constants qw(:common :http R
 use GDBM_File;  use GDBM_File;
 use Apache::lonratedt;  use Apache::lonratedt;
 use Apache::lonratsrv;  use Apache::lonratsrv;
   use Apache::lonpageflip;
   
 # ----------------------------------------------------------- Could not resolve  # ----------------------------------------------------------- Could not resolve
   
Line 73  sub attemptread { Line 74  sub attemptread {
 # ---------------------------------------------------------------- View Handler  # ---------------------------------------------------------------- View Handler
   
 sub viewmap {  sub viewmap {
     my ($r,$url,$adv,$errtext)=@_;      my ($r,$url)=@_;
     $r->print('<html>');      $r->print('<html>');
     if ($ENV{'form.forceselect'}) { $r->print(<<ENDSCRIPT);      if ($ENV{'form.forceselect'}) { $r->print(<<ENDSCRIPT);
 <script>  <script>
Line 95  function queue(val) { Line 96  function queue(val) {
     }      }
 }  }
   
   
   
 </script>  </script>
 ENDSCRIPT  ENDSCRIPT
     }      }
     $r->print('<body bgcolor="#FFFFFF">'.&buttons($adv));      $r->print('<body bgcolor="#FFFFFF">');
     if ($ENV{'form.forceselect'}) { $r->print(<<ENDSELECT);      if ($ENV{'form.forceselect'}) { $r->print(<<ENDSELECT);
 <form name=fileattr><input type=hidden name=acts value=''>  <form name=fileattr><input type=hidden name=acts value=''>
 <input type="button" name="close" value='CLOSE' onClick="self.close()">  <input type="button" name="close" value='CLOSE' onClick="self.close()">
Line 109  onClick="javascript:select_group()"> Line 108  onClick="javascript:select_group()">
 </form>     </form>   
 ENDSELECT  ENDSELECT
     }      }
     if ($errtext) {  
  $r->print($errtext.'<hr>');  
     }  
     my $idx=0;      my $idx=0;
     foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {      foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
  if (defined($_)) {   if (defined($_)) {
Line 165  sub handler { Line 161  sub handler {
    my $requrl=$r->uri;     my $requrl=$r->uri;
   
 # ------------------------------------------------------------ Tie symb db file  # ------------------------------------------------------------ Tie symb db file
   if ($ENV{'request.course.fn'}) {    my $disurl='';
     my $dismapid='';
   
     if (($ENV{'request.course.fn'}) && (!$ENV{'form.forceselect'})) {
        my $last;         my $last;
        if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'_symb.db',         if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'_symb.db',
                     &GDBM_READER,0640)) {                      &GDBM_READER,0640)) {
Line 181  sub handler { Line 180  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 $whatend='';  
            if ($direction eq 'back') {             if ($direction eq 'back') {
        $disid=$bighash{'map_finish_'.$requrl};         $disid=$bighash{'map_finish_'.$requrl};
                $whatend='End';  
            } else {             } else {
                $disid=$bighash{'map_start_'.$requrl};                 $disid=$bighash{'map_start_'.$requrl};
                $whatend='Beginning';  
            }              } 
            my $disurl='';  
            my $dismapid='';  
            if ($disid) {             if ($disid) {
        $disurl=$bighash{'src_'.$disid};         $disurl=$bighash{'src_'.$disid};
                $dismapid=(split(/\./,$disid))[1];                 $dismapid=(split(/\./,$disid))[1];
            }             }
            my $symb='';  # ------------------------- If this is an empty one, skip to next non-empty one
            my $sequencetitle='';             if ((!$disurl) && ($disid)) {
            unless($disurl) {         $direction=($direction?$direction:'forward');
                if ($symb=&Apache::lonnet::symbread()) {                 ($disid,$requrl)=
    my ($mapurl,$mapid)=split(/\_\_\_/,$symb);                           &Apache::lonpageflip::fullmove($disid,
                    $sequencetitle=$bighash{'title_'.                             &Apache::lonnet::declutter($requrl),$direction);
           $bighash{'map_pc_/res/'.$mapurl}.'.'.                 if ($disid) {
   $mapid};             $disurl=$bighash{'src_'.$disid};
                      $dismapid=(split(/\./,$disid))[1];
                }                 }
            }      }
   
 # --------------------------------------- Untie hash, make sure to come by here  # --------------------------------------- Untie hash, make sure to come by here
            untie(%bighash);             untie(%bighash);
            if ($disurl) {         }
      }
   
   # now either disurl is set (going to first page), or we need another display
   
      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');        $r->content_type('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 {  
 # ---------- Does not have first or last resource, try to find out where we are  
                unless ($symb) {  
    $r->internal_redirect('/adm/ambiguous');  
                }  
                $r->content_type('text/html');  
                $r->send_http_header;  
                $r->print(<<ENDSYMB);  
 <html><body bgcolor="#FFFFFF">  
 <h2>$whatend of</h2>  
 <h1>$sequencetitle</h1>  
 </body></html>  
 ENDSYMB  
                return OK  
            }  
        } else {  
           &getlost($r,'Could not access course structure.');  
           return OK;  
        }  
    } else {     } else {
       $ENV{'user.error.msg'}="$requrl:bre:0:0:Course not initialized";         $r->content_type('text/html');
       return HTTP_NOT_ACCEPTABLE;          $r->send_http_header;
          &viewmap($r,$requrl);
          return OK;
    }     }
   
    return OK;  
 }  }
   
 1;  1;

Removed from v.1.8  
changed lines
  Added in v.1.11


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