Additional translation work.

This commit is contained in:
Matthew Ross 2017-03-06 18:50:49 -05:00
parent 32ab494e1e
commit 0f8b1991cc
9 changed files with 159 additions and 81 deletions

View File

@ -1,15 +1,15 @@
<section>
<h2>Board Administration</h2>
<h2>{{ strings['settings_boardAdmin'] }}</h2>
<div class="row">
<h3>Current Boards</h3>
<h3>{{ strings['settings_currentBoards'] }}</h3>
<div class="small right filters" *ngIf="boards.length">
<label class="inline right">
Show By User:
{{ strings['settings_showByUser'] }}:
<select class="autosize" [(ngModel)]="userFilter"
(change)="filterBoards()">
<option value="-1">Any User</option>
<option value="-1">{{ strings['settings_anyUser'] }}</option>
<option *ngFor="let user of users"
[value]="user.id">
{{ user.username }}
@ -18,23 +18,23 @@
</label>
<label class="inline right">
Filter By:
{{ strings['settings_filterBy'] }}:
<select class="autosize" [(ngModel)]="statusFilter"
(change)="filterBoards()">
<option value="-1">All Boards</option>
<option value="1">Active</option>
<option value="0">Inactive</option>
<option value="-1">{{ strings['settings_allBoards'] }}</option>
<option value="1">{{ strings['settings_active'] }}</option>
<option value="0">{{ strings['settings_inactive'] }}</option>
</select>
</label>
<label class="inline right">
Sort By:
{{ strings['settings_sortBy'] }}:
<select class="autosize" [(ngModel)]="sortFilter"
(change)="filterBoards()">
<option value="name-asc">Name (A-Z)</option>
<option value="name-desc">Name (Z-A)</option>
<option value="id-desc">Creation (New First)</option>
<option value="id-asc">Creation (Old First)</option>
<option value="name-asc">{{ strings['settings_name'] }} (A-Z)</option>
<option value="name-desc">{{ strings['settings_name'] }} (Z-A)</option>
<option value="id-desc">{{ strings['settings_creationNew'] }}</option>
<option value="id-asc">{{ strings['settings_creationOld'] }}</option>
</select>
</label>
</div>
@ -42,11 +42,11 @@
<table class="alternating">
<thead>
<tr>
<th>Name</th>
<th>Columns</th>
<th>Categories</th>
<th>Users</th>
<th>Actions</th>
<th>{{ strings['settings_name'] }}</th>
<th>{{ strings['settings_columns'] }}</th>
<th>{{ strings['settings_categories'] }}</th>
<th>{{ strings['settings_users'] }}</th>
<th>{{ strings['settings_actions'] }}</th>
</tr>
</thead>
@ -65,7 +65,8 @@
<ul>
<li *ngFor="let col of board.columns">
{{ col.name }}
<span class="badge" title="Task Count">{{ col.tasks ? col.tasks.length : 0 }}</span>
<span class="badge" title="Task Count">
{{ col.tasks ? col.tasks.length : 0 }}</span>
</li>
</ul>
</td>
@ -93,12 +94,12 @@
<td>
<span *ngIf="activeUser.security_level < 3">
<a class="padded" href="javascript:"
title="Edit Board"
title="{{ strings['settings_editBoard'] }}"
(click)="showModal('Edit', board)">
<i class="icon icon-edit color-primary"></i>
</a>
<a class="padded" href="javascript:"
title="Remove Board"
title="{{ strings['settings_removeBoard'] }}"
(click)="showConfirmModal(board)">
<i class="icon icon-trash-empty
color-secondary"></i>
@ -108,7 +109,9 @@
(change)="toggleBoardStatus(board)"
[ngModel]="board.is_active">
<span class="toggle"></span>
{{ board.is_active ? 'Active' : 'Inactive' }}
{{ board.is_active
? strings['settings_active']
: strings['settings_inactive'] }}
</label>
</span>
</td>
@ -122,38 +125,39 @@
<button *ngIf="activeUser && activeUser.security_level === 1"
(click)="showModal('Add')">
<i class="icon icon-plus"></i> Add Board
<i class="icon icon-plus"></i> {{ strings['settings_addBoard'] }}
</button>
</div>
</section>
<tb-modal modal-title="Confirm Board Removal" blocking="true"
modal-id="{{ MODAL_CONFIRM_ID }}">
<tb-modal modal-title="{{ strings['settings_confirmBoardRemoval'] }}"
blocking="true" modal-id="{{ MODAL_CONFIRM_ID }}">
<div class="center">
Removing a board cannot be undone.<br>Continue?
{{ strings['settings_removeBoardWarning'] }}<br>{{ strings['settings_continue'] }}
</div>
<div class="buttons">
<button class="flat"
(click)="removeBoard()"
[disabled]="saving">Yes</button>
[disabled]="saving">{{ strings['yes'] }}</button>
<button #defaultAction
(click)="modal.close(MODAL_CONFIRM_ID)"
[disabled]="saving">No</button>
[disabled]="saving">{{ strings['no'] }}</button>
</div>
</tb-modal>
<tb-modal modal-title="{{ modalProps.title }} Board"
<tb-modal modal-title="{{ modalProps.title === 'Add' ?
strings['settings_addBoard'] : strings['settings_editBoard'] }}"
modal-id="{{ MODAL_ID }}" wide="true">
<label>
Board Name
{{ strings['settings_boardName'] }}
<input #focusMe type="text" name="board-name"
placeholder="Board Name" [(ngModel)]="modalProps.name">
</label>
<div class="half-modal">
<label>Columns</label>
<label>{{ strings['settings_columns'] }}</label>
<ul class="modal-list" [hidden]="!modalProps.columns.length"
[dragula]="'columns-bag'" [dragulaModel]="modalProps.columns">
<li *ngFor="let column of modalProps.columns; let i = index">
@ -162,7 +166,7 @@
(edit)="onPropertyEdit('columns', 'name', i, $event)"></inline-edit>
<span class="actions">
<i class="icon icon-trash-empty color-secondary"
title="Remove"
title="{{ strings['settings_removeColumn'] }}"
(click)="modalProps.removeColumn(column)"></i>
</span>
</li>
@ -171,11 +175,12 @@
<div class="quick-add">
<form>
<input type="text" name="new-column"
placeholder="Column Name"
placeholder="{{ strings['settings_columnName'] }}"
(keyup.enter)="cancelEnterKey($event)"
[(ngModel)]="modalProps.newColumnName">
<button type="submit" class="flat" title="Add Column"
(click)="modalProps.addColumn($event)">
<button type="submit" class="flat"
title="{{ strings['settings_addColumn'] }}"
(click)="modalProps.addColumn($event)">
<i class="icon icon-plus"></i>
</button>
</form>
@ -183,7 +188,7 @@
</div>
<div class="half-modal">
<label>Categories</label>
<label>{{ strings['settings_categories'] }}</label>
<ul *ngIf="modalProps.categories.length" class="modal-list">
<li *ngFor="let category of modalProps.categories; let i = index">
<span class="badge" title="Default Task Color"
@ -201,7 +206,7 @@
<div class="quick-add categories">
<form>
<input type="text" name="new-category"
placeholder="Category Name"
placeholder="{{ strings['settings_categoryName'] }}"
(keyup.enter)="cancelEnterKey($event)"
[(ngModel)]="modalProps.newCategoryName">
<input type="color" name="category-default-color"

