Diff for /rat/lonpageflip.pm between versions 1.66 and 1.69

version 1.66, 2006/03/06 23:41:07 version 1.69, 2006/05/30 19:47:40
Line 30 Line 30
 package Apache::lonpageflip;  package Apache::lonpageflip;
   
 use strict;  use strict;
   use LONCAPA;
 use Apache::Constants qw(:common :http REDIRECT);  use Apache::Constants qw(:common :http REDIRECT);
 use Apache::lonnet;  use Apache::lonnet;
 use HTML::TokeParser;  use HTML::TokeParser;
Line 84  sub hash_src { Line 85  sub hash_src {
     return ($hash{'src_'.$id},$symb);      return ($hash{'src_'.$id},$symb);
 }  }
   
 # Inputs are a url, adn a hash ref of  
 # form name => value pairs  
 # takes care of properly adding the form name elements and values to the   
 # the url doing proper escaping of the values and joining with ? or & as   
 # needed  
   
 sub add_get_param {  
     my ($url,$form_data) = @_;  
     my $needs_question_mark = ($url !~ /\?/);  
   
     while (my ($name,$value) = each(%$form_data)) {  
  if ($needs_question_mark) {  
     $url.='?';  
     $needs_question_mark = 0;  
  } else {   
     $url.='&';  
  }  
  $url.=$name.'='.&Apache::lonnet::escape($form_data->{$name});  
     }  
     return $url;  
 }  
   
 sub move {  sub move {
     my ($rid,$mapurl,$direction)=@_;      my ($rid,$mapurl,$direction)=@_;
     my $startoutrid=$rid;      my $startoutrid=$rid;
Line 207  sub navlaunch { Line 186  sub navlaunch {
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     &Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
     $r->send_http_header;      $r->send_http_header;
     my $html=&Apache::lonxml::xmlbegin();      $r->print(&Apache::loncommon::start_page('Launched'));   
     $r->print("$html<head>\n");  
     $r->print('</head>'.  
       &Apache::loncommon::bodytag('Launched'));     
     $r->print(<<ENDNAV);      $r->print(<<ENDNAV);
     <p><a href="/adm/flip?postdata=firstres%3a">Goto first resource</a></p>      <p><a href="/adm/flip?postdata=firstres%3a">Goto first resource</a></p>
     <script type="text/javascript">      <script type="text/javascript">
Line 222  sub navlaunch { Line 198  sub navlaunch {
     </script>      </script>
     <p><a href="javascript:collapse();">Collapse external navigation window</a></p>      <p><a href="javascript:collapse();">Collapse external navigation window</a></p>
 ENDNAV  ENDNAV
     $r->print(&Apache::loncommon::endbodytag().'</html>');      $r->print(&Apache::loncommon::end_page());
 }  }
   
   sub first_accessible_resource {
       my $furl;
       if (tie(%hash,'GDBM_File',$env{'request.course.fn'}.'.db',
       &GDBM_READER(),0640)) {
    $furl=$hash{'first_url'};
           if (!&Apache::lonnet::allowed('bre',$furl)) {
   # Wow, we cannot see this ... move forward to the next one that we can see
       my ($newrid,$newmap)=&move($hash{'first_rid'},$hash{'first_mapurl'},'forward');
   # Build the new URL
       my ($newresid,$newmapid)=split(/\./,$newrid);
       my $symb=&Apache::lonnet::encode_symb($newmap,$newresid,$hash{'src_'.$newrid});
       $furl=&add_get_param($hash{'src_'.$newrid},{ 'symb' => $symb });
       if ($hash{'encrypted_'.$newrid}) {
    $furl=&Apache::lonenc::encrypted($furl);
       }
    }
    untie(%hash);
    return $furl;
       } else {
    return '/adm/navmaps';
       }
   }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
 sub handler {  sub handler {
Line 253  sub handler { Line 253  sub handler {
       }        }
       $currenturl=~s/\.\d+\.(\w+)$/\.$1/;        $currenturl=~s/\.\d+\.(\w+)$/\.$1/;
       if ($direction eq 'firstres') {        if ($direction eq 'firstres') {
   my $furl;    my $furl=&first_accessible_resource();
   if (tie(my %bighash,'GDBM_File',$env{'request.course.fn'}.'.db',  
   &GDBM_READER(),0640)) {  
       $furl=$bighash{'first_url'};  
       untie(%bighash);  
   }  
   &Apache::loncommon::content_type($r,'text/html');    &Apache::loncommon::content_type($r,'text/html');
   $r->header_out(Location =>     $r->header_out(Location => 
  'http://'.$ENV{'HTTP_HOST'}.$furl);   'http://'.$ENV{'HTTP_HOST'}.$furl);
Line 440  sub handler { Line 435  sub handler {
      'titleheader' => 'Title',       'titleheader' => 'Title',
      'type' => 'Type');       'type' => 'Type');
                   if ($#possibilities>0) {                    if ($#possibilities>0) {
       my $bodytag=        my $start_page=
                              &Apache::loncommon::bodytag('Multiple Resources');    &Apache::loncommon::start_page('Multiple Resources');
                      $r->print(<<ENDSTART);                       $r->print(<<ENDSTART);
 <head><title>Choose Next Location</title></head>  $start_page
 $bodytag  
 <h3>$lt{'wherenext'}</h3>  <h3>$lt{'wherenext'}</h3>
 <p>  <p>
 $lt{'pick'}:  $lt{'pick'}:
Line 465  ENDSTART Line 459  ENDSTART
                      }                       }
                      $r->print('</table>');                       $r->print('</table>');
                   } else {                    } else {
       my $bodytag=&Apache::loncommon::bodytag('No Resource');        my $start_page=
     &Apache::loncommon::start_page('No Resource');
       $r->print(<<ENDNONE);        $r->print(<<ENDNONE);
 <head><title>No Resource</title></head>  $start_page
 $bodytag  
 <h3>$lt{'title'}</h3>  <h3>$lt{'title'}</h3>
 <p>$lt{'explain'}</p>  <p>$lt{'explain'}</p>
 ENDNONE  ENDNONE
Line 477  ENDNONE Line 471  ENDNONE
 <ul>  <ul>
 <li><a href="/adm/flip?postdata=return:">$lt{'back'}</a></li>  <li><a href="/adm/flip?postdata=return:">$lt{'back'}</a></li>
 <li><a href="/adm/navmaps">$lt{'nav'}</a></li>  <li><a href="/adm/navmaps">$lt{'nav'}</a></li>
 </ul></body></html>  </ul>
 ENDMENU  ENDMENU
                     $r->print(&Apache::loncommon::end_page());
                   return OK;                    return OK;
       }        }
   } else {    } else {

Removed from v.1.66  
changed lines
  Added in v.1.69


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