Convert Spanish documentation to UTF-8
This commit is contained in:
parent
c5caff7ef7
commit
a172e3ad8d
|
|
@ -87,7 +87,7 @@ class DocumentationController extends BaseController
|
|||
private function getPageFilename($page)
|
||||
{
|
||||
return $this->getFileLocation($page . '.markdown') ?:
|
||||
implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', 'index.markdown'));
|
||||
implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', 'en_US', 'index.markdown'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -122,7 +122,7 @@ class DocumentationController extends BaseController
|
|||
{
|
||||
$files = array(
|
||||
implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', $this->languageModel->getCurrentLanguage(), $filename)),
|
||||
implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', $filename)),
|
||||
implode(DIRECTORY_SEPARATOR, array(ROOT_DIR, 'doc', 'en_US', $filename)),
|
||||
);
|
||||
|
||||
foreach ($files as $filename) {
|
||||
|
|
|
|||
|
|
@ -1,221 +1,221 @@
|
|||
API de Procedimientos de tarea de enlace externo
|
||||
=================================
|
||||
|
||||
## getExternalTaskLinkTypes
|
||||
|
||||
- Propósito: **Obtener todos los proveedores registrados de enlaces externos**
|
||||
- Parámetros: **ninguno**
|
||||
- Resultado en caso de éxito: **dict**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getExternalTaskLinkTypes","id":477370568}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": {
|
||||
"auto": "Auto",
|
||||
"attachment": "Attachment",
|
||||
"file": "Local File",
|
||||
"weblink": "Web Link"
|
||||
},
|
||||
"id": 477370568
|
||||
}
|
||||
```
|
||||
|
||||
## getExternalTaskLinkProviderDependencies
|
||||
|
||||
- Propósito: **Obtener las dependencias disponibles para un determinado proveedor**
|
||||
- Parametros:
|
||||
- **providerName** (string, required)
|
||||
- Resultado en caso de éxito: **dict**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getExternalTaskLinkProviderDependencies","id":124790226,"params":["weblink"]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": {
|
||||
"related": "Related"
|
||||
},
|
||||
"id": 124790226
|
||||
}
|
||||
```
|
||||
|
||||
## createExternalTaskLink
|
||||
|
||||
- Propósito: **Crear una nueva tarea de enlace externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **url** (string, required)
|
||||
- **dependency** (string, required)
|
||||
- **type** (string, optional)
|
||||
- **title** (string, optional)
|
||||
- Resultado en caso de éxito: **link_id**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"createExternalTaskLink","id":924217495,"params":[9,"http:\/\/localhost\/document.pdf","related","attachment"]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": 1,
|
||||
"id": 924217495
|
||||
}
|
||||
```
|
||||
|
||||
## updateExternalTaskLink
|
||||
|
||||
- Propósito: **Actualizar tarea de enlace externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **link_id** (integer, required)
|
||||
- **title** (string, required)
|
||||
- **url** (string, required)
|
||||
- **dependency** (string, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc":"2.0",
|
||||
"method":"updateExternalTaskLink",
|
||||
"id":1123562620,
|
||||
"params": {
|
||||
"task_id":9,
|
||||
"link_id":1,
|
||||
"title":"New title"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": true,
|
||||
"id": 1123562620
|
||||
}
|
||||
```
|
||||
|
||||
## getExternalTaskLinkById
|
||||
|
||||
- Propósito: **Obtener un enlace de tarea externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **link_id** (integer, required)
|
||||
- Resultado en caso de éxito: **dict**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getExternalTaskLinkById","id":2107066744,"params":[9,1]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": {
|
||||
"id": "1",
|
||||
"link_type": "attachment",
|
||||
"dependency": "related",
|
||||
"title": "document.pdf",
|
||||
"url": "http:\/\/localhost\/document.pdf",
|
||||
"date_creation": "1466965256",
|
||||
"date_modification": "1466965256",
|
||||
"task_id": "9",
|
||||
"creator_id": "0"
|
||||
},
|
||||
"id": 2107066744
|
||||
}
|
||||
```
|
||||
|
||||
## getAllExternalTaskLinks
|
||||
|
||||
- Propósito: **Obtener todos los enlaces externos conectados a una tarea**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- Resultado en caso de éxito: **list of external links**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getAllExternalTaskLinks","id":2069307223,"params":[9]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": [
|
||||
{
|
||||
"id": "1",
|
||||
"link_type": "attachment",
|
||||
"dependency": "related",
|
||||
"title": "New title",
|
||||
"url": "http:\/\/localhost\/document.pdf",
|
||||
"date_creation": "1466965256",
|
||||
"date_modification": "1466965256",
|
||||
"task_id": "9",
|
||||
"creator_id": "0",
|
||||
"creator_name": null,
|
||||
"creator_username": null,
|
||||
"dependency_label": "Related",
|
||||
"type": "Attachment"
|
||||
}
|
||||
],
|
||||
"id": 2069307223
|
||||
}
|
||||
```
|
||||
|
||||
## removeExternalTaskLink
|
||||
|
||||
- Propósito: **Remover una tarea de enlace externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **link_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"removeExternalTaskLink","id":552055660,"params":[9,1]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": true,
|
||||
"id": 552055660
|
||||
}
|
||||
```
|
||||
API de Procedimientos de tarea de enlace externo
|
||||
=================================
|
||||
|
||||
## getExternalTaskLinkTypes
|
||||
|
||||
- Propósito: **Obtener todos los proveedores registrados de enlaces externos**
|
||||
- Parámetros: **ninguno**
|
||||
- Resultado en caso de éxito: **dict**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getExternalTaskLinkTypes","id":477370568}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": {
|
||||
"auto": "Auto",
|
||||
"attachment": "Attachment",
|
||||
"file": "Local File",
|
||||
"weblink": "Web Link"
|
||||
},
|
||||
"id": 477370568
|
||||
}
|
||||
```
|
||||
|
||||
## getExternalTaskLinkProviderDependencies
|
||||
|
||||
- Propósito: **Obtener las dependencias disponibles para un determinado proveedor**
|
||||
- Parametros:
|
||||
- **providerName** (string, required)
|
||||
- Resultado en caso de éxito: **dict**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getExternalTaskLinkProviderDependencies","id":124790226,"params":["weblink"]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": {
|
||||
"related": "Related"
|
||||
},
|
||||
"id": 124790226
|
||||
}
|
||||
```
|
||||
|
||||
## createExternalTaskLink
|
||||
|
||||
- Propósito: **Crear una nueva tarea de enlace externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **url** (string, required)
|
||||
- **dependency** (string, required)
|
||||
- **type** (string, optional)
|
||||
- **title** (string, optional)
|
||||
- Resultado en caso de éxito: **link_id**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"createExternalTaskLink","id":924217495,"params":[9,"http:\/\/localhost\/document.pdf","related","attachment"]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": 1,
|
||||
"id": 924217495
|
||||
}
|
||||
```
|
||||
|
||||
## updateExternalTaskLink
|
||||
|
||||
- Propósito: **Actualizar tarea de enlace externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **link_id** (integer, required)
|
||||
- **title** (string, required)
|
||||
- **url** (string, required)
|
||||
- **dependency** (string, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc":"2.0",
|
||||
"method":"updateExternalTaskLink",
|
||||
"id":1123562620,
|
||||
"params": {
|
||||
"task_id":9,
|
||||
"link_id":1,
|
||||
"title":"New title"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": true,
|
||||
"id": 1123562620
|
||||
}
|
||||
```
|
||||
|
||||
## getExternalTaskLinkById
|
||||
|
||||
- Propósito: **Obtener un enlace de tarea externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **link_id** (integer, required)
|
||||
- Resultado en caso de éxito: **dict**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getExternalTaskLinkById","id":2107066744,"params":[9,1]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": {
|
||||
"id": "1",
|
||||
"link_type": "attachment",
|
||||
"dependency": "related",
|
||||
"title": "document.pdf",
|
||||
"url": "http:\/\/localhost\/document.pdf",
|
||||
"date_creation": "1466965256",
|
||||
"date_modification": "1466965256",
|
||||
"task_id": "9",
|
||||
"creator_id": "0"
|
||||
},
|
||||
"id": 2107066744
|
||||
}
|
||||
```
|
||||
|
||||
## getAllExternalTaskLinks
|
||||
|
||||
- Propósito: **Obtener todos los enlaces externos conectados a una tarea**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- Resultado en caso de éxito: **list of external links**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"getAllExternalTaskLinks","id":2069307223,"params":[9]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": [
|
||||
{
|
||||
"id": "1",
|
||||
"link_type": "attachment",
|
||||
"dependency": "related",
|
||||
"title": "New title",
|
||||
"url": "http:\/\/localhost\/document.pdf",
|
||||
"date_creation": "1466965256",
|
||||
"date_modification": "1466965256",
|
||||
"task_id": "9",
|
||||
"creator_id": "0",
|
||||
"creator_name": null,
|
||||
"creator_username": null,
|
||||
"dependency_label": "Related",
|
||||
"type": "Attachment"
|
||||
}
|
||||
],
|
||||
"id": 2069307223
|
||||
}
|
||||
```
|
||||
|
||||
## removeExternalTaskLink
|
||||
|
||||
- Propósito: **Remover una tarea de enlace externo**
|
||||
- Parametros:
|
||||
- **task_id** (integer, required)
|
||||
- **link_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{"jsonrpc":"2.0","method":"removeExternalTaskLink","id":552055660,"params":[9,1]}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"result": true,
|
||||
"id": 552055660
|
||||
}
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,188 +1,188 @@
|
|||
Group Member API Procedures
|
||||
===========================
|
||||
|
||||
## getMemberGroups
|
||||
|
||||
- Propósito: **Obtener todos los grupos de un usuario determinado**
|
||||
- Parámetros:
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **List of groups**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMemberGroups",
|
||||
"id": 1987176726,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1987176726,
|
||||
"result": [
|
||||
{
|
||||
"id": "1",
|
||||
"name": "My Group A"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## getGroupMembers
|
||||
|
||||
- Propósito: **Obtener todos los miembros de un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- Resultado en caso de éxito: **List of users**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getGroupMembers",
|
||||
"id": 1987176726,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1987176726,
|
||||
"result": [
|
||||
{
|
||||
"group_id": "1",
|
||||
"user_id": "1",
|
||||
"id": "1",
|
||||
"username": "admin",
|
||||
"is_ldap_user": "0",
|
||||
"name": null,
|
||||
"email": null,
|
||||
"notifications_enabled": "0",
|
||||
"timezone": null,
|
||||
"language": null,
|
||||
"disable_login_form": "0",
|
||||
"notifications_filter": "4",
|
||||
"nb_failed_login": "0",
|
||||
"lock_expiration_date": "0",
|
||||
"is_project_admin": "0",
|
||||
"gitlab_id": null,
|
||||
"role": "app-admin"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## addGroupMember
|
||||
|
||||
- Propósito: **Agregar un usuario a un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "addGroupMember",
|
||||
"id": 1589058273,
|
||||
"params": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1589058273,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
|
||||
## removeGroupMember
|
||||
|
||||
- Propósito: **Quitar un usuario de un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeGroupMember",
|
||||
"id": 1730416406,
|
||||
"params": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1730416406,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
|
||||
## isGroupMember
|
||||
|
||||
- Propósito: **Comprobar si un usuario es miembro de un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "isGroupMember",
|
||||
"id": 1052800865,
|
||||
"params": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1052800865,
|
||||
"result": false
|
||||
}
|
||||
```
|
||||
Group Member API Procedures
|
||||
===========================
|
||||
|
||||
## getMemberGroups
|
||||
|
||||
- Propósito: **Obtener todos los grupos de un usuario determinado**
|
||||
- Parámetros:
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **List of groups**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getMemberGroups",
|
||||
"id": 1987176726,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1987176726,
|
||||
"result": [
|
||||
{
|
||||
"id": "1",
|
||||
"name": "My Group A"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## getGroupMembers
|
||||
|
||||
- Propósito: **Obtener todos los miembros de un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- Resultado en caso de éxito: **List of users**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "getGroupMembers",
|
||||
"id": 1987176726,
|
||||
"params": [
|
||||
"1"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1987176726,
|
||||
"result": [
|
||||
{
|
||||
"group_id": "1",
|
||||
"user_id": "1",
|
||||
"id": "1",
|
||||
"username": "admin",
|
||||
"is_ldap_user": "0",
|
||||
"name": null,
|
||||
"email": null,
|
||||
"notifications_enabled": "0",
|
||||
"timezone": null,
|
||||
"language": null,
|
||||
"disable_login_form": "0",
|
||||
"notifications_filter": "4",
|
||||
"nb_failed_login": "0",
|
||||
"lock_expiration_date": "0",
|
||||
"is_project_admin": "0",
|
||||
"gitlab_id": null,
|
||||
"role": "app-admin"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## addGroupMember
|
||||
|
||||
- Propósito: **Agregar un usuario a un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "addGroupMember",
|
||||
"id": 1589058273,
|
||||
"params": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1589058273,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
|
||||
## removeGroupMember
|
||||
|
||||
- Propósito: **Quitar un usuario de un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "removeGroupMember",
|
||||
"id": 1730416406,
|
||||
"params": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1730416406,
|
||||
"result": true
|
||||
}
|
||||
```
|
||||
|
||||
## isGroupMember
|
||||
|
||||
- Propósito: **Comprobar si un usuario es miembro de un grupo**
|
||||
- Parámetros:
|
||||
- **group_id** (integer, required)
|
||||
- **user_id** (integer, required)
|
||||
- Resultado en caso de éxito: **true**
|
||||
- Resultado en caso de falla: **false**
|
||||
|
||||
Ejemplo de solicitud:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"method": "isGroupMember",
|
||||
"id": 1052800865,
|
||||
"params": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Ejemplo de respuesta:
|
||||
|
||||
```json
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1052800865,
|
||||
"result": false
|
||||
}
|
||||
```
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@ Modo colapsar y expandir
|
|||
===========================
|
||||
|
||||
Las tares en el tablero pueden visualizarse en modo colapsado o en modo expandido.
|
||||
El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"s"** o usar el menu drop-down que esta parte superior izquierda.
|
||||
El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"s"** o usar el menu drop-down que esta parte superior izquierda.
|
||||
|
||||
Modo de colapsado
|
||||
--------------
|
||||
|
||||

|
||||
|
||||
- Si la tarea es asignada a alguien, las iniciales de la persona se muestran junto al número de tareas
|
||||
- Si el titulo de la tarea es demasiado largo, tu puedes poner el puntero del ratón sobre la tarea de mostrar una información sobre herramientas con el título completo
|
||||
- Si la tarea es asignada a alguien, las iniciales de la persona se muestran junto al número de tareas
|
||||
- Si el titulo de la tarea es demasiado largo, tu puedes poner el puntero del ratón sobre la tarea de mostrar una información sobre herramientas con el título completo
|
||||
|
||||
Modo expansivo
|
||||
--------------
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@ Horizontal scrolling y modo compacto
|
|||
=====================================
|
||||
|
||||
Cuando el tablero no puede caber en su pantalla , una barra de scroll horizontal
|
||||
When the board cannot fit on your screen, a horizontal scroll bar aparecerá en la parte inferior.
|
||||
When the board cannot fit on your screen, a horizontal scroll bar aparecerá en la parte inferior.
|
||||
|
||||
Sin embargo, es posible cambiar a una vista de modo compacto para visualizar todas las columnas en su pantalla.
|
||||
|
||||

|
||||
|
||||
Cambiar entre scrolling y vista compacta
|
||||
El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"c"** o usar el menu drop-down que esta parte superior izquierda.
|
||||
El cambio entre el desplazamiento horizontal y la vista compacta se puede hacer con la combinación de teclas **"c"** o usar el menu drop-down que esta parte superior izquierda.
|
||||
|
|
|
|||
|
|
@ -3,25 +3,25 @@ Como correr Kanboard en Cloudron
|
|||
|
||||
[Cloudron](https://cloudron.io) es un smartserver privado con el cual tu puedes instalar web
|
||||
apps como Kanboard. Puedes instalar Kanboard en un dominio personalizado y cada
|
||||
instalación está respaldada y mantenida día a día con la liberación automática de Kanboard
|
||||
instalación está respaldada y mantenida día a día con la liberación automática de Kanboard
|
||||
|
||||
[](https://cloudron.io/button.html?app=net.kanboard.cloudronapp)
|
||||
|
||||
Cuentas
|
||||
--------
|
||||
|
||||
La app se integra perfectamente con Cloudron en la gestión ( a través de LDAP ) del usuario . Solamente
|
||||
los usuarios de Cloudron pueden acceder a Kanboard . Además , cualquier administrador Cloudron
|
||||
se convierte en un administrador Kanboard automáticamente.
|
||||
La app se integra perfectamente con Cloudron en la gestión ( a través de LDAP ) del usuario . Solamente
|
||||
los usuarios de Cloudron pueden acceder a Kanboard . Además , cualquier administrador Cloudron
|
||||
se convierte en un administrador Kanboard automáticamente.
|
||||
|
||||
Instalación de plugins
|
||||
Instalación de plugins
|
||||
-----------------------
|
||||
|
||||
Los plugins pueden ser instalados y configurados por [Cloudron CLI](https://cloudron.io/references/cli.html)
|
||||
herramientas. Observar [descripción de la app](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) for
|
||||
mas información.
|
||||
herramientas. Observar [descripción de la app](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp) for
|
||||
mas información.
|
||||
|
||||
Código fuente de la aplicación
|
||||
Código fuente de la aplicación
|
||||
-------------------------------
|
||||
El código fuente de la app Cloudron esta [aqui](https://github.com/cloudron-io/kanboard-app).
|
||||
El código fuente de la app Cloudron esta [aqui](https://github.com/cloudron-io/kanboard-app).
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
Estandares de codificación
|
||||
Estandares de codificación
|
||||
================
|
||||
|
||||
Código PHP
|
||||
Código PHP
|
||||
----------
|
||||
|
||||
- Indentacion: 4 espacios
|
||||
|
|
@ -11,13 +11,13 @@ C
|
|||
- Siempre escribe comentarios PHPdoc para metodos y propiedades de la clase
|
||||
- Codificar con estilo : [PSR-1](http://www.php-fig.org/psr/psr-1/) y [PSR-2](http://www.php-fig.org/psr/psr-2/)
|
||||
|
||||
Código JavaScript
|
||||
Código JavaScript
|
||||
---------------
|
||||
|
||||
- Indentacion: 4 espacios
|
||||
- Linea de retorno: Unix => `\n`
|
||||
|
||||
Código CSS
|
||||
Código CSS
|
||||
--------
|
||||
|
||||
- Indentacion: 4 espacios
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
Archivo de configuración
|
||||
Archivo de configuración
|
||||
========================
|
||||
|
||||
Puede personalizar la configuración predeterminada de Kanboard mediante la adición de un archivo ` config.php` en la raíz del proyecto o en la carpeta ` data` .
|
||||
También puede cambiar el nombre del archivo `config.default.php` a `config.php` y cambiar los valores deseados .
|
||||
Puede personalizar la configuración predeterminada de Kanboard mediante la adición de un archivo ` config.php` en la raíz del proyecto o en la carpeta ` data` .
|
||||
También puede cambiar el nombre del archivo `config.default.php` a `config.php` y cambiar los valores deseados .
|
||||
|
||||
Habilitar/Deshabilitar el modo debug
|
||||
--------------------------------------
|
||||
|
|
@ -12,8 +12,8 @@ define('DEBUG', true);
|
|||
define('LOG_DRIVER', 'file'); // Otros drivers son: syslog, stdout, stderr or file
|
||||
```
|
||||
|
||||
El controlador de registro se debe definir si se habilita el modo de depuración .
|
||||
El modo de depuración registra todas las consultas SQL y el tiempo necesario para generar páginas .
|
||||
El controlador de registro se debe definir si se habilita el modo de depuración .
|
||||
El modo de depuración registra todas las consultas SQL y el tiempo necesario para generar páginas .
|
||||
|
||||
Plugins
|
||||
-------
|
||||
|
|
@ -24,7 +24,7 @@ Folder de plugins:
|
|||
define('PLUGINS_DIR', 'data/plugins');
|
||||
```
|
||||
|
||||
Enable/disable plugin de instalación para la interface de usuario:
|
||||
Enable/disable plugin de instalación para la interface de usuario:
|
||||
|
||||
```php
|
||||
define('PLUGIN_INSTALLER', true); // Default es true
|
||||
|
|
@ -44,7 +44,7 @@ Enable/disable url rewrite
|
|||
define('ENABLE_URL_REWRITE', false);
|
||||
```
|
||||
|
||||
Configuración de Email
|
||||
Configuración de Email
|
||||
-------------------
|
||||
|
||||
```php
|
||||
|
|
@ -54,7 +54,7 @@ define('MAIL_FROM', 'notifications@kanboard.local');
|
|||
// Mail transport para uso: "smtp", "sendmail" or "mail" (Funcion PHP mail)
|
||||
define('MAIL_TRANSPORT', 'mail');
|
||||
|
||||
// Configuración SMTP para usarse para elegir el trasporte de "smtp"
|
||||
// Configuración SMTP para usarse para elegir el trasporte de "smtp"
|
||||
define('MAIL_SMTP_HOSTNAME', '');
|
||||
define('MAIL_SMTP_PORT', 25);
|
||||
define('MAIL_SMTP_USERNAME', '');
|
||||
|
|
@ -65,7 +65,7 @@ define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls"
|
|||
define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
|
||||
```
|
||||
|
||||
Configuración de base de datos
|
||||
Configuración de base de datos
|
||||
------------------------------
|
||||
|
||||
```php
|
||||
|
|
@ -101,7 +101,7 @@ Configuraciones LDAP
|
|||
----------------------
|
||||
|
||||
```php
|
||||
// Habilitar la autenticación por LDAP (false por default)
|
||||
// Habilitar la autenticación por LDAP (false por default)
|
||||
define('LDAP_AUTH', false);
|
||||
|
||||
// LDAP server hostname
|
||||
|
|
@ -116,7 +116,7 @@ define('LDAP_SSL_VERIFY', true);
|
|||
// Enable LDAP START_TLS
|
||||
define('LDAP_START_TLS', false);
|
||||
|
||||
// Por defecto Kanboard tiene el nombre de usuario LDAP en minúscula para evitar usuarios duplicados ( la base de datos entre mayúsculas y minúsculas )
|
||||
// Por defecto Kanboard tiene el nombre de usuario LDAP en minúscula para evitar usuarios duplicados ( la base de datos entre mayúsculas y minúsculas )
|
||||
// Establece en true si desea conservar el caso
|
||||
define('LDAP_USERNAME_CASE_SENSITIVE', false);
|
||||
|
||||
|
|
@ -124,7 +124,7 @@ define('LDAP_USERNAME_CASE_SENSITIVE', false);
|
|||
define('LDAP_BIND_TYPE', 'anonymous');
|
||||
|
||||
// Nombre de usuario LDAP para utilizar con el modo de proxy
|
||||
// Patrón de nombre de usuario LDAP para utilizar con el modo de usuario
|
||||
// Patrón de nombre de usuario LDAP para utilizar con el modo de usuario
|
||||
define('LDAP_USERNAME', null);
|
||||
|
||||
// password LDAP para usar en modo proxy
|
||||
|
|
@ -175,7 +175,7 @@ define('LDAP_GROUP_ADMIN_DN', '');
|
|||
define('LDAP_GROUP_MANAGER_DN', '');
|
||||
|
||||
// Habilitiar proveedor LDAP de grupo para permisos de proyecto
|
||||
// El usuario final será capaz de navegar por los grupos LDAP desde la interfaz de usuario y permitir el acceso a proyectos específicos
|
||||
// El usuario final será capaz de navegar por los grupos LDAP desde la interfaz de usuario y permitir el acceso a proyectos específicos
|
||||
define('LDAP_GROUP_PROVIDER', false);
|
||||
|
||||
// LDAP Base DN for groups
|
||||
|
|
@ -186,7 +186,7 @@ define('LDAP_GROUP_BASE_DN', '');
|
|||
define('LDAP_GROUP_FILTER', '');
|
||||
|
||||
// LDAP filtro por grupo de usuario
|
||||
// Si se configura este filtro , Kanboard buscará grupos de usuarios en LDAP_GROUP_BASE_DN
|
||||
// Si se configura este filtro , Kanboard buscará grupos de usuarios en LDAP_GROUP_BASE_DN
|
||||
// Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s))
|
||||
define('LDAP_GROUP_USER_FILTER', '');
|
||||
|
||||
|
|
@ -194,11 +194,11 @@ define('LDAP_GROUP_USER_FILTER', '');
|
|||
define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn');
|
||||
```
|
||||
|
||||
Reverse-Proxy configuración de autenticación
|
||||
Reverse-Proxy configuración de autenticación
|
||||
-------------------------------------
|
||||
|
||||
```php
|
||||
// Enable/disable la autenticación reverse proxy
|
||||
// Enable/disable la autenticación reverse proxy
|
||||
define('REVERSE_PROXY_AUTH', false);
|
||||
|
||||
// Nombre del header a utilizar para el nombre de usuario
|
||||
|
|
@ -207,15 +207,15 @@ define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
|
|||
// Nombre de usuario del administrador , por defecto en blanco
|
||||
define('REVERSE_PROXY_DEFAULT_ADMIN', '');
|
||||
|
||||
// Dominio por defecto a utilizar para configurar la dirección de correo electrónico
|
||||
// Dominio por defecto a utilizar para configurar la dirección de correo electrónico
|
||||
define('REVERSE_PROXY_DEFAULT_DOMAIN', '');
|
||||
```
|
||||
|
||||
Configuración para la autenticacion RememberMe
|
||||
Configuración para la autenticacion RememberMe
|
||||
----------------------------------------------
|
||||
|
||||
```php
|
||||
// Enable/disable recuerdame autenticación
|
||||
// Enable/disable recuerdame autenticación
|
||||
define('REMEMBER_ME_AUTH', true);
|
||||
```
|
||||
|
||||
|
|
@ -244,14 +244,14 @@ define('LOG_DRIVER', '');
|
|||
define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log');
|
||||
```
|
||||
|
||||
Protección de Brute-force
|
||||
Protección de Brute-force
|
||||
---------------------
|
||||
|
||||
```php
|
||||
// Habilitar captcha despues de 3 autenticaciones fallidas
|
||||
define('BRUTEFORCE_CAPTCHA', 3);
|
||||
|
||||
// Bloquear la cuenta después de 6 autenticaciones fallidas
|
||||
// Bloquear la cuenta después de 6 autenticaciones fallidas
|
||||
define('BRUTEFORCE_LOCKDOWN', 6);
|
||||
|
||||
// Bloquear la cuenta durante un minute
|
||||
|
|
@ -270,7 +270,7 @@ define('SESSION_DURATION', 0);
|
|||
Clientes HTTP
|
||||
--------------
|
||||
|
||||
Si las peticiones HTTP externas debe ser enviada a través de un proxy :
|
||||
Si las peticiones HTTP externas debe ser enviada a través de un proxy :
|
||||
|
||||
```php
|
||||
define('HTTP_PROXY_HOSTNAME', '');
|
||||
|
|
@ -293,15 +293,15 @@ Varias configuraciones
|
|||
// Escapar de HTML dentro del texto de markdown
|
||||
define('MARKDOWN_ESCAPE_HTML', true);
|
||||
|
||||
// Cabecera de autenticación alternativo API , el valor predeterminado es la autenticación básica HTTP definido en RFC2617
|
||||
// Cabecera de autenticación alternativo API , el valor predeterminado es la autenticación básica HTTP definido en RFC2617
|
||||
define('API_AUTHENTICATION_HEADER', '');
|
||||
|
||||
// Oculatar el formulario de login, usarlo si todos tus usuarios usan Google/Github/ReverseProxy authentication
|
||||
define('HIDE_LOGIN_FORM', false);
|
||||
|
||||
// Desactivación de cierre de sesión ( SSO para la autenticación externa )
|
||||
// Desactivación de cierre de sesión ( SSO para la autenticación externa )
|
||||
define('DISABLE_LOGOUT', false);
|
||||
|
||||
// Invalidar token de la API almacenada en la base de datos , útil para pruebas automatizadas
|
||||
// Invalidar token de la API almacenada en la base de datos , útil para pruebas automatizadas
|
||||
define('API_AUTHENTICATION_TOKEN', 'My unique API Token');
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,31 +1,31 @@
|
|||
Creación de tarea
|
||||
Creación de tarea
|
||||
==============
|
||||
|
||||
Desde el tablero, haga clic en el signo más **plus** al lado del nombre de la columna
|
||||
Desde el tablero, haga clic en el signo más **plus** al lado del nombre de la columna
|
||||
|
||||

|
||||

|
||||
|
||||
A continuación, aparece el formulario de creación de tareas:
|
||||
A continuación, aparece el formulario de creación de tareas:
|
||||
|
||||

|
||||

|
||||
|
||||
Descripción de campos:
|
||||
Descripción de campos:
|
||||
|
||||
- **Titulo**: El título de su tarea, que se podrá ver en el tablero.
|
||||
- **Descripción**: Descripción que usa el formato [Markdown](syntax-guide.markdown).
|
||||
- **Titulo**: El título de su tarea, que se podrá ver en el tablero.
|
||||
- **Descripción**: Descripción que usa el formato [Markdown](syntax-guide.markdown).
|
||||
- **Tags**: Lista de etiquetas asociadas a las tareas
|
||||
- **Crear otra tarea**:Marque esta casilla si desea crear una tarea similar (serán pre-llenados algunos campos)..
|
||||
- **Crear otra tarea**:Marque esta casilla si desea crear una tarea similar (serán pre-llenados algunos campos)..
|
||||
- **Color**: Escoger el color de la tarjeta.
|
||||
- **Asignado**: Persona que trabajara en la tarea.
|
||||
- **Categoría**: Sólo una categoría puede ser asignado a una tarea (visibles sólo si los proyectos tienen categorías).
|
||||
- **Columna**: La columna en la que se creó la tarea, su tarea se coloca en la parte inferior.
|
||||
- **Prioridad**: AL Prioridad de la tarea, el intervalo se puede definir en la configuración del proyecto, los valores por defecto son P0 a P3.
|
||||
- **Complejidad**: Se utiliza en la gestión de proyectos ágiles (Scrum), los puntos de complejidad o de la historia es un número que le dice al equipo lo difícil es la historia. A menudo, las personas utilizan la serie de Fibonacci.
|
||||
- **Referencia**: ID externo para la tarea, por ejemplo, puede ser el número de entradas que provienen de otro sistema
|
||||
- **Estimación original** : Estimación de horas para completar la tarea.
|
||||
- **Categoría**: Sólo una categoría puede ser asignado a una tarea (visibles sólo si los proyectos tienen categorías).
|
||||
- **Columna**: La columna en la que se creó la tarea, su tarea se coloca en la parte inferior.
|
||||
- **Prioridad**: AL Prioridad de la tarea, el intervalo se puede definir en la configuración del proyecto, los valores por defecto son P0 a P3.
|
||||
- **Complejidad**: Se utiliza en la gestión de proyectos ágiles (Scrum), los puntos de complejidad o de la historia es un número que le dice al equipo lo difícil es la historia. A menudo, las personas utilizan la serie de Fibonacci.
|
||||
- **Referencia**: ID externo para la tarea, por ejemplo, puede ser el número de entradas que provienen de otro sistema
|
||||
- **Estimación original** : Estimación de horas para completar la tarea.
|
||||
- **Tiempo transcurrido** : El tiempo dedicado a trabajar en la tarea.
|
||||
- **Fecha de Inicio** : Se trata de un campo de fecha y hora.
|
||||
- **Fecha de vencimiento** : Las tareas vencidas se tiene una fecha de vencimiento próxima rojo y las fechas de vencimiento será de color negro en el tablero. Varios formato de fecha se aceptan además del selector de fecha.
|
||||
- **Fecha de vencimiento** : Las tareas vencidas se tiene una fecha de vencimiento próxima rojo y las fechas de vencimiento será de color negro en el tablero. Varios formato de fecha se aceptan además del selector de fecha.
|
||||
|
||||
|
||||
Con el enlace de vista previa, se puede ver la descripción de la tarea convertiendo la sintaxis de Markdown.
|
||||
Con el enlace de vista previa, se puede ver la descripción de la tarea convertiendo la sintaxis de Markdown.
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@ Tu puedes recomendar un proveedor de web hosting para Kanboard?
|
|||
Kanboard funciona bien con cualquier VPS proveedor de hosting como [Digital Ocean](https://www.digitalocean.com/?refcode=4b541f47aae4),
|
||||
[Linode](https://www.linode.com/?r=4e381ac8a61116f40c60dc7438acc719610d8b11) o [Gandi](https://www.gandi.net/).
|
||||
|
||||
Para tener el mejor performance , elegir un proveedor con el disco rápido de I/O porque Kanboard utilizar SQLite de forma predeterminada .
|
||||
Para tener el mejor performance , elegir un proveedor con el disco rápido de I/O porque Kanboard utilizar SQLite de forma predeterminada .
|
||||
Evitar los proveedores de alojamiento que utilizan un punto de montaje NFS compartido.
|
||||
|
||||
|
||||
Me sale una página en blanco después de instalar o actualizar Kanboard
|
||||
Me sale una página en blanco después de instalar o actualizar Kanboard
|
||||
----------------------------------------------------------------------
|
||||
|
||||
- Verificar si tienes instalados todos los requerimientos en tu servidor
|
||||
|
|
@ -23,17 +23,17 @@ Me sale una p
|
|||
Si Tienes el error "No hay CSPRNG adecuado instalado en su sistema "
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Si tu usas PHP < 7.0, Tu necesitas tener la extensión openssl habilitada o `/dev/urandom` accesible desde la aplicación si se
|
||||
Si tu usas PHP < 7.0, Tu necesitas tener la extensión openssl habilitada o `/dev/urandom` accesible desde la aplicación si se
|
||||
restringe por un `open_basedir`
|
||||
|
||||
|
||||
Página no encontrada y la URL parece mal (&amp;)
|
||||
Página no encontrada y la URL parece mal (&amp;)
|
||||
--------------------------------------------------
|
||||
|
||||
- La URL se mira como `/?controller=auth&action=login&redirect_query=` instanciada de `?controller=auth&action=login&redirect_query=`
|
||||
- Kanboard regresa el error "Page not found"
|
||||
|
||||
Este problema proviene de la configuración de PHP , el valor de ` arg_separator.output` no es defecto del PHP , hay diferentes maneras de solucionar que:
|
||||
Este problema proviene de la configuración de PHP , el valor de ` arg_separator.output` no es defecto del PHP , hay diferentes maneras de solucionar que:
|
||||
|
||||
Cambiar el valor directamente en su ` php.ini` si es posible :
|
||||
|
||||
|
|
@ -47,14 +47,14 @@ Sustituir el valor con un ` .htaccess` :
|
|||
arg_separator.output php_value "& "
|
||||
`` `
|
||||
|
||||
De lo contrario Kanboard tratará de anular el valor directamente en PHP .
|
||||
De lo contrario Kanboard tratará de anular el valor directamente en PHP .
|
||||
|
||||
|
||||
Error de autenticación con la API y Apache + PHP - FPM
|
||||
Error de autenticación con la API y Apache + PHP - FPM
|
||||
--------------------------------------------------------
|
||||
|
||||
Php-cgi bajo Apache HTTP basico no pasa user/pass forma predeterminada .
|
||||
Para que esta solución funcione , añadir estas líneas a su archivo ` .htaccess` :
|
||||
Para que esta solución funcione , añadir estas líneas a su archivo ` .htaccess` :
|
||||
|
||||
```
|
||||
RewriteCond %{HTTP:Authorization} ^(.+)$
|
||||
|
|
@ -66,16 +66,16 @@ Problemas conocidos con eAccelerator
|
|||
------------------------------
|
||||
|
||||
Kanboard no funciona muy bien con [eAccelerator](http://eaccelerator.net).
|
||||
El problema puede ser causado una página en blanco o un accidente de Apache :
|
||||
El problema puede ser causado una página en blanco o un accidente de Apache :
|
||||
|
||||
```
|
||||
[Wed Mar 05 21:36:56 2014] [notice] child pid 22630 exit signal Segmentation fault (11)
|
||||
```
|
||||
|
||||
La mejor manera de evitar este problema es desactivar eAccelerator o definir manualmente los archivos que desea almacenar en caché con el parámetro de configuración ` eaccelerator.filter` .
|
||||
La mejor manera de evitar este problema es desactivar eAccelerator o definir manualmente los archivos que desea almacenar en caché con el parámetro de configuración ` eaccelerator.filter` .
|
||||
|
||||
The project [eAccelerator parece muerto y no se actualiza desde 2012](https://github.com/eaccelerator/eaccelerator/commits/master).
|
||||
Recomendamos para cambiar a la ultima versión de PHP por que el bundled viene con [OPcache](http://php.net/manual/en/intro.opcache.php).
|
||||
Recomendamos para cambiar a la ultima versión de PHP por que el bundled viene con [OPcache](http://php.net/manual/en/intro.opcache.php).
|
||||
|
||||
|
||||
Por que el requerimiento minimo es PHP 5.3.3?
|
||||
|
|
@ -91,7 +91,7 @@ Al parecer , CentOS y Debian tienen parches de seguridad en su back-port para PH
|
|||
Kanboard v1.0.10 y v1.0.11 requiere al menos PHP 5.3.7 , pero este cambio se ha vuelto a ser compatible con PHP 5.3.3 con Kanboard > = v1.0.12
|
||||
|
||||
|
||||
Cómo probar Kanboard con el PHP incorporado en el servidor web?
|
||||
Cómo probar Kanboard con el PHP incorporado en el servidor web?
|
||||
---------------------------------------------------------------
|
||||
|
||||
Si tu no quieres instalar un servidor web como Apache en tu localhost, tu puedes testearlo con el [servidor web embebido de PHP](http://www.php.net/manual/en/features.commandline.webserver.php):
|
||||
|
|
@ -112,7 +112,7 @@ Como instalar Kanboard en Yunohost?
|
|||
Existe un [paquete para instalar Kanboard en Yunohost facilmente](https://github.com/mbugeia/kanboard_ynh).
|
||||
|
||||
|
||||
¿Dónde puedo encontrar una lista de proyectos relacionados?
|
||||
¿Dónde puedo encontrar una lista de proyectos relacionados?
|
||||
--------------------------------------------
|
||||
|
||||
- [Kanboard API python client by @freekoder](https://github.com/freekoder/kanboard-py)
|
||||
|
|
@ -126,7 +126,7 @@ Existe un [paquete para instalar Kanboard en Yunohost facilmente](https://github
|
|||
- [Git hooks for integration with Kanboard by Gene Pavlovsky](https://github.com/gene-pavlovsky/kanboard-git-hooks)
|
||||
|
||||
|
||||
¿Hay algunos tutoriales sobre Kanboard en otro idioma?
|
||||
¿Hay algunos tutoriales sobre Kanboard en otro idioma?
|
||||
-----------------------------------------------------------
|
||||
|
||||
- [Artículo serie alemana sobre Kanboard](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/)
|
||||
- [Artículo serie alemana sobre Kanboard](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Configuración Mysql/MariaDB
|
||||
Configuración Mysql/MariaDB
|
||||
===========================
|
||||
|
||||
|
||||
|
|
@ -9,25 +9,25 @@ Requirimientos
|
|||
------------
|
||||
|
||||
- Mysql server
|
||||
- Instalar la extensión `pdo_mysql` en PHP
|
||||
- Instalar la extensión `pdo_mysql` en PHP
|
||||
|
||||
Nota: Kanboard esta testeada con **Mysql >= 5.5 y MariaDB >= 10.0**
|
||||
|
||||
configuración Mysql
|
||||
configuración Mysql
|
||||
-------------------
|
||||
|
||||
### Crear una base de datos
|
||||
|
||||
El primer paso es crear una base de datos en tu servidor MySQL
|
||||
Por ejemplo, se puede hacer eso con el cliente de línea de comandos mysql:
|
||||
Por ejemplo, se puede hacer eso con el cliente de línea de comandos mysql:
|
||||
|
||||
```sql
|
||||
CREATE DATABASE kanboard;
|
||||
```
|
||||
|
||||
### Crear un archivo de configuración
|
||||
### Crear un archivo de configuración
|
||||
|
||||
El archivo `config.php` debería contener estos valores:
|
||||
El archivo `config.php` debería contener estos valores:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
|
@ -47,7 +47,7 @@ Nota: Se puede renombrar el archivo de plantilla `config.default.php` a `config.
|
|||
### Importando SQL dump (metodo alternativo)
|
||||
|
||||
|
||||
Por primera vez, se ejecutará Kanboard uno por uno cada migración de base de datos y este proceso puede tardar algún tiempo de acuerdo a su configuración.
|
||||
Por primera vez, se ejecutará Kanboard uno por uno cada migración de base de datos y este proceso puede tardar algún tiempo de acuerdo a su configuración.
|
||||
|
||||
Para evitar cualquier tiempo de espera de potencial se puede inicializar la base de datos directamente importando el esquema de SQL:
|
||||
|
||||
|
|
@ -55,12 +55,12 @@ Para evitar cualquier tiempo de espera de potencial se puede inicializar la base
|
|||
mysql -u root -p my_database < app/Schema/Sql/mysql.sql
|
||||
```
|
||||
|
||||
El archivo `app/Schema/Sql/mysql.sql` es un dump SQL que representa la ultima versión de la base de datos
|
||||
El archivo `app/Schema/Sql/mysql.sql` es un dump SQL que representa la ultima versión de la base de datos
|
||||
|
||||
SSL configuración
|
||||
SSL configuración
|
||||
-----------------
|
||||
|
||||
Estos parámetros tienen que ser definidas para permitir la conexión SSL Mysql:
|
||||
Estos parámetros tienen que ser definidas para permitir la conexión SSL Mysql:
|
||||
|
||||
```php
|
||||
// Mysql SSL key
|
||||
|
|
|
|||
|
|
@ -1,33 +1,33 @@
|
|||
Arquitectura de autenticación
|
||||
Arquitectura de autenticación
|
||||
=============================
|
||||
|
||||
Kanboard provee una flexible y conectable arquitectura de autenticación.
|
||||
Kanboard provee una flexible y conectable arquitectura de autenticación.
|
||||
|
||||
Por default, el usuario puede autenticarse con multiple metodos:
|
||||
|
||||
- Autenticación por usuario y password (Base de datos local y LDAP)
|
||||
- Autenticación OAuth2
|
||||
- Autenticación Reverse-Proxy
|
||||
- Autenticación basada en Cookie (Recuerdame)
|
||||
- Autenticación por usuario y password (Base de datos local y LDAP)
|
||||
- Autenticación OAuth2
|
||||
- Autenticación Reverse-Proxy
|
||||
- Autenticación basada en Cookie (Recuerdame)
|
||||
|
||||
Además, despues de una autenticación satisfactoria un puede hacerse post de autenticación Two-Factor .
|
||||
Además, despues de una autenticación satisfactoria un puede hacerse post de autenticación Two-Factor .
|
||||
Kanboard sopoarta nativamente el standart TOTP.
|
||||
|
||||
Interfaces de autenticación
|
||||
Interfaces de autenticación
|
||||
----------------------------
|
||||
|
||||
Para tener un sistema conectable, los drivers de autenticación deben implementar un conjunto de interfaces
|
||||
Para tener un sistema conectable, los drivers de autenticación deben implementar un conjunto de interfaces
|
||||
|
||||
| Interface | Rol |
|
||||
|------------------------------------------|------------------------------------------------------------------|
|
||||
| AuthenticationProviderInterface | Interface base para otras interfaces de autenticación |
|
||||
| PreAuthenticationProviderInterface | The user is already authenticated al alcanzar la aplicación, Usualmente los servidores web definen algunas variables de entorno |
|
||||
| PasswordAuthenticationProviderInterface | El metodo de autenticación que usa el username y password provienen del formulario de login |
|
||||
| AuthenticationProviderInterface | Interface base para otras interfaces de autenticación |
|
||||
| PreAuthenticationProviderInterface | The user is already authenticated al alcanzar la aplicación, Usualmente los servidores web definen algunas variables de entorno |
|
||||
| PasswordAuthenticationProviderInterface | El metodo de autenticación que usa el username y password provienen del formulario de login |
|
||||
| OAuthAuthenticationProviderInterface | Proveedores OAuth2 |
|
||||
| PostAuthenticationProviderInterface | Drivers de autenticación Two-Factor ,pide el código a confirmar |
|
||||
| SessionCheckProviderInterface | Los proveedores que son capaces de comprobar si la sesión de usuario es válida |
|
||||
| PostAuthenticationProviderInterface | Drivers de autenticación Two-Factor ,pide el código a confirmar |
|
||||
| SessionCheckProviderInterface | Los proveedores que son capaces de comprobar si la sesión de usuario es válida |
|
||||
|
||||
### Ejemplos de autenticación de proveedores:
|
||||
### Ejemplos de autenticación de proveedores:
|
||||
|
||||
- Database por default metodos a implementar `PasswordAuthenticationProviderInterface` y `SessionCheckProviderInterface`
|
||||
- Reverse-Proxy metodos a implementar `PreAuthenticationProviderInterface` y `SessionCheckProviderInterface`
|
||||
|
|
@ -36,64 +36,64 @@ Para tener un sistema conectable, los drivers de autenticaci
|
|||
- RememberMe cookie metodos a implementar `PreAuthenticationProviderInterface`
|
||||
- Two-Factor TOTP metodos a implementar `PostAuthenticationProviderInterface`
|
||||
|
||||
flujo de trabajo de autenticación ** Workflow **
|
||||
flujo de trabajo de autenticación ** Workflow **
|
||||
------------------------------------------------
|
||||
|
||||
Para cada peticion HTTP:
|
||||
|
||||
1. Si la sesión de usuario esta abierta, ejecuta el registro de proveedores que implementa`SessionCheckProviderInterface`
|
||||
1. Si la sesión de usuario esta abierta, ejecuta el registro de proveedores que implementa`SessionCheckProviderInterface`
|
||||
2. Ejecuta todos los proveedores que implementa `PreAuthenticationProviderInterface`
|
||||
3. Si el usuario final hace un submit al formulario del login, Los proveedores que implementa `PasswordAuthenticationProviderInterface` are executed
|
||||
4. Si el usuario final quiere usar OAuth2, el selecciona el proveedor a ejecutar
|
||||
5. Despues de una autenticación satisfactoria, el ultimo registro utilizará `PostAuthenticationProviderInterface`
|
||||
6. Sincronizar la información del usuario si es necesario
|
||||
5. Despues de una autenticación satisfactoria, el ultimo registro utilizará `PostAuthenticationProviderInterface`
|
||||
6. Sincronizar la información del usuario si es necesario
|
||||
|
||||
Este workflow es manejado por la clase `Kanboard\Core\Security\AuthenticationManager`.
|
||||
|
||||
Eventos disparados:
|
||||
|
||||
- `AuthenticationManager::EVENT_SUCCESS`: autenticación satisfactoria
|
||||
- `AuthenticationManager::EVENT_FAILURE`: autenticación fallida
|
||||
- `AuthenticationManager::EVENT_SUCCESS`: autenticación satisfactoria
|
||||
- `AuthenticationManager::EVENT_FAILURE`: autenticación fallida
|
||||
|
||||
Cada vez que se produce un evento de fallo , el contador de intentos fallidos se incrementa.
|
||||
|
||||
La cuenta de usuario se puede bloquear para el período de tiempo configurado y un captcha puede ser mostrado para evitar ataques de fuerza bruta .
|
||||
La cuenta de usuario se puede bloquear para el período de tiempo configurado y un captcha puede ser mostrado para evitar ataques de fuerza bruta .
|
||||
|
||||
Interface de usuario del proveedor
|
||||
---------------------------------
|
||||
|
||||
Cuando la autenticación es satisfactoria, la `AuthenticationManager` pedura la información del usuario para que el driver llame al metodo `getUser()`.
|
||||
Cuando la autenticación es satisfactoria, la `AuthenticationManager` pedura la información del usuario para que el driver llame al metodo `getUser()`.
|
||||
Este metodo debe regresar un objeto que implementa la interface `Kanboard\Core\User\UserProviderInterface`.
|
||||
|
||||
Esta clase abstracta reune la información dede otro sistema.
|
||||
Esta clase abstracta reune la información dede otro sistema.
|
||||
|
||||
Ejemplos :
|
||||
|
||||
- `DatabaseUserProvider` proporciona información para un usuario interno
|
||||
- `DatabaseUserProvider` proporciona información para un usuario interno
|
||||
- `LdapUserProvider` para un usuario LDAP
|
||||
- `ReverseProxyUserProvider` para un usuario Reverse-Proxy
|
||||
- `GoogleUserProvider` represtan un usuario de Google
|
||||
|
||||
Los métodos para la interface del proveedor de Usuario:
|
||||
Los métodos para la interface del proveedor de Usuario:
|
||||
|
||||
- `isUserCreationAllowed()`: Regresa true para permitir la creación automática de usuarios
|
||||
- `getExternalIdColumn()`: Obtener Identificación del nombre de la columna externa (google_id, github_id, gitlab_id...)
|
||||
- `isUserCreationAllowed()`: Regresa true para permitir la creación automática de usuarios
|
||||
- `getExternalIdColumn()`: Obtener Identificación del nombre de la columna externa (google_id, github_id, gitlab_id...)
|
||||
- `getInternalId()`: Obtener el id interno de la base de datos
|
||||
- `getExternalId()`: Obtener el id externo(Unique id)
|
||||
- `getRole()`: Obtener el rol de usuario
|
||||
- `getUsername()`: Obtener en nombre de usuario ** username **
|
||||
- `getName()`: Obtener nombre completo del usuario
|
||||
- `getEmail()`: Obtener el correo electronico del usuario
|
||||
- `getExternalGroupIds()`: Obtiene los ids externos del grupo, automáticamente sincroniza la membresia del grupo y la presenta
|
||||
- `getExtraAttributes()`: Obtiene los atributos extras para ser mostrados a el usuario durante la sincronización local
|
||||
- `getExternalGroupIds()`: Obtiene los ids externos del grupo, automáticamente sincroniza la membresia del grupo y la presenta
|
||||
- `getExtraAttributes()`: Obtiene los atributos extras para ser mostrados a el usuario durante la sincronización local
|
||||
|
||||
No es obligatorio que el metodo devuelva un valor.
|
||||
|
||||
Sincronización de un usuario local
|
||||
Sincronización de un usuario local
|
||||
----------------------------------
|
||||
|
||||
La información del usuario puede ser sincronizada automáticamente con la base de datos local.
|
||||
La información del usuario puede ser sincronizada automáticamente con la base de datos local.
|
||||
|
||||
- Si el metodo`getInternalId()` regresa un valor no realiza la sincronización
|
||||
- Si el metodo`getInternalId()` regresa un valor no realiza la sincronización
|
||||
- Los metodos `getExternalIdColumn()` y `getExternalId()` debe regresar un valor para sincronizar el usuario
|
||||
- Las propiedades que regresan un ** String ** vacios no se sincronizan
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
Arquitecuta de autorización
|
||||
Arquitecuta de autorización
|
||||
===========================
|
||||
|
||||
Kanboard [soporta multiples roles](roles.markdown) a nivel de aplicación y a nivel de proyecto.
|
||||
Kanboard [soporta multiples roles](roles.markdown) a nivel de aplicación y a nivel de proyecto.
|
||||
|
||||
Workflow de autorización
|
||||
Workflow de autorización
|
||||
--------------------------
|
||||
|
||||
Para cada solicitud HTTP:
|
||||
|
|
@ -16,15 +16,15 @@ Para cada solicitud HTTP:
|
|||
Extendiendo mapa de accesos
|
||||
---------------------------
|
||||
|
||||
Lista de accesos (ACL) se basa en el nombre de clase del controlador y el nombre del método
|
||||
La lista de acceso está a cargo de la clase `Kanboard\Core\Security\AccessMap`.
|
||||
Lista de accesos (ACL) se basa en el nombre de clase del controlador y el nombre del método
|
||||
La lista de acceso está a cargo de la clase `Kanboard\Core\Security\AccessMap`.
|
||||
|
||||
Hay dos mapa de acceso: una para la aplicación y la otra para un proyecto.
|
||||
Hay dos mapa de acceso: una para la aplicación y la otra para un proyecto.
|
||||
|
||||
- Acceso al mapa de aplicación : `$this->applicationAccessMap`
|
||||
- Acceso al mapa de aplicación : `$this->applicationAccessMap`
|
||||
- Acceso al mapa del proyecto: `$this->projectAccessMap`
|
||||
|
||||
Ejemplos para definir una nueva política para tu plugin:
|
||||
Ejemplos para definir una nueva política para tu plugin:
|
||||
|
||||
```php
|
||||
// Todos los metodos de la clase MyController:
|
||||
|
|
@ -36,4 +36,4 @@ $this->projectAccessMap->add('MyOtherController', array('create', 'save'), Role:
|
|||
|
||||
Los roles estan defidos en la clase `Kanboard\Core\Security\Role`.
|
||||
|
||||
Clase de autorización (`Kanboard\Core\Security\Authorization`) comprobará el acceso de cada página.
|
||||
Clase de autorización (`Kanboard\Core\Security\Authorization`) comprobará el acceso de cada página.
|
||||
|
|
|
|||
|
|
@ -1,30 +1,30 @@
|
|||
Agregando acciones automáticas
|
||||
Agregando acciones automáticas
|
||||
===============================
|
||||
|
||||
Agregando una nueva acccion automática es bastante simple.
|
||||
Agregando una nueva acccion automática es bastante simple.
|
||||
|
||||
Creando una nueva accion
|
||||
------------------------
|
||||
|
||||
Tus acciones automáticas deben heradarse de la clase `Kanboard\Action\Base`.
|
||||
Tus acciones automáticas deben heradarse de la clase `Kanboard\Action\Base`.
|
||||
|
||||
Varios métodos abstractos deben ser implementadas por sí mismo:
|
||||
Varios métodos abstractos deben ser implementadas por sí mismo:
|
||||
|
||||
| Metodos | Descripción |
|
||||
| Metodos | Descripción |
|
||||
|-------------------------------------|------------------------------------------------------------------|
|
||||
| `getDescription()` | Descripcion visible en la interface del usuario |
|
||||
| `getCompatibleEvents()` | Obtener las listas de eventos compatibles |
|
||||
| `getActionRequiredParameters()` | Obtener los parametros requeridos para la acción (definidos por el usuario)|
|
||||
| `getActionRequiredParameters()` | Obtener los parametros requeridos para la acción (definidos por el usuario)|
|
||||
| `getEventRequiredParameters()` | Obtener los parametros requeridos para el evento |
|
||||
| `doAction(array $data)` | Ejecutar la acción, Debe regresar true si fue satisfactorio |
|
||||
| `hasRequiredCondition(array $data)` | Comprobar si los datos de eventos cumplen la condición de acción |
|
||||
| `doAction(array $data)` | Ejecutar la acción, Debe regresar true si fue satisfactorio |
|
||||
| `hasRequiredCondition(array $data)` | Comprobar si los datos de eventos cumplen la condición de acción |
|
||||
|
||||
Tu accion automatica es identificada en kanboard utilizando el nombre de la clase absoluta con el espacio de nombre incluido
|
||||
|
||||
Agregando nuevos eventos
|
||||
------------------------
|
||||
|
||||
La lista de eventos de la aplicación está disponible en la clase `Kanboard\Core\Event\EventManager::getAll()`.
|
||||
La lista de eventos de la aplicación está disponible en la clase `Kanboard\Core\Event\EventManager::getAll()`.
|
||||
Sin embargo, si tu plugin dispara nuevos eventos, tu puedes registrar estos eventos :
|
||||
|
||||
```php
|
||||
|
|
@ -33,7 +33,7 @@ $this->actionManager->getAction('\Kanboard\Plugin\MyPlugin\MyActionName')->addEv
|
|||
|
||||
Tu puedes extender la lista de eventos compatibles de acciones existentes para ser usada en algun metodo.
|
||||
|
||||
Registra la acción
|
||||
Registra la acción
|
||||
----------------------
|
||||
|
||||
Tu tienes que llamar el metodo `register()` desde la clase `Kanboard\Core\Action\ActionManager`:
|
||||
|
|
@ -58,4 +58,4 @@ class Plugin extends Base
|
|||
Ejemplo
|
||||
-------
|
||||
|
||||
- [Ejemplo de acción automatica](https://github.com/kanboard/plugin-example-automatic-action)
|
||||
- [Ejemplo de acción automatica](https://github.com/kanboard/plugin-example-automatic-action)
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
Plugin de configuración del directorio
|
||||
Plugin de configuración del directorio
|
||||
======================================
|
||||
|
||||
Para instalar, actualizar y eliminar plugins dede la interface de usuario, debes tener estos requerimientos:
|
||||
|
||||
- El directorio del plugin debe ser de escritura por el usuario del servidor web
|
||||
- La extensión Zip debe estar disponible en tu server.
|
||||
- Los parametros de configuración `PLUGIN_INSTALLER` deben estar en `true`
|
||||
- La extensión Zip debe estar disponible en tu server.
|
||||
- Los parametros de configuración `PLUGIN_INSTALLER` deben estar en `true`
|
||||
|
||||
Para desactivar esta función , cambie el valor de `PLUGIN_INSTALLER` a `false` en tu archivo de configuración.
|
||||
También puede cambiar los permisos de la carpeta Plugin en el filesystem.
|
||||
Para desactivar esta función , cambie el valor de `PLUGIN_INSTALLER` a `false` en tu archivo de configuración.
|
||||
También puede cambiar los permisos de la carpeta Plugin en el filesystem.
|
||||
|
||||
Sólo los administradores pueden instalar plugins desde la interfaz de usuario.
|
||||
Sólo los administradores pueden instalar plugins desde la interfaz de usuario.
|
||||
|
||||
Por defecto, sólo plug-in que aparece en la página web de Kanboard están disponibles .
|
||||
Por defecto, sólo plug-in que aparece en la página web de Kanboard están disponibles .
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ $this->on('app.bootstrap', function($container) {
|
|||
```
|
||||
|
||||
- El primer argumento es el nombre del evento (string)
|
||||
- El segundo argumento es una funcion PHP callable (finalización o metodos de la clase)
|
||||
- El segundo argumento es una funcion PHP callable (finalización o metodos de la clase)
|
||||
|
||||
Agregando un nuevo evento
|
||||
-------------------------
|
||||
|
|
@ -24,4 +24,4 @@ Para agregar un nuevo, tienes que llamar al metodo `register()` de la clase `Kan
|
|||
$this->eventManager->register('my.event.name', 'Mi descripcion del nuevo evento');
|
||||
```
|
||||
|
||||
Estos eventos pueden ser utilizados por otros componentes de Kanboard como acciones automáticas .
|
||||
Estos eventos pueden ser utilizados por otros componentes de Kanboard como acciones automáticas .
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Vinculación externa de proveedores
|
||||
Vinculación externa de proveedores
|
||||
==================================
|
||||
|
||||
Esta funcionalidad le permite vincular una tarea a los elementos adicionales almacenados en otro sistema.
|
||||
|
|
@ -14,14 +14,14 @@ Cada item tiene un tipo, u na URL, un tipo dedependencia y un titulo.
|
|||
|
||||
Por default,Kanboard incluye dos tipos de proveedores
|
||||
|
||||
- Vinculación Web : Copiar y pegar un enlace y Kanboard se ha podido ir a la página de título de forma automática.
|
||||
- Datos adjuntos: Enlace a todo lo que no es una página web
|
||||
- Vinculación Web : Copiar y pegar un enlace y Kanboard se ha podido ir a la página de título de forma automática.
|
||||
- Datos adjuntos: Enlace a todo lo que no es una página web
|
||||
|
||||
Flujo de trabajo ** Workflow **
|
||||
--------------------------------
|
||||
|
||||
1. El usuario final copia y pega el URL al submit del formulario.
|
||||
2.- Si el tipo de link es "auto", Kanboard crea un bucle a través de todos los proveedores registrados hasta que hay una coincidencia
|
||||
2.- Si el tipo de link es "auto", Kanboard crea un bucle a través de todos los proveedores registrados hasta que hay una coincidencia
|
||||
3. Entonces , el proveedor de enlace devuelve un objeto que implementa la interfaz de `ExternalLinkInterface`
|
||||
4. El formulario se muestra al usuario con todos los datos precargados antes de guardar el enlace
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ Para implementar un nuevo vinculo al proveedor desde un plugin, es necesario cre
|
|||
| Method | Usage |
|
||||
|----------------------------|---------------------------------------------------------------------------------|
|
||||
| `getName()` | Obtener el nombre del proveedor(label) |
|
||||
| `getType()` | Obtener el tipo de link (se guardarán en la base de datos) |
|
||||
| `getType()` | Obtener el tipo de link (se guardarán en la base de datos) |
|
||||
| `getDependencies()` | Obtener un diccionario de los tipos de dependencia soportados por el proveedor |
|
||||
| `setUserTextInput($input)` | Texto introducido por el usuario |
|
||||
| `match()` | Regresa true si el proveedor puede analizar correctamente la entrada del usuario|
|
||||
|
|
|
|||
|
|
@ -15,20 +15,20 @@ Flujo de trabajo del Grupo de Proveedores **Workflow**
|
|||
1. El usuario final **end-user** comienza a escribir el nombre del grupo y el campo se autocompleta
|
||||
2. EL `GroupManager` la clase ejecuta la consulta para todos los proveedores de grupo registrados
|
||||
3. Los resultados son fusionados y regresados a la interface de usuario
|
||||
4. Antes de seleccionar un grupo, a información del grupo se sincronizan con la base de datos local si es necesario
|
||||
4. Antes de seleccionar un grupo, a información del grupo se sincronizan con la base de datos local si es necesario
|
||||
|
||||
Interface del grupo de proveedores
|
||||
----------------------------------
|
||||
|
||||
interface a implementar: `Kanboard\Core\Group\GroupProviderInterface`.
|
||||
|
||||
Las clases que implementa esta interface abstracta del grupo de información, solo hay 3 metodos:
|
||||
Las clases que implementa esta interface abstracta del grupo de información, solo hay 3 metodos:
|
||||
|
||||
- `getInternalId()`: Obtiene el id interno de la base de datos, de otra manera regresa 0
|
||||
- `getExternalId()`: Obtiene un id unico externo
|
||||
- `getName()`: Obtiene el nombre de grupo
|
||||
|
||||
Kanboard utilizará el ID externo para sincronizar con la base de datos local.
|
||||
Kanboard utilizará el ID externo para sincronizar con la base de datos local.
|
||||
|
||||
Interface Backend del grupo de proveedores
|
||||
------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
Plugin Hooks
|
||||
============
|
||||
|
||||
Hooks de aplicación
|
||||
Hooks de aplicación
|
||||
-----------------
|
||||
|
||||
Los hooks pueden extender , reemplazar, filtar datos o cambiar los comportamientos por default, cad hook es identificado con unico nombre, ejemplo : `controller:calendar:user:events`
|
||||
|
|
@ -16,13 +16,13 @@ $this->hook->on('hook_name', $callable);
|
|||
|
||||
El primer argumento es el nombre del hook y el segundo es un callable PHP
|
||||
|
||||
### Hooks ejecutado sólo una vez
|
||||
### Hooks ejecutado sólo una vez
|
||||
|
||||
Algunos hooks solo tienen un listener:
|
||||
|
||||
#### model:subtask-time-tracking:calculate:time-spent
|
||||
|
||||
- Anular el cálculo del tiempo anterior cuando se detiene el temporizador de la subtarea
|
||||
- Anular el cálculo del tiempo anterior cuando se detiene el temporizador de la subtarea
|
||||
- Argumentos :
|
||||
- `$user_id` (integer)
|
||||
- `$start` (DateTime)
|
||||
|
|
@ -30,7 +30,7 @@ Algunos hooks solo tienen un listener:
|
|||
|
||||
### Fusionar hooks
|
||||
|
||||
"Fusionar hooks" actuar de la misma manera que la función de `array_merge`. el hook callback solo regresa un array. Este array se fusionará con la que viene por defecto.
|
||||
"Fusionar hooks" actuar de la misma manera que la función de `array_merge`. el hook callback solo regresa un array. Este array se fusionará con la que viene por defecto.
|
||||
|
||||
Ejemplo para agregar eventos en el calendario del usuario:
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ class Plugin extends Base
|
|||
}
|
||||
```
|
||||
|
||||
Lista de fusión de hooks:
|
||||
Lista de fusión de hooks:
|
||||
|
||||
#### controller:task:form:default
|
||||
|
||||
|
|
@ -129,22 +129,22 @@ $this->hook->on('formatter:board:query', function (\PicoDb\Table &query) {
|
|||
});
|
||||
```
|
||||
|
||||
El código anterior mostrará sólo las tareas en rojo en el tablero.
|
||||
El código anterior mostrará sólo las tareas en rojo en el tablero.
|
||||
|
||||
Lista de referencias de hooks:
|
||||
|
||||
| Hook | Description |
|
||||
|--------------------------------------------|---------------------------------------------------------------|
|
||||
| `formatter:board:query` | Alterar consulta a la base antes de tablero de renderizado |
|
||||
| `pagination:dashboard:task:query` | Alterar consulta de base de datos para las tareas de la paginación en el dashboard |
|
||||
| `pagination:dashboard:subtask:query` | Alterar consulta a la base de la paginación en el subtareas del dashboard |
|
||||
| `pagination:dashboard:task:query` | Alterar consulta de base de datos para las tareas de la paginación en el dashboard |
|
||||
| `pagination:dashboard:subtask:query` | Alterar consulta a la base de la paginación en el subtareas del dashboard |
|
||||
| `model:task:creation:prepare` | Alterar los valores del formulario antes de guardar una tarea |
|
||||
| `model:task:modification:prepare` | Alterar los valores del formulario antes de editar una tarea
|
||||
|
||||
Template Hooks
|
||||
--------------
|
||||
|
||||
Template hooks permitirá añadir nuevos contenidos en las plantillas existentes.
|
||||
Template hooks permitirá añadir nuevos contenidos en las plantillas existentes.
|
||||
|
||||
Ejemplo para agregar nuevos contenidos en el sidebar del dashboard:
|
||||
|
||||
|
|
@ -171,7 +171,7 @@ $this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/
|
|||
Este llamada es usualmente definida en el metodo `initialize()`
|
||||
El primer argumento es el nombre del hook y el segundo argumento es el nombre del template.
|
||||
|
||||
Los nombres de plantillas con el prefijo del nombre del plugin y los dos puntos indican la ubicación de la plantilla.
|
||||
Los nombres de plantillas con el prefijo del nombre del plugin y los dos puntos indican la ubicación de la plantilla.
|
||||
|
||||
Ejemplo con `myplugin:dashboard/sidebar`:
|
||||
|
||||
|
|
@ -180,11 +180,11 @@ Ejemplo con `myplugin:dashboard/sidebar`:
|
|||
- En el filesystem, El plugin esta localizado aqui: `plugins\Myplugin\Template\dashboard\sidebar.php`
|
||||
- Templates estan escritos en puro PHP (no se olvide de escapar los datos)
|
||||
|
||||
Los nombres de plantillas sin prefijo son plantillas básicas.
|
||||
Los nombres de plantillas sin prefijo son plantillas básicas.
|
||||
|
||||
Lista de templates hooks:
|
||||
|
||||
| Hook | Descripción |
|
||||
| Hook | Descripción |
|
||||
|--------------------------------------------|----------------------------------------------------|
|
||||
| `template:analytic:sidebar` | Sidebar en paginas analiticas |
|
||||
| `template:app:filters-helper:before` | Filtro helper dropdown (top) |
|
||||
|
|
@ -198,8 +198,8 @@ Lista de templates hooks:
|
|||
| `template:board:task:footer` | Tarea en el tablero : footer |
|
||||
| `template:board:task:icons` | Tarea en el tablero: tooltip icon |
|
||||
| `template:board:column:dropdown` | Menu Dropdown en las columnas del tablero |
|
||||
| `template:config:sidebar` | Sidebar pagina de configuración |
|
||||
| `template:config:application ` | Aplicación de configuración del formulario |
|
||||
| `template:config:sidebar` | Sidebar pagina de configuración |
|
||||
| `template:config:application ` | Aplicación de configuración del formulario |
|
||||
| `template:config:email` | Email settings page |
|
||||
| `template:config:integrations` | Integration page in global settings |
|
||||
| `template:dashboard:sidebar` | Sidebar en la pagina del dashboard |
|
||||
|
|
@ -214,9 +214,9 @@ Lista de templates hooks:
|
|||
| `template:project:dropdown` | "Actions" menu a la izquierda vista para diferentes proyectos |
|
||||
| `template:project:header:before` | Filtros de Proyectos (antes) |
|
||||
| `template:project:header:after` | Filtros de Proyectos (despues) |
|
||||
| `template:project:integrations` | Pagina de integracion de configuración de proyectos|
|
||||
| `template:project:sidebar` | Sidebar configuración de proyectos |
|
||||
| `template:project-user:sidebar` | Sidebar en la página de la información de usuario del proyecto |
|
||||
| `template:project:integrations` | Pagina de integracion de configuración de proyectos|
|
||||
| `template:project:sidebar` | Sidebar configuración de proyectos |
|
||||
| `template:project-user:sidebar` | Sidebar en la página de la información de usuario del proyecto |
|
||||
| `template:task:layout:top` | Task layout top (antes page header) |
|
||||
| `template:task:details:top` | Resumen de tarea top |
|
||||
| `template:task:details:bottom` | Resumen de tarea bottom |
|
||||
|
|
@ -225,25 +225,25 @@ Lista de templates hooks:
|
|||
| `template:task:details:third-column` | Resumen de tarea tres columnas |
|
||||
| `template:task:details:fourth-column` | Resumen de tarea cuatro columnas |
|
||||
| `template:task:dropdown` | Task dropdown menu en listado de paginas |
|
||||
| `template:task:sidebar:actions` | Sidebar on task page (sección de acciones) |
|
||||
| `template:task:sidebar:information` | Sidebar on task page (sección de información) |
|
||||
| `template:task:sidebar:actions` | Sidebar on task page (sección de acciones) |
|
||||
| `template:task:sidebar:information` | Sidebar on task page (sección de información) |
|
||||
| `template:task:form:first-column` | 1st columna en forma de tarea |
|
||||
| `template:task:form:second-column` | 2nd columna en forma de tarea |
|
||||
| `template:task:form:third-column` | 3nd columna en forma de tarea |
|
||||
| `template:task:show:top ` | Mostrar página de tareas : top |
|
||||
| `template:task:show:bottom` | Mostrar página de tareas : bottom |
|
||||
| `template:task:show:before-description` | Mostrar página de tareas : despues de la descripción |
|
||||
| `template:task:show:before-tasklinks` | Mostrar página de tareas : despues tasklinks |
|
||||
| `template:task:show:before-subtasks` | Mostrar página de tareas : despues subtareas |
|
||||
| `template:task:show:before-timetracking` | Mostrar página de tareas : despues timetracking |
|
||||
| `template:task:show:before-attachments` | Mostrar página de tareas : despues archivos adjuntos |
|
||||
| `template:task:show:before-comments` | Mostrar página de tareas : despues comentarios |
|
||||
| `template:user:authentication:form` | "Editar autenticación" formulario de perfil de usuario |
|
||||
| `template:task:show:top ` | Mostrar página de tareas : top |
|
||||
| `template:task:show:bottom` | Mostrar página de tareas : bottom |
|
||||
| `template:task:show:before-description` | Mostrar página de tareas : despues de la descripción |
|
||||
| `template:task:show:before-tasklinks` | Mostrar página de tareas : despues tasklinks |
|
||||
| `template:task:show:before-subtasks` | Mostrar página de tareas : despues subtareas |
|
||||
| `template:task:show:before-timetracking` | Mostrar página de tareas : despues timetracking |
|
||||
| `template:task:show:before-attachments` | Mostrar página de tareas : despues archivos adjuntos |
|
||||
| `template:task:show:before-comments` | Mostrar página de tareas : despues comentarios |
|
||||
| `template:user:authentication:form` | "Editar autenticación" formulario de perfil de usuario |
|
||||
| `template:user:create-remote:form` | "Crear un usuario remoto" formulario |
|
||||
| `template:user:external` | "Autenticación externa" la página de perfil de usuario |
|
||||
| `template:user:integrations` | Integración en el perfil de usuario |
|
||||
| `template:user:sidebar:actions` | Sidebar en el perfil de usuario (sección de acciones) |
|
||||
| `template:user:sidebar:information` | Sidebar en el perfil de usuario (sección de información) |
|
||||
| `template:user:external` | "Autenticación externa" la página de perfil de usuario |
|
||||
| `template:user:integrations` | Integración en el perfil de usuario |
|
||||
| `template:user:sidebar:actions` | Sidebar en el perfil de usuario (sección de acciones) |
|
||||
| `template:user:sidebar:information` | Sidebar en el perfil de usuario (sección de información) |
|
||||
|
||||
|
||||
Otro de los ganchos plantilla se pueden añadir en caso necesario , sólo hay que preguntar en el seguimiento de incidencias ** issue tracking **.
|
||||
Otro de los ganchos plantilla se pueden añadir en caso necesario , sólo hay que preguntar en el seguimiento de incidencias ** issue tracking **.
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@ Por default Kanboard soporta 3 estadares de trasporte de email:
|
|||
Con la API del plugin tu puedes agregar un driver para cualquier proveedor de email.
|
||||
Por ejemplo, nuestro plugin puede agregar un trasporte de email para un proveedor que usa un API HTTP.
|
||||
|
||||
Implementación
|
||||
Implementación
|
||||
--------------
|
||||
|
||||
Nuestro plugin dede implementgar la interface `Kanboard\Core\Mail\ClientInterface` y extiende desde `Kanboard\Core\Base`.
|
||||
El único método que necesita para implementar es `sendEmail()`:
|
||||
El único método que necesita para implementar es `sendEmail()`:
|
||||
|
||||
```php
|
||||
interface ClientInterface
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
Metadatos
|
||||
=========
|
||||
|
||||
Tu piedes adjutnar metadatos para cada projecto,tarea , usuaio o para toda la aplicación
|
||||
Tu piedes adjutnar metadatos para cada projecto,tarea , usuaio o para toda la aplicación
|
||||
Los metadatos son campos personalisados, es una key/value de una tabla.
|
||||
|
||||
Por ejemplo nuestro plugin puede almacenar información externa para una tarea o nuevas configuraciones para un proyecto.
|
||||
Básicamente le permiten ampliar los campos predeterminados sin tener que crear nuevas tablas .
|
||||
Por ejemplo nuestro plugin puede almacenar información externa para una tarea o nuevas configuraciones para un proyecto.
|
||||
Básicamente le permiten ampliar los campos predeterminados sin tener que crear nuevas tablas .
|
||||
|
||||
Adjuntar y eliminar metadatos para tareas
|
||||
--------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
Agregar notificaciones con los tipos de plugin
|
||||
==============================================
|
||||
|
||||
Puede enviar notificaciones a casi cualquier sistema mediante la adición de un nuevo tipo .
|
||||
Puede enviar notificaciones a casi cualquier sistema mediante la adición de un nuevo tipo .
|
||||
There are two kinds of notifications: project and user.
|
||||
|
||||
- Project: Notificaciones configuradas a nivel de proyecto
|
||||
- Usuario: Notificaciones enviadas individualmente y configurada a cada perfil de usuario.
|
||||
|
||||
Registra un nuevo tipo de notificación
|
||||
Registra un nuevo tipo de notificación
|
||||
--------------------------------------
|
||||
|
||||
En tu archivo de registro del plugin llama el metodo `setType()`:
|
||||
|
|
@ -17,19 +17,19 @@ $this->userNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC
|
|||
$this->projectNotificationTypeModel->setType('irc', t('IRC'), '\Kanboard\Plugin\IRC\Notification\IrcHandler');
|
||||
```
|
||||
|
||||
Su controlador puede ser registrado por el usuario o la notificación del proyecto. No necesariamente tienen que soportarlo .
|
||||
Cuando tu handler es registrdo, el usuario final **end-user** puede elegir recibir el nuevo tipo de notificación o no
|
||||
Su controlador puede ser registrado por el usuario o la notificación del proyecto. No necesariamente tienen que soportarlo .
|
||||
Cuando tu handler es registrdo, el usuario final **end-user** puede elegir recibir el nuevo tipo de notificación o no
|
||||
|
||||
Notificación de Handler
|
||||
Notificación de Handler
|
||||
-----------------------
|
||||
|
||||
Su controlador de notificación debe implementar la interfaz `Kanboard\Core\Notification\NotificationInterface`:
|
||||
Su controlador de notificación debe implementar la interfaz `Kanboard\Core\Notification\NotificationInterface`:
|
||||
|
||||
```php
|
||||
interface NotificationInterface
|
||||
{
|
||||
/**
|
||||
* Envia notificación a un usuario
|
||||
* Envia notificación a un usuario
|
||||
*
|
||||
* @access public
|
||||
* @param array $user
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
Plugin Reescritura
|
||||
================
|
||||
|
||||
Reesritura HTTP Contenido Política de Seguridad
|
||||
Reesritura HTTP Contenido Política de Seguridad
|
||||
-----------------------------------------------
|
||||
|
||||
Si desea reemplazar el encabezado HTTP predeterminado de la directiva de seguridad del contenido, puede utilizar el método`setContentSecurityPolicy()`:
|
||||
Si desea reemplazar el encabezado HTTP predeterminado de la directiva de seguridad del contenido, puede utilizar el método`setContentSecurityPolicy()`:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
|
@ -25,7 +25,7 @@ class Plugin extends Base
|
|||
Plantillas de reescrituras
|
||||
--------------------------
|
||||
|
||||
Las plantillas definidas en el núcleo se pueden anular . Por ejemplo , se puede redefinir el diseño predeterminado o cambiar notificaciones por correo electrónico.
|
||||
Las plantillas definidas en el núcleo se pueden anular . Por ejemplo , se puede redefinir el diseño predeterminado o cambiar notificaciones por correo electrónico.
|
||||
|
||||
Ejemolo de plantilla de reescritura:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
Personalizar Rutas
|
||||
==================
|
||||
|
||||
Cuando está habilitada la reescritura de URL, tu puedes definir rutas personalizadas desde tus plugins.
|
||||
Cuando está habilitada la reescritura de URL, tu puedes definir rutas personalizadas desde tus plugins.
|
||||
|
||||
Definir nuevas rutas
|
||||
--------------------
|
||||
|
||||
Las rutas son manejadas por la clase `Kanboard\Core\Http\Route`.
|
||||
|
||||
Las nuevas rutas se pueden agregar mediante el uso del método `addRoute($path, $controller, $action, $plugin)`, here an example:
|
||||
Las nuevas rutas se pueden agregar mediante el uso del método `addRoute($path, $controller, $action, $plugin)`, here an example:
|
||||
|
||||
```php
|
||||
$this->route->addRoute('/my/custom/route', 'myController', 'myAction', 'myplugin');
|
||||
```
|
||||
|
||||
Cuando el usuario final **end-user** van a la URL `/my/custom/route`, el metodo `Kanboard\Plugin\Myplugin\Controller\MyController::myAction()` será ejecutado.
|
||||
Cuando el usuario final **end-user** van a la URL `/my/custom/route`, el metodo `Kanboard\Plugin\Myplugin\Controller\MyController::myAction()` será ejecutado.
|
||||
|
||||
El primer caracter del contraldor y el nombre del plugin serán convertidos en mayusculas con la funcion `ucfirst()`.
|
||||
El primer caracter del contraldor y el nombre del plugin serán convertidos en mayusculas con la funcion `ucfirst()`.
|
||||
|
||||
Tu puedes ademas definir rutas con variables:
|
||||
|
||||
|
|
@ -70,9 +70,9 @@ Salida HTML cuando la reescritura del URL no esta habilitada:
|
|||
?controller=mycontroller&action=myaction&plugin=myplugin
|
||||
```
|
||||
|
||||
### Generar enlace de redirección:
|
||||
### Generar enlace de redirección:
|
||||
|
||||
Desde un controlador, si tu necesitas para From a controller, si tu necesitas realizar una redirección:
|
||||
Desde un controlador, si tu necesitas para From a controller, si tu necesitas realizar una redirección:
|
||||
|
||||
```php
|
||||
$this->url->to('mycontroller', 'myaction', array('plugin' => 'myplugin'));
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@ Desarrollo de Plugin
|
|||
|
||||
Nota : el plugin API es **considerado alpha** en estos momentos.
|
||||
|
||||
Los plugins son útiles para extender las funcionalidades básicas de Kanboard , la adición de características , la creación de temas o cambiar el comportamiento por defecto .
|
||||
Los plugins son útiles para extender las funcionalidades básicas de Kanboard , la adición de características , la creación de temas o cambiar el comportamiento por defecto .
|
||||
|
||||
Los creadores de plugins deben especificar explícitamente las versiones compatibles de Kanboard . El código interno de Kanboard puede cambiar con el tiempo y su extensión debe ser probado con nuevas versiones . Compruebe siempre el [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para realizar los cambios.
|
||||
Los creadores de plugins deben especificar explícitamente las versiones compatibles de Kanboard . El código interno de Kanboard puede cambiar con el tiempo y su extensión debe ser probado con nuevas versiones . Compruebe siempre el [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para realizar los cambios.
|
||||
|
||||
- [Crear tu plugin](plugin-registration.markdown)
|
||||
- [Usar plugins hooks](plugin-hooks.markdown)
|
||||
- [Eventos](plugin-events.markdown)
|
||||
- [Rescribir compartamientos por default en la aplicación](plugin-overrides.markdown)
|
||||
- [Rescribir compartamientos por default en la aplicación](plugin-overrides.markdown)
|
||||
- [Agregar plugins para migrar esquemas](plugin-schema-migrations.markdown)
|
||||
- [Personalizar rutas](plugin-routes.markdown)
|
||||
- [Agregar helpers](plugin-helpers.markdown)
|
||||
|
|
@ -18,9 +18,9 @@ Los creadores de plugins deben especificar expl
|
|||
- [Agregar tipos de notificaciones](plugin-notifications.markdown)
|
||||
- [Agregar acciones automaticas](plugin-automatic-actions.markdown)
|
||||
- [Adjuntar metados para usuarios,tareas y proyectos](plugin-metadata.markdown)
|
||||
- [Arquitectura de autenticación](plugin-authentication-architecture.markdown)
|
||||
- [Registración de plugins de autenticación](plugin-authentication.markdown)
|
||||
- [Arquitectura de autorización](plugin-authorization-architecture.markdown)
|
||||
- [Arquitectura de autenticación](plugin-authentication-architecture.markdown)
|
||||
- [Registración de plugins de autenticación](plugin-authentication.markdown)
|
||||
- [Arquitectura de autorización](plugin-authorization-architecture.markdown)
|
||||
- [Personlizar grupos de proveedores](plugin-group-provider.markdown)
|
||||
- [Links externos para proveedores](plugin-external-link.markdown)
|
||||
- [Agregar avatar a proveedores](plugin-avatar-provider.markdown)
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@ Lado del servidor
|
|||
| MariaDB >= 10 |
|
||||
| Postgresql >= 9.3 |
|
||||
|
||||
Qué base de datos para elegir?
|
||||
Qué base de datos para elegir?
|
||||
|
||||
| Tipo | Uso |
|
||||
|-----------------|-----------------------------------------------------|
|
||||
| Sqlite | un solo usuario o equipo pequeño (casi no hay concurrencia) |
|
||||
| Mysql/Postgres | Equipo grande, configuración de alta disponibilidad |
|
||||
| Sqlite | un solo usuario o equipo pequeño (casi no hay concurrencia) |
|
||||
| Mysql/Postgres | Equipo grande, configuración de alta disponibilidad |
|
||||
|
||||
No usar Sqlite en montajes de NFS, use Sqlite solo cuando tengas un disco con Fast I/O
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ Kanboard esta pre configurado para trabajar con Apache (URL rewriting).
|
|||
|
||||
### Versiones de PHP
|
||||
|
||||
| Versión de PHP |
|
||||
| Versión de PHP |
|
||||
|----------------|
|
||||
| PHP >= 5.3.9 |
|
||||
| PHP 5.4 |
|
||||
|
|
@ -71,7 +71,7 @@ Kanboard esta pre configurado para trabajar con Apache (URL rewriting).
|
|||
| hash | |
|
||||
| ctype | |
|
||||
| session | |
|
||||
| ldap | Solamente para autenticación LDAP |
|
||||
| ldap | Solamente para autenticación LDAP |
|
||||
| Zend OPcache | Recomendado |
|
||||
|
||||
### Extensiones PHP opcionales
|
||||
|
|
@ -83,7 +83,7 @@ Kanboard esta pre configurado para trabajar con Apache (URL rewriting).
|
|||
### Recomendaciones
|
||||
|
||||
- Usar sistemas operativos modernos de Linux o Unix.
|
||||
- El mejor performace se obtienen con la última versión de PHP junto con la operación de OPcode esta activado.
|
||||
- El mejor performace se obtienen con la última versión de PHP junto con la operación de OPcode esta activado.
|
||||
|
||||
|
||||
Lado del cliente
|
||||
|
|
@ -91,7 +91,7 @@ Lado del cliente
|
|||
|
||||
### Browsers [Navegadores]
|
||||
|
||||
Siempre usar el navegador mas moderno o la ultima versión posible:
|
||||
Siempre usar el navegador mas moderno o la ultima versión posible:
|
||||
|
||||
| Browser |
|
||||
|---------------------------------------|
|
||||
|
|
@ -103,9 +103,9 @@ Siempre usar el navegador mas moderno o la ultima versi
|
|||
|
||||
### Dispositivos
|
||||
|
||||
| Device | Resolución de la pantalla |
|
||||
| Device | Resolución de la pantalla |
|
||||
|-------------------|--------------------|
|
||||
| Laptop o desktop | >= 1366 x 768 |
|
||||
| Tablet | >= 1024 x 768 |
|
||||
|
||||
Kanboard aún no está optimizado para smartphones. Está funcionando, pero la interfaz de usuario no es muy cómoda de usar.
|
||||
Kanboard aún no está optimizado para smartphones. Está funcionando, pero la interfaz de usuario no es muy cómoda de usar.
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
Autenticación por proxy inverso
|
||||
Autenticación por proxy inverso
|
||||
============================
|
||||
|
||||
Este metodo de autenticación a menudo es usado por [SSO](http://en.wikipedia.org/wiki/Single_sign-on) (Single Sign-On) especialmente para organizaciones mayores.
|
||||
Este metodo de autenticación a menudo es usado por [SSO](http://en.wikipedia.org/wiki/Single_sign-on) (Single Sign-On) especialmente para organizaciones mayores.
|
||||
|
||||
La autenticación se realiza mediante otro sistema, Kanboard no conoce su contraseña y supongamos que ya está autenticado.
|
||||
La autenticación se realiza mediante otro sistema, Kanboard no conoce su contraseña y supongamos que ya está autenticado.
|
||||
|
||||
Requerimentos
|
||||
------------
|
||||
|
|
@ -15,49 +15,49 @@ o
|
|||
- Apache Auth en el mismo servidor
|
||||
|
||||
|
||||
¿Como funciona esto?
|
||||
¿Como funciona esto?
|
||||
-------------------
|
||||
|
||||
1. Su proxy inverso autentica al usuario y envia el nombre de usuario a través de una cabecera HTTP.
|
||||
1. Su proxy inverso autentica al usuario y envia el nombre de usuario a través de una cabecera HTTP.
|
||||
2. Kanboard recuperar el nombre de usuario de la solicitud
|
||||
- El usuario se crea automáticamente si es necesario
|
||||
- Abrir una nueva sesión Kanboard sin ningún símbolo asumiendo que es válida
|
||||
- El usuario se crea automáticamente si es necesario
|
||||
- Abrir una nueva sesión Kanboard sin ningún símbolo asumiendo que es válida
|
||||
|
||||
Instrucciones de instalación
|
||||
Instrucciones de instalación
|
||||
----------------------------
|
||||
|
||||
### Configuración de su proxy inverso
|
||||
### Configuración de su proxy inverso
|
||||
|
||||
Esto esta fuera del alcance de esta documentación.
|
||||
Debería comprobar la conexión del usuario ya que es enviado por el proxy inverso utilizando una cabecera HTTP.
|
||||
Esto esta fuera del alcance de esta documentación.
|
||||
Debería comprobar la conexión del usuario ya que es enviado por el proxy inverso utilizando una cabecera HTTP.
|
||||
|
||||
### Configuración de Kanboard
|
||||
### Configuración de Kanboard
|
||||
|
||||
Crear un archivo `config.php` copiar el archivo` config.default.php`:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
// Activar / desactivar la autenticación del proxy inverso
|
||||
// Activar / desactivar la autenticación del proxy inverso
|
||||
define('REVERSE_PROXY_AUTH', true); // Set this value to true
|
||||
|
||||
// La cabecera HTTP para recuperar. Si no se especifica, el valor por defecto es REMOTE_USER
|
||||
define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER');
|
||||
|
||||
// El Kanboard predeterminado esta el administrador para su organización.
|
||||
// El Kanboard predeterminado esta el administrador para su organización.
|
||||
// Ya que todo debe ser filtrada por el proxy inverso,
|
||||
// Debe tener un usuario administrador para el arranque.
|
||||
define('REVERSE_PROXY_DEFAULT_ADMIN', 'myadmin');
|
||||
|
||||
// El dominio predeterminado para asumir la dirección de correo electrónico.
|
||||
// En caso de que el nombre de usuario no es una dirección de correo electrónico,
|
||||
// Se actualizará automáticamente como USER@mydomain.com
|
||||
// El dominio predeterminado para asumir la dirección de correo electrónico.
|
||||
// En caso de que el nombre de usuario no es una dirección de correo electrónico,
|
||||
// Se actualizará automáticamente como USER@mydomain.com
|
||||
define('REVERSE_PROXY_DEFAULT_DOMAIN', 'mydomain.com');
|
||||
```
|
||||
|
||||
Notas:
|
||||
|
||||
- Si el proxy esta en el mismo servidor Web que ejecuta Kanboard, según la [CGI protocol](http://www.ietf.org/rfc/rfc3875) el Header será `REMOTE_USER`. Por ejemplo, Apache añadir `REMOTE_USER` por defecto si` Require valid-usuario de la red se establece.
|
||||
- Si el proxy esta en el mismo servidor Web que ejecuta Kanboard, según la [CGI protocol](http://www.ietf.org/rfc/rfc3875) el Header será `REMOTE_USER`. Por ejemplo, Apache añadir `REMOTE_USER` por defecto si` Require valid-usuario de la red se establece.
|
||||
|
||||
- Si Apache es un proxy inverso a otro Apache corriendo Kanboard, la cabecera `REMOTE_USER` no se establece (mismo comportamiento con IIS y Nginx)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ Swimlanes
|
|||
=========
|
||||
|
||||
Swimlanes son separaciones horizontales en tu tablero.
|
||||
Por ejemplo, es útil para separar las versiones de software, dividir las tareas en diferentes productos, equipos o lo que quieras.
|
||||
Por ejemplo, es útil para separar las versiones de software, dividir las tareas en diferentes productos, equipos o lo que quieras.
|
||||
|
||||
Tablero con swimlanes
|
||||
----------------------
|
||||
|
|
@ -12,23 +12,23 @@ Tablero con swimlanes
|
|||
- Tu puedes colapsar los swimlanes haciendo click en el icono de la izquierda
|
||||
- El swimlane por defecto se muestra siempre en la parte superior
|
||||
|
||||
La gestión de swimlanes
|
||||
La gestión de swimlanes
|
||||
-----------------------
|
||||
|
||||
- Todos los proyectos tienen un swimlane predeterminado.
|
||||
- Si hay más de un swimlane, el tablero mostrará todos swimlanes.
|
||||
- Si hay más de un swimlane, el tablero mostrará todos swimlanes.
|
||||
- Usted puede arrastrar y soltar las tareas entre swimlanes.
|
||||
|
||||
Para configurar swimlanes ir a la página de **configuración del proyecto ** y elija la sección **Swimlanes**.
|
||||
Para configurar swimlanes ir a la página de **configuración del proyecto ** y elija la sección **Swimlanes**.
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
A partir de ahí, se puede añadir un nuevo swimlane o cambiar el nombre por defecto.
|
||||
También puede desactivar y cambiar la posición de los diferentes swimlanes.
|
||||
A partir de ahí, se puede añadir un nuevo swimlane o cambiar el nombre por defecto.
|
||||
También puede desactivar y cambiar la posición de los diferentes swimlanes.
|
||||
|
||||
- El swimlane por defecto es siempre en la parte superior, pero se puede ocultarlo.
|
||||
- Swimlanes inactivas no se muestran en el tablero.
|
||||
- **Extracción de una swimlane no elimina tareas **, esas tareas se moverán a la swimlane predeterminada.
|
||||
- **Extracción de una swimlane no elimina tareas **, esas tareas se moverán a la swimlane predeterminada.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@ Desde el formulario de tarea, tu puedes caputarar las tags deseadas:
|
|||
|
||||

|
||||
|
||||
La auto-completacion se forma para mostrar ó sugerir etiquetas disponibles.
|
||||
La auto-completacion se forma para mostrar ó sugerir etiquetas disponibles.
|
||||
|
||||
También puede crear etiquetas directamente desde el formulario de tareas .
|
||||
Por defecto , al crear etiquetas de un formulario de tarea que están asociados al proyecto actual :
|
||||
También puede crear etiquetas directamente desde el formulario de tareas .
|
||||
Por defecto , al crear etiquetas de un formulario de tarea que están asociados al proyecto actual :
|
||||
|
||||

|
||||
|
||||
Todas las tags pueden ser manejadas en configuración del proyecto.
|
||||
Todas las tags pueden ser manejadas en configuración del proyecto.
|
||||
|
||||
Para definir tags globalmente para todos los proyectos, ve a la configuración de la aplicación :
|
||||
Para definir tags globalmente para todos los proyectos, ve a la configuración de la aplicación :
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
Actualizar Kanboard a una nueva versión
|
||||
Actualizar Kanboard a una nueva versión
|
||||
=======================================
|
||||
|
||||
La actualización de Kanboard a una nueva versión es perfecta.
|
||||
La actualización de Kanboard a una nueva versión es perfecta.
|
||||
El proceso se puede resumir simplemente copiar la carpeta de datos a la nueva carpeta Kanboard .
|
||||
Kanboard ejecutará migraciones de bases de datos de forma automática.
|
||||
Kanboard ejecutará migraciones de bases de datos de forma automática.
|
||||
|
||||
Cosas importantes que hacer antes de actualizar
|
||||
--------------------------------------
|
||||
|
|
@ -13,14 +13,14 @@ Cosas importantes que hacer antes de actualizar
|
|||
- Siempre leer el [change log](https://github.com/kanboard/kanboard/blob/master/ChangeLog) para verificar si hay cambios destacados
|
||||
- Siempre cerrar las sesiones de todos los usuarios (eliminar todas las sesiones en el servidor)
|
||||
|
||||
Desde el archivo (Versión estable )
|
||||
Desde el archivo (Versión estable )
|
||||
---------------------------------
|
||||
|
||||
1. Descomprimir el nuevo archivo
|
||||
2. Copiar el contenido de la carpeta de datos en el directorio recién descomprimido
|
||||
2. Copiar el contenido de la carpeta de datos en el directorio recién descomprimido
|
||||
3. Copiar tu `config.php` personalizado si tienes uno
|
||||
4. Copiar tus plugins sin son necesarios
|
||||
5. Asegúrese de que el directorio `data` es escribible por el usuario del servidor web
|
||||
5. Asegúrese de que el directorio `data` es escribible por el usuario del servidor web
|
||||
6. Testearlo
|
||||
7. Eliminar tu viejo directorio del Kanboard
|
||||
|
||||
|
|
@ -29,6 +29,6 @@ Desde el repositorio (development version)
|
|||
|
||||
1. `git pull`
|
||||
2. `composer install --no-dev`
|
||||
3. Inicia la sesión y comprobar si todo está bien
|
||||
3. Inicia la sesión y comprobar si todo está bien
|
||||
|
||||
Nota: Este método se instalará la **versión de desarrollo actual**, utilice a su propio riesgo.
|
||||
Nota: Este método se instalará la **versión de desarrollo actual**, utilice a su propio riesgo.
|
||||
|
|
|
|||
Loading…
Reference in New Issue