View File

@ -12,7 +12,8 @@ import {
Notification,
AuthService,
ModalService,
NotificationsService
NotificationsService,
StringsService
} from '../../shared/index';
import { SettingsService } from '../settings.service';
import { BoardAdminService } from './board-admin.service';
@ -36,6 +37,7 @@ export class BoardAdmin {
private modalProps: BoardData;
private noBoardsMessage: string;
private boardToRemove: Board;
private strings: any;
private userFilter: string;
private statusFilter: string;
@ -54,6 +56,7 @@ export class BoardAdmin {
private settings: SettingsService,
private boardService: BoardAdminService,
private notes: NotificationsService,
private stringsService: StringsService,
private dragula: DragulaService) {
this.MODAL_ID = 'board-addedit-form';
this.MODAL_CONFIRM_ID = 'board-remove-confirm';
@ -67,14 +70,17 @@ export class BoardAdmin {
this.sortFilter = 'name-asc';
auth.userChanged.subscribe((user: User) => {
this.updateActiveUser(user);
});
this.updateActiveUser(user);
});
settings.usersChanged.subscribe((users: Array<User>) => {
this.updateUsersList(users);
});
this.updateUsersList(users);
});
settings.boardsChanged.subscribe((boards: Array<Board>) => {
this.updateBoardsList(boards);
});
this.updateBoardsList(boards);
});
stringsService.stringsChanged.subscribe(newStrings => {
this.strings = newStrings;
});
}
ngAfterContentInit() {

View File

@ -21,8 +21,8 @@
<td>
<span *ngIf="user.can_admin">
<a class="padded" href="javascript:"
title="{{ strings['settings_edit'] }} {{ strings['settings_user'] }}"
(click)="showModal(strings['settings_edit'], user)">
title="{{ strings['settings_editUser'] }}"
(click)="showModal(false, user)">
<i class="icon icon-edit color-primary"></i>
</a>
<a class="padded" href="javascript:"
@ -41,9 +41,9 @@
</div>
<button *ngIf="activeUser.security_level < 3"
(click)="showModal(strings['settings_add'])">
(click)="showModal()">
<i class="icon icon-plus"></i>
{{ strings['settings_add'] }} {{ strings['settings_user'] }}
{{ strings['settings_addUser'] }}
</button>
</div>
</section>
@ -62,17 +62,20 @@
</div>
</tb-modal>
<tb-modal modal-title="{{ modalProps.title }} {{ strings['settings_user'] }}"
<tb-modal modal-title="{{ modalProps.prefix ? strings['settings_addUser']
: strings['settings_editUser'] }}"
modal-id="{{ MODAL_ID }}">
<label>
{{ modalProps.prefix }} {{ strings['settings_username'] }}
{{ modalProps.prefix ? strings['settings_username']
: strings['settings_changeUsername'] }}
<input #focusMe type="text" name="new-username"
placeholder="{{ strings['settings_username'] }}"
[(ngModel)]="modalProps.user.username">
</label>
<label>
{{ modalProps.prefix }} {{ strings['settings_password'] }}
{{ modalProps.prefix ? strings['settings_password']
: strings['settings_changePassword']}}
<input type="password" name="new-password"
placeholder="{{ strings['settings_password'] }}"
[(ngModel)]="modalProps.user.password">
@ -82,7 +85,8 @@
[(ngModel)]="modalProps.user.password_verify">
<label>
{{ modalProps.prefix }} {{ strings['settings_email'] }}
{{ modalProps.prefix ? strings['settings_email']
: strings['settings_changeEmail']}}
<input type="text" name="new-email"
placeholder="{{ strings['settings_emailPlaceholder'] }}"
[(ngModel)]="modalProps.user.email">
@ -127,9 +131,8 @@
<i class="icon"
[ngClass]="{ 'icon-plus': modalProps.prefix === '',
'icon-floppy': modalProps.prefix !== '' }"></i>
{{ modalProps.prefix === ''
? strings['settings_add'] : strings['save'] }}
{{ strings['settings_user'] }}
{{ modalProps.prefix ? strings['settings_addUser']
: strings['settings_saveUser'] }}
</button>
<button class="flat" (click)="modal.close(MODAL_ID)">
{{ strings['cancel'] }}

