]> source.dussan.org Git - nextcloud-server.git/commitdiff
Adjust OCP.Collaboration
authorJulius Härtl <jus@bitgrid.net>
Wed, 23 Jan 2019 15:34:56 +0000 (16:34 +0100)
committerJulius Härtl <jus@bitgrid.net>
Fri, 1 Mar 2019 19:56:17 +0000 (20:56 +0100)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
core/js/core.json
core/src/OCP/collaboration.js

index ae2e9a87a943f92d63ee3362f2669b1669e5decd..5bf6512d6a212cd34bef5ff203f59bf6349f1264 100644 (file)
@@ -26,7 +26,6 @@
                "systemtags/systemtagmodel.js",
                "systemtags/systemtagscollection.js",
                "systemtags/systemtagsmappingcollection.js",
-               "systemtags/systemtagsinputfield.js",
-               "collaboration.js"
+               "systemtags/systemtagsinputfield.js"
        ]
 }
index a4b0fc24e66cc0d3fbfc68ee4e1b4af011f7f079..a74834e741e3fd0f9e7ed9ff6e3c93c1a032e59a 100644 (file)
  *
  */
 
-let resourceSelectHandlers = {};
-
-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 title
-        * @param selectorCallback
-        */
-       registerResourceSelector: function(resourceType, title, selectorCallback) {
-               if (!this.resourceSelectHandlers.hasOwnProperty(resourceType)) {
-                       this.resourceSelectHandlers[resourceType] = {
-                               title: title,
-                               callback: selectorCallback
-                       };
-               }
-       },
+/**
+ * @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
+ */
 
-       getResourceTypes: function() {
-               return this.resourceSelectHandlers;
-       },
+/**
+ * @type {TypeDefinition[]}
+ **/
+let types = {};
 
+export default {
        /**
-        * Select a resource for a given type
         *
-        * @param resourceType
-        * @param successCallback
-        * @param abortCallback
+        * @param type
+        * @param {TypeDefinition} typeDefinition
         */
-       selectResource: function (resourceType, successCallback, abortCallback) {
-               this.resourceSelectHandlers[resourceType].callback(successCallback, abortCallback);
+       registerType(type, typeDefinition) {
+               console.log('Type ' + type + ' registered')
+               types[type] = typeDefinition;
        },
-
-       getCollectionsByResource: function(resourceType, resourceId) {
-               // TODO: to implement
+       trigger(type) {
+               return types[type].action()
        },
-
-       /**
-        * 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);
-                       })
-               });
+       getTypes() {
+               return Object.keys(types);
        },
-
-       /**
-        *
-        * @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));
+       getIcon(type) {
+               return types[type].icon;
        },
-
-       /**
-        * 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));
+       getLabel(type) {
+               return t('files_sharing', 'Link to a {label}', { label: types[type].typeString || type }, 1)
        },
-
-       removeResource: function(collection, resource) {
-               // TODO: to implement
+       getLink(type, id) {
+               /* TODO: Allow action to be executed instead of href as well */
+               return typeof types[type] !== 'undefined' ? types[type].link(id) : '';
        }
-
 };