Adjust OCP.Collaboration
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
51057c539f
commit
7843b8b1fa
|
@ -26,7 +26,6 @@
|
||||||
"systemtags/systemtagmodel.js",
|
"systemtags/systemtagmodel.js",
|
||||||
"systemtags/systemtagscollection.js",
|
"systemtags/systemtagscollection.js",
|
||||||
"systemtags/systemtagsmappingcollection.js",
|
"systemtags/systemtagsmappingcollection.js",
|
||||||
"systemtags/systemtagsinputfield.js",
|
"systemtags/systemtagsinputfield.js"
|
||||||
"collaboration.js"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,144 +20,42 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
let resourceSelectHandlers = {};
|
/**
|
||||||
|
* @typedef TypeDefinition
|
||||||
|
* @method {callback} action This action is executed to let the user select a resource
|
||||||
|
* @param {string} icon Contains the icon css class for the type
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {TypeDefinition[]}
|
||||||
|
**/
|
||||||
|
let types = {};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
||||||
/**
|
|
||||||
* @class
|
|
||||||
* @param resourceType
|
|
||||||
* @param resourceId
|
|
||||||
* @constructor
|
|
||||||
*/
|
|
||||||
Resource: function(resourceType, resourceId) {
|
|
||||||
this.resourceType = '' + resourceType;
|
|
||||||
this.resourceId = '' + resourceId;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class
|
|
||||||
* @param id
|
|
||||||
* @param name
|
|
||||||
* @constructor
|
|
||||||
*/
|
|
||||||
Collection: function(id, name) {
|
|
||||||
this.id = '' + id;
|
|
||||||
this.name = '' + name;
|
|
||||||
this.resources = [];
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param resourceType
|
* @param type
|
||||||
* @param title
|
* @param {TypeDefinition} typeDefinition
|
||||||
* @param selectorCallback
|
|
||||||
*/
|
*/
|
||||||
registerResourceSelector: function(resourceType, title, selectorCallback) {
|
registerType(type, typeDefinition) {
|
||||||
if (!this.resourceSelectHandlers.hasOwnProperty(resourceType)) {
|
console.log('Type ' + type + ' registered')
|
||||||
this.resourceSelectHandlers[resourceType] = {
|
types[type] = typeDefinition;
|
||||||
title: title,
|
|
||||||
callback: selectorCallback
|
|
||||||
};
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
trigger(type) {
|
||||||
getResourceTypes: function() {
|
return types[type].action()
|
||||||
return this.resourceSelectHandlers;
|
|
||||||
},
|
},
|
||||||
|
getTypes() {
|
||||||
/**
|
return Object.keys(types);
|
||||||
* Select a resource for a given type
|
|
||||||
*
|
|
||||||
* @param resourceType
|
|
||||||
* @param successCallback
|
|
||||||
* @param abortCallback
|
|
||||||
*/
|
|
||||||
selectResource: function (resourceType, successCallback, abortCallback) {
|
|
||||||
this.resourceSelectHandlers[resourceType].callback(successCallback, abortCallback);
|
|
||||||
},
|
},
|
||||||
|
getIcon(type) {
|
||||||
getCollectionsByResource: function(resourceType, resourceId) {
|
return types[type].icon;
|
||||||
// TODO: to implement
|
|
||||||
},
|
},
|
||||||
|
getLabel(type) {
|
||||||
/**
|
return t('files_sharing', 'Link to a {label}', { label: types[type].typeString || type }, 1)
|
||||||
* Create a new collection from two resources
|
|
||||||
*
|
|
||||||
* @param name
|
|
||||||
* @param resource1
|
|
||||||
* @param resource2
|
|
||||||
* @param successCallback
|
|
||||||
* @param errorCallback
|
|
||||||
*/
|
|
||||||
createCollection: function (name, resource1, resource2, successCallback, errorCallback) {
|
|
||||||
var self = this;
|
|
||||||
this.createCollectionOnResource(name, resource1, function (collection) {
|
|
||||||
self.addResource(collection, resource2, function (collection) {
|
|
||||||
successCallback(collection);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
getLink(type, id) {
|
||||||
/**
|
/* TODO: Allow action to be executed instead of href as well */
|
||||||
*
|
return typeof types[type] !== 'undefined' ? types[type].link(id) : '';
|
||||||
* @param name
|
|
||||||
* @param resource1
|
|
||||||
* @param successCallback
|
|
||||||
* @param errorCallback
|
|
||||||
*/
|
|
||||||
createCollectionOnResource: function (name, resource1, successCallback, errorCallback) {
|
|
||||||
var data = {
|
|
||||||
name: name,
|
|
||||||
resourceType: resource1.resourceType,
|
|
||||||
resourceId: ''+resource1.resourceId,
|
|
||||||
};
|
|
||||||
var request = new XMLHttpRequest();
|
|
||||||
request.open('POST', OC.linkToOCS('collaboration/resources/' + data.resourceType, 2) + data.resourceId + '?format=json', true);
|
|
||||||
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
|
|
||||||
request.setRequestHeader('oc_requesttoken', OC.requestToken);
|
|
||||||
request.setRequestHeader('OCS-APIRequest', true);
|
|
||||||
request.onreadystatechange = function () {
|
|
||||||
if(request.readyState === 4 && request.status === 200) {
|
|
||||||
var result = JSON.parse(request.responseText);
|
|
||||||
var collection = new OCP.Collaboration.Collection(result.ocs.data.id, result.ocs.data.name);
|
|
||||||
collection.resources.push(resource1);
|
|
||||||
successCallback(collection);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
request.send(JSON.stringify(data));
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a resource to a collection
|
|
||||||
*
|
|
||||||
* @param {OCP.Collaboration.Collection} collection
|
|
||||||
* @param resource
|
|
||||||
* @param successCallback
|
|
||||||
* @param resource
|
|
||||||
*/
|
|
||||||
addResource: function (collection, resource, successCallback) {
|
|
||||||
var data = {
|
|
||||||
resourceType: resource.resourceType,
|
|
||||||
resourceId: '' + resource.resourceId,
|
|
||||||
};
|
|
||||||
var request = new XMLHttpRequest();
|
|
||||||
request.open('POST', OC.linkToOCS('collaboration/resources/collections', 2) + collection.id + '?format=json', true);
|
|
||||||
request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
|
|
||||||
request.setRequestHeader('oc_requesttoken', OC.requestToken);
|
|
||||||
request.setRequestHeader('OCS-APIRequest', true);
|
|
||||||
request.onreadystatechange = function () {
|
|
||||||
if(request.readyState === 4 && request.status === 200) {
|
|
||||||
var result = JSON.parse(request.responseText);
|
|
||||||
collection.resources.push(resource);
|
|
||||||
successCallback(collection);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
request.send(JSON.stringify(data));
|
|
||||||
},
|
|
||||||
|
|
||||||
removeResource: function(collection, resource) {
|
|
||||||
// TODO: to implement
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue