diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/api-swimlane-procedures.markdown | 2 | ||||
| -rw-r--r-- | doc/api-task-procedures.markdown | 138 | ||||
| -rw-r--r-- | doc/config.markdown | 11 | ||||
| -rw-r--r-- | doc/es_ES/2fa.markdown | 33 | ||||
| -rw-r--r-- | doc/es_ES/analytics.markdown | 59 | ||||
| -rw-r--r-- | doc/es_ES/api-json-rpc.markdown | 69 | ||||
| -rw-r--r-- | doc/es_ES/bruteforce-protection.markdown | 26 | ||||
| -rw-r--r-- | doc/es_ES/debian-installation.markdown | 65 | ||||
| -rw-r--r-- | doc/es_ES/user-mentions.markdown | 18 | ||||
| -rw-r--r-- | doc/plugin-hooks.markdown | 48 |
10 files changed, 467 insertions, 2 deletions
diff --git a/doc/api-swimlane-procedures.markdown b/doc/api-swimlane-procedures.markdown index c58e56c9..d7c1e28f 100644 --- a/doc/api-swimlane-procedures.markdown +++ b/doc/api-swimlane-procedures.markdown @@ -373,7 +373,7 @@ Response example: ## disableSwimlane -- Purpose: **Enable a swimlane** +- Purpose: **Disable a swimlane** - Parameters: - **project_id** (integer, required) - **swimlane_id** (integer, required) diff --git a/doc/api-task-procedures.markdown b/doc/api-task-procedures.markdown index 934b1e09..2897c81a 100644 --- a/doc/api-task-procedures.markdown +++ b/doc/api-task-procedures.markdown @@ -695,3 +695,141 @@ Response example: ] } ``` + +## getTaskMetadata + +- Purpose: **Get all metadata related to a task by task unique id** +- Parameters: + - **task_id** (integer, required) +- Result on success: **list of metadata** +- Result on failure: **empty array** + +Request example to fetch all the metada of a task: + +```json +{ + "jsonrpc": "2.0", + "method": "getTaskMetadata", + "id": 133280317, + "params": [ + 1 + ] +} +``` + +Response example: + +```json +{ + "jsonrpc": "2.0", + "id": 133280317, + "result": [ + { + "metaKey1": "metaValue1", + "metaKey2": "metaValue2", + ... + } + ] +} +``` + +## getTaskMetadataByName + +- Purpose: **Get metadata related to a task by task unique id and metakey (name)** +- Parameters: + - **task_id** (integer, required) + - **name** (string, required) +- Result on success: **metadata value** +- Result on failure: **empty string** + +Request example to fetch metada of a task by name: + +```json +{ + "jsonrpc": "2.0", + "method": "getTaskMetadataByName", + "id": 133280317, + "params": [ + 1, + "metaKey1" + ] +} +``` + +Response example: + +```json +{ + "jsonrpc": "2.0", + "id": 133280317, + "result": "metaValue1" +} +``` + +## saveTaskMetadata + +- Purpose: **Save/update task metadata** +- Parameters: + - **task_id** (integer, required) + - **array("name" => "value")** (array, required) +- Result on success: **true** +- Result on failure: **false** + +Request example to add/update metada of a task: + +```json +{ + "jsonrpc": "2.0", + "method": "saveTaskMetadata", + "id": 133280317, + "params": [ + 1, + { + "metaName" : "metaValue" + } + ] +} +``` + +Response example: + +```json +{ + "jsonrpc": "2.0", + "id": 133280317, + "result": true +} +``` + +## removeTaskMetadata + +- Purpose: **Remove task metadata by name** +- Parameters: + - **task_id** (integer, required) + - **name** (string, required) +- Result on success: **true** +- Result on failure: **false** + +Request example to remove metada of a task by name: + +```json +{ + "jsonrpc": "2.0", + "method": "removeTaskMetadata", + "id": 133280317, + "params": [ + 1, + "metaKey1" + ] +} +``` + +Response example: + +```json +{ + "jsonrpc": "2.0", + "id": 133280317, + "result": true +} +``` diff --git a/doc/config.markdown b/doc/config.markdown index e51fd54a..853fa6f2 100644 --- a/doc/config.markdown +++ b/doc/config.markdown @@ -37,6 +37,17 @@ Folder for uploaded files define('FILES_DIR', 'data/files'); ``` +Cache parameters +---------------- + +```php +// Available cache drivers are "file" and "memory" +define('CACHE_DRIVER', 'memory'); + +// Cache folder to use if cache driver is "file" (must be writeable by the web server user) +define('CACHE_DIR', DATA_DIR.DIRECTORY_SEPARATOR.'cache'); +``` + Enable/disable url rewrite -------------------------- diff --git a/doc/es_ES/2fa.markdown b/doc/es_ES/2fa.markdown new file mode 100644 index 00000000..18e13b88 --- /dev/null +++ b/doc/es_ES/2fa.markdown @@ -0,0 +1,33 @@ +Autentificación Two-Factor
+===========================
+
+Cada usuario puede habilitar el [two-factor authentication](http://en.wikipedia.org/wiki/Two_factor_authentication).
+Antes de un logeo exitoso, un codigo one-time de (6 caracteres) se le pide a el usuaio para permitir el acceso a kanboard.
+
+Este codigo tiene que ser proporcionado por un software compatible generalmente instalado en tu smartphone
+
+Kanboard usa el [Time-based One-time Password Algorithm](http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) definido en el [RFC 6238](http://tools.ietf.org/html/rfc6238).
+
+Existen muchos softwares compatibles con el standard del sistema TOTP.
+Por ejemplo, tu puedes usar estas aplicaciones libres y de open source:
+
+- [Google Authenticator](https://github.com/google/google-authenticator/) (Android, iOS, Blackberry)
+- [FreeOTP](https://fedorahosted.org/freeotp/) (Android, iOS)
+- [OATH Toolkit](http://www.nongnu.org/oath-toolkit/) (Utilidad en linea de comandos Unix/Linux
+
+Este sistema puede trabajar offline y no es necesario tener un telefono movil
+
+Instalacion
+------------
+
+1. Ir a tu perfil de usuario
+2. Click a la izquierda en **Two factor authentication** y selecionar la caja
+3. Una key secret es geradada para ti
+
+
+
+- Tienes que salvar la key secret en tu software TOTP. Si usas un smartphone, la solución sera mas fácil ya que puedes escanear el Qr code con FreeOTP o Google Authenticator.
+- Cada vez que abras una nueva session , un nuevo código se pedirá.
+- No se olvide de verficar el dispositivo antes de cerrar la sesión
+
+Una nueva key secret es generada cada vez que actives o desactives esta función
\ No newline at end of file diff --git a/doc/es_ES/analytics.markdown b/doc/es_ES/analytics.markdown new file mode 100644 index 00000000..b2a3d7ae --- /dev/null +++ b/doc/es_ES/analytics.markdown @@ -0,0 +1,59 @@ +Analisis
+=========
+
+Cada proyecto tiene una sección de análisis . Dependiendo de cómo se está utilizando Kanboard, se puede ver estos informes :
+
+Repartición de usuarios
+-----------------------
+
+
+
+Esta gráfico de sectores muestra el numero de tareas abiertas asignadas por usuario.
+
+Distribución de tareas
+----------------------
+
+
+
+Este gráfico de sectores da una visión general del numero de tareas abiertas por columnas.
+
+Diagrama de flujo acumulado
+---------------------------
+
+
+
+- Este gráfico muesta el numerto de tareas acumuladas por cada columna a través del tiempo.
+- Cada día , el número total de tareas se registra para cada columna.
+- Si tu quiseras excluir las tareas cerradas, deberá cambiar las configuraciones globales del proyecto
+
+Nota: Necesitas tener al menos dos dias de datos para mirar la gráfica
+
+
+Gráfico Burn down
+
+El gráfico burn down esta dispobible para cada proyecto.
+
+ Esta gráfico es un represtación grafica del trabajo This chart is a graphical representation del trabajo laborado contra el tiempo.
+ Kanboard usa la complejidad o historia de puntos para generar este diagrama.
+ Todos los días, se calcula la suma de los puntos de la historia de cada columna .
+
+Average time spent into each column
+ This chart shows the average time spent into each column for the last 1000 tasks.
+
+ Kanboard uses the task transitions to calculate the data.
+ The time spent is calculated until the task is closed.
+
+
+Promedio de avances y ciclos de tiempos
+
+
+Este gráfico muestra el promedio de avances y ciclo de tiempos para las ultimas 1000 tareas fuera de tiempo.
+
+ El tiempo promedio es el tiempo entre la creación de la tarea y la fecha de finalización
+ El tiempo de ciclo se encuentra entre la fecha de inicio de la tarea especificada y fecha de la tarea finalizada
+ Si la tarea no es cerrada,
+ If the task is not closed, el momento actual se utiliza en lugar de la fecha de finalización.
+
+Esos indicadores se calculan y registran todos los días durante todo el proyecto.
+
+Nota: No olvidar ejecutar todos los dias el cronjob para tener estadísticas precisas.
diff --git a/doc/es_ES/api-json-rpc.markdown b/doc/es_ES/api-json-rpc.markdown new file mode 100644 index 00000000..23088890 --- /dev/null +++ b/doc/es_ES/api-json-rpc.markdown @@ -0,0 +1,69 @@ +Json-RPC API +============ + +Usuario y aplicacion API +------------------------ + +Existen dos tipos de acceso a la API: + +### API de Aplicacion + +- Acceso a la API con el usuario "jsonrpc" y el token disponible en ajustes +- Acceso a todos los procedimientos +- Sin comprobacion de permisos +- No existe sesion de usuario en el servidor +- Ejemplo de posibles clientes: Herramientas para migrar/importar datos, crear tareas desde otros sistemas, etc. + +### API de Usuario + +- Acceso a la API con las credenciales de usuario (Nombre de usuario y contraseña) +- Acceso a un conjunto restringido de procedimientos +- Los permisos del proyecto son comprobados +- Una sesion de usuario es creada en el servidor +- Ejemplo de posibles clientes: Aplicacion de escritotrio / dispositivos moviles, utilidad linea de commandos, etc. + +Seguridad +--------- + +- Siempre usa HTTPS con un certificado valido. +- Si haces una aplicacion movil, es tu trabajo almacenar de forma segura las credenciales de usuario en el dispositivo +- Despues de tres fallas de autenticación en la API de usuario, el usuario final tiene que desbloquear su cuenta utilizando el formulario de inicio de sesión +- La autenticación de dos factores aun no está disponible a través de la API + +Protocolo +--------- + +Kanboard utilizar el protocolo JSON-RPC para interactuar con programas externos. +JSON-RPC es un protocolo de llamada a procedimiento remoto codificado en JSON. Casi lo mismo que XML-RPC, pero con el formato JSON. + +Utilizamos [version 2 of the protocol](http://www.jsonrpc.org/specification). Usted debe llamar a la API con una petición HTTP POST. + +Kanboard soporta requerimientos por lotes, por lo que pueden hacer varias llamadas a la API en una sola petición HTTP. Es particularmente útil para los clientes móviles con una mayor latencia de la red. + +Uso +--- + +- [Authentication](api-authentication.markdown) +- [Examples](api-examples.markdown) +- [Application](api-application-procedures.markdown) +- [Projects](api-project-procedures.markdown) +- [Project Permissions](api-project-permission-procedures.markdown) +- [Boards](api-board-procedures.markdown) +- [Columns](api-column-procedures.markdown) +- [Swimlanes](api-swimlane-procedures.markdown) +- [Categories](api-category-procedures.markdown) +- [Automatic Actions](api-action-procedures.markdown) +- [Tasks](api-task-procedures.markdown) +- [Subtasks](api-subtask-procedures.markdown) +- [Subtask Time Tracking](api-subtask-time-tracking-procedures.markdown) +- [Task Files](api-task-file-procedures.markdown) +- [Project Files](api-project-file-procedures.markdown) +- [Links](api-link-procedures.markdown) +- [Internal Task Links](api-internal-task-link-procedures.markdown) +- [External Task Links](api-external-task-link-procedures.markdown) +- [Comments](api-comment-procedures.markdown) +- [Users](api-user-procedures.markdown) +- [Groups](api-group-procedures.markdown) +- [Group Members](api-group-member-procedures.markdown) +- [Me](api-me-procedures.markdown) + diff --git a/doc/es_ES/bruteforce-protection.markdown b/doc/es_ES/bruteforce-protection.markdown new file mode 100644 index 00000000..2a08fc27 --- /dev/null +++ b/doc/es_ES/bruteforce-protection.markdown @@ -0,0 +1,26 @@ +Protección por fuerza bruta +=========================== + +La protección por fuerza bruta de kanboard funciona en nivel a la cuenta de usuario. + +- Después de 3 fallas de autentificación para el formulario de login muestra una imagen de captcha para evitar bots automatizado orientativos. +- Después de 6 fallas de autentificación la cuenta de usuario esta bloqueada por un periodo de 15 minutos. + +Esta característica funciona para el método de autentificación del usuario API, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión. + +Sin embargo, después de la tercera falla de autenticidad a través de la API de usuario, la cuenta tiene que ser desbloqueado mediante el formulario de inicio de sesión. + +Kanboard no bloquea cualquier dirección de la IP ya que los bots puede utilizar a varios servidores proxy anónimo sin embargo puede utilizar herramientas externas como f[fail2ban](http://www.fail2ban.org) para evitar la exploración masiva. + +Los ajustes predeterminados se pueden cambiar con estas variables de configuración: + +```php +// Habilitar captcha después del fallo 3 de autentificación +define('BRUTEFORCE_CAPTCHA', 3); + +// Bloquear la cuenta después de 6 fallo de autentificación +define('BRUTEFORCE_LOCKDOWN', 6); + +//Bloqueo de la duración de la cuenta en minutos. +define('BRUTEFORCE_LOCKDOWN_DURATION', 15) +``` diff --git a/doc/es_ES/debian-installation.markdown b/doc/es_ES/debian-installation.markdown new file mode 100644 index 00000000..5636744b --- /dev/null +++ b/doc/es_ES/debian-installation.markdown @@ -0,0 +1,65 @@ +Como instalar Kanboard en debian +================================ + +Nota: Algunas caracteristicas de Kanboard requieren que tu corras [un job en background diariamente](cronjob.markdown). + +Debian 8 (Jessie) +----------------- + +Instalar Apache y PHP : + +```bash +apt-get update +apt-get install -y php5 php5-sqlite php5-gd unzip +service apache2 restart +``` + +Instalar Kanboard + +```bash +cd /var/www/html +wget https://kanboard.net/kanboard-latest.zip +unzip kanboard-latest.zip +chown -R www-data:www-data kanboard/data +rm kanboard-latest.zip +``` + +Debian 7 (Wheezy) +----------------- + +Instalar Apache y PHP + +```bash +apt-get update +apt-get install -y php5 php5-sqlite php5-gd unzip +``` + +Instalar Kanboard + +```bash +cd /var/www +wget https://kanboard.net/kanboard-latest.zip +unzip kanboard-latest.zip +chown -R www-data:www-data kanboard/data +rm kanboard-latest.zip +``` + +Debian 6 (Squeeze) +------------------ + +Instalar Apache y PHP + +```bash +apt-get update +apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip +``` + +Instalar Kanboard: + +```bash +cd /var/www +wget https://kanboard.net/kanboard-latest.zip +unzip kanboard-latest.zip +chown -R www-data:www-data kanboard/data +rm kanboard-latest.zip +``` diff --git a/doc/es_ES/user-mentions.markdown b/doc/es_ES/user-mentions.markdown new file mode 100644 index 00000000..1d7410e3 --- /dev/null +++ b/doc/es_ES/user-mentions.markdown @@ -0,0 +1,18 @@ +Menciones de usuarios +===================== + +Kanboard ofrece la posibilidad de enviar notificaciones cuando alguien es mencionado. + +Si usted necesita obtener la atención de alguien en un comentario o una tarea, use el simbolo @ seguido por el usuario. +Kanboard automaticamente desplegara una lista de usuarios: + + + +- Por el momento, solo las descripciones de la tarea y la area de comentarios la función esta activada. +- El usuario mencionado sólo funciona durante las tareas y comentarios creados +- Para notificar, necesita mencionar a los usuarios con su membresia de proyecto +- Cuando alguien se mencionó, este usuario recibirá una notificación. +- El @username mencionado está relacionado con el perfil de usuario. + +La notificacion es enviada de acuerdo a la configuracion del usuario, se le puede enviar un email, una notificaicon via web o mensajes en Slack/Hipchat/Jabber si y cuando se tenga instalados dichos plugins. + diff --git a/doc/plugin-hooks.markdown b/doc/plugin-hooks.markdown index 787c62df..b5d25a40 100644 --- a/doc/plugin-hooks.markdown +++ b/doc/plugin-hooks.markdown @@ -105,7 +105,7 @@ class Plugin extends Base { public function initialize() { - $this->hook->on('template:layout:css', 'plugins/Css/skin.css'); + $this->hook->on('template:layout:css', array('template' => 'plugins/Css/skin.css')); } } ``` @@ -115,6 +115,33 @@ List of asset Hooks: - `template:layout:css` - `template:layout:js` + +Reference hooks +--------------- + +Reference hooks are passing a variable by reference. + +Example: + +```php +$this->hook->on('formatter:board:query', function (\PicoDb\Table &query) { + $query->eq('color_id', 'red'); +}); +``` + +The code above will show only tasks in red on the board. + +List of reference hooks: + +| Hook | Description | +|--------------------------------------------|---------------------------------------------------------------| +| `formatter:board:query` | Alter database query before rendering board | +| `pagination:dashboard:task:query` | Alter database query for tasks pagination on the dashboard | +| `pagination:dashboard:subtask:query` | Alter database query for subtasks pagination on the dashboard | +| `model:task:creation:prepare` | Alter form values before to save a task | +| `model:task:modification:prepare` | Alter form values before to edit a task | + + Template Hooks -------------- @@ -126,6 +153,22 @@ Example to add new content in the dashboard sidebar: $this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar'); ``` +Example to attach a template with local variables: + +```php +$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', array( + 'variable' => 'foobar', +)); +``` + +Example to attach a template with a callable: + +```php +$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', function($hook_param1, $hook_param2) { + return array('new_template_variable' => 'foobar'); // Inject a new variable into the plugin template +}); +``` + This call is usually defined in the `initialize()` method. The first argument is name of the hook and the second argument is the template name. @@ -161,6 +204,7 @@ List of template hooks: | `template:config:email` | Email settings page | | `template:config:integrations` | Integration page in global settings | | `template:dashboard:sidebar` | Sidebar on dashboard page | +| `template:dashboard:show` | Main page of the dashboard | | `template:export:sidebar` | Sidebar on export pages | | `template:import:sidebar` | Sidebar on import pages | | `template:header:dropdown` | Page header dropdown menu (user avatar icon) | @@ -174,6 +218,8 @@ List of template hooks: | `template:project:integrations` | Integration page in projects settings | | `template:project:sidebar` | Sidebar in project settings | | `template:project-user:sidebar` | Sidebar on project user overview page | +| `template:project-list:menu:before` | Project list: before menu entries | +| `template:project-list:menu:after` | Project list: after menu entries | | `template:task:layout:top` | Task layout top (after page header) | | `template:task:details:top` | Task summary top | | `template:task:details:bottom` | Task summary bottom | |
