Diff for /rat/lonpageflip.pm between versions 1.4 and 1.5

version 1.4, 2000/10/09 19:37:35 version 1.5, 2000/10/11 18:31:00
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 Gerd Kortemeyer  # 10/03,10/05,10/06,10/07,10/09,10/10,10/11 Gerd Kortemeyer
   
 package Apache::lonpageflip;  package Apache::lonpageflip;
   
Line 29  sub addrid { Line 29  sub addrid {
     unless ($condid) { $condid=0; }      unless ($condid) { $condid=0; }
     if (&Apache::lonnet::allowed('bre',$hash{'src_'.$new})) {      if (&Apache::lonnet::allowed('bre',$hash{'src_'.$new})) {
  if ($current) {   if ($current) {
     $current.=','.$new.':'.$condid;      $current.=','.$new;
         } else {          } else {
             $current=''.$new.':'.$condid;              $current=''.$new;
         }          }
     }      }
     return $current;      return $current;
Line 50  sub handler { Line 50  sub handler {
      return OK;       return OK;
   }    }
   
   my %cachehash=();    my %cachehash=(); 
     my $multichoice=0;
     my %multichoicehash=();
   my $redirecturl='';    my $redirecturl='';
   my $next='';    my $next='';
   my @possibilities=();    my @possibilities=();
Line 59  sub handler { Line 61  sub handler {
       $ENV{'form.postdata'}=~/(\w+)\:(.*)/;        $ENV{'form.postdata'}=~/(\w+)\:(.*)/;
       my $direction=$1;        my $direction=$1;
       my $currenturl=$2;        my $currenturl=$2;
       my $redirecturl=$currenturl;  
       $currenturl=~s/^http\:\/\///;        $currenturl=~s/^http\:\/\///;
       $currenturl=~s/^[^\/]+//;        $currenturl=~s/^[^\/]+//;
 # ------------------------------------------- Do we have any idea where we are?  # ------------------------------------------- Do we have any idea where we are?
Line 68  sub handler { Line 69  sub handler {
 # ------------------------------------------------------------------------- Yes  # ------------------------------------------------------------------------- Yes
   my ($mapurl,$mapnum,$thisurl)=split(/\_\_\_/,$position);    my ($mapurl,$mapnum,$thisurl)=split(/\_\_\_/,$position);
           $cachehash{$thisurl}=$mapnum;            $cachehash{$thisurl}=$mapnum;
   # ============================================================ 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/'.$mapurl}.'.'.$mapnum;                my $rid=$hash{'map_pc_/res/'.$mapurl}.'.'.$mapnum;
               my $next='';                my $next='';
                 my $mincond=1;
                 my $posnext='';
               if ($direction eq 'forward') {                if ($direction eq 'forward') {
                  map {  # --------------------------------------------------------------------- Forward
     $next=&addrid($next,$hash{'goesto_'.$_},                    map {
                                   $hash{'condid_'.$hash{'undercond_'.$_}});                        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});                    } 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') {                } elsif ($direction eq 'back') {
                 map {  # ------------------------------------------------------------------- Backwards
     $next=&addrid($next,$hash{'comesfrom_'.$_},                    map {
                                   $hash{'condid_'.$hash{'undercond_'.$_}});                        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});                    } 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') {         } elsif ($direction eq 'up') {
   # -------------------------------------------------------------------------- Up
               } elsif ($direction eq 'down') {                } elsif ($direction eq 'down') {
   # ------------------------------------------------------------------------ Down
               }                }
               my $redirectid='';  
 # ----------------------------------------------------- Check out possibilities  # ----------------------------------------------------- Check out possibilities
               if ($next) {                if ($next) {
                   @possibilities=split(/\,/,$next);                    @possibilities=split(/\,/,$next);
                   if ($#possibilities==0) {                    if ($#possibilities==0) {
       $redirectid=(split(/\:/,$next))[0];  # ---------------------------------------------- Only one possibility, redirect
                 $redirecturl=$hash{'src_'.$next};
                         $cachehash{&Apache::lonnet::declutter($redirecturl)}
                                    =(split(/\./,$next))[1];
                   } else {                    } else {
   # ------------------------ There are multiple possibilities for a next resource
                         $multichoice=1;
                         map {
     $multichoicehash{'src_'.$_}=$hash{'src_'.$_};
                             $multichoicehash{'title_'.$_}=$hash{'title_'.$_};
                             $cachehash
                               {&Apache::lonnet::declutter(
         $multichoicehash
                                                            {'src_'.$_}
                                                          )}
                                    =(split(/\./,$_))[1];
                         } @possibilities;
                   }                    }
       }        } else {
               if ($redirectid) {  # -------------------------------------------------------------- No place to go
   $redirecturl=$hash{'src_'.$redirectid};                    $multichoice=-1;
               }                }
   # ----------------- The program must come past this point to untie the big hash
       untie(%hash);        untie(%hash);
   # --------------------------------------------------------- Store position info
                 $cachehash{'last_direction'}=$direction;
                 &Apache::lonnet::symblist($mapurl,%cachehash);
   # ============================================== Do not return before this line
               if ($redirecturl) {                if ($redirecturl) {
   # ----------------------------------------------------- There is a URL to go to
   $r->content_type('text/html');    $r->content_type('text/html');
                   $r->header_out(Location =>                     $r->header_out(Location => 
                                 'http://'.$ENV{'HTTP_HOST'}.$redirecturl);                                  'http://'.$ENV{'HTTP_HOST'}.$redirecturl);
                   return REDIRECT;                    return REDIRECT;
         } else {
   # --------------------------------------------------------- There was a problem
               }                }
     } else {
   # ------------------------------------------------- Problem, could not tie hash
                 $ENV{'user.error.msg'}="/adm/flip:bre:0:1:Course Data Missing";
                 return HTTP_NOT_ACCEPTABLE; 
           }            }
         } else {
   # ---------------------------------------- No, could not determine where we are
       }        }
 # -------------------------------------------------------- No, could not decide  
       }  
     $r->content_type('text/html');  
      $r->send_http_header;  
   
   $r->print('<html><body>');  
   
 # -------------------------- Class was not initialized or page fliped strangely  
   } else {    } else {
   # -------------------------- Class was not initialized or page fliped strangely
       $ENV{'user.error.msg'}="/adm/flip:bre:0:0:Choose Course";        $ENV{'user.error.msg'}="/adm/flip:bre:0:0:Choose Course";
       return HTTP_NOT_ACCEPTABLE;         return HTTP_NOT_ACCEPTABLE; 
   }     } 
   
   
   
   
 # ------TRASH BELOW  
 # --------------------------- TRASH  
   
   $r->print('</body></html>');  
   return OK;  
   
   
 # ========================================================= TOTAL TRASH  
   
 #                  &Apache::lonnet::symblist($requrl,%symbhash);  
   
 }  }
   
 1;  1;

Removed from v.1.4  
changed lines
  Added in v.1.5


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