Diff for /rat/lonpageflip.pm between versions 1.78 and 1.80.8.7

version 1.78, 2008/12/19 14:12:55 version 1.80.8.7, 2015/03/14 22:29:25
Line 36  use LONCAPA; Line 36  use LONCAPA;
 use Apache::Constants qw(:common :http REDIRECT);  use Apache::Constants qw(:common :http REDIRECT);
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
   use Apache::lonuserstate;
   use Apache::lonlocal;
 use HTML::TokeParser;  use HTML::TokeParser;
 use GDBM_File;  use GDBM_File;
   
Line 217  sub get_next_possible_move { Line 219  sub get_next_possible_move {
               return ($next,$mapurl);                return ($next,$mapurl);
 }  }
   
 sub navlaunch {  
     my ($r)=@_;  
     &Apache::loncommon::content_type($r,'text/html');  
     &Apache::loncommon::no_cache($r);  
     $r->send_http_header;  
     $r->print(&Apache::loncommon::start_page('Launched'));     
     $r->print(<<ENDNAV);  
     <p><a href="/adm/flip?postdata=firstres%3a">Goto first resource</a></p>  
     <script type="text/javascript">  
  function collapse() {  
     menu=window.open("/adm/navmaps?collapseExternal","loncapanav",  
      "height=600,width=400,scrollbars=1");  
     this.document.location='/adm/navmaps?turningOffExternal';  
  }  
     </script>  
     <p><a href="javascript:collapse();">Collapse external navigation window</a></p>  
 ENDNAV  
     $r->print(&Apache::loncommon::end_page());  
 }  
   
 sub first_accessible_resource {  sub first_accessible_resource {
     my $furl;      my $furl;
     if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db',      if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db',
Line 287  sub handler { Line 269  sub handler {
   my @possibilities=();    my @possibilities=();
    &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['postdata']);     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['postdata']);
   if (($env{'form.postdata'})&&($env{'request.course.fn'})) {    if (($env{'form.postdata'})&&($env{'request.course.fn'})) {
       $env{'form.postdata'}=~/(\w+)\:(.*)/;        my ($direction,$currenturl) = ($env{'form.postdata'}=~/(\w+)\:(.*)/);
       my $direction=$1;  
       my $currenturl=$2;        if ($env{'request.course.id'}) {
             # Check if course needs to be re-initialized
             my $loncaparev = $r->dir_config('lonVersion');
             my ($result,@reinit) = &Apache::loncommon::needs_coursereinit($loncaparev);
             if ($result eq 'switch') {
                 &Apache::loncommon::content_type($r,'text/html');
                 $r->send_http_header;
                 $r->print(&Apache::loncommon::check_release_result(@reinit));
                 return OK;
             } elsif ($result eq 'update') {
                 my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                 my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                 my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");
                 if ($ferr) {
                     my $requrl = $r->uri;
                     $env{'user.error.msg'}="$requrl:bre:0:0:Course not initialized";
                     $env{'user.reinit'} = 1;
                     return HTTP_NOT_ACCEPTABLE;
                 }
             }
         }
   
       if ($currenturl=~m|^/enc/|) {        if ($currenturl=~m|^/enc/|) {
   $currenturl=&Apache::lonenc::unencrypted($currenturl);    $currenturl=&Apache::lonenc::unencrypted($currenturl);
       }        }
Line 302  sub handler { Line 305  sub handler {
             
   return REDIRECT;    return REDIRECT;
       }        }
       if ($direction eq 'return' || $direction eq 'navlaunch') {        if ($direction eq 'return') { 
 # -------------------------------------------------------- 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',
Line 325  sub handler { Line 328  sub handler {
             untie %hash;              untie %hash;
          } else {           } else {
     $newloc='/adm/navmaps';      $newloc='/adm/navmaps';
          }             }
  if ($newloc eq '/adm/navmaps' && $direction eq 'navlaunch') {   &Apache::loncommon::content_type($r,'text/html');
      &navlaunch($r);   $r->header_out(Location => 
      return OK;   &Apache::lonnet::absolute_url().$newloc);
  } else {  
      &Apache::loncommon::content_type($r,'text/html');  
      $r->header_out(Location =>   
     &Apache::lonnet::absolute_url().$newloc);  
             
      return REDIRECT;   return REDIRECT;
  }  
       }        }
       $currenturl=~s/^https?\:\/\///;        $currenturl=~s/^https?\:\/\///;
       $currenturl=~s/^[^\/]+//;        $currenturl=~s/^[^\/]+//;
Line 352  sub handler { Line 350  sub handler {
          if ($last) {           if ($last) {
      $currenturl=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($last))[2]);       $currenturl=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($last))[2]);
  } else {   } else {
      if ($direction eq 'return') {       &Apache::loncommon::content_type($r,'text/html');
  &Apache::loncommon::content_type($r,'text/html');       $r->header_out(Location => 
  $r->header_out(Location =>       &Apache::lonnet::absolute_url().
  &Apache::lonnet::absolute_url().      '/adm/noidea.html');
  '/adm/noidea.html');       return REDIRECT;
  return REDIRECT;  
      } else {  
  &navlaunch($r);  
  return OK;  
      }  
          }           }
       }        }
 # ------------------------------------------- Do we have any idea where we are?  # ------------------------------------------- Do we have any idea where we are?
