]> source.dussan.org Git - nextcloud-server.git/commitdiff
Generate the checks list in JS
authorJoas Schilling <coding@schilljs.com>
Tue, 26 Jul 2016 15:34:05 +0000 (17:34 +0200)
committerJoas Schilling <coding@schilljs.com>
Wed, 27 Jul 2016 08:21:26 +0000 (10:21 +0200)
apps/workflowengine/js/admin.js
apps/workflowengine/js/usergroupmembershipplugin.js
apps/workflowengine/templates/admin.php

index f51352c45e4aac93eef99f2b3bd622c2ce7c69be..590274b87700e034b7c8db74019fcffdf0242789 100644 (file)
        });
 
        Handlebars.registerHelper('getOperators', function(classname) {
-               return OCA.WorkflowEngine.availableChecks
-                       .getOperatorsByClassName(classname);
+               var check = OCA.WorkflowEngine.getCheckByClass(classname);
+               if (!_.isUndefined(check)) {
+                       return check['operators'];
+               }
+               return [];
        });
 
-       OCA.WorkflowEngine = OCA.WorkflowEngine || {};
+       OCA.WorkflowEngine = OCA.WorkflowEngine || {
+                       availablePlugins: [],
+                       availableChecks: [],
+
+                       getCheckByClass: function(className) {
+                               var length = OCA.WorkflowEngine.availableChecks.length;
+                               for (var i = 0; i < length; i++) {
+                                       if (OCA.WorkflowEngine.availableChecks[i]['class'] === className) {
+                                               return OCA.WorkflowEngine.availableChecks[i];
+                                       }
+                               }
+                               return undefined;
+                       }
+       };
 
        /**
         * 888b     d888               888          888
                        url: OC.generateUrl('apps/workflowengine/operations')
                });
 
-       /**
-        * @class OCA.WorkflowEngine.AvailableChecksCollection
-        *
-        * collection for all available checks
-        */
-       OCA.WorkflowEngine.AvailableChecksCollection =
-               OC.Backbone.Collection.extend({
-                       model: OCA.WorkflowEngine.AvailableCheck,
-                       url: OC.generateUrl('apps/workflowengine/checks'),
-                       getOperatorsByClassName: function(classname) {
-                               return OCA.WorkflowEngine.availableChecks
-                                       .findWhere({'class': classname})
-                                       .get('operators');
-                       }
-               });
-
        /**
         * 888     888 d8b
         * 888     888 Y8P
                        message: '',
                        errorMessage: '',
                        saving: false,
-                       plugins: [],
                        initialize: function() {
                                // this creates a new copy of the object to definitely have a new reference and being able to reset the model
                                this.originalModel = JSON.parse(JSON.stringify(this.model));
                                if (this.model.get('id') === undefined) {
                                        this.hasChanged = true;
                                }
-
-                               this.plugins = OC.Plugins.getPlugins('OCA.WorkflowEngine.CheckPlugins');
-                               _.each(this.plugins, function(plugin) {
-                                       if (_.isFunction(plugin.initialize)) {
-                                               plugin.initialize();
-                                       }
-                               });
                        },
                        delete: function() {
                                this.model.destroy();
                        },
                        add: function() {
                                var checks = _.clone(this.model.get('checks')),
-                                       classname = OCA.WorkflowEngine.availableChecks.at(0).get('class'),
-                                       operators = OCA.WorkflowEngine.availableChecks
-                                               .getOperatorsByClassName(classname);
+                                       classname = OCA.WorkflowEngine.availableChecks[0]['class'],
+                                       operators = OCA.WorkflowEngine.availableChecks[0]['operators'];
 
                                checks.push({
                                        'class': classname,
                                // if the class is changed most likely also the operators have changed
                                // with this we set the operator to the first possible operator
                                if (key === 'class') {
-                                       var operators = OCA.WorkflowEngine.availableChecks
-                                               .getOperatorsByClassName(value);
-                                       checks[id]['operator'] = operators[0];
+                                       var check = OCA.WorkflowEngine.getCheckByClass(value);
+                                       if (!_.isUndefined(check)) {
+                                               checks[id]['operator'] = check['operators'][0];
+                                       }
                                }
                                // model change will trigger render
                                this.model.set({'checks': checks});
                        render: function() {
                                this.$el.html(this.template({
                                        operation: this.model.toJSON(),
-                                       classes: OCA.WorkflowEngine.availableChecks.toJSON(),
+                                       classes: OCA.WorkflowEngine.availableChecks,
                                        hasChanged: this.hasChanged,
                                        message: this.message,
                                        errorMessage: this.errorMessage,
                                                check = checks[id],
                                                valueElement = $element.find('.check-value').first();
 
-                                       _.each(this.plugins, function(plugin) {
+                                       _.each(OCA.WorkflowEngine.availablePlugins, function(plugin) {
                                                if (_.isFunction(plugin.render)) {
                                                        plugin.render(valueElement, check['class'], check['value']);
                                                }
        OCA.WorkflowEngine.OperationsView =
                OCA.WorkflowEngine.TemplateView.extend({
                        templateId: '#operations-template',
+                       collection: null,
+                       $el: null,
                        events: {
                                'click .button-add-operation': 'add'
                        },
                                this._initialize('OCA\\WorkflowEngine\\Operation');
                        },
                        _initialize: function(classname) {
+                               OCA.WorkflowEngine.availablePlugins = OC.Plugins.getPlugins('OCA.WorkflowEngine.CheckPlugins');
+                               _.each(OCA.WorkflowEngine.availablePlugins, function(plugin) {
+                                       if (_.isFunction(plugin.initialize)) {
+                                               plugin.initialize();
+                                       }
+                                       if (_.isFunction(plugin.getCheck)) {
+                                               OCA.WorkflowEngine.availableChecks.push(plugin.getCheck());
+                                       }
+                               });
+
                                this.collection.fetch({data: {
                                        'class': classname
                                }});
index 2a6068cda90f0ed086e2779947b2d34dca1e85f5..528a7bd3e3d059bb25b9b75990ca7604d2d95ae9 100644 (file)
        OCA.WorkflowEngine.Plugins = OCA.WorkflowEngine.Plugins || {};
 
        OCA.WorkflowEngine.Plugins.UserGroupMembershipPlugin = {
+               getCheck: function() {
+                       return {
+                               'class': 'OCA\\WorkflowEngine\\Check\\UserGroupMembership',
+                               'name': t('workflowengine', 'User group membership'),
+                               'operators': [
+                                       {'operator': 'is', 'name': t('workflowengine', 'is member of')},
+                                       {'operator': '!is', 'name': t('workflowengine', 'is not member of')}
+                               ]
+                       };
+               },
                render: function(element, classname, value) {
                        if (classname !== 'OCA\\WorkflowEngine\\Check\\UserGroupMembership') {
                                return;
index 86ecfe085569ec2ee9732bb1452c3f44c42831b5..cb6895f80c12ed8f82fa75d2266d45cef220520c 100644 (file)
@@ -48,7 +48,7 @@
                                        </select>
                                        <select class="check-operator">
                                                {{#each (getOperators class)}}
-                                               <option value="{{this}}" {{selectItem this ../operator}}>{{this}}</option>
+                                               <option value="{{operator}}" {{selectItem this.operator ../operator}}>{{name}}</option>
                                                {{/each}}
                                        </select>
                                        <input type="text" class="check-value" value="{{value}}">