[Pkg-owncloud-commits] [owncloud] 38/215: Show hint if there is no delete permission

David Prévot taffit at moszumanska.debian.org
Tue May 5 01:01:18 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit f4bc852db3376f5e602c1970fe76b8698e26f32e
Author: Morris Jobke <hey at morrisjobke.de>
Date:   Thu Apr 23 14:33:19 2015 +0200

    Show hint if there is no delete permission
    
    * add class .no-permission which shows the default delete icon
    * fixes #15172
    * add unit test for no permission and for delete permission
---
 apps/files/css/files.css                           |  4 ++-
 apps/files/js/fileactions.js                       | 15 ++++++--
 apps/files/tests/js/fileactionsSpec.js             | 42 ++++++++++++++++++++++
 apps/files_external/tests/js/mountsfilelistSpec.js |  2 +-
 core/css/icons.css                                 |  4 ++-
 5 files changed, 62 insertions(+), 5 deletions(-)

diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index 9e55e42..e4bf791 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -581,7 +581,9 @@ a.action>img {
 #fileList tr:hover a.action,
 #fileList a.action.permanent,
 #fileList tr:focus a.action,
-#fileList a.action.permanent
+#fileList a.action.permanent,
+#fileList tr:hover a.action.no-permission:hover,
+#fileList tr:focus a.action.no-permission:focus
 /*#fileList .name:focus .action*/ {
 	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
 	filter: alpha(opacity=50);
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js
index b335f1f..1956fda 100644
--- a/apps/files/js/fileactions.js
+++ b/apps/files/js/fileactions.js
@@ -288,9 +288,15 @@
 			} else if (mountType === 'shared-root') {
 				deleteTitle = t('files', 'Unshare');
 			}
+			var cssClasses = 'action delete icon-delete';
+			if((context.$file.data('permissions') & OC.PERMISSION_DELETE) === 0) {
+				// add css class no-permission to delete icon
+				cssClasses += ' no-permission';
+				deleteTitle = t('files', 'No permission to delete');
+			}
 			var $actionLink = $('<a href="#" original-title="' +
 				escapeHTML(deleteTitle) +
-				'" class="action delete icon-delete">' +
+				'" class="' +cssClasses + '">' +
 				'<span class="hidden-visually">' + escapeHTML(deleteTitle) + '</span>' +
 				'</a>'
 			);
@@ -426,12 +432,17 @@
 				name: 'Delete',
 				displayName: '',
 				mime: 'all',
-				permissions: OC.PERMISSION_DELETE,
+				// permission is READ because we show a hint instead if there is no permission
+				permissions: OC.PERMISSION_READ,
 				icon: function() {
 					return OC.imagePath('core', 'actions/delete');
 				},
 				render: _.bind(this._renderDeleteAction, this),
 				actionHandler: function(fileName, context) {
+					// if there is no permission to delete do nothing
+					if((context.$file.data('permissions') & OC.PERMISSION_DELETE) === 0) {
+						return;
+					}
 					context.fileList.do_delete(fileName, context.dir);
 					$('.tipsy').remove();
 				}
diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js
index 828aec9..53fa870 100644
--- a/apps/files/tests/js/fileactionsSpec.js
+++ b/apps/files/tests/js/fileactionsSpec.js
@@ -157,6 +157,48 @@ describe('OCA.Files.FileActions tests', function() {
 		expect(deleteStub.getCall(0).args[1]).toEqual('/somepath/dir');
 		deleteStub.restore();
 	});
+	it('shows delete hint when no permission to delete', function() {
+		var deleteStub = sinon.stub(fileList, 'do_delete');
+		var fileData = {
+			id: 18,
+			type: 'file',
+			name: 'testName.txt',
+			path: '/somepath/dir',
+			mimetype: 'text/plain',
+			size: '1234',
+			etag: 'a01234c',
+			mtime: '123456',
+			permissions: OC.PERMISSION_READ
+		};
+		var $tr = fileList.add(fileData);
+		FileActions.display($tr.find('td.filename'), true, fileList);
+
+		var $action = $tr.find('.action.delete');
+
+		expect($action.hasClass('no-permission')).toEqual(true);
+		deleteStub.restore();
+	});
+	it('shows delete hint not when permission to delete', function() {
+		var deleteStub = sinon.stub(fileList, 'do_delete');
+		var fileData = {
+			id: 18,
+			type: 'file',
+			name: 'testName.txt',
+			path: '/somepath/dir',
+			mimetype: 'text/plain',
+			size: '1234',
+			etag: 'a01234c',
+			mtime: '123456',
+			permissions: OC.PERMISSION_DELETE
+		};
+		var $tr = fileList.add(fileData);
+		FileActions.display($tr.find('td.filename'), true, fileList);
+
+		var $action = $tr.find('.action.delete');
+
+		expect($action.hasClass('no-permission')).toEqual(false);
+		deleteStub.restore();
+	});
 	it('passes context to action handler', function() {
 		var actionStub = sinon.stub();
 		var fileData = {
diff --git a/apps/files_external/tests/js/mountsfilelistSpec.js b/apps/files_external/tests/js/mountsfilelistSpec.js
index a4e4fec..c7ea819 100644
--- a/apps/files_external/tests/js/mountsfilelistSpec.js
+++ b/apps/files_external/tests/js/mountsfilelistSpec.js
@@ -128,7 +128,7 @@ describe('OCA.External.FileList tests', function() {
 				'?dir=/another%20mount%20points/sftp%20mount'
 			);
 			expect($tr.find('.nametext').text().trim()).toEqual('sftp mount');
-			expect($tr.find('.column-scope').text().trim()).toEqual('System');
+			expect($tr.find('.column-scope > span').text().trim()).toEqual('System');
 			expect($tr.find('.column-backend').text().trim()).toEqual('SFTP');
 
 			$tr = $rows.eq(1);
diff --git a/core/css/icons.css b/core/css/icons.css
index 0f60251..e44f988 100644
--- a/core/css/icons.css
+++ b/core/css/icons.css
@@ -56,7 +56,9 @@
 	background-image: url('../img/actions/confirm.svg');
 }
 
-.icon-delete {
+.icon-delete,
+.icon-delete.no-permission:hover,
+.icon-delete.no-permission:focus {
 	background-image: url('../img/actions/delete.svg');
 }
 .icon-delete:hover,

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list