You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2020/11/05 21:49:50 UTC

[archiva] branch master updated: Adding tooltip

This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git


The following commit(s) were added to refs/heads/master by this push:
     new 20f3b50  Adding tooltip
20f3b50 is described below

commit 20f3b50c73d24c6f7449a7e6150722772393148d
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Thu Nov 5 22:49:33 2020 +0100

    Adding tooltip
---
 .../src/main/archiva-web/angular.json              |  1 +
 .../src/main/archiva-web/package-lock.json         |  5 +++
 .../src/main/archiva-web/package.json              |  1 +
 .../main/archiva-web/src/app/app-routing.module.ts |  4 +--
 .../src/main/archiva-web/src/app/app.module.ts     |  2 ++
 .../enable-tooltip.directive.spec.ts}              | 22 ++++---------
 .../enable-tooltip.directive.ts}                   | 17 +++++-----
 .../general/sidemenu/sidemenu.component.html       | 34 +++++++++----------
 .../user/manage-users/manage-users.component.html  |  4 +--
 .../manage-users-list.component.html               | 38 +++++++++++++++++++++-
 .../manage-users-list.component.ts                 | 16 +++++++--
 .../src/main/archiva-web/src/assets/i18n/en.json   | 25 ++++++++++++++
 12 files changed, 121 insertions(+), 48 deletions(-)

diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/angular.json b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/angular.json
index 9ed3ad0..f9631de 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/angular.json
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/angular.json
@@ -37,6 +37,7 @@
             ],
             "scripts": [
               "node_modules/jquery/dist/jquery.js",
+              "node_modules/popper.js/dist/umd/popper.min.js",
               "node_modules/bootstrap/dist/js/bootstrap.js",
               "src/assets/params/js/index.js"
             ]
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package-lock.json b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package-lock.json
index d78c092..5ca161b 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package-lock.json
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package-lock.json
@@ -8996,6 +8996,11 @@
         "ts-pnp": "^1.1.6"
       }
     },
+    "popper.js": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+      "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
+    },
     "portfinder": {
       "version": "1.0.28",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package.json b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package.json
index c040d42..060bd99 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package.json
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/package.json
@@ -26,6 +26,7 @@
     "bootstrap": "^4.5.0",
     "flag-icon-css": "^3.5.0",
     "jquery": "^3.5.1",
+    "popper.js": "^1.16.1",
     "rxjs": "~6.6.3",
     "service": "^0.1.4",
     "tslib": "^2.0.0",
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app-routing.module.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app-routing.module.ts
index 1f65d4b..9f1249e 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app-routing.module.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app-routing.module.ts
@@ -46,12 +46,12 @@ const routes: Routes = [
       { path: 'users', component: ManageUsersComponent,
         children: [
           {path: 'list', component: ManageUsersListComponent},
-          {path: 'add', component: ManageUsersAddComponent}
+          {path: 'add', component: ManageUsersAddComponent},
+          {path: '', redirectTo:'list', pathMatch:'full'}
         ]
       },
       { path: 'roles', component: ManageRolesComponent },
       { path: 'config', component: SecurityConfigurationComponent},
-      { path: '', component: ManageUsersComponent }
     ]
   },
   { path: 'contact', component: ContactComponent },
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app.module.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app.module.ts
index 81f2523..1fe0382 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app.module.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/app.module.ts
@@ -41,6 +41,7 @@ import { ManageRolesComponent } from './modules/user/manage-roles/manage-roles.c
 import { SecurityConfigurationComponent } from './modules/user/security-configuration/security-configuration.component';
 import { ManageUsersListComponent } from './modules/user/users/manage-users-list/manage-users-list.component';
 import { ManageUsersAddComponent } from './modules/user/users/manage-users-add/manage-users-add.component';
