Add Metadata model filled with info passed by the upper module that parses the package document
ADD
js/models/metadata.js
+// Created by Juan Corona
+// Copyright (c) 2016 Readium Foundation and/or its licensees. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation and/or
+// other materials provided with the distribution.
+// 3. Neither the name of the organization nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific
+// prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+// OF THE POSSIBILITY OF SUCH DAMAGE.
+define([], function () {
+
+ /**
+ * Wrapper of the Metadata object, created in openBook()
+ *
+ * @class Models.Metadata
+ */
+ var Metadata = function(packageMetadata) {
+ this.identifier = undefined;
+ this.title = undefined;
+ this.author = undefined;
+ this.description = undefined;
+ this.publisher = undefined;
+ this.language = undefined;
+ this.rights = undefined;
+ this.modifiedDate = undefined;
+ this.publishedDate = undefined;
+ this.epubVersion = undefined;
+
+ if (packageMetadata) {
+ this.identifier = packageMetadata.id;
+ this.title = packageMetadata.title;
+ this.author = packageMetadata.author;
+ this.description = packageMetadata.description;
+ this.language = packageMetadata.language;
+ this.publisher = packageMetadata.publisher;
+ this.rights = packageMetadata.rights;
+ this.modifiedDate = packageMetadata.modified_date;
+ this.publishedDate = packageMetadata.pubdate;
+ this.epubVersion = packageMetadata.epub_version;
+ }
+ };
+
+ return Metadata;
+});
+

MODIFY
js/views/reader_view.js
js/views/reader_view.js
// OF THE POSSIBILITY OF SUCH DAMAGE.
define(["../globals", "jquery", "underscore", "eventEmitter", "./fixed_view", "../helpers", "./iframe_loader", "./internal_links_support",
- "./media_overlay_data_injector", "./media_overlay_player", "../models/package", "../models/page_open_request",
+ "./media_overlay_data_injector", "./media_overlay_player", "../models/package", "../models/metadata", "../models/page_open_request",
"./reflowable_view", "./scroll_view", "../models/style_collection", "../models/switches", "../models/trigger",
"../models/viewer_settings", "../models/bookmark_data", "../models/node_range_info"],
function (Globals, $, _, EventEmitter, FixedView, Helpers, IFrameLoader, InternalLinksSupport,
- MediaOverlayDataInjector, MediaOverlayPlayer, Package, PageOpenRequest,
+ MediaOverlayDataInjector, MediaOverlayPlayer, Package, Metadata, PageOpenRequest,
ReflowableView, ScrollView, StyleCollection, Switches, Trigger,
ViewerSettings, BookmarkData, NodeRangeInfo) {
/**
@@ -52,6 +52,7 @@ var ReaderView = function (options) {
var self = this;
var _currentView = undefined;
var _package = undefined;
+ var _metadata = undefined;
var _spine = undefined;
var _viewerSettings = new ViewerSettings({});
//styles applied to the container divs
@@ -347,6 +348,15 @@ var ReaderView = function (options) {
return _package;
};
+ /**
+ * Returns a data object based on the package document metadata
+ *
+ * @returns {Models.Metadata}
+ */
+ this.metadata = function () {
+ return _metadata;
+ };
+
/**
* Returns a representation of the spine as a data object, also acts as list of spine items
*
@@ -386,6 +396,7 @@ var ReaderView = function (options) {
var packageData = openBookData.package ? openBookData.package : openBookData;
_package = new Package(packageData);
+ _metadata = new Metadata(packageData.metadata);
_spine = _package.spine;
_spine.handleLinear(true);

Add Metadata model filled with info passed by the upper module that parses the package document