[LON-CAPA-cvs] cvs: rat(version_2_11_X) / lonpageflip.pm

raeburn raeburn at source.lon-capa.org
Mon Sep 10 15:17:40 EDT 2018


raeburn		Mon Sep 10 19:17:40 2018 EDT

  Modified files:              (Branch: version_2_11_X)
    /rat	lonpageflip.pm 
  Log:
  - For 2.11
    Backport 1.97.
  
  
Index: rat/lonpageflip.pm
diff -u rat/lonpageflip.pm:1.80.8.9 rat/lonpageflip.pm:1.80.8.10
--- rat/lonpageflip.pm:1.80.8.9	Fri Aug  5 21:48:38 2016
+++ rat/lonpageflip.pm	Mon Sep 10 19:17:39 2018
@@ -2,7 +2,7 @@
 #
 # Page flip handler
 #
-# $Id: lonpageflip.pm,v 1.80.8.9 2016/08/05 21:48:38 raeburn Exp $
+# $Id: lonpageflip.pm,v 1.80.8.10 2018/09/10 19:17:39 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -255,6 +255,28 @@
     }
 }
 
+sub reinited_js {
+    my ($url,$cid,$timeout) = @_;
+    if (!$timeout) {
+        $timeout = 0;
+    }
+    return <<"END";
+<script type="text/javascript">
+// <![CDATA[
+setTimeout(function() {
+    var newurl = '$url';
+    if (document.getElementById('LC_update_$cid')) {
+        document.getElementById('LC_update_$cid').style.display = 'none';
+    }
+    if ((newurl !== null) && (newurl !== '') && (newurl !== 'undefined')) {
+        window.location.href = "$url";
+    }
+}, $timeout);
+// ]]>
+</script>
+END
+}
+
 # ================================================================ Main Handler
 
 sub handler {
@@ -271,6 +293,7 @@
   my %cachehash=(); 
   my $multichoice=0;
   my %multichoicehash=();
+  my %prog_state=(); 
   my ($redirecturl,$redirectsymb,$enc,$anchor);
   my $next='';
   my @possibilities=();
@@ -311,8 +334,20 @@
                       untie(%hash);
                   }
               }
+              &Apache::loncommon::content_type($r,'text/html');
+              $r->send_http_header;
+              $r->print(&Apache::loncommon::start_page('Content Changed'));
+              my $preamble = '<div id="LC_update_'.$env{'request.course.id'}.'" class="LC_info">'.
+                             '<br />'.
+                             &mt('Your course session is being updated because of recent changes by course personnel.').
+                             ' '.&mt('Please be patient.').'<br /></div>'.
+                             '<div style="padding:0;clear:both;margin:0;border:0"></div>';
+              %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble);
+              &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Updating course'));
               my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");
+              &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished'));
               if ($ferr) {
+                  &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
                   my $requrl = $r->uri;
                   $env{'user.error.msg'}="$requrl:bre:0:0:Course not initialized";
                   $env{'user.reinit'} = 1;
@@ -329,11 +364,17 @@
       }
       if ($direction eq 'firstres') {
 	  my $furl=&first_accessible_resource();
-	  &Apache::loncommon::content_type($r,'text/html');
-	  $r->header_out(Location => 
-			 &Apache::lonnet::absolute_url().$furl);
-	     
-	  return REDIRECT;
+          $furl=&Apache::lonnet::absolute_url().$furl;
+          if ($reinitcheck eq 'update') {
+              &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
+              $r->print(&reinited_js($furl,$env{'request.course.id'},100));
+              $r->print(&Apache::loncommon::end_page());
+              return OK;
+          } else {
+	      &Apache::loncommon::content_type($r,'text/html');
+	      $r->header_out(Location => $furl);
+	      return REDIRECT;
+          }
       }
       if ($direction eq 'return') { 
 # -------------------------------------------------------- Return to last known
@@ -352,11 +393,16 @@
          } else {
 	    $newloc='/adm/navmaps';
          }
-	 &Apache::loncommon::content_type($r,'text/html');
-	 $r->header_out(Location => 
-			&Apache::lonnet::absolute_url().$newloc);
-	     
-	 return REDIRECT;
+         $newloc=&Apache::lonnet::absolute_url().$newloc;
+         if ($reinitcheck eq 'update') {
+             $r->print(&reinited_js($newloc,$env{'request.course.id'},100));
+             $r->print(&Apache::loncommon::end_page());
+             return OK;
+         } else {
+             &Apache::loncommon::content_type($r,'text/html');
+             $r->header_out(Location => $newloc);
+             return REDIRECT;
+         }
       }
 #
 # Is the current URL on the map? If not, start with last known URL
@@ -370,15 +416,21 @@
              $last=$hash{'last_known'};
              untie(%hash);
          }
-         my $newloc;
          if ($last) {
 	     $currenturl=&Apache::lonnet::clutter((&Apache::lonnet::decode_symb($last))[2]);
 	 } else {
-	     &Apache::loncommon::content_type($r,'text/html');
-	     $r->header_out(Location => 
-			    &Apache::lonnet::absolute_url().
-			    '/adm/navmaps');
-	     return REDIRECT;
+             my $newloc = &Apache::lonnet::absolute_url().
+                          '/adm/navmaps';
+             if ($reinitcheck eq 'update') {
+                 &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
+                 $r->print(&reinited_js($newloc,$env{'request.course.id'},100));
+                 $r->print(&Apache::loncommon::end_page());
+                 return OK;
+             } else {
+                 &Apache::loncommon::content_type($r,'text/html');
+	         $r->header_out(Location => $newloc);
+	         return REDIRECT;
+             }
          }
       }
 # ------------------------------------------- Do we have any idea where we are?
@@ -470,9 +522,16 @@
                           $url .= $anchor;
                       }
                   }
-                  &Apache::loncommon::content_type($r,'text/html');
-                  $r->header_out(Location => $url);
-                  return REDIRECT;
+                  if ($reinitcheck eq 'update') {
+                      &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
+                      $r->print(&reinited_js($url,$env{'request.course.id'},100));
+                      $r->print(&Apache::loncommon::end_page());
+                      return OK;
+                  } else {
+                      &Apache::loncommon::content_type($r,'text/html');
+                      $r->header_out(Location => $url);
+                      return REDIRECT;
+                  }
 	      } else {
 # --------------------------------------------------------- There was a problem
                   &Apache::loncommon::content_type($r,'text/html');
@@ -555,12 +614,23 @@
 	      }
 	  } else {
 # ------------------------------------------------- Problem, could not tie hash
+              if ($reinitcheck eq 'update') {
+                  &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
+                  $r->print(&Apache::loncommon::end_page());
+              }
               $env{'user.error.msg'}="/adm/flip:bre:0:1:Course Data Missing";
               return HTTP_NOT_ACCEPTABLE; 
           }
       } else {
 # ---------------------------------------- No, could not determine where we are
-	  $r->internal_redirect('/adm/ambiguous');
+          my $newloc = '/adm/ambiguous';
+          if ($reinitcheck eq 'update') {
+              &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
+              $r->print(&reinited_js($newloc,$env{'request.course.id'},100));
+              $r->print(&Apache::loncommon::end_page());
+          } else {
+	      $r->internal_redirect($newloc);
+          }
           return OK;
       }
   } else {




More information about the LON-CAPA-cvs mailing list