]> _ Git - fluidbook-html5.git/commitdiff
Merge remote-tracking branch 'origin/printing'
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 30 Jan 2019 14:01:22 +0000 (15:01 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 30 Jan 2019 14:01:22 +0000 (15:01 +0100)
# Conflicts:
# js/libs/fluidbook/fluidbook.print.js
# style/mixins.less

1  2 
js/libs/fluidbook/fluidbook.js
js/libs/fluidbook/fluidbook.menu.js
js/libs/fluidbook/fluidbook.print.js
style/fluidbook.less
style/mixins.less

Simple merge
Simple merge
index 53fe2ff5d1d606c3b981e5d2ae42c68d37d84ba2,a8ea9c25ff437cd2351be514930591a7e5ad588d..e360649027d47895c19e86b7ff784ae3f948cec1
@@@ -20,32 -20,52 +20,51 @@@ FluidbookPrint.prototype = 
                  element = $(this),
                  mode = element.data('mode'), // Either 'print' or 'download'
                  print = (mode == 'print'),
-                 choice = $('input[name="pageChoice"]:checked').val();
+                 choice = $('input[name="pageChoice"]:checked').val(),
+                 rangeStart = $this.fluidbook.virtualToPhysical($('#pageRangeStart').val()),
+                 rangeEnd = $this.fluidbook.virtualToPhysical($('#pageRangeEnd').val());
  
              switch (choice) {
 -              case 'left':
 -                $this.fluidbook._openFile(dynamicPDF + leftPageNumber, element, 'pdf', leftPageNumber + '.pdf', print);
 -                break;
 -              case 'right':
 -                $this.fluidbook._openFile(dynamicPDF + rightPageNumber, element, 'pdf', rightPageNumber + '.pdf', print);
 -                break;
 -              case 'double':
 -                var pageRange = leftPageNumber + '-' + rightPageNumber;
 -                $this.fluidbook._openFile(dynamicPDF + pageRange, element, 'pdf', pageRange + '.pdf', print);
 -                break;
 -              case 'all':
 -                $this.fluidbook.openPDF(element, print);
 -                break;
 -              case 'bookmarks':
 -                $this.fluidbook.bookmarks.openPDF(element, print);
 -                break;
 -              case 'range':
 +                case 'left':
 +                    $this.fluidbook._openFile(dynamicPDF + leftPageNumber, element, 'pdf', leftPageNumber + '.pdf', print);
 +                    break;
 +                case 'right':
 +                    $this.fluidbook._openFile(dynamicPDF + rightPageNumber, element, 'pdf', rightPageNumber + '.pdf', print);
 +                    break;
 +                case 'double':
 +                    var pageRange = leftPageNumber + '-' + rightPageNumber;
 +                    $this.fluidbook._openFile(dynamicPDF + pageRange, element, 'pdf', pageRange + '.pdf', print);
 +                    break;
 +                case 'all':
 +                    $this.fluidbook.openPDF(element, print);
 +                    break;
 +                case 'bookmarks':
 +                    $this.fluidbook.bookmarks.openPDF(element, print);
 +                    break;
-                 default:
++                case 'range':
+                 if (isNaN(rangeStart) ||
+                     isNaN(rangeEnd) ||
+                     (rangeStart < 1) ||
+                     (rangeEnd > $this.fluidbook.datas.pages) ||
+                     (rangeStart > rangeEnd)
+                 ) {
+                   alert(__('Invalid page range. Please try again.'));
+                   return false;
+                 }
+                 var pageRange = rangeStart + '-' + rangeEnd;
+                 $this.fluidbook._openFile(dynamicPDF + pageRange, element, 'pdf', pageRange + '.pdf', print);
 -                break;
 -              default:
 -                return false;
++                break;default:
 +                    return false;
              }
          });
  
