diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-09-04 18:42:51 +0200 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-09-06 03:38:47 +0200 |
commit | 11fdf4e2a7435a337db920d751583c83cdf74c91 (patch) | |
tree | c3104306915693e07d530f3d8cd7710e64bbf18a /apps | |
parent | 80033bde88a58724948bff8dbf6c0b683ac485eb (diff) | |
download | nextcloud-server-11fdf4e2a7435a337db920d751583c83cdf74c91.tar.gz nextcloud-server-11fdf4e2a7435a337db920d751583c83cdf74c91.zip |
chore(files_sharing): Remove now unused legacy scripts
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/js/files_drop.js | 162 | ||||
-rw-r--r-- | apps/files_sharing/js/public.js | 392 | ||||
-rw-r--r-- | apps/files_sharing/js/public_note.js | 14 | ||||
-rw-r--r-- | apps/files_sharing/js/templates.js | 43 | ||||
-rw-r--r-- | apps/files_sharing/js/templates/files_drop.handlebars | 8 | ||||
-rw-r--r-- | apps/files_sharing/tests/js/fileDropSpec.js | 81 | ||||
-rw-r--r-- | apps/files_sharing/tests/js/publicAppSpec.js | 140 | ||||
-rw-r--r-- | apps/files_sharing/tests/js/shareSpec.js | 321 |
8 files changed, 0 insertions, 1161 deletions
diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js deleted file mode 100644 index 450af078af2..00000000000 --- a/apps/files_sharing/js/files_drop.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -(function ($) { - - var Drop = { - /** @type {Function} **/ - _template: undefined, - - /** @type {boolean} */ - _uploading: false, - - addFileToUpload: function(e, data) { - var errors = []; - var output = this.template(); - - var filesClient = new OC.Files.Client({ - host: OC.getHost(), - port: OC.getPort(), - // note: password not be required, the endpoint - // will recognize previous validation from the session - root: OC.getRootPath() + '/public.php/dav/files/' + $('#sharingToken').val() + '/', - useHTTPS: OC.getProtocol() === 'https', - }); - - // We only process one file at a time 🤷♀️ - var name = data.files[0].name; - // removing unwanted characters - name = name.replace(/["'#%`]/gm, ''); - - try { - // FIXME: not so elegant... need to refactor that method to return a value - Files.isFileNameValid(name); - } - catch (errorMessage) { - OC.Notification.show(errorMessage, {type: 'error'}); - return false; - } - var base = OC.getProtocol() + '://' + OC.getHost(); - data.url = base + OC.getRootPath() + '/public.php/dav/files/' + $('#sharingToken').val() + '/' + encodeURI(name); - - data.multipart = false; - - if (!data.headers) { - data.headers = {}; - } - - if (localStorage.getItem('nick') !== null) { - data.headers['X-NC-Nickname'] = localStorage.getItem('nick') - } - - $('#drop-upload-done-indicator').addClass('hidden'); - $('#drop-upload-progress-indicator').removeClass('hidden'); - - $('#drop-uploaded-files').append(output({isUploading: true, name: data.files[0].name})); - data.submit(); - - return true; - }, - - updateFileItem: function (fileName, fileItem) { - $('#drop-uploaded-files li[data-name="' + fileName + '"]').replaceWith(fileItem); - }, - - initialize: function () { - $(document).bind('drop dragover', function (e) { - // Prevent the default browser drop action: - e.preventDefault(); - }); - var output = this.template(); - var self = this; - $('#public-upload').fileupload({ - type: 'PUT', - dropZone: $('#public-upload'), - sequentialUploads: true, - start: function(e) { - self._uploading = true; - }, - stop: function(e) { - self._uploading = false; - }, - add: function(e, data) { - Drop.addFileToUpload(e, data); - $('#drop-upload-status').text(t('files_sharing', 'Waiting…')); - //we return true to keep trying to upload next file even - //if addFileToUpload did not like the previous one - return true; - }, - done: function(e, data) { - // Created - var mimeTypeUrl = OC.MimeType.getIconUrl(data.files[0].type); - var fileItem = output({isUploading: false, iconSrc: mimeTypeUrl, name: data.files[0].name}); - Drop.updateFileItem(data.files[0].name, fileItem); - }, - fail: function(e, data) { - OC.Notification.showTemporary(OC.L10N.translate( - 'files_sharing', - 'Could not upload "{filename}"', - {filename: data.files[0].name} - )); - $('#drop-upload-status').text(t('files_sharing', 'error')); - var errorIconSrc = OC.imagePath('core', 'actions/error.svg'); - var fileItem = output({isUploading: false, iconSrc: errorIconSrc, name: data.files[0].name}); - Drop.updateFileItem(data.files[0].name, fileItem); - }, - progressall: function (e, data) { - var progress = parseInt(data.loaded / data.total * 100, 10); - if(progress === 100) { - $('#drop-upload-done-indicator').removeClass('hidden'); - $('#drop-upload-progress-indicator').addClass('hidden'); - } else { - $('#drop-upload-done-indicator').addClass('hidden'); - $('#drop-upload-progress-indicator').removeClass('hidden'); - } - }, - progress: function (e, data) { - var progress = parseInt(data.loaded / data.total * 100, 10); - if(progress === 100) { - $('#drop-upload-progress-bar').val(100); - $('#drop-upload-status').text(t('files_sharing', 'finished')); - } else { - $('#drop-upload-progress-bar').val(progress); - $('#drop-upload-status').text(progress + '%'); - } - }, - }); - $('#public-upload .button.icon-upload').click(function(e) { - e.preventDefault(); - $('#public-upload .emptycontent input').focus().trigger('click'); - }); - window.onbeforeunload = function() { - return self.confirmBeforeUnload(); - } - }, - - /** - * @returns {Function} from Handlebars - * @private - */ - template: function () { - return OCA.Sharing.Templates['files_drop']; - }, - - confirmBeforeUnload: function() { - if (this._uploading) { - return t('files', 'This will stop your current uploads.') - } - }, - }; - - OCA.FilesSharingDrop = Drop; - - window.addEventListener('DOMContentLoaded', function() { - if($('#upload-only-interface').val() === "1") { - $('.avatardiv').avatar($('#sharingUserId').val(), 128, true); - } - - OCA.FilesSharingDrop.initialize(); - }); -})(jQuery); diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js deleted file mode 100644 index 7b255c7de1e..00000000000 --- a/apps/files_sharing/js/public.js +++ /dev/null @@ -1,392 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2012-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -/* global FileActions, Files, FileList */ -/* global dragOptions, folderDropOptions */ -if (!OCA.Sharing) { - OCA.Sharing = {}; -} -if (!OCA.Files) { - OCA.Files = {}; -} -/** - * @namespace - */ -OCA.Sharing.PublicApp = { - _initialized: false, - - /** - * Initializes the public share app. - * - * @param $el container - */ - initialize: function ($el) { - var self = this; - var fileActions; - if (this._initialized) { - return; - } - fileActions = new OCA.Files.FileActions(); - // default actions - fileActions.registerDefaultActions(); - // regular actions - fileActions.merge(OCA.Files.fileActions); - - // in case apps would decide to register file actions later, - // replace the global object with this one - OCA.Files.fileActions = fileActions; - - this._initialized = true; - var urlParams = OC.Util.History.parseUrlQuery(); - this.initialDir = urlParams.path || '/'; - - var token = $('#sharingToken').val(); - var hideDownload = $('#hideDownload').val(); - - // Prevent all right-click options if hideDownload is enabled - if (hideDownload === 'true') { - window.oncontextmenu = function(event) { - event.preventDefault(); - event.stopPropagation(); - return false; - }; - } - - // file list mode ? - if ($el.find('.files-filestable').length) { - // Toggle for grid view - this.$showGridView = $('input#showgridview'); - this.$showGridView.on('change', _.bind(this._onGridviewChange, this)); - - var filesClient = new OC.Files.Client({ - host: OC.getHost(), - port: OC.getPort(), - // note: password not be required, the endpoint - // will recognize previous validation from the session - root: OC.getRootPath() + '/public.php/dav/files/' + token + '/', - useHTTPS: OC.getProtocol() === 'https' - }); - - this.fileList = new OCA.Files.FileList( - $el, - { - id: 'files.public', - dragOptions: dragOptions, - folderDropOptions: folderDropOptions, - fileActions: fileActions, - detailsViewEnabled: false, - filesClient: filesClient, - enableUpload: true, - multiSelectMenu: [ - { - name: 'copyMove', - displayName: t('files', 'Move or copy'), - iconClass: 'icon-external', - }, - { - name: 'download', - displayName: t('files', 'Download'), - iconClass: 'icon-download', - }, - { - name: 'delete', - displayName: t('files', 'Delete'), - iconClass: 'icon-delete', - } - ] - } - ); - if (hideDownload === 'true') { - this.fileList._allowSelection = false; - } - this.files = OCA.Files.Files; - this.files.initialize(); - // TODO: move to PublicFileList.initialize() once - // the code was split into a separate class - OC.Plugins.attach('OCA.Sharing.PublicFileList', this.fileList); - } - - var mimetype = $('#mimetype').val(); - var mimetypeIcon = $('#mimetypeIcon').val(); - mimetypeIcon = mimetypeIcon.substring(0, mimetypeIcon.length - 3); - mimetypeIcon = mimetypeIcon + 'svg'; - - var previewSupported = $('#previewSupported').val(); - - if (typeof FileActions !== 'undefined') { - // Show file preview if previewer is available, images are already handled by the template - if (mimetype.substr(0, mimetype.indexOf('/')) !== 'image' && $('.publicpreview').length === 0) { - // Trigger default action if not download TODO - var spec = FileActions.getDefaultFileAction(mimetype, 'file', OC.PERMISSION_READ); - if (spec && spec.action) { - spec.action($('#filename').val()); - } - } - } - - // 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/') || mimetype.startsWith('audio'))) { - 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/dav/files/'+ token); - $.ajax({ - url: url, - headers: { - Range: 'bytes=0-10000' - } - }).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) { - // TODO: move this to a separate PublicFileList class that extends OCA.Files.FileList (+ unit tests) - this.fileList.getDownloadUrl = function (filename, dir, isDir) { - var path = dir || this.getCurrentDirectory(); - if (_.isArray(filename)) { - filename = JSON.stringify(filename); - } - var params = { - path: path - }; - if (filename) { - params.files = filename; - } - return OC.generateUrl('/s/' + token + '/download') + '?' + OC.buildQueryString(params); - }; - - this.fileList._createRow = function(fileData) { - var $tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments); - if (hideDownload === 'true') { - this.fileActions.currentFile = $tr.find('td'); - - // Remove the link. This means that files without a default action fail hard - $tr.find('a.name').attr('href', '#'); - - delete this.fileActions.actions.all.Download; - } - return $tr; - }; - - this.fileList.isSelectedDownloadable = function () { - return hideDownload !== 'true'; - }; - - this.fileList.getUploadUrl = function(fileName, dir) { - if (_.isUndefined(dir)) { - dir = this.getCurrentDirectory(); - } - - var pathSections = dir.split('/'); - if (!_.isUndefined(fileName)) { - pathSections.push(fileName); - } - var encodedPath = ''; - _.each(pathSections, function(section) { - if (section !== '') { - encodedPath += '/' + encodeURIComponent(section); - } - }); - var base = ''; - - if (!this._uploader.isXHRUpload()) { - // also add auth in URL due to POST workaround - base = OC.getProtocol() + '://' + token + '@' + OC.getHost() + (OC.getPort() ? ':' + OC.getPort() : ''); - } - - // encodedPath starts with a leading slash - return base + OC.getRootPath() + '/public.php/dav/files/' + token + encodedPath; - }; - - this.fileList.getAjaxUrl = function (action, params) { - params = params || {}; - params.t = token; - return OC.filePath('files_sharing', 'ajax', action + '.php') + '?' + OC.buildQueryString(params); - }; - - this.fileList.linkTo = function (dir) { - return OC.generateUrl('/s/' + token + '') + '?' + OC.buildQueryString({path: dir}); - }; - - this.fileList.generatePreviewUrl = function (urlSpec) { - urlSpec = urlSpec || {}; - if (!urlSpec.x) { - urlSpec.x = this.$table.data('preview-x') || 250; - } - if (!urlSpec.y) { - urlSpec.y = this.$table.data('preview-y') || 250; - } - urlSpec.x *= window.devicePixelRatio; - urlSpec.y *= window.devicePixelRatio; - urlSpec.x = Math.ceil(urlSpec.x); - urlSpec.y = Math.ceil(urlSpec.y); - var token = $('#dirToken').val(); - return OC.generateUrl('/apps/files_sharing/publicpreview/' + token + '?' + OC.buildQueryString(urlSpec)); - }; - - this.fileList.updateEmptyContent = function() { - this.$el.find('.emptycontent .uploadmessage').text( - t('files_sharing', 'You can upload into this folder') - ); - OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); - }; - - this.fileList._uploader.on('fileuploadadd', function(e, data) { - if (!data.headers) { - data.headers = {}; - } - - data.headers.Authorization = 'Basic ' + btoa(token + ':'); - }); - - // do not allow sharing from the public page - delete this.fileList.fileActions.actions.all.Share; - - this.fileList.changeDirectory(this.initialDir || '/', false, true); - - // URL history handling - this.fileList.$el.on('changeDirectory', _.bind(this._onDirectoryChanged, this)); - OC.Util.History.addOnPopStateHandler(_.bind(this._onUrlChanged, this)); - - $('#download').click(function (e) { - e.preventDefault(); - OC.redirect(FileList.getDownloadUrl()); - }); - - if (hideDownload === 'true') { - this.fileList.$el.find('.summary').find('td:first-child').remove(); - } - } - - self._bindShowTermsAction(); - - // legacy - window.FileList = this.fileList; - }, - - /** - * Binds the click action for the "terms of service" action. - * Shows an OC info dialog on click. - * - * @private - */ - _bindShowTermsAction: function() { - $('#show-terms-dialog').on('click', function() { - OC.dialogs.info($('#disclaimerText').val(), t('files_sharing', 'Terms of service')); - }); - }, - - _showTextPreview: function (data, previewHeight) { - var textDiv = $('<div></div>').addClass('text-preview'); - textDiv.text(data); - textDiv.appendTo('#imgframe'); - var divHeight = textDiv.height(); - if (data.length > 999) { - var ellipsis = $('<div></div>').addClass('ellipsis'); - ellipsis.html('(…)'); - ellipsis.appendTo('#imgframe'); - } - if (divHeight > previewHeight) { - textDiv.height(previewHeight); - } - }, - - /** - * Toggle showing gridview by default or not - * - * @returns {undefined} - */ - _onGridviewChange: function() { - const isGridView = this.$showGridView.is(':checked'); - this.$showGridView.next('#view-toggle') - .removeClass('icon-toggle-filelist icon-toggle-pictures') - .addClass(isGridView ? 'icon-toggle-filelist' : 'icon-toggle-pictures') - this.$showGridView.next('#view-toggle').attr( - 'title', - isGridView ? t('files', 'Show list view') : t('files', 'Show grid view'), - ) - - if (this.fileList) { - this.fileList.setGridView(isGridView); - } - }, - - _onDirectoryChanged: function (e) { - OC.Util.History.pushState({ - // arghhhh, why is this not called "dir" !? - path: e.dir - }); - }, - - _onUrlChanged: function (params) { - this.fileList.changeDirectory(params.path || params.dir, false, true); - }, -}; - -window.addEventListener('DOMContentLoaded', function () { - // FIXME: replace with OC.Plugins.register() - if (window.TESTING) { - return; - } - - var App = OCA.Sharing.PublicApp; - // defer app init, to give a chance to plugins to register file actions - _.defer(function () { - App.initialize($('#preview')); - }); - - if (window.Files) { - // HACK: for oc-dialogs previews that depends on Files: - Files.generatePreviewUrl = function (urlSpec) { - return App.fileList.generatePreviewUrl(urlSpec); - }; - } - -}); diff --git a/apps/files_sharing/js/public_note.js b/apps/files_sharing/js/public_note.js deleted file mode 100644 index 33cadae115d..00000000000 --- a/apps/files_sharing/js/public_note.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - - window.addEventListener('DOMContentLoaded', function() { - var noteElmt = document.getElementById('notemenu') - if (noteElmt) { - var noteHtml = noteElmt.outerHTML - $(noteHtml).insertBefore('#header-primary-action'); - $('#notemenu').removeClass('hidden'); - OC.registerMenu($('#notemenu .menutoggle'), $('#notemenu .menu')) - } - })
\ No newline at end of file diff --git a/apps/files_sharing/js/templates.js b/apps/files_sharing/js/templates.js deleted file mode 100644 index 07fd6ad6c42..00000000000 --- a/apps/files_sharing/js/templates.js +++ /dev/null @@ -1,43 +0,0 @@ -(function() { - var template = Handlebars.template, templates = OCA.Sharing.Templates = OCA.Sharing.Templates || {}; -templates['files_drop'] = template({"1":function(container,depth0,helpers,partials,data) { - var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " <div id=\"drop-upload-name\">" - + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"name","hash":{},"data":data,"loc":{"start":{"line":3,"column":29},"end":{"line":3,"column":37}}}) : helper))) - + "</div><div id=\"drop-upload-status\"></div>\n <progress id=\"drop-upload-progress-bar\" value=\"0\" max=\"100\"></progress>\n"; -},"3":function(container,depth0,helpers,partials,data) { - var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return " <img src=\"" - + alias4(((helper = (helper = lookupProperty(helpers,"iconSrc") || (depth0 != null ? lookupProperty(depth0,"iconSrc") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"iconSrc","hash":{},"data":data,"loc":{"start":{"line":6,"column":12},"end":{"line":6,"column":23}}}) : helper))) - + "\"/> " - + alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":6,"column":27},"end":{"line":6,"column":35}}}) : helper))) - + "\n"; -},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { - if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { - return parent[propertyName]; - } - return undefined - }; - - return "<li title=\"" - + alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":19}}}) : helper))) - + "\" data-name=\"" - + alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":1,"column":32},"end":{"line":1,"column":40}}}) : helper))) - + "\">\n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isUploading") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":2,"column":1},"end":{"line":7,"column":8}}})) != null ? stack1 : "") - + "</li>\n"; -},"useData":true}); -})();
\ No newline at end of file diff --git a/apps/files_sharing/js/templates/files_drop.handlebars b/apps/files_sharing/js/templates/files_drop.handlebars deleted file mode 100644 index 4128c920cb9..00000000000 --- a/apps/files_sharing/js/templates/files_drop.handlebars +++ /dev/null @@ -1,8 +0,0 @@ -<li title="{{name}}" data-name="{{name}}"> - {{#if isUploading}} - <div id="drop-upload-name">{{name}}</div><div id="drop-upload-status"></div> - <progress id="drop-upload-progress-bar" value="0" max="100"></progress> - {{else}} - <img src="{{iconSrc}}"/> {{name}} - {{/if}} -</li> diff --git a/apps/files_sharing/tests/js/fileDropSpec.js b/apps/files_sharing/tests/js/fileDropSpec.js deleted file mode 100644 index 72aef88b747..00000000000 --- a/apps/files_sharing/tests/js/fileDropSpec.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe("files Drop tests", function() { - //some testing data - var sharingToken = "fVCiSMhScgWfiuv"; - var testFiles = [ - { name: 'test.txt', expectedValidationResult: true }, - { name: 'testनेपाल.txt', expectedValidationResult: true }, - { name: 'test.part', expectedValidationResult: false }, - { name: 'test.filepart', expectedValidationResult: false }, - { name: '.', expectedValidationResult: false }, - { name: '..', expectedValidationResult: false }, - ]; - - //this pre/post positions should not change the result of the file name validation - var prePostPositions = [""," "," "," "]; - - //use the testFiles and the pre/post positions to generate more testing data - var replicatedTestFiles = []; - prePostPositions.map(function (prePostPosition) { - testFiles.map(function (testFile) { - replicatedTestFiles.push( - { - name: testFile.name + prePostPosition, - expectedValidationResult: testFile.expectedValidationResult - } - ); - replicatedTestFiles.push( - { - name: prePostPosition + testFile.name, - expectedValidationResult: testFile.expectedValidationResult - } - ); - replicatedTestFiles.push( - { - name: prePostPosition + testFile.name + prePostPosition, - expectedValidationResult: testFile.expectedValidationResult - } - ); - }); - }); - - beforeEach (function () { - //fake input for the sharing token - $('#testArea').append( - '<input name="sharingToken" value="" id="sharingToken" type="hidden">' - ); - }); - - - replicatedTestFiles.map(function (testFile) { - it("validates the filenames correctly", function() { - data = { - 'submit': function() {}, - 'files': [testFile] - } - expect(OCA.FilesSharingDrop.addFileToUpload('',data)). - toBe( - testFile.expectedValidationResult, - 'wrongly validated file named "'+testFile.name+'"' - ); - }); - - if (testFile.expectedValidationResult === true) { - it("should set correct PUT URL, Auth header and submit", function () { - data = { - 'submit': sinon.stub(), - 'files': [testFile] - } - $('#sharingToken').val(sharingToken); - - OCA.FilesSharingDrop.addFileToUpload('',data); - expect(data.submit.calledOnce).toEqual(true); - expect(data.url).toContain("/public.php/dav/files/" + sharingToken + '/' + encodeURI(testFile.name)); - }); - } - }); -}); diff --git a/apps/files_sharing/tests/js/publicAppSpec.js b/apps/files_sharing/tests/js/publicAppSpec.js deleted file mode 100644 index 12fbcdc282a..00000000000 --- a/apps/files_sharing/tests/js/publicAppSpec.js +++ /dev/null @@ -1,140 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Sharing.PublicApp tests', function() { - var App = OCA.Sharing.PublicApp; - var hostStub, protocolStub; - var originalWebroot; - var $preview; - - beforeEach(function() { - originalWebroot = window._oc_webroot; - window._oc_webroot = '/owncloud'; - protocolStub = sinon.stub(OC, 'getProtocol').returns('https'); - hostStub = sinon.stub(OC, 'getHost').returns('example.com:9876'); - - $preview = $('<div id="preview"></div>'); - $('#testArea').append($preview); - $preview.append( - '<div id="mimetype"></div>' + - '<div id="mimetypeIcon"></div>' + - '<input type="hidden" id="sharingToken" value="sh4tok"></input>' - ); - }); - - afterEach(function() { - window._oc_webroot = originalWebroot; - protocolStub.restore(); - hostStub.restore(); - }); - - describe('File list', function() { - var parseUrlQueryStub - // TODO: this should be moved to a separate file once the PublicFileList is extracted from public.js - beforeEach(function() { - $preview.append( - '<div id="app-content-files">' + - // init horrible parameters - '<input type="hidden" id="permissions" value="31"/>' + - // dummy controls - '<div class="files-controls">' + - ' <div class="actions creatable"></div>' + - ' <div class="notCreatable"></div>' + - '</div>' + - // uploader - '<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' + - // dummy table - // TODO: at some point this will be rendered by the fileList class itself! - '<table class="files-filestable list-container view-grid">' + - '<thead><tr>' + - '<th class="hidden column-name">' + - '<input type="checkbox" id="select_all_files" class="select-all">' + - '<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' + - '<span class="selectedActions hidden">' + - '<a href class="download">Download</a>' + - '</span>' + - '</th>' + - '<th class="hidden column-size"><a class="columntitle" data-sort="size"><span class="sort-indicator"></span></a></th>' + - '<th class="hidden column-mtime"><a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a></th>' + - '</tr></thead>' + - '<tbody class="files-fileList"></tbody>' + - '<tfoot></tfoot>' + - '</table>' + - // TODO: move to handlebars template - '<div class="emptyfilelist emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' + - '<div class="nofilterresults hidden"></div>' + - '</div>' - ); - - parseUrlQueryStub = sinon.stub(OC.Util.History, 'parseUrlQuery'); - parseUrlQueryStub.returns({path: '/subdir'}); - App.initialize($('#preview')); - }); - afterEach(function() { - App._initialized = false; - parseUrlQueryStub.restore(); - }); - - it('Uses public webdav endpoint', function() { - App._initialized = false; - fakeServer.restore(); - window.fakeServer = sinon.fakeServer.create(); - - // uploader function messes up with fakeServer - var uploaderDetectStub = sinon.stub(OC.Uploader.prototype, '_supportAjaxUploadWithProgress'); - App.initialize($('#preview')); - expect(fakeServer.requests.length).toEqual(1); - expect(fakeServer.requests[0].method).toEqual('PROPFIND'); - expect(fakeServer.requests[0].url).toEqual('https://example.com:9876/owncloud/public.php/dav/files/sh4tok/subdir'); - uploaderDetectStub.restore(); - }); - - describe('Download Url', function() { - var fileList; - - beforeEach(function() { - fileList = App.fileList; - }); - - it('returns correct download URL for single files', function() { - expect(fileList.getDownloadUrl('some file.txt')) - .toEqual(OC.getRootPath() + '/index.php/s/sh4tok/download?path=%2Fsubdir&files=some%20file.txt'); - expect(fileList.getDownloadUrl('some file.txt', '/anotherpath/abc')) - .toEqual(OC.getRootPath() + '/index.php/s/sh4tok/download?path=%2Fanotherpath%2Fabc&files=some%20file.txt'); - fileList.changeDirectory('/'); - expect(fileList.getDownloadUrl('some file.txt')) - .toEqual(OC.getRootPath() + '/index.php/s/sh4tok/download?path=%2F&files=some%20file.txt'); - }); - it('returns correct download URL for multiple files', function() { - expect(fileList.getDownloadUrl(['a b c.txt', 'd e f.txt'])) - .toEqual(OC.getRootPath() + '/index.php/s/sh4tok/download?path=%2Fsubdir&files=%5B%22a%20b%20c.txt%22%2C%22d%20e%20f.txt%22%5D'); - }); - it('returns the correct ajax URL', function() { - expect(fileList.getAjaxUrl('test', {a:1, b:'x y'})) - .toEqual(OC.getRootPath() + '/index.php/apps/files_sharing/ajax/test.php?a=1&b=x%20y&t=sh4tok'); - }); - it('returns correct download URL for downloading everything', function() { - expect(fileList.getDownloadUrl()) - .toEqual(OC.getRootPath() + '/index.php/s/sh4tok/download?path=%2Fsubdir'); - }); - }); - describe('Upload Url', function() { - var fileList; - - beforeEach(function() { - fileList = App.fileList; - }); - it('returns correct upload URL', function() { - expect(fileList.getUploadUrl('some file.txt')) - .toEqual('/owncloud/public.php/dav/files/sh4tok/subdir/some%20file.txt'); - }); - it('returns correct upload URL with specified dir', function() { - expect(fileList.getUploadUrl('some file.txt', 'sub')) - .toEqual('/owncloud/public.php/dav/files/sh4tok/sub/some%20file.txt'); - }); - }); - }); -}); diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js deleted file mode 100644 index ce8a9826206..00000000000 --- a/apps/files_sharing/tests/js/shareSpec.js +++ /dev/null @@ -1,321 +0,0 @@ -/** - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -describe('OCA.Sharing.Util tests', function() { - var fileList; - var testFiles; - - function getImageUrl($el) { - // might be slightly different cross-browser - var url = $el.css('background-image'); - var r = url.match(/url\(['"]?([^'")]*)['"]?\)/); - if (!r) { - return url; - } - return r[1]; - } - - beforeEach(function() { - var $content = $('<div id="app-content"></div>'); - $('#testArea').append($content); - // dummy file list - var $div = $( - '<div id="listContainer">' + - '<table class="files-filestable list-container view-grid">' + - '<thead></thead>' + - '<tbody class="files-fileList"></tbody>' + - '</table>' + - '</div>'); - $('#app-content').append($div); - - var fileActions = new OCA.Files.FileActions(); - fileList = new OCA.Files.FileList( - $div, { - fileActions : fileActions - } - ); - OCA.Sharing.Util.attach(fileList); - - testFiles = [{ - id: 1, - type: 'file', - name: 'One.txt', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - etag: 'abc', - shareOwner: 'User One', - isShareMountPoint: false, - shareTypes: [OC.Share.SHARE_TYPE_USER] - }]; - }); - afterEach(function() { - delete OCA.Sharing.sharesLoaded; - delete OC.Share.droppedDown; - fileList.destroy(); - fileList = null; - }); - - describe('Sharing data in table row', function() { - // TODO: test data-permissions, data-share-owner, etc - }); - describe('Share action icon', function() { - it('do not shows share text when not shared', function() { - var $action, $tr; - OC.Share.statuses = {}; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One', - path: '/subdir', - mimetype: 'httpd/unix-directory', - size: 12, - permissions: OC.PERMISSION_ALL, - etag: 'abc', - shareTypes: [] - }]); - $tr = fileList.$el.find('tbody tr:first'); - $action = $tr.find('.action-share'); - expect($action.find('.icon').hasClass('icon-shared')).toEqual(true); - expect($action.find('.icon').hasClass('icon-public')).toEqual(false); - expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder.svg'); - }); - it('shows simple share text with share icon', function() { - var $action, $tr; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - etag: 'abc', - shareTypes: [OC.Share.SHARE_TYPE_USER] - }]); - $tr = fileList.$el.find('tbody tr:first'); - $action = $tr.find('.action-share'); - expect($action.find('>span').text().trim()).toEqual('Shared'); - expect($action.find('.icon').hasClass('icon-shared')).toEqual(true); - expect($action.find('.icon').hasClass('icon-public')).toEqual(false); - expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-shared.svg'); - }); - it('shows simple share text with share icon when shared to a room', function() { - var $action, $tr; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - etag: 'abc', - shareTypes: [OC.Share.SHARE_TYPE_ROOM] - }]); - $tr = fileList.$el.find('tbody tr:first'); - $action = $tr.find('.action-share'); - expect($action.find('>span').text().trim()).toEqual('Shared'); - expect($action.find('.icon').hasClass('icon-shared')).toEqual(true); - expect($action.find('.icon').hasClass('icon-public')).toEqual(false); - expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-shared.svg'); - }); - it('shows simple share text with public icon when shared with link', function() { - var $action, $tr; - OC.Share.statuses = {1: {link: true, path: '/subdir'}}; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - etag: 'abc', - shareTypes: [OC.Share.SHARE_TYPE_LINK] - }]); - $tr = fileList.$el.find('tbody tr:first'); - $action = $tr.find('.action-share'); - expect($action.find('>span').text().trim()).toEqual('Shared'); - expect($action.find('.icon').hasClass('icon-shared')).toEqual(false); - expect($action.find('.icon').hasClass('icon-public')).toEqual(true); - expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-public.svg'); - }); - it('shows owner name when owner is available but no icons', function() { - var $action, $tr; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One.txt', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - shareOwner: 'User One', - shareOwnerId: 'User One', - etag: 'abc', - shareTypes: [] - }]); - $tr = fileList.$el.find('tbody tr:first'); - $action = $tr.find('.action-share'); - expect($action.find('>span').text().trim()).toEqual('Shared by User One'); - expect($action.find('.icon').hasClass('icon-shared')).toEqual(false); - expect($action.find('.icon').hasClass('icon-public')).toEqual(false); - expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-shared.svg'); - }); - it('shows recipients when recipients are available', function() { - var $action, $tr; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One.txt', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_ALL, - recipientsDisplayName: 'User One, User Two', - recipientData: { - 0: { - shareWith: 'User One', - shareWithDisplayName: 'User One' - }, - 1: { - shareWith: 'User Two', - shareWithDisplayName: 'User Two' - } - }, - etag: 'abc', - shareTypes: [OC.Share.SHARE_TYPE_USER] - }]); - $tr = fileList.$el.find('tbody tr:first'); - $action = $tr.find('.action-share'); - expect($action.text().trim()).toEqual('Shared with User One Shared with User Two'); - expect($action.find('.icon').hasClass('icon-shared')).toEqual(true); - expect($action.find('.icon').hasClass('icon-public')).toEqual(false); - expect(OC.basename(getImageUrl($tr.find('.filename .thumbnail')))).toEqual('folder-shared.svg'); - }); - it('shows share action when shared with user who has no share permission', function() { - var $action, $tr; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_CREATE, - etag: 'abc', - shareOwner: 'User One' - }]); - $tr = fileList.$el.find('tbody tr:first'); - expect($tr.find('.action-share').length).toEqual(1); - }); - it('do not show share action when share exists but neither permission nor owner is available', function() { - var $action, $tr; - fileList.setFiles([{ - id: 1, - type: 'dir', - name: 'One', - path: '/subdir', - mimetype: 'text/plain', - size: 12, - permissions: OC.PERMISSION_CREATE, - etag: 'abc' - }]); - $tr = fileList.$el.find('tbody tr:first'); - expect($tr.find('.action-share').length).toEqual(0); - }); - }); - describe('Excluded lists', function() { - function createListThenAttach(listId) { - var fileActions = new OCA.Files.FileActions(); - fileList.destroy(); - fileList = new OCA.Files.FileList( - $('#listContainer'), { - id: listId, - fileActions: fileActions - } - ); - OCA.Sharing.Util.attach(fileList); - fileList.setFiles(testFiles); - return fileList; - } - - it('does not attach to trashbin or public file lists', function() { - createListThenAttach('trashbin'); - expect($('.action-share').length).toEqual(0); - expect($('[data-share-recipient]').length).toEqual(0); - createListThenAttach('files.public'); - expect($('.action-share').length).toEqual(0); - expect($('[data-share-recipient]').length).toEqual(0); - }); - }); - - describe('ShareTabView interaction', function() { - var shareTabSpy; - var fileInfoModel; - var configModel; - var shareModel; - - beforeEach(function() { - shareTabSpy = sinon.spy(OCA.Sharing, 'ShareTabView'); - - var attributes = { - itemType: 'file', - itemSource: 123, - possiblePermissions: 31, - permissions: 31 - }; - fileInfoModel = new OCA.Files.FileInfoModel(testFiles[0]); - configModel = new OC.Share.ShareConfigModel({ - enforcePasswordForPublicLink: false, - isResharingAllowed: true, - isDefaultExpireDateEnabled: false, - isDefaultExpireDateEnforced: false, - defaultExpireDate: 7 - }); - shareModel = new OC.Share.ShareItemModel(attributes, { - configModel: configModel, - fileInfoModel: fileInfoModel - }); - - /* jshint camelcase: false */ - shareModel.set({ - reshare: {}, - shares: [{ - id: 100, - item_source: 1, - permissions: 31, - share_type: OC.Share.SHARE_TYPE_USER, - share_with: 'user1', - share_with_displayname: 'User One' - }, { - id: 102, - item_source: 1, - permissions: 31, - share_type: OC.Share.SHARE_TYPE_REMOTE, - share_with: 'foo@bar.com/baz', - share_with_displayname: 'foo@bar.com/baz' - - }] - }, {parse: true}); - - fileList.destroy(); - fileList = new OCA.Files.FileList( - $('#listContainer'), { - id: 'files', - fileActions: new OCA.Files.FileActions() - } - ); - OCA.Sharing.Util.attach(fileList); - fileList.setFiles(testFiles); - }); - afterEach(function() { - shareTabSpy.restore(); - }); - }); -}); |