summaryrefslogtreecommitdiffstats
path: root/apps/workflowengine/src/workflowengine.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/workflowengine/src/workflowengine.js')
-rw-r--r--apps/workflowengine/src/workflowengine.js82
1 files changed, 70 insertions, 12 deletions
diff --git a/apps/workflowengine/src/workflowengine.js b/apps/workflowengine/src/workflowengine.js
index 207d2311bcc..2eb8161fc87 100644
--- a/apps/workflowengine/src/workflowengine.js
+++ b/apps/workflowengine/src/workflowengine.js
@@ -1,12 +1,70 @@
-import './admin'
-import './filemimetypeplugin'
-import './filenameplugin'
-import './filesizeplugin'
-import './filesystemtagsplugin'
-import './requestremoteaddressplugin'
-import './requesttimeplugin'
-import './requesturlplugin'
-import './requestuseragentplugin'
-import './usergroupmembershipplugin'
-
-window.OCA.WorkflowEngine = OCA.WorkflowEngine
+import Vue from 'vue'
+import Vuex from 'vuex'
+import store from './store'
+import Settings from './components/Workflow'
+import ShippedChecks from './components/Checks'
+
+/**
+ * A plugin for displaying a custom value field for checks
+ *
+ * @typedef {Object} CheckPlugin
+ * @property {string} class - The PHP class name of the check
+ * @property {Comparison[]} operators - A list of possible comparison operations running on the check
+ * @property {Vue} component - A vue component to handle the rendering of options
+ * The component should handle the v-model directive properly,
+ * so it needs a value property to receive data and emit an input
+ * event once the data has changed
+ * @property {callable} placeholder - Return a placeholder of no custom component is used
+ * @property {callable} validate - validate a check if no custom component is used
+ **/
+
+/**
+ * A plugin for extending the admin page repesentation of a operator
+ *
+ * @typedef {Object} OperatorPlugin
+ * @property {string} id - The PHP class name of the check
+ * @property {string} operation - Default value for the operation field
+ * @property {string} color - Custom color code to be applied for the operator selector
+ * @property {Vue} component - A vue component to handle the rendering of options
+ * The component should handle the v-model directive properly,
+ * so it needs a value property to receive data and emit an input
+ * event once the data has changed
+ */
+
+/**
+ * @typedef {Object} Comparison
+ * @property {string} operator - value the comparison should have, e.g. !less, greater
+ * @property {string} name - Translated readable text, e.g. less or equals
+ **/
+
+/**
+ * Public javascript api for apps to register custom plugins
+ */
+window.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {
+
+ /**
+ *
+ * @param {CheckPlugin} Plugin
+ */
+ registerCheck: function (Plugin) {
+ store.commit('addPluginCheck', Plugin)
+ },
+ /**
+ *
+ * @param {OperatorPlugin} Plugin
+ */
+ registerOperator: function (Plugin) {
+ store.commit('addPluginOperator', Plugin)
+ }
+})
+
+// Register shipped checks
+ShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))
+
+Vue.use(Vuex)
+Vue.prototype.t = t
+
+const View = Vue.extend(Settings)
+new View({
+ store
+}).$mount('#workflowengine')