(feat) basic (but empty) admin module for SOGo v3

pull/105/head
Ludovic Marcotte 2015-09-14 14:09:29 -04:00
parent 3efbf65f80
commit e30fb0d1fb
5 changed files with 179 additions and 26 deletions

View File

@ -7,34 +7,51 @@
xmlns:label="OGo:label"
className="UIxPageFrame"
title="title"
const:toolbar="UIxAdministration.toolbar"
const:jsFiles="dtree.js">
const:jsFiles="Common.js, Administration.js, Administration.services.js, Contacts.services.js">
<div id="helpDialog" style="display: none" class="dialog left">
<main class="view layout-fill" ui-view="administration" layout="row" ng-controller="navController">
<!-- administration -->
</main>
<script type="text/ng-template" id="administration.html">
<md-sidenav id="left-sidenav" class="md-sidenav-left md-whiteframe-z1" md-component-id="left" md-is-locked-open="$mdMedia('gt-md')" layout="column">
<var:component className="UIxSidenavToolbarTemplate" />
<md-content md-scroll-y="md-scroll-y" class="md-flex md-hue-2">
<md-list>
<md-list-item ng-click="app.go('rights')"
ui-sref="administration.rights"
ui-sref-active="md-default-theme md-background md-bg md-hue-1">
<md-icon>security</md-icon>
<p class="sg-item-name"><var:string label:value="Rights"/></p>
</md-list-item>
</md-list>
</md-content>
</md-sidenav>
<section layout="column" class="layout-fill">
<!-- TOP RIGHT TOOLBAR -->
<md-toolbar layout="row" layout-align="space-between start" class="md-tall">
<div class="md-toolbar-tools md-toolbar-tools-top" layout="row" layout-align="space-between start">
<var:component className="UIxTopnavToolbarTemplate" />
</div>
</md-toolbar>
<md-content>
<div ui-view="module"><!-- view --></div>
</md-content>
</section>
</script>
<!--
RIGHTS ADMINISTRATION PANEL
-->
<script type="text/ng-template" id="rights.html">
<div>
<h3><!-- module title --></h3>
<div><!-- module description --></div>
<a href="#" class="button" id="helpDialogClose"><span><var:string label:value="Close"/></span></a>
<label>TODO!</label>
</div>
</div>
</script>
<div id="leftPanel">
<div class="titlediv"><var:string label:value="Modules" /></div>
<div id="administrationModules">
<ul>
<li id="ACLs" class="_selected"><var:string label:value="ACLs"/></li>
</ul>
</div>
</div>
<div class="dragHandle" id="verticalDragHandle"><!-- space --></div>
<div id="rightPanel">
<span><h1 id="moduleTitle"><var:string label:value="ACLs_title"/></h1>
<div id="moduleDescription" style="display: none"><var:string label:value="ACLs_description" const:escapeHTML="NO"/></div></span>
<var:component className="UIxAdministrationFilterPanel" qualifier="qualifier" />
<div id="administrationContent"><!-- space --></div>
</div>
<var:string value="errorAlertJavaScript" const:escapeHTML="NO" />
</var:component>

View File

@ -10,7 +10,10 @@ module.exports = function(grunt) {
'js/Mailer.js': ['js/Mailer/Mailer.app.js'],
'js/Mailer.app.popup.js': ['js/Mailer/Mailer.popup.js'],
'js/Preferences.services.js': ['js/Preferences/*.service.js'],
'js/Preferences.js': ['js/Preferences/Preferences.app.js', 'js/Preferences/*Controller.js']
'js/Preferences.js': ['js/Preferences/Preferences.app.js', 'js/Preferences/*Controller.js'],
'js/Administration.services.js': ['js/Administration/*.service.js'],
'js/Administration.js': ['js/Administration/Administration.app.js', 'js/Administration/*Controller.js']
};
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),

View File

@ -0,0 +1,61 @@
/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* JavaScript for SOGoAdministration */
(function() {
'use strict';
angular.module('SOGo.AdministrationUI', ['ngSanitize', 'ui.router', 'SOGo.Common', 'SOGo.ContactsUI', 'SOGo.Authentication'])
.config(configure)
.run(runBlock);
/**
* @ngInject
*/
configure.$inject = ['$stateProvider', '$urlRouterProvider'];
function configure($stateProvider, $urlRouterProvider) {
$stateProvider
.state('administration', {
abstract: true,
views: {
administration: {
templateUrl: 'administration.html',
controller: 'AdministrationController',
controllerAs: 'app'
}
},
resolve: {
stateAdministration: stateAdministration
}
})
.state('administration.rights', {
url: '/rights',
views: {
module: {
templateUrl: 'rights.html'
}
}
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/rights');
}
/**
* @ngInject
*/
stateAdministration.$inject = ['Administration'];
function stateAdministration(Administration) {
return Administration;
}
/**
* @ngInject
*/
runBlock.$inject = ['$rootScope'];
function runBlock($rootScope) {
$rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {
console.error(event, current, previous, rejection);
});
}
})();

View File

@ -0,0 +1,44 @@
/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
(function() {
'use strict';
/**
* @name Administration
* @constructor
*/
function Administration() {
}
/**
* @memberof Administration
* @desc The factory we'll use to register with Angular
* @returns the Administration constructor
*/
Administration.$factory = ['$q', '$timeout', '$log', 'sgSettings', 'Resource', 'User', function($q, $timeout, $log, Settings, Resource, User) {
angular.extend(Administration, {
$q: $q,
$timeout: $timeout,
$log: $log,
$$resource: new Resource(Settings.activeUser('folderURL'), Settings.activeUser()),
activeUser: Settings.activeUser(),
$User: User
});
return new Administration(); // return unique instance
}];
/* Initialize module if necessary */
try {
angular.module('SOGo.AdministrationUI');
}
catch(e) {
angular.module('SOGo.AdministrationUI', ['SOGo.Common']);
}
/* Factory registration in Angular module */
angular.module('SOGo.AdministrationUI')
.factory('Administration', Administration.$factory);
})();

View File

@ -0,0 +1,28 @@
/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* JavaScript for SOGoAdministration */
(function() {
'use strict';
/**
* @ngInject
*/
AdministrationController.$inject = ['$state', '$mdDialog', '$mdToast', 'Dialog', 'User', 'stateAdministration', 'Authentication'];
function AdministrationController($state, $mdDialog, $mdToast, Dialog, User, stateAdministration, Authentication) {
var vm = this;
vm.administration = stateAdministration;
vm.go = go;
function go(module) {
$state.go('administration.' + module);
}
}
angular
.module('SOGo.AdministrationUI')
.controller('AdministrationController', AdministrationController);
})();