summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/js/share.js
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-06-02 17:23:52 +0200
committerVincent Petry <pvince81@owncloud.com>2014-06-02 18:08:56 +0200
commit0944565f6033766abfe0ab8987d7116062748c21 (patch)
treee5b12a01cf6acb8f05e5ef4c35e54af328224a38 /apps/files_sharing/js/share.js
parent679d10ca00577f8175fe03ff5c25f4aa41547177 (diff)
downloadnextcloud-server-0944565f6033766abfe0ab8987d7116062748c21.tar.gz
nextcloud-server-0944565f6033766abfe0ab8987d7116062748c21.zip
More unit tests and fixes for share
Diffstat (limited to 'apps/files_sharing/js/share.js')
-rw-r--r--apps/files_sharing/js/share.js201
1 files changed, 98 insertions, 103 deletions
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index 9f47e785821..66def1fe73f 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -14,119 +14,112 @@
}
OCA.Sharing.Util = {
initialize: function(fileActions) {
- if (!_.isUndefined(OC.Share) && !_.isUndefined(OCA.Files)) {
- // TODO: make a separate class for this or a hook or jQuery event ?
- if (OCA.Files.FileList) {
- var oldCreateRow = OCA.Files.FileList.prototype._createRow;
- OCA.Files.FileList.prototype._createRow = function(fileData) {
- var tr = oldCreateRow.apply(this, arguments);
- if (fileData.shareOwner) {
- tr.attr('data-share-owner', fileData.shareOwner);
- // user should always be able to rename a mount point
- if (fileData.isShareMountPoint) {
- tr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE);
- tr.attr('data-reshare-permissions', fileData.permissions);
- }
+ // TODO: make a separate class for this or a hook or jQuery event ?
+ if (OCA.Files.FileList) {
+ var oldCreateRow = OCA.Files.FileList.prototype._createRow;
+ OCA.Files.FileList.prototype._createRow = function(fileData) {
+ var tr = oldCreateRow.apply(this, arguments);
+ if (fileData.shareOwner) {
+ tr.attr('data-share-owner', fileData.shareOwner);
+ // user should always be able to rename a mount point
+ if (fileData.isShareMountPoint) {
+ tr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE);
+ tr.attr('data-reshare-permissions', fileData.permissions);
}
- if (fileData.recipientsDisplayName) {
- tr.attr('data-share-recipients', fileData.recipientsDisplayName);
- }
- return tr;
- };
- }
+ }
+ if (fileData.recipientsDisplayName) {
+ tr.attr('data-share-recipients', fileData.recipientsDisplayName);
+ }
+ return tr;
+ };
+ }
- // use delegate to catch the case with multiple file lists
- $('#content').delegate('#fileList', 'fileActionsReady',function(ev){
- // if no share action exists because the admin disabled sharing for this user
- // we create a share notification action to inform the user about files
- // shared with him otherwise we just update the existing share action.
- var fileList = ev.fileList;
- var $fileList = $(this);
- $fileList.find('[data-share-owner]').each(function() {
- var $tr = $(this);
- var permissions = $tr.data('permissions');
- if(permissions & OC.PERMISSION_SHARE) {
- OC.Share.markFileAsShared($tr, true);
- } else {
- // TODO: make this work like/with OC.Share.markFileAsShared()
- var shareNotification = '<a class="action action-share-notification permanent"' +
- ' data-action="Share-Notification" href="#" original-title="">' +
- ' <img class="svg" src="' + OC.imagePath('core', 'actions/share') + '"></img>';
- $tr.find('.fileactions').append(function() {
- var owner = $(this).closest('tr').attr('data-share-owner');
- var shareBy = t('files_sharing', 'Shared by {owner}', {owner: owner});
- var $result = $(shareNotification + '<span> ' + shareBy + '</span></span>');
- $result.on('click', function() {
- return false;
- });
- return $result;
+ // use delegate to catch the case with multiple file lists
+ $('#content').delegate('#fileList', 'fileActionsReady',function(ev){
+ // if no share action exists because the admin disabled sharing for this user
+ // we create a share notification action to inform the user about files
+ // shared with him otherwise we just update the existing share action.
+ var fileList = ev.fileList;
+ var $fileList = $(this);
+ $fileList.find('[data-share-owner]').each(function() {
+ var $tr = $(this);
+ var permissions = $tr.data('permissions');
+ if(permissions & OC.PERMISSION_SHARE) {
+ OC.Share.markFileAsShared($tr, true);
+ } else {
+ // TODO: make this work like/with OC.Share.markFileAsShared()
+ var shareNotification = '<a class="action action-share-notification permanent"' +
+ ' data-action="Share-Notification" href="#" original-title="">' +
+ ' <img class="svg" src="' + OC.imagePath('core', 'actions/share') + '"></img>';
+ $tr.find('.fileactions').append(function() {
+ var owner = $(this).closest('tr').attr('data-share-owner');
+ var shareBy = t('files_sharing', 'Shared by {owner}', {owner: owner});
+ var $result = $(shareNotification + '<span> ' + shareBy + '</span></span>');
+ $result.on('click', function() {
+ return false;
});
- }
- });
-
- if (!OCA.Sharing.sharesLoaded){
- OC.Share.loadIcons('file', fileList);
- // assume that we got all shares, so switching directories
- // will not invalidate that list
- OCA.Sharing.sharesLoaded = true;
- }
- else{
- OC.Share.updateIcons('file', fileList);
+ return $result;
+ });
}
});
- fileActions.register(
- 'all',
- 'Share',
- OC.PERMISSION_SHARE,
- OC.imagePath('core', 'actions/share'),
- function(filename, context) {
+ if (!OCA.Sharing.sharesLoaded){
+ OC.Share.loadIcons('file', fileList);
+ // assume that we got all shares, so switching directories
+ // will not invalidate that list
+ OCA.Sharing.sharesLoaded = true;
+ }
+ else{
+ OC.Share.updateIcons('file', fileList);
+ }
+ });
- var $tr = context.$file;
- var itemType = 'file';
- if ($tr.data('type') === 'dir') {
- itemType = 'folder';
- }
- var possiblePermissions = $tr.data('reshare-permissions');
- if (_.isUndefined(possiblePermissions)) {
- possiblePermissions = $tr.data('permissions');
- }
+ fileActions.register(
+ 'all',
+ 'Share',
+ OC.PERMISSION_SHARE,
+ OC.imagePath('core', 'actions/share'),
+ function(filename, context) {
- var appendTo = $tr.find('td.filename');
- // Check if drop down is already visible for a different file
- if (OC.Share.droppedDown) {
- if ($tr.data('id') !== $('#dropdown').attr('data-item-source')) {
- OC.Share.hideDropDown(function () {
- $tr.addClass('mouseOver');
- OC.Share.showDropDown(itemType, $tr.data('id'), appendTo, true, possiblePermissions, filename);
- });
- } else {
- OC.Share.hideDropDown();
- }
+ var $tr = context.$file;
+ var itemType = 'file';
+ if ($tr.data('type') === 'dir') {
+ itemType = 'folder';
+ }
+ var possiblePermissions = $tr.data('reshare-permissions');
+ if (_.isUndefined(possiblePermissions)) {
+ possiblePermissions = $tr.data('permissions');
+ }
+
+ var appendTo = $tr.find('td.filename');
+ // Check if drop down is already visible for a different file
+ if (OC.Share.droppedDown) {
+ if ($tr.data('id') !== $('#dropdown').attr('data-item-source')) {
+ OC.Share.hideDropDown(function () {
+ $tr.addClass('mouseOver');
+ OC.Share.showDropDown(itemType, $tr.data('id'), appendTo, true, possiblePermissions, filename);
+ });
} else {
- $tr.addClass('mouseOver');
- OC.Share.showDropDown(itemType, $tr.data('id'), appendTo, true, possiblePermissions, filename);
+ OC.Share.hideDropDown();
+ }
+ } else {
+ $tr.addClass('mouseOver');
+ OC.Share.showDropDown(itemType, $tr.data('id'), appendTo, true, possiblePermissions, filename);
+ }
+ $('#dropdown').on('sharesChanged', function(ev) {
+ // note: we only update the data attribute because updateIcon()
+ // is called automatically after this event
+ var userShares = ev.itemShares[OC.Share.SHARE_TYPE_USER] || [];
+ var groupShares = ev.itemShares[OC.Share.SHARE_TYPE_GROUP] || [];
+ var recipients = _.union(userShares, groupShares);
+ if (recipients.length) {
+ $tr.attr('data-share-recipients', OCA.Sharing.Util.formatRecipients(recipients));
+ }
+ else {
+ $tr.removeAttr('data-share-recipients');
}
- $('#dropdown').on('sharesChanged', function(ev) {
- // note: we only update the data attribute because updateIcon()
- // is called automatically after this event
- var userShares = ev.itemShares[OC.Share.SHARE_TYPE_USER] || [];
- var groupShares = ev.itemShares[OC.Share.SHARE_TYPE_GROUP] || [];
- var recipients = _.union(userShares, groupShares);
- // only update the recipients if they existed before
- // (some file lists don't have them)
- if (!_.isUndefined($tr.attr('data-share-recipients'))) {
- // FIXME: use display names from users, we currently only got user ids
- if (recipients.length) {
- $tr.attr('data-share-recipients', OCA.Sharing.Util.formatRecipients(recipients));
- }
- else {
- $tr.attr('data-share-recipients', '');
- }
- }
- });
});
- }
+ });
},
/**
@@ -159,7 +152,9 @@
$(document).ready(function() {
// FIXME: HACK: do not init when running unit tests, need a better way
if (!window.TESTING) {
- OCA.Sharing.Util.initialize(OCA.Files.fileActions);
+ if (!_.isUndefined(OC.Share) && !_.isUndefined(OCA.Files)) {
+ OCA.Sharing.Util.initialize(OCA.Files.fileActions);
+ }
}
});