tpotce/docker/tanner/snare/dist/pages/5/f2b825a5686ab2840bf8996e2900eccc

121 lines
2.8 KiB
Text
Raw Normal View History

2018-08-14 14:20:55 +00:00
/*
* Copyright (c) 2017
*
* This file is licensed under the Affero General Public License version 3
* or later.
*
* See the COPYING-README file.
*
*/
(function() {
/**
* @class OC.Share.ShareModel
* @classdesc
*
* Represents a single share.
*/
var ShareModel = OC.Backbone.Model.extend({
url: function() {
var params = {
format: 'json'
};
var idPart = '';
// note: unsaved new models have no ids at first but need a POST URL
if (!_.isUndefined(this.id)) {
idPart = '/' + encodeURIComponent(this.id);
}
return OC.linkToOCS('apps/files_sharing/api/v1', 2) +
'shares' +
idPart +
'?' + OC.buildQueryString(params);
},
parse: function(data) {
/* jshint camelcase: false */
if (data.ocs && data.ocs.data) {
// parse out of the ocs response
data = data.ocs.data;
}
// parse the non-camel to camel
if (data.share_type === OC.Share.SHARE_TYPE_LINK) {
// store password in a separate attribute as we don't
// want to re-save it like this
data.encryptedPassword = data.share_with;
delete data.share_with;
delete data.file_target;
delete data.mail_send;
delete data.share_with_displayname;
}
data.itemSource = data.item_source;
delete data.item_source;
data.itemType = data.item_type;
delete data.item_type;
data.shareType = data.share_type;
delete data.share_type;
// convert the inconsistency... (read as expiration, saved as expireDate...)
if (data.expiration && !data.expireDate) {
data.expireDate = data.expiration;
}
if (_.isUndefined(data.expireDate)) {
data.expireDate = null;
}
// remove unrelated/unneeded attributes,
delete data.expiration;
delete data.url;
// these can be read from the parent object or fileinfo
delete data.displayname_file_owner;
delete data.displayname_owner;
delete data.file_parent;
delete data.path;
delete data.storage;
delete data.storage_id;
delete data.uid_file_owner;
delete data.uid_owner;
delete data.mimetype;
delete data.parent;
return data;
},
canRead: function() {
return (this.get('permissions') & OC.PERMISSION_READ) > 0;
},
canUpdate: function() {
return (this.get('permissions') & OC.PERMISSION_UPDATE) > 0;
},
canDelete: function() {
return (this.get('permissions') & OC.PERMISSION_DELETE) > 0;
},
canCreate: function() {
return (this.get('permissions') & OC.PERMISSION_CREATE) > 0;
},
canShare: function() {
return (this.get('permissions') & OC.PERMISSION_SHARE) > 0;
},
/**
* Returns the absolute link share
*
* @return {String} link
*/
getLink: function() {
var base = OC.getProtocol() + '://' + OC.getHost();
return base + OC.generateUrl('/s/') + this.get('token');
}
});
OC.Share = OC.Share || {};
OC.Share.ShareModel = ShareModel;
})();