summaryrefslogtreecommitdiffstats
path: root/core/js/shareitemmodel.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/js/shareitemmodel.js')
-rw-r--r--core/js/shareitemmodel.js57
1 files changed, 56 insertions, 1 deletions
diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js
index fe7aed46509..efce69f0f3e 100644
--- a/core/js/shareitemmodel.js
+++ b/core/js/shareitemmodel.js
@@ -57,6 +57,22 @@
this.fetch();
},
+ defaults: {
+ allowPublicUploadStatus: false
+ },
+
+ /**
+ * @returns {boolean|jQuery}
+ */
+ isPublicUploadEnabled: function() {
+ // FIXME: this really needs a better place
+ var publicUploadEnabled = $('#filestable').data('allow-public-upload');
+ if (_.isUndefined(publicUploadEnabled)) {
+ publicUploadEnabled = 'no';
+ }
+ return publicUploadEnabled;
+ },
+
/**
* whether this item has reshare information
* @returns {boolean}
@@ -101,6 +117,26 @@
return this.get('reshare').share_type;
},
+ /**
+ * @returns {number}
+ */
+ getPermissions: function() {
+ var permissions = this.get('permissions');
+ if(_.isUndefined(permissions)) {
+ // model was not properly initialized
+ console.warn('Sharing error: undefined permissions');
+ permissions = 0;
+ }
+ return permissions;
+ },
+
+ /**
+ * @returns {boolean}
+ */
+ hasSharePermission: function() {
+ return (this.getPermissions & OC.PERMISSION_SHARE) === OC.PERMISSION_SHARE;
+ },
+
fetch: function() {
var model = this;
OC.Share.loadItem(this.get('itemType'), this.get('itemSource'), function(data) {
@@ -114,10 +150,29 @@
trigger('fetchError');
return {};
}
+
+ var permissions = this.get('possiblePermissions');
+ if(!_.isUndefined(data.reshare) && !_.isUndefined(data.reshare.permissions)) {
+ permissions = permissions & data.reshare.permissions;
+ }
+
+ var allowPublicUploadStatus = false;
+ if(!_.isUndefined(data.shares)) {
+ $.each(data.shares, function (key, value) {
+ if (value.share_type === OC.Share.SHARE_TYPE_LINK) {
+ allowPublicUploadStatus = (value.permissions & OC.PERMISSION_CREATE) ? true : false;
+ return true;
+ }
+ });
+ }
+
var attributes = {
reshare: data.reshare,
- shares: data.shares
+ shares: data.shares,
+ permissions: permissions,
+ allowPublicUploadStatus: allowPublicUploadStatus
};
+
return attributes;
}
});