diff --git a/CHANGELOG.md b/CHANGELOG.md index 23e841f..327da6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html index aa87164..5904d9a 100644 --- a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html +++ b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.html @@ -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) }}
{{ plugin.descriptionKey ? (plugin.descriptionKey | translate) : plugin.description }}
- + @@ -32,7 +32,7 @@ [class.active]="activeSubTab === 'settings'" (click)="setSubTab('settings')">- 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 }}
| Función / Acción del Plugin | +{{ 'pluginSettingsColCommand' | translate }} | @for (role of availableRoles; track role.key) {
@@ -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 })">
}
diff --git a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.ts b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.ts
index b157bee..6552711 100644
--- a/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.ts
+++ b/ogWebconsole/src/app/components/plugins/plugin-settings/plugin-settings.component.ts
@@ -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 {
diff --git a/ogWebconsole/src/locale/cat.json b/ogWebconsole/src/locale/cat.json
index 2c6d631..00615d0 100644
--- a/ogWebconsole/src/locale/cat.json
+++ b/ogWebconsole/src/locale/cat.json
@@ -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",
diff --git a/ogWebconsole/src/locale/en.json b/ogWebconsole/src/locale/en.json
index a3b21f9..56970c1 100644
--- a/ogWebconsole/src/locale/en.json
+++ b/ogWebconsole/src/locale/en.json
@@ -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",
diff --git a/ogWebconsole/src/locale/es.json b/ogWebconsole/src/locale/es.json
index 7473d93..e58d15e 100644
--- a/ogWebconsole/src/locale/es.json
+++ b/ogWebconsole/src/locale/es.json
@@ -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",
|
|---|