diff options
Diffstat (limited to 'doc/es_ES')
72 files changed, 0 insertions, 6024 deletions
diff --git a/doc/es_ES/2fa.markdown b/doc/es_ES/2fa.markdown deleted file mode 100644 index caf8f0c8..00000000 --- a/doc/es_ES/2fa.markdown +++ /dev/null @@ -1,33 +0,0 @@ -Autentificación Two-Factor
-==========================
-
-Cada usuario puede habilitar el [two-factor authentication](http://en.wikipedia.org/wiki/Two_factor_authentication).
-Antes de un logeo exitoso, un codigo one-time de (6 caracteres) se le pide a el usuaio para permitir el acceso a kanboard.
-
-Este codigo tiene que ser proporcionado por un software compatible generalmente instalado en tu smartphone
-
-Kanboard usa el [Time-based One-time Password Algorithm](http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) definido en el [RFC 6238](http://tools.ietf.org/html/rfc6238).
-
-Existen muchos softwares compatibles con el standard del sistema TOTP.
-Por ejemplo, tu puedes usar estas aplicaciones libres y de open source:
-
-- [Google Authenticator](https://github.com/google/google-authenticator/) (Android, iOS, Blackberry)
-- [FreeOTP](https://freeotp.github.io/) (Android, iOS)
-- [OATH Toolkit](http://www.nongnu.org/oath-toolkit/) (Utilidad en linea de comandos Unix/Linux
-
-Este sistema puede trabajar offline y no es necesario tener un telefono movil
-
-Instalacion
------------
-
-1. Ir a tu perfil de usuario
-2. Click a la izquierda en **Two factor authentication** y selecionar la caja
-3. Una key secret es geradada para ti
-
-![2FA](../screenshots/2fa.png)
-
-- Tienes que salvar la key secret en tu software TOTP. Si usas un smartphone, la solución sera mas fácil ya que puedes escanear el Qr code con FreeOTP o Google Authenticator.
-- Cada vez que abras una nueva session , un nuevo código se pedirá.
-- No se olvide de verficar el dispositivo antes de cerrar la sesión
-
-Una nueva key secret es generada cada vez que actives o desactives esta función
\ No newline at end of file diff --git a/doc/es_ES/analytics-tasks.markdown b/doc/es_ES/analytics-tasks.markdown deleted file mode 100644 index 49299fbb..00000000 --- a/doc/es_ES/analytics-tasks.markdown +++ /dev/null @@ -1,24 +0,0 @@ -Análisis para tareas -=================== - -Cada tarea tiene una sección de análisis disponible en el menu izquierdo en la vista de tarea. - -Espera y tiempo de ciclo -------------------- - -![Lead and cycle time](../screenshots/task-lead-cycle-time.png) - -- El tiempo de espera es el tiempo entre la creacion de la tarea y la fecha de finalización (Tarea cerrada). -- El tiempo de ciclo es el tiempo entre la fecha de inicio y la fecha de finalización. -- Si la tarea no esta cerrada el tiempo actual es usado en lugar de la fecha de finalización. -- Si la fecha de inicio no es especificada, el tiempo de ciclo no es calculado. - -Nota: Puede configurar una accion automatica para definir la fecha de inicio automaticamente cuando se mueve una tarea a la columna de su eleccion. - -El tiempo invertido en cada columna ---------------------------- - -![Time spent into each column](../screenshots/time-into-each-column.png) - -- Esta gráfico muestra el total de tiempo invertido en cada columna para la tarea. -- El tiempo invertido es calculado hasta que la tarea es cerrada. diff --git a/doc/es_ES/analytics.markdown b/doc/es_ES/analytics.markdown deleted file mode 100644 index 473d1e2c..00000000 --- a/doc/es_ES/analytics.markdown +++ /dev/null @@ -1,59 +0,0 @@ -Analisis
-=========
-
-Cada proyecto tiene una sección de análisis . Dependiendo de cómo se está utilizando Kanboard, se puede ver estos informes :
-
-Repartición de usuarios
------------------------
-
-![User repartition](../screenshots/user-repartition.png)
-
-Esta gráfico de sectores muestra el numero de tareas abiertas asignadas por usuario.
-
-Distribución de tareas
-----------------------
-
-![Task distribution](../screenshots/task-distribution.png)
-
-Este gráfico de sectores da una visión general del numero de tareas abiertas por columnas.
-
-Diagrama de flujo acumulado
----------------------------
-
-![Cumulative flow diagram](../screenshots/cfd.png)
-
-- Este gráfico muesta el numerto de tareas acumuladas por cada columna a través del tiempo.
-- Cada día , el número total de tareas se registra para cada columna.
-- Si tu quiseras excluir las tareas cerradas, deberá cambiar las configuraciones globales del proyecto
-
-Nota: Necesitas tener al menos dos dias de datos para mirar la gráfica
-
-
-Gráfico Burn down
-
-El gráfico burn down esta dispobible para cada proyecto.
-
- Esta gráfico es un represtación grafica del trabajo This chart is a graphical representation del trabajo laborado contra el tiempo.
- Kanboard usa la complejidad o historia de puntos para generar este diagrama.
- Todos los días, se calcula la suma de los puntos de la historia de cada columna .
-
-Average time spent into each column
- This chart shows the average time spent into each column for the last 1000 tasks.
-
- Kanboard uses the task transitions to calculate the data.
- The time spent is calculated until the task is closed.
-
-
-Promedio de avances y ciclos de tiempos
-
-
-Este gráfico muestra el promedio de avances y ciclo de tiempos para las ultimas 1000 tareas fuera de tiempo.
-
- El tiempo promedio es el tiempo entre la creación de la tarea y la fecha de finalización
- El tiempo de ciclo se encuentra entre la fecha de inicio de la tarea especificada y fecha de la tarea finalizada
- Si la tarea no es cerrada,
- If the task is not closed, el momento actual se utiliza en lugar de la fecha de finalización.
-
-Esos indicadores se calculan y registran todos los días durante todo el proyecto.
-
-Nota: No olvidar ejecutar todos los dias el cronjob para tener estadísticas precisas.
diff --git a/doc/es_ES/api-action-procedures.markdown b/doc/es_ES/api-action-procedures.markdown deleted file mode 100644 index dc39fb93..00000000 --- a/doc/es_ES/api-action-procedures.markdown +++ /dev/null @@ -1,245 +0,0 @@ -API Procedimiento de acciones automaticas -================================ - -## getAvailableActions [Obtener acciones disponibles] - -- Propósito: **Obtener una lista de acciones automaticas disponibles** -- Parametros: ninguno -- Resultado satisfactorio: **list of actions** -- Resultado fallido: **falso** - -Ejemplo de solicitud: - -```json -{ - "jsonrpc": "2.0", - "method": "getAvailableActions", - "id": 1217735483 -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1217735483, - "result": { - "\Kanboard\Action\TaskLogMoveAnotherColumn": "Agregar un comentario moviendo las tareas entre columnas", - "\Kanboard\Action\TaskAssignColorUser": "Asignar un color especifico aun usuario", - "\Kanboard\Action\TaskAssignColorColumn": "Asignar un color cuando la tarea es movida a una columna especifica", - "\Kanboard\Action\TaskAssignCategoryColor": "Asignar automaticamente una categoria basado en un color", - "\Kanboard\Action\TaskAssignColorCategory": "Asignar automaticamente un color basado en una categoria", - "\Kanboard\Action\TaskAssignSpecificUser": "Asigar tareas a un usuario especifico", - "\Kanboard\Action\TaskAssignCurrentUser": "Asignar tareas a la persona que hace la acción", - "\Kanboard\Action\TaskUpdateStartDate": "Automaticamente actualizar la fecha de inicio", - "\Kanboard\Action\TaskAssignUser": "Cambiar asigando basado en un nombre de usuario [username] externo", - "\Kanboard\Action\TaskAssignCategoryLabel": "Cambiar la categoria basado en un etiqueta externa", - "\Kanboard\Action\TaskClose": "Cerrar una tarea", - "\Kanboard\Action\CommentCreation": "Crear un comentario desde un proveedor externo", - "\Kanboard\Action\TaskCreation": "Crear una tarea desde un proveedor externo", - "\Kanboard\Action\TaskDuplicateAnotherProject": "Duplicar la tarea a otro proyecto", - "\Kanboard\Action\TaskMoveColumnAssigned": "Mover la tarea a otra columna cuando es asiganada a un usuario", - "\Kanboard\Action\TaskMoveColumnUnAssigned": "Mover la tarea a otra columna cuando la asignación es limpiada", - "\Kanboard\Action\TaskMoveAnotherProject": "Mover la tarea a otro proyecto", - "\Kanboard\Action\TaskOpen": "Abrir una Tarea" - } -} -``` - -## getAvailableActionEvents [obtener acciones de eventos disponibles] - -- Propósito: **Obtener una lista de acciones disponibles para los eventos** -- Parametros: ninguno -- Resultado satisfactorio: **lista de eventos** -- Resultado fallído : **falso** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getAvailableActionEvents", - "id": 2116665643 -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 2116665643, - "result": { - "bitbucket.webhook.commit": "Bitbucket commit recibido", - "task.close": "Cerrando tarea", - "github.webhook.commit": "Github commit recibido", - "github.webhook.issue.assignee": "Github issue asignación cambiada", - "github.webhook.issue.closed": "Github issue cerrada", - "github.webhook.issue.commented": "Github issue comentario creado", - "github.webhook.issue.label": "Github issue etiqueta cambiada", - "github.webhook.issue.opened": "Github issue abierta", - "github.webhook.issue.reopened": "Github issue reabierto", - "gitlab.webhook.commit": "Gitlab commit recibido", - "gitlab.webhook.issue.closed": "Gitlab issue cerrado", - "gitlab.webhook.issue.opened": "Gitlab issue abierto", - "task.move.column": "Mover una tarea a otra columna", - "task.open": "Abrir una tarea abierta", - "task.assignee_change": "Tarea cambio de asignación", - "task.create": "Creación de tarea", - "task.create_update": "Creación de tarea o modificación", - "task.update": "Modificación de tarea" - } -} -``` - -## getCompatibleActionEvents [Obtener acciones compatibles con eventos] - -- Propósito: **Obtener una lista de eventos compatibles con una acción** -- Parametros: - - **action_name** (string, required) -- Resultado satisfactorio: **lista de eventos** -- Resultado fallido: **falso** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getCompatibleActionEvents", - "id": 899370297, - "params": [ - "\Kanboard\Action\TaskClose" - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 899370297, - "result": { - "bitbucket.webhook.commit": "Bitbucket commit recibido", - "github.webhook.commit": "Github commit recibido", - "github.webhook.issue.closed": "Github issue cerrada", - "gitlab.webhook.commit": "Gitlab commit recibido", - "gitlab.webhook.issue.closed": "Gitlab issue cerrado", - "task.move.column": "Mover una tarea a otra columna" - } -} -``` - -## getActions [Obtener acciones] - -- Propósito: **Obtener una lista de acciones para un proyecto** -- Parametros: - - **project_id** (integer, required) -- Resultado satisfactorio: **lista de propiedades de las acciones** -- Resultado fallido: **falso** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getActions", - "id": 1433237746, - "params": [ - "1" - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1433237746, - "result": [ - { - "id" : "13", - "project_id" : "2", - "event_name" : "task.move.column", - "action_name" : "\Kanboard\Action\TaskAssignSpecificUser", - "params" : { - "column_id" : "5", - "user_id" : "1" - } - } - ] -} -``` - -## createAction [Creación de acciones] - -- Proposito: **Crear una acción** -- Parametros: - - **project_id** (integer, required) - - **event_name** (string, required) - - **action_name** (string, required) - - **params** (key/value parameters, required) -- Resultados satisfactorios: **action_id** -- Resultados fallidos: **falso** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "createAction", - "id": 1433237746, - "params": { - "project_id" : "2", - "event_name" : "task.move.column", - "action_name" : "\Kanboard\Action\TaskAssignSpecificUser", - "params" : { - "column_id" : "3", - "user_id" : "2" - } - } -} -``` - -Ejemplo de respuestas: - -```json -{ - "jsonrpc": "2.0", - "id": 1433237746, - "result": 14 -} -``` - -## removeAction [Eliminar una acción] - -- Proposito: **Eliminar una acción** -- Parametros: - - **action_id** (integer, required) -- Resultados satisfactorios: **true** -- Resultados fallidos: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "removeAction", - "id": 1510741671, - "params": [ - 1 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1510741671, - "result": true -} -``` diff --git a/doc/es_ES/api-authentication.markdown b/doc/es_ES/api-authentication.markdown deleted file mode 100644 index 0612ffee..00000000 --- a/doc/es_ES/api-authentication.markdown +++ /dev/null @@ -1,60 +0,0 @@ -API de autentificación -================== - -API endpoint ------------- - -URL: `https://YOUR_SERVER/jsonrpc.php` - - -Metedo por default (HTTP Basico) ---------------------------- - -### Aplicación de credenciales - -- Username: `jsonrpc` -- Password: API token para la configuración de pagina - -### Credencial de usuario - -- Usar el usuario real y su password - -La API usa la [Autentificación Basica del esquema HTTP descrita en el RFC2617](http://www.ietf.org/rfc/rfc2617.txt). - - -Modificar el header HTTP ------------------------- - -Se puede usar un header HTTP alternativo para la autentificación si tu servidor es muy especifico - -configuration. - -- El nombre del header puede ser cualquier cosa que desee, por ejemplo `X-API-Auth`. -- El valor del header `username:password` esta codificado en Base64. - -Configuración: - -1. Definir tu header personalizado en tu `config.php`: `define('API_AUTHENTICATION_HEADER', 'X-API-Auth');` -2. Codificar las credenciales en Base64, ejemplo con PHP `base64_encode('jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929');` -3. Verificar con curl - -```bash -curl \ --H 'X-API-Auth: anNvbnJwYzoxOWZmZDk3MDlkMDNjZTUwNjc1YzNhNDNkMWM0OWMxYWMyMDdmNGJjNDVmMDZjNWIyNzAxZmJkZjg5Mjk=' \ --d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \ -http://localhost/kanboard/jsonrpc.php -``` - -Error de autentificación -------------------------- -Authentication error --------------------- - -Si las credenciales son , recibiras un `401 Not Authorized` y el correspondiente respuesta del JSON. -If the credentials are wrong, you will receive a `401 Not Authorized` and the corresponding JSON response. - - -Error de Autorización ----------------------- - -Si el usuario conectado no tiene permiso para acceder al recurso , recibirá un `403 Forbidden`. diff --git a/doc/es_ES/api-board-procedures.markdown b/doc/es_ES/api-board-procedures.markdown deleted file mode 100644 index 583e6449..00000000 --- a/doc/es_ES/api-board-procedures.markdown +++ /dev/null @@ -1,158 +0,0 @@ -API Procedimientos Del Tablero -=============================== - -## getBoard [obtener tablero] - -- Propósito: **Obtener todo la información necesaria para visualizar el tablero** -- Parametros: - - **project_id** (integer, required) -- Resultado satisfactorio : **Propiedades del tablero** -- Resultado fallido: **Lista vacía** - -Ejemplo de solicitud: - -```json -{ - "jsonrpc": "2.0", - "method": "getBoard", - "id": 827046470, - "params": [ - 1 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 827046470, - "result": [ - { - "id": 0, - "name": "Default swimlane", - "columns": [ - { - "id": "1", - "title": "Backlog", - "position": "1", - "project_id": "1", - "task_limit": "0", - "description": "", - "tasks": [], - "nb_tasks": 0, - "score": 0 - }, - { - "id": "2", - "title": "Ready", - "position": "2", - "project_id": "1", - "task_limit": "0", - "description": "", - "tasks": [ - { - "nb_comments":"0", - "nb_files":"0", - "nb_subtasks":"0", - "nb_completed_subtasks":"0", - "nb_links":"0", - "id":"2", - "reference":"", - "title":"Test", - "description":"", - "date_creation":"1430870507", - "date_modification":"1430870507", - "date_completed":null, - "date_due":"0", - "color_id":"yellow", - "project_id":"1", - "column_id":"2", - "swimlane_id":"0", - "owner_id":"0", - "creator_id":"1", - "position":"1", - "is_active":"1", - "score":"0", - "category_id":"0", - "date_moved":"1430870507", - "recurrence_status":"0", - "recurrence_trigger":"0", - "recurrence_factor":"0", - "recurrence_timeframe":"0", - "recurrence_basedate":"0", - "recurrence_parent":null, - "recurrence_child":null, - "assignee_username":null, - "assignee_name":null - } - ], - "nb_tasks": 1, - "score": 0 - }, - { - "id": "3", - "title": "Trabajo en progreso", - "position": "3", - "project_id": "1", - "task_limit": "0", - "description": "", - "tasks": [ - { - "nb_comments":"0", - "nb_files":"0", - "nb_subtasks":"1", - "nb_completed_subtasks":"0", - "nb_links":"0", - "id":"1", - "reference":"", - "title":"Task with comment", - "description":"", - "date_creation":"1430783188", - "date_modification":"1430783188", - "date_completed":null, - "date_due":"0", - "color_id":"red", - "project_id":"1", - "column_id":"3", - "swimlane_id":"0", - "owner_id":"1", - "creator_id":"0", - "position":"1", - "is_active":"1", - "score":"0", - "category_id":"0", - "date_moved":"1430783191", - "recurrence_status":"0", - "recurrence_trigger":"0", - "recurrence_factor":"0", - "recurrence_timeframe":"0", - "recurrence_basedate":"0", - "recurrence_parent":null, - "recurrence_child":null, - "assignee_username":"admin", - "assignee_name":null - } - ], - "nb_tasks": 1, - "score": 0 - }, - { - "id": "4", - "title": "Done", - "position": "4", - "project_id": "1", - "task_limit": "0", - "description": "", - "tasks": [], - "nb_tasks": 0, - "score": 0 - } - ], - "nb_columns": 4, - "nb_tasks": 2 - } - ] -} -``` diff --git a/doc/es_ES/api-category-procedures.markdown b/doc/es_ES/api-category-procedures.markdown deleted file mode 100644 index eb5dc223..00000000 --- a/doc/es_ES/api-category-procedures.markdown +++ /dev/null @@ -1,172 +0,0 @@ -API Procedimientos de Categoría -======================= - -## createCategory - -- Propósito: **Crea una nueva categoría** -- Parámetros: -- **project_id** (integer, required) - - **name** (string, required, must be unique for the given project) -- Resultado en caso exitoso: **category_id** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "createCategory", - "id": 541909890, - "params": { - "name": "Super category", - "project_id": 1 - } -} -``` - -Ejemplo de respuesta:: - -```json -{ - "jsonrpc": "2.0", - "id": 541909890, - "result": 4 -} -``` - -## getCategory - -- Propósito: **Obtiene información de la categoría** -- Parámetros: - - **category_id** (integer, required) -- Resultado en caso exitoso: **category properties** -- Resultado en caso fallido: **null** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getCategory", - "id": 203539163, - "params": { - "category_id": 1 - } -} -``` - -Ejemplo de respuesta:: - -```json -{ - - "jsonrpc": "2.0", - "id": 203539163, - "result": { - "id": "1", - "name": "Super category", - "project_id": "1" - } -} -``` - -## getAllCategories - -- Propósito: **Obtiene todas las categorías disponibles** -- Parámetros: - - **project_id** (integer, required) -- Resultado en caso exitoso: **List of categories** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getAllCategories", - "id": 1261777968, - "params": { - "project_id": 1 - } -} -``` - -Ejemplo de respuesta:: - -```json -{ - "jsonrpc": "2.0", - "id": 1261777968, - "result": [ - { - "id": "1", - "name": "Super category", - "project_id": "1" - } - ] -} -``` - -## updateCategory - -- Propósito: **Actualiza una categoría** -- Parámetros: - - **id** (integer, required) - - **name** (string, required) -- Resultado en caso exitoso: **true** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "updateCategory", - "id": 570195391, - "params": { - "id": 1, - "name": "Renamed category" - } -} -``` - -Ejemplo de respuesta:: - -```json -{ - "jsonrpc": "2.0", - "id": 570195391, - "result": true -} -``` - -## removeCategory - -- Propósito: **Elimina una categoría** -- Parámetros: - - **category_id** (integer) -- Resultado en caso exitoso: **true** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "removeCategory", - "id": 88225706, - "params": { - "category_id": 1 - } -} -``` - -Ejemplo de respuesta:: - -```json -{ - "jsonrpc": "2.0", - "id": 88225706, - "result": true -} -``` diff --git a/doc/es_ES/api-column-procedures.markdown b/doc/es_ES/api-column-procedures.markdown deleted file mode 100644 index ff9b853d..00000000 --- a/doc/es_ES/api-column-procedures.markdown +++ /dev/null @@ -1,229 +0,0 @@ -API Procedimientos de columna -===================== - -## getColumns - -- Propósito: **Obtiene toda la información de columnas para un proyecto dado** -- Parametros: - - **project_id** (integer, required) -- Resultados en caso exitoso: **columns properties** -- Resultados en caso fallido: **empty list** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getColumns", - "id": 887036325, - "params": [ - 1 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 887036325, - "result": [ - { - "id": "1", - "title": "Backlog", - "position": "1", - "project_id": "1", - "task_limit": "0" - }, - { - "id": "2", - "title": "Ready", - "position": "2", - "project_id": "1", - "task_limit": "0" - }, - { - "id": "3", - "title": "Work in progress", - "position": "3", - "project_id": "1", - "task_limit": "0" - } - ] -} -``` - -## getColumn - -- Propósito: **Obtiene una columna individual** -- Parametros: - - **column_id** (integer, required) -- Resultados en caso exitoso: **column properties** -- Resultados en caso fallido: **null** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getColumn", - "id": 1242049935, - "params": [ - 2 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1242049935, - "result": { - "id": "2", - "title": "Youpi", - "position": "2", - "project_id": "1", - "task_limit": "5" - } -} -``` - -## changeColumnPosition - -- Propósito: **Cambia la posición de columna** -- Parametros: - - **project_id** (integer, required) - - **column_id** (integer, required) - - **position** (integer, required, must be >= 1) -- Resultados en caso exitoso: **true** -- Resultados en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "changeColumnPosition", - "id": 99275573, - "params": [ - 1, - 2, - 3 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 99275573, - "result": true -} -``` - -## updateColumn - -- Propósito: **Actualiza las propiedades de la columna** -- Parametros: - - **column_id** (integer, required) - - **title** (string, required) - - **task_limit** (integer, optional) - - **description** (string, optional) -- Resultados en caso exitoso: **true** -- Resultados en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "updateColumn", - "id": 480740641, - "params": [ - 2, - "Boo", - 5 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 480740641, - "result": true -} -``` - -## addColumn - -- Propósito: **Agrega una nueva columna** -- Parametros: - - **project_id** (integer, required) - - **title** (string, required) - - **task_limit** (integer, optional) - - **description** (string, optional) -- Resultados en caso exitoso: **column_id** -- Resultados en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "addColumn", - "id": 638544704, - "params": [ - 1, - "Boo" - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 638544704, - "result": 5 -} -``` - -## removeColumn - -- Propósito: **Elimina una columna** -- Parametros: - - **column_id** (integer, required) -- Resultados en caso exitoso: **true** -- Resultados en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "removeColumn", - "id": 1433237746, - "params": [ - 1 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1433237746, - "result": true -} -``` diff --git a/doc/es_ES/api-comment-procedures.markdown b/doc/es_ES/api-comment-procedures.markdown deleted file mode 100644 index 81389892..00000000 --- a/doc/es_ES/api-comment-procedures.markdown +++ /dev/null @@ -1,181 +0,0 @@ -API Procedimientos de comentarios -====================== - -## createComment [Crear un comentario] - -- Propósito: **Crear un nuevo comentario** -- Parametros: - - **task_id** (integer, required) - - **user_id** (integer, required) - - **content** Reducción de contenido (string, required) -- Resultado satisfactorio: **comment_id** -- Resultado fallido : **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "createComment", - "id": 1580417921, - "params": { - "task_id": 1, - "user_id": 1, - "content": "Comment #1" - } -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1580417921, - "result": 11 -} -``` - -## getComment [Obtener un comentario] - -- Propósito: **Obtener la información del comentario** -- Parametros: - - **comment_id** (integer, required) -- Resultado satisfactorio: **propiedades del comentario** -- Resultado fallido: **null** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getComment", - "id": 867839500, - "params": { - "comment_id": 1 - } -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 867839500, - "result": { - "id": "1", - "task_id": "1", - "user_id": "1", - "date_creation": "1410881970", - "comment": "Comment #1", - "username": "admin", - "name": null - } -} -``` - -## getAllComments [Obtener todos los comentarios] - -- Proposito: **Obtener todos los comentarios disponibles** -- Parametros: - - **task_id** (integer, required) -- Resultado satisfactorio: **Lista de comentarios** -- Resultado fallido : **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getAllComments", - "id": 148484683, - "params": { - "task_id": 1 - } -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 148484683, - "result": [ - { - "id": "1", - "date_creation": "1410882272", - "task_id": "1", - "user_id": "1", - "comment": "Comment #1", - "username": "admin", - "name": null - }, - ... - ] -} -``` - -## updateComment [Actualizar un comentario] - -- Proposito: **Actualizar un comentario** -- Parametros: - - **id** (integer, required) - - **content** Reducción de contenido (string, required) -- Resultado satisfactorio: **true** -- Resultado fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "updateComment", - "id": 496470023, - "params": { - "id": 1, - "content": "Comment #1 updated" - } -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1493368950, - "result": true -} -``` - -## removeComment [Eliminar un comentario] - -- Proposito : **Eliminar un comentario** -- Parametros: - - **comment_id** (integer, required) -- Resultado satisfactorio: **true** -- Resultado fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "removeComment", - "id": 328836871, - "params": { - "comment_id": 1 - } -} -``` -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 328836871, - "result": true -} -``` diff --git a/doc/es_ES/api-examples.markdown b/doc/es_ES/api-examples.markdown deleted file mode 100644 index cba7ffe5..00000000 --- a/doc/es_ES/api-examples.markdown +++ /dev/null @@ -1,152 +0,0 @@ -Ejemplos de API -============ - -Ejemplo con cURL ------------------ - -Desde la línea de comandos: - -```bash -curl \ --u "jsonrpc:19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929" \ --d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \ -http://localhost/kanboard/jsonrpc.php -``` - -Respuesta desde el servidor: - -```json -{ - "jsonrpc":"2.0", - "id":1, - "result":[ - { - "id":"1", - "name":"API test", - "is_active":"1", - "token":"6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf", - "last_modified":"1403392631" - } - ] -} -``` - -Ejemplo con Python -------------------- - -Puede utilizar el [cliente oficial Python para Kanboard](https://github.com/kanboard/kanboard-api-python): - -```bash -pip install kanboard -``` - -Aquí un ejemplo para crear un proyecto y una tarea: - -```python -from kanboard import Kanboard - -kb = Kanboard("http://localhost/jsonrpc.php", "jsonrpc", "your_api_token") - -project_id = kb.create_project(name="My project") - -task_id = kb.create_task(project_id=project_id, title="My task title") -``` - -Hay mas ejemplos en el [sitio web oficial(https://github.com/kanboard/kanboard-api-python). - -Ejemplo con un cliente PHP -------------------------- - -Puede utilizar esta [librearia Json-RPC de Cliente/servidor para PHP](https://github.com/fguillot/JsonRPC), Aqui un ejemplo: - -```php -<?php - -$client = new JsonRPC\Client('http://localhost:8000/jsonrpc.php'); -$client->authentication('jsonrpc', '19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929'); - -print_r($client->getAllProjects()); - -``` - -La respuesta: - -``` -Array -( - [0] => Array - ( - [id] => 1 - [name] => API test - [is_active] => 1 - [token] => 6bd0932fe7f4b5e6e4bc3c72800bfdef36a2c5de2f38f756dfb5bd632ebf - [last_modified] => 1403392631 - ) - -) -``` - -Ejemplo con Ruby ------------------ - -Este ejmeplo puede ser usado con Kanboard configurado con autenticación de Proxy Inverso y la API configurada con una cabecerza de autenticación personalizada: - -```ruby -require 'faraday' - -conn = Faraday.new(:url => 'https://kanboard.example.com') do |faraday| - faraday.response :logger - faraday.headers['X-API-Auth'] = 'XXX' # base64_encode('jsonrpc:API_KEY') - faraday.basic_auth(ENV['user'], ENV['pw']) # user/pass to get through basic auth - faraday.adapter Faraday.default_adapter # make requests with Net::HTTP -end - -response = conn.post do |req| - req.url '/jsonrpc.php' - req.headers['Content-Type'] = 'application/json' - req.body = '{ "jsonrpc": "2.0", "id": 1, "method": "getAllProjects" }' -end - -puts response.body -``` - - -Ejemplo con Java ------------------ - -Este es un ejemplo basico usando Spring. Para su uso correcto vea [Este enlace](http://spring.io/guides/gs/consuming-rest). - -```java -import java.io.UnsupportedEncodingException; -import java.util.Base64; - -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.web.client.RestTemplate; - -public class ProjectService { - - public void getAllProjects() throws UnsupportedEncodingException { - - RestTemplate restTemplate = new RestTemplate(); - - String url = "http://localhost/kanboard/jsonrpc.php"; - String requestJson = "{\"jsonrpc\": \"2.0\", \"method\": \"getAllProjects\", \"id\": 1}"; - String user = "jsonrpc"; - String apiToken = "19ffd9709d03ce50675c3a43d1c49c1ac207f4bc45f06c5b2701fbdf8929"; - - // encode api token - byte[] xApiAuthTokenBytes = String.join(":", user, apiToken).getBytes("utf-8"); - String xApiAuthToken = Base64.getEncoder().encodeToString(xApiAuthTokenBytes); - - // consume request - HttpHeaders headers = new HttpHeaders(); - headers.add("X-API-Auth", xApiAuthToken); - headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity<String> entity = new HttpEntity<String>(requestJson, headers); - String answer = restTemplate.postForObject(url, entity, String.class); - System.out.println(answer); - } -} -``` diff --git a/doc/es_ES/api-external-task-link-procedures.markdown b/doc/es_ES/api-external-task-link-procedures.markdown deleted file mode 100644 index e6d506b4..00000000 --- a/doc/es_ES/api-external-task-link-procedures.markdown +++ /dev/null @@ -1,221 +0,0 @@ -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 deleted file mode 100644 index 9a6bbe22..00000000 --- a/doc/es_ES/api-group-member-procedures.markdown +++ /dev/null @@ -1,188 +0,0 @@ -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/api-group-procedures.markdown b/doc/es_ES/api-group-procedures.markdown deleted file mode 100755 index cb11fb96..00000000 --- a/doc/es_ES/api-group-procedures.markdown +++ /dev/null @@ -1,174 +0,0 @@ -Group API Procedures -==================== - -## createGroup - -- Purpose: **Create a new group** -- Parameters: - - **name** (string, required) - - **external_id** (string, optional) -- Result on success: **link_id** -- Result on failure: **false** - -Request example: - -```json -{ - "jsonrpc": "2.0", - "method": "createGroup", - "id": 1416806551, - "params": [ - "My Group B", - "1234" - ] -} -``` - -Response example: - -```json -{ - "jsonrpc": "2.0", - "id": 1416806551, - "result": 2 -} -``` - -## updateGroup - -- Purpose: **Update a group** -- Parameters: - - **group_id** (integer, required) - - **name** (string, optional) - - **external_id** (string, optional) -- Result on success: **true** -- Result on failure: **false** - -Request example: - -```json -{ - "jsonrpc": "2.0", - "method": "updateGroup", - "id": 866078030, - "params": { - "group_id": "1", - "name": "ABC", - "external_id": "something" - } -} -``` - -Response example: - -```json -{ - "jsonrpc": "2.0", - "id": 866078030, - "result": true -} -``` - -## removeGroup - -- Purpose: **Remove a group** -- Parameters: - - **group_id** (integer, required) -- Result on success: **true** -- Result on failure: **false** - -Request example: - -```json -{ - "jsonrpc": "2.0", - "method": "removeGroup", - "id": 566000661, - "params": [ - "1" - ] -} -``` - -Response example: - -```json -{ - "jsonrpc": "2.0", - "id": 566000661, - "result": true -} -``` - -## getGroup - -- Purpose: **Get one group** -- Parameters: - - **group_id** (integer, required) -- Result on success: **Group dictionary** -- Result on failure: **false** - -Request example: - -```json -{ - "jsonrpc": "2.0", - "method": "getGroup", - "id": 1968647622, - "params": [ - "1" - ] -} -``` - -Response example: - -```json -{ - "jsonrpc": "2.0", - "id": 1968647622, - "result": { - "id": "1", - "external_id": "", - "name": "My Group A" - } -} -``` - -## getAllGroups - -- Purpose: **Get all groups** -- Parameters: none -- Result on success: **list of groups** -- Result on failure: **false** - -Request example: - -```json -{ - "jsonrpc": "2.0", - "method": "getAllGroups", - "id": 546070742 -} -``` - -Response example: - -```json -{ - "jsonrpc": "2.0", - "id": 546070742, - "result": [ - { - "id": "1", - "external_id": "", - "name": "My Group A" - }, - { - "id": "2", - "external_id": "1234", - "name": "My Group B" - } - ] -} -``` diff --git a/doc/es_ES/api-internal-task-link-procedures.markdown b/doc/es_ES/api-internal-task-link-procedures.markdown deleted file mode 100644 index 43d410d7..00000000 --- a/doc/es_ES/api-internal-task-link-procedures.markdown +++ /dev/null @@ -1,187 +0,0 @@ -API Procedimientos de Tareas Internas de Enlace -================================= - -## createTaskLink - -- Propósito: **Crea un enlace entre dos tareas** -- Parametros: - - **task_id** (integer, required) - - **opposite_task_id** (integer, required) - - **link_id** (integer, required) -- Resultado en caso exitoso: **task_link_id** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "createTaskLink", - "id": 509742912, - "params": [ - 2, - 3, - 1 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 509742912, - "result": 1 -} -``` - -## updateTaskLink - -- Propósito: **Actualiza enlace de tarea** -- Parametros: - - **task_link_id** (integer, required) - - **task_id** (integer, required) - - **opposite_task_id** (integer, required) - - **link_id** (integer, required) -- Resultado en caso exitoso: **true** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "updateTaskLink", - "id": 669037109, - "params": [ - 1, - 2, - 4, - 2 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 669037109, - "result": true -} -``` - -## getTaskLinkById - -- Propósito: **Obtiene un enlace de tarea** -- Parametros: - - **task_link_id** (integer, required) -- Resultado en caso exitoso: **task link properties** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getTaskLinkById", - "id": 809885202, - "params": [ - 1 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 809885202, - "result": { - "id": "1", - "link_id": "1", - "task_id": "2", - "opposite_task_id": "3" - } -} -``` - -## getAllTaskLinks - -- Propósito: **Obtiene todos los enlaces relacionados a una tarea** -- Parametros: - - **task_id** (integer, required) -- Resultado en caso exitoso: **list of task link** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getAllTaskLinks", - "id": 810848359, - "params": [ - 2 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 810848359, - "result": [ - { - "id": "1", - "task_id": "3", - "label": "relates to", - "title": "B", - "is_active": "1", - "project_id": "1", - "task_time_spent": "0", - "task_time_estimated": "0", - "task_assignee_id": "0", - "task_assignee_username": null, - "task_assignee_name": null, - "column_title": "Backlog" - } - ] -} -``` - -## removeTaskLink - -- Propósito: **Elimina un enlace entre dos tareas** -- Parametros: - - **task_link_id** (integer, required) -- Resultado en caso exitoso: **true** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "removeTaskLink", - "id": 473028226, - "params": [ - 1 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 473028226, - "result": true -} -``` diff --git a/doc/es_ES/api-json-rpc.markdown b/doc/es_ES/api-json-rpc.markdown deleted file mode 100644 index 23088890..00000000 --- a/doc/es_ES/api-json-rpc.markdown +++ /dev/null @@ -1,69 +0,0 @@ -Json-RPC API -============ - -Usuario y aplicacion API ------------------------- - -Existen dos tipos de acceso a la API: - -### API de Aplicacion - -- Acceso a la API con el usuario "jsonrpc" y el token disponible en ajustes -- Acceso a todos los procedimientos -- Sin comprobacion de permisos -- No existe sesion de usuario en el servidor -- Ejemplo de posibles clientes: Herramientas para migrar/importar datos, crear tareas desde otros sistemas, etc. - -### API de Usuario - -- Acceso a la API con las credenciales de usuario (Nombre de usuario y contraseña) -- Acceso a un conjunto restringido de procedimientos -- Los permisos del proyecto son comprobados -- Una sesion de usuario es creada en el servidor -- Ejemplo de posibles clientes: Aplicacion de escritotrio / dispositivos moviles, utilidad linea de commandos, etc. - -Seguridad ---------- - -- Siempre usa HTTPS con un certificado valido. -- Si haces una aplicacion movil, es tu trabajo almacenar de forma segura las credenciales de usuario en el dispositivo -- Despues de tres fallas de autenticación en la API de usuario, el usuario final tiene que desbloquear su cuenta utilizando el formulario de inicio de sesión -- La autenticación de dos factores aun no está disponible a través de la API - -Protocolo ---------- - -Kanboard utilizar el protocolo JSON-RPC para interactuar con programas externos. -JSON-RPC es un protocolo de llamada a procedimiento remoto codificado en JSON. Casi lo mismo que XML-RPC, pero con el formato JSON. - -Utilizamos [version 2 of the protocol](http://www.jsonrpc.org/specification). Usted debe llamar a la API con una petición HTTP POST. - -Kanboard soporta requerimientos por lotes, por lo que pueden hacer varias llamadas a la API en una sola petición HTTP. Es particularmente útil para los clientes móviles con una mayor latencia de la red. - -Uso ---- - -- [Authentication](api-authentication.markdown) -- [Examples](api-examples.markdown) -- [Application](api-application-procedures.markdown) -- [Projects](api-project-procedures.markdown) -- [Project Permissions](api-project-permission-procedures.markdown) -- [Boards](api-board-procedures.markdown) -- [Columns](api-column-procedures.markdown) -- [Swimlanes](api-swimlane-procedures.markdown) -- [Categories](api-category-procedures.markdown) -- [Automatic Actions](api-action-procedures.markdown) -- [Tasks](api-task-procedures.markdown) -- [Subtasks](api-subtask-procedures.markdown) -- [Subtask Time Tracking](api-subtask-time-tracking-procedures.markdown) -- [Task Files](api-task-file-procedures.markdown) -- [Project Files](api-project-file-procedures.markdown) -- [Links](api-link-procedures.markdown) -- [Internal Task Links](api-internal-task-link-procedures.markdown) -- [External Task Links](api-external-task-link-procedures.markdown) -- [Comments](api-comment-procedures.markdown) -- [Users](api-user-procedures.markdown) -- [Groups](api-group-procedures.markdown) -- [Group Members](api-group-member-procedures.markdown) -- [Me](api-me-procedures.markdown) - diff --git a/doc/es_ES/api-link-procedures.markdown b/doc/es_ES/api-link-procedures.markdown deleted file mode 100644 index 2ed08ecd..00000000 --- a/doc/es_ES/api-link-procedures.markdown +++ /dev/null @@ -1,285 +0,0 @@ -API Procedimientos de enlace -=================== - -## getAllLinks - -- Propósito: **Obtiene la lista de posibles relaciones entre tareas** -- Parametros: ninguno -- Resultado en caso exitoso: **List of links** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getAllLinks", - "id": 113057196 -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 113057196, - "result": [ - { - "id": "1", - "label": "relates to", - "opposite_id": "0" - }, - { - "id": "2", - "label": "blocks", - "opposite_id": "3" - }, - { - "id": "3", - "label": "is blocked by", - "opposite_id": "2" - }, - { - "id": "4", - "label": "duplicates", - "opposite_id": "5" - }, - { - "id": "5", - "label": "is duplicated by", - "opposite_id": "4" - }, - { - "id": "6", - "label": "is a child of", - "opposite_id": "7" - }, - { - "id": "7", - "label": "is a parent of", - "opposite_id": "6" - }, - { - "id": "8", - "label": "targets milestone", - "opposite_id": "9" - }, - { - "id": "9", - "label": "is a milestone of", - "opposite_id": "8" - }, - { - "id": "10", - "label": "fixes", - "opposite_id": "11" - }, - { - "id": "11", - "label": "is fixed by", - "opposite_id": "10" - } - ] -} -``` - -## getOppositeLinkId - -- Propósito: **Obtiene el identificador de enlace opuesto de un enlace de tarea** -- Parametros: - - **link_id** (integer, required) -- Resultado en caso exitoso: **link_id** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getOppositeLinkId", - "id": 407062448, - "params": [ - 2 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 407062448, - "result": "3" -} -``` - -## getLinkByLabel - -- Propósito: **Obtiene un enlace por etiqueta** -- Parametros: - - **label** (integer, required) -- Resultado en caso exitoso: **link properties** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getLinkByLabel", - "id": 1796123316, - "params": [ - "blocks" - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1796123316, - "result": { - "id": "2", - "label": "blocks", - "opposite_id": "3" - } -} -``` - -## getLinkById - -- Propósito: **Obtiene un enlace por identificador** -- Parametros: - - **link_id** (integer, required) -- Resultado en caso exitoso: **link properties** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "getLinkById", - "id": 1190238402, - "params": [ - 4 - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1190238402, - "result": { - "id": "4", - "label": "duplicates", - "opposite_id": "5" - } -} -``` - -## createLink - -- Propósito: **Crea una nueva relación de tarea** -- Parametros: - - **label** (integer, required) - - **opposite_label** (integer, optional) -- Resultado en caso exitoso: **link_id** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "createLink", - "id": 1040237496, - "params": [ - "foo", - "bar" - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 1040237496, - "result": 13 -} -``` - -## updateLink - -- Propósito: **Actualiza un enlace** -- Parametros: - - **link_id** (integer, required) - - **opposite_link_id** (integer, required) - - **label** (string, required) -- Resultado en caso exitoso: **true** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "updateLink", - "id": 2110446926, - "params": [ - "14", - "12", - "boo" - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 2110446926, - "result": true -} -``` - -## removeLink - -- Propósito: **Elimina un enlace** -- Parametros: - - **link_id** (integer, required) -- Resultado en caso exitoso: **true** -- Resultado en caso fallido: **false** - -Ejemplo de petición: - -```json -{ - "jsonrpc": "2.0", - "method": "removeLink", - "id": 2136522739, - "params": [ - "14" - ] -} -``` - -Ejemplo de respuesta: - -```json -{ - "jsonrpc": "2.0", - "id": 2136522739, - "result": true -} -``` diff --git a/doc/es_ES/board-collapsed-expanded.markdown b/doc/es_ES/board-collapsed-expanded.markdown deleted file mode 100644 index fd463f51..00000000 --- a/doc/es_ES/board-collapsed-expanded.markdown +++ /dev/null @@ -1,18 +0,0 @@ -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. - -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 - -Modo expansivo --------------- - -![Tasks expanded](../screenshots/board-expanded-mode.png) diff --git a/doc/es_ES/board-configuration.markdown b/doc/es_ES/board-configuration.markdown deleted file mode 100644 index 1ac862ec..00000000 --- a/doc/es_ES/board-configuration.markdown +++ /dev/null @@ -1,25 +0,0 @@ -Configuraci�n del tablero -========================== - -Ir al menu **Configuraciones **, elije **Ajustes de tablero ** a la izquierda. - -![Board settings](../screenshots/board-settings.png) - -### Resaltado de tarea - -Esta caracterista muestra una sombra alrededor de la tarea cuando una tarea se traslad� recientemente - -Establecer el valor 0 para desactivar esta caracterista, 2 dias por default (172800 segundos). - -Todo lo traslad� desde de 2 dias tendra una sombra alrededor de la tarea. - -### Recargar el intervalo para la pizarra publica - -Cuando tu compartes un tablero, la pagina se refresca cada 60 segundos automaticamente por default. - -### Refrescar el intervalo para un tablero privado - -Cuando su navegador est� abierto un tablero, Kanboard comprueba cada 10 segundos si algo ha sido cambiado por otra persona. - -T�cnicamente este proceso se lleva a cabo por el Ajax. - diff --git a/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown b/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown deleted file mode 100644 index f5f2379b..00000000 --- a/doc/es_ES/board-horizontal-scrolling-and-compact-view.markdown +++ /dev/null @@ -1,12 +0,0 @@ -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. - -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. diff --git a/doc/es_ES/board-show-hide-columns.markdown b/doc/es_ES/board-show-hide-columns.markdown deleted file mode 100644 index 83ba0293..00000000 --- a/doc/es_ES/board-show-hide-columns.markdown +++ /dev/null @@ -1,12 +0,0 @@ -Mostrar y ocultar columnas en el tablero -================================== - -Se puede ocultar o visualizar columnas muy facilmente en el tablero: - -![Ocultar una columna](../screenshots/hide-column.png) - -Para ocultar una columna, click en la columna escoge en el menu dropdown "ocultar esta columna" : - -![Mostrar una columna](../screenshots/show-column.png) - -Para mostar nuevamente la columna, click en el icono con el simbolo de suma "plus icon" diff --git a/doc/es_ES/bruteforce-protection.markdown b/doc/es_ES/bruteforce-protection.markdown deleted file mode 100644 index 2a08fc27..00000000 --- a/doc/es_ES/bruteforce-protection.markdown +++ /dev/null @@ -1,26 +0,0 @@ -Protección por fuerza bruta -=========================== - -La protección por fuerza bruta de kanboard funciona en nivel a la cuenta de usuario. - -- Después de 3 fallas de autentificación para el formulario de login muestra una imagen de captcha para evitar bots automatizado orientativos. -- Después de 6 fallas de autentificación la cuenta de usuario esta bloqueada por un periodo de 15 minutos. - -Esta característica funciona para el método de autentificación del usuario API, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión. - -Sin embargo, después de la tercera falla de autenticidad a través de la API de usuario, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión. - -Kanboard no bloquea cualquier dirección de la IP ya que los bots puede utilizar a varios servidores proxy anónimo sin embargo puede utilizar herramientas externas como f[fail2ban](http://www.fail2ban.org) para evitar la exploración masiva. - -Los ajustes predeterminados se pueden cambiar con estas variables de configuración: - -```php -// Habilitar captcha después del fallo 3 de autentificación -define('BRUTEFORCE_CAPTCHA', 3); - -// Bloquear la cuenta después de 6 fallo de autentificación -define('BRUTEFORCE_LOCKDOWN', 6); - -//Bloqueo de la duración de la cuenta en minutos. -define('BRUTEFORCE_LOCKDOWN_DURATION', 15) -``` diff --git a/doc/es_ES/calendar-configuration.markdown b/doc/es_ES/calendar-configuration.markdown deleted file mode 100644 index cbbba0d9..00000000 --- a/doc/es_ES/calendar-configuration.markdown +++ /dev/null @@ -1,43 +0,0 @@ -Configuración de calendarios -============================ - -Ir al menu de configuraciones, despues elegir cofiguracion de calendarios que se encuentra al lado izquierdo - -![Configuración de calendarios](../screenshots/calendar-settings.png) - -Existe dos diferentes calendarios en kanboard : - -- Calendarios de projectos -- Calendario por usuario (disponible desde el dashboard) - -Calendario por projectos ------------------------- - -Este calendario visualiza las tareas que se le asignan fechas de vencimiento y las tareas estan basadas sobre -la fecha de creación o el inicio de fecha - -### Visualizar tareas basadas en la fecha de creacion - -- El inicio de fecha del evento del calendario es la fecha de creacion de la tarea -- El finalización de fecha del evento es cuendo se completa una tarea - -### Visualizar tareas basadas en las fechas de inicio - -- La fecha de inicio del evento del calendario is la fecha de incio de la tarea -- Esta fecha puede ser definida manualmente. -- La fecha de finalización del evento es la fecha de terminación -- Si no hay una fecha de inicio de la tarea no aparece en el calendario. - -Calendarios por usuarios ------------------------- - -Este calendario visualiza solo las tareas asignadas para el usuario y opcionalmente la información de las subtareas - -### Visualizar subtareas basadas en el tiempo de tracking - -- Despliega la información de las subtareas desde el calendario o en el registro de la tabla de seguimiento de tiempo -- La intersección con los usuarios timetable es calculad - -### Las estimaciones muestran las subtareas ( la previsión de los trabajos futuros ) - -- Mostrar la estimación de los trabajos futuros de las subtareas en estado de "todo" y con un valor definido " estimación " . diff --git a/doc/es_ES/centos-installation.markdown b/doc/es_ES/centos-installation.markdown deleted file mode 100644 index 9662f7f5..00000000 --- a/doc/es_ES/centos-installation.markdown +++ /dev/null @@ -1,86 +0,0 @@ -Instalación en Centos -=================== - -Nota:Algunas funciones de Kanboard requieren que se ejecute un trabajo en segundo -plano todos los días (cronjob.markdown). - -Centos 7 --------- - -Instalar PHP y Apache: - -```bash -yum install -y php php-mbstring php-pdo php-gd unzip wget -``` - -Por default Centos 7 use PHP 5.4.16 and Apache 2.4.6. - -Reiniciar Apache: - -```bash -systemctl restart httpd.service -``` - -InstalarKanboard: - -```bash -cd /var/www/html - -# Download the latest release from https://github.com/kanboard/kanboard/releases -wget https://github.com/kanboard/kanboard/archive/v<version>.zip - -unzip kanboard-<version>.zip -chown -R apache:apache kanboard-<version>/data -rm kanboard-<version>.zip -``` - -Si SELinux esta activado, Asegurese de que el usuario de Apache pueda escribir en el directorio de datos: - -```bash -chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data -``` - -Asegurese de configurar el servidor para permitir enviar correos electrónicos y hacer conexiones externas por ejemplo con SELinux: - -```bash -setsebool -P httpd_can_network_connect=1 -``` - -Las conexiones son necesarias si se usa LDAP,SMTP, ganchos web o cualquier integracion de terceros: - -Centos 6.x ----------- - -Instalar PHP y Apache: - -```bash -yum install -y php php-mbstring php-pdo php-gd unzip wget -``` - -Por defecto para Centos 6.5 use PHP 5.3.3 y Apache 2.2.15 - -Active las etiquetas cortas: - -- Editar el archivo `/etc/php.ini` -- Cambiar la linea `short_open_tag = On` - -Reiniciar Apache: - -```bash -service httpd restart -``` - -Instalar Kanboard: - -```bash -cd /var/www/html - -# Download the latest release from https://github.com/kanboard/kanboard/releases -wget https://github.com/kanboard/kanboard/archive/v<version>.zip - -unzip kanboard-<version>.zip -chown -R apache:apache kanboard-<version>/data -rm kanboard-<version>.zip -``` - -Ir a `http://your_server/kanboard/`. diff --git a/doc/es_ES/cli.markdown b/doc/es_ES/cli.markdown deleted file mode 100755 index 0c76c6aa..00000000 --- a/doc/es_ES/cli.markdown +++ /dev/null @@ -1,206 +0,0 @@ -Interface de linea de comandos -============================= - -Kanboard provides a simple command line interface that can be used from any Unix terminal. -This tool can be used only on the local machine. - -This feature is useful to run commands outside of the web server processes. - -Uso ------ - -- Abre una terminal y ve a tu directorio de kanboard (ejemplo : `cd /var/www/kanboard`) -- Corre el comando `./cli` / `php cli` - -```bash -Kanboard version master - -Uso: - comando [opciones] [argumentos] - -Options: - -h, --help Visualizar mensaje de ayuda - -q, --quiet Sin mensajes de salida - -V, --version Visualiza la verssation version - --ansi Forzar salida ANSI - --no-ansi Deshabilitar salida ANSI - -n, --no-interaction No hacer cualquier pregunta interactiva - -v|vv|vvv, --verbose Incrementar la verbosidad de los mensajes: 1 para salida normal, 2 para mas salida verbosa y 3 para debug - -Available commands: - cronjob Ejecutar diariamente cronjob - help Visualizar ayuda para los comandos - list Lista de comandos - worker Execute queue worker - export - export:daily-project-column-stats Diariamente estad�sticas de exportaci�n de CSV (n�mero de tareas por columna y por d�a ) - export:subtasks Exportar a CSV las subtareas - export:tasks Exportar a CSV las tareas - export:transitions Exportar a CSV tareas de transici�n - locale - locale:compare Comparar aplicacion de traducciones con el locale fr_FR - locale:sync Sincronizar todas las traducciones basadas en el locale fr_FR - notification - notification:overdue-tasks Enviar notifiaciones de las tareas atrasadas - plugin - plugin:install Instalar un plugin desde un archivo ZIP remoto - plugin:uninstall Eliminar plugin - plugin:upgrade Actualizar todos los plugins instalados - projects - projects:archive Disable projects not touched during one year - projects:daily-stats Calcular diariamente las estadisticas para todos los proyectos - trigger - trigger:tasks Disparadores de eventos calendarizados para todas las tareas - user - user:reset-2fa Eliminar la autenticaci�n two-factor para un usuario - user:reset-password Cambiar el passwor del usuario -``` - -Comandos disponibles ------------------- - -### Exportar las tareas en CSV - -Uso: - -```bash -./cli export:tasks <project_id> <start_date> <end_date> -``` - -Ejemplo: - -```bash -./cli export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv -``` - -CSV los datos son enviados a `stdout`. - -### Subtasks CSV export - -Uso: - -```bash -./cli export:subtasks <project_id> <start_date> <end_date> -``` - -Ejemplo: - -```bash -./cli export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv -``` - -### Exportaci�n a CSV de tareas de transici�n - -Uso: - -```bash -./cli export:transitions <project_id> <start_date> <end_date> -``` - -Ejemplo: - -```bash -./cli export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv -``` - -### Exportar diariamente resumenes de datos en CSV - -Los datos exportados se pueden imprimir en la salida est�ndar: - -```bash -./cli export:daily-project-column-stats <project_id> <start_date> <end_date> -``` - -Ejemplo: - -```bash -./cli export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv -``` - -### Envio de notificaciones para tareas atrasadas - -Los Emails se enviaran a todos los usuarios con las notificaciones habilitadas. - -```bash -./cli notification:overdue-tasks -``` - -Parametros opcionales: - -- `--show`: Visualizar las notificaciones enviadas -- `--group`: Grupo tareas atrasadas todo para un usuario (desde todos los proyectos) en un email -- `--manager`: Enviar todas las tareas atrasadas a un project manager(s) en un email - -Tambi�n puede mostrar las tareas atrasadas con la bandera `--show`: - -```bash -./cli notification:overdue-tasks --show -+-----+---------+------------+------------+--------------+----------+ -| Id | Title | Due date | Project Id | Project name | Assignee | -+-----+---------+------------+------------+--------------+----------+ -| 201 | Test | 2014-10-26 | 1 | Project #0 | admin | -| 202 | My task | 2014-10-28 | 1 | Project #0 | | -+-----+---------+------------+------------+--------------+----------+ -``` - -### Correr diariamente los calculos de estadisticas de los proyectos - -Este comando calcula las estadisticas por cada proyecto: - -```bash -./cli projects:daily-stats -Run calculation for Project #0 -Run calculation for Project #1 -Run calculation for Project #10 -``` - -### Trigger [Disparadores] para tareas - -Este comando envia a "daily cronjob event" a todas las tareas abiertas de cada proyecto. - -```bash -./cli trigger:tasks -Trigger task event: project_id=2, nb_tasks=1 -``` - -### Resetear el password del usuario - -```bash -./cli user:reset-password my_user -``` - -Se le pedir� una contrase�a y la confirmaci�n. Los caracteres no se imprimen en la pantalla. - -### Eliminar la autenticaci�n two-factor para un usuario - -```bash -./cli user:reset-2fa my_user -``` - -### Instalar un plugin - -```bash -./cli plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip -``` - -Nota: Los archivos instalados tendr�n los mismos permisos que el usuario actual - -### Eliminar un usuario - -```bash -./cli plugin:uninstall Budget -``` - -### Upgrade todos los plugins - -```bash -./cli plugin:upgrade -* Updating plugin: Budget Planning -* Plugin up to date: Github Authentication -``` - -### Run Background worker - -```bash -./cli worker -``` diff --git a/doc/es_ES/cloudron.markdown b/doc/es_ES/cloudron.markdown deleted file mode 100755 index 9de33e5e..00000000 --- a/doc/es_ES/cloudron.markdown +++ /dev/null @@ -1,27 +0,0 @@ -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 - -[![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. - -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. - -Código fuente de la aplicación -------------------------------- -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 deleted file mode 100755 index 966f9c90..00000000 --- a/doc/es_ES/coding-standards.markdown +++ /dev/null @@ -1,24 +0,0 @@ -Estandares de codificación -================ - -Código PHP ----------- - -- Indentacion: 4 espacios -- Linea de retorno: Unix => `\n` -- Encoding: UTF-8 -- Use unicamente las etiquetas de apertura `<?php` or `<?=` para templates , pero ** nunca usar ** `<?` -- 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 ---------------- - -- Indentacion: 4 espacios -- Linea de retorno: Unix => `\n` - -Código CSS --------- - -- Indentacion: 4 espacios -- Linea de retorno: Unix => `\n` diff --git a/doc/es_ES/config.markdown b/doc/es_ES/config.markdown deleted file mode 100755 index bc2f2982..00000000 --- a/doc/es_ES/config.markdown +++ /dev/null @@ -1,307 +0,0 @@ -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 . - -Habilitar/Deshabilitar el modo debug --------------------------------------- - -```php -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 . - -Plugins -------- - -Folder de plugins: - -```php -define('PLUGINS_DIR', 'data/plugins'); -``` - -Enable/disable plugin de instalación para la interface de usuario: - -```php -define('PLUGIN_INSTALLER', true); // Default es true -``` - -Folder para subir archivos -------------------------- - -```php -define('FILES_DIR', 'data/files'); -``` - -Enable/disable url rewrite --------------------------- - -```php -define('ENABLE_URL_REWRITE', false); -``` - -Configuración de Email -------------------- - -```php -// E-mail address para la cabecera "From" (notificaciones) -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" -define('MAIL_SMTP_HOSTNAME', ''); -define('MAIL_SMTP_PORT', 25); -define('MAIL_SMTP_USERNAME', ''); -define('MAIL_SMTP_PASSWORD', ''); -define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls" - -// Comando Sendmail para usarse cuando el trasporte sea "sendmail" -define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs'); -``` - -Configuración de base de datos ------------------------------- - -```php -// Driver base de datos: sqlite, mysql or postgres (sqlite por default) -define('DB_DRIVER', 'sqlite'); - -// Nombre de usuario Mysql/Postgres -define('DB_USERNAME', 'root'); - -// Password Mysql/Postgres -define('DB_PASSWORD', ''); - -// Mysql/Postgres hostname -define('DB_HOSTNAME', 'localhost'); - -// Mysql/Postgres Nombre de la base de datos -define('DB_NAME', 'kanboard'); - -// Mysql/Postgres Puerto personalizado (null = default port) -define('DB_PORT', null); - -// Mysql SSL key -define('DB_SSL_KEY', null); - -// Mysql SSL certificate -define('DB_SSL_CERT', null); - -// Mysql SSL CA -define('DB_SSL_CA', null); -``` - -Configuraciones LDAP ----------------------- - -```php -// Habilitar la autenticación por LDAP (false por default) -define('LDAP_AUTH', false); - -// LDAP server hostname -define('LDAP_SERVER', ''); - -// LDAP puerto del servidor (389 por defecto) -define('LDAP_PORT', 389); - -// Por default, requiere certificados para verificacion para ldaps:// estilo URL. muesta false para saltarse la verificacion -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 ) -// Establece en true si desea conservar el caso -define('LDAP_USERNAME_CASE_SENSITIVE', false); - -// LDAP tipo de enlace : "anonymous", "user" o "proxy" -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 -define('LDAP_USERNAME', null); - -// password LDAP para usar en modo proxy -define('LDAP_PASSWORD', null); - -// LDAP DN para usuarios -// Ejemplo para ActiveDirectory: CN=Users,DC=kanboard,DC=local -// Ejemplo para OpenLDAP: ou=People,dc=example,dc=com -define('LDAP_USER_BASE_DN', ''); - -// LDAP pattern to use when searching for a user account -// Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))' -// Example for OpenLDAP: 'uid=%s' -define('LDAP_USER_FILTER', ''); - -// LDAP attribute for username -// Example for ActiveDirectory: 'samaccountname' -// Example for OpenLDAP: 'uid' -define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid'); - -// LDAP attribute for user full name -// Example for ActiveDirectory: 'displayname' -// Example for OpenLDAP: 'cn' -define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn'); - -// LDAP attribute for user email -define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail'); - -// LDAP attribute to find groups in user profile -define('LDAP_USER_ATTRIBUTE_GROUPS', 'memberof'); - -// LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto -define('LDAP_USER_ATTRIBUTE_PHOTO', ''); - -// LDAP attribute for user language, example: 'preferredlanguage' -// Put an empty string to disable language sync -define('LDAP_USER_ATTRIBUTE_LANGUAGE', ''); - -// Permitir creacion de usuario automatico LDAP -define('LDAP_USER_CREATION', true); - -// LDAP DN para administradores -// Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local -define('LDAP_GROUP_ADMIN_DN', ''); - -// LDAP DN para managers -// Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local -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 -define('LDAP_GROUP_PROVIDER', false); - -// LDAP Base DN for groups -define('LDAP_GROUP_BASE_DN', ''); - -// LDAP filtro de grupo -// Ejemplo para ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*)) -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 -// Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s)) -define('LDAP_GROUP_USER_FILTER', ''); - -// LDAP atributo para los nombres de grupos -define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn'); -``` - -Reverse-Proxy configuración de autenticación -------------------------------------- - -```php -// Enable/disable la autenticación reverse proxy -define('REVERSE_PROXY_AUTH', false); - -// Nombre del header a utilizar para el nombre de usuario -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 -define('REVERSE_PROXY_DEFAULT_DOMAIN', ''); -``` - -Configuración para la autenticacion RememberMe ----------------------------------------------- - -```php -// Enable/disable recuerdame autenticación -define('REMEMBER_ME_AUTH', true); -``` - -Secure HTTP configuracion de headers -------------------------------------- - -```php -// Enable o disable "Strict-Transport-Security" HTTP header -define('ENABLE_HSTS', true); - -// Enable o disable "X-Frame-Options: DENY" HTTP header -define('ENABLE_XFRAME', true); -``` - -Logging -------- - -De forma predeterminada , Kanboard no ingrese nada . -Si desea habilitar el registro , usted tiene que fijar un controlador de registro. - -```php -// log de drivers disponibles: syslog, stderr, stdout or file -define('LOG_DRIVER', ''); - -// Ingrese el nombre de archivo de registro si el driver "file" -define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log'); -``` - -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 -define('BRUTEFORCE_LOCKDOWN', 6); - -// Bloquear la cuenta durante un minute -define('BRUTEFORCE_LOCKDOWN_DURATION', 15); -``` - -Session -------- - -```php -// Session duration in second (0 = until the browser is closed) -// See http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime -define('SESSION_DURATION', 0); -``` - -Clientes HTTP --------------- - -Si las peticiones HTTP externas debe ser enviada a través de un proxy : - -```php -define('HTTP_PROXY_HOSTNAME', ''); -define('HTTP_PROXY_PORT', '3128'); -define('HTTP_PROXY_USERNAME', ''); -define('HTTP_PROXY_PASSWORD', ''); -``` - -Para permitir que los certificados de firma propia : - -```php -// Establece en false para permitir certficados self-signed -define('HTTP_VERIFY_SSL_CERTIFICATE', true); -``` - -Varias configuraciones ----------------------- - -```php -// 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 -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 ) -define('DISABLE_LOGOUT', false); - -// 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/contributing.markdown b/doc/es_ES/contributing.markdown deleted file mode 100644 index 46d286d5..00000000 --- a/doc/es_ES/contributing.markdown +++ /dev/null @@ -1,67 +0,0 @@ -Directrices del contribuyente -====================== - -¿Cómo puedo ayudar? ------------------ - -Kanboard no es perfecto, pero hay muchas maneras de ayudar: - -- Dar opinión -- Informar de los errores -- Añadir o actualizar traducciones -- Mejorar la documentación -- Código de Escritura -- Dile a tus amigos que Kanboard es impresionante - -Antes de hacer cualquier empresa grande, abrir un nuevo tema y explicar su propuesta. - -Quiero dar retroalimentación ------------------------ -- Usted piensa que algo debe ser mejorado (interface de usuario, peticiones de características) -- Comprobar si aún no se propuso su idea -- Abrir un nuevo tema -- Describir su idea -- Puede también hacer un voto con +1 en las propuestas existentes - -Quiero informar de un error ---------------------------- - -- Compruebe si el problema no se ha comunicado anteriormente -- Abrir un nuevo ticket -- Explicar lo que está roto -- Describir la forma de reproducir el error -- Describir su entorno (versión Kanboard, sistema operativo, servidor web, Versión de PHP , la versión de la base de datos, el proveedor de alojamiento)} - -Deseo traducir Kanboard ----------------------------- -Kanboard se traduce en muchos idiomas. - -Sin embargo, las traducciones no están completas, observe la [guía de traducción para contribuir](translations.markdown). - - -Quiero mejorar la documentación ------------------------------------ -- ¿Crees que algo no está claro, existen errores gramaticales, errores tipográficos, otra cosa ? -- La documentación está escrita en Markdown y se almacena en la carpeta `docs`. -- Editar los archivos y enviar un Pull-Request -- La documentación se sincroniza con el repositorio y el sitio web oficial . - -Quiero contribuir al código --------------------------------- -Los pulls son siempre bienvenidos , al ser aceptado se tiene que seguir estas directrices: - -- ** Antes de hacer cualquier cambio grande o propuesta de diseño, abrir un nuevo ticket en comenzar una discusión **. -- Si desea agregar una nueva función, respetar la filosofía detrás de Kanboard. ** Nos centramos en la simplicidad **, no queremos tener un software sobrecargado . -- Lo mismo se aplica para la interface de usuario, ** ** simplicidad y eficiencia. -- Enviar un solo pull por característica o corrección de errores. -- Un pull más pequeño es más fácil y más rápido para revisar y fusionarlo. -- Asegurarse [ de hacer las pruebas unitarias (tests.markdown). -- Respetar los [estandares de codificación] (coding-standards.markdown). -- Escribir código mantenible, evitar la duplicación de código, usar las buenas practicas de PHP. -En cualquier caso, si no está seguro acerca de algo abierto crear un uevo ticket. - -Dile a tus amigos que Kanboard es impresionante ---------------------------------------------- - -Si utiliza Kanboard, corre la voz que le rodean. -Diles que es software libre y de código abierto esto es cool. diff --git a/doc/es_ES/creating-projects.markdown b/doc/es_ES/creating-projects.markdown deleted file mode 100755 index d6b42faa..00000000 --- a/doc/es_ES/creating-projects.markdown +++ /dev/null @@ -1,40 +0,0 @@ -Creación de proyectos -================= - -Kanboard puede manejar múltiples proyectos. Hay dos tipos de proyectos - -- Proyectos por equipos -- Proyectos privados pra una sola persona - -Creando proyectos para multiples usuarios ------------------------------------------- - -- Solamente los administradores y los administradores de proyecto pueden crear los proyectos. -- La gestión de usuarios está disponible - -Desde el dashboard, click en el link **Nuevo proyecto**: - -![Formulario para la creación de proyecto](../screenshots/new-project.png) - -Es muy facil , solo tienes que buscar un nombre para tu proyecto! - -Crear un proyecto privado --------------------------- - -- Cualquiera puede crear un proyecto privado -- **No hay** gestión de usuarios -- Sólo el propietario y los administradores pueden acceder al proyecto - -Desde el dashboard, haga clic en el enlace **Nuevo proyecto privado**. - - -Crear proyectos desde otro proyecto --------------------------------------- - -Cuando tu creas un nuevo proyecto, tu puedes escoger o duplicar las propiedades de otro proyecto : - -- Permisos -- Acciones -- Swimlanes -- Categorias -- Tareas diff --git a/doc/es_ES/creating-tasks.markdown b/doc/es_ES/creating-tasks.markdown deleted file mode 100755 index 8a4c0331..00000000 --- a/doc/es_ES/creating-tasks.markdown +++ /dev/null @@ -1,31 +0,0 @@ -Creación de tarea -============== - -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) - -A continuación, aparece el formulario de creación de tareas: - -![Formulario de creación de tareas](../screenshots/task-creation-form.png) - -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). -- **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).. -- **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. -- **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. - - -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/cronjob.markdown b/doc/es_ES/cronjob.markdown deleted file mode 100755 index b7dc5cee..00000000 --- a/doc/es_ES/cronjob.markdown +++ /dev/null @@ -1,32 +0,0 @@ -Programaci�n de Jobs en background -================================== - -Para trabajar correctamente,Kanboard requiere que se corra un job en background diariamente. -Usualmente en plataformas Unix, este proceso se hace con `cron`. - -Este job es necesario para estas caracteristicas: - -- Reportes y analisis (calcular diariamente las estadisticas de cada proyecto) -- Enviar notificaciones de tareas atrasadas. -- Ejecutar automaticamente acciones conectadas a el evento "Daily background job for tasks" - -Configuraci�n de plataformas Unix y Linux ------------------------------------------ - -Hay varias maneras de definir una tarea programada en sistemas operativos Unix/Linux , este ejemplo es para Ubuntu 14.04 . -El procedimiento es similar a otros sistemas. - -Editar el crontab del usuario de tu servidor web - -```bash -sudo crontab -u www-data -e -``` - -Ejemplo para ejecutar diariamente cronjob a las 8am: - -```bash -0 8 * * * cd /path/to/kanboard && ./cli cronjob >/dev/null 2>&1 -``` - -Nota : El proceso del cronjob debe tener acceso a escritura de la base de datos en caso de usar Sqlite. -Usualmente, el cronjob corre bajo el usuario del servidor web. ** www-data , Ejemplo ** diff --git a/doc/es_ES/debian-installation.markdown b/doc/es_ES/debian-installation.markdown deleted file mode 100644 index 2150cf98..00000000 --- a/doc/es_ES/debian-installation.markdown +++ /dev/null @@ -1,74 +0,0 @@ -Como instalar Kanboard en debian -================================ - -Nota: Algunas caracteristicas de Kanboard requieren que tu corras [un job en background diariamente](cronjob.markdown). - -Debian 8 (Jessie) ------------------ - -Instalar Apache y PHP : - -```bash -apt-get update -apt-get install -y php5 php5-sqlite php5-gd unzip -service apache2 restart -``` - -Instalar Kanboard - -```bash -cd /var/www/html - -# Download the latest release from https://github.com/kanboard/kanboard/releases -wget https://github.com/kanboard/kanboard/archive/v<version>.zip - -unzip kanboard-<version>.zip -chown -R www-data:www-data kanboard-<version>/data -rm kanboard-<version>.zip -``` - -Debian 7 (Wheezy) ------------------ - -Instalar Apache y PHP - -```bash -apt-get update -apt-get install -y php5 php5-sqlite php5-gd unzip -``` - -Instalar Kanboard - -```bash -cd /var/www - -# Download the latest release from https://github.com/kanboard/kanboard/releases -wget https://github.com/kanboard/kanboard/archive/v<version>.zip - -unzip kanboard-<version>.zip -chown -R www-data:www-data kanboard-<version>/data -rm kanboard-<version>.zip -``` - -Debian 6 (Squeeze) ------------------- - -Instalar Apache y PHP - -```bash -apt-get update -apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip -``` - -Instalar Kanboard: - -```bash -cd /var/www - -# Download the latest release from https://github.com/kanboard/kanboard/releases -wget https://github.com/kanboard/kanboard/archive/v<version>.zip - -unzip kanboard-<version>.zip -chown -R www-data:www-data kanboard-<version>/data -rm kanboard-<version>.zip -``` diff --git a/doc/es_ES/docker.markdown b/doc/es_ES/docker.markdown deleted file mode 100644 index bde5ec05..00000000 --- a/doc/es_ES/docker.markdown +++ /dev/null @@ -1,105 +0,0 @@ -Como ejecutar Kanboard con Docker? -================================ - -Kanboard puede funcionar facilmente con [Docker] (https://www.docker.com). - -El tamaño de la imagen es aproximadamente de **70MB** y contiene: - -- [Alpine Linux](http://alpinelinux.org/) -- The [process manager S6](http://skarnet.org/software/s6/) -- Nginx -- PHP 7 - -La tarea programada de Kanboard tambien esta todos los dias a la medianoche. -La reescritura de la URL esta activada e incluida en el archivo de configuracion. - -Cuando el contenedor esta funcionando, la memoria ocupa alrededor de **30MB**. - - -Utilice la versión estable ----------------------- - -Para buscar la ultima versión estable de Kanboard use la etiqueta **estable**: - -```bash---terminal -docker pull kanboard/kanboard -docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:stable -``` - -Utilice la versión de desarollo (build automatico) ---------------------------------------------- - -Cada commit nuevo en el repositorio crea una nueva construccion en la [Docker Hub](https://registry.hub.docker.com/u/kanboard/kanboard/). - - -```bash---terminal -docker pull kanboard/kanboard -docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:latest -``` - -La etiqueta **ultimo** es la **version de desarrollo** de Kanboard, uselo bajo su propio riesgo. - -Construya su propia imagen acoplable ---------------------------- - -Hay un `Dockerfile` en el repositorio de Kanboard para construir su imagen acoplable. -Clone el repositorio de Kanboard y ejecute el siguiente camando. - -```bash---terminal -docker build -t youruser/kanboard:master . -``` - -o - -```bash---terminal -make docker-image -``` - -Para ejecutar su contenedor en el fondo del puerto 80: - -```bash--terminal -docker run -d --name kanboard -p 80:80 -t youruser/kanboard:master -``` - -Volúmenes -------- - -Usted puede adjuntar dos volúmenes de su contenedor: - -- Carpeta de datos: `/var/www/app/data` -- Complementos de carpeta: `/var/www/app/plugins` - - -Use el indicador `-v` par montar un volumen en el ordenador central como se describe en [official Docker documentation](https://docs.docker.com/storage/volumes/). - - -Actualizar contenedor ----------------------- - --Ponga la nueva imagen --Elimine el nuevo contenedor --Reinicie el nuevo contenedor con algunos volúmenes - -Variables de entorno ---------------------- - -La lista de las varibles de entorno esta disponible en [esta pagina](env.markdown). - -Archivos configurados ------------- - -- El contenedor ya incluye un archivo de configuracion personalizado `/var/www/app/config.php`. -- Puede almacenar su propio archivo de configuracion de volumen de datos`/var/www/app/data/config.php`. - - -Referencias ----------- - -- [Official Kanboard images](https://registry.hub.docker.com/u/kanboard/kanboard/) -- [Docker documentation](https://docs.docker.com/) -- [Dockerfile stable version](https://github.com/kanboard/docker) -- [Dockerfile dev version](https://github.com/kanboard/kanboard/blob/master/Dockerfile) -- [Imagenes oficiales de Kanboard](https://registry.hub.docker.com/u/kanboard/kanboard/) -- [Documentacionde Docker](https://docs.docker.com/) -- [Dockerfile version estable](https://github.com/kanboard/docker) -- [Dockerfile version dev](https://github.com/kanboard/kanboard/blob/master/Dockerfile) diff --git a/doc/es_ES/email-configuration.markdown b/doc/es_ES/email-configuration.markdown deleted file mode 100644 index ee3824c8..00000000 --- a/doc/es_ES/email-configuration.markdown +++ /dev/null @@ -1,114 +0,0 @@ -Configuración del Email -======================= - -Configuración de usuarios -------------------------- - -Para recibir notificaciones por email los usuarios de Kanboard deben tener - -- Activar las notificaciones de su perfil -- Tener una dirección valida de email en su perfil -- Ser miembro del proyecto y que este tenga activo la opción de notificaciones - -Nota: El usuario que genera una sesión y que realiza alguna acción no recibe ninguna notificación, sólo otros miembros del proyecto. - -Comunicación con correos electronicos -------------------------------------- - -There are several email transports available: - -- SMTP -- Sendmail -- PHP mail funcion nativa -- Otros métodos que pueden ser proporcionados por externos : Postmark, Sendgrid and Mailgun - -Configuración del servidor --------------------------- - -Por default, Kanboard usa el bundled PHP mail function para el envio de emails. -Porque usualmente el servidor no requiere una configuración y así tu servidor puede estar listo para enviar emails. - -Sin embargo, es posible usar otros metodos, como el protocolo SMTP y Sendmail - -### Configuración SMTP - -Renombrar el archivo `config.default.php` a `config.php` y modificar estos valores: - -```php -// We choose "smtp" as mail transport -define('MAIL_TRANSPORT', 'smtp'); - -// We define our server settings -define('MAIL_SMTP_HOSTNAME', 'mail.example.com'); -define('MAIL_SMTP_PORT', 25); - -// Credentials for authentication on the SMTP server (not mandatory) -define('MAIL_SMTP_USERNAME', 'username'); -define('MAIL_SMTP_PASSWORD', 'super password'); -``` - -También es posible utilizar una conexión segura, TLS or SSL: - -```php -define('MAIL_SMTP_ENCRYPTION', 'ssl'); // Valid values are "null", "ssl" or "tls" -``` - -### Configuración Sendmail - -Por default el comando para el sendmail esta `/usr/sbin/sendmail -bs` Pero usted puede personalizarlo en su archivo de configuración. - -Ejemplo: - -```php -// We choose "sendmail" as mail transport -define('MAIL_TRANSPORT', 'sendmail'); - -// If you need to change the sendmail command, replace the value -define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs'); -``` - -### PHP funcion nativa de email - -Esta es la configuración por default - -```php -define('MAIL_TRANSPORT', 'mail'); -``` - -### La dirección de correo electrónico del remitente - -Por default, los correos electrónicos utilizarán la dirección del remitente `notifications@kanboard.local`. -con este correo no es posible responderle - -Tu puedes personalizar esta direccion cambiando el valor de la constante `MAIL_FROM` en tu archivo de configuración - -```php -define('MAIL_FROM', 'kanboard@mydomain.tld'); -``` - -Esto puede ser útil si su configuracion del servidor SMTP no acepta una dirección por default. - -### Cómo mostrar un enlace a la tarea en las notificaciones ? - -Para hacer eso, tu tienes que especificar la URL de tu instalación de tu kanboard [Application Settings](application-configuration.markdown). - -De manera predeterminada, no se define nada, por lo que no se mostrará los enlaces. - -Ejemplos : - -- http://myserver/kanboard/ -- http://kanboard.mydomain.com/ - -No se olvide de la barra final `/`. - -Es necesario definir de forma manual debido a que Kanboard no puede adivinar la dirección URL de una secuencia de comandos de línea de comandos y algunas personas tienen una configuración muy específica. - -Solución de problemas ---------------------- - -Si no hay mensajes de correo electrónico se envían y que está seguro de que todo está configurado correctamente entonces: - -- Verificar el correo de spam -- Habilita el modo debug y verifique el archivo `data/debug.log`, Debería ver el error exacto -- Asegúrese de que el servidor o el proveedor de alojamiento le permite enviar mensajes de correo electrónico -- Si usa Selinux Permitir a PHP enviar emails diff --git a/doc/es_ES/faq.markdown b/doc/es_ES/faq.markdown deleted file mode 100755 index e1ecb3da..00000000 --- a/doc/es_ES/faq.markdown +++ /dev/null @@ -1,132 +0,0 @@ -Preguntas frecuentes -========================== - -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 . -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 ----------------------------------------------------------------------- - -- Verificar si tienes instalados todos los requerimientos en tu servidor -- Verificar el log de errores de PHP y Apache -- Verificar si los archivos tienen los permisos correctos -- Si utiliza un agresivo OPcode caching, haz un reload a tu web-server o php-fpm - - -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 -restringe por un `open_basedir` - - -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: - -Cambiar el valor directamente en su ` php.ini` si es posible : - -`` ` -arg_separator.output = "& " -`` ` - -Sustituir el valor con un ` .htaccess` : - -`` ` -arg_separator.output php_value "& " -`` ` - -De lo contrario Kanboard tratará de anular el valor directamente en PHP . - - -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` : - -``` -RewriteCond %{HTTP:Authorization} ^(.+)$ -RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] -``` - - -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 : - -``` -[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` . - -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). - - -Por que el requerimiento minimo es PHP 5.3.3? ------------------------------------------ - -Kanboard utiliza la funcion `password_hash()` para encriptar los passwords pero solo esta disponible ne la version PHP >= 5.5. - -Sin embargo, hay un back-port para [versiones de php anteriores](https://github.com/ircmaxell/password_compat#requirements). -Esta biblioteca requiere al menos PHP 5.3.7 para que funcione correctamente. - -Al parecer , CentOS y Debian tienen parches de seguridad en su back-port para PHP 5.3.3 y al parecer estan bien. - -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? ---------------------------------------------------------------- - -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): - -```bash -unzip kanboard-VERSION.zip -cd kanboard -php -S localhost:8000 -open http://localhost:8000/ -``` - - -Como instalar Kanboard en Yunohost? ------------------------------------- - -[YunoHost](https://yunohost.org/) es un sistema operativo de servidor con el objetivo de hacer auto-alojamiento accesible para todos. - -Existe un [paquete para instalar Kanboard en Yunohost facilmente](https://github.com/mbugeia/kanboard_ynh). - - -¿Dónde puedo encontrar una lista de proyectos relacionados? --------------------------------------------- - -- [Kanboard API python client by @freekoder](https://github.com/freekoder/kanboard-py) -- [Kanboard Presenter by David Eberlein](https://github.com/davideberlein/kanboard-presenter) -- [CSV2Kanboard by @ashbike](https://github.com/ashbike/csv2kanboard) -- [Kanboard for Yunohost by @mbugeia](https://github.com/mbugeia/kanboard_ynh) -- [Trello import script by @matueranet](https://github.com/matueranet/kanboard-import-trello) -- [Chrome extension by Timo](https://chrome.google.com/webstore/detail/kanboard-quickmenu/akjbeplnnihghabpgcfmfhfmifjljneh?utm_source=chrome-ntp-icon), [Source code](https://github.com/BlueTeck/kanboard_chrome_extension) -- [Python client script by @dzudek](https://gist.github.com/fguillot/84c70d4928eb1e0cb374) -- [Shell script for SQLite to MySQL/MariaDB migration by @oliviermaridat](https://github.com/oliviermaridat/kanboard-sqlite2mysql) -- [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? ------------------------------------------------------------ - -- [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/freebsd-installation.markdown b/doc/es_ES/freebsd-installation.markdown deleted file mode 100644 index 9d8d0025..00000000 --- a/doc/es_ES/freebsd-installation.markdown +++ /dev/null @@ -1,132 +0,0 @@ -Instalacion en FreeBSD -======================= - -Instalación de paquetes ---------------------- - -```bash---terminal -$ pkg update -$ pkg upgrade -$ pkg install apache24 mod_php56 kanboard -``` - -Habilitar Apache en `/etc/rc.conf`; - -```bash---terminal -$ echo apache24_enable="YES" >> /etc/rc.conf -``` - -Preparar PHP para Apache: - -```bash---terminal -$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf -$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf -``` - -Iniciar Apache: - -```bash---terminal -$ service apache24 start -``` - -Añadir enlace a la carpeta Kanboard en su docroot Apache: - - -```bash---terminal -cd /usr/local/www/apache24/data -ln -s /usr/local/www/kanboard -``` - -Ir a http://your.server.domain.tld/kanboard and enjoy! - -*Notas*: -- Si deseas utilizar funciones adicionales como la integracion con LDAP, etc. -por favor instale el modulo PHP utilizando el paquete adecuado. -- Es posible que tenga que ejecutar los permisos de la carpeta de datos. - - -Instalacion de puertos ---------------------- - -Generalmente tres elementos tienen que instalarse: - -- Apache -- mod_php for Apache -- Kanboard - -Fetch y extraer puertos... - -```bash---terminal -$ portsnap fetch -$ portsnap extract -``` - -o actualizacion ya existente: - -```bash---terminal -$ portsnap fetch -$ portsnap update -``` - -Mas detalles con respecto a portsnap se puede encontrar en [FreeBSD Handbook](https://www.freebsd.org/doc/handbook/ports-using.html). - -Instalacion de Apache: - -```bash--terminal -$ cd /usr/ports/www/apache24 -$ make install clean -``` - -Habilitar Apache en `/etc/rc.conf`: - -```bash---terminal -$ echo apache24_enable="YES" >> /etc/rc.conf -``` - -Instalacion de mod_php para Apachec: - -```bash---terminal -$ cd /usr/ports/www/mod_php5 -$ make install clean -``` - -Instalacion de los puertos de formulario para Kanboard - -```bash---terminal -$ cd /usr/ports/www/kanboard -$ make install clean -``` - -Configuracion de PHP para Apache - - -```bash--terminal -$ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf -$ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf -``` - -Iniciando Apache: - -```bash---terminal -$ service apache24 start -``` - -Ir a http://your.server.domain.tld/kanboard and enjoy! - -*Nota*: -Si desea utilizar funciones adicionales como la intregacion con LDAP, etc. -Instale el modulo PHP adecuado de `lang/php5-extensions`. - - -Manual de instalacion -------------------- - -Como en la version 1.0.16 Kanboard se puede encontrar en los puertos de FreeBSD no hay necesidad de instalarlo manualmente. - - -Tome nota por favor --------------------- - -- El puerto esta alojado en [bitbucket](https://bitbucket.org/if0/freebsd-kanboard/). Sientase libre de comentar, y sugerir cambios ! -- Algunas funciones de Kanboard requieren ejecutar[un trabajo en segundo plano todos los dias](cronjob.markdown). - diff --git a/doc/es_ES/heroku.markdown b/doc/es_ES/heroku.markdown deleted file mode 100644 index 8de8b4da..00000000 --- a/doc/es_ES/heroku.markdown +++ /dev/null @@ -1,38 +0,0 @@ -Implementar Kanboard en Heroku -========================= - -Usted puede tratar de forma gratuita en Kanboard[Heroku](https://www.heroku.com/). -Puede utilizar este botón de un solo clic instalar o siga las instrucciones del manual abajo: - -[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/kanboard/kanboard) - -Requerimientos ------------- -- Cuenta de Heroku, se puede utilizar una cuenta gratuita -- Herramientas de línea de comandos instalados Heroku - -Manual de Instrucciones -------------------- - -```bash -# Obtener la ultima version de desarrollo -git clone https://github.com/kanboard/kanboard.git -cd kanboard - -# Empuje el código para Heroku (También puede utilizar SSH si Git sobre HTTP no funciona) -heroku create -git push heroku master - -# Iniciar un nuevo banco de pruebas con una base de datos PostgreSQL -heroku ps:scale web=1 -heroku addons:add heroku-postgresql:hobby-dev - -# Abra su navegador -heroku open -``` - -Limitaciones ------------ - -- El almacenamiento de Heroku es efímera, eso significa que los archivos cargados a través de Kanboard no son persistentes después de un reinicio. Es posible que desee instalar un plugin para almacenar sus archivos en un proveedor de almacenamiento en la nube como [Amazon S3](https://github.com/kanboard/plugin-s3). -- Algunas funciones de Kanboard requieren que ejecute [un trabajo en segundo plano todos los días] (cronjob.markdown). diff --git a/doc/es_ES/installation.markdown b/doc/es_ES/installation.markdown deleted file mode 100644 index 308b0e2b..00000000 --- a/doc/es_ES/installation.markdown +++ /dev/null @@ -1,68 +0,0 @@ -Instalación - -En primer lugar, comprobar los [requisitos] ( requirements.markdown)antes de ir más lejos. - -Del archivo (versión estable) ---------------------------------- - - -1. Debe tener un servidor web con PHP instalado -2. Descargar el código fuente y copiar el directorio ` kanboard` en la que desea. -3. Comprobar si el directorio ` data` se puede escribir -4. Con el navegador vaya a < http://yourpersonalserver/kanboard > -5. El nombre de usuario y contraseña por defecto es **admin/admin** -6. Comience a utilizar el software -7. No se olvide de cambiar su contraseña! - - -La carpeta de datos se utiliza para almacenar: - -- Base de datos SQLite: ` db.sqlite` -- Archivo de depuración: ` debug.log` (si está activado el modo de depuración) -- Archivos cargados: ` ficheros / *` -- miniaturas de imagen: ` ficheros / miniaturas / *` - -Las personas que están utilizando una base de datos remota (MySQL / PostgreSQL) y un almacenamiento de archivos a distancia (AWS S3 o similar) no necesariamente tienen que tener una carpeta de datos local persistente o para cambiar el permiso. - -Desde el repositorio (versión de desarrollo) ------------------------------------------ - -1. ` git clone https: // github.com / kanboard / kanboard.git` -2. Ir a la tercera etapa justo por encima - -Nota: Este método se instalará la versión de **desarrollo actual** , utilice a su propio riesgo . - -Instalación exterior de la raíz del documento ---------------------------------------------- - -Si desea instalar Kanboard fuera de la raíz de documentos del servidor web, es necesario crear al menos estos enlaces simbólicos: - -```bash -. -├── assets -> ../kanboard/assets -├── cli -> ../kanboard/cli -├── doc -> ../kanboard/doc -├── favicon.ico -> ../kanboard/favicon.ico -├── index.php -> ../kanboard/index.php -├── jsonrpc.php -> ../kanboard/jsonrpc.php -└── robots.txt -> ../kanboard/robots.txt -``` - -El ` .htaccess` es opcional, ya que su contenido puede ser incluido directamente en la configuración de Apache. - -También puede definir una ubicación personalizada para los plugins y carpetas de archivos cambiando el [archivo de configuración] (config.markdown). - -La instalación opcional - ---------------------- - -- Algunas funciones de Kanboard requieren que ejecuta [un trabajo en segundo plano todos los días] (cronjob.markdown) (Informes y análisis) -- [Instalar el trabajador fondo] (worker.markdown) para mejorar las prestaciones - -Seguridad ---------- - - -- No se olvide de cambiar el usuario por defecto / contraseña -- No permita a todo el mundo para acceder al directorio ` data` de la URL. -Ya existe un ` .htaccess` para Apache , pero nada para los demás servidores web. diff --git a/doc/es_ES/kanban-vs-todo-and-scrum.markdown b/doc/es_ES/kanban-vs-todo-and-scrum.markdown deleted file mode 100644 index 5295a6d1..00000000 --- a/doc/es_ES/kanban-vs-todo-and-scrum.markdown +++ /dev/null @@ -1,38 +0,0 @@ -Kanban vs Todo lists and Scrum -============================== - -Kanban vs Todo lists --------------------- - -### Todo lists (lista de tareas) : - -- Fase unica (es solo una lista de tareas) -- Multitarea posible (no eficiente) - -### Kanban: - -- Multi fases, -- Concentración absoluta para evitar multitareas por que se puede establecer un limite por columna para mejorar el progreso - - -Kanban vs Scrum ---------------- - -### Scrum: - -- Los sprints son time-boxed, usualmente 2 o 4 semanas -- No permitir cambios durante la iteración -- La estimación es requerida -- Utiliza la velocidad como métrica predeterminada -- El tablero de Scrum se borra entre cada sprint -- Scrum tiene funciones predefinidas como scrum master , los dueños del producto y el equipo -- Una gran cantidad de reuniones: planeaciones, backlogs grooming, daily stand-up, retrospectiva - -### Kanban: - -- Fluido continuo -- Los cambios se pueden crear en cualquier momento -- La estimacion es opcional -- Usa la iniciativa del tiempo de ciclo para apresurar el performance -- el tablero Kanban board es persistente -- Kanban no impone estrictas restricciones y reuniones, el proceso es mas flexible diff --git a/doc/es_ES/keyboard-shortcuts.markdown b/doc/es_ES/keyboard-shortcuts.markdown deleted file mode 100755 index 9e75a138..00000000 --- a/doc/es_ES/keyboard-shortcuts.markdown +++ /dev/null @@ -1,38 +0,0 @@ -Atajos de teclado ** keyboard shortcuts ** -========================================== - -La disponibilidad de los Atajos de teclado depende de la página que está actualmente . - -Vistas de proyectos (Board, Calendario, Lista, Gantt) --------------------------------------------- - -- Cambie a la visión general del proyecto = **v o** -- Cambie ala vista del tablero = **v b** (presiona **v** y despues **b**) -- Cambie ala vista del calendario = **v c** -- Cambie a la vista de lista = **v l** -- Cambie a la vista de Gantt = **v g** - -Vista de tablero ---------------- - -- Nueva tarea = **n** -- Expandir/colapsar tarea = **s** -- Vista Compacta/Amplia = **c** - -Vista de tarea ---------- - -- Editar tarea = **e** -- Nueva subtarea = **s** -- Nuevo comentario = **c** -- Nuevo link interno = **l** - -Aplicación ------------ - -- Visualizar la lista de atajos de teclado = **?** -- Abrir tablero y cambiarlo = **b** -- Ir a la caja de busqueda = **f** -- Eliminar la caja de busqueda = **r** -- Cerrar dialog box = **ESC** -- Submit al formulario = **CTRL+ENTER** or **⌘+ENTER** diff --git a/doc/es_ES/mysql-configuration.markdown b/doc/es_ES/mysql-configuration.markdown deleted file mode 100755 index 25c9e671..00000000 --- a/doc/es_ES/mysql-configuration.markdown +++ /dev/null @@ -1,74 +0,0 @@ -Configuración Mysql/MariaDB -=========================== - - -Por defecto Kanboard utilizar SQLite para almacenar tus datos. -Sin embargo, es posible usar MySQL o MariaDB en lugar de SQLite. - -Requirimientos ------------- - -- Mysql server -- Instalar la extensión `pdo_mysql` en PHP - -Nota: Kanboard esta testeada con **Mysql >= 5.5 y MariaDB >= 10.0** - -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: - -```sql -CREATE DATABASE kanboard; -``` - -### Crear un archivo de configuración - -El archivo `config.php` debería contener estos valores: - -```php -<?php - -// Elegimos el uso de MySQL en lugar de SQLite -define('DB_DRIVER', 'mysql'); - -// Mysql parametros -define('DB_USERNAME', 'REPLACE_ME'); -define('DB_PASSWORD', 'REPLACE_ME'); -define('DB_HOSTNAME', 'REPLACE_ME'); -define('DB_NAME', 'kanboard'); -``` - -Nota: Se puede renombrar el archivo de plantilla `config.default.php` a `config.php`. - -### 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. - -Para evitar cualquier tiempo de espera de potencial se puede inicializar la base de datos directamente importando el esquema de SQL: - -```bash -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 - -SSL configuración ------------------ - -Estos parámetros tienen que ser definidas para permitir la conexión SSL Mysql: - -```php -// Mysql SSL key -define('DB_SSL_KEY', '/path/to/client-key.pem'); - -// Mysql SSL certificados -define('DB_SSL_CERT', '/path/to/client-cert.pem'); - -// Mysql SSL CA -define('DB_SSL_CA', '/path/to/ca-cert.pem'); -``` diff --git a/doc/es_ES/plugin-authentication-architecture.markdown b/doc/es_ES/plugin-authentication-architecture.markdown deleted file mode 100644 index fa11f1bc..00000000 --- a/doc/es_ES/plugin-authentication-architecture.markdown +++ /dev/null @@ -1,99 +0,0 @@ -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) - -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 ----------------------------- - -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 | -| 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 | - -### Ejemplos de autenticación de proveedores: - -- Database por default metodos a implementar `PasswordAuthenticationProviderInterface` y `SessionCheckProviderInterface` -- Reverse-Proxy metodos a implementar `PreAuthenticationProviderInterface` y `SessionCheckProviderInterface` -- Google metodos a implementar `OAuthAuthenticationProviderInterface` -- LDAP metodos a implementar `PasswordAuthenticationProviderInterface` -- RememberMe cookie metodos a implementar `PreAuthenticationProviderInterface` -- Two-Factor TOTP metodos a implementar `PostAuthenticationProviderInterface` - -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` -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 - -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 - -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 . - -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()`. -Este metodo debe regresar un objeto que implementa la interface `Kanboard\Core\User\UserProviderInterface`. - -Esta clase abstracta reune la información dede otro sistema. - -Ejemplos : - -- `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: - -- `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 - -No es obligatorio que el metodo devuelva un valor. - -Sincronización de un usuario 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 -- 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-authentication.markdown b/doc/es_ES/plugin-authentication.markdown deleted file mode 100644 index 05742156..00000000 --- a/doc/es_ES/plugin-authentication.markdown +++ /dev/null @@ -1,42 +0,0 @@ -Plugin de autenticación -===================== - -EL nuevo backend de autenticación se puede escribir con muy pocas lineas de codigo. - -Registro de proveedores ------------------------ - -En el metodo `initialize()` nuestro plugin, llama al metodo `register()` de la clase `AuthenticationManager`: - -```php -public function initialize() -{ - $this->authenticationManager->register(new ReverseProxyLdapAuth($this->container)); -} -``` - -El objeto proveniente de el metodo `register()` debe implementar one de las interfaces de autenticación predefidas. - -Esas interfaces estan definidas en los namespace `Kanboard\Core\Security`: - -- `Kanboard\Core\Security\PreAuthenticationProviderInterface` -- `Kanboard\Core\Security\PostAuthenticationProviderInterface` -- `Kanboard\Core\Security\PasswordAuthenticationProviderInterface` -- `Kanboard\Core\Security\OAuthAuthenticationProviderInterface` - - - -El único requisito es implementar las interfaces, la clase se puede escribir de la manera deseada y situado en cualquier lugar en el disco - -Usuario del proveedor ----------------------- - -Cuando la autenticación es satisfactoria, tu driver debe regresar un objato que representa al usuario. -Este objeto debe implementasr la interface `Kanboard\Core\User\UserProviderInterface`. - -Ejemplo de plugin de autenticación ----------------------------------- - -- [Autenticación de proveedores incluido en kanboard](https://github.com/kanboard/kanboard/tree/master/app/Auth) -- [Reverse-Proxy Autenticación con soporte LDAP](https://github.com/kanboard/plugin-reverse-proxy-ldap) -- [Two-Factor Autenticación SMS](https://github.com/kanboard/plugin-sms-2fa) diff --git a/doc/es_ES/plugin-authorization-architecture.markdown b/doc/es_ES/plugin-authorization-architecture.markdown deleted file mode 100644 index 769adcf8..00000000 --- a/doc/es_ES/plugin-authorization-architecture.markdown +++ /dev/null @@ -1,39 +0,0 @@ -Arquitecuta de autorización -=========================== - -Kanboard [soporta multiples roles](roles.markdown) a nivel de aplicación y a nivel de proyecto. - -Workflow de autorización --------------------------- - -Para cada solicitud HTTP: - -1. Autorizar o no el acceso a los recursos en base a la lista de acceso a las aplicaciones -2. Si el recurso es para un projecto (board, tarea...): - 1. Extrae los roles de usuario para este proyecto - 2. Permitir/Denegar accesos basados en el mapa de acceso del proyecto - -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`. - -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 del proyecto: `$this->projectAccessMap` - -Ejemplos para definir una nueva política para tu plugin: - -```php -// Todos los metodos de la clase MyController: -$this->projectAccessMap->add('MyController', '*', Role::PROJECT_MANAGER); - -// Todos los metodos: -$this->projectAccessMap->add('MyOtherController', array('create', 'save'), Role::PROJECT_MEMBER); -``` - -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. diff --git a/doc/es_ES/plugin-automatic-actions.markdown b/doc/es_ES/plugin-automatic-actions.markdown deleted file mode 100644 index 27effaad..00000000 --- a/doc/es_ES/plugin-automatic-actions.markdown +++ /dev/null @@ -1,61 +0,0 @@ -Agregando acciones automáticas -=============================== - -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`. - -Varios métodos abstractos deben ser implementadas por sí mismo: - -| 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)| -| `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 | - -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()`. -Sin embargo, si tu plugin dispara nuevos eventos, tu puedes registrar estos eventos : - -```php -$this->actionManager->getAction('\Kanboard\Plugin\MyPlugin\MyActionName')->addEvent('my.event', 'My event description'); -``` - -Tu puedes extender la lista de eventos compatibles de acciones existentes para ser usada en algun metodo. - -Registra la acción ----------------------- - -Tu tienes que llamar el metodo `register()` desde la clase `Kanboard\Core\Action\ActionManager`: - -```php -<?php - -namespace Kanboard\Plugin\AutomaticAction; - -use Kanboard\Core\Plugin\Base; -use Kanboard\Plugin\AutomaticAction\Action\TaskRename; - -class Plugin extends Base -{ - public function initialize() - { - $this->actionManager->register(new TaskRename($this->container)); - } -} -``` - -Ejemplo -------- - -- [Ejemplo de acción automatica](https://github.com/kanboard/plugin-example-automatic-action) diff --git a/doc/es_ES/plugin-avatar-provider.markdown b/doc/es_ES/plugin-avatar-provider.markdown deleted file mode 100644 index 2cce0647..00000000 --- a/doc/es_ES/plugin-avatar-provider.markdown +++ /dev/null @@ -1,32 +0,0 @@ -Agregando un nuevo avatar del proveedor -======================================= - -Registrar ------------- - -```php -$this->avatarManager->register(new CustomAvatarProvider()); -``` - -Interface ---------- - -El proveedor debe implementar la interface `Kanboard\Core\User\Avatar\AvatarProviderInterface`: - - -| Metodo | Descripcion | -|-------------------------------|---------------------------------------------------------------| -| `render(array $user, $size)` | Renderizar HTML | -| `isActive(array $user)` | Regresa un boolean si el proveedor esta activo | - - -El argumento `$user` es un directorio que contiene estas llaves : - -```php -[ - 'id' => 123, - 'username' => 'admin', - 'name' => 'Administrator', - 'email' => 'me@localhost', -] -``` diff --git a/doc/es_ES/plugin-directory.markdown b/doc/es_ES/plugin-directory.markdown deleted file mode 100644 index 0742b992..00000000 --- a/doc/es_ES/plugin-directory.markdown +++ /dev/null @@ -1,15 +0,0 @@ -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` - -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. - -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 deleted file mode 100644 index ebb9066b..00000000 --- a/doc/es_ES/plugin-events.markdown +++ /dev/null @@ -1,27 +0,0 @@ -Uso de eventos -=============== - -Kanboard usar internamente el [ Componente EventDispatcher de Symfony ](https://symfony.com/doc/2.3/components/event_dispatcher/index.html) para manegar internamente los eventos. - -Eventos escucha ** Listening ** -------------------------------- - -```php -$this->on('app.bootstrap', function($container) { - // tu codigo -}); -``` - -- El primer argumento es el nombre del evento (string) -- El segundo argumento es una funcion PHP callable (finalización o metodos de la clase) - -Agregando un nuevo evento -------------------------- - -Para agregar un nuevo, tienes que llamar al metodo `register()` de la clase `Kanboard\Core\Event\EventManager`: - -```php -$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 . diff --git a/doc/es_ES/plugin-external-link.markdown b/doc/es_ES/plugin-external-link.markdown deleted file mode 100644 index 969c430c..00000000 --- a/doc/es_ES/plugin-external-link.markdown +++ /dev/null @@ -1,79 +0,0 @@ -Vinculación externa de proveedores -================================== - -Esta funcionalidad le permite vincular una tarea a los elementos adicionales almacenados en otro sistema. - -Por ejemplo, tu puedes vincular una tarea a: -For example, you can link a task to: - -- Una pagina web tradicional -- Datos adjuntos (Documentos PDF almacenados en la web, archivos ...) -- Cualquier sitema de tickets (bug tracker, soporte personalizado de tickets...) - -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 - -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 -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 - -Interfaces ----------- - -Para implementar un nuevo vinculo al proveedor desde un plugin, es necesario crear 2 clases que implementarlas en las interfaces: - -- `Kanboard\Core\ExternalLink\ExternalLinkProviderInterface` -- `Kanboard\Core\ExternalLink\ExternalLinkInterface` - -### ExternalLinkProviderInterface - -| Method | Usage | -|----------------------------|---------------------------------------------------------------------------------| -| `getName()` | Obtener el nombre del proveedor(label) | -| `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| -| `getLink()` | Obtener el enlace que se encuentra con las propiedades | - -### ExternalLinkInterface - -| Method | Usage | -|-------------------|-----------------------------| -| `getTitle()` | Obtiene un titulo de link | -| `getUrl()` | Obtiene una link de URL | -| `setUrl($url)` | URL del enlace | - -El registro de un nuevo proveedor de enlace ------------------------------------------- - -En tu `Plugin.php`, solo puedes llamar al metodo `register()` desde el objeto `ExternalLinkManager`: - -```php -<?php - -namespace Kanboard\Plugin\MyExternalLink; - -use Kanboard\Core\Plugin\Base; - -class Plugin extends Base -{ - public function initialize() - { - $this->externalLinkManager->register(new MyLinkProvider()); - } -} -``` - -Ejemplos --------- - -- Kanboard incluye proveedores por default "WebLink" y "Attachment" diff --git a/doc/es_ES/plugin-group-provider.markdown b/doc/es_ES/plugin-group-provider.markdown deleted file mode 100644 index ac7d0d71..00000000 --- a/doc/es_ES/plugin-group-provider.markdown +++ /dev/null @@ -1,54 +0,0 @@ -Personalizar grupos de proveedores -================================== - -Kanboard es capaz de cargar grupos de un sistema externo. -Esta caracteristica es principalmente usada para permisos de proyectos. - -Los **Projects Managers** pueden permitir el acceso a un proyecto para un grupo -El usuario final **end-user** utilizara una caja de autocomplementar y busquedas para un grupo - -Cada vez que se ejecuta una consulta de grupo , todos los proveedores de grupo registrados se ejecutan . - -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 - -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: - -- `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. - -Interface Backend del grupo de proveedores ------------------------------------------- -Interface a implementar: `Kanboard\Core\Group\GroupBackendProviderInterface`. - -Esta interface requiere solo un metodo: `find($input)`. -El argumento `$input` es el texto introducido desde la interfaz de usuario. - -Este metodo debe regresar una lista de `GroupProviderInterface`, es es el resultado de la busqueda. - -Backend de registro desde Plugins ---------------------------------- - -En el metodo `initialize()` de su plugins registrado se puede personalizar el backend : - -```php -$groupManager->register(new MyCustomLdapBackendGroupProvider($this->container)); -``` - -Ejemplos --------- - -- [Kanboard incluye el grupo de provedores (LDAP y base de datos)](https://github.com/kanboard/kanboard/tree/master/app/Group) diff --git a/doc/es_ES/plugin-helpers.markdown b/doc/es_ES/plugin-helpers.markdown deleted file mode 100644 index 66591075..00000000 --- a/doc/es_ES/plugin-helpers.markdown +++ /dev/null @@ -1,39 +0,0 @@ -Registrar nuevos helpers -======================= - -Estrucura del helper: - -```php -<?php - -namespace Kanboard\Plugin\MyPlugin\Helper\MyHelper; - -use Kanboard\Core\Base; - -class MyHelper extends Base -{ - public function doSomething() - { - return 'foobar'; - } -} -``` -Registrar tu helper en la clase: - -```php -$this->helper->register('myHelper', '\Kanboard\Plugin\MyPlugin\Helper\MyHelper'); -``` - -Usar tu helper desde una plantilla **Template**: - -```php -<p> - <?= $this->myHelper->doSomething() ?> -</p> -``` - -Usar tu helper dese otra clase: - -```php -$this->helper->myHelper->doSomething(); -``` diff --git a/doc/es_ES/plugin-hooks.markdown b/doc/es_ES/plugin-hooks.markdown deleted file mode 100644 index 9d842645..00000000 --- a/doc/es_ES/plugin-hooks.markdown +++ /dev/null @@ -1,249 +0,0 @@ -Plugin Hooks -============ - -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` - -### Escuchar en eventos hook - -En tu metodo `initialize()` tu necesitas llamar al metodo `on()` de la clase `Kanboard\Core\Plugin\Hook`: - -```php -$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 - -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 -- Argumentos : - - `$user_id` (integer) - - `$start` (DateTime) - - `$end` (DateTime) - -### 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. - -Ejemplo para agregar eventos en el calendario del usuario: - -```php -class Plugin extends Base -{ - public function initialize() - { - $container = $this->container; - - $this->hook->on('controller:calendar:user:events', function($user_id, $start, $end) use ($container) { - $model = new SubtaskForecast($container); - return $model->getCalendarEvents($user_id, $end); // Return new events - }); - } -} -``` - -Ejemplo para sobrescribir los valores por default de las tareas: - -```php -class Plugin extends Base -{ - public function initialize() - { - $this->hook->on('controller:task:form:default', function (array $default_values) { - return empty($default_values['score']) ? array('score' => 4) : array(); - }); - } -} -``` - -Lista de fusión de hooks: - -`controller:task:form:default` - -- sobrescribir los valores por default de las tareas -- Argumentos: - - `$default_values`: actual default values (array) - -`controller:calendar:project:events` - -- Agregar mas eventos a el calendario del projecto -- Argumentos: - - `$project_id` (integer) - - `$start` Calendar start date (string, ISO-8601 format) - - `$end` Calendar` end date (string, ISO-8601 format) - -`controller:calendar:user:events` - -- Agregar mas eventos a el calendario de usuario -- Argumentos: - - `$user_id` (integer) - - `$start` Calendar start date (string, ISO-8601 format) - - `$end` Calendar end date (string, ISO-8601 format) - -Asset Hooks ------------ - -Asset hooks pueden ser usados para agregar nuevas stylesheet facilmente o un nuevo archivo JavaScript en el layout. tu puedes usar estas caracteristicas para crear un tema y sobreescribir todo los estilos por dafault del kanboard. - -Ejemplo para agregar un stylesheet **hoja de estilo** - -```php -<?php - -namespace Kanboard\Plugin\Css; - -use Kanboard\Core\Plugin\Base; - -class Plugin extends Base -{ - public function initialize() - { - $this->hook->on('template:layout:css', array('template' => 'plugins/Css/skin.css')); - } -} -``` - -Lista de asset Hooks: - -- `template:layout:css` -- `template:layout:js` - - -Referencia de hooks ---------------- - -La reference hooks son pasados a una variable por referencia. - -Ejemplo: - -```php -$this->hook->on('formatter:board:query', function (\PicoDb\Table &query) { - $query->eq('color_id', 'red'); -}); -``` - -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 | -| `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. - -Ejemplo para agregar nuevos contenidos en el sidebar del dashboard: - -```php -$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar'); -``` - -Ejemplo para adjuntar un template con variables locales: - -```php -$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', array( - 'variable' => 'foobar', -)); -``` - -Ejemplo para adjuntar un template con un callable: - -```php -$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', function($hook_param1, $hook_param2) { - return array('new_template_variable' => 'foobar'); // Inyectar una nueva variable en la plantilla Plugin -}); -``` - -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. - -Ejemplo con `myplugin:dashboard/sidebar`: - -- `myplugin` Es el nombre de tu plugin (minusculas) -- `dashboard/sidebar` es el nombre del template -- 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. - -Lista de templates hooks: - -| Hook | Descripción | -|--------------------------------------------|----------------------------------------------------| -| `template:analytic:sidebar` | Sidebar en paginas analiticas | -| `template:app:filters-helper:before` | Filtro helper dropdown (top) | -| `template:app:filters-helper:after` | Filtro helper dropdown (bottom) | -| `template:auth:login-form:before` | Pagina de login (top) | -| `template:auth:login-form:after` | Pagina de login (bottom) | -| `template:board:private:task:before-title` | Tarea en un tablero privado : despues del titulo | -| `template:board:private:task:after-title` | Tarea en un tablero privado : antes del titulo | -| `template:board:public:task:before-title` | Tarea en un tablero publico : despues del titulo | -| `template:board:public:task:after-title` | Tarea en un tablero publico : antes del titulo | -| `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:email` | Email settings page | -| `template:config:integrations` | Integration page in global settings | -| `template:dashboard:sidebar` | Sidebar en la pagina del dashboard | -| `template:dashboard:show` | Pagina principal del dashboard | -| `template:export:sidebar` | Sidebar para exportar paginas | -| `template:import:sidebar` | Sidebar para importar paginas | -| `template:header:dropdown` | Dropdown menu Pagina header (icono avatar de usuario) | -| `template:header:creation-dropdown` | Dropdown menu Pagina header (plus icon) | -| `template:layout:head` | Layout de la pagina `<head/>` tag | -| `template:layout:top` | Layout de la pagina top header | -| `template:layout:bottom` | Layout de la pagina footer | -| `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: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 | -| `template:task:details:first-column` | Resumen de tarea columna | -| `template:task:details:second-column` | Resumen de tarea dos columnas | -| `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: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: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) | - - -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-ldap-client.markdown b/doc/es_ES/plugin-ldap-client.markdown deleted file mode 100644 index 1a34a880..00000000 --- a/doc/es_ES/plugin-ldap-client.markdown +++ /dev/null @@ -1,99 +0,0 @@ -Libreria LDAP -============ - -Para facilirar la integracion LDAP. kanboard tiene su propia libreria LDAP -Esta libreria puede ejecutar operaciones comunes. - -Cliente -------- - -Clase: `Kanboard\Core\Ldap\Client` - -Para conectar a tu servidor LDAP facilmente, usa este metodo: - -```php -use Kanboard\Core\Ldap\Client as LdapClient; -use Kanboard\Core\Ldap\ClientException as LdapException; - -try { - $client = LdapClient::connect(); - - // Get native LDAP resource - $resource = $client->getConnection(); - - // ... - -} catch (LdapException $e) { - // ... -} -``` - -Consultas LDAP --------------- - -Classes: - -- `Kanboard\Core\Ldap\Query` -- `Kanboard\Core\Ldap\Entries` -- `Kanboard\Core\Ldap\Entry` - -Ejemplo para una consulta al directorio LDAP: - -```php - -$query = new Query($client) -$query->execute('ou=People,dc=kanboard,dc=local', 'uid=my_user', array('cn', 'mail')); - -if ($query->hasResult()) { - $entries = $query->getEntries(); // Return an instance of Entries -} -``` - -Leer una entrada: - -```php -$firstEntry = $query->getEntries()->getFirstEntry(); -$email = $firstEntry->getFirstValue('mail'); -$name = $firstEntry->getFirstValue('cn', 'Default Name'); -``` - -Leer multiples entradas: - -```php -foreach ($query->getEntries()->getAll() as $entry) { - $emails = $entry->getAll('mail'); // Fetch all emails - $dn = $entry->getDn(); // Get LDAP DN of this user - - // Check if a value is present for an attribute - if ($entry->hasValue('mail', 'user2@localhost')) { - // ... - } -} -``` - -Usuario Helper --------------- - -Clase: `Kanboard\Core\Ldap\User` - -Obtener usuario en una sola linea - -```php -// Return an instance of LdapUserProvider -$user = User::getUser($client, 'my_username'); -``` - -Grupo Helper ------------- - -Clase: `Kanboard\Core\Ldap\Group` - -Obtener grupos en una linea: - -```php -// Define LDAP filter -$filter = '(&(objectClass=group)(sAMAccountName=My group*))'; - -// Return a list of LdapGroupProvider -$groups = Group::getGroups($client, $filter); -``` diff --git a/doc/es_ES/plugin-mail-transports.markdown b/doc/es_ES/plugin-mail-transports.markdown deleted file mode 100644 index 3d3eecd9..00000000 --- a/doc/es_ES/plugin-mail-transports.markdown +++ /dev/null @@ -1,49 +0,0 @@ -Plugin: Agregar trasporte de email -================================== - -Por default Kanboard soporta 3 estadares de trasporte de email: - -- Mail (PHP mail function) -- Smtp -- Sendmail command - -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 --------------- - -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()`: - -```php -interface ClientInterface -{ - /** - * Send a HTML email - * - * @access public - * @param string $email - * @param string $name - * @param string $subject - * @param string $html - * @param string $author - */ - public function sendEmail($email, $name, $subject, $html, $author); -} -``` - -Para registrar el nuevo trasporte de email, usa el metodo `setTransport($transport, $class)` desde la clase `Kanboard\Core\Mail\Client`: - -```php -$this->emailClient->setTransport('myprovider', '\Kanboard\Plugin\MyProvider\MyEmailHandler'); -``` - -EL segundo argumento contiene el absoluto namespace de tu clase especifica - -Ejemplos de plugins para trasporte de email ----------------------------------- - -- [Sendgrid](https://github.com/kanboard/plugin-sendgrid) -- [Mailgun](https://github.com/kanboard/plugin-mailgun) -- [Postmark](https://github.com/kanboard/plugin-postmark) diff --git a/doc/es_ES/plugin-metadata.markdown b/doc/es_ES/plugin-metadata.markdown deleted file mode 100644 index f37ec7e3..00000000 --- a/doc/es_ES/plugin-metadata.markdown +++ /dev/null @@ -1,42 +0,0 @@ -Metadatos -========= - -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 . - -Adjuntar y eliminar metadatos para tareas --------------------------------------------- - -```php - -// Return a dictionary of metadata (keys/values) for the $task_id -$this->taskMetadataModel->getAll($task_id); - -// Get a value only for a task -$this->taskMetadataModel->get($task_id, 'my_plugin_variable', 'default_value'); - -// Return true if the metadata my_plugin_variable exists -$this->taskMetadataModel->exists($task_id, 'my_plugin_variable'); - -// Create or update metadata for the task -$this->taskMetadataModel->save($task_id, ['my_plugin_variable' => 'something']); - -// Remove a metadata from a project -$this->projectMetadataModel->remove($project_id, my_plugin_variable); -``` - -Tipos de metadatos ------------------- - -- TaskMetadata: `$this->taskMetadataModel` -- ProjectMetadata: `$this->projectMetadataModel` -- UserMetadata: `$this->userMetadataModel` -- Settings/Config: `$this->configModel` - -Notas ------ - -- Siempre prefijo del nombre de metadatos con el nombre del plugin diff --git a/doc/es_ES/plugin-notifications.markdown b/doc/es_ES/plugin-notifications.markdown deleted file mode 100644 index e014cf63..00000000 --- a/doc/es_ES/plugin-notifications.markdown +++ /dev/null @@ -1,59 +0,0 @@ -Agregar notificaciones con los tipos de plugin -============================================== - -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 --------------------------------------- - -En tu archivo de registro del plugin llama el metodo `setType()`: - -```php -$this->userNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC\Notification\IrcHandler'); -$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 - -Notificación de Handler ------------------------ - -Su controlador de notificación debe implementar la interfaz `Kanboard\Core\Notification\NotificationInterface`: - -```php -interface NotificationInterface -{ - /** - * Envia notificación a un usuario - * - * @access public - * @param array $user - * @param string $event_name - * @param array $event_data - */ - public function notifyUser(array $user, $event_name, array $event_data); - - /** - * Envia notificacion a un projecto - * - * @access public - * @param array $project - * @param string $event_name - * @param array $event_data - */ - public function notifyProject(array $project, $event_name, array $event_data); -} -``` - -Ejemplo de notificacion de plugins ---------------------------------- - -- [Slack](https://github.com/kanboard/plugin-slack) -- [Hipchat](https://github.com/kanboard/plugin-hipchat) -- [Jabber](https://github.com/kanboard/plugin-jabber) - diff --git a/doc/es_ES/plugin-overrides.markdown b/doc/es_ES/plugin-overrides.markdown deleted file mode 100644 index a416d161..00000000 --- a/doc/es_ES/plugin-overrides.markdown +++ /dev/null @@ -1,42 +0,0 @@ -Plugin Reescritura -================ - -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()`: - -```php -<?php - -namespace Kanboard\Plugin\Csp; - -use Kanboard\Core\Plugin\Base; - -class Plugin extends Base -{ - public function initialize() - { - $this->setContentSecurityPolicy(array('script-src' => 'something')); - } -} -``` - -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. - -Ejemolo de plantilla de reescritura: - -```php -$this->template->setTemplateOverride('header', 'theme:layout/header'); -``` - -El primer argumento es el nombre de la plantilla original y el segundo argumento de la plantilla para usar como reemplazo. - -Puede seguir utilizando la plantilla original utilizando el prefijo "kanboard:" : - -```php -<?= $this->render('kanboard:header') ?> -``` diff --git a/doc/es_ES/plugin-registration.markdown b/doc/es_ES/plugin-registration.markdown deleted file mode 100644 index 5031427f..00000000 --- a/doc/es_ES/plugin-registration.markdown +++ /dev/null @@ -1,160 +0,0 @@ -Registracion de Plugin -====================== - -Estructura del directorio --------------------------- - -Los Plugins estan almacenados en el subdirectorio `plugins. Un ejemplo de estructura del directorio de un plugin: - -```bash -plugins -└── Budget <= Plugin name - ├── Asset <= Javascript/CSS files - ├── Controller - ├── LICENSE <= Plugin license - ├── Locale - │ ├── fr_FR - │ ├── it_IT - │ ├── ja_JP - │ └── zh_CN - ├── Model - ├── Plugin.php <= Plugin registration file - ├── README.md - ├── Schema <= Database migrations - ├── Template - └── Test <= Unit tests -``` - -Solamente el archivo de registración `Plugin.php` es requerido. Las otras carpetas son opcionales. - -La primera letra del nombre del plugin debe ser capitalizada. - -Archivo de registración del plugin ----------------------------------- - -Kanboard Kanboard escaneará el directorio `plugins` y cargara automaticamente todo en este directorio. el archivo `Plugin.php` se utiliza para cargar y registrar el plugin. - -Ejemplo del archivo `Plugin.php` (`plugins/Foobar/Plugin.php`): - -```php -<?php - -namespace Kanboard\Plugin\Foobar; - -use Kanboard\Core\Plugin\Base; - -class Plugin extends Base -{ - public function initialize() - { - $this->template->hook->attach('template:layout:head', 'theme:layout/head'); - } -} -``` - -Este archivo debera contener una clase `Plugin` se define en el namespace `Kanboard\Plugin\Yourplugin` y extiende `Kanboard\Core\Plugin\Base`. - -El único método requerido es `initialize()`. Este método se llama para cada petición cuando el plugin es cargado. - -Metodos del plugin --------------- - -Los métodos disponibles son `Kanboard\Core\Plugin\Base`: - -- `initialize()`: ejecuta cuando el plugin es cargafo -- `getClasses()`: Regresa todas las clases que se deben almacenar en el contenedor de inyección de dependencias -- `on($event, $callback)`: Escucha eventos internos. -- `getPluginName()`: devuelve el nombre del plugin. -- `getPluginAuthor()`: Devuelve el autor del plugin. -- `getPluginVersion()`: Devuelve la versíon del plugin. -- `getPluginDescription()`: Devuelve la descripcion del plugin. -- `getPluginHomepage()`: Devuelve la pagina inicial del plugin (link) -- `setContentSecurityPolicy(array $rules)`: Reescribe las reglas por default del HTTP CSP. -- `onStartup()`: Si está presente este método, se ejecuta automáticamente cuando el evento "app.bootstrap" se dispara. - -Su registro de plugin tambien puede heradar de la clase Kanboard\Core\Base, de esta manera se puede acceder a todas las clases y los métodos de Kanboard facilmente. - -En este ejemplo se obtendrá el usuario #123: - -```php -$this->user->getById(123); -``` - -Plugin de traducción -------------------- - -Este plugin se puede traducir en la misma forma que el resto de la aplicación . Debe cargar las traducciones a sí mismo cuando se crea la sesión : - -```php -public function onStartup() -{ - Translator::load($this->languageModel->getCurrentLanguage(), __DIR__.'/Locale'); -} -``` - -Las traducciones deben ser almacenadas en el archivo `plugins/Myplugin/Locale/xx_XX/translations.php` (remplazar xx_XX por el codigo del lenguaje fr_FR, en_US...). - -Las traducciones estan almacenadas en un diccionario, Si desea sobreescribir una cadena existente, sólo tiene que utilizar la misma clave en el archivo de traducción. - -Inyección de dependencias de contenedores ------------------------------- -Kanboard utiliza la Pimple , un simple inyección de contenedores de dependencia PHP . Sin embargo , Kanboard puede registrar cualquier clase en el contenedor fácilmente. - -Estas clases están disponibles en todas partes en la aplicación y se crea una única instancia . - -Aquí un ejemplo para registrar sus propios modelos en el contenedor: - -```php -public function getClasses() -{ - return array( - 'Plugin\Budget\Model' => array( - 'HourlyRateModel', - 'BudgetModel', - ) - ); -} -``` - -Ahora bien, si se utiliza una clase que se extiende desde `Core\Base`, tu puedes acceder directamente cualquier instancia de la clase: - -```php -$this->hourlyRateModel->remove(123); -$this->budgetModel->getDailyBudgetBreakdown(456); - -// It's the same thing as using the container: -$this->container['hourlyRateModel']->getAll(); -``` - -Llaves de los contenedores son únicos a través de la aplicación . Si reemplaza una clase existente , que va a cambiar el comportamiento por defecto . - -Agregar un metodo nuevo en la API ---------------------------------- - -Kanboard usa la libreria [JSON-RPC](https://github.com/fguillot/JsonRPC) para manejar las llamadas de la api. - -Para agregar un nuevo metodo tu puedes que puede hacer algo para llamar a tu plugin: - -```php -$this->api->getProcedureHandler()->withCallback('my_method', function() { - return 'foobar'; -}); -``` - -`$this->container['api']` or `$this->api` expose an instance of the object `JsonRPC\Server`. - -Leer la documentacion de la libreria para mas información. - -Agregar una nueva consola de comandos --------------------------------------- - -Kanboard usa la libreria [Symfony Console](http://symfony.com/doc/current/components/console/introduction.html) para manejar las lineas de comandos. - -Kanboard genera una instancia del objeto `Symfony\Component\Console\Application` via `$this->cli`. -Tu puedes agregar nuevos comandos desde tu plugin: - -```php -$this->cli->add(new MyCommand()); -``` - -Lea la documentación de la biblioteca para obtener más información. diff --git a/doc/es_ES/plugin-routes.markdown b/doc/es_ES/plugin-routes.markdown deleted file mode 100644 index 69357e3c..00000000 --- a/doc/es_ES/plugin-routes.markdown +++ /dev/null @@ -1,85 +0,0 @@ -Personalizar Rutas -================== - -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: - -```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. - -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: - -```php -$this->route->addRoute('/my/route/:my_variable', 'myController', 'myAction', 'myplugin'); -``` - -El prefijo colon `:`, define una variable. -Por ejemplo `:my_variable` declare el nombre de la nueva variable `my_variable`. - -Para extraer los valores de la variable puedes usar el metodo `getStringParam()` or `getIntegerParam()` desde la clase `Kanboard\Core\Http\Request`: - -Si tenemos la URL `/my/route/foobar`, el valor de `my_variable` es `foobar`: - -```php -$this->request->getStringParam('my_variable'); // Return foobar -``` - -Generate links based on the routing table ------------------------------------------ - -Desde las plantillas , se tiene que usar el helper `Kanboard\Helper\Url`. - -### Generar un link HTML - -```php -<?= $this->url->link('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?> -``` - -Generara este HTML: - -```html -<a href="/my/custom/route">My link</a> -``` - -### Generara solamente el atributo `href`: - -```php -<?= $this->url->href('My link', 'mycontroller', 'myaction', array('plugin' => 'myplugin')) ?> -``` - -HTML salida: - -```html -/my/custom/route -``` - -Salida HTML cuando la reescritura del URL no esta habilitada: - -```html -?controller=mycontroller&action=myaction&plugin=myplugin -``` - -### Generar enlace de 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')); -``` - -Generar: - -``` -?controller=mycontroller&action=myaction&plugin=myplugin -``` diff --git a/doc/es_ES/plugin-schema-migrations.markdown b/doc/es_ES/plugin-schema-migrations.markdown deleted file mode 100644 index b7165490..00000000 --- a/doc/es_ES/plugin-schema-migrations.markdown +++ /dev/null @@ -1,40 +0,0 @@ -Plugin Migración de esquemas -============================ - -Kanboard realiza migraciones de base de datos automaticamente para ti. -Las migraciones deben ser almacenadas en una carpeta **Schema** y el nombre de archivo debe ser el mismo que el controlador de base de datos: - -```bash -Schema -├── Mysql.php -├── Postgres.php -└── Sqlite.php -``` - -Cada archivo contiene todas las migraciones, aqui un ejemple para Sqlite: - -```php -<?php - -namespace Kanboard\Plugin\Something\Schema; - -const VERSION = 1; - -function version_1($pdo) -{ - $pdo->exec('CREATE TABLE IF NOT EXISTS something ( - "id" INTEGER PRIMARY KEY, - "project_id" INTEGER NOT NULL, - "something" TEXT, - FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE - )'); -} -``` - -- La constante `VERSION` es la ultima versión de tu esquema -- Cada funcion es una migración `version_1()`, `version_2()`, etc. -- Una instancia `PDO` es pasado como un primer argumneto -- Todo se ejecuta dentro de una transacción , si algo no funciona se realiza una operación de rollback y se muestra el error al usuario - -Kanboard siempre compara la version definida en tu esquema y la version almacenada en la base de datos. Si la versiones son diferentes, kanboard siempre ejecuta cada migración una por una hasta alcanzar la ultima version. - diff --git a/doc/es_ES/plugins.markdown b/doc/es_ES/plugins.markdown deleted file mode 100644 index 633d7126..00000000 --- a/doc/es_ES/plugins.markdown +++ /dev/null @@ -1,46 +0,0 @@ -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 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) -- [Agregar plugins para migrar esquemas](plugin-schema-migrations.markdown) -- [Personalizar rutas](plugin-routes.markdown) -- [Agregar helpers](plugin-helpers.markdown) -- [Agregar trasportes de email ](plugin-mail-transports.markdown) -- [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) -- [Personlizar grupos de proveedores](plugin-group-provider.markdown) -- [Links externos para proveedores](plugin-external-link.markdown) -- [Agregar avatar a proveedores](plugin-avatar-provider.markdown) -- [Cliente LDAP](plugin-ldap-client.markdown) - -Ejemplos de plugins -------------------- - -- [SMS Two-Factor Authentication](https://github.com/kanboard/plugin-sms-2fa) -- [Reverse-Proxy Authentication with LDAP support](https://github.com/kanboard/plugin-reverse-proxy-ldap) -- [Slack](https://github.com/kanboard/plugin-slack) -- [Hipchat](https://github.com/kanboard/plugin-hipchat) -- [Jabber](https://github.com/kanboard/plugin-jabber) -- [Sendgrid](https://github.com/kanboard/plugin-sendgrid) -- [Mailgun](https://github.com/kanboard/plugin-mailgun) -- [Postmark](https://github.com/kanboard/plugin-postmark) -- [Amazon S3](https://github.com/kanboard/plugin-s3) -- [Budget planning](https://github.com/kanboard/plugin-budget) -- [User timetables](https://github.com/kanboard/plugin-timetable) -- [Subtask Forecast](https://github.com/kanboard/plugin-subtask-forecast) -- [Automatic Action example](https://github.com/kanboard/plugin-example-automatic-action) -- [Theme plugin example](https://github.com/kanboard/plugin-example-theme) -- [CSS plugin example](https://github.com/kanboard/plugin-example-css) diff --git a/doc/es_ES/requirements.markdown b/doc/es_ES/requirements.markdown deleted file mode 100755 index ef56dd67..00000000 --- a/doc/es_ES/requirements.markdown +++ /dev/null @@ -1,104 +0,0 @@ -Requerimientos -=============== - -Lado del servidor --------------------- - -### Sistemas operativos compatibles - -| Sistemas operativos | -|--------------------------------------| -| Linux Ubuntu Xenial Xerus 16.04 LTS | -| Linux Centos 7.x | -| Linux Redhat 7.x | -| Linux Debian 9 | -| FreeBSD 10.x | -| Microsoft Windows 2016 | -| Microsoft Windows 2012 R2 | - -### Base de datos compatibles - -| Base de datos | -|--------------------| -| Sqlite >= 3.7 | -| Mysql >= 5.5 | -| MariaDB >= 10 | -| Postgresql >= 9.3 | - -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 | - -No usar Sqlite en montajes de NFS, use Sqlite solo cuando tengas un disco con Fast I/O - -### Servidores Web Compatibles - -| Servidores Web | -|--------------------| -| Apache HTTP Server | -| Nginx | -| Microsoft IIS | - -Kanboard esta pre configurado para trabajar con Apache (URL rewriting). - -### Versiones de PHP - -| Versión de PHP | -|----------------| -| PHP >= 5.6 | - -### PHP Extensiones Requeridas - -| PHP Extensiones Requeridas | Nota | -|----------------------------|-------------------------------| -| pdo_sqlite | Solo si usas Sqlite | -| pdo_mysql | Solo si usas Mysql/MariaDB | -| pdo_pgsql | Solo si usas Postgres | -| gd | | -| mbstring | | -| openssl | | -| json | | -| hash | | -| ctype | | -| session | | -| ldap | Solamente para autenticación LDAP | -| Zend OPcache | Recomendado | - -### Extensiones PHP opcionales - -| PHP Extensiones Requeridas | Nota | -|----------------------------|--------------------------------------------| -| zip | Usado para instalar plugins desde Kanboard | - -### 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. - - -Lado del cliente ----------------- - -### Browsers [Navegadores] - -Siempre usar el navegador mas moderno o la ultima versión posible: - -| Browser | -|---------------------------------------| -| Safari | -| Google Chrome | -| Mozilla Firefox | -| Microsoft Internet Explorer >= 11 | -| Microsoft Edge | - -### Dispositivos - -| 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. diff --git a/doc/es_ES/reverse-proxy-authentication.markdown b/doc/es_ES/reverse-proxy-authentication.markdown deleted file mode 100755 index 757301e5..00000000 --- a/doc/es_ES/reverse-proxy-authentication.markdown +++ /dev/null @@ -1,64 +0,0 @@ -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. - -La autenticación se realiza mediante otro sistema, Kanboard no conoce su contraseña y supongamos que ya está autenticado. - -Requerimentos ------------- - -- Un proxy inverso bien configurado - -o - -- Apache Auth en el mismo servidor - - -¿Como funciona esto? -------------------- - -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 - -Instrucciones de instalación ----------------------------- - -### 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. - -### 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 -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. -// 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 -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 Apache es un proxy inverso a otro Apache corriendo Kanboard, la cabecera `REMOTE_USER` no se establece (mismo comportamiento con IIS y Nginx) - -- Si tu tienes un autentico reverse proxy, the [HTTP ICAP draft](http://tools.ietf.org/html/draft-stecher-icap-subid-00#section-3.4) proposes the header to be `X-Authenticated-User`. This de facto standard has been adopted by a number of tools. diff --git a/doc/es_ES/rss.markdown b/doc/es_ES/rss.markdown deleted file mode 100755 index ac448391..00000000 --- a/doc/es_ES/rss.markdown +++ /dev/null @@ -1,23 +0,0 @@ -Suscripciones RSS/Atom -====================== - -Kanboard Soporta feeds RSS para proyectos y usuarios. - -- Los feeds del proyecto contiene solamente las actividades del proyecto. -- Los feeds del usuario contiene el flujo de actividad de todos los proyectos que el usuario es un miembro - -Aquellas suscripciones estan solamente activadas cuando el acceso publico esta habilitado en el perfil del usuario o en la configuraci�n del proyecto. - -Habilitar/Deshabilitar Feeds RSS de proyectos ---------------------------------------------- - -Ir a **Configuraci�n de proyecto > Acceso publico**. - -![Disable public access](../screenshots/project-disable-sharing.png) - -Habilitar/Deshabilitar Feeds RSS de usuarios --------------------------------------------- - -Ir a **Perfil de usuario > Acceso publico**. - -El enlace RSS est� protegido por un token aleatorio , s�lo las personas que conocen la URL pueden tener acceso al feed.
\ No newline at end of file diff --git a/doc/es_ES/screenshots.markdown b/doc/es_ES/screenshots.markdown deleted file mode 100755 index 2ced69a0..00000000 --- a/doc/es_ES/screenshots.markdown +++ /dev/null @@ -1,25 +0,0 @@ -Agregar screenshots -================== - -Tu puedes copiar y pegar imagenes directamente en Kanboard y salvarlo al mismo tiempo. -Estas im�genes se cargan como archivos adjuntos a la tarea . - -Esto es especialmente �til para tomar capturas de pantalla para describir un problema , por ejemplo. - -Puede a�adir im�genes directamente desde el tablero haciendo clic en el men� desplegable o en la p�gina de vista de tareas . - -![Drop-down screenshot menu](../screenshots/dropdown-screenshot.png) - -Para a�adir una nueva imagen , coloque su captura de pantalla y pegar CTRL+V or Command+V: - -![Screenshot page](../screenshots/task-screenshot.png) - -En Mac OS X, puede utilizar los atajos para tomar screenshots: - -- Command-Control-Shift-3: Tome una screenshot de la pantalla , y guardarlo en el portapapeles -- Command-Control-Shift-4, a continuaci�n, seleccione un �rea: Tome una captura de pantalla de la zona y la guarda en el portapapeles -- Command-Control-Shift-4, entonces el espacio , a continuaci�n, haga clic en una ventana : Tome una captura de pantalla de una ventana y guardarlo en el portapapeles - -Tambi�n hay varias aplicaciones de terceros que pueden ser utilizados para tomar capturas de pantalla con anotaciones y formas. - -** Nota: Esta funci�n no funciona con todos los navegadores ** No funciona con Safari , debido a este error . : https://bugs.webkit.org/show_bug.cgi?id=49141 diff --git a/doc/es_ES/subtasks.markdown b/doc/es_ES/subtasks.markdown deleted file mode 100644 index 6507e6e5..00000000 --- a/doc/es_ES/subtasks.markdown +++ /dev/null @@ -1,46 +0,0 @@ -Subtareas -======== - -Las subtareas son utiles por que dividen el trabajo de las tareas. - -Cada subtareas: - -- Se puede asignar a un miembro del proyecto -- Tiene 3 diferentes estado: **Todo**, **En progreso**, **Realizado** -- Tienen rastreo de información: **tiempo gastado** y **tiempo estimado** -- Ordenar por posición - -Crear subtareas ------------------ - -Desde la vista de la tarea en la barra lateral izquierda haga clic en **Agregar una subtarea**: - -![Añadir una subtarea](../screenshots/add-subtask.png) - -Tambien puede agregar una subtarea rápidamente introduciendo solamente el titulo: - -![Añadir una subtarea desde la vista de la subtarea](../screenshots/add-subtask-shortcut.png) - -Cambiar estado de subtarea -------------------------- - -Al hacer clic en el título de la subtarea, se hace el cambio de estado : - -![Subtask en progreso](../screenshots/subtask-status-inprogress.png) - -El icono antes de que el titulo se actualice el estatus. - -![Subtarea realizada](../screenshots/subtask-status-done.png) - -Nota: cuando la tarea se cierra todas las subtareas se cambian al estado **Hecho**. - -Temporizador de subtarea -------------------------- - -- Cada vez que una subtarea está en marcha, el temporizador se inicia también -El temporizador puede ser iniciado y detenido en cualquier momento. -- El contador registra el tiempo empleado en la subtarea automáticamente. -También puede cambiar manualmente el valor del campo, al editar una subtarea. -- El cálculo de tiempo se redondea al cuarto más cercano.Esta información se registra en una tabla separada. -- El tiempo de tarea y tiempo de estimados es de actualización automáticamente según la suma de todas las subtareas. - diff --git a/doc/es_ES/suse-installation.markdown b/doc/es_ES/suse-installation.markdown deleted file mode 100644 index 7fb318c9..00000000 --- a/doc/es_ES/suse-installation.markdown +++ /dev/null @@ -1,17 +0,0 @@ -Instalacion en OpenSuse -======================== - -OpenSuse Leap 42.1 ------------------- - -```bash---terminal -sudo zypper install php5 php5-sqlite php5-gd php5-json php5-mcrypt php5-mbstring php5-openssl -cd /srv/www/htdocs - -# Download the latest release from https://github.com/kanboard/kanboard/releases -sudo wget https://github.com/kanboard/kanboard/archive/v<VERSION>.zip - -sudo unzip kanboard-<version>.zip -sudo chown -R wwwrun /srv/www/htdocs/kanboard-<version>/data -sudo rm kanboard-<version>.zip - diff --git a/doc/es_ES/swimlanes.markdown b/doc/es_ES/swimlanes.markdown deleted file mode 100755 index 2e608f95..00000000 --- a/doc/es_ES/swimlanes.markdown +++ /dev/null @@ -1,34 +0,0 @@ -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. - -Tablero con swimlanes ----------------------- - -![Swimlanes](../screenshots/swimlanes.png) - -- 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 ------------------------ - -- Todos los proyectos tienen un swimlane predeterminado. -- 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**. - - -![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. - -- 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. - - diff --git a/doc/es_ES/tags.markdown b/doc/es_ES/tags.markdown deleted file mode 100755 index 621c01ff..00000000 --- a/doc/es_ES/tags.markdown +++ /dev/null @@ -1,28 +0,0 @@ -Tags ** Etiqueta ** -==================== - -Con kanboard, tu puedes asociar una o mas tags a una tarea. -Tu puedes definir etiquetas globalmente para todos los proyectos o solo para unos proyectos en especifico - -![Tags en el tablero](../screenshots/tags-board.png) - -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. - -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. - -Para definir tags globalmente para todos los proyectos, ve a la configuración de la aplicación : - -![Global Tags](../screenshots/tags-global.png) - -Para buscar tareas basadas en etiquetas, solo use el atributo "tag": - -![Search Tags](../screenshots/tags-search.png) diff --git a/doc/es_ES/translations.markdown b/doc/es_ES/translations.markdown deleted file mode 100644 index 66fd2a4c..00000000 --- a/doc/es_ES/translations.markdown +++ /dev/null @@ -1,68 +0,0 @@ -Translations -============ - -How to translate Kanboard to a new language? --------------------------------------------- - -- Translations are stored inside the directory `app/Locale` -- There is a subdirectory for each language, for example in French we have `fr_FR`, Italian `it_IT` etc. -- A translation is a PHP file that returns an Array with a key-value pairs -- The key is the original text in English and the value is the translation of the corresponding language -- **French translations are always up to date** -- Always use the last version (branch master) - -### Create a new translation: - -1. Make a new directory: `app/Locale/xx_XX` for example `app/Locale/fr_CA` for French Canadian -2. Create a new file for the translation: `app/Locale/xx_XX/translations.php` -3. Use the content of the French locales and replace the values -4. Update the file `app/Model/Language.php` -5. Check with your local installation of Kanboard if everything is OK -6. Send a [pull-request with Github](https://help.github.com/articles/using-pull-requests/) - -How to update an existing translation? --------------------------------------- - -1. Open the translation file `app/Locale/xx_XX/translations.php` -2. Missing translations are commented with `//` and the values are empty, just fill blank and remove the comment -3. Check with your local installation of Kanboard and send a [pull-request](https://help.github.com/articles/using-pull-requests/) - -How to add new translated text in the application? --------------------------------------------------- - -Translations are displayed with the following functions in the source code: - -- `t()`: display text with HTML escaping -- `e()`: display text without HTML escaping - -Always use the english version in the source code. - -Text strings use the function `sprintf()` to replace elements: - -- `%s` is used to replace a string -- `%d` is used to replace an integer - -All formats are available in the [PHP documentation](http://php.net/sprintf). - -How to find missing translations in the applications? ------------------------------------------------------ - -From a terminal, run the following command: - -```bash -./cli locale:compare -``` - -All missing and unused translations are displayed on the screen. -Put that in the French locale and sync other locales (see below). - -How to synchronize translation files? -------------------------------------- - -From a Unix shell run this command: - -```bash -./cli locale:sync -``` - -The French translation is used a reference to other locales. diff --git a/doc/es_ES/update.markdown b/doc/es_ES/update.markdown deleted file mode 100755 index ae5d7a5e..00000000 --- a/doc/es_ES/update.markdown +++ /dev/null @@ -1,33 +0,0 @@ -Actualizar Kanboard a una nueva versión -======================================= - -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. - -Cosas importantes que hacer antes de actualizar --------------------------------------- - -- **Siempre crear un backup de tus datos antes de actualizarlo** -- Verificar que tu backup es valido -- 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 ) ---------------------------------- - -1. Descomprimir el nuevo archivo -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 -6. Testearlo -7. Eliminar tu viejo directorio del Kanboard - -Desde el repositorio (development version) ------------------------------------------ - -1. `git pull` -2. 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. diff --git a/doc/es_ES/user-mentions.markdown b/doc/es_ES/user-mentions.markdown deleted file mode 100644 index b3f2f169..00000000 --- a/doc/es_ES/user-mentions.markdown +++ /dev/null @@ -1,18 +0,0 @@ -Menciones de usuarios -===================== - -Kanboard ofrece la posibilidad de enviar notificaciones cuando alguien es mencionado. - -Si usted necesita obtener la atención de alguien en un comentario o una tarea, use el simbolo @ seguido por el usuario. -Kanboard automaticamente desplegara una lista de usuarios: - -![User Mention](../screenshots/mention-autocomplete.png) - -- Por el momento, solo las descripciones de la tarea y la area de comentarios la función esta activada. -- El usuario mencionado sólo funciona durante las tareas y comentarios creados -- Para notificar, necesita mencionar a los usuarios con su membresia de proyecto -- Cuando alguien se mencionó, este usuario recibirá una notificación. -- El @username mencionado está relacionado con el perfil de usuario. - -La notificacion es enviada de acuerdo a la configuracion del usuario, se le puede enviar un email, una notificaicon via web o mensajes en Slack/Hipchat/Jabber si y cuando se tenga instalados dichos plugins. - |