From 7f5a20aa40c00fea42c68211f311b6b24ad64c9e Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 27 Oct 2014 18:17:26 +0000
Subject: [PATCH] #2021 feature - Added frontend validations and confirmations on sensitive actions.
---
securis/src/main/resources/static/js/licenses.js | 143 +++++++++++++++++++++++++++++++++++++++--------
1 files changed, 119 insertions(+), 24 deletions(-)
diff --git a/securis/src/main/resources/static/js/licenses.js b/securis/src/main/resources/static/js/licenses.js
index 7617858..6dfe849 100644
--- a/securis/src/main/resources/static/js/licenses.js
+++ b/securis/src/main/resources/static/js/licenses.js
@@ -159,6 +159,53 @@
return LIC_STATUSES[status];
}
+ var _createSuccessCallback = function(actionName, message, _innerCallback) {
+ return function() {
+ _innerCallback && _innerCallback();
+ toaster.pop('success', actionName, message);
+ }
+ }
+ var _createErrorCallback = function(pack, actionName, _innerCallback) {
+ return function(error) {
+ console.log(error);
+ _innerCallback && _innerCallback();
+ toaster.pop('error', actionName, $L.get("Error on action '{0}', pack '{1}'. Reason: {2}", actionName, pack.code, $L.get(error.headers('X-SECURIS-ERROR'))));
+ }
+ }
+ this.getPacksList = function(pack, _onsuccess, _onerror) {
+ return packResource.query(_onsuccess, _onerror);
+ }
+ this.activate = function(license, _onsuccess, _onerror) {
+ console.log('Activation on license: ' + license.id);
+ var _success = _createSuccessCallback($L.get('Activation'), $L.get("License '{0}' {1} successfully", license.code, $L.get("activated")), _onsuccess);
+ var _error = _createErrorCallback(license, $L.get('Activation'), _onerror);
+ licenseResource.activate({id: license.id}, _success, _error);
+ }
+ this.block = function(license, _onsuccess, _onerror) {
+ console.log('Block on license: ' + license.id);
+ var _success = _createSuccessCallback($L.get('Block'), $L.get("License '{0}' {1} successfully", license.code, $L.get("blocked")), _onsuccess);
+ var _error = _createErrorCallback(license, $L.get('Block'), _onerror);
+ licenseResource.putonhold({id: license.id}, _success, _error);
+ }
+ this.unblock = function(license, _onsuccess, _onerror) {
+ console.log('Unblock on license: ' + license.id);
+ var _success = _createSuccessCallback($L.get('Unblock'), $L.get("License '{0}' {1} successfully", license.code, $L.get("unblocked")), _onsuccess);
+ var _error = _createErrorCallback(license, $L.get('Unblock'), _onerror);
+ licenseResource.putonhold({id: license.id}, _success, _error);
+ }
+ this.cancel = function(license, extra_data, _onsuccess, _onerror) {
+ console.log('Cancellation on license: ' + license.id);
+ var _success = _createSuccessCallback($L.get('Cancellation'), $L.get("License '{0}' {1} successfully", license.code, $L.get("cancelled")), _onsuccess);
+ var _error = _createErrorCallback(license, $L.get('Cancellation'), _onerror);
+ var params = angular.extend({id: license.id}, extra_data);
+ licenseResource.cancel(params, _success, _error);
+ }
+ this.delete = function(license, _onsuccess, _onerror) {
+ console.log('Delete on license: ' + license.id);
+ var _success = _createSuccessCallback($L.get('Deletion'), $L.get("License '{0}' {1} successfully", license.code, $L.get("deleted")), _onsuccess);
+ var _error = _createErrorCallback(license, $L.get('Deletion'), _onerror);
+ licenseResource.delete({licenseId: license.id}, _success, _error);
+ }
}]);
app.directive('fileLoader',
@@ -217,6 +264,9 @@
$scope.mandatoryFieldErrorMsg = function(displayname) {
return $L.get("'{0}' is required.", $L.get(displayname));
}
+ $scope.field1ShouldBeGreaterThanField2 = function(field1, field2) {
+ return $L.get("{0} should be greater than {1}", $L.get(field1), $L.get(field2));
+ }
$scope.ellipsis = function(txt, len) {
if (!txt || txt.length <= len) return txt;
return txt.substring(0, len) + '...';
@@ -269,36 +319,79 @@
$scope.packs = Packs.getPacksList();
$scope.save = function() {
- if ($scope.pack.num_activations > 0) {
- BootstrapDialog.confirm($L.get("The pack '{0}' has active licenses, Do you want to modify it ?", $scope.pack.code), function(answer){
- if (answer) {
- Packs.savePackData($scope.pack, $scope.isNew, function() {
- if (!$scope.isNew) $scope.showForm = false;
- $scope.packs = Packs.getPacksList();
- });
- }
- });
- } else {
- Packs.savePackData($scope.pack, $scope.isNew, function() {
- if (!$scope.isNew) {
- $scope.showForm = false;
- } else {
- $scope.newPack();
- }
- $scope.packs = Packs.getPacksList();
- });
- }
+ Packs.savePackData($scope.pack, $scope.isNew, function() {
+ if (!$scope.isNew) {
+ $scope.showForm = false;
+ } else {
+ $scope.newPack();
+ }
+ $scope.packs = Packs.getPacksList();
+ });
}
/**
* Execute an action over the pack, activation, onhold, cancellation
*/
$scope.execute = function(action, pack) {
-
- Packs[action](pack || $scope.pack, function() {
- if (!$scope.isNew) $scope.showForm = false;
- $scope.packs = Packs.getPacksList();
- });
+ var _execute = function(extra_data) {
+ Packs[action](pack || $scope.pack, extra_data, function() {
+ if (!$scope.isNew) $scope.showForm = false;
+ $scope.packs = Packs.getPacksList();
+ });
+ }
+ if (action === 'delete') {
+ BootstrapDialog.confirm($L.get("The pack '{0}' will be deleted, are you sure ?", $scope.pack.code), function(answer) {
+ if (answer) {
+ _execute();
+ }
+ });
+ } else {
+ if (action === 'cancel') {
+ BootstrapDialog.show({
+ title: $L.get("Pack cancellation"),
+ type: BootstrapDialog.TYPE_DANGER,
+ message: function(dialog) {
+ var $content = $('<div></div>');
+ var $message = $('<div></div>');
+ var pageToLoad = dialog.getData('pageToLoad');
+ $message.append($('<label/>').text($L.get("The pack '{0}' and all its licenses will be cancelled, this action cannot be undone", $scope.pack.code)));
+ $content.append($message);
+
+ var $message = $('<div style="margin-top:10pt;"/>');
+ var pageToLoad = dialog.getData('pageToLoad');
+ $message.append($('<label style="margin-right:5pt;"/>').text($L.get("Cancellation reason:") + " "));
+ $message.append($('<input type="text" style="width:100%;" maxlength="512" id="_cancellation_reason"/>'));
+ $content.append($message);
+ return $content;
+ },
+ closable: true,
+ buttons: [{
+ id: 'btn-cancel',
+ label: $L.get('Close'),
+ cssClass: 'btn-default',
+ action: function(dialogRef) {
+ dialogRef.close();
+ }
+ }, {
+ id: 'btn-ok',
+ label: $L.get('Cancel pack'),
+ cssClass: 'btn-primary',
+ action: function(dialogRef){
+ var reason = $('#_cancellation_reason').val();
+ console.log('Ready to cancel pack, by reason: ' + reason);
+ if (!reason) {
+ $('#_cancellation_reason').focus();
+ } else {
+ _execute({reason: reason});
+ dialogRef.close();
+ }
+ }
+ }]
+ });
+ } else {
+ _execute();
+ }
+ }
}
@@ -309,6 +402,8 @@
license_preactivation: true,
status: 'CR',
num_licenses: 1,
+ init_valid_date: new Date(),
+ default_valid_period: 30,
license_type_id: null,
organization_id: null //!$scope.refs.organization_id || !$scope.refs.organization_id.length ? null : $scope.refs.organization_id[0].id
}
--
Gitblit v1.3.2