function projectConfig()

in ui/src/app/project/project.config.js [27:185]


function projectConfig($stateProvider, permissionsConfig, permissionViewConfig, userPermissions) {
    var permissions = [
        userPermissions.VIEWER,
        userPermissions.USER,
        userPermissions.OWNER
    ];

    $stateProvider
        .state('project', {
            abstract: true,
            parent: 'entity'
        })
        .state('entities.project-new', {
            url: '/project/new',
            views: {
                tabContent: {
                    template: projectTemplate,
                    controller: 'ProjectController',
                    controllerAs: 'vm'
                }
            },
            params: {
                isNewEntity: true
            },
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.PROJECT_CREATOR],
                pageTitle: 'indigoeln',
                tab: {
                    name: 'New Project',
                    service: 'projectService',
                    kind: 'project',
                    type: 'entity',
                    state: 'entities.project-new'
                },
                isNew: true
            },
            resolve: {
                pageInfo: function($q, principalService) {
                    return $q.all([
                        principalService.checkIdentity(),
                        principalService.hasAuthorityIdentitySafe(roles.CONTENT_EDITOR),
                        principalService.hasAuthorityIdentitySafe(roles.PROJECT_CREATOR),
                        principalService.hasAuthorityIdentitySafe(roles.NOTEBOOK_CREATOR)
                    ]).then(function(results) {
                        return {
                            project: {
                                name: '',
                                description: '',
                                keywords: '',
                                references: ''
                            },
                            identity: results[0],
                            isContentEditor: results[1],
                            hasEditAuthority: results[2],
                            hasCreateChildAuthority: results[3]
                        };
                    });
                }
            }
        })
        .state('entities.project-detail', {
            url: '/project/{projectId}',
            views: {
                tabContent: {
                    template: projectTemplate,
                    controller: 'ProjectController',
                    controllerAs: 'vm'
                }
            },
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.PROJECT_READER, roles.PROJECT_CREATOR],
                pageTitle: 'indigoeln',
                tab: {
                    name: 'Project',
                    service: 'projectService',
                    kind: 'project',
                    type: 'entity',
                    state: 'entities.project-detail'
                }
            },
            resolve: {
                pageInfo: function($q, $stateParams, principalService, projectService) {
                    return $q.all([
                        projectService.get($stateParams).$promise,
                        principalService.checkIdentity(),
                        principalService.hasAuthorityIdentitySafe(roles.CONTENT_EDITOR),
                        principalService.hasAuthorityIdentitySafe(roles.PROJECT_CREATOR),
                        principalService.hasAuthorityIdentitySafe(roles.NOTEBOOK_CREATOR)
                    ]).then(function(results) {
                        return {
                            project: results[0],
                            identity: results[1],
                            isContentEditor: results[2],
                            hasEditAuthority: results[3],
                            hasCreateChildAuthority: results[4],
                            isNotHavePermissions: false
                        };
                    }, function() {
                        return {
                            project: null,
                            isNotHavePermissions: true
                        };
                    });
                }
            }
        })
        .state('entities.project-detail.print', {
            parent: 'entities.project-detail',
            url: '/print',
            onEnter: function(printModal, $stateParams, $state) {
                'ngInject';

                printModal
                    .showPopup($stateParams, 'Project')
                    .finally(function() {
                        $state.go('^', null, {notify: false});
                    });
            },
            onExit: function(printModal) {
                'ngInject';

                printModal.close();
            },
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.PROJECT_READER, roles.PROJECT_CREATOR]
            }
        })
        .state('entities.project-new.permissions', _.extend({}, permissionsConfig, {
            parent: 'entities.project-new',
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.PROJECT_CREATOR],
                entityType: 'project'
            },
            permissions: permissions
        }))
        .state('entities.project-new.permissions-view', _.extend({}, permissionViewConfig, {
            parent: 'entities.project-new',
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.PROJECT_READER]
            },
            permissions: permissions
        }))
        .state('entities.project-detail.permissions-view', _.extend({}, permissionViewConfig, {
            parent: 'entities.project-detail',
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.PROJECT_READER]
            },
            permissions: permissions
        }))
        .state('entities.project-detail.permissions', _.extend({}, permissionsConfig, {
            parent: 'entities.project-detail',
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.PROJECT_CREATOR],
                entityType: 'project'
            },
            permissions: permissions
        }))
    ;
}