Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
fix: use old singe file share rendering as fallback
Only render images and videos with the viewer.
Text has its own way of handling single file shares for now.

In case viewer does not support the file format
fall back to the old way of handling single file shares.

Signed-off-by: Max <[email protected]>
  • Loading branch information
max-nextcloud authored and PVince81 committed Aug 25, 2022
commit b67aaf7ab0fb2e2b7c727290e6b1321557126380
45 changes: 44 additions & 1 deletion apps/files_sharing/js/public.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,39 @@ OCA.Sharing.PublicApp = {
}
}

if (OCA.Viewer.mimetypes.includes(mimetype)) {
// dynamically load image previews
var bottomMargin = 350;
var previewWidth = $(window).width();
var previewHeight = $(window).height() - bottomMargin;
previewHeight = Math.max(200, previewHeight);
var params = {
x: Math.ceil(previewWidth * window.devicePixelRatio),
y: Math.ceil(previewHeight * window.devicePixelRatio),
a: 'true',
file: encodeURIComponent(this.initialDir + $('#filename').val()),
scalingup: 0
};

var imgcontainer = $('<img class="publicpreview" alt="">');
if (hideDownload === 'false') {
imgcontainer = $('<a href="' + $('#previewURL').val() + '" target="_blank"></a>').append(imgcontainer);
}
var img = imgcontainer.hasClass('publicpreview')? imgcontainer: imgcontainer.find('.publicpreview');
img.css({
'max-width': previewWidth,
'max-height': previewHeight
});

if (OCA.Viewer && OCA.Viewer.mimetypes.includes(mimetype)
&& (mimetype.startsWith('image/') || mimetype.startsWith('video/'))) {
OCA.Viewer.setRootElement('#imgframe')
OCA.Viewer.open({ path: '/' })
} else if (mimetype.substr(0, mimetype.indexOf('/')) === 'text' && window.btoa) {
if (OC.appswebroots['files_texteditor'] !== undefined ||
OC.appswebroots['text'] !== undefined) {
// the text editor handles the previewing
return;
}
// Undocumented Url to public WebDAV endpoint
var url = parent.location.protocol + '//' + location.host + OC.linkTo('', 'public.php/webdav');
$.ajax({
Expand All @@ -144,6 +173,20 @@ OCA.Sharing.PublicApp = {
}).then(function (data) {
self._showTextPreview(data, previewHeight);
});
} else if ((previewSupported === 'true' && mimetype.substr(0, mimetype.indexOf('/')) !== 'video') ||
mimetype.substr(0, mimetype.indexOf('/')) === 'image' &&
mimetype !== 'image/svg+xml') {
img.attr('src', OC.generateUrl('/apps/files_sharing/publicpreview/' + token + '?' + OC.buildQueryString(params)));
imgcontainer.appendTo('#imgframe');
} else if (mimetype.substr(0, mimetype.indexOf('/')) !== 'video') {
img.attr('src', mimetypeIcon);
img.attr('width', 128);
// "#imgframe" is either empty or it contains an audio preview that
// the icon should appear before, so the container should be
// prepended to the frame.
imgcontainer.prependTo('#imgframe');
} else if (previewSupported === 'true') {
$('#imgframe > video').attr('poster', OC.generateUrl('/apps/files_sharing/publicpreview/' + token + '?' + OC.buildQueryString(params)));
}

if (this.fileList) {
Expand Down