OpenSlides/openslides/users/static/js/user/user.js
2015-02-05 23:06:09 +01:00

92 lines
2.7 KiB
JavaScript

angular.module('OpenSlidesApp.user', [])
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/user', {
templateUrl: 'static/templates/user/user-list.html',
controller: 'UserListCtrl',
resolve: {
users: function(User) {
return User.findAll();
}
}
})
.when('/user/new', {
templateUrl: 'static/templates/user/user-form.html',
controller: 'UserCreateCtrl'
})
.when('/user/:id', {
templateUrl: 'static/templates/user/user-detail.html',
controller: 'UserDetailCtrl',
resolve: {
user: function(User, $route) {
return User.find($route.current.params.id);
}
}
})
.when('/user/:id/edit', {
templateUrl: 'static/templates/user/user-form.html',
controller: 'UserUpdateCtrl',
resolve: {
user: function(User, $route) {
return User.find($route.current.params.id);
}
}
});
}])
.factory('User', function(DS) {
return DS.defineResource({
name: 'users/user',
endpoint: '/rest/users/user/',
methods: {
get_short_name: function() {
// should be the same as in the python user model.
var firstName = _.trim(this.first_name),
lastName = _.trim(this.last_name),
name;
if (firstName && lastName) {
// TODO: check config
name = [firstName, lastName].join(' ');
} else {
name = firstName || lastName || this.username;
}
return name;
},
}
});
})
.factory('Group', function(DS) {
// TODO: the rest api for group does not exist at the moment
return DS.defineResource({
name: 'users/group',
endpoint: '/rest/users/group/'
});
})
.controller('UserListCtrl', function($scope, User, i18n) {
User.bindAll($scope, 'users');
})
.controller('UserDetailCtrl', function($scope, $routeParams, User) {
User.bindOne($scope, 'user', $routeParams.id);
})
.controller('UserCreateCtrl', function($scope, User) {
$scope.user = {};
$scope.save = function (user) {
User.create(user);
// TODO: redirect to list-view
};
})
.controller('UserUpdateCtrl', function($scope, $routeParams, User, user) {
$scope.user = user; // do not use Agenda.binOne(...) so autoupdate is not activated
$scope.save = function (user) {
User.save(user);
// TODO: redirect to list-view
};
});