From c7ba1e3fb10ac2676069477e1b6d3b25921dc5c8 Mon Sep 17 00:00:00 2001 From: frankdelange Date: Tue, 14 Feb 2017 21:17:50 +0100 Subject: [PATCH] reader: lots'a changes again, still in flux... --- reader/appinfo/routes.php | 8 +- reader/lib/Controller/PageController.php | 1 + reader/lib/Db/Bookmark.php | 13 +- reader/lib/Db/Preference.php | 13 +- reader/lib/Service/BookmarkService.php | 18 +- reader/lib/Service/PreferenceService.php | 6 +- reader/templates/cbreader.php | 37 +-- reader/vendor/cbrjs/cbr.css | 76 +++--- reader/vendor/cbrjs/cbr.js | 304 +++++++++++++---------- 9 files changed, 265 insertions(+), 211 deletions(-) diff --git a/reader/appinfo/routes.php b/reader/appinfo/routes.php index e117ff0..3711d52 100644 --- a/reader/appinfo/routes.php +++ b/reader/appinfo/routes.php @@ -15,10 +15,10 @@ return ['routes' => [ ['name' => 'page#showReader', 'url' => '/', 'verb' => 'GET'], // Bookmarks - ['name' => 'bookmark#get_cursor', 'url' => '/position/cursor/{fileId}', 'verb' => 'GET'], - ['name' => 'bookmark#set_cursor', 'url' => '/position/cursor/{fileId}/{value}', 'verb' => 'POST'], - ['name' => 'bookmark#get', 'url' => '/position/{fileId}/{name}', 'verb' => 'GET', 'defaults' => ['name' => '']], - ['name' => 'bookmark#set', 'url' => '/position/{fileId}/{name}/{value}', 'verb' => 'POST'], + ['name' => 'bookmark#get_cursor', 'url' => '/bookmark/cursor/{fileId}', 'verb' => 'GET'], + ['name' => 'bookmark#set_cursor', 'url' => '/bookmark/cursor/{fileId}/{value}', 'verb' => 'POST'], + ['name' => 'bookmark#get', 'url' => '/bookmark/{fileId}/{name}', 'verb' => 'GET', 'defaults' => ['name' => '']], + ['name' => 'bookmark#set', 'url' => '/bookmark/{fileId}/{name}/{value}', 'verb' => 'POST'], // Metadata ['name' => 'metadata#get', 'url' => '/metadata/{fileId}/{name}', 'verb' => 'GET', 'defaults' => ['name' => '']], diff --git a/reader/lib/Controller/PageController.php b/reader/lib/Controller/PageController.php index 74e2195..3dffbce 100644 --- a/reader/lib/Controller/PageController.php +++ b/reader/lib/Controller/PageController.php @@ -79,6 +79,7 @@ class PageController extends Controller { 'cursor' => $this->toJson($this->bookmarkService->getCursor($fileId)), 'defaults' => $this->toJson($this->preferenceService->getDefault($scope)), 'preferences' => $this->toJson($this->preferenceService->get($scope, $fileId)), + 'defaults' => $this->toJson($this->preferenceService->getDefault($scope)), 'metadata' => $this->toJson($this->metadataService->get($fileId)) ]; diff --git a/reader/lib/Db/Bookmark.php b/reader/lib/Db/Bookmark.php index 88b01cc..10526b3 100644 --- a/reader/lib/Db/Bookmark.php +++ b/reader/lib/Db/Bookmark.php @@ -12,12 +12,23 @@ namespace OCA\Files_Reader\Db; use OCP\AppFramework\Db\Entity; -class Bookmark extends Entity { +class Bookmark extends ReaderEntity implements \JsonSerializable { protected $userId; // user protected $fileId; // book (identified by fileId) for which this mark is valid protected $name; // name, defaults to $location protected $value; // bookmark value (format-specific, eg. page number for PDF, CFI for epub, etc) protected $lastModified; // modification timestamp + + public function jsonSerialize() { + return [ + 'id' => $this->getId(), + 'userId' => $this->getUserId(), + 'fileId' => $this->getFileId(), + 'name' => $this->getName(), + 'value' => static::conditional_json_decode($this->getValue()), + 'lastModified' => $this->getLastModified(), + ]; + } } diff --git a/reader/lib/Db/Preference.php b/reader/lib/Db/Preference.php index ed66fc4..598320c 100644 --- a/reader/lib/Db/Preference.php +++ b/reader/lib/Db/Preference.php @@ -12,7 +12,7 @@ namespace OCA\Files_Reader\Db; use OCP\AppFramework\Db\Entity; -class Preference extends Entity { +class Preference extends ReaderEntity implements \JsonSerializable { protected $userId; // user for whom this preference is valid protected $scope; // scope (default or specific renderer) @@ -20,5 +20,16 @@ class Preference extends Entity { protected $name; // preference name protected $value; // preference value protected $lastModified; // modification timestamp + + public function jsonSerialize() { + return [ + 'id' => $this->getId(), + 'scope' => $this->getScope(), + 'fileId' => $this->getFileId(), + 'name' => $this->getName(), + 'value' => $this->conditional_json_decode($this->getValue()), + 'lastModified' => $this->getLastModified(), + ]; + } } diff --git a/reader/lib/Service/BookmarkService.php b/reader/lib/Service/BookmarkService.php index bced500..33b4e35 100644 --- a/reader/lib/Service/BookmarkService.php +++ b/reader/lib/Service/BookmarkService.php @@ -15,8 +15,8 @@ use OCA\Files_Reader\Db\BookmarkMapper; class BookmarkService extends Service { - // use 'CURSOR_$UserId' to identify cursor (current position in book) - const CURSOR = 'CURSOR'; + // "bookmark" name to use for the cursor (current reading position) + const CURSOR = '__CURSOR__'; private $bookmarkMapper; private $userId; @@ -41,11 +41,7 @@ class BookmarkService extends Service { $result = $this->bookmarkMapper->get($fileId, $name); return array_map( function($entity) { - return [ - 'name' => $entity->getName(), - 'value' => $entity->getValue(), - 'lastModified' => $entity->getLastModified() - ]; + return $entity->toService(); }, $result); } @@ -72,10 +68,7 @@ class BookmarkService extends Service { * @return array */ public function getCursor($fileId) { - $cursor = self::CURSOR . '_' . $this->userId; - if (!empty($value = $this->get($fileId, $cursor))) { - return $value[0]; - } + return $this->get($fileId, static::CURSOR); } /** @@ -87,8 +80,7 @@ class BookmarkService extends Service { * @return array */ public function setCursor($fileId, $value) { - $cursor = self::CURSOR . '_' . $this->userId; - return $this->bookmarkMapper->set($fileId, $cursor, $value); + return $this->bookmarkMapper->set($fileId, static::CURSOR, $value); } } diff --git a/reader/lib/Service/PreferenceService.php b/reader/lib/Service/PreferenceService.php index b0262f1..b6f052f 100644 --- a/reader/lib/Service/PreferenceService.php +++ b/reader/lib/Service/PreferenceService.php @@ -44,11 +44,7 @@ class PreferenceService extends Service { $result = $this->preferenceMapper->get($scope, $fileId, $name); return array_map( function($entity) { - return [ - 'name' => $entity->getName(), - 'value' => $entity->getValue(), - 'lastModified' => $entity->getLastModified() - ]; + return $entity->toService(); }, $result); } diff --git a/reader/templates/cbreader.php b/reader/templates/cbreader.php index f8459af..ab2aa0a 100644 --- a/reader/templates/cbreader.php +++ b/reader/templates/cbreader.php @@ -103,22 +103,26 @@ - + + + + + -