Diff for /rat/lonpageflip.pm between versions 1.23 and 1.29

version 1.23, 2002/04/12 13:47:21 version 1.29, 2002/08/18 21:45:41
Line 53  my %hash; Line 53  my %hash;
 sub addrid {  sub addrid {
     my ($current,$new,$condid)=@_;      my ($current,$new,$condid)=@_;
     unless ($condid) { $condid=0; }      unless ($condid) { $condid=0; }
     if (&Apache::lonnet::allowed('bre',$hash{'src_'.$new})) {  
  if ($current) {   if ($current) {
     $current.=','.$new;      $current.=','.$new;
         } else {          } else {
             $current=''.$new;              $current=''.$new;
         }          }
     }  
     return $current;      return $current;
 }  }
   
   sub fullmove {
       my ($rid,$mapurl,$direction)=@_;
       if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'.db',
                           &GDBM_READER(),0640)) {
    ($rid,$mapurl)=&move($rid,$mapurl,$direction);
           untie(%hash);
       }
       return($rid,$mapurl);
   }
   
 sub move {  sub move {
     my ($rid,$mapurl,$direction)=@_;      my ($rid,$mapurl,$direction)=@_;
     my $startoutrid=$rid;      my $startoutrid=$rid;
Line 74  sub move { Line 84  sub move {
               if ($direction eq 'forward') {                if ($direction eq 'forward') {
 # --------------------------------------------------------------------- Forward  # --------------------------------------------------------------------- Forward
                   if ($hash{'type_'.$rid} eq 'finish') {                    if ($hash{'type_'.$rid} eq 'finish') {
              $rid=$hash{'ids_/res/'.$mapurl};                $rid=$hash{'ids_'.&Apache::lonnet::clutter($mapurl)}; 
                   }                    }
                   map {                    map {
                       my $thiscond=                        my $thiscond=
Line 110  sub move { Line 120  sub move {
               } elsif ($direction eq 'back') {                } elsif ($direction eq 'back') {
 # ------------------------------------------------------------------- Backwards  # ------------------------------------------------------------------- Backwards
                   if ($hash{'type_'.$rid} eq 'start') {                    if ($hash{'type_'.$rid} eq 'start') {
              $rid=$hash{'ids_/res/'.$mapurl};               $rid=$hash{'ids_'.&Apache::lonnet::clutter($mapurl)};
                   }                    }
                   map {                    map {
                       my $thiscond=                        my $thiscond=
Line 132  sub move { Line 142  sub move {
                       }                        }
                   } split(/\,/,$posnext);                    } split(/\,/,$posnext);
                   if ($hash{'is_map_'.$next}) {                    if ($hash{'is_map_'.$next}) {
   # This jumps to the end of a new map (going down one level)
                       if (                        if (
       $hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') {        $hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') {
   $mapurl=$hash{'src_'.$next};    $mapurl=$hash{'src_'.$next};
   $next=$hash{'map_finish_'.$hash{'src_'.$next}};    $next=$hash{'map_finish_'.$hash{'src_'.$next}};
                      }                       }
                     } elsif 
                       ((split(/\./,$startoutrid))[0]!=(split(/\./,$next))[0]) {
   # This comes back up from a map (going up one level);
         $mapurl=$hash{'map_id_'.(split(/\./,$next))[0]};
                   }                    }
       }        }
               return ($next,$mapurl);                return ($next,$mapurl);
Line 169  sub handler { Line 184  sub handler {
 # -------------------------------------------------------- Return to last known  # -------------------------------------------------------- Return to last known
          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)) {
      $last=$hash{'last_known'};       $last=$hash{'last_known'};
              untie(%hash);               untie(%hash);
          }           }
          my $newloc;           my $newloc;
          if ($last) {           if ($last) {
             $newloc='/res/'.(split(/\_\_\_/,$last))[1];              $newloc=&Apache::lonnet::clutter((split(/\_\_\_/,$last))[1]);
          } else {           } else {
     $newloc='/adm/noidea.html';      $newloc='/adm/noidea.html';
          }             }  
Line 191  sub handler { Line 206  sub handler {
               ($currenturl=~/^\/adm\/wrapper\//))  {                ($currenturl=~/^\/adm\/wrapper\//))  {
  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)) {
      $last=$hash{'last_known'};       $last=$hash{'last_known'};
              untie(%hash);               untie(%hash);
          }           }
          if ($last) {           if ($last) {
      $currenturl='/res/'.(split(/\_\_\_/,$last))[1];       $currenturl=&Apache::lonnet::clutter((split(/\_\_\_/,$last))[1]);
  } else {   } else {
      $r->content_type('text/html');       $r->content_type('text/html');
              $r->header_out(Location =>                $r->header_out(Location => 
Line 215  sub handler { Line 230  sub handler {
   
 # ============================================================ Tie the big hash  # ============================================================ Tie the big hash
           if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'.db',            if (tie(%hash,'GDBM_File',$ENV{'request.course.fn'}.'.db',
                         &GDBM_READER,0640)) {                          &GDBM_READER(),0640)) {
               my $rid=$hash{'map_pc_/res/'.$startoutmap}.'.'.$mapnum;                my $rid=$hash{'map_pc_'.&Apache::lonnet::clutter($startoutmap)}.
                         '.'.$mapnum;
   
 # ------------------------------------------------- Move forward, backward, etc  # ------------------------------------------------- Move forward, backward, etc
               my $endupmap;                my $endupmap;
               ($next,$endupmap)=&move($rid,$startoutmap,$direction);                ($next,$endupmap)=&move($rid,$startoutmap,$direction);
 # -------------------------------------- Do we have one and only one empty URL?  # -------------------------------------- Do we have one and only one empty URL?
               my $safecount=0;                my $safecount=0;
               while (($next) && ($next!~/\,/) && (!$hash{'src_'.$next})                while (($next) && ($next!~/\,/) && 
                      && ($safecount<25)) {                       ((!$hash{'src_'.$next}) || ($hash{'randomout_'.$next}))
                        && ($safecount<10000)) {
                   ($next,$endupmap)=&move($next,$endupmap,$direction);                    ($next,$endupmap)=&move($next,$endupmap,$direction);
                   $safecount++;                    $safecount++;
               }                }
Line 289  Please click on the the resource you int Line 306  Please click on the the resource you int
 <table border=2>  <table border=2>
 <tr><th>Title</th><th>Type</th></tr>  <tr><th>Title</th><th>Type</th></tr>
 ENDSTART  ENDSTART
                      map {                       foreach (@possibilities) {
                         $r->print(                          $r->print(
                               '<tr><td><a href="'.                                '<tr><td><a href="'.
                               $multichoicehash{'src_'.$_}.'">'.                                $multichoicehash{'src_'.$_}.'">'.
                               $multichoicehash{'title_'.$_}.                                $multichoicehash{'title_'.$_}.
                               '</a></td><td>'.$multichoicehash{'type_'.$_}.                                '</a></td><td>'.$multichoicehash{'type_'.$_}.
       '</td></tr>');        '</td></tr>');
                      } @possibilities;                       }
                      $r->print('</table></body></html>');                       $r->print('</table></body></html>');
      return OK;       return OK;
                   } else {                    } else {

Removed from v.1.23  
changed lines
  Added in v.1.29


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