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

public-share.js « js - github.com/nextcloud/files_texteditor.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9f29cf4147424c03e6e9ca7a06155f2ebb9ee1ee (plain)
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('(&#133;)');
				ellipsis.appendTo('#imgframe');
			}
			if (divHeight > previewHeight) {
				textDiv.height(previewHeight);
			}
		});
	}
});