Skip to content

Commit

Permalink
Add draft thesaurus manager UI. Refactor thesaurus services.
Browse files Browse the repository at this point in the history
  • Loading branch information
François Prunayre committed Aug 28, 2013
1 parent fa82c78 commit 40882e2
Show file tree
Hide file tree
Showing 12 changed files with 489 additions and 42 deletions.
26 changes: 9 additions & 17 deletions web-ui/src/main/resources/catalog/js/admin/AdminController.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,20 @@

















goog.require('gn_adminmetadata_controller');
goog.require('gn_admintools_controller');
goog.require('gn_cat_controller');
goog.require('gn_classification_controller');
goog.require('gn_dashboard_controller');
goog.require('gn_settings_controller');
goog.require('gn_translation');
goog.require('gn_translation_controller');
goog.require('gn_usergroup_controller');


var module = angular.module('gn_admin_controller',
['gn_dashboard_controller', 'gn_usergroup_controller',
'gn_admintools_controller', 'gn_settings_controller',
'gn_adminmetadata_controller']);
'gn_adminmetadata_controller', 'gn_classification_controller']);


module.config(['$routeProvider', function($routeProvider) {
Expand Down Expand Up @@ -59,6 +45,12 @@
when('/organization/groups/:groupId', {
templateUrl: '../../catalog/templates/admin/organization.html',
controller: 'GnUserGroupController'}).
when('/classification', {
templateUrl: '../../catalog/templates/admin/classification.html',
controller: 'GnClassificationController'}).
when('/classification/:tab', {
templateUrl: '../../catalog/templates/admin/classification.html',
controller: 'GnClassificationController'}).
when('/tools', {
templateUrl: '../../catalog/templates/admin/tools.html',
controller: 'GnAdminToolsController'}).
Expand Down Expand Up @@ -98,7 +90,7 @@
classes: 'btn-primary', icon: 'icon-cloud-upload'},
{name: 'statisticsAndStatus', route: '#dashboard',
classes: 'btn-success', icon: 'icon-dashboard'},
{name: 'classificationSystems', url: 'admin',
{name: 'classificationSystems', route: '#classification',
classes: 'btn-info', icon: 'icon-tags'},
{name: 'standards', url: 'admin',
classes: 'btn-info', icon: 'icon-puzzle-piece'},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
(function() {
goog.provide('gn_classification_controller');

goog.require('gn_thesaurus_controller');


var module = angular.module('gn_classification_controller',
['gn_thesaurus_controller']);


/**
*
*/
module.controller('GnClassificationController',
['$scope', '$routeParams', '$http',
function($scope, $routeParams, $http) {
var templateFolder = '../../catalog/templates/admin/classification/';
var availableTemplates = [
'thesaurus', 'directory', 'category'
];

$scope.defaultSettingType = 'thesaurus';

$scope.getTemplate = function() {
$scope.type = $scope.defaultSettingType;
if (availableTemplates.indexOf($routeParams.tab) > -1) {
$scope.type = $routeParams.tab;
}
return templateFolder + $scope.type + '.html';
};
}]);

})();
90 changes: 90 additions & 0 deletions web-ui/src/main/resources/catalog/js/admin/ThesaurusController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
(function() {
goog.provide('gn_thesaurus_controller');


var module = angular.module('gn_thesaurus_controller',
[]);


/**
* GnThesaurusController manage thesaurus
*
*/
module.controller('GnThesaurusController', [
'$scope', '$http',
function($scope, $http) {

$scope.thesaurus = {};
$scope.keywords = {};
$scope.thesaurusSelected = null;
$scope.thesaurusSelectedActivated = false;
$scope.maxNumberOfKeywords = 50;
$scope.keywordFilter = '';

var defaultMaxNumberOfKeywords = 50;

$scope.selectThesaurus = function(t) {
$scope.thesaurusSelected = t;
$scope.thesaurusSelectedActivated = t.activated == 'y';
$scope.searchThesaurusKeyword();
};


$scope.searchThesaurusKeyword = function() {
$http.get('keywords@json?pNewSearch=true&pTypeSearch=1' +
'&pThesauri=' + $scope.thesaurusSelected.key +
'&pMode=searchBox' +
'&maxResults=' +
($scope.maxNumberOfKeywords || defaultMaxNumberOfKeywords) +
'&pKeyword=' + ($scope.keywordFilter || '*')
).success(function(data) {
$scope.keywords = data[0];
});
};


$scope.deleteThesaurus = function() {
$http.get('thesaurus.remove?ref=' +
$scope.thesaurusSelected.key)
.success(function(data) {
$scope.thesaurusSelected = null;
loadThesaurus();
})
.error(function(data) {
$rootScope.$broadcast('StatusUpdated', {
title: $translate('thesaurusDeleteError'),
error: data,
timeout: 0,
type: 'danger'});
});
};

$scope.enableThesaurus = function() {
$http.get('thesaurus.activate@json?' +
'ref=' + $scope.thesaurusSelected.key +
'&activated=' +
($scope.thesaurusSelectedActivated ? 'y' : 'n')
).success(function(data) {
// TODO
});
};

$scope.$watch('maxNumberOfKeywords', function() {
$scope.searchThesaurusKeyword();
});

$scope.$watch('keywordFilter', function() {
$scope.searchThesaurusKeyword();
});

function loadThesaurus() {
$http.get('thesaurus@json').success(function(data) {
$scope.thesaurus = data[0];
});
}

loadThesaurus();

}]);

})();
4 changes: 3 additions & 1 deletion web-ui/src/main/resources/catalog/lib/closure/deps.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<div class="row">
<div class="col-lg-2">
<div class="gn-sidebar affix">
<ul class="nav nav-pills nav-stacked">
<li data-ng-class="type === 'thesaurus' && 'active'">
<a href="#/classification/thesaurus">
<i class="icon-archive"/>
<span data-translate="">manageThesaurus</span>
</a>
</li>
<li data-ng-class="type === 'category' && 'active'">
<a href="#/classification/category">
<i class="icon-tags"/>
<span data-translate="">manageCategory</span>
</a>
</li>
<li data-ng-class="type === 'directory' && 'active'">
<a href="subtemplate.admin">
<i class="icon-list-ul"/>
<span data-translate="">manageDirectory</span>
</a>
</li>
</ul>
</div>
</div>
<div class="col-lg-10" data-ng-include="getTemplate()">
</div>
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<div class="row" data-ng-controller="GnThesaurusController">
<div class="col-lg-4">
<div class="panel">
<div class="panel-heading" data-translate="">thesaurus</div>

<input class="form-control" data-ng-model="thesaurusSearch.$"
placeholder="{{'filter' | translate}}"/>
<input type="hidden" data-ng-model="thesaurusSelected.id"/>
<div class="list-group">
<a class="list-group-item"
data-ng-repeat="t in thesaurus | filter:thesaurusSearch | orderBy:'title'"
data-ng-click="selectThesaurus(t)"> {{t.title}} ({{t.dname}}) </a>
</div>

<button type="button" class="btn btn-primary icon-plus" data-ng-click="addThesaurus()"
data-translate="">addThesaurus</button>
</div>
</div>

<div class="col-lg-8" data-ng-hide="thesaurusSelected.key == null">
<div class="panel">
<div class="panel-heading">
<span>{{thesaurusSelected.title}} ({{thesaurusSelected.dname}})</span>
<a href="{{thesaurusSelected.url}}" data-translate="">download</a>
<button type="button" class="btn btn-primary pull-right btn-danger icon-remove"
data-ng-click="deleteThesaurus(thesaurusSelected.key)" data-translate=""
>deleteThesaurus</button>
</div>

<ul>
<li data-ng-repeat="(key, value) in thesaurusSelected">{{key}}: {{value}}</li>
</ul>
<label>
<input type="checkbox" data-ng-model="thesaurusSelectedActivated"
data-ng-click="enableThesaurus()"/>
<span data-translate="">enable</span>
</label>
</div>

<div class="panel">
<div class="panel-heading">
<span data-translate="">keywords</span>
</div>

<form class="form-inline" role="form">
<div class="form-group">
<label for="maxNumberOfKeywords" data-translate="">maxNumberOfKeywords</label>
<input id="maxNumberOfKeywords" class="form-control" data-ng-model="maxNumberOfKeywords"
placeholder="{{'maxNumberOfKeywords' | translate}}"/>
</div>
<div class="form-group">
<label for="keywordFilter" data-translate="">keywordFilter</label>
<input id="keywordFilter" class="form-control" data-ng-model="keywordFilter"
placeholder="{{'keywordFilter' | translate}}"/>
</div>
</form>
<ul>
<li data-ng-repeat="k in keywords">{{k.value['#text']}}</li>
</ul>
</div>
</div>
</div>
16 changes: 16 additions & 0 deletions web/src/main/webapp/WEB-INF/config-security-mapping.xml
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,22 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans
<sec:intercept-url pattern="/srv/[a-z]{2,3}/admin.console!?.*" access="hasRole('RegisteredUser')"/>


<sec:intercept-url pattern="/srv/[a-z]{2,3}/keywords!?.*" access="permitAll"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus!?.*" access="permitAll"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.upload!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.download!?.*" access="permitAll"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.add.from.register!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.clear!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.update!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.remove!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.enable!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.keyword!?.*" access="permitAll"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.keyword.links!?.*" access="permitAll"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.keyword.add!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.keyword.update!?.*" access="hasRole('Administrator')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/thesaurus.keyword.remove!?.*" access="hasRole('Administrator')"/>


<sec:intercept-url pattern="/srv/[a-z]{2,3}/md.edit.save.and.close!?.*" access="hasRole('Editor')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/md.edit.save!?.*" access="hasRole('Editor')"/>
<sec:intercept-url pattern="/srv/[a-z]{2,3}/md.edit!?.*" access="hasRole('Editor')"/>
Expand Down
Loading

0 comments on commit 40882e2

Please sign in to comment.