From 4717e212211d264204d4a16da277b3ee74cc8c60 Mon Sep 17 00:00:00 2001 From: MurakamiShinyu Date: Wed, 30 Jan 2019 16:30:00 +0900 Subject: [PATCH] Add EPUB metadata and HTML title info in the location notification --- src/adapt/epub.js | 2 ++ src/adapt/viewer.js | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/adapt/epub.js b/src/adapt/epub.js index 6d4dd724d..f8a316433 100644 --- a/src/adapt/epub.js +++ b/src/adapt/epub.js @@ -229,6 +229,7 @@ adapt.epub.OPFItem = function() { /** @type {?string} */ this.id = null; /** @type {string} */ this.src = ""; /** @type {?string} */ this.mediaType = null; + /** @type {?string} */ this.title = null; /** @type {Element} */ this.itemRefElement = null; /** @type {number} */ this.spineIndex = -1; /** @type {number} */ this.compressedSize = 0; @@ -2112,6 +2113,7 @@ adapt.epub.OPFView.prototype.getPageViewItem = function(spineIndex) { const item = self.opf.spine[spineIndex]; const store = self.opf.store; store.load(item.src).then(xmldoc => { + item.title = xmldoc.document.title; const style = store.getStyleForDoc(xmldoc); const customRenderer = self.makeCustomRenderer(xmldoc); let viewport = self.viewport; diff --git a/src/adapt/viewer.js b/src/adapt/viewer.js index b5862594a..71dbb83a2 100644 --- a/src/adapt/viewer.js +++ b/src/adapt/viewer.js @@ -864,7 +864,9 @@ adapt.viewer.Viewer.prototype.resize = function() { "t": "nav", "epageCount": epageCount, "first": self.currentPage.isFirstPage, - "last": self.currentPage.isLastPage + "last": self.currentPage.isLastPage, + "metadata": self.opf.metadata, + "itemTitle": self.opf.spine[self.pagePosition.spineIndex].title }; if (self.currentPage.isFirstPage || self.pagePosition.pageIndex == 0 && self.opf.spine[self.pagePosition.spineIndex].epage) { @@ -908,8 +910,8 @@ adapt.viewer.Viewer.prototype.resize = function() { */ adapt.viewer.Viewer.prototype.sendLocationNotification = function(page, cfi) { /** @type {!adapt.task.Frame.} */ const frame = adapt.task.newFrame("sendLocationNotification"); - const notification = {"t": "nav", "first": page.isFirstPage, - "last": page.isLastPage}; + const notification = {"t": "nav", "first": page.isFirstPage, "last": page.isLastPage, + "metadata": this.opf.metadata, "itemTitle": this.opf.spine[page.spineIndex].title}; const self = this; this.opf.getEPageFromPosition(/** @type {adapt.epub.Position} */(self.pagePosition)).then(epage => { notification["epage"] = epage;