getView: function (mode) {
- var compact = this.fluidbook.mobilefirst.enabled;
+ this.compact = this.fluidbook.mobilefirst.enabled;
// Ensure mode is either download or print (default)
mode = (mode === 'download' ? mode : 'print');
// Todo: handle RTL differences for page numbers? See fluidbook.index.js for example
- var leftPageNumber = this.fluidbook.getPhysicalPageNumberOfSide(this.fluidbook.l10n.dir === 'ltr' ? 'left' : 'right'),
- rightPageNumber = this.fluidbook.getPhysicalPageNumberOfSide(this.fluidbook.l10n.dir === 'ltr' ? 'right' : 'left'),
- isFirstPage = (this.fluidbook.currentPage === 0),
- isLastPage = (this.fluidbook.currentPage === this.fluidbook.datas.pages),
- isSinglePageMode = (this.fluidbook.resize.orientation === 'portrait'),
- buttonLabels = {
- 'print': __('print'),
- 'download': __('download')
- },
- view = '';
+ this.leftPageNumber = this.fluidbook.getPhysicalPageNumberOfSide('left');
+ this.rightPageNumber = this.fluidbook.getPhysicalPageNumberOfSide('right');
+ this.isFirstPage = (this.fluidbook.currentPage === 0);
+ this.isLastPage = (this.fluidbook.currentPage === this.fluidbook.datas.pages);
+ this.isSinglePageMode = (this.fluidbook.resize.orientation === 'portrait');
+ this.buttonLabels = {
+ 'print': __('print'),
+ 'download': __('download')
+ };
+ var view = '';
view += '<div class="content">';
- view += '<div class="print-dialogue' + (compact ? ' compact' : '') + '">';
+ view += '<div class="print-dialogue' + (this.compact ? ' compact' : '') + '">';
// NOTE: Each option has two labels so thumbnails are also clickable and so it works with the custom radio inputs
- // Left Page (empty when on first page)
- if (!isFirstPage) {
- view += '<div class="print-option">';
- if (!compact) {
- view += '<label for="leftPage">';
- view += '<div class="doubleThumb">';
- view += '<div class="thumb left">';
- view += this.fluidbook.loader.getThumbImage(leftPageNumber, true);
- view += '</div>'; // .thumb
- if (!isSinglePageMode && !isLastPage) {
- view += '<div class="thumb right blank"><div class="blank-mask"></div></div>';
- }
- view += '</div>'; // .doubleThumb
- view += '</label>';
- }
- view += '<input type="radio" name="pageChoice" value="left" id="leftPage">';
- view += '<label for="leftPage" class="print-label-text">' + (isLastPage || isSinglePageMode ? __('Current page') : __('left page')) + '</label>';
- view += '</div>'; // .print-option
- }
-
- // Right Page (empty when when on last page or in portrait / single page mode)
- if (!isLastPage && !isSinglePageMode) {
- view += '<div class="print-option">';
- if (!compact) {
- view += '<label for="rightPage">';
- view += '<div class="doubleThumb">';
- if (!isFirstPage) {
- view += '<div class="thumb left blank"><div class="blank-mask"></div></div>';
- }
- view += '<div class="thumb ' + (isFirstPage ? 'left' : 'right') + '">'; // Only shows 1 page when on first page
- view += this.fluidbook.loader.getThumbImage(rightPageNumber, true);
- view += '</div>'; // .thumb
- view += '</div>'; // .doubleThumb
- view += '</label>';
- }
- view += '<input type="radio" name="pageChoice" value="right" id="rightPage">';
- view += '<label for="rightPage" class="print-label-text">' + (isFirstPage ? __('Current page') : __('right page')) + '</label>';
- view += '</div>'; // .print-option
- }
+ view += this.getSinglePages();
// Double Page
- if (!isFirstPage && !isLastPage && !isSinglePageMode) {
+ if (!this.isFirstPage && !this.isLastPage && !this.isSinglePageMode) {
view += '<div class="print-option">';
- if (!compact) {
+ if (!this.compact) {
view += '<label for="doublePage">';
view += '<div class="doubleThumb">';
view += '<div class="thumb left">';
- view += this.fluidbook.loader.getThumbImage(leftPageNumber, true);
+ view += this.fluidbook.loader.getThumbImage(this.leftPageNumber, true);
view += '</div>';
view += '<div class="thumb right">';
- view += this.fluidbook.loader.getThumbImage(rightPageNumber, true);
+ view += this.fluidbook.loader.getThumbImage(this.rightPageNumber, true);
view += '</div>'; // .thumb
view += '</div>'; // .doubleThumb
view += '</label>';
// Full Brochure
if (this.fluidbook.datas.printFullBrochure) {
view += '<div class="print-option">';
- if (!compact) {
+ if (!this.compact) {
view += '<label for="allPages">';
view += '<div class="doubleThumb">';
view += '<div class="thumb left">';
bookmarksDisabled = hasBookmarks ? '' : 'disabled';
view += '<div class="print-option bookmarks-option ' + bookmarksDisabled + '">';
- if (!compact) {
+ if (!this.compact) {
view += '<label for="bookmarkedPages">';
view += '<div class="doubleThumb bookmarks">';
view += this.fluidbook.bookmarks.getPrintPreview();
// Page range inputs
if (this.fluidbook.datas.printPageRange) {
- // leftPageNumber may be false if on first page
- var rangeStart = Math.max(leftPageNumber, 1);
+ // this.leftPageNumber may be false if on first page
+ var rangeStart = Math.max(this.leftPageNumber, 1);
// Current page + 1 unless we're out of range.
- // It has to be calculated this way because sometimes there is no rightPageNumber
+ // It has to be calculated this way because sometimes there is no this.rightPageNumber
var rangeEnd = Math.min(rangeStart + 1, this.fluidbook.datas.pages);
view += '<div class="print-option page-range-option">';
// Action buttons
view += '<div class="fonctions">';
- view += '<a id="confirmChoice" href="#" data-mode="' + mode + '">' + buttonLabels[mode] + '</a>';
+ view += '<a id="confirmChoice" href="#" data-mode="' + mode + '">' + this.buttonLabels[mode] + '</a>';
view += '</div>'; // .fonctions
view += '</div>'; // .content
return view;
},
+ getSinglePage: function (side, pageNumber, label, addMask) {
+
+ var sideMask = '';
+ if (addMask) {
+ sideMask = side === 'left' ? 'right' : 'left';
+ }
+ var view = '';
+ view += '<div class="print-option">';
+ if (!this.compact) {
+ view += '<label for="' + side + 'Page">';
+ view += '<div class="doubleThumb">';
+ if (addMask && sideMask === 'left') {
+ view += this.getSideMask(sideMask);
+ }
+ view += '<div class="thumb ' + side + '">';
+ view += this.fluidbook.loader.getThumbImage(pageNumber, true);
+ view += '</div>'; // .thumb
+ if (addMask && sideMask === 'right') {
+ view += this.getSideMask(sideMask);
+ }
+ view += '</div>'; // .doubleThumb
+ view += '</label>';
+ }
+ view += '<input type="radio" name="pageChoice" value="' + side + '" id="' + side + 'Page">';
+ view += '<label for="' + side + 'Page" class="print-label-text">' + label + '</label>';
+ view += '</div>'; // .print-option
+ return view;
+ },
+
+ getSideMask: function (side) {
+ return '<div class="thumb ' + side + ' blank"><div class="blank-mask"></div></div>'
+ },
+
+ getSinglePages: function () {
+ var view = '';
+ var onePage = this.isSinglePageMode || this.isFirstPage || this.isLastPage;
+
+ var leftPage = this.leftPageNumber;
+ var rightPage = this.rightPageNumber;
+
+ if (this.fluidbook.l10n.dir === 'ltr') {
+ if (this.isFirstPage) {
+ leftPage = this.rightPageNumber;
+ }
+ view += this.getSinglePage('left', leftPage, onePage ? __('Current page') : __('left page'), !onePage);
+ if (!onePage) {
+ view += this.getSinglePage('right', rightPage, __('right page'), true);
+ }
+ } else {
+ if (this.isFirstPage) {
+ rightPage = this.leftPageNumber;
+ }
+ view += this.getSinglePage('right', rightPage, onePage ? __('Current page') : __('right page'), !onePage);
+ if (!onePage) {
+ view += this.getSinglePage('left', leftPage, __('left page'), true);
+ }
+ }
+ return view;
+ },
+
advancedPrint: function () {
if (this.fluidbook.datas.phonegap !== false) {
return false;