Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/files_pdfviewer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Reschke <lukas@statuscode.ch>2016-12-02 13:34:31 +0300
committerGitHub <noreply@github.com>2016-12-02 13:34:31 +0300
commit93f3ad3a2ec6e03d3e3d1fcdf30a75996c2a3573 (patch)
treeb5384a8c487f264f59be2db1bffb32dbe61acbd6
parente15b7e3c38a157cee51000c2d7b10592ed7b57db (diff)
parent2a8cde91fb3f3280e26aebf5f2dde68c3073656a (diff)
Merge pull request #15 from nextcloud/sidebare-previewv11.0RC2v11.0.0
show pdf preview in the files sidebar
-rw-r--r--controller/displaycontroller.php6
-rw-r--r--css/minmode.css18
-rw-r--r--js/previewplugin.js35
-rw-r--r--templates/viewer.php3
-rw-r--r--tests/unit/controller/displaycontrollertest.php3
5 files changed, 62 insertions, 3 deletions
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 = $('<iframe id="pdframe" style="width:100%;height:' + previewHeight + 'px;display:block;" src="' + viewer + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals" />');
+ $thumbnailDiv.append($iframe);
+
+ $iframe.on('load', function() {
+ $thumbnailDiv.removeClass('icon-loading icon-32');
+ $thumbnailContainer.addClass('large');
+ $thumbnailDiv.children('.stretcher').remove();
+ $thumbnailContainer.css("max-height", previewHeight);
+ });
+ },
+
+ getFileContent: function (path) {
+ return $.get(OC.linkToRemoteBase('files' + path));
+ }
+ };
+
+ OC.Plugins.register('OCA.Files.SidebarPreviewManager', new SidebarPreview());
+})();
diff --git a/templates/viewer.php b/templates/viewer.php
index 3e9c64e..76f1bdf 100644
--- a/templates/viewer.php
+++ b/templates/viewer.php
@@ -36,6 +36,9 @@ See https://github.com/adobe-type-tools/cmap-resources
<link rel="stylesheet" href="<?php p($urlGenerator->linkTo('files_pdfviewer', 'vendor/pdfjs/web/viewer.css')) ?>?v=<?php p($version) ?>"/>
<link rel="stylesheet" href="<?php p($urlGenerator->linkTo('files_pdfviewer', 'css/viewer.css')) ?>?v=<?php p($version) ?>"/>
+ <?php if($_['minmode']):?>
+ <link rel="stylesheet" href="<?php p($urlGenerator->linkTo('files_pdfviewer', 'css/minmode.css')) ?>?v=<?php p($version) ?>"/>
+ <?php endif;?>
<script nonce="<?php p(\OC::$server->getContentSecurityPolicyNonceManager()->getNonce()) ?>" src="<?php p($urlGenerator->linkTo('files_pdfviewer', 'vendor/pdfjs/web/compatibility.js')) ?>?v=<?php p($version) ?>"></script>
diff --git a/tests/unit/controller/displaycontrollertest.php b/tests/unit/controller/displaycontrollertest.php
index 0f912e1..edcafd9 100644
--- a/tests/unit/controller/displaycontrollertest.php
+++ b/tests/unit/controller/displaycontrollertest.php
@@ -48,7 +48,8 @@ class DisplayControllerTest extends TestCase {
public function testShowPdfViewer() {
$params = [
- 'urlGenerator' => $this->urlGenerator
+ 'urlGenerator' => $this->urlGenerator,
+ 'minmode' => false
];
$expectedResponse = new TemplateResponse($this->appName, 'viewer', $params, 'blank');
$policy = new ContentSecurityPolicy();