OC.Share={
SHARE_TYPE_USER:0,
SHARE_TYPE_GROUP:1,
SHARE_TYPE_PRIVATE_LINK:3,
SHARE_TYPE_EMAIL:4,
PERMISSION_CREATE:4,
PERMISSION_READ:1,
PERMISSION_UPDATE:2,
PERMISSION_DELETE:8,
PERMISSION_SHARE:16,
itemShares:[],
statuses:[],
droppedDown:false,
loadIcons:function(itemType) {
// Load all share icons
$.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getItemsSharedStatuses', itemType: itemType }, function(result) {
if (result && result.status === 'success') {
$.each(result.data, function(item, hasPrivateLink) {
// Private links override shared in terms of icon display
if (itemType != 'file' && itemType != 'folder') {
if (hasPrivateLink) {
var image = OC.imagePath('core', 'actions/public');
} else {
var image = OC.imagePath('core', 'actions/shared');
}
$('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center');
}
OC.Share.statuses[item] = hasPrivateLink;
});
}
});
},
loadItem:function(itemType, itemSource) {
var data = '';
var checkReshare = true;
// Switch file sources to path to check if status is set
if (itemType == 'file' || itemType == 'folder') {
var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file');
if ($('#dir').val() == '/') {
var item = $('#dir').val() + filename;
} else {
var item = $('#dir').val() + '/' + filename;
}
if (item.substring(0, 8) != '/Shared/') {
checkReshare = false;
}
} else {
var item = itemSource;
}
if (typeof OC.Share.statuses[item] === 'undefined') {
checkShares = false;
} else {
checkShares = true;
}
$.ajax({type: 'GET', url: OC.filePath('core', 'ajax', 'share.php'), data: { fetch: 'getItem', itemType: itemType, itemSource: itemSource, checkReshare: checkReshare, checkShares: checkShares }, async: false, success: function(result) {
if (result && result.status === 'success') {
data = result.data;
} else {
data = false;
}
}});
return data;
},
share:function(itemType, itemSource, shareType, shareWith, permissions, callback) {
$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'share', itemType: itemType, itemSource: itemSource, shareType: shareType, shareWith: shareWith, permissions: permissions }, function(result) {
if (result && result.status === 'success') {
if (callback) {
callback(result.data);
}
} else {
OC.dialogs.alert(result.data.message, 'Error while sharing');
}
});
},
unshare:function(itemType, itemSource, shareType, shareWith, callback) {
$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'unshare', itemType: itemType, itemSource: itemSource, shareType: shareType, shareWith: shareWith }, function(result) {
if (result && result.status === 'success') {
if (callback) {
callback();
}
} else {
OC.dialogs.alert('Error', 'Error while unsharing');
}
});
},
setPermissions:function(itemType, itemSource, shareType, shareWith, permissions) {
$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'setPermissions', itemType: itemType, itemSource: itemSource, shareType: shareType, shareWith: shareWith, permissions: permissions }, function(result) {
if (!result || result.status !== 'success') {
OC.dialogs.alert('Error', 'Error while changing permissions');
}
});
},
showDropDown:function(itemType, itemSource, appendTo, privateLink, possiblePermissions) {
var data = OC.Share.loadItem(itemType, itemSource);
var html = '
';
if (data.reshare) {
if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
html += 'Shared with you and the group '+data.reshare.share_with+' by '+data.reshare.uid_owner;
} else {
html += 'Shared with you by '+data.reshare.uid_owner;
}
html += ' ';
}
if (possiblePermissions & OC.Share.PERMISSION_SHARE) {
html += '';
html += '