@@ -61,6 +61,7 @@ $eventDispatcher->addListener( | |||
\OCP\Util::addScript('files_sharing', 'share'); | |||
\OCP\Util::addScript('files_sharing', 'sharetabview'); | |||
\OCP\Util::addScript('files_sharing', 'external'); | |||
\OCP\Util::addStyle('files_sharing', 'sharetabview'); | |||
} | |||
); | |||
@@ -5,7 +5,6 @@ | |||
.shareTabView .oneline { white-space: nowrap; } | |||
.shareTabView .shareWithLoading { | |||
display: inline-block !important; | |||
padding-left: 10px; | |||
position: relative; | |||
right: 30px; |
@@ -20,6 +20,7 @@ | |||
enforcePasswordForPublicLink: oc_appconfig.core.enforcePasswordForPublicLink, | |||
isDefaultExpireDateEnforced: oc_appconfig.core.defaultExpireDateEnforced === true, | |||
defaultExpireDate: oc_appconfig.core.defaultExpireDate, | |||
isResharingAllowed: oc_appconfig.core.resharingAllowed | |||
}, | |||
/** | |||
@@ -51,13 +52,6 @@ | |||
return oc_appconfig.core.remoteShareAllowed; | |||
}, | |||
/** | |||
* @returns {boolean} | |||
*/ | |||
isResharingAllowed: function() { | |||
return oc_appconfig.core.resharingAllowed | |||
}, | |||
/** | |||
* @returns {boolean} | |||
*/ |
@@ -161,7 +161,7 @@ | |||
deletePermissionLabel: t('core', 'delete'), | |||
crudsLabel: t('core', 'access control'), | |||
triangleSImage: OC.imagePath('core', 'actions/triangle-s'), | |||
isResharingAllowed: this.configModel.isResharingAllowed(), | |||
isResharingAllowed: this.configModel.get('isResharingAllowed'), | |||
sharePermissionPossible: this.model.sharePermissionPossible(), | |||
editPermissionPossible: this.model.editPermissionPossible(), | |||
createPermissionPossible: this.model.createPermissionPossible(), | |||
@@ -185,10 +185,12 @@ | |||
if(this.model.isCollection(index)) { | |||
this.processCollectionShare(index); | |||
} else { | |||
list.push(_.extend(universal, this.getShareeObject(index))) | |||
// first empty {} is necessary, otherwise we get in trouble | |||
// with references | |||
list.push(_.extend({}, universal, this.getShareeObject(index))); | |||
} | |||
list = _.union(_.values(this._collections), list); | |||
} | |||
list = _.union(_.values(this._collections), list); | |||
return list; | |||
}, |
@@ -100,6 +100,36 @@ | |||
? new OC.Share[className](subViewOptions) | |||
: options[name]; | |||
} | |||
_.bindAll(this, 'autocompleteHandler'); | |||
}, | |||
autocompleteHandler: function (search, response) { | |||
var view = this; | |||
var $loading = this.$el.find('.shareWithLoading'); | |||
$loading.removeClass('hidden'); | |||
$loading.addClass('inlineblock'); | |||
$.get(OC.filePath('core', 'ajax', 'share.php'), { | |||
fetch: 'getShareWith', | |||
search: search.term.trim(), | |||
limit: 200, | |||
itemShares: OC.Share.itemShares, | |||
itemType: view.model.get('itemType') | |||
}, function (result) { | |||
$loading.addClass('hidden'); | |||
$loading.removeClass('inlineblock'); | |||
if (result.status == 'success' && result.data.length > 0) { | |||
$("#shareWith").autocomplete("option", "autoFocus", true); | |||
response(result.data); | |||
} else { | |||
response(); | |||
} | |||
}).fail(function () { | |||
$loading.addClass('hidden'); | |||
$loading.removeClass('inlineblock'); | |||
OC.Notification.show(t('core', 'An error occured. Please try again')); | |||
window.setTimeout(OC.Notification.hide, 5000); | |||
}); | |||
}, | |||
render: function() { | |||
@@ -111,6 +141,22 @@ | |||
remoteShareInfo: this._renderRemoteShareInfoPart(), | |||
})); | |||
var view = this; | |||
this.$el.find('#shareWith').autocomplete({ | |||
minLength: 2, | |||
delay: 750, | |||
source: this.autocompleteHandler, | |||
select: function(e, s) { | |||
var expiration = ''; | |||
if($('#expirationCheckbox').is(':checked') === true) { | |||
expiration = view.$el.find('#expirationDate').val() | |||
} | |||
view.model.addShare(e, s, { | |||
expiration: expiration | |||
}); | |||
} | |||
}); | |||
this.resharerInfoView.$el = this.$el.find('.resharerInfoView'); | |||
this.resharerInfoView.render(); | |||
@@ -79,6 +79,8 @@ | |||
/** @type {OC.Files.FileInfo} **/ | |||
this.fileInfoModel = options.fileInfoModel; | |||
} | |||
_.bindAll(this, 'addShare'); | |||
}, | |||
defaults: { | |||
@@ -87,6 +89,45 @@ | |||
linkShare: {} | |||
}, | |||
addShare: function(event, selected, options) { | |||
event.preventDefault(); | |||
//console.warn(selected); | |||
//return false; | |||
var shareType = selected.item.value.shareType; | |||
var shareWith = selected.item.value.shareWith; | |||
var fileName = this.fileInfoModel.get('name'); | |||
options = options || {}; | |||
// Default permissions are Edit (CRUD) and Share | |||
// Check if these permissions are possible | |||
var permissions = OC.PERMISSION_READ; | |||
if (shareType === OC.Share.SHARE_TYPE_REMOTE) { | |||
permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_READ; | |||
} else { | |||
if (this.updatePermissionPossible()) { | |||
permissions = permissions | OC.PERMISSION_UPDATE; | |||
} | |||
if (this.createPermissionPossible()) { | |||
permissions = permissions | OC.PERMISSION_CREATE; | |||
} | |||
if (this.deletePermissionPossible()) { | |||
permissions = permissions | OC.PERMISSION_DELETE; | |||
} | |||
if (this.configModel.get('isResharingAllowed') && (this.sharePermissionPossible())) { | |||
permissions = permissions | OC.PERMISSION_SHARE; | |||
} | |||
} | |||
var model = this; | |||
OC.Share.share(this.get('itemType'), this.get('itemSource'), shareType, shareWith, permissions, fileName, options.expiration, function() { | |||
model.fetch() | |||
//FIXME: updateIcon belongs to view | |||
OC.Share.updateIcon(itemType, itemSource); | |||
}); | |||
}, | |||
/** | |||
* @returns {boolean} | |||
*/ |