partial user administration

This commit is contained in:
Athou
2013-03-30 09:22:49 +01:00
parent a66e2dff4d
commit 5cafcdf2d8
13 changed files with 296 additions and 32 deletions

View File

@@ -140,7 +140,8 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
}, function(data) {
for ( var i = 0; i < data.entries.length; i++) {
$scope.entries.push(data.entries[i]);
};
}
;
$scope.name = data.name;
$scope.busy = false;
$scope.hasMore = data.entries.length == limit
@@ -249,9 +250,46 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
});
});
module.controller('ManageUsersCtrl', function($scope, AdminUsersService) {
$scope.users = AdminUsersService.get();
$scope.gridOptions = {
data : 'users'
module.controller('ManageUsersCtrl',
function($scope, $state, AdminUsersService) {
$scope.users = AdminUsersService.getAll();
$scope.selection = [];
$scope.gridOptions = {
data : 'users',
selectedItems : $scope.selection,
multiSelect : false,
afterSelectionChange : function(item) {
$state.transitionTo('admin.useredit', {
_id : item.entity.id
});
}
};
$scope.addUser = function() {
$state.transitionTo('admin.useradd');
};
});
module.controller('ManageUserCtrl', function($scope, $state, $stateParams,
AdminUsersService) {
$scope.user = $stateParams._id ? AdminUsersService.get({
id : $stateParams._id
}) : {};
$scope.alerts = [];
$scope.closeAlert = function(index) {
$scope.alerts.splice(index, 1);
};
$scope.cancel = function(){
$state.transitionTo('admin.userlist');
}
$scope.save = function() {
AdminUsersService.save($scope.user, function() {
$state.transitionTo('admin.userlist');
}, function(data) {
$scope.alerts.push({
msg : data.data
});
});
};
});

View File

@@ -10,7 +10,8 @@ app.config(function($routeProvider, $stateProvider, $urlRouterProvider) {
});
$stateProvider.state('feeds.view', {
url : '/view/:_type/:_id',
templateUrl : 'templates/feeds.view.html'
templateUrl : 'templates/feeds.view.html',
controller : 'FeedListCtrl'
});
$stateProvider.state('admin', {
@@ -18,13 +19,24 @@ app.config(function($routeProvider, $stateProvider, $urlRouterProvider) {
url : '/admin',
templateUrl : 'templates/admin.html'
});
$stateProvider.state('admin.users', {
url : '/users',
templateUrl : 'templates/admin.users.html'
$stateProvider.state('admin.userlist', {
url : '/user/list',
templateUrl : 'templates/admin.userlist.html',
controller : 'ManageUsersCtrl'
});
$stateProvider.state('admin.useradd', {
url : '/user/add',
templateUrl : 'templates/admin.useradd.html',
controller : 'ManageUserCtrl'
});
$stateProvider.state('admin.useredit', {
url : '/user/edit/:_id',
templateUrl : 'templates/admin.useredit.html',
controller : 'ManageUserCtrl'
});
$urlRouterProvider.when('/', '/feeds/view/category/all');
$urlRouterProvider.when('/admin', '/admin/users');
$urlRouterProvider.when('/admin', '/admin/user/list');
$urlRouterProvider.otherwise('/');
});

View File

@@ -134,8 +134,20 @@ module.factory('AdminUsersService', function($resource) {
method : 'GET',
params : {
_method : 'get'
}
},
getAll : {
method : 'GET',
params : {
_method : 'getAll'
},
isArray: true
isArray : true
},
save : {
method : 'POST',
params : {
_method : 'save'
}
}
};
var res = $resource('rest/admin/users/:_method', {}, actions);

View File

@@ -0,0 +1,45 @@
<div class="row">
<div class="page-header">
<h1>Add user</h1>
</div>
<alert ng-repeat="alert in alerts" type="alert.type"
close="closeAlert($index)">{{alert.msg}}</alert>
<form name="userAddForm" class="form-horizontal" ng-submit="save()">
<div class="control-group"
ng-class="{error : !userAddForm.name.$valid}">
<label class="control-label" for="name">User name</label>
<div class="controls">
<input type="text" id="name" name="name" ng-model="user.name"
required />
</div>
</div>
<div class="control-group"
ng-class="{error : !userAddForm.password.$valid}">
<label class="control-label" for="password">Password</label>
<div class="controls">
<input type="password" id="password" name="password"
ng-model="user.password" required />
</div>
</div>
<div class="control-group">
<label class="control-label" for="admin">Admin</label>
<div class="controls">
<input type="checkbox" name="admin" ng-model="user.admin" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="enabled">Enabled</label>
<div class="controls">
<input type="checkbox" name="enabled" ng-model="user.enabled" />
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="button" class="btn" ng-click="cancel()">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
</form>
</div>

View File

@@ -0,0 +1,46 @@
<div class="row">
<div class="page-header">
<h1>Edit user</h1>
</div>
<alert ng-repeat="alert in alerts" type="alert.type"
close="closeAlert($index)">{{alert.msg}}</alert>
<form name="userAddForm" class="form-horizontal" ng-submit="save()">
<div class="control-group"
ng-class="{error : !userAddForm.name.$valid}">
<label class="control-label" for="name">User name</label>
<div class="controls">
<input type="text" id="name" name="name" ng-model="user.name"
required />
</div>
</div>
<div class="control-group"
ng-class="{error : !userAddForm.password.$valid}">
<label class="control-label" for="password">Password</label>
<div class="controls">
<input type="password" id="password" name="password"
ng-model="user.password" />
<span class="help-block">Leave blank if you don't want to change the password.</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="admin">Admin</label>
<div class="controls">
<input type="checkbox" name="admin" ng-model="user.admin" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="enabled">Enabled</label>
<div class="controls">
<input type="checkbox" name="enabled" ng-model="user.enabled" />
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="button" class="btn" ng-click="cancel()">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
</form>
</div>

View File

@@ -3,7 +3,10 @@
<h1>Manage users</h1>
</div>
<div ng-controller="ManageUsersCtrl">
<div>
<div class="button-bar">
<button class="btn" ng-click="addUser()">Add user</button>
</div>
<div class="users-table" ng-grid="gridOptions"></div>
</div>
</div>

View File

@@ -1,4 +1,4 @@
<div ng-controller="FeedListCtrl">
<div>
<div class="entrylist-header" ui-if="name">
<h3><span>{{name}}&nbsp;</span><span ng-show="name && selectedType == 'category'"> &#187;</span></h3>