From 2a8cde91fb3f3280e26aebf5f2dde68c3073656a Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 1 Dec 2016 14:59:35 +0100 Subject: show pdf preview in the files sidebar Signed-off-by: Robin Appelman --- controller/displaycontroller.php | 6 +++-- css/minmode.css | 18 +++++++++++++ js/previewplugin.js | 35 +++++++++++++++++++++++++ templates/viewer.php | 3 +++ tests/unit/controller/displaycontrollertest.php | 3 ++- 5 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 css/minmode.css diff --git a/controller/displaycontroller.php b/controller/displaycontroller.php index 30310cd..6d4da80 100644 --- a/controller/displaycontroller.php +++ b/controller/displaycontroller.php @@ -37,11 +37,13 @@ class DisplayController extends Controller { * @PublicPage * @NoCSRFRequired * + * @param bool $minmode * @return TemplateResponse */ - public function showPdfViewer() { + public function showPdfViewer($minmode = false) { $params = [ - 'urlGenerator' => $this->urlGenerator + 'urlGenerator' => $this->urlGenerator, + 'minmode' => $minmode ]; $response = new TemplateResponse($this->appName, 'viewer', $params, 'blank'); diff --git a/css/minmode.css b/css/minmode.css new file mode 100644 index 0000000..e821161 --- /dev/null +++ b/css/minmode.css @@ -0,0 +1,18 @@ +.toolbar { + display: none; +} + +#viewerContainer { + top: 0 !important; +} + +body { + background-color: #fff; + background-image: none; +} + +.pdfViewer .page { + margin: 10px auto; + border: 1px solid #ddd; + border-image: none; +} diff --git a/js/previewplugin.js b/js/previewplugin.js index 54ecb9e..3e6782b 100644 --- a/js/previewplugin.js +++ b/js/previewplugin.js @@ -146,3 +146,38 @@ $(document).ready(function(){ } } }); + +(function () { + + var SidebarPreview = function () { }; + + SidebarPreview.prototype = { + attach: function (manager) { + manager.addPreviewHandler('application/pdf', this.handlePreview.bind(this)); + }, + + handlePreview: function (model, $thumbnailDiv, $thumbnailContainer, fallback) { + var previewWidth = Math.floor($thumbnailContainer.parent().width() + 50); // 50px for negative margins + var previewHeight = Math.floor(previewWidth / (16 / 9)); + + var downloadUrl = Files.getDownloadUrl(model.get('name'), model.get('path')); + + var viewer = OC.generateUrl('/apps/files_pdfviewer/?minmode=true&file={file}', {file: downloadUrl}); + var $iframe = $('