diff options
author | Frederic Guillot <fred@kanboard.net> | 2017-02-11 20:52:11 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2017-02-11 20:52:11 -0500 |
commit | a172e3ad8d25e9b77616107ce8a622175ab0d698 (patch) | |
tree | 183095d53589f56b205b9bf86cc26dda6c98ab9a | |
parent | c5caff7ef79f1440ff26c84eed2dbc8254122f36 (diff) |
Convert Spanish documentation to UTF-8
30 files changed, 674 insertions, 674 deletions
diff --git a/app/Controller/DocumentationController.php b/app/Controller/DocumentationController.php index 0d02ebda..2cd49f9e 100644 --- a/app/Controller/DocumentationController.php +++ b/app/Controller/DocumentationController.php @@ -87,7 +87,7 @@ class DocumentationController extends BaseController private function getPageFilename($page) { return $this->getFileLocation($page . '.markdown') ?: - implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', 'index.markdown')); + implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', 'en_US', 'index.markdown')); } /** @@ -122,7 +122,7 @@ class DocumentationController extends BaseController { $files = array( implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', $this->languageModel->getCurrentLanguage(), $filename)), - implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', $filename)), + implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', 'en_US', $filename)), ); foreach ($files as $filename) { diff --git a/doc/es_ES/api-external-task-link-procedures.markdown b/doc/es_ES/api-external-task-link-procedures.markdown index d276dd7a..e6d506b4 100644 --- a/doc/es_ES/api-external-task-link-procedures.markdown +++ b/doc/es_ES/api-external-task-link-procedures.markdown @@ -1,221 +1,221 @@ -API de Procedimientos de tarea de enlace externo
-=================================
-
-## getExternalTaskLinkTypes
-
-- Propósito: **Obtener todos los proveedores registrados de enlaces externos**
-- Parámetros: **ninguno**
-- Resultado en caso de éxito: **dict**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getExternalTaskLinkTypes","id":477370568}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": {
- "auto": "Auto",
- "attachment": "Attachment",
- "file": "Local File",
- "weblink": "Web Link"
- },
- "id": 477370568
-}
-```
-
-## getExternalTaskLinkProviderDependencies
-
-- Propósito: **Obtener las dependencias disponibles para un determinado proveedor**
-- Parametros:
- - **providerName** (string, required)
-- Resultado en caso de éxito: **dict**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getExternalTaskLinkProviderDependencies","id":124790226,"params":["weblink"]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": {
- "related": "Related"
- },
- "id": 124790226
-}
-```
-
-## createExternalTaskLink
-
-- Propósito: **Crear una nueva tarea de enlace externo**
-- Parametros:
- - **task_id** (integer, required)
- - **url** (string, required)
- - **dependency** (string, required)
- - **type** (string, optional)
- - **title** (string, optional)
-- Resultado en caso de éxito: **link_id**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"createExternalTaskLink","id":924217495,"params":[9,"http:\/\/localhost\/document.pdf","related","attachment"]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": 1,
- "id": 924217495
-}
-```
-
-## updateExternalTaskLink
-
-- Propósito: **Actualizar tarea de enlace externo**
-- Parametros:
- - **task_id** (integer, required)
- - **link_id** (integer, required)
- - **title** (string, required)
- - **url** (string, required)
- - **dependency** (string, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc":"2.0",
- "method":"updateExternalTaskLink",
- "id":1123562620,
- "params": {
- "task_id":9,
- "link_id":1,
- "title":"New title"
- }
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": true,
- "id": 1123562620
-}
-```
-
-## getExternalTaskLinkById
-
-- Propósito: **Obtener un enlace de tarea externo**
-- Parametros:
- - **task_id** (integer, required)
- - **link_id** (integer, required)
-- Resultado en caso de éxito: **dict**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getExternalTaskLinkById","id":2107066744,"params":[9,1]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": {
- "id": "1",
- "link_type": "attachment",
- "dependency": "related",
- "title": "document.pdf",
- "url": "http:\/\/localhost\/document.pdf",
- "date_creation": "1466965256",
- "date_modification": "1466965256",
- "task_id": "9",
- "creator_id": "0"
- },
- "id": 2107066744
-}
-```
-
-## getAllExternalTaskLinks
-
-- Propósito: **Obtener todos los enlaces externos conectados a una tarea**
-- Parametros:
- - **task_id** (integer, required)
-- Resultado en caso de éxito: **list of external links**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"getAllExternalTaskLinks","id":2069307223,"params":[9]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": [
- {
- "id": "1",
- "link_type": "attachment",
- "dependency": "related",
- "title": "New title",
- "url": "http:\/\/localhost\/document.pdf",
- "date_creation": "1466965256",
- "date_modification": "1466965256",
- "task_id": "9",
- "creator_id": "0",
- "creator_name": null,
- "creator_username": null,
- "dependency_label": "Related",
- "type": "Attachment"
- }
- ],
- "id": 2069307223
-}
-```
-
-## removeExternalTaskLink
-
-- Propósito: **Remover una tarea de enlace externo**
-- Parametros:
- - **task_id** (integer, required)
- - **link_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{"jsonrpc":"2.0","method":"removeExternalTaskLink","id":552055660,"params":[9,1]}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "result": true,
- "id": 552055660
-}
-```
+API de Procedimientos de tarea de enlace externo +================================= + +## getExternalTaskLinkTypes + +- Propósito: **Obtener todos los proveedores registrados de enlaces externos** +- Parámetros: **ninguno** +- Resultado en caso de éxito: **dict** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{"jsonrpc":"2.0","method":"getExternalTaskLinkTypes","id":477370568} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "result": { + "auto": "Auto", + "attachment": "Attachment", + "file": "Local File", + "weblink": "Web Link" + }, + "id": 477370568 +} +``` + +## getExternalTaskLinkProviderDependencies + +- Propósito: **Obtener las dependencias disponibles para un determinado proveedor** +- Parametros: + - **providerName** (string, required) +- Resultado en caso de éxito: **dict** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{"jsonrpc":"2.0","method":"getExternalTaskLinkProviderDependencies","id":124790226,"params":["weblink"]} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "result": { + "related": "Related" + }, + "id": 124790226 +} +``` + +## createExternalTaskLink + +- Propósito: **Crear una nueva tarea de enlace externo** +- Parametros: + - **task_id** (integer, required) + - **url** (string, required) + - **dependency** (string, required) + - **type** (string, optional) + - **title** (string, optional) +- Resultado en caso de éxito: **link_id** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{"jsonrpc":"2.0","method":"createExternalTaskLink","id":924217495,"params":[9,"http:\/\/localhost\/document.pdf","related","attachment"]} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "result": 1, + "id": 924217495 +} +``` + +## updateExternalTaskLink + +- Propósito: **Actualizar tarea de enlace externo** +- Parametros: + - **task_id** (integer, required) + - **link_id** (integer, required) + - **title** (string, required) + - **url** (string, required) + - **dependency** (string, required) +- Resultado en caso de éxito: **true** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{ + "jsonrpc":"2.0", + "method":"updateExternalTaskLink", + "id":1123562620, + "params": { + "task_id":9, + "link_id":1, + "title":"New title" + } +} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "result": true, + "id": 1123562620 +} +``` + +## getExternalTaskLinkById + +- Propósito: **Obtener un enlace de tarea externo** +- Parametros: + - **task_id** (integer, required) + - **link_id** (integer, required) +- Resultado en caso de éxito: **dict** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{"jsonrpc":"2.0","method":"getExternalTaskLinkById","id":2107066744,"params":[9,1]} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "result": { + "id": "1", + "link_type": "attachment", + "dependency": "related", + "title": "document.pdf", + "url": "http:\/\/localhost\/document.pdf", + "date_creation": "1466965256", + "date_modification": "1466965256", + "task_id": "9", + "creator_id": "0" + }, + "id": 2107066744 +} +``` + +## getAllExternalTaskLinks + +- Propósito: **Obtener todos los enlaces externos conectados a una tarea** +- Parametros: + - **task_id** (integer, required) +- Resultado en caso de éxito: **list of external links** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{"jsonrpc":"2.0","method":"getAllExternalTaskLinks","id":2069307223,"params":[9]} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "result": [ + { + "id": "1", + "link_type": "attachment", + "dependency": "related", + "title": "New title", + "url": "http:\/\/localhost\/document.pdf", + "date_creation": "1466965256", + "date_modification": "1466965256", + "task_id": "9", + "creator_id": "0", + "creator_name": null, + "creator_username": null, + "dependency_label": "Related", + "type": "Attachment" + } + ], + "id": 2069307223 +} +``` + +## removeExternalTaskLink + +- Propósito: **Remover una tarea de enlace externo** +- Parametros: + - **task_id** (integer, required) + - **link_id** (integer, required) +- Resultado en caso de éxito: **true** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{"jsonrpc":"2.0","method":"removeExternalTaskLink","id":552055660,"params":[9,1]} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "result": true, + "id": 552055660 +} +``` diff --git a/doc/es_ES/api-group-member-procedures.markdown b/doc/es_ES/api-group-member-procedures.markdown index 7c7cb25c..9a6bbe22 100644 --- a/doc/es_ES/api-group-member-procedures.markdown +++ b/doc/es_ES/api-group-member-procedures.markdown @@ -1,188 +1,188 @@ -Group Member API Procedures
-===========================
-
-## getMemberGroups
-
-- Propósito: **Obtener todos los grupos de un usuario determinado**
-- Parámetros:
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **List of groups**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getMemberGroups",
- "id": 1987176726,
- "params": [
- "1"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1987176726,
- "result": [
- {
- "id": "1",
- "name": "My Group A"
- }
- ]
-}
-```
-
-## getGroupMembers
-
-- Propósito: **Obtener todos los miembros de un grupo**
-- Parámetros:
- - **group_id** (integer, required)
-- Resultado en caso de éxito: **List of users**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "getGroupMembers",
- "id": 1987176726,
- "params": [
- "1"
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1987176726,
- "result": [
- {
- "group_id": "1",
- "user_id": "1",
- "id": "1",
- "username": "admin",
- "is_ldap_user": "0",
- "name": null,
- "email": null,
- "notifications_enabled": "0",
- "timezone": null,
- "language": null,
- "disable_login_form": "0",
- "notifications_filter": "4",
- "nb_failed_login": "0",
- "lock_expiration_date": "0",
- "is_project_admin": "0",
- "gitlab_id": null,
- "role": "app-admin"
- }
- ]
-}
-```
-
-## addGroupMember
-
-- Propósito: **Agregar un usuario a un grupo**
-- Parámetros:
- - **group_id** (integer, required)
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "addGroupMember",
- "id": 1589058273,
- "params": [
- 1,
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1589058273,
- "result": true
-}
-```
-
-## removeGroupMember
-
-- Propósito: **Quitar un usuario de un grupo**
-- Parámetros:
- - **group_id** (integer, required)
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "removeGroupMember",
- "id": 1730416406,
- "params": [
- 1,
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1730416406,
- "result": true
-}
-```
-
-## isGroupMember
-
-- Propósito: **Comprobar si un usuario es miembro de un grupo**
-- Parámetros:
- - **group_id** (integer, required)
- - **user_id** (integer, required)
-- Resultado en caso de éxito: **true**
-- Resultado en caso de falla: **false**
-
-Ejemplo de solicitud:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "isGroupMember",
- "id": 1052800865,
- "params": [
- 1,
- 1
- ]
-}
-```
-
-Ejemplo de respuesta:
-
-```json
-{
- "jsonrpc": "2.0",
- "id": 1052800865,
- "result": false
-}
-```
+Group Member API Procedures +=========================== + +## getMemberGroups + +- Propósito: **Obtener todos los grupos de un usuario determinado** +- Parámetros: + - **user_id** (integer, required) +- Resultado en caso de éxito: **List of groups** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{ + "jsonrpc": "2.0", + "method": "getMemberGroups", + "id": 1987176726, + "params": [ + "1" + ] +} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "id": 1987176726, + "result": [ + { + "id": "1", + "name": "My Group A" + } + ] +} +``` + +## getGroupMembers + +- Propósito: **Obtener todos los miembros de un grupo** +- Parámetros: + - **group_id** (integer, required) +- Resultado en caso de éxito: **List of users** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{ + "jsonrpc": "2.0", + "method": "getGroupMembers", + "id": 1987176726, + "params": [ + "1" + ] +} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "id": 1987176726, + "result": [ + { + "group_id": "1", + "user_id": "1", + "id": "1", + "username": "admin", + "is_ldap_user": "0", + "name": null, + "email": null, + "notifications_enabled": "0", + "timezone": null, + "language": null, + "disable_login_form": "0", + "notifications_filter": "4", + "nb_failed_login": "0", + "lock_expiration_date": "0", + "is_project_admin": "0", + "gitlab_id": null, + "role": "app-admin" + } + ] +} +``` + +## addGroupMember + +- Propósito: **Agregar un usuario a un grupo** +- Parámetros: + - **group_id** (integer, required) + - **user_id** (integer, required) +- Resultado en caso de éxito: **true** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{ + "jsonrpc": "2.0", + "method": "addGroupMember", + "id": 1589058273, + "params": [ + 1, + 1 + ] +} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "id": 1589058273, + "result": true +} +``` + +## removeGroupMember + +- Propósito: **Quitar un usuario de un grupo** +- Parámetros: + - **group_id** (integer, required) + - **user_id** (integer, required) +- Resultado en caso de éxito: **true** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{ + "jsonrpc": "2.0", + "method": "removeGroupMember", + "id": 1730416406, + "params": [ + 1, + 1 + ] +} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "id": 1730416406, + "result": true +} +``` + +## isGroupMember + +- Propósito: **Comprobar si un usuario es miembro de un grupo** +- Parámetros: + - **group_id** (integer, required) + - **user_id** (integer, required) +- Resultado en caso de éxito: **true** +- Resultado en caso de falla: **false** + +Ejemplo de solicitud: + +```json +{ + "jsonrpc": "2.0", + "method": "isGroupMember", + "id": 1052800865, + "params": [ + 1, + 1 + ] +} +``` + +Ejemplo de respuesta: + +```json +{ + "jsonrpc": "2.0", + "id": 1052800865, + "result": false +} +``` diff --git a/doc/es_ES/board-collapsed-expanded.markdown b/doc/es_ES/board-collapsed-expanded.markdown index a8ba2beb..4c474f4c 100644 --- a/doc/es_ES/board-collapsed-expanded.markdown +++ b/doc/es_ES/board-collapsed-expanded.markdown @@ -2,15 +2,15 @@ Modo colapsar y expandir =========================== Las tares en el tablero pueden visualizarse en modo colapsado o en modo expandido. -El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"s"** o usar el menu drop-down que esta parte superior izquierda. +El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"s"** o usar el menu drop-down que esta parte superior izquierda. Modo de colapsado -------------- ![Tareas colapsadas](screenshots/board-collapsed-mode.png) -- Si la tarea es asignada a alguien, las iniciales de la persona se muestran junto al número de tareas -- Si el titulo de la tarea es demasiado largo, tu puedes poner el puntero del ratón sobre la tarea de mostrar una información sobre herramientas con el título completo +- Si la tarea es asignada a alguien, las iniciales de la persona se muestran junto al número de tareas +- Si el titulo de la tarea es demasiado largo, tu puedes poner el puntero del ratón sobre la tarea de mostrar una información sobre herramientas con el tÃtulo completo Modo expansivo -------------- diff --git a/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown b/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown index 9dab532a..5ba7682f 100644 --- a/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown +++ b/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown @@ -2,11 +2,11 @@ Horizontal scrolling y modo compacto ===================================== Cuando el tablero no puede caber en su pantalla , una barra de scroll horizontal -When the board cannot fit on your screen, a horizontal scroll bar aparecerá en la parte inferior. +When the board cannot fit on your screen, a horizontal scroll bar aparecerá en la parte inferior. Sin embargo, es posible cambiar a una vista de modo compacto para visualizar todas las columnas en su pantalla. ![Cambiar a modo compacto](screenshots/board-compact-mode.png) Cambiar entre scrolling y vista compacta -El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"c"** o usar el menu drop-down que esta parte superior izquierda. +El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"c"** o usar el menu drop-down que esta parte superior izquierda. diff --git a/doc/es_ES/cloudron.markdown b/doc/es_ES/cloudron.markdown index 19b030b4..9de33e5e 100755 --- a/doc/es_ES/cloudron.markdown +++ b/doc/es_ES/cloudron.markdown @@ -3,25 +3,25 @@ Como correr Kanboard en Cloudron [Cloudron](https://cloudron.io) es un smartserver privado con el cual tu puedes instalar web apps como Kanboard. Puedes instalar Kanboard en un dominio personalizado y cada -instalación está respaldada y mantenida día a día con la liberación automática de Kanboard +instalación está respaldada y mantenida dÃa a dÃa con la liberación automática de Kanboard [![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=net.kanboard.cloudronapp) Cuentas -------- -La app se integra perfectamente con Cloudron en la gestión ( a través de LDAP ) del usuario . Solamente -los usuarios de Cloudron pueden acceder a Kanboard . Además , cualquier administrador Cloudron -se convierte en un administrador Kanboard automáticamente. +La app se integra perfectamente con Cloudron en la gestión ( a través de LDAP ) del usuario . Solamente +los usuarios de Cloudron pueden acceder a Kanboard . Además , cualquier administrador Cloudron +se convierte en un administrador Kanboard automáticamente. -Instalación de plugins +Instalación de plugins ----------------------- Los plugins pueden ser instalados y configurados por [Cloudron CLI](https://cloudron.io/references/cli.html) -herramientas. Observar [descripción de la app](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) for -mas información. +herramientas. Observar [descripción de la app](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) for +mas información. -Código fuente de la aplicación +Código fuente de la aplicación ------------------------------- -El código fuente de la app Cloudron esta [aqui](https://github.com/cloudron-io/kanboard-app). +El código fuente de la app Cloudron esta [aqui](https://github.com/cloudron-io/kanboard-app). diff --git a/doc/es_ES/coding-standards.markdown b/doc/es_ES/coding-standards.markdown index b4b2deab..966f9c90 100755 --- a/doc/es_ES/coding-standards.markdown +++ b/doc/es_ES/coding-standards.markdown @@ -1,7 +1,7 @@ -Estandares de codificación +Estandares de codificación ================ -Código PHP +Código PHP ---------- - Indentacion: 4 espacios @@ -11,13 +11,13 @@ Código PHP - Siempre escribe comentarios PHPdoc para metodos y propiedades de la clase - Codificar con estilo : [PSR-1](http://www.php-fig.org/psr/psr-1/) y [PSR-2](http://www.php-fig.org/psr/psr-2/) -Código JavaScript +Código JavaScript --------------- - Indentacion: 4 espacios - Linea de retorno: Unix => `\n` -Código CSS +Código CSS -------- - Indentacion: 4 espacios diff --git a/doc/es_ES/config.markdown b/doc/es_ES/config.markdown index 5093898b..bc2f2982 100755 --- a/doc/es_ES/config.markdown +++ b/doc/es_ES/config.markdown @@ -1,8 +1,8 @@ -Archivo de configuración +Archivo de configuración ======================== -Puede personalizar la configuración predeterminada de Kanboard mediante la adición de un archivo ` config.php` en la raíz del proyecto o en la carpeta ` data` . -También puede cambiar el nombre del archivo `config.default.php` a `config.php` y cambiar los valores deseados . +Puede personalizar la configuración predeterminada de Kanboard mediante la adición de un archivo ` config.php` en la raÃz del proyecto o en la carpeta ` data` . +También puede cambiar el nombre del archivo `config.default.php` a `config.php` y cambiar los valores deseados . Habilitar/Deshabilitar el modo debug -------------------------------------- @@ -12,8 +12,8 @@ define('DEBUG', true); define('LOG_DRIVER', 'file'); // Otros drivers son: syslog, stdout, stderr or file ``` -El controlador de registro se debe definir si se habilita el modo de depuración . -El modo de depuración registra todas las consultas SQL y el tiempo necesario para generar páginas . +El controlador de registro se debe definir si se habilita el modo de depuración . +El modo de depuración registra todas las consultas SQL y el tiempo necesario para generar páginas . Plugins ------- @@ -24,7 +24,7 @@ Folder de plugins: define('PLUGINS_DIR', 'data/plugins'); ``` -Enable/disable plugin de instalación para la interface de usuario: +Enable/disable plugin de instalación para la interface de usuario: ```php define('PLUGIN_INSTALLER', true); // Default es true @@ -44,7 +44,7 @@ Enable/disable url rewrite define('ENABLE_URL_REWRITE', false); ``` -Configuración de Email +Configuración de Email ------------------- ```php @@ -54,7 +54,7 @@ define('MAIL_FROM', 'notifications@kanboard.local'); // Mail transport para uso: "smtp", "sendmail" or "mail" (Funcion PHP mail) define('MAIL_TRANSPORT', 'mail'); -// Configuración SMTP para usarse para elegir el trasporte de "smtp" +// Configuración SMTP para usarse para elegir el trasporte de "smtp" define('MAIL_SMTP_HOSTNAME', ''); define('MAIL_SMTP_PORT', 25); define('MAIL_SMTP_USERNAME', ''); @@ -65,7 +65,7 @@ define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls" define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs'); ``` -Configuración de base de datos +Configuración de base de datos ------------------------------ ```php @@ -101,7 +101,7 @@ Configuraciones LDAP ---------------------- ```php -// Habilitar la autenticación por LDAP (false por default) +// Habilitar la autenticación por LDAP (false por default) define('LDAP_AUTH', false); // LDAP server hostname @@ -116,7 +116,7 @@ define('LDAP_SSL_VERIFY', true); // Enable LDAP START_TLS define('LDAP_START_TLS', false); -// Por defecto Kanboard tiene el nombre de usuario LDAP en minúscula para evitar usuarios duplicados ( la base de datos entre mayúsculas y minúsculas ) +// Por defecto Kanboard tiene el nombre de usuario LDAP en minúscula para evitar usuarios duplicados ( la base de datos entre mayúsculas y minúsculas ) // Establece en true si desea conservar el caso define('LDAP_USERNAME_CASE_SENSITIVE', false); @@ -124,7 +124,7 @@ define('LDAP_USERNAME_CASE_SENSITIVE', false); define('LDAP_BIND_TYPE', 'anonymous'); // Nombre de usuario LDAP para utilizar con el modo de proxy -// Patrón de nombre de usuario LDAP para utilizar con el modo de usuario +// Patrón de nombre de usuario LDAP para utilizar con el modo de usuario define('LDAP_USERNAME', null); // password LDAP para usar en modo proxy @@ -175,7 +175,7 @@ define('LDAP_GROUP_ADMIN_DN', ''); define('LDAP_GROUP_MANAGER_DN', ''); // Habilitiar proveedor LDAP de grupo para permisos de proyecto -// El usuario final será capaz de navegar por los grupos LDAP desde la interfaz de usuario y permitir el acceso a proyectos específicos +// El usuario final será capaz de navegar por los grupos LDAP desde la interfaz de usuario y permitir el acceso a proyectos especÃficos define('LDAP_GROUP_PROVIDER', false); // LDAP Base DN for groups @@ -186,7 +186,7 @@ define('LDAP_GROUP_BASE_DN', ''); define('LDAP_GROUP_FILTER', ''); // LDAP filtro por grupo de usuario -// Si se configura este filtro , Kanboard buscará grupos de usuarios en LDAP_GROUP_BASE_DN +// Si se configura este filtro , Kanboard buscará grupos de usuarios en LDAP_GROUP_BASE_DN // Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s)) define('LDAP_GROUP_USER_FILTER', ''); @@ -194,11 +194,11 @@ define('LDAP_GROUP_USER_FILTER', ''); define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn'); ``` -Reverse-Proxy configuración de autenticación +Reverse-Proxy configuración de autenticación ------------------------------------- ```php -// Enable/disable la autenticación reverse proxy +// Enable/disable la autenticación reverse proxy define('REVERSE_PROXY_AUTH', false); // Nombre del header a utilizar para el nombre de usuario @@ -207,15 +207,15 @@ define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER'); // Nombre de usuario del administrador , por defecto en blanco define('REVERSE_PROXY_DEFAULT_ADMIN', ''); -// Dominio por defecto a utilizar para configurar la dirección de correo electrónico +// Dominio por defecto a utilizar para configurar la dirección de correo electrónico define('REVERSE_PROXY_DEFAULT_DOMAIN', ''); ``` -Configuración para la autenticacion RememberMe +Configuración para la autenticacion RememberMe ---------------------------------------------- ```php -// Enable/disable recuerdame autenticación +// Enable/disable recuerdame autenticación define('REMEMBER_ME_AUTH', true); ``` @@ -244,14 +244,14 @@ define('LOG_DRIVER', ''); define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log'); ``` -Protección de Brute-force +Protección de Brute-force --------------------- ```php // Habilitar captcha despues de 3 autenticaciones fallidas define('BRUTEFORCE_CAPTCHA', 3); -// Bloquear la cuenta después de 6 autenticaciones fallidas +// Bloquear la cuenta después de 6 autenticaciones fallidas define('BRUTEFORCE_LOCKDOWN', 6); // Bloquear la cuenta durante un minute @@ -270,7 +270,7 @@ define('SESSION_DURATION', 0); Clientes HTTP -------------- -Si las peticiones HTTP externas debe ser enviada a través de un proxy : +Si las peticiones HTTP externas debe ser enviada a través de un proxy : ```php define('HTTP_PROXY_HOSTNAME', ''); @@ -293,15 +293,15 @@ Varias configuraciones // Escapar de HTML dentro del texto de markdown define('MARKDOWN_ESCAPE_HTML', true); -// Cabecera de autenticación alternativo API , el valor predeterminado es la autenticación básica HTTP definido en RFC2617 +// Cabecera de autenticación alternativo API , el valor predeterminado es la autenticación básica HTTP definido en RFC2617 define('API_AUTHENTICATION_HEADER', ''); // Oculatar el formulario de login, usarlo si todos tus usuarios usan Google/Github/ReverseProxy authentication define('HIDE_LOGIN_FORM', false); -// Desactivación de cierre de sesión ( SSO para la autenticación externa ) +// Desactivación de cierre de sesión ( SSO para la autenticación externa ) define('DISABLE_LOGOUT', false); -// Invalidar token de la API almacenada en la base de datos , útil para pruebas automatizadas +// Invalidar token de la API almacenada en la base de datos , útil para pruebas automatizadas define('API_AUTHENTICATION_TOKEN', 'My unique API Token'); ``` diff --git a/doc/es_ES/creating-tasks.markdown b/doc/es_ES/creating-tasks.markdown index 970be533..1cfa7265 100755 --- a/doc/es_ES/creating-tasks.markdown +++ b/doc/es_ES/creating-tasks.markdown @@ -1,31 +1,31 @@ -Creación de tarea +Creación de tarea ============== -Desde el tablero, haga clic en el signo más **plus** al lado del nombre de la columna +Desde el tablero, haga clic en el signo más **plus** al lado del nombre de la columna -![Creación de tarea desde el tablero](screenshots/task-creation-board.png) +![Creación de tarea desde el tablero](screenshots/task-creation-board.png) -A continuación, aparece el formulario de creación de tareas: +A continuación, aparece el formulario de creación de tareas: -![Formulario de creación de tareas](screenshots/task-creation-form.png) +![Formulario de creación de tareas](screenshots/task-creation-form.png) -Descripción de campos: +Descripción de campos: -- **Titulo**: El título de su tarea, que se podrá ver en el tablero. -- **Descripción**: Descripción que usa el formato [Markdown](syntax-guide.markdown). +- **Titulo**: El tÃtulo de su tarea, que se podrá ver en el tablero. +- **Descripción**: Descripción que usa el formato [Markdown](syntax-guide.markdown). - **Tags**: Lista de etiquetas asociadas a las tareas -- **Crear otra tarea**:Marque esta casilla si desea crear una tarea similar (serán pre-llenados algunos campos).. +- **Crear otra tarea**:Marque esta casilla si desea crear una tarea similar (serán pre-llenados algunos campos).. - **Color**: Escoger el color de la tarjeta. - **Asignado**: Persona que trabajara en la tarea. -- **Categoría**: Sólo una categoría puede ser asignado a una tarea (visibles sólo si los proyectos tienen categorías). -- **Columna**: La columna en la que se creó la tarea, su tarea se coloca en la parte inferior. -- **Prioridad**: AL Prioridad de la tarea, el intervalo se puede definir en la configuración del proyecto, los valores por defecto son P0 a P3. -- **Complejidad**: Se utiliza en la gestión de proyectos ágiles (Scrum), los puntos de complejidad o de la historia es un número que le dice al equipo lo difícil es la historia. A menudo, las personas utilizan la serie de Fibonacci. -- **Referencia**: ID externo para la tarea, por ejemplo, puede ser el número de entradas que provienen de otro sistema -- **Estimación original** : Estimación de horas para completar la tarea. +- **CategorÃa**: Sólo una categorÃa puede ser asignado a una tarea (visibles sólo si los proyectos tienen categorÃas). +- **Columna**: La columna en la que se creó la tarea, su tarea se coloca en la parte inferior. +- **Prioridad**: AL Prioridad de la tarea, el intervalo se puede definir en la configuración del proyecto, los valores por defecto son P0 a P3. +- **Complejidad**: Se utiliza en la gestión de proyectos ágiles (Scrum), los puntos de complejidad o de la historia es un número que le dice al equipo lo difÃcil es la historia. A menudo, las personas utilizan la serie de Fibonacci. +- **Referencia**: ID externo para la tarea, por ejemplo, puede ser el número de entradas que provienen de otro sistema +- **Estimación original** : Estimación de horas para completar la tarea. - **Tiempo transcurrido** : El tiempo dedicado a trabajar en la tarea. - **Fecha de Inicio** : Se trata de un campo de fecha y hora. -- **Fecha de vencimiento** : Las tareas vencidas se tiene una fecha de vencimiento próxima rojo y las fechas de vencimiento será de color negro en el tablero. Varios formato de fecha se aceptan además del selector de fecha. +- **Fecha de vencimiento** : Las tareas vencidas se tiene una fecha de vencimiento próxima rojo y las fechas de vencimiento será de color negro en el tablero. Varios formato de fecha se aceptan además del selector de fecha. -Con el enlace de vista previa, se puede ver la descripción de la tarea convertiendo la sintaxis de Markdown. +Con el enlace de vista previa, se puede ver la descripción de la tarea convertiendo la sintaxis de Markdown. diff --git a/doc/es_ES/faq.markdown b/doc/es_ES/faq.markdown index 9ea2109e..e1ecb3da 100755 --- a/doc/es_ES/faq.markdown +++ b/doc/es_ES/faq.markdown @@ -7,11 +7,11 @@ Tu puedes recomendar un proveedor de web hosting para Kanboard? Kanboard funciona bien con cualquier VPS proveedor de hosting como [Digital Ocean](https://www.digitalocean.com/?refcode=4b541f47aae4), [Linode](https://www.linode.com/?r=4e381ac8a61116f40c60dc7438acc719610d8b11) o [Gandi](https://www.gandi.net/). -Para tener el mejor performance , elegir un proveedor con el disco rápido de I/O porque Kanboard utilizar SQLite de forma predeterminada . +Para tener el mejor performance , elegir un proveedor con el disco rápido de I/O porque Kanboard utilizar SQLite de forma predeterminada . Evitar los proveedores de alojamiento que utilizan un punto de montaje NFS compartido. -Me sale una página en blanco después de instalar o actualizar Kanboard +Me sale una página en blanco después de instalar o actualizar Kanboard ---------------------------------------------------------------------- - Verificar si tienes instalados todos los requerimientos en tu servidor @@ -23,17 +23,17 @@ Me sale una página en blanco después de instalar o actualizar Kanboard Si Tienes el error "No hay CSPRNG adecuado instalado en su sistema " ----------------------------------------------------------------------- -Si tu usas PHP < 7.0, Tu necesitas tener la extensión openssl habilitada o `/dev/urandom` accesible desde la aplicación si se +Si tu usas PHP < 7.0, Tu necesitas tener la extensión openssl habilitada o `/dev/urandom` accesible desde la aplicación si se restringe por un `open_basedir` -Página no encontrada y la URL parece mal (&amp;) +Página no encontrada y la URL parece mal (&amp;) -------------------------------------------------- - La URL se mira como `/?controller=auth&action=login&redirect_query=` instanciada de `?controller=auth&action=login&redirect_query=` - Kanboard regresa el error "Page not found" -Este problema proviene de la configuración de PHP , el valor de ` arg_separator.output` no es defecto del PHP , hay diferentes maneras de solucionar que: +Este problema proviene de la configuración de PHP , el valor de ` arg_separator.output` no es defecto del PHP , hay diferentes maneras de solucionar que: Cambiar el valor directamente en su ` php.ini` si es posible : @@ -47,14 +47,14 @@ Sustituir el valor con un ` .htaccess` : arg_separator.output php_value "& " `` ` -De lo contrario Kanboard tratará de anular el valor directamente en PHP . +De lo contrario Kanboard tratará de anular el valor directamente en PHP . -Error de autenticación con la API y Apache + PHP - FPM +Error de autenticación con la API y Apache + PHP - FPM -------------------------------------------------------- Php-cgi bajo Apache HTTP basico no pasa user/pass forma predeterminada . -Para que esta solución funcione , añadir estas líneas a su archivo ` .htaccess` : +Para que esta solución funcione , añadir estas lÃneas a su archivo ` .htaccess` : ``` RewriteCond %{HTTP:Authorization} ^(.+)$ @@ -66,16 +66,16 @@ Problemas conocidos con eAccelerator ------------------------------ Kanboard no funciona muy bien con [eAccelerator](http://eaccelerator.net). -El problema puede ser causado una página en blanco o un accidente de Apache : +El problema puede ser causado una página en blanco o un accidente de Apache : ``` [Wed Mar 05 21:36:56 2014] [notice] child pid 22630 exit signal Segmentation fault (11) ``` -La mejor manera de evitar este problema es desactivar eAccelerator o definir manualmente los archivos que desea almacenar en caché con el parámetro de configuración ` eaccelerator.filter` . +La mejor manera de evitar este problema es desactivar eAccelerator o definir manualmente los archivos que desea almacenar en caché con el parámetro de configuración ` eaccelerator.filter` . The project [eAccelerator parece muerto y no se actualiza desde 2012](https://github.com/eaccelerator/eaccelerator/commits/master). -Recomendamos para cambiar a la ultima versión de PHP por que el bundled viene con [OPcache](http://php.net/manual/en/intro.opcache.php). +Recomendamos para cambiar a la ultima versión de PHP por que el bundled viene con [OPcache](http://php.net/manual/en/intro.opcache.php). Por que el requerimiento minimo es PHP 5.3.3? @@ -91,7 +91,7 @@ Al parecer , CentOS y Debian tienen parches de seguridad en su back-port para PH Kanboard v1.0.10 y v1.0.11 requiere al menos PHP 5.3.7 , pero este cambio se ha vuelto a ser compatible con PHP 5.3.3 con Kanboard > = v1.0.12 -Cómo probar Kanboard con el PHP incorporado en el servidor web? +Cómo probar Kanboard con el PHP incorporado en el servidor web? --------------------------------------------------------------- Si tu no quieres instalar un servidor web como Apache en tu localhost, tu puedes testearlo con el [servidor web embebido de PHP](http://www.php.net/manual/en/features.commandline.webserver.php): @@ -112,7 +112,7 @@ Como instalar Kanboard en Yunohost? Existe un [paquete para instalar Kanboard en Yunohost facilmente](https://github.com/mbugeia/kanboard_ynh). -¿Dónde puedo encontrar una lista de proyectos relacionados? +¿Dónde puedo encontrar una lista de proyectos relacionados? -------------------------------------------- - [Kanboard API python client by @freekoder](https://github.com/freekoder/kanboard-py) @@ -126,7 +126,7 @@ Existe un [paquete para instalar Kanboard en Yunohost facilmente](https://github - [Git hooks for integration with Kanboard by Gene Pavlovsky](https://github.com/gene-pavlovsky/kanboard-git-hooks) -¿Hay algunos tutoriales sobre Kanboard en otro idioma? +¿Hay algunos tutoriales sobre Kanboard en otro idioma? ----------------------------------------------------------- -- [Artículo serie alemana sobre Kanboard](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/) +- [ArtÃculo serie alemana sobre Kanboard](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/) diff --git a/doc/es_ES/mysql-configuration.markdown b/doc/es_ES/mysql-configuration.markdown index 9428d392..25c9e671 100755 --- a/doc/es_ES/mysql-configuration.markdown +++ b/doc/es_ES/mysql-configuration.markdown @@ -1,4 +1,4 @@ -Configuración Mysql/MariaDB +Configuración Mysql/MariaDB =========================== @@ -9,25 +9,25 @@ Requirimientos ------------ - Mysql server -- Instalar la extensión `pdo_mysql` en PHP +- Instalar la extensión `pdo_mysql` en PHP Nota: Kanboard esta testeada con **Mysql >= 5.5 y MariaDB >= 10.0** -configuración Mysql +configuración Mysql ------------------- ### Crear una base de datos El primer paso es crear una base de datos en tu servidor MySQL -Por ejemplo, se puede hacer eso con el cliente de línea de comandos mysql: +Por ejemplo, se puede hacer eso con el cliente de lÃnea de comandos mysql: ```sql CREATE DATABASE kanboard; ``` -### Crear un archivo de configuración +### Crear un archivo de configuración -El archivo `config.php` debería contener estos valores: +El archivo `config.php` deberÃa contener estos valores: ```php <?php @@ -47,7 +47,7 @@ Nota: Se puede renombrar el archivo de plantilla `config.default.php` a `config. ### Importando SQL dump (metodo alternativo) -Por primera vez, se ejecutará Kanboard uno por uno cada migración de base de datos y este proceso puede tardar algún tiempo de acuerdo a su configuración. +Por primera vez, se ejecutará Kanboard uno por uno cada migración de base de datos y este proceso puede tardar algún tiempo de acuerdo a su configuración. Para evitar cualquier tiempo de espera de potencial se puede inicializar la base de datos directamente importando el esquema de SQL: @@ -55,12 +55,12 @@ Para evitar cualquier tiempo de espera de potencial se puede inicializar la base mysql -u root -p my_database < app/Schema/Sql/mysql.sql ``` -El archivo `app/Schema/Sql/mysql.sql` es un dump SQL que representa la ultima versión de la base de datos +El archivo `app/Schema/Sql/mysql.sql` es un dump SQL que representa la ultima versión de la base de datos -SSL configuración +SSL configuración ----------------- -Estos parámetros tienen que ser definidas para permitir la conexión SSL Mysql: +Estos parámetros tienen que ser definidas para permitir la conexión SSL Mysql: ```php // Mysql SSL key diff --git a/doc/es_ES/plugin-authentication-architecture.markdown b/doc/es_ES/plugin-authentication-architecture.markdown index 86069aa0..fa11f1bc 100644 --- a/doc/es_ES/plugin-authentication-architecture.markdown +++ b/doc/es_ES/plugin-authentication-architecture.markdown @@ -1,33 +1,33 @@ -Arquitectura de autenticación +Arquitectura de autenticación ============================= -Kanboard provee una flexible y conectable arquitectura de autenticación. +Kanboard provee una flexible y conectable arquitectura de autenticación. Por default, el usuario puede autenticarse con multiple metodos: -- Autenticación por usuario y password (Base de datos local y LDAP) -- Autenticación OAuth2 -- Autenticación Reverse-Proxy -- Autenticación basada en Cookie (Recuerdame) +- Autenticación por usuario y password (Base de datos local y LDAP) +- Autenticación OAuth2 +- Autenticación Reverse-Proxy +- Autenticación basada en Cookie (Recuerdame) -Además, despues de una autenticación satisfactoria un puede hacerse post de autenticación Two-Factor . +Además, despues de una autenticación satisfactoria un puede hacerse post de autenticación Two-Factor . Kanboard sopoarta nativamente el standart TOTP. -Interfaces de autenticación +Interfaces de autenticación ---------------------------- -Para tener un sistema conectable, los drivers de autenticación deben implementar un conjunto de interfaces +Para tener un sistema conectable, los drivers de autenticación deben implementar un conjunto de interfaces | Interface | Rol | |------------------------------------------|------------------------------------------------------------------| -| AuthenticationProviderInterface | Interface base para otras interfaces de autenticación | -| PreAuthenticationProviderInterface | The user is already authenticated al alcanzar la aplicación, Usualmente los servidores web definen algunas variables de entorno | -| PasswordAuthenticationProviderInterface | El metodo de autenticación que usa el username y password provienen del formulario de login | +| AuthenticationProviderInterface | Interface base para otras interfaces de autenticación | +| PreAuthenticationProviderInterface | The user is already authenticated al alcanzar la aplicación, Usualmente los servidores web definen algunas variables de entorno | +| PasswordAuthenticationProviderInterface | El metodo de autenticación que usa el username y password provienen del formulario de login | | OAuthAuthenticationProviderInterface | Proveedores OAuth2 | -| PostAuthenticationProviderInterface | Drivers de autenticación Two-Factor ,pide el código a confirmar | -| SessionCheckProviderInterface | Los proveedores que son capaces de comprobar si la sesión de usuario es válida | +| PostAuthenticationProviderInterface | Drivers de autenticación Two-Factor ,pide el código a confirmar | +| SessionCheckProviderInterface | Los proveedores que son capaces de comprobar si la sesión de usuario es válida | -### Ejemplos de autenticación de proveedores: +### Ejemplos de autenticación de proveedores: - Database por default metodos a implementar `PasswordAuthenticationProviderInterface` y `SessionCheckProviderInterface` - Reverse-Proxy metodos a implementar `PreAuthenticationProviderInterface` y `SessionCheckProviderInterface` @@ -36,64 +36,64 @@ Para tener un sistema conectable, los drivers de autenticación deben implementar - RememberMe cookie metodos a implementar `PreAuthenticationProviderInterface` - Two-Factor TOTP metodos a implementar `PostAuthenticationProviderInterface` -flujo de trabajo de autenticación ** Workflow ** +flujo de trabajo de autenticación ** Workflow ** ------------------------------------------------ Para cada peticion HTTP: -1. Si la sesión de usuario esta abierta, ejecuta el registro de proveedores que implementa`SessionCheckProviderInterface` +1. Si la sesión de usuario esta abierta, ejecuta el registro de proveedores que implementa`SessionCheckProviderInterface` 2. Ejecuta todos los proveedores que implementa `PreAuthenticationProviderInterface` 3. Si el usuario final hace un submit al formulario del login, Los proveedores que implementa `PasswordAuthenticationProviderInterface` are executed 4. Si el usuario final quiere usar OAuth2, el selecciona el proveedor a ejecutar -5. Despues de una autenticación satisfactoria, el ultimo registro utilizará `PostAuthenticationProviderInterface` -6. Sincronizar la información del usuario si es necesario +5. Despues de una autenticación satisfactoria, el ultimo registro utilizará `PostAuthenticationProviderInterface` +6. Sincronizar la información del usuario si es necesario Este workflow es manejado por la clase `Kanboard\Core\Security\AuthenticationManager`. Eventos disparados: -- `AuthenticationManager::EVENT_SUCCESS`: autenticación satisfactoria -- `AuthenticationManager::EVENT_FAILURE`: autenticación fallida +- `AuthenticationManager::EVENT_SUCCESS`: autenticación satisfactoria +- `AuthenticationManager::EVENT_FAILURE`: autenticación fallida Cada vez que se produce un evento de fallo , el contador de intentos fallidos se incrementa. -La cuenta de usuario se puede bloquear para el período de tiempo configurado y un captcha puede ser mostrado para evitar ataques de fuerza bruta . +La cuenta de usuario se puede bloquear para el perÃodo de tiempo configurado y un captcha puede ser mostrado para evitar ataques de fuerza bruta . Interface de usuario del proveedor --------------------------------- -Cuando la autenticación es satisfactoria, la `AuthenticationManager` pedura la información del usuario para que el driver llame al metodo `getUser()`. +Cuando la autenticación es satisfactoria, la `AuthenticationManager` pedura la información del usuario para que el driver llame al metodo `getUser()`. Este metodo debe regresar un objeto que implementa la interface `Kanboard\Core\User\UserProviderInterface`. -Esta clase abstracta reune la información dede otro sistema. +Esta clase abstracta reune la información dede otro sistema. Ejemplos : -- `DatabaseUserProvider` proporciona información para un usuario interno +- `DatabaseUserProvider` proporciona información para un usuario interno - `LdapUserProvider` para un usuario LDAP - `ReverseProxyUserProvider` para un usuario Reverse-Proxy - `GoogleUserProvider` represtan un usuario de Google -Los métodos para la interface del proveedor de Usuario: +Los métodos para la interface del proveedor de Usuario: -- `isUserCreationAllowed()`: Regresa true para permitir la creación automática de usuarios -- `getExternalIdColumn()`: Obtener Identificación del nombre de la columna externa (google_id, github_id, gitlab_id...) +- `isUserCreationAllowed()`: Regresa true para permitir la creación automática de usuarios +- `getExternalIdColumn()`: Obtener Identificación del nombre de la columna externa (google_id, github_id, gitlab_id...) - `getInternalId()`: Obtener el id interno de la base de datos - `getExternalId()`: Obtener el id externo(Unique id) - `getRole()`: Obtener el rol de usuario - `getUsername()`: Obtener en nombre de usuario ** username ** - `getName()`: Obtener nombre completo del usuario - `getEmail()`: Obtener el correo electronico del usuario -- `getExternalGroupIds()`: Obtiene los ids externos del grupo, automáticamente sincroniza la membresia del grupo y la presenta -- `getExtraAttributes()`: Obtiene los atributos extras para ser mostrados a el usuario durante la sincronización local +- `getExternalGroupIds()`: Obtiene los ids externos del grupo, automáticamente sincroniza la membresia del grupo y la presenta +- `getExtraAttributes()`: Obtiene los atributos extras para ser mostrados a el usuario durante la sincronización local No es obligatorio que el metodo devuelva un valor. -Sincronización de un usuario local +Sincronización de un usuario local ---------------------------------- -La información del usuario puede ser sincronizada automáticamente con la base de datos local. +La información del usuario puede ser sincronizada automáticamente con la base de datos local. -- Si el metodo`getInternalId()` regresa un valor no realiza la sincronización +- Si el metodo`getInternalId()` regresa un valor no realiza la sincronización - Los metodos `getExternalIdColumn()` y `getExternalId()` debe regresar un valor para sincronizar el usuario - Las propiedades que regresan un ** String ** vacios no se sincronizan diff --git a/doc/es_ES/plugin-authorization-architecture.markdown b/doc/es_ES/plugin-authorization-architecture.markdown index 884e90aa..769adcf8 100644 --- a/doc/es_ES/plugin-authorization-architecture.markdown +++ b/doc/es_ES/plugin-authorization-architecture.markdown @@ -1,9 +1,9 @@ -Arquitecuta de autorización +Arquitecuta de autorización =========================== -Kanboard [soporta multiples roles](roles.markdown) a nivel de aplicación y a nivel de proyecto. +Kanboard [soporta multiples roles](roles.markdown) a nivel de aplicación y a nivel de proyecto. -Workflow de autorización +Workflow de autorización -------------------------- Para cada solicitud HTTP: @@ -16,15 +16,15 @@ Para cada solicitud HTTP: Extendiendo mapa de accesos --------------------------- -Lista de accesos (ACL) se basa en el nombre de clase del controlador y el nombre del método -La lista de acceso está a cargo de la clase `Kanboard\Core\Security\AccessMap`. +Lista de accesos (ACL) se basa en el nombre de clase del controlador y el nombre del método +La lista de acceso está a cargo de la clase `Kanboard\Core\Security\AccessMap`. -Hay dos mapa de acceso: una para la aplicación y la otra para un proyecto. +Hay dos mapa de acceso: una para la aplicación y la otra para un proyecto. -- Acceso al mapa de aplicación : `$this->applicationAccessMap` +- Acceso al mapa de aplicación : `$this->applicationAccessMap` - Acceso al mapa del proyecto: `$this->projectAccessMap` -Ejemplos para definir una nueva política para tu plugin: +Ejemplos para definir una nueva polÃtica para tu plugin: ```php // Todos los metodos de la clase MyController: @@ -36,4 +36,4 @@ $this->projectAccessMap->add('MyOtherController', array('create', 'save'), Role: Los roles estan defidos en la clase `Kanboard\Core\Security\Role`. -Clase de autorización (`Kanboard\Core\Security\Authorization`) comprobará el acceso de cada página. +Clase de autorización (`Kanboard\Core\Security\Authorization`) comprobará el acceso de cada página. diff --git a/doc/es_ES/plugin-automatic-actions.markdown b/doc/es_ES/plugin-automatic-actions.markdown index 6e0a9b65..27effaad 100644 --- a/doc/es_ES/plugin-automatic-actions.markdown +++ b/doc/es_ES/plugin-automatic-actions.markdown @@ -1,30 +1,30 @@ -Agregando acciones automáticas +Agregando acciones automáticas =============================== -Agregando una nueva acccion automática es bastante simple. +Agregando una nueva acccion automática es bastante simple. Creando una nueva accion ------------------------ -Tus acciones automáticas deben heradarse de la clase `Kanboard\Action\Base`. +Tus acciones automáticas deben heradarse de la clase `Kanboard\Action\Base`. -Varios métodos abstractos deben ser implementadas por sí mismo: +Varios métodos abstractos deben ser implementadas por sà mismo: -| Metodos | Descripción | +| Metodos | Descripción | |-------------------------------------|------------------------------------------------------------------| | `getDescription()` | Descripcion visible en la interface del usuario | | `getCompatibleEvents()` | Obtener las listas de eventos compatibles | -| `getActionRequiredParameters()` | Obtener los parametros requeridos para la acción (definidos por el usuario)| +| `getActionRequiredParameters()` | Obtener los parametros requeridos para la acción (definidos por el usuario)| | `getEventRequiredParameters()` | Obtener los parametros requeridos para el evento | -| `doAction(array $data)` | Ejecutar la acción, Debe regresar true si fue satisfactorio | -| `hasRequiredCondition(array $data)` | Comprobar si los datos de eventos cumplen la condición de acción | +| `doAction(array $data)` | Ejecutar la acción, Debe regresar true si fue satisfactorio | +| `hasRequiredCondition(array $data)` | Comprobar si los datos de eventos cumplen la condición de acción | Tu accion automatica es identificada en kanboard utilizando el nombre de la clase absoluta con el espacio de nombre incluido Agregando nuevos eventos ------------------------ -La lista de eventos de la aplicación está disponible en la clase `Kanboard\Core\Event\EventManager::getAll()`. +La lista de eventos de la aplicación está disponible en la clase `Kanboard\Core\Event\EventManager::getAll()`. Sin embargo, si tu plugin dispara nuevos eventos, tu puedes registrar estos eventos : ```php @@ -33,7 +33,7 @@ $this->actionManager->getAction('\Kanboard\Plugin\MyPlugin\MyActionName')->addEv Tu puedes extender la lista de eventos compatibles de acciones existentes para ser usada en algun metodo. -Registra la acción +Registra la acción ---------------------- Tu tienes que llamar el metodo `register()` desde la clase `Kanboard\Core\Action\ActionManager`: @@ -58,4 +58,4 @@ class Plugin extends Base Ejemplo ------- -- [Ejemplo de acción automatica](https://github.com/kanboard/plugin-example-automatic-action) +- [Ejemplo de acción automatica](https://github.com/kanboard/plugin-example-automatic-action) diff --git a/doc/es_ES/plugin-directory.markdown b/doc/es_ES/plugin-directory.markdown index a7ce114c..0742b992 100644 --- a/doc/es_ES/plugin-directory.markdown +++ b/doc/es_ES/plugin-directory.markdown @@ -1,15 +1,15 @@ -Plugin de configuración del directorio +Plugin de configuración del directorio ====================================== Para instalar, actualizar y eliminar plugins dede la interface de usuario, debes tener estos requerimientos: - El directorio del plugin debe ser de escritura por el usuario del servidor web -- La extensión Zip debe estar disponible en tu server. -- Los parametros de configuración `PLUGIN_INSTALLER` deben estar en `true` +- La extensión Zip debe estar disponible en tu server. +- Los parametros de configuración `PLUGIN_INSTALLER` deben estar en `true` -Para desactivar esta función , cambie el valor de `PLUGIN_INSTALLER` a `false` en tu archivo de configuración. -También puede cambiar los permisos de la carpeta Plugin en el filesystem. +Para desactivar esta función , cambie el valor de `PLUGIN_INSTALLER` a `false` en tu archivo de configuración. +También puede cambiar los permisos de la carpeta Plugin en el filesystem. -Sólo los administradores pueden instalar plugins desde la interfaz de usuario. +Sólo los administradores pueden instalar plugins desde la interfaz de usuario. -Por defecto, sólo plug-in que aparece en la página web de Kanboard están disponibles . +Por defecto, sólo plug-in que aparece en la página web de Kanboard están disponibles . diff --git a/doc/es_ES/plugin-events.markdown b/doc/es_ES/plugin-events.markdown index 1f8bdc24..ebb9066b 100644 --- a/doc/es_ES/plugin-events.markdown +++ b/doc/es_ES/plugin-events.markdown @@ -13,7 +13,7 @@ $this->on('app.bootstrap', function($container) { ``` - El primer argumento es el nombre del evento (string) -- El segundo argumento es una funcion PHP callable (finalización o metodos de la clase) +- El segundo argumento es una funcion PHP callable (finalización o metodos de la clase) Agregando un nuevo evento ------------------------- @@ -24,4 +24,4 @@ Para agregar un nuevo, tienes que llamar al metodo `register()` de la clase `Kan $this->eventManager->register('my.event.name', 'Mi descripcion del nuevo evento'); ``` -Estos eventos pueden ser utilizados por otros componentes de Kanboard como acciones automáticas . +Estos eventos pueden ser utilizados por otros componentes de Kanboard como acciones automáticas . diff --git a/doc/es_ES/plugin-external-link.markdown b/doc/es_ES/plugin-external-link.markdown index 343712a6..969c430c 100644 --- a/doc/es_ES/plugin-external-link.markdown +++ b/doc/es_ES/plugin-external-link.markdown @@ -1,4 +1,4 @@ -Vinculación externa de proveedores +Vinculación externa de proveedores ================================== Esta funcionalidad le permite vincular una tarea a los elementos adicionales almacenados en otro sistema. @@ -14,14 +14,14 @@ Cada item tiene un tipo, u na URL, un tipo dedependencia y un titulo. Por default,Kanboard incluye dos tipos de proveedores -- Vinculación Web : Copiar y pegar un enlace y Kanboard se ha podido ir a la página de título de forma automática. -- Datos adjuntos: Enlace a todo lo que no es una página web +- Vinculación Web : Copiar y pegar un enlace y Kanboard se ha podido ir a la página de tÃtulo de forma automática. +- Datos adjuntos: Enlace a todo lo que no es una página web Flujo de trabajo ** Workflow ** -------------------------------- 1. El usuario final copia y pega el URL al submit del formulario. -2.- Si el tipo de link es "auto", Kanboard crea un bucle a través de todos los proveedores registrados hasta que hay una coincidencia +2.- Si el tipo de link es "auto", Kanboard crea un bucle a través de todos los proveedores registrados hasta que hay una coincidencia 3. Entonces , el proveedor de enlace devuelve un objeto que implementa la interfaz de `ExternalLinkInterface` 4. El formulario se muestra al usuario con todos los datos precargados antes de guardar el enlace @@ -38,7 +38,7 @@ Para implementar un nuevo vinculo al proveedor desde un plugin, es necesario cre | Method | Usage | |----------------------------|---------------------------------------------------------------------------------| | `getName()` | Obtener el nombre del proveedor(label) | -| `getType()` | Obtener el tipo de link (se guardarán en la base de datos) | +| `getType()` | Obtener el tipo de link (se guardarán en la base de datos) | | `getDependencies()` | Obtener un diccionario de los tipos de dependencia soportados por el proveedor | | `setUserTextInput($input)` | Texto introducido por el usuario | | `match()` | Regresa true si el proveedor puede analizar correctamente la entrada del usuario| diff --git a/doc/es_ES/plugin-group-provider.markdown b/doc/es_ES/plugin-group-provider.markdown index dd742249..ac7d0d71 100644 --- a/doc/es_ES/plugin-group-provider.markdown +++ b/doc/es_ES/plugin-group-provider.markdown @@ -15,20 +15,20 @@ Flujo de trabajo del Grupo de Proveedores **Workflow** 1. El usuario final **end-user** comienza a escribir el nombre del grupo y el campo se autocompleta 2. EL `GroupManager` la clase ejecuta la consulta para todos los proveedores de grupo registrados 3. Los resultados son fusionados y regresados a la interface de usuario -4. Antes de seleccionar un grupo, a información del grupo se sincronizan con la base de datos local si es necesario +4. Antes de seleccionar un grupo, a información del grupo se sincronizan con la base de datos local si es necesario Interface del grupo de proveedores ---------------------------------- interface a implementar: `Kanboard\Core\Group\GroupProviderInterface`. -Las clases que implementa esta interface abstracta del grupo de información, solo hay 3 metodos: +Las clases que implementa esta interface abstracta del grupo de información, solo hay 3 metodos: - `getInternalId()`: Obtiene el id interno de la base de datos, de otra manera regresa 0 - `getExternalId()`: Obtiene un id unico externo - `getName()`: Obtiene el nombre de grupo -Kanboard utilizará el ID externo para sincronizar con la base de datos local. +Kanboard utilizará el ID externo para sincronizar con la base de datos local. Interface Backend del grupo de proveedores ------------------------------------------ diff --git a/doc/es_ES/plugin-hooks.markdown b/doc/es_ES/plugin-hooks.markdown index 46855d27..132a9892 100644 --- a/doc/es_ES/plugin-hooks.markdown +++ b/doc/es_ES/plugin-hooks.markdown @@ -1,7 +1,7 @@ Plugin Hooks ============ -Hooks de aplicación +Hooks de aplicación ----------------- Los hooks pueden extender , reemplazar, filtar datos o cambiar los comportamientos por default, cad hook es identificado con unico nombre, ejemplo : `controller:calendar:user:events` @@ -16,13 +16,13 @@ $this->hook->on('hook_name', $callable); El primer argumento es el nombre del hook y el segundo es un callable PHP -### Hooks ejecutado sólo una vez +### Hooks ejecutado sólo una vez Algunos hooks solo tienen un listener: #### model:subtask-time-tracking:calculate:time-spent -- Anular el cálculo del tiempo anterior cuando se detiene el temporizador de la subtarea +- Anular el cálculo del tiempo anterior cuando se detiene el temporizador de la subtarea - Argumentos : - `$user_id` (integer) - `$start` (DateTime) @@ -30,7 +30,7 @@ Algunos hooks solo tienen un listener: ### Fusionar hooks -"Fusionar hooks" actuar de la misma manera que la función de `array_merge`. el hook callback solo regresa un array. Este array se fusionará con la que viene por defecto. +"Fusionar hooks" actuar de la misma manera que la función de `array_merge`. el hook callback solo regresa un array. Este array se fusionará con la que viene por defecto. Ejemplo para agregar eventos en el calendario del usuario: @@ -63,7 +63,7 @@ class Plugin extends Base } ``` -Lista de fusión de hooks: +Lista de fusión de hooks: #### controller:task:form:default @@ -129,22 +129,22 @@ $this->hook->on('formatter:board:query', function (\PicoDb\Table &query) { }); ``` -El código anterior mostrará sólo las tareas en rojo en el tablero. +El código anterior mostrará sólo las tareas en rojo en el tablero. Lista de referencias de hooks: | Hook | Description | |--------------------------------------------|---------------------------------------------------------------| | `formatter:board:query` | Alterar consulta a la base antes de tablero de renderizado | -| `pagination:dashboard:task:query` | Alterar consulta de base de datos para las tareas de la paginación en el dashboard | -| `pagination:dashboard:subtask:query` | Alterar consulta a la base de la paginación en el subtareas del dashboard | +| `pagination:dashboard:task:query` | Alterar consulta de base de datos para las tareas de la paginación en el dashboard | +| `pagination:dashboard:subtask:query` | Alterar consulta a la base de la paginación en el subtareas del dashboard | | `model:task:creation:prepare` | Alterar los valores del formulario antes de guardar una tarea | | `model:task:modification:prepare` | Alterar los valores del formulario antes de editar una tarea Template Hooks -------------- -Template hooks permitirá añadir nuevos contenidos en las plantillas existentes. +Template hooks permitirá añadir nuevos contenidos en las plantillas existentes. Ejemplo para agregar nuevos contenidos en el sidebar del dashboard: @@ -171,7 +171,7 @@ $this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/ Este llamada es usualmente definida en el metodo `initialize()` El primer argumento es el nombre del hook y el segundo argumento es el nombre del template. -Los nombres de plantillas con el prefijo del nombre del plugin y los dos puntos indican la ubicación de la plantilla. +Los nombres de plantillas con el prefijo del nombre del plugin y los dos puntos indican la ubicación de la plantilla. Ejemplo con `myplugin:dashboard/sidebar`: @@ -180,11 +180,11 @@ Ejemplo con `myplugin:dashboard/sidebar`: - En el filesystem, El plugin esta localizado aqui: `plugins\Myplugin\Template\dashboard\sidebar.php` - Templates estan escritos en puro PHP (no se olvide de escapar los datos) -Los nombres de plantillas sin prefijo son plantillas básicas. +Los nombres de plantillas sin prefijo son plantillas básicas. Lista de templates hooks: -| Hook | Descripción | +| Hook | Descripción | |--------------------------------------------|----------------------------------------------------| | `template:analytic:sidebar` | Sidebar en paginas analiticas | | `template:app:filters-helper:before` | Filtro helper dropdown (top) | @@ -198,8 +198,8 @@ Lista de templates hooks: | `template:board:task:footer` | Tarea en el tablero : footer | | `template:board:task:icons` | Tarea en el tablero: tooltip icon | | `template:board:column:dropdown` | Menu Dropdown en las columnas del tablero | -| `template:config:sidebar` | Sidebar pagina de configuración | -| `template:config:application ` | Aplicación de configuración del formulario | +| `template:config:sidebar` | Sidebar pagina de configuración | +| `template:config:application ` | Aplicación de configuración del formulario | | `template:config:email` | Email settings page | | `template:config:integrations` | Integration page in global settings | | `template:dashboard:sidebar` | Sidebar en la pagina del dashboard | @@ -214,9 +214,9 @@ Lista de templates hooks: | `template:project:dropdown` | "Actions" menu a la izquierda vista para diferentes proyectos | | `template:project:header:before` | Filtros de Proyectos (antes) | | `template:project:header:after` | Filtros de Proyectos (despues) | -| `template:project:integrations` | Pagina de integracion de configuración de proyectos| -| `template:project:sidebar` | Sidebar configuración de proyectos | -| `template:project-user:sidebar` | Sidebar en la página de la información de usuario del proyecto | +| `template:project:integrations` | Pagina de integracion de configuración de proyectos| +| `template:project:sidebar` | Sidebar configuración de proyectos | +| `template:project-user:sidebar` | Sidebar en la página de la información de usuario del proyecto | | `template:task:layout:top` | Task layout top (antes page header) | | `template:task:details:top` | Resumen de tarea top | | `template:task:details:bottom` | Resumen de tarea bottom | @@ -225,25 +225,25 @@ Lista de templates hooks: | `template:task:details:third-column` | Resumen de tarea tres columnas | | `template:task:details:fourth-column` | Resumen de tarea cuatro columnas | | `template:task:dropdown` | Task dropdown menu en listado de paginas | -| `template:task:sidebar:actions` | Sidebar on task page (sección de acciones) | -| `template:task:sidebar:information` | Sidebar on task page (sección de información) | +| `template:task:sidebar:actions` | Sidebar on task page (sección de acciones) | +| `template:task:sidebar:information` | Sidebar on task page (sección de información) | | `template:task:form:first-column` | 1st columna en forma de tarea | | `template:task:form:second-column` | 2nd columna en forma de tarea | | `template:task:form:third-column` | 3nd columna en forma de tarea | -| `template:task:show:top ` | Mostrar página de tareas : top | -| `template:task:show:bottom` | Mostrar página de tareas : bottom | -| `template:task:show:before-description` | Mostrar página de tareas : despues de la descripción | -| `template:task:show:before-tasklinks` | Mostrar página de tareas : despues tasklinks | -| `template:task:show:before-subtasks` | Mostrar página de tareas : despues subtareas | -| `template:task:show:before-timetracking` | Mostrar página de tareas : despues timetracking | -| `template:task:show:before-attachments` | Mostrar página de tareas : despues archivos adjuntos | -| `template:task:show:before-comments` | Mostrar página de tareas : despues comentarios | -| `template:user:authentication:form` | "Editar autenticación" formulario de perfil de usuario | +| `template:task:show:top ` | Mostrar página de tareas : top | +| `template:task:show:bottom` | Mostrar página de tareas : bottom | +| `template:task:show:before-description` | Mostrar página de tareas : despues de la descripción | +| `template:task:show:before-tasklinks` | Mostrar página de tareas : despues tasklinks | +| `template:task:show:before-subtasks` | Mostrar página de tareas : despues subtareas | +| `template:task:show:before-timetracking` | Mostrar página de tareas : despues timetracking | +| `template:task:show:before-attachments` | Mostrar página de tareas : despues archivos adjuntos | +| `template:task:show:before-comments` | Mostrar página de tareas : despues comentarios | +| `template:user:authentication:form` | "Editar autenticación" formulario de perfil de usuario | | `template:user:create-remote:form` | "Crear un usuario remoto" formulario | -| `template:user:external` | "Autenticación externa" la página de perfil de usuario | -| `template:user:integrations` | Integración en el perfil de usuario | -| `template:user:sidebar:actions` | Sidebar en el perfil de usuario (sección de acciones) | -| `template:user:sidebar:information` | Sidebar en el perfil de usuario (sección de información) | +| `template:user:external` | "Autenticación externa" la página de perfil de usuario | +| `template:user:integrations` | Integración en el perfil de usuario | +| `template:user:sidebar:actions` | Sidebar en el perfil de usuario (sección de acciones) | +| `template:user:sidebar:information` | Sidebar en el perfil de usuario (sección de información) | -Otro de los ganchos plantilla se pueden añadir en caso necesario , sólo hay que preguntar en el seguimiento de incidencias ** issue tracking **. +Otro de los ganchos plantilla se pueden añadir en caso necesario , sólo hay que preguntar en el seguimiento de incidencias ** issue tracking **. diff --git a/doc/es_ES/plugin-mail-transports.markdown b/doc/es_ES/plugin-mail-transports.markdown index 1d999c81..3d3eecd9 100644 --- a/doc/es_ES/plugin-mail-transports.markdown +++ b/doc/es_ES/plugin-mail-transports.markdown @@ -10,11 +10,11 @@ Por default Kanboard soporta 3 estadares de trasporte de email: Con la API del plugin tu puedes agregar un driver para cualquier proveedor de email. Por ejemplo, nuestro plugin puede agregar un trasporte de email para un proveedor que usa un API HTTP. -Implementación +Implementación -------------- Nuestro plugin dede implementgar la interface `Kanboard\Core\Mail\ClientInterface` y extiende desde `Kanboard\Core\Base`. -El único método que necesita para implementar es `sendEmail()`: +El único método que necesita para implementar es `sendEmail()`: ```php interface ClientInterface diff --git a/doc/es_ES/plugin-metadata.markdown b/doc/es_ES/plugin-metadata.markdown index da4f025f..f37ec7e3 100644 --- a/doc/es_ES/plugin-metadata.markdown +++ b/doc/es_ES/plugin-metadata.markdown @@ -1,11 +1,11 @@ Metadatos ========= -Tu piedes adjutnar metadatos para cada projecto,tarea , usuaio o para toda la aplicación +Tu piedes adjutnar metadatos para cada projecto,tarea , usuaio o para toda la aplicación Los metadatos son campos personalisados, es una key/value de una tabla. -Por ejemplo nuestro plugin puede almacenar información externa para una tarea o nuevas configuraciones para un proyecto. -Básicamente le permiten ampliar los campos predeterminados sin tener que crear nuevas tablas . +Por ejemplo nuestro plugin puede almacenar información externa para una tarea o nuevas configuraciones para un proyecto. +Básicamente le permiten ampliar los campos predeterminados sin tener que crear nuevas tablas . Adjuntar y eliminar metadatos para tareas -------------------------------------------- diff --git a/doc/es_ES/plugin-notifications.markdown b/doc/es_ES/plugin-notifications.markdown index 9a99806d..e014cf63 100644 --- a/doc/es_ES/plugin-notifications.markdown +++ b/doc/es_ES/plugin-notifications.markdown @@ -1,13 +1,13 @@ Agregar notificaciones con los tipos de plugin ============================================== -Puede enviar notificaciones a casi cualquier sistema mediante la adición de un nuevo tipo . +Puede enviar notificaciones a casi cualquier sistema mediante la adición de un nuevo tipo . There are two kinds of notifications: project and user. - Project: Notificaciones configuradas a nivel de proyecto - Usuario: Notificaciones enviadas individualmente y configurada a cada perfil de usuario. -Registra un nuevo tipo de notificación +Registra un nuevo tipo de notificación -------------------------------------- En tu archivo de registro del plugin llama el metodo `setType()`: @@ -17,19 +17,19 @@ $this->userNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC $this->projectNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC\Notification\IrcHandler'); ``` -Su controlador puede ser registrado por el usuario o la notificación del proyecto. No necesariamente tienen que soportarlo . -Cuando tu handler es registrdo, el usuario final **end-user** puede elegir recibir el nuevo tipo de notificación o no +Su controlador puede ser registrado por el usuario o la notificación del proyecto. No necesariamente tienen que soportarlo . +Cuando tu handler es registrdo, el usuario final **end-user** puede elegir recibir el nuevo tipo de notificación o no -Notificación de Handler +Notificación de Handler ----------------------- -Su controlador de notificación debe implementar la interfaz `Kanboard\Core\Notification\NotificationInterface`: +Su controlador de notificación debe implementar la interfaz `Kanboard\Core\Notification\NotificationInterface`: ```php interface NotificationInterface { /** - * Envia notificación a un usuario + * Envia notificación a un usuario * * @access public * @param array $user diff --git a/doc/es_ES/plugin-overrides.markdown b/doc/es_ES/plugin-overrides.markdown index f8b999f3..a416d161 100644 --- a/doc/es_ES/plugin-overrides.markdown +++ b/doc/es_ES/plugin-overrides.markdown @@ -1,10 +1,10 @@ Plugin Reescritura ================ -Reesritura HTTP Contenido Política de Seguridad +Reesritura HTTP Contenido PolÃtica de Seguridad ----------------------------------------------- -Si desea reemplazar el encabezado HTTP predeterminado de la directiva de seguridad del contenido, puede utilizar el método`setContentSecurityPolicy()`: +Si desea reemplazar el encabezado HTTP predeterminado de la directiva de seguridad del contenido, puede utilizar el método`setContentSecurityPolicy()`: ```php <?php @@ -25,7 +25,7 @@ class Plugin extends Base Plantillas de reescrituras -------------------------- -Las plantillas definidas en el núcleo se pueden anular . Por ejemplo , se puede redefinir el diseño predeterminado o cambiar notificaciones por correo electrónico. +Las plantillas definidas en el núcleo se pueden anular . Por ejemplo , se puede redefinir el diseño predeterminado o cambiar notificaciones por correo electrónico. Ejemolo de plantilla de reescritura: diff --git a/doc/es_ES/plugin-routes.markdown b/doc/es_ES/plugin-routes.markdown index eb4b9f36..69357e3c 100644 --- a/doc/es_ES/plugin-routes.markdown +++ b/doc/es_ES/plugin-routes.markdown @@ -1,22 +1,22 @@ Personalizar Rutas ================== -Cuando está habilitada la reescritura de URL, tu puedes definir rutas personalizadas desde tus plugins. +Cuando está habilitada la reescritura de URL, tu puedes definir rutas personalizadas desde tus plugins. Definir nuevas rutas -------------------- Las rutas son manejadas por la clase `Kanboard\Core\Http\Route`. -Las nuevas rutas se pueden agregar mediante el uso del método `addRoute($path, $controller, $action, $plugin)`, here an example: +Las nuevas rutas se pueden agregar mediante el uso del método `addRoute($path, $controller, $action, $plugin)`, here an example: ```php $this->route->addRoute('/my/custom/route', 'myController', 'myAction', 'myplugin'); ``` -Cuando el usuario final **end-user** van a la URL `/my/custom/route`, el metodo `Kanboard\Plugin\Myplugin\Controller\MyController::myAction()` será ejecutado. +Cuando el usuario final **end-user** van a la URL `/my/custom/route`, el metodo `Kanboard\Plugin\Myplugin\Controller\MyController::myAction()` será ejecutado. -El primer caracter del contraldor y el nombre del plugin serán convertidos en mayusculas con la funcion `ucfirst()`. +El primer caracter del contraldor y el nombre del plugin serán convertidos en mayusculas con la funcion `ucfirst()`. Tu puedes ademas definir rutas con variables: @@ -70,9 +70,9 @@ Salida HTML cuando la reescritura del URL no esta habilitada: ?controller=mycontroller&action=myaction&plugin=myplugin ``` -### Generar enlace de redirección: +### Generar enlace de redirección: -Desde un controlador, si tu necesitas para From a controller, si tu necesitas realizar una redirección: +Desde un controlador, si tu necesitas para From a controller, si tu necesitas realizar una redirección: ```php $this->url->to('mycontroller', 'myaction', array('plugin' => 'myplugin')); diff --git a/doc/es_ES/plugins.markdown b/doc/es_ES/plugins.markdown index 587377d7..633d7126 100644 --- a/doc/es_ES/plugins.markdown +++ b/doc/es_ES/plugins.markdown @@ -3,14 +3,14 @@ Desarrollo de Plugin Nota : el plugin API es **considerado alpha** en estos momentos. -Los plugins son útiles para extender las funcionalidades básicas de Kanboard , la adición de características , la creación de temas o cambiar el comportamiento por defecto . +Los plugins son útiles para extender las funcionalidades básicas de Kanboard , la adición de caracterÃsticas , la creación de temas o cambiar el comportamiento por defecto . -Los creadores de plugins deben especificar explícitamente las versiones compatibles de Kanboard . El código interno de Kanboard puede cambiar con el tiempo y su extensión debe ser probado con nuevas versiones . Compruebe siempre el [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para realizar los cambios. +Los creadores de plugins deben especificar explÃcitamente las versiones compatibles de Kanboard . El código interno de Kanboard puede cambiar con el tiempo y su extensión debe ser probado con nuevas versiones . Compruebe siempre el [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para realizar los cambios. - [Crear tu plugin](plugin-registration.markdown) - [Usar plugins hooks](plugin-hooks.markdown) - [Eventos](plugin-events.markdown) -- [Rescribir compartamientos por default en la aplicación](plugin-overrides.markdown) +- [Rescribir compartamientos por default en la aplicación](plugin-overrides.markdown) - [Agregar plugins para migrar esquemas](plugin-schema-migrations.markdown) - [Personalizar rutas](plugin-routes.markdown) - [Agregar helpers](plugin-helpers.markdown) @@ -18,9 +18,9 @@ Los creadores de plugins deben especificar explícitamente las versiones compatib - [Agregar tipos de notificaciones](plugin-notifications.markdown) - [Agregar acciones automaticas](plugin-automatic-actions.markdown) - [Adjuntar metados para usuarios,tareas y proyectos](plugin-metadata.markdown) -- [Arquitectura de autenticación](plugin-authentication-architecture.markdown) -- [Registración de plugins de autenticación](plugin-authentication.markdown) -- [Arquitectura de autorización](plugin-authorization-architecture.markdown) +- [Arquitectura de autenticación](plugin-authentication-architecture.markdown) +- [Registración de plugins de autenticación](plugin-authentication.markdown) +- [Arquitectura de autorización](plugin-authorization-architecture.markdown) - [Personlizar grupos de proveedores](plugin-group-provider.markdown) - [Links externos para proveedores](plugin-external-link.markdown) - [Agregar avatar a proveedores](plugin-avatar-provider.markdown) diff --git a/doc/es_ES/requirements.markdown b/doc/es_ES/requirements.markdown index 57c90110..3dde8514 100755 --- a/doc/es_ES/requirements.markdown +++ b/doc/es_ES/requirements.markdown @@ -28,12 +28,12 @@ Lado del servidor | MariaDB >= 10 | | Postgresql >= 9.3 | -Qué base de datos para elegir? +Qué base de datos para elegir? | Tipo | Uso | |-----------------|-----------------------------------------------------| -| Sqlite | un solo usuario o equipo pequeño (casi no hay concurrencia) | -| Mysql/Postgres | Equipo grande, configuración de alta disponibilidad | +| Sqlite | un solo usuario o equipo pequeño (casi no hay concurrencia) | +| Mysql/Postgres | Equipo grande, configuración de alta disponibilidad | No usar Sqlite en montajes de NFS, use Sqlite solo cuando tengas un disco con Fast I/O @@ -49,7 +49,7 @@ Kanboard esta pre configurado para trabajar con Apache (URL rewriting). ### Versiones de PHP -| Versión de PHP | +| Versión de PHP | |----------------| | PHP >= 5.3.9 | | PHP 5.4 | @@ -71,7 +71,7 @@ Kanboard esta pre configurado para trabajar con Apache (URL rewriting). | hash | | | ctype | | | session | | -| ldap | Solamente para autenticación LDAP | +| ldap | Solamente para autenticación LDAP | | Zend OPcache | Recomendado | ### Extensiones PHP opcionales @@ -83,7 +83,7 @@ Kanboard esta pre configurado para trabajar con Apache (URL rewriting). ### Recomendaciones - Usar sistemas operativos modernos de Linux o Unix. -- El mejor performace se obtienen con la última versión de PHP junto con la operación de OPcode esta activado. +- El mejor performace se obtienen con la última versión de PHP junto con la operación de OPcode esta activado. Lado del cliente @@ -91,7 +91,7 @@ Lado del cliente ### Browsers [Navegadores] -Siempre usar el navegador mas moderno o la ultima versión posible: +Siempre usar el navegador mas moderno o la ultima versión posible: | Browser | |---------------------------------------| @@ -103,9 +103,9 @@ Siempre usar el navegador mas moderno o la ultima versión posible: ### Dispositivos -| Device | Resolución de la pantalla | +| Device | Resolución de la pantalla | |-------------------|--------------------| | Laptop o desktop | >= 1366 x 768 | | Tablet | >= 1024 x 768 | -Kanboard aún no está optimizado para smartphones. Está funcionando, pero la interfaz de usuario no es muy cómoda de usar. +Kanboard aún no está optimizado para smartphones. Está funcionando, pero la interfaz de usuario no es muy cómoda de usar. diff --git a/doc/es_ES/reverse-proxy-authentication.markdown b/doc/es_ES/reverse-proxy-authentication.markdown index f8a0719f..757301e5 100755 --- a/doc/es_ES/reverse-proxy-authentication.markdown +++ b/doc/es_ES/reverse-proxy-authentication.markdown @@ -1,9 +1,9 @@ -Autenticación por proxy inverso +Autenticación por proxy inverso ============================ -Este metodo de autenticación a menudo es usado por [SSO](http://en.wikipedia.org/wiki/Single_sign-on) (Single Sign-On) especialmente para organizaciones mayores. +Este metodo de autenticación a menudo es usado por [SSO](http://en.wikipedia.org/wiki/Single_sign-on) (Single Sign-On) especialmente para organizaciones mayores. -La autenticación se realiza mediante otro sistema, Kanboard no conoce su contraseña y supongamos que ya está autenticado. +La autenticación se realiza mediante otro sistema, Kanboard no conoce su contraseña y supongamos que ya está autenticado. Requerimentos ------------ @@ -15,49 +15,49 @@ o - Apache Auth en el mismo servidor -¿Como funciona esto? +¿Como funciona esto? ------------------- -1. Su proxy inverso autentica al usuario y envia el nombre de usuario a través de una cabecera HTTP. +1. Su proxy inverso autentica al usuario y envia el nombre de usuario a través de una cabecera HTTP. 2. Kanboard recuperar el nombre de usuario de la solicitud - - El usuario se crea automáticamente si es necesario - - Abrir una nueva sesión Kanboard sin ningún símbolo asumiendo que es válida + - El usuario se crea automáticamente si es necesario + - Abrir una nueva sesión Kanboard sin ningún sÃmbolo asumiendo que es válida -Instrucciones de instalación +Instrucciones de instalación ---------------------------- -### Configuración de su proxy inverso +### Configuración de su proxy inverso -Esto esta fuera del alcance de esta documentación. -Debería comprobar la conexión del usuario ya que es enviado por el proxy inverso utilizando una cabecera HTTP. +Esto esta fuera del alcance de esta documentación. +DeberÃa comprobar la conexión del usuario ya que es enviado por el proxy inverso utilizando una cabecera HTTP. -### Configuración de Kanboard +### Configuración de Kanboard Crear un archivo `config.php` copiar el archivo` config.default.php`: ```php <?php -// Activar / desactivar la autenticación del proxy inverso +// Activar / desactivar la autenticación del proxy inverso define('REVERSE_PROXY_AUTH', true); // Set this value to true // La cabecera HTTP para recuperar. Si no se especifica, el valor por defecto es REMOTE_USER define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER'); -// El Kanboard predeterminado esta el administrador para su organización. +// El Kanboard predeterminado esta el administrador para su organización. // Ya que todo debe ser filtrada por el proxy inverso, // Debe tener un usuario administrador para el arranque. define('REVERSE_PROXY_DEFAULT_ADMIN', 'myadmin'); -// El dominio predeterminado para asumir la dirección de correo electrónico. -// En caso de que el nombre de usuario no es una dirección de correo electrónico, -// Se actualizará automáticamente como USER@mydomain.com +// El dominio predeterminado para asumir la dirección de correo electrónico. +// En caso de que el nombre de usuario no es una dirección de correo electrónico, +// Se actualizará automáticamente como USER@mydomain.com define('REVERSE_PROXY_DEFAULT_DOMAIN', 'mydomain.com'); ``` Notas: -- Si el proxy esta en el mismo servidor Web que ejecuta Kanboard, según la [CGI protocol](http://www.ietf.org/rfc/rfc3875) el Header será `REMOTE_USER`. Por ejemplo, Apache añadir `REMOTE_USER` por defecto si` Require valid-usuario de la red se establece. +- Si el proxy esta en el mismo servidor Web que ejecuta Kanboard, según la [CGI protocol](http://www.ietf.org/rfc/rfc3875) el Header será `REMOTE_USER`. Por ejemplo, Apache añadir `REMOTE_USER` por defecto si` Require valid-usuario de la red se establece. - Si Apache es un proxy inverso a otro Apache corriendo Kanboard, la cabecera `REMOTE_USER` no se establece (mismo comportamiento con IIS y Nginx) diff --git a/doc/es_ES/swimlanes.markdown b/doc/es_ES/swimlanes.markdown index 21e36754..90843fb6 100755 --- a/doc/es_ES/swimlanes.markdown +++ b/doc/es_ES/swimlanes.markdown @@ -2,7 +2,7 @@ Swimlanes ========= Swimlanes son separaciones horizontales en tu tablero. -Por ejemplo, es útil para separar las versiones de software, dividir las tareas en diferentes productos, equipos o lo que quieras. +Por ejemplo, es útil para separar las versiones de software, dividir las tareas en diferentes productos, equipos o lo que quieras. Tablero con swimlanes ---------------------- @@ -12,23 +12,23 @@ Tablero con swimlanes - Tu puedes colapsar los swimlanes haciendo click en el icono de la izquierda - El swimlane por defecto se muestra siempre en la parte superior -La gestión de swimlanes +La gestión de swimlanes ----------------------- - Todos los proyectos tienen un swimlane predeterminado. -- Si hay más de un swimlane, el tablero mostrará todos swimlanes. +- Si hay más de un swimlane, el tablero mostrará todos swimlanes. - Usted puede arrastrar y soltar las tareas entre swimlanes. -Para configurar swimlanes ir a la página de **configuración del proyecto ** y elija la sección **Swimlanes**. +Para configurar swimlanes ir a la página de **configuración del proyecto ** y elija la sección **Swimlanes**. -![Configuración Swimlanes](screenshots/swimlane-configuration.png) +![Configuración Swimlanes](screenshots/swimlane-configuration.png) -A partir de ahí, se puede añadir un nuevo swimlane o cambiar el nombre por defecto. -También puede desactivar y cambiar la posición de los diferentes swimlanes. +A partir de ahÃ, se puede añadir un nuevo swimlane o cambiar el nombre por defecto. +También puede desactivar y cambiar la posición de los diferentes swimlanes. - El swimlane por defecto es siempre en la parte superior, pero se puede ocultarlo. - Swimlanes inactivas no se muestran en el tablero. -- **Extracción de una swimlane no elimina tareas **, esas tareas se moverán a la swimlane predeterminada. +- **Extracción de una swimlane no elimina tareas **, esas tareas se moverán a la swimlane predeterminada. diff --git a/doc/es_ES/tags.markdown b/doc/es_ES/tags.markdown index 653d3372..a4d1053d 100755 --- a/doc/es_ES/tags.markdown +++ b/doc/es_ES/tags.markdown @@ -10,16 +10,16 @@ Desde el formulario de tarea, tu puedes caputarar las tags deseadas: ![Tags form](screenshots/tags-task.png) -La auto-completacion se forma para mostrar ó sugerir etiquetas disponibles. +La auto-completacion se forma para mostrar ó sugerir etiquetas disponibles. -También puede crear etiquetas directamente desde el formulario de tareas . -Por defecto , al crear etiquetas de un formulario de tarea que están asociados al proyecto actual : +También puede crear etiquetas directamente desde el formulario de tareas . +Por defecto , al crear etiquetas de un formulario de tarea que están asociados al proyecto actual : ![Project Tags](screenshots/tags-projects.png) -Todas las tags pueden ser manejadas en configuración del proyecto. +Todas las tags pueden ser manejadas en configuración del proyecto. -Para definir tags globalmente para todos los proyectos, ve a la configuración de la aplicación : +Para definir tags globalmente para todos los proyectos, ve a la configuración de la aplicación : ![Global Tags](screenshots/tags-global.png) diff --git a/doc/es_ES/update.markdown b/doc/es_ES/update.markdown index 6dc422d0..06789d74 100755 --- a/doc/es_ES/update.markdown +++ b/doc/es_ES/update.markdown @@ -1,9 +1,9 @@ -Actualizar Kanboard a una nueva versión +Actualizar Kanboard a una nueva versión ======================================= -La actualización de Kanboard a una nueva versión es perfecta. +La actualización de Kanboard a una nueva versión es perfecta. El proceso se puede resumir simplemente copiar la carpeta de datos a la nueva carpeta Kanboard . -Kanboard ejecutará migraciones de bases de datos de forma automática. +Kanboard ejecutará migraciones de bases de datos de forma automática. Cosas importantes que hacer antes de actualizar -------------------------------------- @@ -13,14 +13,14 @@ Cosas importantes que hacer antes de actualizar - Siempre leer el [change log](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para verificar si hay cambios destacados - Siempre cerrar las sesiones de todos los usuarios (eliminar todas las sesiones en el servidor) -Desde el archivo (Versión estable ) +Desde el archivo (Versión estable ) --------------------------------- 1. Descomprimir el nuevo archivo -2. Copiar el contenido de la carpeta de datos en el directorio recién descomprimido +2. Copiar el contenido de la carpeta de datos en el directorio recién descomprimido 3. Copiar tu `config.php` personalizado si tienes uno 4. Copiar tus plugins sin son necesarios -5. Asegúrese de que el directorio `data` es escribible por el usuario del servidor web +5. Asegúrese de que el directorio `data` es escribible por el usuario del servidor web 6. Testearlo 7. Eliminar tu viejo directorio del Kanboard @@ -29,6 +29,6 @@ Desde el repositorio (development version) 1. `git pull` 2. `composer install --no-dev` -3. Inicia la sesión y comprobar si todo está bien +3. Inicia la sesión y comprobar si todo está bien -Nota: Este método se instalará la **versión de desarrollo actual**, utilice a su propio riesgo. +Nota: Este método se instalará la **versión de desarrollo actual**, utilice a su propio riesgo. |