diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-04-16 17:38:34 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-16 17:38:34 +0300 |
commit | 3aafe24e068d8f5e59199f5fe91fb9f4bd3d136a (patch) | |
tree | 8488665606a0a9a2156922496c4f6478150fa6e0 /js | |
parent | a6ded9f277f82fe9de555af2819e6e1fe409904f (diff) | |
parent | 8ab0443f67a4732b2a1a6dcacb991c18c2eb884c (diff) |
Merge pull request #71 from nextcloud/editor_preview
Add endpoint for public editor previews
Diffstat (limited to 'js')
-rw-r--r-- | js/public-share.js | 53 |
1 files changed, 48 insertions, 5 deletions
diff --git a/js/public-share.js b/js/public-share.js index 7210ded..28edf39 100644 --- a/js/public-share.js +++ b/js/public-share.js @@ -1,8 +1,12 @@ // FIXME: Hack for single public file view since it is not attached to the fileslist $(document).ready(function(){ - if ($('#isPublic').val() && - $('#mimetype').val() === 'text/markdown' && - $('#filesize').val() < 524288) { + var isPublic = $('#isPublic').val(); + var mimetype = $('#mimetype').val(); + var filesize = $('#filesize').val(); + + if (isPublic && + mimetype === 'text/markdown' && + filesize < 524288) { var sharingToken = $('#sharingToken').val(); var downloadUrl = OC.generateUrl('/s/{token}/download', {token: sharingToken}); @@ -40,12 +44,12 @@ $(document).ready(function(){ previewElement .addClass('icon-loading') - .children().detach(); + .children().remove(); $.get(downloadUrl).success(function(content) { previewElement .removeClass('icon-loading') - .addClass('preview') + .addClass('preview formatted-text') .html(DOMPurify.sanitize( marked(content, { renderer: renderer, @@ -64,5 +68,44 @@ $(document).ready(function(){ previewElement .removeClass('icon-loading'); }); + } else if (isPublic && + mimetype.substr(0, mimetype.indexOf('/')) === 'text') { + // Based on default text previews from "files_sharing/js/public.js", but + // using the public endpoint from files_texteditor for better character + // encoding support. + var previewElement = $('#imgframe'); + previewElement + .addClass('icon-loading') + .children().remove(); + + var bottomMargin = 350; + var previewHeight = $(window).height() - bottomMargin; + previewHeight = Math.max(200, previewHeight); + + var sharingToken = $('#sharingToken').val(); + $.ajax({ + url: OC.generateUrl('/apps/files_texteditor/public/{token}', { token: sharingToken }), + headers: { + 'Range': 'bytes=0-524288' + } + }).success(function(content) { + var textDiv = $('<div/>').addClass('text-preview default-overridden'); + textDiv.text(content); + + previewElement + .removeClass('icon-loading') + .addClass('preview') + .append(textDiv); + + var divHeight = textDiv.height(); + if (content.length > 50000) { + var ellipsis = $('<div/>').addClass('ellipsis'); + ellipsis.html('(…)'); + ellipsis.appendTo('#imgframe'); + } + if (divHeight > previewHeight) { + textDiv.height(previewHeight); + } + }); } }); |