Diff for /rat/lonpageflip.pm between versions 1.12 and 1.15

version 1.12, 2000/11/14 19:14:03 version 1.15, 2001/05/03 15:54:06
Line 10 Line 10
 # 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23,  # 08/30,08/31,09/06,09/14,09/15,09/16,09/19,09/20,09/21,09/23,
 # 10/02 Gerd Kortemeyer)  # 10/02 Gerd Kortemeyer)
 #  #
 # 10/03,10/05,10/06,10/07,10/09,10/10,10/11,10/16,10/17,11/14 Gerd Kortemeyer  # 10/03,10/05,10/06,10/07,10/09,10/10,10/11,10/16,10/17,
   # 11/14,11/16,
   # 10/01/01,05/01 Gerd Kortemeyer
   
 package Apache::lonpageflip;  package Apache::lonpageflip;
   
Line 37  sub addrid { Line 39  sub addrid {
     return $current;      return $current;
 }  }
   
   sub move {
       my ($rid,$mapurl,$direction)=@_;
   
       my $next='';
   
                 my $mincond=1;
                 my $posnext='';
                 if ($direction eq 'forward') {
   # --------------------------------------------------------------------- Forward
                     if ($hash{'type_'.$rid} eq 'finish') {
                $rid=$hash{'ids_/res/'.$mapurl}; 
                     }
                     map {
                         my $thiscond=
         &Apache::lonnet::directcondval($hash{'condid_'.$hash{'undercond_'.$_}});
                         if ($thiscond>=$mincond) {
             if ($posnext) {
                $posnext.=','.$_.':'.$thiscond;
                             } else {
                                $posnext=$_.':'.$thiscond;
             }
                             if ($thiscond>$mincond) { $mincond=$thiscond; }
                 }
                     } split(/\,/,$hash{'to_'.$rid});
                     map {
                         my ($linkid,$condval)=split(/\:/,$_);
                         if ($condval>=$mincond) {
             $next=&addrid($next,$hash{'goesto_'.$linkid},
                                   $hash{'condid_'.$hash{'undercond_'.$linkid}});
                         }
                     } split(/\,/,$posnext);
                     if ($hash{'is_map_'.$next}) {
                         if (
         $hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') {
     $mapurl=$hash{'src_'.$next};
     $next=$hash{'map_start_'.$hash{'src_'.$next}};
                        }
                     }
                 } elsif ($direction eq 'back') {
   # ------------------------------------------------------------------- Backwards
                     if ($hash{'type_'.$rid} eq 'start') {
                $rid=$hash{'ids_/res/'.$mapurl};
                     }
                     map {
                         my $thiscond=
         &Apache::lonnet::directcondval($hash{'condid_'.$hash{'undercond_'.$_}});
                         if ($thiscond>=$mincond) {
             if ($posnext) {
                $posnext.=','.$_.':'.$thiscond;
                             } else {
                                $posnext=$_.':'.$thiscond;
             }
                             if ($thiscond>$mincond) { $mincond=$thiscond; }
                 }
                     } split(/\,/,$hash{'from_'.$rid});
                     map {
                         my ($linkid,$condval)=split(/\:/,$_);
                         if ($condval>=$mincond) {
             $next=&addrid($next,$hash{'comesfrom_'.$linkid},
                                   $hash{'condid_'.$hash{'undercond_'.$linkid}});
                         }
                     } split(/\,/,$posnext);
                     if ($hash{'is_map_'.$next}) {
                         if (
         $hash{'map_type_'.$hash{'map_pc_'.$hash{'src_'.$next}}} eq 'sequence') {
     $mapurl=$hash{'src_'.$next};
     $next=$hash{'map_finish_'.$hash{'src_'.$next}};
                        }
                     }
          } elsif ($direction eq 'up') {
   # -------------------------------------------------------------------------- Up
                 } elsif ($direction eq 'down') {
   # ------------------------------------------------------------------------ Down
         }
   
                 return ($next,$mapurl);
   }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
 sub handler {  sub handler {
Line 109  sub handler { Line 189  sub handler {
           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/'.$mapurl}.'.'.$mapnum;                my $rid=$hash{'map_pc_/res/'.$mapurl}.'.'.$mapnum;
               my $next='';  
               my $mincond=1;  # ------------------------------------------------- Move forward, backward, etc
               my $posnext='';  
               if ($direction eq 'forward') {                ($next,$mapurl)=&move($rid,$mapurl,$direction);
 # --------------------------------------------------------------------- Forward  # -------------------------------------- Do we have one and only one empty URL?
                   map {                my $safecount=0;
                       my $thiscond=                while (($next) && ($next!~/\,/) && (!$hash{'src_'.$next})
       &Apache::lonnet::directcondval($hash{'condid_'.$hash{'undercond_'.$_}});                       && ($safecount<25)) {
                       if ($thiscond>=$mincond) {                    ($next,$mapurl)=&move($next,$mapurl,$direction);
           if ($posnext) {                    $safecount++;
              $posnext.=','.$_.':'.$thiscond;                }
                           } else {  
                              $posnext=$_.':'.$thiscond;  
           }  
                           if ($thiscond>$mincond) { $mincond=$thiscond; }  
               }  
                   } split(/\,/,$hash{'to_'.$rid});  
                   map {  
                       my ($linkid,$condval)=split(/\:/,$_);  
                       if ($condval>=$mincond) {  
           $next=&addrid($next,$hash{'goesto_'.$linkid},  
                                 $hash{'condid_'.$hash{'undercond_'.$linkid}});  
                       }  
                   } split(/\,/,$posnext);  
               } elsif ($direction eq 'back') {  
 # ------------------------------------------------------------------- Backwards  
                   map {  
                       my $thiscond=  
       &Apache::lonnet::directcondval($hash{'condid_'.$hash{'undercond_'.$_}});  
                       if ($thiscond>=$mincond) {  
           if ($posnext) {  
              $posnext.=','.$_.':'.$thiscond;  
                           } else {  
                              $posnext=$_.':'.$thiscond;  
           }  
                           if ($thiscond>$mincond) { $mincond=$thiscond; }  
               }  
                   } split(/\,/,$hash{'from_'.$rid});  
                   map {  
                       my ($linkid,$condval)=split(/\:/,$_);  
                       if ($condval>=$mincond) {  
           $next=&addrid($next,$hash{'comesfrom_'.$linkid},  
                                 $hash{'condid_'.$hash{'undercond_'.$linkid}});  
                       }  
                   } split(/\,/,$posnext);  
        } elsif ($direction eq 'up') {  
 # -------------------------------------------------------------------------- Up  
               } elsif ($direction eq 'down') {  
 # ------------------------------------------------------------------------ Down  
       }  
 # ----------------------------------------------------- Check out possibilities  # ----------------------------------------------------- Check out possibilities
               if ($next) {                if ($next) {
                   @possibilities=split(/\,/,$next);                    @possibilities=split(/\,/,$next);
Line 167  sub handler { Line 208  sub handler {
               $redirecturl=$hash{'src_'.$next};                $redirecturl=$hash{'src_'.$next};
                       $cachehash{&Apache::lonnet::declutter($redirecturl)}                        $cachehash{&Apache::lonnet::declutter($redirecturl)}
                                  =(split(/\./,$next))[1];                                   =(split(/\./,$next))[1];
       if ($hash{'param_'.$next}) {  
          my ($mapid,$resid)=split(/\./,$next);  
                          &Apache::lonnet::appendparms(  
                          &Apache::lonnet::declutter($hash{'map_id_'.$mapid}).  
                          '___'.$resid.'___'.  
                          &Apache::lonnet::declutter($redirecturl),  
                          $hash{'param_'.$next});  
                       }  
                   } else {                    } else {
 # ------------------------ There are multiple possibilities for a next resource  # ------------------------ There are multiple possibilities for a next resource
                       $multichoice=1;                        $multichoice=1;
Line 188  sub handler { Line 221  sub handler {
                                                          {'src_'.$_}                                                           {'src_'.$_}
                                                        )}                                                         )}
                                  =(split(/\./,$_))[1];                                   =(split(/\./,$_))[1];
                           if ($hash{'param_'.$_}) {  
             my ($mapid,$resid)=split(/\./,$_);  
                              &Apache::lonnet::appendparms(  
                            &Apache::lonnet::declutter($hash{'map_id_'.$mapid}).  
                            '___'.$resid.'___'.  
                            &Apache::lonnet::declutter($hash{'src_'.$_}),  
                              $hash{'param_'.$_});  
   }  
                       } @possibilities;                        } @possibilities;
                   }                    }
       } else {        } else {

Removed from v.1.12  
changed lines
  Added in v.1.15


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