View File

@ -49,7 +49,7 @@ export class UserAdmin {
this.users = [];
this.boards = [];
this.modalProps = new ModalProperties('', '', new ModalUser(new User()));
this.modalProps = new ModalProperties(true, new ModalUser(new User()));
auth.userChanged
.subscribe(activeUser => {
@ -86,7 +86,7 @@ export class UserAdmin {
}
addEditUser(): void {
let isAdd = (this.modalProps.title === 'Add');
let isAdd = this.modalProps.prefix;
this.saving = true;
if (!this.validateModalUser()) {
@ -208,7 +208,7 @@ export class UserAdmin {
return false;
}
if (this.modalProps.title === 'Add' && user.password === '') {
if (this.modalProps.prefix && user.password === '') {
this.notes.add(new Notification('error', 'Password is required.'));
return false;
}
@ -231,12 +231,9 @@ export class UserAdmin {
return true;
}
private showModal(title: string, user?: UserDisplay): void {
let isAdd = (title === this.strings.settings_add);
private showModal(isAdd: boolean = true, user?: UserDisplay): void {
this.modalProps = {
title,
prefix: isAdd ? '' : this.strings.settings_change,
prefix: isAdd,
user: isAdd ? new ModalUser(new User()) : new ModalUser(user)
};

View File

@ -10,8 +10,7 @@ export class UserDisplay extends User {
export class ModalUser extends UserDisplay {
public password: string = '';
/* tslint:disable-next-line:variable-name */
public password_verify: string = '';
public password_verify: string = ''; // tslint:disable-line
public boardAccess: Array<string> = [];
constructor(user: User) {
@ -26,8 +25,7 @@ export class ModalUser extends UserDisplay {
}
export class ModalProperties {
constructor(public title: string,
public prefix: string,
constructor(public prefix: boolean,
public user: ModalUser) {
}
}

View File

@ -11,13 +11,13 @@
<div class="buttons">
<button [ngClass]="{ flat: !isActive('dashboard') }"
(click)="navigateTo('dashboard')">Dashboard</button>
(click)="navigateTo('dashboard')">{{ strings['dashboard'] }}</button>
<button [ngClass]="{ flat: !isActive('boards') }"
(click)="navigateTo('boards')">Boards</button>
(click)="navigateTo('boards')">{{ strings['boards'] }}</button>
<button [ngClass]="{ flat: !isActive('settings') }"
(click)="navigateTo('settings')">Settings</button>
(click)="navigateTo('settings')">{{ strings['settings'] }}</button>
<button class="flat"
(click)="logout()">Logout ({{ username }})</button>
(click)="logout()">{{ strings['logout'] }} ({{ username }})</button>
</div>
</nav>

View File

@ -3,25 +3,34 @@ import { Router } from '@angular/router';
import { Constants } from '../constants';
import { AuthService } from '../auth/index';
import { NotificationsService } from '../notifications/index';
import { Notification } from '../models/index';
import { NotificationsService } from '../notifications/index';
import { StringsService } from '../strings/strings.service';
@Component({
selector: 'tb-top-nav',
templateUrl: 'app/shared/top-nav/top-nav.component.html'
})
export class TopNav {
private strings: any;
@Input('page-name') pageName: string = '';
version: string = '';
username: string = '';
constructor(constants: Constants, private router: Router,
private authService: AuthService,
private notes: NotificationsService) {
private notes: NotificationsService,
private stringsService: StringsService) {
this.version = constants.VERSION;
authService.userChanged
.subscribe(user => this.username = user.username);
stringsService.stringsChanged.subscribe(newStrings => {
this.strings = newStrings;
});
}
logout(): void {

View File

@ -6,7 +6,11 @@
"save": "Save",
"cancel": "Cancel",
"dashboard": "Dashboard",
"boards": "Boards",
"settings": "Settings",
"logout": "Logout",
"settings_userSettings": "My Settings",
"settings_changePassword": "Change Password",
"settings_currentPassword": "Current Password",
@ -35,17 +39,43 @@
"settings_actions": "Actions",
"settings_edit": "Edit",
"settings_removeUser": "Remove User",
"settings_add": "Add",
"settings_change": "Change",
"settings_addUser": "Add User",
"settings_editUser": "Edit User",
"settings_confirmUserRemoval": "Confirm User Removal",
"settings_removeUserWarning": "Removing a user cannot be undone.",
"setings_continue": "Continue?",
"settings_continue": "Continue?",
"settings_username": "Username",
"settings_password": "Password",
"settings_emailPlaceholder": "New Email - Blank to disable",
"settings_defaultBoardHelp": "Selecting a default board adds the user to that board.",
"settings_boardAccess": "Board Access",
"settings_boardAdmin": "Board Admin",
"settings_admin": "Admin"
"settings_admin": "Admin",
"settings_boardAdmin": "Board Administration",
"settings_currentBoards": "Current Boards",
"settings_showByUser": "Show By User",
"settings_filterBy": "Filter By",
"settings_allBoards": "All Boards",
"settings_active": "Active",
"settings_inactive": "Inactive",
"settings_anyUser": "Any User",
"settings_sortBy": "Sort By",
"settings_creationNew": "Creation (New First)",
"settings_creationOld": "Creation (Old First)",
"settings_name": "Name",
"settings_columns": "Columns",
"settings_categories": "Categories",
"settings_users": "Users",
"settings_editBoard": "Edit Board",
"settings_addBoard": "Add Board",
"settings_removeBoard": "Remove Board",
"settings_confirmBoardRemoval": "Confirm Board Removal",
"settings_removeBoardWarning": "Removing a board cannot be undone.",
"settings_boardName": "Board Name",
"settings_removeColumn": "Remove Column",
"settings_columnName": "Column Name",
"settings_addColumn": "Add Column",
"settings_categoryName": "Category Name"
}

View File

@ -6,7 +6,11 @@
"save": "Guardar",
"cancel": "Cancelar",
"dashboard": "Salpicadero",
"boards": "Tableros",
"settings": "Ajustes",
"logout": "Cerrar Sesión",
"settings_userSettings": "Mi Configuración",
"settings_changePassword": "Cambia Contraseña",
"settings_currentPassword": "Contraseña Actual",
@ -35,17 +39,43 @@
"settings_actions": "Acciones",
"settings_edit": "Editar",
"settings_removeUser": "Eliminar Usuario",
"settings_add": "Agregar",
"settings_change": "Cambia",
"settings_addUser": "Agregar Usuario",
"settings_editUser": "Cambia Usuario",
"settings_confirmUserRemoval": "Confirmar Eliminación del Usuario",
"settings_removeUserWarning": "No se puede deshacer la eliminación de un usuario.",
"setings_continue": "¿Continuar?",
"settings_continue": "¿Continuar?",
"settings_username": "Nombre de Usuario",
"settings_password": "Contraseña",
"settings_emailPlaceholder": "Nuevo Email - En blanco para deshabilitar",
"settings_defaultBoardHelp": "La selección de una tarjeta predeterminada añade el usuario a esa tarjeta.",
"settings_boardAccess": "Acceso a los Tableros",
"settings_boardAdmin": "Administrador de los Tableros",
"settings_admin": "Administrador"
"settings_admin": "Administrador",
"settings_boardAdmin": "Administración de Tableros",
"settings_currentBoards": "Tableros Actuales",
"settings_showByUser": "Mostrar por Usuario",
"settings_filterBy": "Filtrar por",
"settings_allBoards": "Todos los Tableros",
"settings_active": "Activo",
"settings_inactive": "Inactiva",
"settings_anyUser": "Cualquier Usuario",
"settings_sortBy": "Ordenar por",
"settings_creationNew": "Creación (Nuevo Primero)",
"settings_creationOld": "Creación (Viejo Primero)",
"settings_name": "Nombre",
"settings_columns": "Columnas",
"settings_categories": "Categorías",
"settings_users": "Usuarios",
"settings_editBoard": "Cambia Tablero",
"settings_addBoard": "Agregar Tablero",
"settings_removeBoard": "Eliminar Tablero",
"settings_confirmBoardRemoval": "Confirmar Eliminación del Tablero",
"settings_removeBoardWarning": "No se puede deshacer la eliminación de un tablero.",
"settings_boardName": "Nombre del Tablero",
"settings_removeColumn": "Eliminar Columna",
"settings_columnName": "Nombre del Columna",
"settings_addColumn": "Agregar Columna",
"settings_categoryName": "Nombre del Categoría"
}