Merge manually #2694

This commit is contained in:
Frederic Guillot 2016-09-24 16:13:55 -04:00
parent 15dbf5c7fd
commit 88549330fa
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
11 changed files with 1365 additions and 0 deletions

View File

@ -0,0 +1,172 @@
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
}
```

View File

@ -0,0 +1,229 @@
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
}
```

View File

@ -0,0 +1,174 @@
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"
}
]
}
```

View File

@ -0,0 +1,187 @@
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
}
```

View File

@ -0,0 +1,285 @@
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
}
```

View File

@ -0,0 +1,40 @@
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

View File

@ -0,0 +1,31 @@
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.

38
doc/es_ES/heroku.markdown Normal file
View File

@ -0,0 +1,38 @@
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).

111
doc/es_ES/requirements.markdown Executable file
View File

@ -0,0 +1,111 @@
Requerimientos
===============
Lado del servidor
--------------------
### Sistemas operativos compatibles
| Sistemas operativos |
|--------------------------------------|
| Linux Ubuntu Xenial Xerus 16.04 LTS |
| Linux Ubuntu Trusty 14.04 LTS |
| Linux Centos 6.x |
| Linux Centos 7.x |
| Linux Redhat 6.x |
| Linux Redhat 7.x |
| Linux Debian 8 |
| FreeBSD 10.x |
| Microsoft Windows 2012 R2 |
| Microsoft Windows 2008 |
### Base de datos compatibles
| Base de datos |
|--------------------|
| Sqlite 3.x |
| 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.3.9 |
| PHP 5.4 |
| PHP 5.5 |
| PHP 5.6 |
| PHP 7.x |
### 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.

View File

@ -0,0 +1,64 @@
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.

34
doc/es_ES/swimlanes.markdown Executable file
View File

@ -0,0 +1,34 @@
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.