+         // Automatically select page range option when clicking in the input fields
+         $(document).on('focus', '.page-range-input', function() {
+           $('#pageRange').prop('checked', true);
+         });
          // When there are no bookmarks a click on the bookmarks option will open the bookmarks help modal
 -        $(document).on('click', '.bookmarks-option.disabled', function(event) {
 +        $(document).on('click', '.bookmarks-option.disabled', function (event) {
              event.preventDefault();
  
              $this.fluidbook.menu.quickCloseView();
  
          // Bookmarks
          if (this.fluidbook.datas.bookmark) {
 -          var hasBookmarks = this.fluidbook.bookmarks.hasBookmarkedPages(),
 -          bookmarksDisabled = hasBookmarks ? '' : 'disabled';
 +            var hasBookmarks = this.fluidbook.bookmarks.hasBookmarkedPages(),
 +                bookmarksDisabled = hasBookmarks ? '' : 'disabled';
  
 -          view += '<div class="print-option bookmarks-option '+ bookmarksDisabled +'">';
 -          view += '<label for="bookmarkedPages">';
 -          view += '<div class="doubleThumb bookmarks">';
 -          view += this.fluidbook.bookmarks.getPrintPreview();
 -          view += '</div>'; // .doubleThumb
 -          view += '</label>';
 -          view += '<input type="radio" name="pageChoice" value="bookmarks" id="bookmarkedPages" '+ bookmarksDisabled +'>';
 -          view += '<label for="bookmarkedPages" class="print-label-text">' + __('bookmarks') + '</label>';
 -          view += '</div>'; // .print-option
 +            view += '<div class="print-option bookmarks-option ' + bookmarksDisabled + '">';
 +            view += '<label for="bookmarkedPages">';
 +            view += '<div class="doubleThumb bookmarks">';
 +            view += this.fluidbook.bookmarks.getPrintPreview();
 +            view += '</div>'; // .doubleThumb
 +            view += '</label>';
-             view += '<input type="radio" name="pageChoice" value="bookmarks" id="bookmarkedPages" ' + bookmarksDisabled + '>'
++            view += '<input type="radio" name="pageChoice" value="bookmarks" id="bookmarkedPages" ' + bookmarksDisabled + '>';
 +            view += '<label for="bookmarkedPages" class="print-label-text">' + __('bookmarks') + '</label>';
 +            view += '</div>'; // .print-option
          }
  
-         view += '<div class="print-option"></div>'; // Extra empty div to ensure flexbox space-between works as expected
+         view += '<div class="print-option blank"></div>'; // Extra empty div to ensure flexbox space-between works as expected
+         // Page range inputs
+         if (this.fluidbook.datas.printPageRange) {
+           // leftPageNumber may be false if on first page
+           var rangeStart = Math.max(leftPageNumber, 1);
+           // Current page + 1 unless we're out of range.
+           // It has to be calculated this way because sometimes there is no rightPageNumber
+           var rangeEnd = Math.min(rangeStart + 1, this.fluidbook.datas.pages);
+           view += '<div class="print-option page-range-option">';
+           view += '<input type="radio" name="pageChoice" value="range" id="pageRange">';
+           view += '<label for="pageRange">';
+           view += __('From page');
+           view += '<input class="page-range-input" type="text" id="pageRangeStart" value="' + this.fluidbook.physicalToVirtual(rangeStart) + '" autocomplete="off">';
+           view += __('to');
+           view += '<input class="page-range-input" type="text" id="pageRangeEnd" value="' + this.fluidbook.physicalToVirtual(rangeEnd) + '" autocomplete="off">';
+           view += '</label>';
+           view += '</div>'; // .print-option
+         }
  
          view += '</div>'; // .print-dialogue
  
Simple merge
index c049017810d52d1a0c80ada236f8660543bf24bc,e563fe2d73818efc8de36cd55a20df3e61f30b87..c0a2c9f7e99341c91b230f59923b5ad693a89d41
@@@ -63,7 -67,4 +67,7 @@@
        &.hidden {
                opacity: 0;
        }
- }
 +      .ios & {
 +              transition: none !important;
 +      }
+ }