You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by sk...@apache.org on 2013/05/12 18:19:42 UTC
svn commit: r1481595 [4/4] - in
/archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web:
archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/
archiva-webapp/src/main/webapp/js/archiva/ archiva-webapp/src/main/webapp...
Added: archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/10maven2/repository-groups.js
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/10maven2/repository-groups.js?rev=1481595&view=auto
==============================================================================
--- archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/10maven2/repository-groups.js (added)
+++ archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/10maven2/repository-groups.js Sun May 12 16:19:41 2013
@@ -0,0 +1,420 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+define("archiva/admin/repository/10maven2/repository-groups",["jquery","i18n","jquery.tmpl","bootstrap","jquery.validate","jquery.ui","knockout"
+ ,"knockout.simpleGrid","knockout.sortable","archiva/admin/repository/10maven2/repositories"],
+function(jquery,i18n,jqueryTmpl,bootstrap,jqueryValidate,jqueryUi,ko) {
+
+ RepositoryGroup=function(id,repositories,mergedIndexPath){
+
+ var self=this;
+
+ //private String id;
+ this.id=ko.observable(id);
+ this.id.subscribe(function(newValue){self.modified(true)});
+
+ //private String mergedIndexPath = "/.indexer";
+ this.mergedIndexPath=ko.observable(mergedIndexPath?mergedIndexPath:".indexer");
+ this.mergedIndexPath.subscribe(function(newValue){self.modified(true)});
+
+ // private List<String> repositories;
+ this.repositories=ko.observableArray(repositories);
+ this.repositories.subscribe(function(newValue){self.modified(true)});
+
+ // to store managedRepositories description not sended to server
+ this.managedRepositories=ko.observableArray([]);
+ this.managedRepositories.subscribe(function(newValue){self.modified(true)});
+
+ this.modified=ko.observable(false);
+ }
+
+ RepositoryGroupViewModel=function(repositoryGroup,update,repositoryGroupsViewModel){
+ var self = this;
+ this.repositoryGroup=repositoryGroup;
+ this.update=update;
+ this.repositoryGroupsViewModel=repositoryGroupsViewModel;
+ this.availableRepositories=ko.observableArray([]);
+ this.applicationUrl=null;
+
+ for (var i=0;i<repositoryGroupsViewModel.managedRepositories().length;i++){
+ if ( $.inArray(repositoryGroupsViewModel.managedRepositories()[i].id(),this.repositoryGroup.repositories())<0){
+ this.availableRepositories.push(repositoryGroupsViewModel.managedRepositories()[i]);
+ }
+ }
+
+ repositoryMoved=function(arg){
+ $.log("repositoryMoved:"+arg.sourceIndex+" to " + arg.targetIndex);
+ var repositories=[];
+ for(var i=0;i<self.repositoryGroup.managedRepositories().length;i++){
+ repositories.push(self.repositoryGroup.managedRepositories()[i].id());
+ }
+ self.repositoryGroup.repositories(repositories);
+ self.repositoryGroup.modified(true);
+ var mainContent=$("#main-content");
+ mainContent.find("#repository-groups-edit-available-repositories").find(".icon-plus-sign" ).off("click");
+ mainContent.find("#repository-groups-edit-order-div").find(".icon-minus-sign" ).off("click");
+ self.renderSortableAvailables(self.repositoryGroupsViewModel);
+ self.renderSortableChoosed(self.repositoryGroupsViewModel);
+ }
+
+ this.saveRepositoryGroup=function(repositoryGroup){
+ if (self.update){
+ self.repositoryGroupsViewModel.saveRepositoryGroup(repositoryGroup);
+ } else {
+ self.repositoryGroupsViewModel.addRepositoryGroup(repositoryGroup);
+ }
+ }
+
+ this.removeRepository=function(id){
+ $.log("removeRepository:"+id);
+ }
+
+ this.removeAvailable=function(idVal){
+ for (var i=0;i<self.repositoryGroupsViewModel.managedRepositories().length;i++){
+ if(self.repositoryGroupsViewModel.managedRepositories()[i].id()==idVal){
+ self.availableRepositories.remove(repositoryGroupsViewModel.managedRepositories()[i]);
+ }
+ }
+
+ for(var i= 0;i<self.repositoryGroupsViewModel.managedRepositories().length;i++){
+ if(self.repositoryGroupsViewModel.managedRepositories()[i].id()==idVal){
+ $.log("find repo to add");
+ self.repositoryGroup.repositories.push(idVal);
+ self.repositoryGroup.managedRepositories.push(findManagedRepository(idVal,self.repositoryGroupsViewModel.managedRepositories()));
+ }
+ }
+ $("#main-content").find("#repository-groups-edit-order-div").find("#minus-"+idVal ).on("click",function(){
+ var idVal = $(this).attr("id");
+ idVal=idVal.substringAfterFirst("minus-");
+ self.removeChoosed(idVal);
+ });
+ }
+
+ this.renderSortableAvailables=function(repositoryGroupsViewModel){
+ $("#main-content").find("#repository-groups-edit-available-repositories").find(".icon-plus-sign" ).on("click",function(){
+ var idVal = $(this).attr("id");
+ idVal=idVal.substringAfterFirst("plus-");
+ self.removeAvailable(idVal);
+ });
+ }
+
+ this.removeChoosed=function(idVal){
+ for (var i=0;i<self.repositoryGroupsViewModel.managedRepositories().length;i++){
+ if(self.repositoryGroupsViewModel.managedRepositories()[i].id()==idVal){
+ self.availableRepositories.push(repositoryGroupsViewModel.managedRepositories()[i]);
+ }
+ }
+
+ for(var i= 0;i<self.repositoryGroup.repositories().length;i++){
+ if(self.repositoryGroup.repositories()[i]==idVal){
+ self.repositoryGroup.repositories.remove(self.repositoryGroup.repositories()[i]);
+ self.repositoryGroup.managedRepositories.remove(findManagedRepository(idVal,self.repositoryGroupsViewModel.managedRepositories()));
+ }
+ }
+ $("#main-content").find("#repository-groups-edit-available-repositories").find("#plus-"+idVal ).on("click",function(){
+ var idVal = $(this).attr("id");
+ idVal=idVal.substringAfterFirst("plus-");
+ self.removeAvailable(idVal);
+ });
+ }
+
+ this.renderSortableChoosed=function(repositoryGroupsViewModel){
+ $("#main-content").find("#repository-groups-edit-order-div").find(".icon-minus-sign" ).on("click",function(){
+ var idVal = $(this).attr("id");
+ idVal=idVal.substringAfterFirst("minus-");
+ self.removeChoosed(idVal);
+ });
+ }
+ }
+
+ RepositoryGroupsViewModel=function(){
+ var self=this;
+ this.repositoryGroups=ko.observableArray([]);
+ this.managedRepositories=ko.observableArray([]);
+ this.applicationUrl="";
+
+ this.removeFromList=function(managedRepository){
+ $.log("removeFromList");
+ }
+
+ this.findManagedRepository=function(id){
+ return findManagedRepository(id,self.managedRepositories());
+ }
+ this.deleteRepositoryGroup=function(repositoryGroup){
+ openDialogConfirm(
+ function(){self.removeRepositoryGroup(repositoryGroup);window.modalConfirmDialog.modal('hide')},
+ $.i18n.prop('ok'), $.i18n.prop('cancel'),
+ $.i18n.prop('repository.group.delete.confirm',repositoryGroup.id()),
+ $("#repository-group-delete-warning-tmpl").tmpl(self.repositoryGroup));
+ }
+ this.removeRepositoryGroup=function(repositoryGroup){
+ clearUserMessages();
+ $.ajax("restServices/archivaServices/repositoryGroupService/deleteRepositoryGroup/"+encodeURIComponent(repositoryGroup.id()),
+ {
+ type: "GET",
+ success: function(data) {
+ var message=$.i18n.prop('repository.group.deleted',repositoryGroup.id());
+ displaySuccessMessage(message);
+ self.repositoryGroups.remove(repositoryGroup);
+ },
+ error: function(data) {
+ var res = $.parseJSON(data.responseText);
+ displayRestError(res);
+ }
+ }
+ );
+ }
+
+ this.editRepositoryGroup=function(repositoryGroup){
+
+ var mainContent=$("#main-content");
+ $.ajax({
+ url: "restServices/archivaServices/archivaAdministrationService/applicationUrl",
+ type: "GET",
+ dataType: 'text',
+ success: function(applicationUrl){
+ $.log("editRepositoryGroup:"+repositoryGroup.id()+",repositories:"+repositoryGroup.repositories().length+",managed:"+repositoryGroup.managedRepositories().length);
+ var repositoryGroupViewModel=new RepositoryGroupViewModel(repositoryGroup,true,self);
+ repositoryGroupViewModel.applicationUrl=applicationUrl;
+ activateRepositoryGroupEditTab();
+ ko.applyBindings(repositoryGroupViewModel,mainContent.find("#repository-groups-edit" ).get(0));
+ repositoryGroupViewModel.renderSortableChoosed(self);
+ repositoryGroupViewModel.renderSortableAvailables(self);
+ mainContent.find("#repository-groups-view-tabs-li-edit" ).find("a").html($.i18n.prop("edit"));
+ repositoryGroupValidator();
+ }
+ });
+ }
+
+ this.editRepositoryGroupWithId=function(repositoryGroupId){
+
+ $.each(self.repositoryGroups(), function(index, value) {
+ if(value.id()==repositoryGroupId){
+ self.editRepositoryGroup(value);
+ }
+ });
+ }
+
+ this.saveRepositoryGroup=function(repositoryGroup){
+ if(valid==false){
+ $.log("saveRepositoryGroup, valid:"+valid);
+ return;
+ }
+ clearUserMessages();
+ var userMessages=$("#user-messages");
+ userMessages.html(mediumSpinnerImg());
+ var valid = $("#main-content").find("#repository-group-edit-form" ).valid();
+
+
+ $("#repository-group-save" ).button('loading');
+ $.ajax("restServices/archivaServices/repositoryGroupService/updateRepositoryGroup",
+ {
+ type: "POST",
+ contentType: 'application/json',
+ data:ko.toJSON(repositoryGroup),
+ dataType: 'json',
+ success: function(data) {
+ $.log("update repositoryGroup id:"+repositoryGroup.id());
+ var message=$.i18n.prop('repository.group.updated',repositoryGroup.id());
+ displaySuccessMessage(message);
+ repositoryGroup.modified(false);
+ },
+ error: function(data) {
+ var res = $.parseJSON(data.responseText);
+ displayRestError(res);
+ },
+ complete:function(data){
+ $("#repository-group-save" ).button('reset');
+ removeMediumSpinnerImg(userMessages);
+ }
+ }
+ );
+
+ };
+
+ this.addRepositoryGroup=function(repositoryGroup){
+ clearUserMessages();
+ $.ajax("restServices/archivaServices/repositoryGroupService/addRepositoryGroup",
+ {
+ type: "POST",
+ contentType: 'application/json',
+ data: ko.toJSON(repositoryGroup),
+ dataType: 'json',
+ success: function(data) {
+ $.log("update repositoryGroup id:"+repositoryGroup.id());
+ var message=$.i18n.prop('repository.group.added',repositoryGroup.id());
+ displaySuccessMessage(message);
+ repositoryGroup.modified(false);
+ self.repositoryGroups.push(repositoryGroup);
+ },
+ error: function(data) {
+ var res = $.parseJSON(data.responseText);
+ displayRestError(res);
+ }
+ }
+ );
+
+ }
+
+ getManagedRepository=function(id){
+ $.log("getManagedRepository:"+id);
+ return findManagedRepository(self.managedRepositories());
+ }
+
+ }
+
+ displayRepositoryGroups=function(successFn){
+ screenChange();
+ var mainContent = $("#main-content");
+ mainContent.html(mediumSpinnerImg());
+ this.repositoryGroupsViewModel=new RepositoryGroupsViewModel();
+ var self=this;
+
+ loadManagedRepositories(function(data) {
+
+ $.ajax({
+ url: "restServices/archivaServices/archivaAdministrationService/applicationUrl",
+ type: "GET",
+ dataType: 'text',
+ success: function(applicationUrl){
+
+ self.repositoryGroupsViewModel.managedRepositories(
+ mapManagedRepositories(data,applicationUrl?applicationUrl:window.location.toString().substringBeforeLast("/")));
+ self.repositoryGroupsViewModel.applicationUrl=applicationUrl;
+ $.ajax("restServices/archivaServices/repositoryGroupService/getRepositoriesGroups", {
+ type: "GET",
+ dataType: 'json',
+ success: function(data) {
+ var mappedRepositoryGroups=mapRepositoryGroups(data);
+ for(var i=0;i<mappedRepositoryGroups.length;i++){
+ mappedRepositoryGroups[i]
+ .managedRepositories(self.mapManagedRepositoriesToRepositoryGroup(mappedRepositoryGroups[i]));
+ mappedRepositoryGroups[i].modified(false);
+ $.log("mappedRepositoryGroups.repositories().length:"+mappedRepositoryGroups[i].repositories().length);
+ }
+ mainContent.html($("#repositoryGroupsMain").tmpl());
+ self.repositoryGroupsViewModel.repositoryGroups(mappedRepositoryGroups);
+ $.log("displayRepositoryGroups#applyBindings before");
+ ko.applyBindings(self.repositoryGroupsViewModel,mainContent.find("#repository-groups-view" ).get(0));
+ $.log("displayRepositoryGroups#applyBindings after");
+
+ mainContent.find("#repository-groups-view-tabs").on('show', function (e) {
+ if ($(e.target).attr("href")=="#repository-groups-edit") {
+ var repositoryGroup = new RepositoryGroup();
+ var repositoryGroupViewModel=new RepositoryGroupViewModel(repositoryGroup,false,self.repositoryGroupsViewModel);
+
+ activateRepositoryGroupEditTab();
+ ko.applyBindings(repositoryGroupViewModel,mainContent.find("#repository-groups-edit" ).get(0));
+ repositoryGroupViewModel.renderSortableChoosed(self.repositoryGroupsViewModel);
+ repositoryGroupViewModel.renderSortableAvailables(self.repositoryGroupsViewModel);
+ }
+ if ($(e.target).attr("href")=="#repository-groups-view") {
+ mainContent.find("#repository-groups-view-tabs-li-edit a").html($.i18n.prop("add"));
+ clearUserMessages();
+ }
+
+ });
+
+ if(successFn){
+ successFn(self.repositoryGroupsViewModel);
+ }
+
+ }
+ }
+ );
+
+ }
+ });
+ });
+
+ this.mapManagedRepositoriesToRepositoryGroup=function(repositoryGroup){
+ $.log("mapManagedRepositoriesToRepositoryGroup");
+ var managedRepositories=new Array();
+ if (!repositoryGroup.repositories()) {
+ repositoryGroup.repositories(new Array());
+ return managedRepositories;
+ }
+ for(var i=0;i<repositoryGroup.repositories().length;i++){
+ managedRepositories.push(self.repositoryGroupsViewModel.findManagedRepository(repositoryGroup.repositories()[i]));
+ }
+ $.log("end mapManagedRepositoriesToRepositoryGroup");
+ return managedRepositories;
+ }
+
+ }
+
+
+
+ activateRepositoryGroupsGridTab=function(){
+ var mainContent = $("#main-content");
+ mainContent.find("#repository-groups-view-tabs-content div[class*='tab-pane']").removeClass("active");
+ mainContent.find("#repository-groups-view-tabs li").removeClass("active");
+
+ mainContent.find("#repository-groups-view").addClass("active");
+ mainContent.find("#repository-groups-view-tabs-li-grid").addClass("active");
+ mainContent.find("#repository-groups-view-tabs-li-edit a").html($.i18n.prop("add"));
+
+ }
+
+ activateRepositoryGroupEditTab=function(){
+ $.log("activateRepositoryGroupEditTab");
+ var mainContent = $("#main-content");
+
+ mainContent.find("#repository-groups-view-tabs-content div[class*='tab-pane']").removeClass("active");
+ mainContent.find("#repository-groups-view-tabs li").removeClass("active");
+
+ mainContent.find("#repository-groups-edit").addClass("active");
+ mainContent.find("#repository-groups-view-tabs-li-edit").addClass("active");
+
+
+ }
+
+ repositoryGroupValidator=function(){
+ $.log("validator");
+ var theForm=$("#main-content").find("#repository-group-edit-form");
+ var validator = theForm.validate({
+ rules: {
+ id: {
+ required: true
+ },
+ mergedIndexPath:{
+ required:true
+ }
+ },
+ showErrors: function(validator, errorMap, errorList) {
+ customShowError("#main-content #repository-group-edit-form",validator,errorMap,errorMap);
+ }
+ });
+ return validator;
+ }
+
+ mapRepositoryGroups=function(data){
+ if (data == null){
+ return new Array();
+ }
+ var mappedRepositoryGroups = $.map(data, function(item) {
+ return mapRepositoryGroup(item);
+ });
+ return mappedRepositoryGroups;
+ }
+
+ mapRepositoryGroup=function(data){
+ return new RepositoryGroup(data.id, mapStringArray(data.repositories),data.mergedIndexPath);
+ }
+
+});
Propchange: archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/admin/repository/10maven2/repository-groups.js
------------------------------------------------------------------------------
svn:eol-style = native
Modified: archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js?rev=1481595&r1=1481594&r2=1481595&view=diff
==============================================================================
--- archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js (original)
+++ archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js Sun May 12 16:19:41 2013
@@ -88,21 +88,47 @@ $.ajax({
"redback.user": "redback/user",
"redback.users": "redback/users",
"redback.templates": "redback/redback-tmpl",
- "archiva.general-admin":"archiva/general-admin",
+ // "archiva.general-admin":"archiva/general-admin",
"archiva.templates": "archiva/main-tmpl",
- "archiva.repositories": "archiva/repositories",
- "archiva.network-proxies": "archiva/network-proxies",
- "archiva.proxy-connectors": "archiva/proxy-connectors",
- "archiva.repository-groups": "archiva/repository-groups",
+ // "archiva.repositories": "archiva/repositories",
+ // "archiva.network-proxies": "archiva/network-proxies",
+ // "archiva.proxy-connectors": "archiva/proxy-connectors",
+ // "archiva.repository-groups": "archiva/repository-groups",
"archiva.artifacts-management": "archiva/artifacts-management",
"archiva.search": "archiva/search",
- "archiva.proxy-connectors-rules": "archiva/proxy-connectors-rules",
+ // "archiva.proxy-connectors-rules": "archiva/proxy-connectors-rules",
"archiva.docs": "archiva/docs",
"archiva.main": "archiva/main"
}
});
+
+
+ CookieInformation=function(path,domain,secure,timeout,rememberMeEnabled){
+ //private String path;
+ this.path=path;
- requirejs(['jquery','jquery.tmpl','jquery.ui','i18n','sammy','startup','utils','domReady!','archiva.main','archiva.general-admin'], function () {
+ //private String domain;
+ this.domain=domain;
+
+ //private String secure;
+ this.secure=secure;
+
+ //private String timeout;
+ this.timeout=timeout;
+
+ //private boolean rememberMeEnabled;
+ this.rememberMeEnabled=rememberMeEnabled;
+ }
+
+ mapCookieInformation=function(data){
+ if(!data){
+ return new CookieInformation();
+ }
+ return new CookieInformation(data.path,data.domain,data.secure,data.timeout,data.rememberMeEnabled);
+ }
+
+
+ requirejs(['jquery','jquery.tmpl','jquery.ui','i18n','sammy','startup','utils','domReady!','archiva.main'/*,'archiva.general-admin'*/], function () {
loadi18n(function () {
$.ajax({
url: "restServices/archivaUiServices/runtimeInfoService/archivaRuntimeInfo/"+usedLang(),
Modified: archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/main.js
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/main.js?rev=1481595&r1=1481594&r2=1481595&view=diff
==============================================================================
--- archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/main.js (original)
+++ archiva/branches/archiva-MRM-1756/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/main.js Sun May 12 16:19:41 2013
@@ -18,9 +18,7 @@
*/
define("archiva.main",["jquery","jquery.ui","sammy","jquery.tmpl",'i18n',"jquery.cookie","bootstrap","archiva.search",
"jquery.validate","jquery.json","knockout","redback.templates","archiva.templates",
- "redback.roles","redback","archiva.general-admin","archiva.repositories",
- "archiva.network-proxies","archiva.proxy-connectors","archiva.repository-groups","archiva.artifacts-management",
- "archiva.proxy-connectors-rules","archiva.docs"],
+ "redback.roles","redback","archiva.artifacts-management","archiva.docs"],
function(jquery,ui,sammy,tmpl,i18n,jqueryCookie,bootstrap,archivaSearch,jqueryValidate,jqueryJson,ko) {
/**
@@ -239,15 +237,8 @@ function(jquery,ui,sammy,tmpl,i18n,jquer
});
}
});
- //var myrepplugins = "archiva/admin/repository/legacy/main|archiva/admin/repository/maven2/main";
- self.administrationMenuItems.push({ text : $.i18n.prop('menu.network-proxies') , id: "menu-network-proxies-list-a" , href: "#networkproxies" , redback: "{permissions: ['archiva-manage-configuration']}", func: function(){displayNetworkProxies()}});
- self.administrationMenuItems.push({ text : $.i18n.prop('menu.repository-scanning') , id: "menu-repository-scanning-list-a" , href: "#scanningList" , redback: "{permissions: ['archiva-manage-configuration']}", func: function(){displayRepositoryScanning()}});
- self.administrationMenuItems.push({ text : $.i18n.prop('menu.runtime-configuration') , id: "menu-runtime-configuration-list-a" , href: "#runtimeconfig" , redback: "{permissions: ['archiva-manage-configuration']}", func: function(){displayRuntimeConfiguration()}});
- self.administrationMenuItems.push({ text : $.i18n.prop('menu.system-status') , id: "menu-system-status-list-a" , href: "#status" , redback: "{permissions: ['archiva-manage-configuration']}", func: function(){displaySystemStatus()}});
- self.administrationMenuItems.push({ text : $.i18n.prop('menu.ui-configuration') , id: "menu-ui-configuration-list-a" , href: "#uiconfig" , redback: "{permissions: ['archiva-manage-configuration']}", func: function(){displayUiConfiguration()}});
- self.administrationMenuItems.push({ text : $.i18n.prop('menu.reports') , id: "menu-report-list-a" , href: "#reports" , redback: "{permissions: ['archiva-manage-configuration']}", func: function(){displayReportsPage()}});
-
+
this.usersMenuItems = ko.observableArray([
{ text : $.i18n.prop('menu.users') , id: null},
{ text : $.i18n.prop('menu.users.manage') , id: "menu-users-list-a" , href: "#users" , redback: "{permissions: ['archiva-manage-users']}", func: function(){displayUsersGrid();}},