/** * Created by robin on 11/4/15. */ angular.module('luticateUtils') .directive('luPermissionEdit', ['dialogs', 'luticateDialogErrorHelper', 'luticateAuthPermissions', 'luticateAuthCache', function(dialogs, luticateDialogErrorHelper, luticateAuthPermissions, luticateAuthCache) { return { restrict: 'E', scope: { luModel: '&' }, templateUrl: "/luticate/lupermissionedit.html", link: function ($scope, element, attrs) { $scope.permissions = []; $scope.allPermissions = []; $scope.allPermissionsCleared = []; $scope.tmpPermission = { Name: "", Value: true }; $scope.luModelOptions = $scope.luModel(); $scope.editPermission = function(permission, value) { var promiseEditPermission = { id: "promiseEditPermission_" + permission.Name, loaderGroups: ['permission_' + permission.Name] }; $scope.luModelOptions.getEditPermissionPromise(permission.Name, value, promiseEditPermission) .then(function(data) { permission.Value = value; }, luticateDialogErrorHelper.errorDialog); }; $scope.delPermission = function(permission) { var promiseDelPermission = { id: "promiseDelPermission_" + permission.Name, loaderGroups: ['permission_' + permission.Name] }; $scope.luModelOptions.getDelPermissionPromise(permission.Name, promiseDelPermission) .then(function(data) { $scope.loadPermissions(); }, luticateDialogErrorHelper.errorDialog); }; $scope.addPermission = function(permission) { var promiseAddPermission = { id: "promiseAddPermission_" + permission.Name, loaderGroups: ['permission_add'] }; $scope.luModelOptions.getAddPermissionPromise(permission.Name, permission.Value, promiseAddPermission) .then(function(data) { $scope.loadPermissions(); }, luticateDialogErrorHelper.errorDialog); }; $scope.loadPermissions = function() { var promiseLoadPermissions = { id: "promiseLoadPermissions_", groups: ['permissionList'] }; $scope.luModelOptions.getGetAllPromise(null, null, promiseLoadPermissions) .then(function (permissions) { $scope.permissions = permissions.Data; $scope.allPermissionsCleared = []; for (var i = 0; i < $scope.allPermissions.length; ++i) { var p = $scope.allPermissions[i]; if ($scope.permissions.find(function(p2) { return p.Name == p2.Name; }) == null) { $scope.allPermissionsCleared.push(p); } } if ($scope.allPermissionsCleared.length > 0) { $scope.tmpPermission.Name = $scope.allPermissionsCleared[0].Name; } else { $scope.tmpPermission.Name = ""; } }, luticateDialogErrorHelper.errorDialog); }; $scope.loadAllPermissions = function() { var promiseLoadAllPermissions = { id: "promiseLoadAllPermissions", groups: ['permissionList'] }; luticateAuthPermissions.getAll(null, promiseLoadAllPermissions) .then(function (permissions) { $scope.allPermissions = permissions.Data; $scope.loadPermissions(); }, luticateDialogErrorHelper.errorDialog); }; if (luticateAuthCache.hasEffectivePermission('LU_PERM_GET')) { $scope.loadAllPermissions(); } else { $scope.loadPermissions(); } } }; }]); angular.module('luticateUtils').run(['$templateCache', function($templateCache) { $templateCache.put('/luticate/lupermissionedit.html', '
' + '
' + '
' + ' ' + '
' + '
' + ' ' + ' ' + '
' + '
' + ' ' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + ' ' + ' ' + '
' + '
' + ' ' + ' ' + '
' + '' + '
' + '
'); }]);