summaryrefslogtreecommitdiffstats
path: root/apps/workflowengine/src/workflowengine.js
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2019-08-30 16:18:19 +0200
committerJulius Härtl <jus@bitgrid.net>2019-09-10 09:01:24 +0200
commitae55829989d84c6e3937982479bacb79576333cb (patch)
tree39f783502256b2ba5938ea2f06cfd358a13920f7 /apps/workflowengine/src/workflowengine.js
parentf36b50c5029f4540b3310a4249667a48dfdb7606 (diff)
downloadnextcloud-server-ae55829989d84c6e3937982479bacb79576333cb.tar.gz
nextcloud-server-ae55829989d84c6e3937982479bacb79576333cb.zip
Document plugins to be used by integrators
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'apps/workflowengine/src/workflowengine.js')
-rw-r--r--apps/workflowengine/src/workflowengine.js77
1 files changed, 45 insertions, 32 deletions
diff --git a/apps/workflowengine/src/workflowengine.js b/apps/workflowengine/src/workflowengine.js
index bdf30397883..6e22852b829 100644
--- a/apps/workflowengine/src/workflowengine.js
+++ b/apps/workflowengine/src/workflowengine.js
@@ -1,50 +1,63 @@
-import './legacy/filemimetypeplugin'
-import './legacy/filenameplugin'
-import './legacy/filesizeplugin'
-import './legacy/filesystemtagsplugin'
-import './legacy/requestremoteaddressplugin'
-import './legacy/requesttimeplugin'
-import './legacy/requesturlplugin'
-import './legacy/requestuseragentplugin'
-import './legacy/usergroupmembershipplugin'
-
import Vue from 'vue'
import Vuex from 'vuex'
-
import store from './store'
import Settings from './components/Workflow'
-import FileMimeType from './components/Values/FileMimeType';
+import FileValues from './components/Values/file'
+
+/**
+ * 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
+ **/
+
+/**
+ * A plugin for extending the admin page repesentation of a operator
+ *
+ * @typedef {Object} OperatorPlugin
+ * @property {string} class - 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)
}
})
-// Load legacy plugins for now and register them in the new plugin system
-Object.values(OCA.WorkflowEngine.Plugins).map((plugin) => {
- if (plugin.component) {
- return { ...plugin.getCheck(), component: plugin.component() }
- }
- return plugin.getCheck()
-}).forEach((legacyCheckPlugin) => window.OCA.WorkflowEngine.registerCheck(legacyCheckPlugin))
-
-// new way of registering checks
-window.OCA.WorkflowEngine.registerCheck({
- class: 'OCA\\WorkflowEngine\\Check\\FileMimeType',
- name: t('workflowengine', 'File MIME type'),
- operators: [
- { operator: 'is', name: t('workflowengine', 'is') },
- { operator: '!is', name: t('workflowengine', 'is not') },
- { operator: 'matches', name: t('workflowengine', 'matches') },
- { operator: '!matches', name: t('workflowengine', 'does not match') }
- ],
- component: FileMimeType
-})
+// Register shipped checks for file entity
+FileValues.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))
Vue.use(Vuex)
Vue.prototype.t = t