Move project group admin and streamline list page
The options to add, edit and delete project groups used to be hidden away on the admin submenu. This was unintuitive because the other pages (stories and projects) did not work this way. Moreover, the admin detail page had no simple option to view a project group's projects and stories at the same time, while the non-admin list page did not show a group's projects. This patch simplifies things: there is now one Project Groups list page, which links to a detail page, both of which have edit options for admin. Change-Id: Id9ccb22b54158b03a50fb50fb609880e0c58c1d6
This commit is contained in:
parent
ec0f5651cd
commit
653046c29d
|
@ -58,26 +58,6 @@ angular.module('sb.admin', [ 'sb.services', 'sb.templates', 'sb.util',
|
|||
}
|
||||
}
|
||||
})
|
||||
.state('sb.admin.project_group', {
|
||||
url: '/project_group',
|
||||
templateUrl: 'app/admin/template/project_group.html',
|
||||
controller: 'ProjectGroupAdminController'
|
||||
})
|
||||
.state('sb.admin.project_group_edit', {
|
||||
url: '/project_group/:id',
|
||||
templateUrl: 'app/admin/template/project_group_edit.html',
|
||||
controller: 'ProjectGroupEditController',
|
||||
resolve: {
|
||||
projectGroup: function ($stateParams, ProjectGroup) {
|
||||
return ProjectGroup.get({id: $stateParams.id}).$promise;
|
||||
},
|
||||
projects: function ($stateParams, ProjectGroupItem) {
|
||||
return ProjectGroupItem.browse(
|
||||
{projectGroupId: $stateParams.id}
|
||||
).$promise;
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('sb.admin.team', {
|
||||
url: '/team',
|
||||
templateUrl: 'app/admin/template/team.html'
|
||||
|
|
|
@ -24,9 +24,4 @@
|
|||
<i class="fa fa-sb-team fa-lg"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li active-path="^\/admin/project_group.*">
|
||||
<a href="#!/admin/project_group" title="Project Groups">
|
||||
<i class="fa fa-sb-project-group fa-lg"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
/**
|
||||
* Administration controller for project groups.
|
||||
*/
|
||||
angular.module('sb.admin').controller('ProjectGroupAdminController',
|
||||
function ($scope, $modal, ProjectGroup, Preference) {
|
||||
angular.module('sb.project_group').controller('ProjectGroupAdminController',
|
||||
function ($scope, $modal, ProjectGroup, Preference, isSuperuser) {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
|
@ -28,6 +28,8 @@ angular.module('sb.admin').controller('ProjectGroupAdminController',
|
|||
*/
|
||||
$scope.projectGroups = [];
|
||||
|
||||
$scope.is_superuser = isSuperuser;
|
||||
|
||||
/**
|
||||
* The search filter query string.
|
||||
*
|
||||
|
@ -41,7 +43,7 @@ angular.module('sb.admin').controller('ProjectGroupAdminController',
|
|||
$scope.addProjectGroup = function () {
|
||||
$scope.modalInstance = $modal.open(
|
||||
{
|
||||
templateUrl: 'app/admin/template/project_group_new.html',
|
||||
templateUrl: 'app/project_group/template/new.html',
|
||||
controller: 'ProjectGroupNewController'
|
||||
});
|
||||
|
||||
|
@ -58,7 +60,7 @@ angular.module('sb.admin').controller('ProjectGroupAdminController',
|
|||
*/
|
||||
$scope.deleteProjectGroup = function (projectGroup) {
|
||||
var modalInstance = $modal.open({
|
||||
templateUrl: 'app/admin/template/project_group_delete.html',
|
||||
templateUrl: 'app/project_group/template/delete.html',
|
||||
controller: 'ProjectGroupDeleteController',
|
||||
resolve: {
|
||||
projectGroup: function () {
|
|
@ -17,7 +17,7 @@
|
|||
/**
|
||||
* Controller for the project group delete modal popup.
|
||||
*/
|
||||
angular.module('sb.admin').controller('ProjectGroupDeleteController',
|
||||
angular.module('sb.project_group').controller('ProjectGroupDeleteController',
|
||||
function ($scope, projectGroup, $modalInstance) {
|
||||
'use strict';
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
/**
|
||||
* New Project Group edit controller.
|
||||
*/
|
||||
angular.module('sb.admin').controller('ProjectGroupEditController',
|
||||
angular.module('sb.project_group').controller('ProjectGroupEditController',
|
||||
function ($q, $log, $scope, $state, projectGroup, projects, Project,
|
||||
ProjectGroupItem, ArrayUtil) {
|
||||
'use strict';
|
||||
|
@ -178,7 +178,7 @@ angular.module('sb.admin').controller('ProjectGroupEditController',
|
|||
// Roll all the promises into one big happy promise.
|
||||
$q.all(promises).then(
|
||||
function () {
|
||||
$state.go('sb.admin.project_group', {});
|
||||
$state.go('sb.project_group.list', {});
|
||||
},
|
||||
function (error) {
|
||||
$log.error(error);
|
|
@ -17,7 +17,7 @@
|
|||
/**
|
||||
* Controller for the project group member list.
|
||||
*/
|
||||
angular.module('sb.admin').controller('ProjectGroupItemController',
|
||||
angular.module('sb.project_group').controller('ProjectGroupItemController',
|
||||
function ($scope, $log, ProjectGroupItem) {
|
||||
'use strict';
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
/**
|
||||
* New Project Group modal controller.
|
||||
*/
|
||||
angular.module('sb.admin').controller('ProjectGroupNewController',
|
||||
angular.module('sb.project_group').controller('ProjectGroupNewController',
|
||||
function ($q, $log, $scope, $modalInstance, ProjectGroup, ProjectGroupItem,
|
||||
Project) {
|
||||
'use strict';
|
|
@ -17,7 +17,7 @@
|
|||
/**
|
||||
* The StoryBoard project group submodule handles most activity involving
|
||||
* searching for and reviewing project groups. Administration of project groups
|
||||
* lives in the admin module.
|
||||
* has moved from the admin module.
|
||||
*/
|
||||
angular.module('sb.project_group',
|
||||
['ui.router', 'sb.services', 'sb.util', 'sb.auth'])
|
||||
|
@ -32,7 +32,8 @@ angular.module('sb.project_group',
|
|||
.state('sb.project_group', {
|
||||
abstract: true,
|
||||
url: '/project_group',
|
||||
template: '<div ui-view></div>',
|
||||
templateUrl: 'app/project_group/template/project_group.html',
|
||||
controller: 'ProjectGroupAdminController',
|
||||
resolve: {
|
||||
isSuperuser: PermissionResolver
|
||||
.resolvePermission('is_superuser', true)
|
||||
|
@ -43,8 +44,8 @@ angular.module('sb.project_group',
|
|||
templateUrl: 'app/project_group/template/list.html',
|
||||
controller: 'ProjectGroupListController'
|
||||
})
|
||||
.state('sb.project_group.detail', {
|
||||
url: '/{id:[0-9]+}',
|
||||
.state('sb.project_group_detail', {
|
||||
url: '/project_group/detail/:id',
|
||||
templateUrl: 'app/project_group/template/detail.html',
|
||||
controller: 'ProjectGroupDetailController',
|
||||
resolve: {
|
||||
|
@ -60,6 +61,22 @@ angular.module('sb.project_group',
|
|||
return deferred.promise;
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
;
|
||||
})
|
||||
.state('sb.project_group_edit', {
|
||||
url: '/project_group/edit/:id',
|
||||
templateUrl: 'app/project_group/template/edit.html',
|
||||
controller: 'ProjectGroupEditController',
|
||||
resolve: {
|
||||
projectGroup: function ($stateParams, ProjectGroup) {
|
||||
return ProjectGroup.get({id: $stateParams.id}).$promise;
|
||||
},
|
||||
projects: function ($stateParams, ProjectGroupItem) {
|
||||
return ProjectGroupItem.browse(
|
||||
{projectGroupId: $stateParams.id}
|
||||
).$promise;
|
||||
},
|
||||
isSuperuser: PermissionResolver
|
||||
.requirePermission('is_superuser', true)
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -5,6 +5,11 @@
|
|||
<h1>
|
||||
<i class="fa fa-sb-project-group"></i>
|
||||
{{projectGroup.title}}
|
||||
<small>
|
||||
<a href="#!/project_group/edit/{{projectGroup.id}}" permission="is_superuser">
|
||||
<i class="fa fa-pencil"></i>
|
||||
</a>
|
||||
</small>
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -130,7 +130,7 @@
|
|||
ng-disabled="!projectGroupForm.$valid || !projectsForm.$valid || !checkValidProjects() || isSaving">
|
||||
Save
|
||||
</button>
|
||||
<a href="#!/admin/project_group"
|
||||
<a href="#!/project_group"
|
||||
ng-disabled="isSaving"
|
||||
class="btn btn-default">
|
||||
Cancel
|
|
@ -23,6 +23,12 @@
|
|||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<view-title>Project Groups</view-title>
|
||||
<button class="btn btn-primary btn-sm pull-bottom-right"
|
||||
permission="is_superuser"
|
||||
ng-click="addProjectGroup()">
|
||||
<i class="fa fa-plus"></i>
|
||||
<span class="hidden-xs">Add Project Group</span>
|
||||
</button>
|
||||
<h1 class="no-border no-margin-bottom">
|
||||
<i class="fa fa-sb-project"></i> Project Groups
|
||||
</h1>
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
<div class="col-xs-12">
|
||||
<view-title>Project Group Admin</view-title>
|
||||
<button class="btn btn-primary btn-sm pull-bottom-right"
|
||||
permission="is_superuser"
|
||||
ng-click="addProjectGroup()">
|
||||
<i class="fa fa-plus"></i>
|
||||
<span class="hidden-xs">Add Project Group</span>
|
||||
|
@ -87,7 +88,7 @@
|
|||
<tr ng-repeat="projectGroup in projectGroups">
|
||||
<td class="col-sm-3 col-xs-4">
|
||||
<i class="fa fa-sb-project-group text-muted"></i>
|
||||
<a href="#!/admin/project_group/{{projectGroup.id}}">
|
||||
<a href="#!/project_group/detail/{{projectGroup.id}}">
|
||||
{{projectGroup.title}}
|
||||
</a>
|
||||
</td>
|
||||
|
@ -95,10 +96,19 @@
|
|||
ng-controller="ProjectGroupItemController">
|
||||
<div class="pull-right btn-group btn-group-xs">
|
||||
<a class="btn btn-link "
|
||||
href="#!/admin/project_group/{{projectGroup.id}}">
|
||||
ng-show="isLoggedIn">
|
||||
<subscribe
|
||||
resource="project_group"
|
||||
resource-id="projectGroup.id">
|
||||
</subscribe>
|
||||
</a>
|
||||
<a class="btn btn-link "
|
||||
permission="is_superuser"
|
||||
href="#!/project_group/edit/{{projectGroup.id}}">
|
||||
<i class="fa fa-edit fa-lg"></i>
|
||||
</a>
|
||||
<a class="btn btn-link "
|
||||
permission="is_superuser"
|
||||
href=""
|
||||
ng-click="deleteProjectGroup(projectGroup)">
|
||||
<i class="fa fa-times fa-lg"></i>
|
Loading…
Reference in New Issue