Use modified dragscrollable plugin from http://github.com/raganwald/iGesture. Add...
[bookreader.git] / BookReaderIA / inc / BookReader.inc
index 93c3915..936cf69 100644 (file)
@@ -73,7 +73,7 @@ class BookReader
   {
     // Set title to default if not set
     if (!$title) {
-        $title = 'Bookreader';
+        $title = 'BookReader';
     }
     
     $id = $identifier;
@@ -81,7 +81,12 @@ class BookReader
     // manually update with Launchpad version number at each checkin so that browsers
     // do not use old cached version
     // see https://bugs.launchpad.net/gnubook/+bug/330748
-    $version = "r22";
+    $version = "r25";
+    
+    if (BookReader::getDevHost($server)) {
+        // on dev host - add time to force reload
+        $version .= '_' . time();
+    }
     
     if ("" == $id) {
         echo "No identifier specified!";
@@ -94,6 +99,7 @@ class BookReader
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <head>
+    <meta name="viewport" content="width=device-width, maximum-scale=1.0" />
     <title><? echo $title; ?></title>
 <!--[if lte IE 6]>
     <meta http-equiv="refresh" content="2; URL=/bookreader/browserunsupported.php?id=<? echo($id); ?>">
@@ -101,9 +107,12 @@ class BookReader
     <link rel="stylesheet" type="text/css" href="/bookreader/BookReader.css?v=<? echo($version); ?>">
 <? if ($uiMode == "embed") { ?>
     <link rel="stylesheet" type="text/css" href="/bookreader/BookReaderEmbed.css?v=<? echo($version); ?>">
+<? } elseif ($uiMode == "touch") { ?>
+    <link rel="stylesheet" type="text/css" href="/bookreader/touch/BookReaderTouch.css?v=<? echo($version); ?>">
 <? } /* uiMode */ ?>
-    <script src="/includes/jquery-1.3.2.min.js" type="text/javascript"></script>
-    <script type="text/javascript" src="/bookreader/jquery.easing.1.3.js"></script>
+    <script src="/includes/jquery-1.4.2.min.js" type="text/javascript"></script>
+    <script type="text/javascript" src="/bookreader/jquery-ui-1.8.1.custom.min.js"></script>
+    <script type="text/javascript" src="/bookreader/dragscrollable.js"></script>
     <script type="text/javascript" src="/bookreader/BookReader.js?v=<? echo($version); ?>"></script>
 </head>
 <body style="background-color: #FFFFFF;">
@@ -164,22 +173,31 @@ class BookReader
   <?
     exit;
   }
+  
+  // Returns the user part of dev host from URL, or null
+  public static function getDevHost($server)
+  {
+      if (preg_match("/^www-(\w+)/", $_SERVER["SERVER_NAME"], $match)) {
+        return $match[1];
+      }
+      
+      return null;
+  }
 
   
   public static function serverBaseURL($server)
   {
-    // Check if we're on a dev vhost and point to JSIA in the user's public_html
-    // on the datanode
-    if (preg_match("/^www-(\w+)/", $_SERVER["SERVER_NAME"], $match)) {
+      // Check if we're on a dev vhost and point to JSIA in the user's public_html
+      // on the datanode
       // $$$ the remapping isn't totally automatic yet and requires user to
       //     ln -s ~/petabox/www/datanode/BookReader ~/public_html/BookReader
       //     so we enable it only for known hosts
+      $devhost = BookReader::getDevHost($server);
       $devhosts = array('mang', 'testflip', 'rkumar');
-      if (in_array($match[1], $devhosts)) {
-        $server = $server . "/~" . $match[1];
+      if (in_array($devhost, $devhosts)) {
+        $server = $server . "/~" . $devhost;
       }
-    }
-    return $server;
+      return $server;
   }
   
   
@@ -205,5 +223,48 @@ class BookReader
     return $url;
   }
   
+  // Return the URL for the requested /download/$path, or null
+  public static function getURL($path, $item) {
+    // $path should look like {itemId}/{operator}/{filename}
+    // Other operators may be added
+    
+    $parts = preg_split('#/#', $path, 3);
+    if (count($parts) != 3) {
+        return null;
+    }
+    $identifier = $parts[0];
+    $operator = $parts[1];
+    $filename = $parts[2];
+    
+    $serverBaseURL = BookReader::serverBaseURL($item->getServer());
+            
+    switch ($operator) {
+        case 'page':
+            // Find bookId and which page was requested
+            $pathParts = pathinfo($filename);
+            
+            // Look for preview request
+            if (preg_match('/^(.*)_(cover|title|preview)$/', $pathParts['filename'], $matches) === 0) {
+                return null;
+            }
+            $bookId = $matches[1];
+            $page = $matches[2];
+            $query = array(
+                'id' => $identifier,
+                'bookId' => $bookId,
+                'itemPath' => $item->getMainDir(),
+                'server' => $serverBaseURL,
+                'page' => $page,
+            );
+            return 'http://' . $serverBaseURL . '/BookReader/BookReaderPreview.php?' . http_build_query($query, '', '&');
+        
+        default:
+            return null;            
+    }
+      
+    return null; // was not handled
+  }
+  
 }
-  ?>
+
+?>
\ No newline at end of file