now you even can share

This commit is contained in:
Arthur Schiwon 2015-09-05 02:02:55 +02:00 committed by Vincent Petry
parent 858a2a4e6c
commit 258a2e2696
6 changed files with 94 additions and 11 deletions

View File

@ -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');
}
);

View File

@ -5,7 +5,6 @@
.shareTabView .oneline { white-space: nowrap; }
.shareTabView .shareWithLoading {
display: inline-block !important;
padding-left: 10px;
position: relative;
right: 30px;

View File

@ -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}
*/

View File

@ -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;
},

View File

@ -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();

View File

@ -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}
*/