i18n: anadir traducciones en es, en y cat para gestion de roles y funciones en plugins (v1.24.0)
oggui-debian-package/pipeline/tag This commit looks good
Details
oggui-debian-package/pipeline/tag This commit looks good
Details
parent
b6007ecf8a
commit
b2237d7630
|
|
@ -10,6 +10,7 @@
|
|||
- La personalización se persiste en la base de datos dentro de `configData.command_roles` de forma 100% desacoplada sin requerir alteraciones en el esquema backend.
|
||||
- En `PluginService.getPluginGroups()`, los comandos disponibles en los menús de acción (`ExecuteCommandComponent`) se filtran reactivamente en función del rol y permisos del usuario autenticado, ocultando totalmente aquellas opciones que no le correspondan (ej. un conserje con perfil básico solo visualiza Reservar, Liberar y Renovar puesto, permaneciendo invisibles las funciones de instalación o mantenimiento).
|
||||
- Total adhesión a la sintaxis moderna de control de flujo Angular (`@if`, `@for`) y diseño modular de estilos CSS sin atributos inline.
|
||||
- Soporte de internacionalización integral (`@ngx-translate`) con catálogos actualizados en español (`es.json`), inglés (`en.json`) y catalán (`cat.json`) para todos los textos, pestañas, cabeceras y notificaciones toast de la configuración de roles.
|
||||
|
||||
## [1.23.0] - 2026-10-27
|
||||
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@
|
|||
class="plugin-status-toggle"
|
||||
[class.active]="plugin.enabled"
|
||||
[class.inactive]="!plugin.enabled">
|
||||
{{ plugin.enabled ? 'Activo' : 'Inactivo' }}
|
||||
{{ plugin.enabled ? ('active' | translate) : ('inactive' | translate) }}
|
||||
</mat-slide-toggle>
|
||||
</div>
|
||||
<p class="plugin-description">{{ plugin.descriptionKey ? (plugin.descriptionKey | translate) : plugin.description }}</p>
|
||||
<span class="plugin-author">Autor: {{ plugin.author }}</span>
|
||||
<span class="plugin-author">{{ 'pluginSettingsAuthor' | translate }}: {{ plugin.author }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
[class.active]="activeSubTab === 'settings'"
|
||||
(click)="setSubTab('settings')">
|
||||
<mat-icon class="subtab-nav-icon">tune</mat-icon>
|
||||
<span>Configuración</span>
|
||||
<span>{{ 'pluginSettingsConfigTab' | translate }}</span>
|
||||
</button>
|
||||
|
||||
@if (plugin.commands && plugin.commands.length > 0) {
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
[class.active]="activeSubTab === 'permissions'"
|
||||
(click)="setSubTab('permissions')">
|
||||
<mat-icon class="subtab-nav-icon">admin_panel_settings</mat-icon>
|
||||
<span>Funciones y Roles</span>
|
||||
<span>{{ 'pluginSettingsRolesTab' | translate }}</span>
|
||||
<span class="subtab-counter-badge">{{ plugin.commands.length }}</span>
|
||||
</button>
|
||||
}
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
[class.active]="activeSubTab === 'records'"
|
||||
(click)="setSubTab('records')">
|
||||
<mat-icon class="subtab-nav-icon">history</mat-icon>
|
||||
<span>Historial y Registros</span>
|
||||
<span>{{ 'pluginSettingsRecordsTab' | translate }}</span>
|
||||
@if (recordsTotal > 0) {
|
||||
<span class="subtab-counter-badge">{{ recordsTotal }}</span>
|
||||
}
|
||||
|
|
@ -68,17 +68,17 @@
|
|||
<div class="section-header-row">
|
||||
<div class="section-title-box">
|
||||
<mat-icon class="section-icon">tune</mat-icon>
|
||||
<h3 class="section-heading">Parámetros de Configuración del Plugin</h3>
|
||||
<h3 class="section-heading">{{ 'pluginSettingsParamsHeading' | translate }}</h3>
|
||||
</div>
|
||||
|
||||
<div class="form-actions-bar top-actions">
|
||||
<button mat-stroked-button color="warn" (click)="reset()" class="btn-reset">
|
||||
<mat-icon>restart_alt</mat-icon>
|
||||
Restaurar por defecto
|
||||
{{ 'pluginSettingsRestoreDefaults' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="save()" class="btn-save">
|
||||
<mat-icon>save</mat-icon>
|
||||
Guardar Configuración
|
||||
{{ 'pluginSettingsSaveConfig' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -191,23 +191,23 @@
|
|||
<div class="section-header-row">
|
||||
<div class="section-title-box">
|
||||
<mat-icon class="section-icon">admin_panel_settings</mat-icon>
|
||||
<h3 class="section-heading">Control de Acceso a Funciones por Rol</h3>
|
||||
<h3 class="section-heading">{{ 'pluginSettingsRolesHeading' | translate }}</h3>
|
||||
</div>
|
||||
|
||||
<div class="form-actions-bar top-actions">
|
||||
<button mat-stroked-button color="warn" (click)="resetRoles()" class="btn-reset">
|
||||
<mat-icon>restart_alt</mat-icon>
|
||||
Restaurar por defecto
|
||||
{{ 'pluginSettingsRestoreDefaults' | translate }}
|
||||
</button>
|
||||
<button mat-raised-button color="primary" (click)="saveRoles()" class="btn-save" [disabled]="!hasRoleChanges">
|
||||
<mat-icon>save</mat-icon>
|
||||
Guardar Permisos
|
||||
{{ 'pluginSettingsSaveRoles' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="roles-intro-text">
|
||||
Configura qué roles de usuario tienen autorización para visualizar y ejecutar cada una de las funciones expuestas por este plugin. Los usuarios que no pertenezcan a los roles seleccionados no verán la opción disponible en el menú de acciones de la consola.
|
||||
{{ 'pluginSettingsRolesDesc' | translate }}
|
||||
</p>
|
||||
|
||||
<div class="roles-matrix-card">
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
<table class="roles-matrix-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-command-header">Función / Acción del Plugin</th>
|
||||
<th class="col-command-header">{{ 'pluginSettingsColCommand' | translate }}</th>
|
||||
@for (role of availableRoles; track role.key) {
|
||||
<th class="col-role-header">
|
||||
<div class="role-header-content">
|
||||
|
|
@ -248,7 +248,7 @@
|
|||
[disabled]="role.key === 'ROLE_SUPER_ADMIN'"
|
||||
(change)="toggleRole(cmd.slug, role.key, $event.checked)"
|
||||
color="primary"
|
||||
[title]="role.key === 'ROLE_SUPER_ADMIN' ? 'Super Admin siempre tiene acceso total' : ('Permitir a ' + role.name)">
|
||||
[title]="role.key === 'ROLE_SUPER_ADMIN' ? ('pluginSettingsSuperAdminFullAccess' | translate) : ('pluginSettingsAllowRole' | translate:{ role: role.name })">
|
||||
</mat-checkbox>
|
||||
</td>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ export class PluginSettingsComponent implements OnInit, OnChanges, OnDestroy {
|
|||
if (!this.pluginName) return;
|
||||
this.pluginService.savePluginCommandRoles(this.pluginName, this.commandRoles);
|
||||
this.hasRoleChanges = false;
|
||||
this.toast.success('Permisos de funciones por rol actualizados correctamente', this.plugin?.title || 'Plugin');
|
||||
this.toast.success(this.translate.instant('pluginSettingsRolesSaved'), this.plugin?.title || 'Plugin');
|
||||
}
|
||||
|
||||
resetRoles(): void {
|
||||
|
|
@ -147,7 +147,7 @@ export class PluginSettingsComponent implements OnInit, OnChanges, OnDestroy {
|
|||
}
|
||||
this.commandRoles = map;
|
||||
this.hasRoleChanges = true;
|
||||
this.toast.info('Permisos restaurados a valores por defecto del plugin', this.plugin?.title || 'Plugin');
|
||||
this.toast.info(this.translate.instant('pluginSettingsRolesReset'), this.plugin?.title || 'Plugin');
|
||||
this.cdr.markForCheck();
|
||||
}
|
||||
|
||||
|
|
@ -159,11 +159,11 @@ export class PluginSettingsComponent implements OnInit, OnChanges, OnDestroy {
|
|||
}
|
||||
this.pluginService.togglePlugin(this.pluginName, checked).subscribe({
|
||||
next: () => {
|
||||
const statusText = checked ? 'activado' : 'desactivado';
|
||||
this.toast.success(`Plugin ${statusText} correctamente`, this.plugin?.title || 'Plugin');
|
||||
const statusKey = checked ? 'pluginSettingsPluginActivated' : 'pluginSettingsPluginDeactivated';
|
||||
this.toast.success(this.translate.instant(statusKey), this.plugin?.title || 'Plugin');
|
||||
},
|
||||
error: () => {
|
||||
this.toast.error('Error al cambiar el estado del plugin', this.plugin?.title || 'Plugin');
|
||||
this.toast.error(this.translate.instant('pluginSettingsToggleError'), this.plugin?.title || 'Plugin');
|
||||
this.loadPluginData();
|
||||
}
|
||||
});
|
||||
|
|
@ -270,13 +270,13 @@ export class PluginSettingsComponent implements OnInit, OnChanges, OnDestroy {
|
|||
save(): void {
|
||||
if (!this.pluginName) return;
|
||||
this.pluginService.savePluginConfig(this.pluginName, this.configData);
|
||||
this.toast.success('Configuración guardada correctamente', this.plugin?.title || 'Plugin');
|
||||
this.toast.success(this.translate.instant('pluginSettingsConfigSaved'), this.plugin?.title || 'Plugin');
|
||||
}
|
||||
|
||||
reset(): void {
|
||||
if (!this.pluginName) return;
|
||||
this.configData = this.pluginService.resetPluginConfig(this.pluginName);
|
||||
this.toast.info('Configuración restaurada a valores por defecto', this.plugin?.title || 'Plugin');
|
||||
this.toast.info(this.translate.instant('pluginSettingsConfigReset'), this.plugin?.title || 'Plugin');
|
||||
}
|
||||
|
||||
setSubTab(tab: string): void {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,27 @@
|
|||
"plugins": "Plugins",
|
||||
"pluginsTitle": "Plugins i Extensions",
|
||||
"pluginsDescription": "Gestió i personalització de mòduls instal·lats a OpenGnsys",
|
||||
"pluginSettingsConfigTab": "Configuració",
|
||||
"pluginSettingsRolesTab": "Funcions i Rols",
|
||||
"pluginSettingsRecordsTab": "Historial i Registres",
|
||||
"pluginSettingsParamsHeading": "Paràmetres de Configuració del Plugin",
|
||||
"pluginSettingsRestoreDefaults": "Restaurar per defecte",
|
||||
"pluginSettingsSaveConfig": "Desar Configuració",
|
||||
"pluginSettingsRolesHeading": "Control d'Accés a Funcions per Rol",
|
||||
"pluginSettingsSaveRoles": "Desar Permisos",
|
||||
"pluginSettingsRolesDesc": "Configura quins rols d'usuari tenen autorització per visualitzar i executar cadascuna de les funcions exposades per aquest plugin. Els usuaris que no pertanyin als rols seleccionats no veuran l'opció disponible al menú d'accions de la consola.",
|
||||
"pluginSettingsColCommand": "Funció / Acció del Plugin",
|
||||
"pluginSettingsSuperAdminFullAccess": "Super Admin sempre té accés total",
|
||||
"pluginSettingsAllowRole": "Permetre a {{ role }}",
|
||||
"pluginSettingsRolesSaved": "Permisos de funcions per rol actualitzats correctament",
|
||||
"pluginSettingsRolesReset": "Permisos restaurats als valors per defecte del plugin",
|
||||
"pluginSettingsConfigSaved": "Configuració desada correctament",
|
||||
"pluginSettingsConfigReset": "Configuració restaurada als valors per defecte",
|
||||
"pluginSettingsPluginActivated": "Plugin activat correctament",
|
||||
"pluginSettingsPluginDeactivated": "Plugin desactivat correctament",
|
||||
"pluginSettingsToggleError": "Error en canviar l'estat del plugin",
|
||||
"pluginSettingsAuthor": "Autor",
|
||||
"pluginSettingsEmptyGroup": "Aquest plugin no requereix paràmetres addicionals de configuració.",
|
||||
"imageCloning": "Imatge / Clonació",
|
||||
"labelDeployed": "Desplegada",
|
||||
"actionAddedSuccess": "Acció afegida correctament",
|
||||
|
|
|
|||
|
|
@ -2,6 +2,27 @@
|
|||
"plugins": "Plugins",
|
||||
"pluginsTitle": "Plugins & Extensions",
|
||||
"pluginsDescription": "Manage and customize modules installed on OpenGnsys",
|
||||
"pluginSettingsConfigTab": "Configuration",
|
||||
"pluginSettingsRolesTab": "Roles & Functions",
|
||||
"pluginSettingsRecordsTab": "History & Records",
|
||||
"pluginSettingsParamsHeading": "Plugin Configuration Parameters",
|
||||
"pluginSettingsRestoreDefaults": "Restore defaults",
|
||||
"pluginSettingsSaveConfig": "Save Configuration",
|
||||
"pluginSettingsRolesHeading": "Role-Based Function Access Control",
|
||||
"pluginSettingsSaveRoles": "Save Permissions",
|
||||
"pluginSettingsRolesDesc": "Configure which user roles are authorized to view and execute each function exposed by this plugin. Users without permission will not see the option in the console action menu.",
|
||||
"pluginSettingsColCommand": "Plugin Function / Action",
|
||||
"pluginSettingsSuperAdminFullAccess": "Super Admin always has full access",
|
||||
"pluginSettingsAllowRole": "Allow {{ role }}",
|
||||
"pluginSettingsRolesSaved": "Function permissions by role updated successfully",
|
||||
"pluginSettingsRolesReset": "Permissions restored to plugin defaults",
|
||||
"pluginSettingsConfigSaved": "Configuration saved successfully",
|
||||
"pluginSettingsConfigReset": "Configuration restored to defaults",
|
||||
"pluginSettingsPluginActivated": "Plugin activated successfully",
|
||||
"pluginSettingsPluginDeactivated": "Plugin deactivated successfully",
|
||||
"pluginSettingsToggleError": "Error changing plugin status",
|
||||
"pluginSettingsAuthor": "Author",
|
||||
"pluginSettingsEmptyGroup": "This plugin does not require additional configuration parameters.",
|
||||
"imageCloning": "Image / Cloning",
|
||||
"labelDeployed": "Deployed",
|
||||
"actionAddedSuccess": "Action added successfully",
|
||||
|
|
|
|||
|
|
@ -2,6 +2,27 @@
|
|||
"plugins": "Plugins",
|
||||
"pluginsTitle": "Plugins y Extensiones",
|
||||
"pluginsDescription": "Gestión y personalización de módulos instalados en OpenGnsys",
|
||||
"pluginSettingsConfigTab": "Configuración",
|
||||
"pluginSettingsRolesTab": "Funciones y Roles",
|
||||
"pluginSettingsRecordsTab": "Historial y Registros",
|
||||
"pluginSettingsParamsHeading": "Parámetros de Configuración del Plugin",
|
||||
"pluginSettingsRestoreDefaults": "Restaurar por defecto",
|
||||
"pluginSettingsSaveConfig": "Guardar Configuración",
|
||||
"pluginSettingsRolesHeading": "Control de Acceso a Funciones por Rol",
|
||||
"pluginSettingsSaveRoles": "Guardar Permisos",
|
||||
"pluginSettingsRolesDesc": "Configura qué roles de usuario tienen autorización para visualizar y ejecutar cada una de las funciones expuestas por este plugin. Los usuarios que no pertenezcan a los roles seleccionados no verán la opción disponible en el menú de acciones de la consola.",
|
||||
"pluginSettingsColCommand": "Función / Acción del Plugin",
|
||||
"pluginSettingsSuperAdminFullAccess": "Super Admin siempre tiene acceso total",
|
||||
"pluginSettingsAllowRole": "Permitir a {{ role }}",
|
||||
"pluginSettingsRolesSaved": "Permisos de funciones por rol actualizados correctamente",
|
||||
"pluginSettingsRolesReset": "Permisos restaurados a valores por defecto del plugin",
|
||||
"pluginSettingsConfigSaved": "Configuración guardada correctamente",
|
||||
"pluginSettingsConfigReset": "Configuración restaurada a valores por defecto",
|
||||
"pluginSettingsPluginActivated": "Plugin activado correctamente",
|
||||
"pluginSettingsPluginDeactivated": "Plugin desactivado correctamente",
|
||||
"pluginSettingsToggleError": "Error al cambiar el estado del plugin",
|
||||
"pluginSettingsAuthor": "Autor",
|
||||
"pluginSettingsEmptyGroup": "Este plugin no requiere parámetros adicionales de configuración.",
|
||||
"imageCloning": "Imagen / Clonación",
|
||||
"labelDeployed": "Desplegada",
|
||||
"actionAddedSuccess": "Acción añadida con éxito",
|
||||
|
|
|
|||
Loading…
Reference in New Issue