aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2024-09-04 18:42:51 +0200
committerFerdinand Thiessen <opensource@fthiessen.de>2024-09-06 03:38:47 +0200
commit11fdf4e2a7435a337db920d751583c83cdf74c91 (patch)
treec3104306915693e07d530f3d8cd7710e64bbf18a /apps
parent80033bde88a58724948bff8dbf6c0b683ac485eb (diff)
downloadnextcloud-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.js162
-rw-r--r--apps/files_sharing/js/public.js392
-rw-r--r--apps/files_sharing/js/public_note.js14
-rw-r--r--apps/files_sharing/js/templates.js43
-rw-r--r--apps/files_sharing/js/templates/files_drop.handlebars8
-rw-r--r--apps/files_sharing/tests/js/fileDropSpec.js81
-rw-r--r--apps/files_sharing/tests/js/publicAppSpec.js140
-rw-r--r--apps/files_sharing/tests/js/shareSpec.js321
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('(&#133;)');
- 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();
- });
- });
-});