Diff for /rat/lonpageflip.pm between versions 1.97 and 1.101

version 1.97, 2017/11/16 13:42:01 version 1.101, 2018/12/30 19:47:06
Line 102  sub move { Line 102  sub move {
     my ($next,$endupmap,$direction) = @_;      my ($next,$endupmap,$direction) = @_;
     my $safecount=0;      my $safecount=0;
     my $allowed=0;      my $allowed=0;
       my $deeplinkonly=0;
       my $prev=$next;
       my ($prevmapid)=split(/\./,$next);
     do {      do {
  ($next,$endupmap)=&get_next_possible_move($next,$endupmap,$direction);   ($next,$endupmap)=&get_next_possible_move($next,$endupmap,$direction);
   
Line 115  sub move { Line 118  sub move {
     my $priv = &Apache::lonnet::allowed('bre',$url,$symb);      my $priv = &Apache::lonnet::allowed('bre',$url,$symb);
     $allowed = (($priv eq 'F') || ($priv eq '2'));      $allowed = (($priv eq 'F') || ($priv eq '2'));
  }   }
           $deeplinkonly = 0;
           if ($hash{'deeplinkonly_'.$next}) {
               my ($value,$level) = split(/:/,$hash{'deeplinkonly_'.$next});
               if ($level eq 'resource') {
                   $deeplinkonly = 1;
               } elsif ($level eq 'map') {
                   if ($mapid != $prevmapid) {
                       $deeplinkonly = 1;
                   }
               }
           } elsif ($hash{'deeplinkonly_'.$prev}) {
               my ($value,$level) = split(/:/,$hash{'deeplinkonly_'.$prev});
               if ($level eq 'resource') {
                   $deeplinkonly = 1;
               } elsif ($level eq 'map') {
                   if ($mapid != $prevmapid) {
                       $deeplinkonly = 1;
                   }
               }
           }
  $safecount++;   $safecount++;
     } while (   ($next)      } while (   ($next)
      && ($next!~/\,/)       && ($next!~/\,/)
      && (       && (
     (!$hash{'src_'.$next})      (!$hash{'src_'.$next})
  || (   || (
         (!$env{'request.role.adv'})                          (!$env{'request.role.adv'})
      &&  $hash{'randomout_'.$next}                       && (($hash{'randomout_'.$next})
                        ||  ($deeplinkonly))
     )      )
  || (!$allowed)   || (!$allowed)
  )   )
Line 289  sub check_http_req { Line 313  sub check_http_req {
         if (($$srcref =~ m{^\Q/public/$cdom/$cnum/syllabus\E($|\?)}) &&          if (($$srcref =~ m{^\Q/public/$cdom/$cnum/syllabus\E($|\?)}) &&
             ($ENV{'SERVER_PORT'} == 443) &&              ($ENV{'SERVER_PORT'} == 443) &&
             ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) {              ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) {
             $$srcref .= (($$srcref =~/\?/)? '&':'?') . 'usehttp=1';              unless (&Apache::lonnet::uses_sts()) {
             $usehttp = 1;                  $$srcref .= (($$srcref =~/\?/)? '&':'?') . 'usehttp=1';
                   $usehttp = 1;
               }
         } elsif (($$srcref =~ m{^\Q/adm/wrapper/ext/\E(?!https:)}) &&          } elsif (($$srcref =~ m{^\Q/adm/wrapper/ext/\E(?!https:)}) &&
                  ($ENV{'SERVER_PORT'} == 443)) {                   ($ENV{'SERVER_PORT'} == 443)) {
             $usehttp = 1;              unless (&Apache::lonnet::uses_sts()) {
                   my ($url,$anchor) = ($$srcref =~ /^([^\#]+)(?:|(\#[^\#]+))$/);
                   $$srcref = $url . (($$srcref =~/\?/)? '&':'?') . 'usehttp=1' .$anchor; 
                   $usehttp = 1;
               }
         }          }
     }      }
     return $usehttp;      return $usehttp;
Line 338  sub handler { Line 368  sub handler {
   my $multichoice=0;    my $multichoice=0;
   my %multichoicehash=();    my %multichoicehash=();
   my %prog_state=();    my %prog_state=();
   my ($redirecturl,$redirectsymb,$enc,$anchor);    my ($redirecturl,$redirectsymb,$enc,$anchor,$deeplinklevel);
   my $next='';    my $next='';
   my $hostname = $r->hostname();    my $hostname = $r->hostname();
   my @possibilities=();    my @possibilities=();
Line 442  sub handler { Line 472  sub handler {
       return REDIRECT;        return REDIRECT;
           }            }
       }        }
       if ($direction eq 'return') {         if ($direction eq 'return') {
 # -------------------------------------------------------- Return to last known  # -------------------------------------------------------- Return to last known
          my ($newloc,$usehttp);           my ($newloc,$usehttp);
          if (($last) && (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db',           if (($last) && (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db',
Line 454  sub handler { Line 484  sub handler {
                 $usehttp = &check_http_req(\$newloc);                  $usehttp = &check_http_req(\$newloc);
  if ($hash{'encrypted_'.$id}) {    if ($hash{'encrypted_'.$id}) { 
                     $newloc=&Apache::lonenc::encrypted($newloc);                      $newloc=&Apache::lonenc::encrypted($newloc);
                 } elsif ($newloc =~ m{^(/adm/wrapper/ext/[^\#]+)\#([^\#]+)$}) {                  }
                     $newloc = $1.&escape('#').$2;                  if ($newloc =~ m{^(/adm/wrapper/ext/[^\#]+)(?:|(\#[^\#]+))$}) {
                       my ($url,$anchor) = ($1,$2);
                       if ($anchor) {
                           $newloc = $url.(($url=~/\?/)?'&':'?').'symb='.&escape($last).$anchor;
                       }
                 }                  }
     } else {      } else {
  $newloc='/adm/navmaps';   $newloc='/adm/navmaps';
Line 564  sub handler { Line 598  sub handler {
       } else {        } else {
 # -------------------------------------------------------------- No place to go  # -------------------------------------------------------------- No place to go
                   $multichoice=-1;                    $multichoice=-1;
                     if ($hash{'deeplinkonly_'.$rid}) {
                         (my $value,$deeplinklevel) = split(/:/,$hash{'deeplinkonly_'.$rid});
                     }
               }                }
 # ----------------- The program must come past this point to untie the big hash  # ----------------- The program must come past this point to untie the big hash
       untie(%hash);        untie(%hash);
Line 618  sub handler { Line 655  sub handler {
                   &Apache::loncommon::content_type($r,'text/html');                    &Apache::loncommon::content_type($r,'text/html');
                   $r->send_http_header;                    $r->send_http_header;
   my %lt=&Apache::lonlocal::texthash('title' => 'End of Sequence',    my %lt=&Apache::lonlocal::texthash('title' => 'End of Sequence',
                                                        'deeplink' => 'No link available',
                                                        'deeplinkres' =>
                                                        'Navigation to other content is unavailable when accessing content via deep-linking',
                                                        'deeplinkmap' =>
                                                        'You have reached the end of the sequence of available materials for access via deep-linking',
      'explain' =>       'explain' =>
      'You have reached the end of the sequence of materials.',       'You have reached the end of the sequence of materials.',
      'back' => 'Go Back',       'back' => 'Go Back',
Line 685  ENDSTART Line 727  ENDSTART
                               } else {                                } else {
                                   $r->print(&Apache::lonplacementtest::showresult(1));                                    $r->print(&Apache::lonplacementtest::showresult(1));
                               }                                }
                           } else {                              } else {
                               $r->print(                                $r->print(
                                   &Apache::loncommon::start_page('No Resource')                                    &Apache::loncommon::start_page('No Resource'));
                                  .'<h2>'.$lt{'title'}.'</h2>'                                if ($deeplinklevel eq 'resource') {
                                  .'<p>'.$lt{'explain'}.'</p>');                                    $r->print('<h2>'.$lt{'deeplink'}.'</h2>'
                                              .'<p>'.$lt{'deeplinkres'}.'</p>');
                                 } elsif ($deeplinklevel eq 'map') {
                                     $r->print('<h2>'.$lt{'title'}.'</h2>'
                                              .'<p>'.$lt{'deeplinkmap'}.'</p>');
                                 } else {
                                     $r->print('<h2>'.$lt{'title'}.'</h2>'
                                              .'<p>'.$lt{'explain'}.'</p>');
                                 }
                           }                            }
                       }                        }
   }    }
                   unless (($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Placement') ||                    unless (($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Placement') ||
                           ($env{'request.role.adv'})) {                            ($env{'request.role.adv'})) {
                       if ((!@possibilities) && ($reinitcheck))  {                        if ($deeplinklevel) {
                             $r->print(
                                 &Apache::lonhtmlcommon::actionbox(
                                     ['<a href="/adm/flip?postdata=return:">'.$lt{'back'}.'</a>']));
                         } elsif ((!@possibilities) && ($reinitcheck))  {
                           $r->print(                            $r->print(
                               &Apache::lonhtmlcommon::actionbox(                                &Apache::lonhtmlcommon::actionbox(
                                   ['<a href="/adm/navmaps">'.$lt{'nav'}.'</a></li>'                                    ['<a href="/adm/navmaps">'.$lt{'nav'}.'</a></li>'

Removed from v.1.97  
changed lines
  Added in v.1.101


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