Line 419  sub handler { Line 412  sub handler {
       untie(%hash);        untie(%hash);
 # --------------------------------------------------------- Store position info  # --------------------------------------------------------- Store position info
               $cachehash{$startoutmap}{'last_direction'}=[$direction,'notasymb'];                $cachehash{$startoutmap}{'last_direction'}=[$direction,'notasymb'];
               foreach my $thismap (keys %cachehash) {                foreach my $thismap (keys(%cachehash)) {
   my $mapnum=$cachehash{$thismap}->{'mapnum'};    my $mapnum=$cachehash{$thismap}->{'mapnum'};
   delete($cachehash{$thismap}->{'mapnum'});    delete($cachehash{$thismap}->{'mapnum'});
   &Apache::lonnet::symblist($thismap,    &Apache::lonnet::symblist($thismap,
Line 434  sub handler { Line 427  sub handler {
   if ($direction eq 'back') {    if ($direction eq 'back') {
                      &Apache::lonnet::linklog($redirecturl,$currenturl);                       &Apache::lonnet::linklog($redirecturl,$currenturl);
   }    }
 # ------------------------------------------------- Check for critical messages  # ------------------------------------- Check for and display critical messages
   if ((time-$env{'user.criticalcheck.time'})>300) {                    my ($redirect, $url) = &Apache::loncommon::critical_redirect(300);
                      my @what=&Apache::lonnet::dump                    unless ($redirect) {
                                   ('critical',$env{'user.domain'},                        $url=&Apache::lonnet::absolute_url().$redirecturl;
                                               $env{'user.name'});                        $url = &add_get_param($url, { 'symb' => $redirectsymb});
                      if ($what[0]) {                    }
                 if (($what[0] ne 'con_lost') &&                     &Apache::loncommon::content_type($r,'text/html');
                             ($what[0]!~/^error\:/)) {  
                    $redirecturl='/adm/email?critical=display';  
    $redirectsymb='';  
                         }  
                      }  
                      &Apache::lonnet::appenv({'user.criticalcheck.time'=>time});  
   }  
   
   &Apache::loncommon::content_type($r,'text/html');  
   my $url=&Apache::lonnet::absolute_url().$redirecturl;  
   $url = &add_get_param($url, { 'symb' => $redirectsymb});  
                   $r->header_out(Location => $url);                    $r->header_out(Location => $url);
                   return REDIRECT;                    return REDIRECT;
       } else {        } else {
Line 462  sub handler { Line 444  sub handler {
      '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',
      'nav' => 'Navigate Course Content',       'nav' => 'Course Contents',
      'wherenext' =>       'wherenext' =>
      'There are several possibilities of where to go next',       'There are several possibilities of where to go next',
      'pick' =>       'pick' =>
      'Please click on the the resource you intend to access',       'Please click on the the resource you intend to access',
      'titleheader' => 'Title',       'titleheader' => 'Title',
      'type' => 'Type');       'type' => 'Type');
                     if (&Apache::loncommon::course_type() eq 'Community') {
                         $lt{'nav'} = &mt('Community Contents');
                     }
                   if ($#possibilities>0) {                    if ($#possibilities>0) {
       my $start_page=        my $start_page=
   &Apache::loncommon::start_page('Multiple Resources');    &Apache::loncommon::start_page('Multiple Resources');
Line 478  $start_page Line 463  $start_page
 <p>  <p>
 $lt{'pick'}:  $lt{'pick'}:
 <p>  <p>
 <table border=2>  <table border="2">
 <tr><th>$lt{'titleheader'}</th><th>$lt{'type'}</th></tr>  <tr><th>$lt{'titleheader'}</th><th>$lt{'type'}</th></tr>
 ENDSTART  ENDSTART
                      foreach my $id (@possibilities) {                       foreach my $id (@possibilities) {
Line 494  ENDSTART Line 479  ENDSTART
                      }                       }
                      $r->print('</table>');                       $r->print('</table>');
                   } else {                    } else {
       my $start_page=                        $r->print(
   &Apache::loncommon::start_page('No Resource');                            &Apache::loncommon::start_page('No Resource')
       $r->print(<<ENDNONE);                           .'<h2>'.$lt{'title'}.'</h2>'
 $start_page                           .'<p>'.$lt{'explain'}.'</p>');
 <h3>$lt{'title'}</h3>  
 <p>$lt{'explain'}</p>  
 ENDNONE  
   }    }
   $r->print(<<ENDMENU);                    $r->print(
 <ul>                        &Apache::lonhtmlcommon::actionbox(
 <li><a href="/adm/flip?postdata=return:">$lt{'back'}</a></li>                            ['<a href="/adm/flip?postdata=return:">'.$lt{'back'}.'</a></li>',
 <li><a href="/adm/navmaps">$lt{'nav'}</a></li>                             '<a href="/adm/navmaps">'.$lt{'nav'}.'</a></li>'
 </ul>                            ])
 ENDMENU                       .&Apache::loncommon::end_page());
                   $r->print(&Apache::loncommon::end_page());  
                   return OK;                    return OK;
       }        }
   } else {    } else {
Line 519  ENDMENU Line 500  ENDMENU
       } else {        } else {
 # ---------------------------------------- No, could not determine where we are  # ---------------------------------------- No, could not determine where we are
   $r->internal_redirect('/adm/ambiguous');    $r->internal_redirect('/adm/ambiguous');
             return OK;
       }        }
   } else {    } else {
 # -------------------------- Class was not initialized or page fliped strangely  # -------------------------- Class was not initialized or page fliped strangely
Line 561  described at http://www.lon-capa.org. Line 543  described at http://www.lon-capa.org.
   
 =item get_next_possible_move()  =item get_next_possible_move()
   
 =item navlaunch()  
   
 =item first_accessible_resource()  =item first_accessible_resource()
   
 =item handler()  =item handler()

Removed from v.1.78  
changed lines
  Added in v.1.80.8.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.