+import { EnableTooltipDirective } from './directives/enable-tooltip.directive';
 
 
 @NgModule({
@@ -62,6 +63,7 @@ import { ManageUsersAddComponent } from './modules/user/users/manage-users-add/m
     SecurityConfigurationComponent,
     ManageUsersListComponent,
     ManageUsersAddComponent,
+    EnableTooltipDirective,
 
 
   ],
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/directives/enable-tooltip.directive.spec.ts
similarity index 71%
copy from archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts
copy to archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/directives/enable-tooltip.directive.spec.ts
index 43f922d..916f276 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/directives/enable-tooltip.directive.spec.ts
@@ -8,7 +8,6 @@
  * 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
@@ -17,18 +16,11 @@
  * under the License.
  */
 
-import { Component, OnInit } from '@angular/core';
-
-@Component({
-  selector: 'app-manage-users-list',
-  templateUrl: './manage-users-list.component.html',
-  styleUrls: ['./manage-users-list.component.scss']
-})
-export class ManageUsersListComponent implements OnInit {
-
-  constructor() { }
-
-  ngOnInit(): void {
-  }
+import { EnableTooltipDirective } from './enable-tooltip.directive';
 
-}
+describe('EnableTooltipDirective', () => {
+  it('should create an instance', () => {
+    const directive = new EnableTooltipDirective();
+    expect(directive).toBeTruthy();
+  });
+});
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/directives/enable-tooltip.directive.ts
similarity index 71%
copy from archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts
copy to archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/directives/enable-tooltip.directive.ts
index 43f922d..099001c 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/directives/enable-tooltip.directive.ts
@@ -8,7 +8,6 @@
  * 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
@@ -17,18 +16,18 @@
  * under the License.
  */
 
-import { Component, OnInit } from '@angular/core';
+import {AfterViewChecked, AfterViewInit, Directive, ElementRef, OnInit} from '@angular/core';
 
-@Component({
-  selector: 'app-manage-users-list',
-  templateUrl: './manage-users-list.component.html',
-  styleUrls: ['./manage-users-list.component.scss']
+declare var jQuery:any;
+@Directive({
+  selector: '[appEnableTooltip]'
 })
-export class ManageUsersListComponent implements OnInit {
+export class EnableTooltipDirective implements AfterViewInit {
+
 
   constructor() { }
 
-  ngOnInit(): void {
+  ngAfterViewInit(): void {
+     jQuery('[data-toggle="tooltip"]').tooltip({container: 'body', html: true});
   }
-
 }
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sidemenu/sidemenu.component.html b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sidemenu/sidemenu.component.html
index e7ba377..c312cfc 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sidemenu/sidemenu.component.html
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/general/sidemenu/sidemenu.component.html
@@ -18,7 +18,7 @@
 -->
 <nav class="nav flex-column nav-pills " role="tablist" aria-orientation="vertical">
 
-    <div class="nav flex-column nav-pills" appNavSubgroup role="tablist" aria-orientation="vertical"
+    <div class="nav flex-column nav-pills" role="tablist" aria-orientation="vertical"
          [appViewPermission]="perms.menu.repo.section">
         <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">{{'sidemenu.repo.section'|translate}}</a>
 
@@ -32,43 +32,43 @@
            role="tab" aria-controls="v-pills-browse" aria-selected="false"
            [appViewPermission]="perms.menu.repo.upload">{{'sidemenu.repo.upload'|translate}}</a>
     </div>
-    <div class="nav flex-column nav-pills" appNavSubgroup aria-orientation="vertical" role="tablist"
+    <div class="nav flex-column nav-pills" aria-orientation="vertical" role="tablist"
          [appViewPermission]="perms.menu.admin.section">
         <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true"
            role="tab" aria-controls="v-pills-home" aria-selected="false">{{'sidemenu.admin.section'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-repos" routerLink="/admin/repositories" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-repos" routerLink="/admin/repositories" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.config" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.repositories'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-groups" routerLink="/admin/repositorygroups" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-groups" routerLink="/admin/repositorygroups" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.config" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.repositorygroups'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-proxy-conn" routerLink="/admin/proxy" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-proxy-conn" routerLink="/admin/proxy" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.config" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.proxy'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-network-proxy" routerLink="/admin/network" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-network-proxy" routerLink="/admin/network" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.config" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.network'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-repo-scan" routerLink="/admin/scanning" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-repo-scan" routerLink="/admin/scanning" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.config" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.scanning'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-runtime-configuration" routerLink="/admin/runtimeconfig" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-runtime-configuration" routerLink="/admin/runtimeconfig" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.config" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.runtimeconfig'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-status" routerLink="/admin/status" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-status" routerLink="/admin/status" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.status" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.status'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="admin-reports" routerLink="/admin/reports" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="admin-reports" routerLink="/admin/reports" routerLinkActive="active" data-toggle="pill"
            [appViewPermission]="perms.menu.admin.reports" role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.admin.reports'|translate}}</a>
     </div>
-    <div class="nav flex-column nav-pills" appNavSubgroup [appViewPermission]="perms.menu.user.section">
+    <div class="nav flex-column nav-pills" [appViewPermission]="perms.menu.user.section">
         <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true" data-toggle="pill"
            role="tab" aria-controls="v-pills-home" aria-selected="false">{{'sidemenu.user.section'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="users-manage" routerLink="/user/users" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="users-manage" routerLink="/user/users" routerLinkActive="active" data-toggle="pill"
            role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.user.users'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="users-roles" routerLink="/user/roles" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="users-roles" routerLink="/user/roles" routerLinkActive="active" data-toggle="pill"
            role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.user.roles'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="users-configuration" routerLink="/user/config" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="users-configuration" routerLink="/user/config" routerLinkActive="active" data-toggle="pill"
            role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.user.config'|translate}}</a>
     </div>
-    <div class="nav flex-column nav-pills" appNavSubgroup>
+    <div class="nav flex-column nav-pills" >
         <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true" data-toggle="pill"
            role="tab" aria-controls="v-pills-home" aria-selected="false">{{'sidemenu.doc.section'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="doc-userdoc" routerLink="/doc/userguide" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="doc-userdoc" routerLink="/doc/userguide" routerLinkActive="active" data-toggle="pill"
            role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.doc.userguide'|translate}}</a>
-        <a class="nav-link my-0 py-0" id="doc-rest-api" routerLink="/user/restapi" data-toggle="pill"
+        <a class="nav-link my-0 py-0" id="doc-rest-api" routerLink="/user/restapi" routerLinkActive="active" data-toggle="pill"
            role="tab" aria-controls="v-pills-browse" aria-selected="false">{{'sidemenu.doc.restapi'|translate}}</a>
     </div>
 </nav>
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/manage-users/manage-users.component.html b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/manage-users/manage-users.component.html
index 405ac10..c617180 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/manage-users/manage-users.component.html
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/manage-users/manage-users.component.html
@@ -19,10 +19,10 @@
 
 <ul class="nav nav-tabs">
     <li class="nav-item">
-        <a class="nav-link" routerLink="/user/users/list" href="#">{{'users.list.head' | translate}}</a>
+        <a class="nav-link" routerLink="/user/users/list" routerLinkActive="active" href="#">{{'users.list.head' | translate}}</a>
     </li>
     <li class="nav-item">
-        <a class="nav-link" routerLink="/user/users/add" href="#">{{'users.add.head' |translate }}</a>
+        <a class="nav-link" routerLink="/user/users/add" routerLinkActive="active" href="#">{{'users.add.head' |translate }}</a>
     </li>
 </ul>
 
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html
index d04453d..2f36763 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.html
@@ -17,4 +17,40 @@
   ~ under the License.
   -->
 
-<p>manage-users-list works!</p>
+<form class="mt-3 mb-3">
+    <div class="form-row align-items-center">
+        <div class="col-lg-4 col-md-2 col-sm-1">
+            <label class="sr-only" for="searchQuery">{{'users.list.search' |translate}}</label>
+            <input type="text" class="form-control" id="searchQuery" placeholder="Search" data-toggle="tooltip"
+                   data-placement="top" title="SEARCHHH">
+        </div>
+        <div class="col-auto">
+            <button type="submit" class="btn btn-primary">{{'search.button'|translate}}</button>
+        </div>
+    </div>
+
+
+</form>
+
+<table class="table" appEnableTooltip>
+    <thead class="thead-light">
+    <tr>
+        <th scope="col">{{'users.list.table.head.id' | translate}}</th>
+        <th scope="col">{{'users.list.table.head.user_id' | translate}}</th>
+        <th scope="col">{{'users.list.table.head.fullName' | translate}}</th>
+        <th scope="col">{{'users.list.table.head.email' | translate}}</th>
+        <th scope="col"><span class="fas fa-check" data-toggle="tooltip" data-placement="top"
+                              [attr.data-original-title]="heads.validated" [attr.aria-label]="heads.validated"></span>
+        </th>
+        <th scope="col"><span class="fas fa-lock" data-toggle="tooltip" data-placement="top"
+                              [attr.data-original-title]="heads.locked" [attr.aria-label]="heads.locked"></span></th>
+        <th scope="col"><span class="fa fa-chevron-circle-right" data-toggle="tooltip" data-placement="top"
+                              [attr.data-original-title]="heads.pwchange" [attr.aria-label]="heads.pwchange"></span>
+        </th>
+        <th scope="col">{{'users.list.table.head.lastLogin' | translate}}</th>
+        <th scope="col">{{'users.list.table.head.created' | translate}}</th>
+    </tr>
+    </thead>
+    <tbody>
+    </tbody>
+</table>
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts
index 43f922d..22625a7 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/app/modules/user/users/manage-users-list/manage-users-list.component.ts
@@ -17,7 +17,10 @@
  * under the License.
  */
 
-import { Component, OnInit } from '@angular/core';
+import { Component, OnInit, Input } from '@angular/core';
+import {TranslateService} from "@ngx-translate/core";
+import {AppComponent} from "../../../../app.component";
+import {UserService} from "../../../../services/user.service";
 
 @Component({
   selector: 'app-manage-users-list',
@@ -25,10 +28,19 @@ import { Component, OnInit } from '@angular/core';
   styleUrls: ['./manage-users-list.component.scss']
 })
 export class ManageUsersListComponent implements OnInit {
+  @Input() heads: any;
 
-  constructor() { }
+  constructor(private translator: TranslateService, private userService : UserService) { }
 
   ngOnInit(): void {
+    this.heads={};
+    // We need to wait for the translator initialization and use the init key as step in.
+    this.translator.get('init').subscribe( () => {
+      // Only table headings for small columns that use icons
+      for (let suffix of ['validated', 'locked', 'pwchange']) {
+        this.heads[suffix] = this.translator.instant('users.list.table.head.' + suffix);
+      }
+    });
   }
 
 }
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/assets/i18n/en.json b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/assets/i18n/en.json
index 16ebb2d..d43bd2a 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/assets/i18n/en.json
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/archiva-web/src/assets/i18n/en.json
@@ -1,4 +1,5 @@
 {
+  "init": "Initalize",
   "login": {
     "title": "Login to Archiva",
     "password": "Password",
@@ -47,5 +48,29 @@
   },
   "api" : {
     "rb.auth.invalid_credentials": "Invalid credentials given"
+  },
+  "users": {
+    "list": {
+      "head": "List Users",
+      "table":{
+        "head": {
+          "id": "ID",
+          "user_id": "User Identifier",
+          "email": "Email",
+          "fullName": "Name",
+          "validated": "User Validated",
+          "locked": "User Locked",
+          "pwchange": "Password Change Required",
+          "lastLogin": "Last Login",
+          "created": "Created"
+        }
+      }
+    },
+    "add": {
+      "head": "Add User"
+    }
+  },
+  "search": {
+    "button": "Search"
   }
 }
\ No newline at end of file