diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java b/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java index f84a975452..3d0ea94536 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java +++ b/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java @@ -92,5 +92,5 @@ public interface PluginManager { /** * Install all pending plugins and restart the scm context. */ - void installPendingAndRestart(); + void executePendingAndRestart(); } diff --git a/scm-ui-components/packages/ui-components/src/CardColumn.js b/scm-ui-components/packages/ui-components/src/CardColumn.js index 713e1bced3..58722c0cac 100644 --- a/scm-ui-components/packages/ui-components/src/CardColumn.js +++ b/scm-ui-components/packages/ui-components/src/CardColumn.js @@ -48,6 +48,7 @@ type Props = { footerRight: React.Node, link?: string, action?: () => void, + className?: string, // context props classes: any @@ -72,13 +73,14 @@ class CardColumn extends React.Component { contentRight, footerLeft, footerRight, - classes + classes, + className } = this.props; const link = this.createLink(); return ( <> {link} -
+
{avatar}
diff --git a/scm-ui-components/packages/ui-types/src/Plugin.js b/scm-ui-components/packages/ui-types/src/Plugin.js index 0114716757..0f9694b5fb 100644 --- a/scm-ui-components/packages/ui-types/src/Plugin.js +++ b/scm-ui-components/packages/ui-types/src/Plugin.js @@ -4,6 +4,7 @@ import type {Collection, Links} from "./hal"; export type Plugin = { name: string, version: string, + newVersion?: string, displayName: string, description?: string, author: string, @@ -24,3 +25,11 @@ export type PluginGroup = { name: string, plugins: Plugin[] }; + +export type PendingPlugins = { + _links: Links, + _embedded: { + new: [], + update: [], + } +} diff --git a/scm-ui-components/packages/ui-types/src/index.js b/scm-ui-components/packages/ui-types/src/index.js index ba2b9f5481..9207868a73 100644 --- a/scm-ui-components/packages/ui-types/src/index.js +++ b/scm-ui-components/packages/ui-types/src/index.js @@ -25,7 +25,7 @@ export type { SubRepository, File } from "./Sources"; export type { SelectValue, AutocompleteObject } from "./Autocomplete"; -export type { Plugin, PluginCollection, PluginGroup } from "./Plugin"; +export type { Plugin, PluginCollection, PluginGroup, PendingPlugins } from "./Plugin"; export type { RepositoryRole } from "./RepositoryRole"; diff --git a/scm-ui/public/locales/de/admin.json b/scm-ui/public/locales/de/admin.json index 8d9c876537..d2cd2c6640 100644 --- a/scm-ui/public/locales/de/admin.json +++ b/scm-ui/public/locales/de/admin.json @@ -29,22 +29,32 @@ "installedNavLink": "Installiert", "availableNavLink": "Verfügbar" }, - "installPending": "Austehende Plugins installieren", + "executePending": "Austehende Plugin-Änderungen ausführen", "noPlugins": "Keine Plugins gefunden.", "modal": { - "title": "{{name}} Plugin installieren", + "title": { + "install": "{{name}} Plugin installieren", + "update": "{{name}} Plugin aktualisieren" + }, "restart": "Neustarten um Plugin zu aktivieren", "install": "Installieren", + "update": "Aktualisieren", + "installQueue": "Werden installiert:", + "updateQueue": "Werden aktualisiert:", "installAndRestart": "Installieren und Neustarten", + "updateAndRestart": "Aktualisieren und Neustarten", + "executeAndRestart": "Ausführen und Neustarten", "abort": "Abbrechen", "author": "Autor", "version": "Version", + "currentVersion": "Installierte Version", + "newVersion": "Neue Version", "dependencyNotification": "Mit diesem Plugin werden folgende Abhängigkeiten mit installiert, wenn sie noch nicht vorhanden sind!", "dependencies": "Abhängigkeiten", "successNotification": "Das Plugin wurde erfolgreich installiert. Um Änderungen an der UI zu sehen, muss die Seite neu geladen werden:", "reload": "jetzt neu laden", "restartNotification": "Der SCM-Manager Kontext sollte nur neu gestartet werden, wenn aktuell niemand damit arbeitet.", - "installPending": "Die folgenden Plugins werden installiert. Anschließend wird der SCM-Manager Kontext neu gestartet." + "executePending": "Die folgenden Plugin-Änderungen werden ausgeführt. Anschließend wird der SCM-Manager Kontext neu gestartet." } }, "repositoryRole": { diff --git a/scm-ui/public/locales/en/admin.json b/scm-ui/public/locales/en/admin.json index 99febb68fc..63f6089b09 100644 --- a/scm-ui/public/locales/en/admin.json +++ b/scm-ui/public/locales/en/admin.json @@ -29,22 +29,32 @@ "installedNavLink": "Installed", "availableNavLink": "Available" }, - "installPending": "Install pending plugins", + "executePending": "Execute pending plugin changes", "noPlugins": "No plugins found.", "modal": { - "title": "Install {{name}} Plugin", + "title": { + "install": "Install {{name}} Plugin", + "update": "Update {{name}} Plugin" + }, "restart": "Restart to activate", "install": "Install", + "update": "Update", + "installQueue": "Will be installed:", + "updateQueue": "Will be updated:", "installAndRestart": "Install and Restart", + "updateAndRestart": "Update and Restart", + "executeAndRestart": "Execute and Restart", "abort": "Abort", "author": "Author", "version": "Version", + "currentVersion": "Installed version", + "newVersion": "New version", "dependencyNotification": "With this plugin, the following dependencies will be installed if they are not available yet!", "dependencies": "Dependencies", "successNotification": "Successful installed plugin. You have to reload the page, to see ui changes:", "reload": "reload now", "restartNotification": "You should only restart the scm-manager context if no one else is currently working with it.", - "installPending": "The following plugins will be installed and after installation the scm-manager context will be restarted." + "executePending": "The following plugin changes will be executed and after that the scm-manager context will be restarted." } }, "repositoryRole": { diff --git a/scm-ui/public/locales/es/admin.json b/scm-ui/public/locales/es/admin.json new file mode 100644 index 0000000000..14abf626d6 --- /dev/null +++ b/scm-ui/public/locales/es/admin.json @@ -0,0 +1,83 @@ +{ + "admin": { + "menu": { + "navigationLabel": "Menú de administración", + "informationNavLink": "Información", + "settingsNavLink": "Ajustes", + "generalNavLink": "General" + }, + "info": { + "currentAppVersion": "Versión actual de la aplicación", + "communityTitle": "Soporte de la comunidad", + "communityIconAlt": "Icono del soporte de la comunidad", + "communityInfo": "Contacte con el equipo de soporte de SCM-Manager para questiones acerca de SCM-Manager, para informar de errores o pedir nuevas funcionalidades use los canales oficiales.", + "communityButton": "Contactar con nuestro equipo", + "enterpriseTitle": "Soporte empresarial", + "enterpriseIconAlt": "Icono del soporte para empresas", + "enterpriseInfo": "¿Necesita ayuda para la integración de SMC-Manager en sus procesos, con la personalización de la herramienta o simplemente un acuerdo de nivel de servicio (SLA)?", + "enterprisePartner": "Póngase en contacto con nuestro socio de desarrollo Cloudogu! Su equipo está esperando para tratar sus requisitos con usted y estará encantado de darle un presupuesto.", + "enterpriseLink": "https://cloudogu.com/en/scm-manager-enterprise/", + "enterpriseButton": "Pedir soporte empresarial" + } + }, + "plugins": { + "title": "Complementos", + "installedSubtitle": "Complementos instalados", + "availableSubtitle": "Complementos disponibles", + "menu": { + "pluginsNavLink": "Complementos", + "installedNavLink": "Instalados", + "availableNavLink": "Disponibles" + }, + "installPending": "Instalar los complementos pendientes", + "noPlugins": "No se han encontrado complementos.", + "modal": { + "title": "Instalar complemento {{name}} ", + "restart": "Reiniciar para activar", + "install": "Instalar", + "installAndRestart": "Instalar y reiniciar", + "abort": "Cancelar", + "author": "Autor", + "version": "Versión", + "dependencyNotification": "Con este complemento las siguientes dependencias serán instaladas si no lo han sido ya", + "dependencies": "Dependencias", + "successNotification": "Complemento instalado correctamente. Necesita recargar la página para ver los cambios:", + "reload": "recargar ahora", + "restartNotification": "Usted debería reiniciar scm-manager sólo si actualmente no hay nadie trabajando con el.", + "installPending": "Los siguientes complementos serán instalados y después de la instalación sdm-manager será reiniciado." + } + }, + "repositoryRole": { + "navLink": "Roles y permisos", + "title": "Roles y permisos", + "errorTitle": "Error", + "errorSubtitle": "Error desconocido", + "createSubtitle": "Crear nuevo rol", + "editSubtitle": "Editar rol", + "overview": { + "title": "Visión general de todos los roles", + "noPermissionRoles": "No se han encontrado roles.", + "createButton": "Crear rol" + }, + "editButton": "Editar", + "name": "Nombre", + "type": "Tipo", + "verbs": "Permisos", + "system": "Sistema", + "form": { + "name": "Nombre", + "permissions": "Permisos", + "submit": "Guardar" + }, + "delete": { + "button": "Borrar", + "subtitle": "Eliminar el rol", + "confirmAlert": { + "title": "Eliminar el rol", + "message": "¿Realmente desea borrar el rol? Todos los usuarios de este rol perderń sus permisos.", + "submit": "Sí", + "cancel": "No" + } + } + } +} diff --git a/scm-ui/public/locales/es/commons.json b/scm-ui/public/locales/es/commons.json new file mode 100644 index 0000000000..e130ce8b17 --- /dev/null +++ b/scm-ui/public/locales/es/commons.json @@ -0,0 +1,90 @@ +{ + "login": { + "title": "Iniciar sesión", + "subtitle": "Por favor inicie sesión para continuar", + "logo-alt": "SCM-Manager", + "username-placeholder": "Su nombre de usuario", + "password-placeholder": "Su contraseña", + "submit": "Iniciar sesión", + "plugin": "Plugin", + "feature": "Feature", + "tip": "Tip", + "loading": "Cargando ...", + "error": "Error" + }, + "logout": { + "error": { + "title": "Cierre de sesión fallido", + "subtitle": "Ha ocurrido un error al cerrar la sesión" + } + }, + "app": { + "error": { + "title": "Error", + "subtitle": "Ha ocurrido un error desconocido" + } + }, + "errorNotification": { + "prefix": "Error", + "loginLink": "Aquí puede iniciar la sesión de nuevo.", + "timeout": "La sesión ha caducado", + "wrongLoginCredentials": "Credenciales incorrectas", + "forbidden": "Usted no tiene permiso para ver esta sección" + }, + "loading": { + "alt": "Cargando ..." + }, + "logo": { + "alt": "SCM-Manager" + }, + "primary-navigation": { + "repositories": "Repositorios", + "users": "Usuarios", + "logout": "Cerrar sesión", + "groups": "Grupos", + "admin": "Administración" + }, + "filterEntries": "Filtrar entradas", + "autocomplete": { + "group": "Grupo", + "user": "Usuario", + "noGroupOptions": "No hay sugerencias disponibles", + "groupPlaceholder": "Nombre del grupo", + "noUserOptions": "No hay sugerencias disponibles", + "userPlaceholder": "Nombre de usuario", + "loading": "Cargando..." + }, + "paginator": { + "next": "Siguiente", + "previous": "Anterior" + }, + "profile": { + "navigationLabel": "Menú de sección", + "informationNavLink": "Información", + "changePasswordNavLink": "Cambiar contraseña", + "settingsNavLink": "Ajustes", + "username": "Nombre de usuario", + "displayName": "Nombre a mostrar", + "mail": "Correo electrónico", + "groups": "Grupos", + "information": "Información", + "change-password": "Cambiar contraseña", + "error-title": "Error", + "error-subtitle": "No se puede mostrar la sección", + "error": "Error", + "error-message": "'me' no está definido" + }, + "password": { + "label": "Contraseña", + "newPassword": "Nueva contraseña", + "passwordHelpText": "Contraseña del usuario en texto plano", + "passwordConfirmHelpText": "Repita la contraseña para confirmar", + "currentPassword": "Contraseña actual", + "currentPasswordHelpText": "La contraseña ya está en uso", + "confirmPassword": "Confirme la contraseña", + "passwordInvalid": "La contraseña debe tener entre 6 y 32 caracteres", + "passwordConfirmFailed": "Las contraseñas deben ser identicas", + "submit": "Guardar", + "changedSuccessfully": "Contraseña cambiada correctamente" + } +} diff --git a/scm-ui/public/locales/es/config.json b/scm-ui/public/locales/es/config.json new file mode 100644 index 0000000000..3b5ab843dd --- /dev/null +++ b/scm-ui/public/locales/es/config.json @@ -0,0 +1,78 @@ +{ + "config": { + "navigationLabel": "Menú de administración", + "title": "Configuración global", + "errorTitle": "Error", + "errorSubtitle": "Error de configuración desconocido", + "form": { + "submit": "Enviar", + "submit-success-notification": "¡Configuración cambiada correctamente!", + "no-read-permission-notification": "Por favor, tenga en cuenta: ¡No tiene permiso para ver la configuración!", + "no-write-permission-notification": "Por favor, tenga en cuenta: ¡No tiene permiso para editar la configuración!" + } + }, + "proxy-settings": { + "name": "Ajustes del proxy", + "proxy-password": "Contraseña del proxy", + "proxy-port": "Puerto del proxy", + "proxy-server": "Servidor proxy", + "proxy-user": "Usuario del proxy", + "enable-proxy": "Habilitar proxy", + "proxy-excludes": "Excepciones del proxy", + "remove-proxy-exclude-button": "Eliminar las excepciones del proxy", + "add-proxy-exclude-error": "La excepción que desea añadir al proxy es incorrecta", + "add-proxy-exclude-textfield": "Añada aquí las excepciones que desee incluir al proxy", + "add-proxy-exclude-button": "Añadir excepción al proxy" + }, + "base-url-settings": { + "name": "Ajustes de la URL base", + "base-url": "URL base", + "force-base-url": "Forzar la URL base" + }, + "login-attempt": { + "name": "Intento de inicio de sesión", + "login-attempt-limit": "Límite de intentos de inicio de sesión", + "login-attempt-limit-timeout": "Tiempo de espera para el intento de inicio de sesión" + }, + "general-settings": { + "realm-description": "Descripción del dominio", + "disable-grouping-grid": "Deshabilitar grupos", + "date-format": "Formato de la fecha", + "anonymous-access-enabled": "Acceso anónimo habilitado", + "skip-failed-authenticators": "Omitir autenticadores fallidos", + "plugin-url": "URL del almacén de complementos", + "enabled-xsrf-protection": "Protección XSRF habilitada", + "namespace-strategy": "Estrategia para el espacio de nombres", + "login-info-url": "URL de información de inicio de sesión" + }, + "validation": { + "date-format-invalid": "El formato de la fecha es incorrecto", + "login-attempt-limit-timeout-invalid": "El valor no es un número", + "login-attempt-limit-invalid": "El valor no es un número", + "plugin-url-invalid": "La URL es incorrecta" + }, + "help": { + "realmDescriptionHelpText": "Descripción del dominio de autenticación.", + "dateFormatHelpText": "Formato de la fecha. Por favor, heche un vistazo a la documentación de MomentJS.", + "pluginUrlHelpText": "La URL de la API del almacén de complementos. Explicación de los marcadores: version = Versión de SCM-Manager; os = Sistema operativo; arch = Arquitectura", + "enableForwardingHelpText": "Habilitar el redireccionamiento de puertos para mod_proxy.", + "disableGroupingGridHelpText": "Deshabilitar los grupos de repositorios. Se requiere una recarga completa de la página después de un cambio en este valor.", + "allowAnonymousAccessHelpText": "Los usuarios anónimos tienen acceso de lectura en los repositorios públicos.", + "skipFailedAuthenticatorsHelpText": "No detenga la cadena de autenticación si un autenticador encuentra al usuario pero no puede autenticarlo.", + "adminGroupsHelpText": "Nombres de los grupos con permisos de administrador.", + "adminUsersHelpText": "Nombres de los usuarios con permisos de administrador.", + "forceBaseUrlHelpText": "Redirige a la URL base si la solicitud proviene de otra URL.", + "baseUrlHelpText": "La URL de la aplicación (con la ruta del contexto), por ejemplo: http://localhost:8080/scm", + "loginAttemptLimitHelpText": "Máximo número permitido de intentos de inicio de sesión. Use -1 para deshabilitar este límite.", + "loginAttemptLimitTimeoutHelpText": "Tiempo de espera en segundos para los usuarios que están deshabilitados temporalmente debido a demasiado intentos fallidos de inicio de sesión.", + "enableProxyHelpText": "Habilitar proxy", + "proxyPortHelpText": "El puerto del proxy", + "proxyPasswordHelpText": "La contraseña para la autenticación del servidor proxy.", + "proxyServerHelpText": "El servidor proxy", + "proxyUserHelpText": "El nombre de usuario para la autenticación del servidor proxy.", + "proxyExcludesHelpText": "Patrones globales para hostnames que deben excluirse de la configuración del proxy.", + "enableXsrfProtectionHelpText": "Habilitar la protección de cookies XSRF. Nota: Esta funcionalidad todavía es experimental.", + "nameSpaceStrategyHelpText": "La estrategia para el espacio de nombres.", + "loginInfoUrlHelpText": "URL para la información en el inicio de sesión (consejos sobre complementos y funcionalidades en la página de inicio de sesión). Si esto se omite, no se mostrará información de inicio de sesión." + } +} diff --git a/scm-ui/public/locales/es/groups.json b/scm-ui/public/locales/es/groups.json new file mode 100644 index 0000000000..ffba16c354 --- /dev/null +++ b/scm-ui/public/locales/es/groups.json @@ -0,0 +1,76 @@ +{ + "group": { + "name": "Nombre", + "description": "Descripción", + "creationDate": "Fecha de creación", + "lastModified": "Última modificación", + "type": "Tipo", + "external": "Externo", + "internal": "Interno", + "members": "Miembros" + }, + "groups": { + "title": "Grupos", + "subtitle": "Crear, leer, actualizar y borrar grupos", + "noGroups": "No se han encontrado grupos." + }, + "singleGroup": { + "errorTitle": "Error", + "errorSubtitle": "Error de grupo desconocido", + "menu": { + "navigationLabel": "Menú de grupo", + "informationNavLink": "Información", + "settingsNavLink": "Ajustes", + "generalNavLink": "General", + "setPermissionsNavLink": "Permisos" + } + }, + "add-group": { + "title": "Crear grupo", + "subtitle": "Crear un nuevo grupo" + }, + "create-group-button": { + "label": "Crear grupo" + }, + "edit-group-button": { + "label": "Editar" + }, + "add-member-button": { + "label": "Añadir miembro" + }, + "remove-member-button": { + "label": "Eliminar miembro" + }, + "add-member-textfield": { + "label": "Añadir miembro", + "error": "El nombre del miembro es incorrecto" + }, + "add-member-autocomplete": { + "placeholder": "Introducir el nombre del miembro", + "loading": "Cargando...", + "no-options": "No hay sugerencias disponibles" + }, + "groupForm": { + "subtitle": "Editar grupo", + "externalSubtitle": "Editar grupo externo", + "submit": "Guardar", + "nameError": "El nombre del grupo es incorrecto", + "descriptionError": "La descripción es incorrecta", + "help": { + "nameHelpText": "Nombre único del grupo", + "descriptionHelpText": "Descripción breve del grupo", + "memberHelpText": "Nombres de usuario de los miembros del grupo", + "externalHelpText": "Los miembros son gestionados por un sistema externo como por ejemplo LDAP" + } + }, + "deleteGroup": { + "subtitle": "Borrar grupo", + "button": "Borrar", + "confirmAlert": { + "title": "Borrar grupo", + "message": "¿Realmente desea borrar el grupo?", + "submit": "Sí", + "cancel": "No" + } + } +} diff --git a/scm-ui/public/locales/es/permissions.json b/scm-ui/public/locales/es/permissions.json new file mode 100644 index 0000000000..d3da1103ea --- /dev/null +++ b/scm-ui/public/locales/es/permissions.json @@ -0,0 +1,6 @@ +{ + "setPermissions": { + "button": "Guardar", + "setPermissionsSuccessful": "Permisos guardados correctamente" + } +} diff --git a/scm-ui/public/locales/es/repos.json b/scm-ui/public/locales/es/repos.json new file mode 100644 index 0000000000..08c9235593 --- /dev/null +++ b/scm-ui/public/locales/es/repos.json @@ -0,0 +1,189 @@ +{ + "repository": { + "namespace": "Espacio de nombres", + "name": "Nombre", + "type": "Tipo", + "contact": "Contacto", + "description": "Descripción", + "creationDate": "Fecha de creación", + "lastModified": "Última modificación" + }, + "validation": { + "namespace-invalid": "El espacio de nombres del repositorio es incorrecto", + "name-invalid": "El nombre del repositorio es incorrecto", + "contact-invalid": "El contacto debe ser una dirección de correo electrónico válida", + "branch": { + "nameInvalid": "El nombre de la rama es incorrecto" + } + }, + "help": { + "namespaceHelpText": "El espacio de nombres del repositorio. Este nombre formará parte de la URL del repositorio.", + "nameHelpText": "El nombre del repositorio. Este nombre formará parte de la URL del repositorio.", + "typeHelpText": "El tipo del repositorio (Mercurial, Git or Subversion).", + "contactHelpText": "Dirección del correo electrónico de la persona responsable del repositorio.", + "descriptionHelpText": "Breve descripción del repositorio." + }, + "repositoryRoot": { + "errorTitle": "Error", + "errorSubtitle": "Error de repositorio desconocido", + "menu": { + "navigationLabel": "Menú de repositorio", + "informationNavLink": "Información", + "branchesNavLink": "Ramas", + "historyNavLink": "Commits", + "sourcesNavLink": "Fuentes", + "settingsNavLink": "Ajustes", + "generalNavLink": "General", + "permissionsNavLink": "Permisos" + } + }, + "overview": { + "title": "Repositorios", + "subtitle": "Visión general de los repositorios disponibles", + "noRepositories": "No se han encontrado repositorios.", + "createButton": "Crear repositorio" + }, + "create": { + "title": "Crear repositorio", + "subtitle": "Crear un nuevo repositorio" + }, + "branches": { + "overview": { + "title": "Vivisón general de todas las ramas", + "noBranches": "No se han encontrado ramas.", + "createButton": "Crear rama" + }, + "table": { + "branches": "Ramas" + }, + "create": { + "title": "Crear rama", + "source": "Rama padre", + "name": "Nombre", + "submit": "Crear rama" + } + }, + "branch": { + "name": "Nombre:", + "commits": "Commits", + "sources": "Fuentes", + "defaultTag": "Por defecto" + }, + "changesets": { + "errorTitle": "Error", + "errorSubtitle": "No se han podido recuperar los changesets", + "noChangesets": "No se han encontrado changesets para esta rama branch.", + "branchSelectorLabel": "Ramas" + }, + "changeset": { + "description": "Descripción", + "summary": "El changeset {{id}} fue entregado {{time}}", + "shortSummary": "Entregado {{id}} {{time}}", + "tags": "Etiquetas", + "diffNotSupported": "La comparación de changesets no es soportada por el tipo de repositorio", + "author": { + "prefix": "Creado por", + "mailto": "Enviar correo electrónico a" + }, + "buttons": { + "details": "Detalles", + "sources": "Fuentes" + } + }, + "repositoryForm": { + "subtitle": "Editar repositorio", + "submit": "Guardar" + }, + "sources": { + "file-tree": { + "name": "Nombre", + "length": "Longitud", + "lastModified": "Última modificación", + "description": "Descripción", + "branch": "Rama" + }, + "content": { + "historyButton": "Historia", + "sourcesButton": "Fuentes", + "downloadButton": "Descargar", + "path": "Ruta", + "branch": "Rama", + "lastModified": "Última modificación", + "description": "Discripción", + "size": "tamaño" + }, + "noSources": "No se han encontrado fuentes para esta rama." + }, + "permission": { + "title": "Editar permisos", + "user": "Usuario", + "group": "Grupo", + "error-title": "Error", + "error-subtitle": "Error de permisos desconocido", + "name": "Usuario o grupo", + "role": "Rol", + "custom": "Personalizar", + "permissions": "Permisos", + "group-permission": "Permiso de grupo", + "user-permission": "Permiso de usuario", + "edit-permission": { + "delete-button": "Borrar", + "save-button": "Guardar cambios" + }, + "advanced-button": { + "label": "Avanzado" + }, + "delete-permission-button": { + "label": "Borrar", + "confirm-alert": { + "title": "Borrar permiso", + "message": "¿Realmente desea borrar el permiso?", + "submit": "Sí", + "cancel": "No" + } + }, + "add-permission": { + "add-permission-heading": "Añadir nuevo permiso", + "submit-button": "Guardar", + "name-input-invalid": "¡No se permiten permisos vacíos! ¡Si el permiso no está vacío, su nombre es inválido o ya existe!" + }, + "help": { + "groupPermissionHelpText": "Establece si un permiso es de grupo. Si no está marcado es un permiso de usuario.", + "nameHelpText": "Gestionar los permisos de un usuario o grupo.", + "roleHelpText": "READ = leer; WRITE = leer and escribir; OWNER = leer, escribir y también la capacidad de gestionar las propiedades y permisos. Si no hay nada seleccionado use el botón 'Avanzado' para ver los permisos en detalle.", + "permissionsHelpText": "Use esto para especificar su propio conjunto de permisos independientemente de los roles predefinidos." + }, + "advanced": { + "dialog": { + "title": "Permisos avanzados", + "submit": "Guardar", + "abort": "Cancelar" + } + } + }, + "deleteRepo": { + "subtitle": "Borrar repositorio", + "button": "Borrar", + "confirmAlert": { + "title": "Borrar repositorio", + "message": "¿Realmente desea borrar el repositorio?", + "submit": "sí", + "cancel": "No" + } + }, + "diff": { + "changes": { + "add": "añadido", + "delete": "borrado", + "modify": "modificado", + "rename": "renombrado", + "copy": "copiado" + }, + "sideBySide": "dos columnas", + "combined": "combinado" + }, + "fileUpload": { + "clickHere": "Haga click aquí para seleccionar su fichero", + "dragAndDrop": "Arrastre y suelte los ficheros aquí" + } +} diff --git a/scm-ui/public/locales/es/users.json b/scm-ui/public/locales/es/users.json new file mode 100644 index 0000000000..d5ea97b95a --- /dev/null +++ b/scm-ui/public/locales/es/users.json @@ -0,0 +1,65 @@ +{ + "user": { + "name": "Nombre de usuario", + "displayName": "Nombre a mostrar", + "mail": "Correo electrónico", + "password": "Contraseña", + "active": "Activo", + "inactive": "Inactivo", + "type": "Tipo", + "creationDate": "Fecha de creación", + "lastModified": "Última modificación" + }, + "validation": { + "mail-invalid": "El correo electrónico es incorrecto", + "name-invalid": "El nombre es incorrecto", + "displayname-invalid": "El nombre a mostrar es incorrecto" + }, + "help": { + "usernameHelpText": "Nombre único del usuario.", + "displayNameHelpText": "Nombre de usuario a mostrar.", + "mailHelpText": "Dirección de correo electrónico del usuario.", + "adminHelpText": "Un administrador es capaz de crear, modificar y borrar repositorios, grupos y usuarios.", + "activeHelpText": "Activar o desactivar el usuario." + }, + "users": { + "title": "Usuarios", + "subtitle": "Crear, leer, actualizar y borrar usuarios", + "noUsers": "No se han encontrado usuarios.", + "createButton": "Crear usuario" + }, + "singleUser": { + "errorTitle": "Error", + "errorSubtitle": "Error de usuario desconocido", + "menu": { + "navigationLabel": "Menú de usuario", + "informationNavLink": "Información", + "settingsNavLink": "Ajustes", + "generalNavLink": "General", + "setPasswordNavLink": "Contraseña", + "setPermissionsNavLink": "Permisos" + } + }, + "createUser": { + "title": "Crear usuario", + "subtitle": "Crear un nuevo usuario" + }, + "deleteUser": { + "subtitle": "Borrar usuario", + "button": "Borrar", + "confirmAlert": { + "title": "Borrar usuario", + "message": "¿Realmente desea borrar el usuario?", + "submit": "Sí", + "cancel": "No" + } + }, + "singleUserPassword": { + "button": "Guardar", + "setPasswordSuccessful": "Contraseña guardada correctamente" + }, + "userForm": { + "subtitle": "Editar usuario", + "button": "Guardar" + } +} diff --git a/scm-ui/src/admin/plugins/components/InstallPendingAction.js b/scm-ui/src/admin/plugins/components/ExecutePendingAction.js similarity index 67% rename from scm-ui/src/admin/plugins/components/InstallPendingAction.js rename to scm-ui/src/admin/plugins/components/ExecutePendingAction.js index 49a444de11..6c8d407205 100644 --- a/scm-ui/src/admin/plugins/components/InstallPendingAction.js +++ b/scm-ui/src/admin/plugins/components/ExecutePendingAction.js @@ -1,12 +1,12 @@ // @flow import React from "react"; import { Button } from "@scm-manager/ui-components"; -import type { PluginCollection } from "@scm-manager/ui-types"; +import type { PendingPlugins } from "@scm-manager/ui-types"; import { translate } from "react-i18next"; -import InstallPendingModal from "./InstallPendingModal"; +import ExecutePendingModal from "./ExecutePendingModal"; type Props = { - collection: PluginCollection, + pendingPlugins: PendingPlugins, // context props t: string => string @@ -16,7 +16,7 @@ type State = { showModal: boolean }; -class InstallPendingAction extends React.Component { +class ExecutePendingAction extends React.Component { constructor(props: Props) { super(props); this.state = { @@ -38,11 +38,11 @@ class InstallPendingAction extends React.Component { renderModal = () => { const { showModal } = this.state; - const { collection } = this.props; + const { pendingPlugins } = this.props; if (showModal) { return ( - ); @@ -57,7 +57,7 @@ class InstallPendingAction extends React.Component { {this.renderModal()}