Improve Administration module

This commit is contained in:
Francis Lachapelle
2015-10-09 16:10:39 -04:00
parent b63ee6998d
commit 7ddf7be705
10 changed files with 299 additions and 185 deletions
@@ -42,6 +42,7 @@
}
},
resolve: {
stateUser: stateUser,
stateFolder: stateFolder
}
});
@@ -49,39 +50,75 @@
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/rights');
}
stateFolder.$inject = ['$stateParams', 'User', 'AddressBook', 'Calendar'];
function stateFolder($stateParams, User, AddressBook, Calendar) {
var user = _.find(User.$users, function(user) {
/**
* @ngInject
*/
stateUser.$inject = ['$q', '$stateParams', 'User'];
function stateUser($q, $stateParams, User) {
var user;
user = _.find(User.$users, function(user) {
return user.uid == $stateParams.userId;
});
var folder = _.find(user.$$folders, function(folder) {
return folder.name == $stateParams.folderId;
});
if (angular.isUndefined(user)) {
return User.$filter($stateParams.userId).then(function(users) {
user = _.find(User.$users, function(user) {
return user.uid == $stateParams.userId;
});
if (angular.isUndefined(user)) {
return $q.reject('User with ID ' + $stateParams.userId + ' not found');
}
else {
// Resolve folders
return user.$folders().then(function() {
return user;
});
}
return user;
});
}
var o;
return user;
}
/**
* @ngInject
*/
stateFolder.$inject = ['$state', '$stateParams', 'decodeUriFilter', 'stateUser', 'AddressBook', 'Calendar'];
function stateFolder($state, $stateParams, decodeUriFilter, stateUser, AddressBook, Calendar) {
var folder, o,
folderId = decodeUriFilter($stateParams.folderId);
folder = _.find(stateUser.$$folders, function(folder) {
return folder.name == folderId;
});
if (folder.type == "Appointment") {
o = new Calendar({id: folder.name.split('/').pop(),
owner: folder.owner,
name: folder.displayName});
o = new Calendar({ id: folder.name.split('/').pop(),
owner: folder.owner,
name: folder.displayName });
} else {
o = new AddressBook({id: folder.name.split('/').pop(),
owner: folder.owner,
name: folder.displayName});
o = new AddressBook({ id: folder.name.split('/').pop(),
owner: folder.owner,
name: folder.displayName });
}
return o;
}
/**
* @ngInject
*/
runBlock.$inject = ['$rootScope'];
function runBlock($rootScope) {
runBlock.$inject = ['$log', '$rootScope', '$state'];
function runBlock($log, $rootScope, $state) {
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
$log.error(error);
$state.go('administration.rights');
});
$rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {
console.error(event, current, previous, rejection);
$log.error(event, current, previous, rejection);
});
}
@@ -7,13 +7,18 @@
/**
* @ngInject
*/
AdministrationAclController.$inject = ['$state', '$mdToast', 'stateFolder', 'User'];
function AdministrationAclController($state, $mdToast, stateFolder, User) {
AdministrationAclController.$inject = ['$animate', '$state', '$mdToast', 'stateUser', 'stateFolder', 'User'];
function AdministrationAclController($animate, $state, $mdToast, stateUser, stateFolder, User) {
var vm = this;
vm.user = stateUser;
vm.folder = stateFolder;
vm.folderType = angular.isDefined(stateFolder.$cards)? 'AddressBook' : 'Calendar';
vm.selectedUser = null;
vm.getTemplate = getTemplate;
vm.selectedUid = null;
vm.selectUser = selectUser;
vm.removeUser = removeUser;
vm.getTemplate = getTemplate;
vm.save = save;
vm.userToAdd = '';
@@ -33,19 +38,26 @@
}
function selectUser(user) {
if (vm.selectedUser == user) {
vm.selectedUser = null;
if (vm.selectedUid == user.uid) {
vm.selectedUid = null;
}
else {
vm.selectedUid = user.uid;
vm.selectedUser = user;
vm.selectedUser.$rights();
}
}
function userFilter($query) {
return User.$filter($query, stateFolder.$acl.users);
return User.$filter($query, stateFolder.$acl.users, { dry: true });
}
function removeUser(user) {
stateFolder.$acl.$removeUser(user.uid).catch(function(data, status) {
Dialog.alert(l('Warning'), l('An error occured please try again.'));
});
}
function addUser(data) {
if (data) {
stateFolder.$acl.$addUser(data, stateFolder.owner).then(function() {
@@ -69,7 +81,6 @@
Dialog.alert(l('Warning'), l('An error occured please try again.'));
});
}
}
angular
@@ -7,8 +7,8 @@
/**
* @ngInject
*/
AdministrationController.$inject = ['$state', '$mdDialog', '$mdToast', 'Dialog', 'User', 'Administration'];
function AdministrationController($state, $mdDialog, $mdToast, Dialog, User, Administration) {
AdministrationController.$inject = ['$state', '$mdDialog', '$mdToast', 'Dialog', 'encodeUriFilter', 'User', 'Administration'];
function AdministrationController($state, $mdDialog, $mdToast, Dialog, encodeUriFilter, User, Administration) {
var vm = this;
vm.administration = Administration;
@@ -26,8 +26,7 @@
}
function filter(searchText) {
User.$filter(searchText).then(function() {
});
User.$filter(searchText);
}
function selectUser(i) {
@@ -43,7 +42,7 @@
}
function selectFolder(folder) {
$state.go('administration.rights.edit', {userId: vm.selectedUser.uid, folderId: folder.name});
$state.go('administration.rights.edit', {userId: vm.selectedUser.uid, folderId: encodeUriFilter(folder.name)});
}
}