1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
// 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 = '<a href="' + href + '" rel="noreferrer noopener"';
if (title) {
out += ' title="' + title + '"';
}
out += '>' + text + '</a>';
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 = $('<div/>').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 = $('<div/>').addClass('ellipsis');
ellipsis.html('(…)');
ellipsis.appendTo('#imgframe');
}
if (divHeight > previewHeight) {
textDiv.height(previewHeight);
}
});
}
});
|