diff --git a/docs-web/src/main/webapp/src/app/docs/app.js b/docs-web/src/main/webapp/src/app/docs/app.js index ed6c0cf7..bf4c8ebb 100644 --- a/docs-web/src/main/webapp/src/app/docs/app.js +++ b/docs-web/src/main/webapp/src/app/docs/app.js @@ -155,6 +155,33 @@ angular.module('docs', } } }) + .state('settings.workflow', { + url: '/workflow', + views: { + 'settings': { + templateUrl: 'partial/docs/settings.workflow.html', + controller: 'SettingsWorkflow' + } + } + }) + .state('settings.workflow.edit', { + url: '/edit/:id', + views: { + 'workflow': { + templateUrl: 'partial/docs/settings.workflow.edit.html', + controller: 'SettingsWorkflowEdit' + } + } + }) + .state('settings.workflow.add', { + url: '/add', + views: { + 'workflow': { + templateUrl: 'partial/docs/settings.workflow.edit.html', + controller: 'SettingsWorkflowEdit' + } + } + }) .state('settings.group', { url: '/group', views: { diff --git a/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsWorkflow.js b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsWorkflow.js new file mode 100644 index 00000000..f8d0e08c --- /dev/null +++ b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsWorkflow.js @@ -0,0 +1,27 @@ +'use strict'; + +/** + * Settings workflow page controller. + */ +angular.module('docs').controller('SettingsWorkflow', function($scope, $state, Restangular) { + /** + * Load workflows from server. + */ + $scope.loadWorkflows = function() { + Restangular.one('routemodel').get({ + sort_column: 1, + asc: true + }).then(function(data) { + $scope.workflows = data.workflows; + }); + }; + + $scope.loadWorkflows(); + + /** + * Edit a user. + */ + $scope.editWorkflow = function(user) { + $state.go('settings.workflow.edit', { id: user.id }); + }; +}); \ No newline at end of file diff --git a/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsWorkflowEdit.js b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsWorkflowEdit.js new file mode 100644 index 00000000..c4d40397 --- /dev/null +++ b/docs-web/src/main/webapp/src/app/docs/controller/settings/SettingsWorkflowEdit.js @@ -0,0 +1,68 @@ +'use strict'; + +/** + * Settings workflow edition page controller. + */ +angular.module('docs').controller('SettingsWorkflowEdit', function($scope, $dialog, $state, $stateParams, Restangular, $translate) { + /** + * Returns true if in edit mode (false in add mode). + */ + $scope.isEdit = function () { + return $stateParams.id; + }; + + /** + * In edit mode, load the current workflow. + */ + if ($scope.isEdit()) { + Restangular.one('routemodel', $stateParams.id).get().then(function (data) { + $scope.workflow = data; + }); + } + + /** + * Update the current workflow. + */ + $scope.edit = function () { + var promise = null; + var workflow = angular.copy($scope.workflow); + + if ($scope.isEdit()) { + promise = Restangular + .one('routemodel', $stateParams.id) + .post('', workflow); + } else { + promise = Restangular + .one('routemodel') + .put(workflow); + } + + promise.then(function () { + $scope.loadWorkflows(); + $state.go('settings.workflow'); + }); + }; + + /** + * Delete the current workflow. + */ + $scope.remove = function () { + var title = $translate.instant('settings.workflow.edit.delete_workflow_title'); + var msg = $translate.instant('settings.workflow.edit.delete_workflow_message'); + var btns = [ + { result:'cancel', label: $translate.instant('cancel') }, + { result:'ok', label: $translate.instant('ok'), cssClass: 'btn-primary' } + ]; + + $dialog.messageBox(title, msg, btns, function (result) { + if (result === 'ok') { + Restangular.one('routemodel', $stateParams.id).remove().then(function () { + $scope.loadWorkflows(); + $state.go('settings.workflow'); + }, function() { + $state.go('settings.workflow'); + }); + } + }); + }; +}); \ No newline at end of file diff --git a/docs-web/src/main/webapp/src/index.html b/docs-web/src/main/webapp/src/index.html index e7a644ad..f7d2d9f6 100644 --- a/docs-web/src/main/webapp/src/index.html +++ b/docs-web/src/main/webapp/src/index.html @@ -74,6 +74,8 @@ + + diff --git a/docs-web/src/main/webapp/src/locale/en.json b/docs-web/src/main/webapp/src/locale/en.json index dec14c91..c4db55cb 100644 --- a/docs-web/src/main/webapp/src/locale/en.json +++ b/docs-web/src/main/webapp/src/locale/en.json @@ -224,6 +224,7 @@ "menu_two_factor_auth": "Two-factor authentication", "menu_opened_sessions": "Opened sessions", "menu_general_settings": "General settings", + "menu_workflow": "Workflow", "menu_users": "Users", "menu_groups": "Groups", "menu_vocabularies": "Vocabularies", @@ -255,6 +256,19 @@ "password_lost_sent_message": "A password reset email has been sent to {{ username }}" } }, + "workflow": { + "title": "Workflow configuration", + "add_workflow": "Add a workflow", + "name": "Name", + "create_date": "Create date", + "edit": { + "delete_workflow_title": "Delete workflow", + "delete_workflow_message": "Do you really want to delete this workflow? Currently running workflows will not be deleted", + "edit_workflow_title": "Edit \"{{ name }}\"", + "add_workflow_title": "Add a workflow", + "name": "Name" + } + }, "security": { "enable_totp": "Enable two-factor authentication", "enable_totp_message": "Make sure you have a TOTP-compatible application on your phone ready to add a new account", diff --git a/docs-web/src/main/webapp/src/partial/docs/settings.html b/docs-web/src/main/webapp/src/partial/docs/settings.html index b0f8abe3..59864b9e 100644 --- a/docs-web/src/main/webapp/src/partial/docs/settings.html +++ b/docs-web/src/main/webapp/src/partial/docs/settings.html @@ -12,6 +12,7 @@
{{ 'settings.menu_general_settings' | translate }}