diff options
-rw-r--r-- | apps/workflowengine/js/admin.js | 41 | ||||
-rw-r--r-- | apps/workflowengine/js/templates.js | 109 | ||||
-rw-r--r-- | apps/workflowengine/js/templates/operation.handlebars | 45 | ||||
-rw-r--r-- | apps/workflowengine/js/templates/operations.handlebars | 2 | ||||
-rw-r--r-- | apps/workflowengine/lib/AppInfo/Application.php | 1 | ||||
-rw-r--r-- | apps/workflowengine/templates/admin.php | 53 | ||||
-rwxr-xr-x | build/compile-handlebars-templates.sh | 2 |
7 files changed, 181 insertions, 72 deletions
diff --git a/apps/workflowengine/js/admin.js b/apps/workflowengine/js/admin.js index 66e98205db6..d986c5a494a 100644 --- a/apps/workflowengine/js/admin.js +++ b/apps/workflowengine/js/admin.js @@ -108,29 +108,12 @@ */ /** - * @class OCA.WorkflowEngine.TemplateView - * - * a generic template that handles the Handlebars template compile step - * in a method called "template()" - */ - OCA.WorkflowEngine.TemplateView = - OC.Backbone.View.extend({ - _template: null, - template: function(vars) { - if (!this._template) { - this._template = Handlebars.compile($(this.templateId).html()); - } - return this._template(vars); - } - }); - - /** * @class OCA.WorkflowEngine.OperationView * * this creates the view for a single operation */ OCA.WorkflowEngine.OperationView = - OCA.WorkflowEngine.TemplateView.extend({ + OC.Backbone.View.extend({ templateId: '#operation-template', events: { 'change .check-class': 'checkChanged', @@ -150,6 +133,18 @@ errorMessage: '', saving: false, groups: [], + template: function(vars) { + return OCA.WorkflowEngine.Templates['operation'](_.extend( + { + shortRuleDescTXT: t('workflowengine', 'Short rule description'), + addRuleTXT: t('workflowengine', 'Add rule'), + resetTXT: t('workflowengine', 'Reset'), + saveTXT: t('workflowengine', 'Save'), + savingTXT: t('workflowengine', 'Saving…') + }, + vars + )); + }, 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)); @@ -354,13 +349,21 @@ * this creates the view for configured operations */ OCA.WorkflowEngine.OperationsView = - OCA.WorkflowEngine.TemplateView.extend({ + OC.Backbone.View.extend({ templateId: '#operations-template', collection: null, $el: null, events: { 'click .button-add-operation': 'add' }, + template: function(vars) { + return OCA.WorkflowEngine.Templates['operations'](_.extend( + { + addRuleGroupTXT: t('workflowengine', 'Add rule group') + }, + vars + )); + }, initialize: function(classname) { if (!OCA.WorkflowEngine.availablePlugins.length) { OCA.WorkflowEngine.availablePlugins = OC.Plugins.getPlugins('OCA.WorkflowEngine.CheckPlugins'); diff --git a/apps/workflowengine/js/templates.js b/apps/workflowengine/js/templates.js new file mode 100644 index 00000000000..157d396357d --- /dev/null +++ b/apps/workflowengine/js/templates.js @@ -0,0 +1,109 @@ +(function() { + var template = Handlebars.template, templates = OCA.WorkflowEngine.Templates = OCA.WorkflowEngine.Templates || {}; +templates['operation'] = template({"1":function(container,depth0,helpers,partials,data) { + return " modified"; +},"3":function(container,depth0,helpers,partials,data) { + return " <span class=\"button-delete icon-delete\"></span>\n"; +},"5":function(container,depth0,helpers,partials,data,blockParams,depths) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; + + return " <div class=\"check\" data-id=\"" + + alias4(((helper = (helper = helpers.index || (data && data.index)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"index","hash":{},"data":data}) : helper))) + + "\">\n <select class=\"check-class\">\n" + + ((stack1 = helpers.each.call(alias1,(depths[1] != null ? depths[1].classes : depths[1]),{"name":"each","hash":{},"fn":container.program(6, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + " </select>\n <select class=\"check-operator\">\n" + + ((stack1 = helpers.each.call(alias1,(helpers.getOperators || (depth0 && depth0.getOperators) || alias2).call(alias1,(depth0 != null ? depth0["class"] : depth0),{"name":"getOperators","hash":{},"data":data}),{"name":"each","hash":{},"fn":container.program(8, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + " </select>\n <input type=\"text\" class=\"check-value\" value=\"" + + alias4(((helper = (helper = helpers.value || (depth0 != null ? depth0.value : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"value","hash":{},"data":data}) : helper))) + + "\">\n <span class=\"button-delete-check icon-delete\"></span>\n </div>\n"; +},"6":function(container,depth0,helpers,partials,data,blockParams,depths) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; + + return " <option value=\"" + + alias4(((helper = (helper = helpers["class"] || (depth0 != null ? depth0["class"] : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"class","hash":{},"data":data}) : helper))) + + "\" " + + ((stack1 = (helpers.selectItem || (depth0 && depth0.selectItem) || alias2).call(alias1,(depth0 != null ? depth0["class"] : depth0),(depths[1] != null ? depths[1]["class"] : depths[1]),{"name":"selectItem","hash":{},"data":data})) != null ? stack1 : "") + + ">" + + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data}) : helper))) + + "</option>\n"; +},"8":function(container,depth0,helpers,partials,data,blockParams,depths) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; + + return " <option value=\"" + + alias4(((helper = (helper = helpers.operator || (depth0 != null ? depth0.operator : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"operator","hash":{},"data":data}) : helper))) + + "\" " + + ((stack1 = (helpers.selectItem || (depth0 && depth0.selectItem) || alias2).call(alias1,(depth0 != null ? depth0.operator : depth0),(depths[1] != null ? depths[1].operator : depths[1]),{"name":"selectItem","hash":{},"data":data})) != null ? stack1 : "") + + ">" + + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data}) : helper))) + + "</option>\n"; +},"10":function(container,depth0,helpers,partials,data) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}); + + return ((stack1 = helpers["if"].call(alias1,((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.id : stack1),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + " <button class=\"button-save pull-right\">" + + container.escapeExpression(((helper = (helper = helpers.saveTXT || (depth0 != null ? depth0.saveTXT : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"saveTXT","hash":{},"data":data}) : helper))) + + "</button>\n"; +},"11":function(container,depth0,helpers,partials,data) { + var helper; + + return " <button class=\"button-reset pull-right\">" + + container.escapeExpression(((helper = (helper = helpers.resetTXT || (depth0 != null ? depth0.resetTXT : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"resetTXT","hash":{},"data":data}) : helper))) + + "</button>\n"; +},"13":function(container,depth0,helpers,partials,data) { + var helper; + + return " <span class=\"icon-loading-small pull-right\"></span>\n <span class=\"pull-right\">" + + container.escapeExpression(((helper = (helper = helpers.savingTXT || (depth0 != null ? depth0.savingTXT : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"savingTXT","hash":{},"data":data}) : helper))) + + "</span>\n "; +},"15":function(container,depth0,helpers,partials,data) { + var stack1; + + return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.message : depth0),{"name":"if","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : ""); +},"16":function(container,depth0,helpers,partials,data) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}); + + return "\n <span class=\"msg pull-right " + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.errorMessage : depth0),{"name":"if","hash":{},"fn":container.program(17, data, 0),"inverse":container.program(19, data, 0),"data":data})) != null ? stack1 : "") + + "\">\n " + + container.escapeExpression(((helper = (helper = helpers.message || (depth0 != null ? depth0.message : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"message","hash":{},"data":data}) : helper))) + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.errorMessage : depth0),{"name":"if","hash":{},"fn":container.program(21, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "\n </span>\n "; +},"17":function(container,depth0,helpers,partials,data) { + return "error"; +},"19":function(container,depth0,helpers,partials,data) { + return "success"; +},"21":function(container,depth0,helpers,partials,data) { + var helper; + + return " " + + container.escapeExpression(((helper = (helper = helpers.errorMessage || (depth0 != null ? depth0.errorMessage : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"errorMessage","hash":{},"data":data}) : helper))); +},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data,blockParams,depths) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression, alias5=container.lambda; + + return "<div class=\"operation" + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasChanged : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "\">\n <div class=\"operation-header\">\n <input type=\"text\" class=\"operation-name\" placeholder=\"" + + alias4(((helper = (helper = helpers.shortRuleDescTXT || (depth0 != null ? depth0.shortRuleDescTXT : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shortRuleDescTXT","hash":{},"data":data}) : helper))) + + "\" value=\"" + + alias4(alias5(((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.name : stack1), depth0)) + + "\" />\n <input type=\"text\" class=\"operation-operation\" value=\"" + + alias4(alias5(((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.operation : stack1), depth0)) + + "\" />\n" + + ((stack1 = helpers["if"].call(alias1,((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.id : stack1),{"name":"if","hash":{},"fn":container.program(3, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + " </div>\n\n <div class=\"checks\">\n" + + ((stack1 = helpers.each.call(alias1,((stack1 = (depth0 != null ? depth0.operation : depth0)) != null ? stack1.checks : stack1),{"name":"each","hash":{},"fn":container.program(5, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + " </div>\n <button class=\"button-add\">" + + alias4(((helper = (helper = helpers.addRuleTXT || (depth0 != null ? depth0.addRuleTXT : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"addRuleTXT","hash":{},"data":data}) : helper))) + + "</button>\n" + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasChanged : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0, blockParams, depths),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.saving : depth0),{"name":"if","hash":{},"fn":container.program(13, data, 0, blockParams, depths),"inverse":container.program(15, data, 0, blockParams, depths),"data":data})) != null ? stack1 : "") + + "\n</div>\n"; +},"useData":true,"useDepths":true}); +templates['operations'] = template({"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { + var helper; + + return "<div class=\"operations\"></div>\n<button class=\"button-add-operation\">" + + container.escapeExpression(((helper = (helper = helpers.addRuleGroupTXT || (depth0 != null ? depth0.addRuleGroupTXT : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"addRuleGroupTXT","hash":{},"data":data}) : helper))) + + "</button>\n"; +},"useData":true}); +})();
\ No newline at end of file diff --git a/apps/workflowengine/js/templates/operation.handlebars b/apps/workflowengine/js/templates/operation.handlebars new file mode 100644 index 00000000000..0899890cef2 --- /dev/null +++ b/apps/workflowengine/js/templates/operation.handlebars @@ -0,0 +1,45 @@ +<div class="operation{{#if hasChanged}} modified{{/if}}"> + <div class="operation-header"> + <input type="text" class="operation-name" placeholder="{{shortRuleDescTXT}}" value="{{operation.name}}" /> + <input type="text" class="operation-operation" value="{{operation.operation}}" /> + {{! delete only makes sense if the operation is already saved }} + {{#if operation.id}} + <span class="button-delete icon-delete"></span> + {{/if}} + </div> + + <div class="checks"> + {{#each operation.checks}} + <div class="check" data-id="{{@index}}"> + <select class="check-class"> + {{#each ../classes}} + <option value="{{class}}" {{{selectItem class ../class}}}>{{name}}</option> + {{/each}} + </select> + <select class="check-operator"> + {{#each (getOperators class)}} + <option value="{{operator}}" {{{selectItem operator ../operator}}}>{{name}}</option> + {{/each}} + </select> + <input type="text" class="check-value" value="{{value}}"> + <span class="button-delete-check icon-delete"></span> + </div> + {{/each}} + </div> + <button class="button-add">{{addRuleTXT}}</button> + {{#if hasChanged}} + {{! reset only makes sense if the operation is already saved }} + {{#if operation.id}} + <button class="button-reset pull-right">{{resetTXT}}</button> + {{/if}} + <button class="button-save pull-right">{{saveTXT}}</button> + {{/if}} + {{#if saving}} + <span class="icon-loading-small pull-right"></span> + <span class="pull-right">{{savingTXT}}</span> + {{else}}{{#if message}} + <span class="msg pull-right {{#if errorMessage}}error{{else}}success{{/if}}"> + {{message}}{{#if errorMessage}} {{errorMessage}}{{/if}} + </span> + {{/if}}{{/if}} +</div> diff --git a/apps/workflowengine/js/templates/operations.handlebars b/apps/workflowengine/js/templates/operations.handlebars new file mode 100644 index 00000000000..14b62ee79a6 --- /dev/null +++ b/apps/workflowengine/js/templates/operations.handlebars @@ -0,0 +1,2 @@ +<div class="operations"></div> +<button class="button-add-operation">{{addRuleGroupTXT}}</button> diff --git a/apps/workflowengine/lib/AppInfo/Application.php b/apps/workflowengine/lib/AppInfo/Application.php index 89d342400c2..0b90a4323e2 100644 --- a/apps/workflowengine/lib/AppInfo/Application.php +++ b/apps/workflowengine/lib/AppInfo/Application.php @@ -64,6 +64,7 @@ class Application extends \OCP\AppFramework\App { script('workflowengine', [ 'admin', + 'templates', // Check plugins 'filemimetypeplugin', diff --git a/apps/workflowengine/templates/admin.php b/apps/workflowengine/templates/admin.php index 26d581aee03..d3faace71f6 100644 --- a/apps/workflowengine/templates/admin.php +++ b/apps/workflowengine/templates/admin.php @@ -39,58 +39,5 @@ <p><?php p($_['description']); ?></p> <?php endif; ?> - <script type="text/template" id="operations-template"> - <div class="operations"></div> - <button class="button-add-operation"><?php p($l->t('Add rule group')); ?></button> - </script> - - <script type="text/template" id="operation-template"> - <div class="operation{{#if hasChanged}} modified{{/if}}"> - <div class="operation-header"> - <input type="text" class="operation-name" placeholder="<?php p($l->t('Short rule description')); ?>" value="{{operation.name}}" /> - <input type="text" class="operation-operation" value="{{operation.operation}}" /> - {{! delete only makes sense if the operation is already saved }} - {{#if operation.id}} - <span class="button-delete icon-delete"></span> - {{/if}} - </div> - - <div class="checks"> - {{#each operation.checks}} - <div class="check" data-id="{{@index}}"> - <select class="check-class"> - {{#each ../classes}} - <option value="{{class}}" {{{selectItem class ../class}}}>{{name}}</option> - {{/each}} - </select> - <select class="check-operator"> - {{#each (getOperators class)}} - <option value="{{operator}}" {{{selectItem operator ../operator}}}>{{name}}</option> - {{/each}} - </select> - <input type="text" class="check-value" value="{{value}}"> - <span class="button-delete-check icon-delete"></span> - </div> - {{/each}} - </div> - <button class="button-add"><?php p($l->t('Add rule')); ?></button> - {{#if hasChanged}} - {{! reset only makes sense if the operation is already saved }} - {{#if operation.id}} - <button class="button-reset pull-right"><?php p($l->t('Reset')); ?></button> - {{/if}} - <button class="button-save pull-right"><?php p($l->t('Save')); ?></button> - {{/if}} - {{#if saving}} - <span class="icon-loading-small pull-right"></span> - <span class="pull-right"><?php p($l->t('Saving…')); ?></span> - {{else}}{{#if message}} - <span class="msg pull-right {{#if errorMessage}}error{{else}}success{{/if}}"> - {{message}}{{#if errorMessage}} {{errorMessage}}{{/if}} - </span> - {{/if}}{{/if}} - </div> - </script> - <div class="rules"><span class="icon-loading-small"></span> <?php p($l->t('Loading…')); ?></div> </div> diff --git a/build/compile-handlebars-templates.sh b/build/compile-handlebars-templates.sh index 2f83dd3956a..1cbdbe4c832 100755 --- a/build/compile-handlebars-templates.sh +++ b/build/compile-handlebars-templates.sh @@ -25,6 +25,8 @@ handlebars -n OCA.Comments.Templates apps/comments/js/templates -f apps/comments # Versions app handlebars -n OCA.Versions.Templates apps/files_versions/js/templates -f apps/files_versions/js/templates.js +# Workflowengine +handlebars -n OCA.WorkflowEngine.Templates apps/workflowengine/js/templates -f apps/workflowengine/js/templates.js if [[ $(git diff --name-only) ]]; then echo "Please submit your compiled handlebars templates" |