// FIXME: Hack for single public file view since it is not attached to the fileslist $(document).ready(function(){ 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}); var previewElement = $('#imgframe'); var renderer = new marked.Renderer(); renderer.link = function(href, title, text) { try { var prot = decodeURIComponent(unescape(href)) .replace(/[^\w:]/g, '') .toLowerCase(); } catch (e) { return ''; } if (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) { return ''; } var out = ''; return out; }; renderer.image = function(href, title, text) { if (text) { return text; } return title; }; renderer.blockquote = function(quote) { return quote; }; previewElement .addClass('icon-loading') .children().remove(); $.get(downloadUrl).success(function(content) { previewElement .removeClass('icon-loading') .addClass('preview formatted-text') .html(DOMPurify.sanitize( marked(content, { renderer: renderer, smartLists: true }), { SAFE_FOR_JQUERY: true } )); }).fail(function(result){ 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 = $('
').addClass('text-preview default-overridden'); textDiv.text(content); previewElement .removeClass('icon-loading') .addClass('preview') .append(textDiv); var divHeight = textDiv.height(); if (content.length > 524289) { var ellipsis = $('
').addClass('ellipsis'); ellipsis.html('(…)'); ellipsis.appendTo('#imgframe'); } if (divHeight > previewHeight) { textDiv.height(previewHeight); } }); } });