This commit is contained in:
Teamjungla{CODE}
2016-08-20 13:47:12 -05:00
708 changed files with 30686 additions and 13659 deletions

View File

@@ -1,48 +1,26 @@
API Authentication
==================
API endpoint
------------
URL: `https://YOUR_SERVER/jsonrpc.php`
Default method (HTTP Basic)
---------------------------
The API credentials are available on the settings page.
- API end-point: `https://YOUR_SERVER/jsonrpc.php`
If you want to use the "application api":
### Application credentials
- Username: `jsonrpc`
- Password: API token on the settings page
Otherwise for the "user api", just use the real username/passsword.
### User credentials
- Use the real username and password
The API use the [HTTP Basic Authentication Scheme described in the RFC2617](http://www.ietf.org/rfc/rfc2617.txt).
If there is an authentication error, you will receive the HTTP status code `401 Not Authorized`.
### Authorized User API procedures
- getMe
- getMyDashboard
- getMyActivityStream
- createMyPrivateProject
- getMyProjectsList
- getMyProjects
- getTimezone
- getVersion
- getDefaultTaskColor
- getDefaultTaskColors
- getColorList
- getProjectById
- getTask
- getTaskByReference
- getAllTasks
- openTask
- closeTask
- moveTaskPosition
- createTask
- updateTask
- getBoard
- getProjectActivity
- getMyOverdueTasks
Custom HTTP header
------------------
@@ -64,3 +42,14 @@ curl \
-d '{"jsonrpc": "2.0", "method": "getAllProjects", "id": 1}' \
http://localhost/kanboard/jsonrpc.php
```
Authentication error
--------------------
If the credentials are wrong, you will receive a `401 Not Authorized` and the corresponding JSON response.
Authorization error
-------------------
If the connected user is not allowed to access to the resource, you will receive a `403 Forbidden`.

View File

@@ -0,0 +1,221 @@
External Task Link API Procedures
=================================
## getExternalTaskLinkTypes
- Purpose: **Get all registered external link providers**
- Parameters: **none**
- Result on success: **dict**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"getExternalTaskLinkTypes","id":477370568}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": {
"auto": "Auto",
"attachment": "Attachment",
"file": "Local File",
"weblink": "Web Link"
},
"id": 477370568
}
```
## getExternalTaskLinkProviderDependencies
- Purpose: **Get available dependencies for a given provider**
- Parameters:
- **providerName** (string, required)
- Result on success: **dict**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"getExternalTaskLinkProviderDependencies","id":124790226,"params":["weblink"]}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": {
"related": "Related"
},
"id": 124790226
}
```
## createExternalTaskLink
- Purpose: **Create a new external link**
- Parameters:
- **task_id** (integer, required)
- **url** (string, required)
- **dependency** (string, required)
- **type** (string, optional)
- **title** (string, optional)
- Result on success: **link_id**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"createExternalTaskLink","id":924217495,"params":[9,"http:\/\/localhost\/document.pdf","related","attachment"]}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": 1,
"id": 924217495
}
```
## updateExternalTaskLink
- Purpose: **Update external task link**
- Parameters:
- **task_id** (integer, required)
- **link_id** (integer, required)
- **title** (string, required)
- **url** (string, required)
- **dependency** (string, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc":"2.0",
"method":"updateExternalTaskLink",
"id":1123562620,
"params": {
"task_id":9,
"link_id":1,
"title":"New title"
}
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": true,
"id": 1123562620
}
```
## getExternalTaskLinkById
- Purpose: **Get an external task link**
- Parameters:
- **task_id** (integer, required)
- **link_id** (integer, required)
- Result on success: **dict**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"getExternalTaskLinkById","id":2107066744,"params":[9,1]}
```
Response example:
```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
- Purpose: **Get all external links attached to a task**
- Parameters:
- **task_id** (integer, required)
- Result on success: **list of external links**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"getAllExternalTaskLinks","id":2069307223,"params":[9]}
```
Response example:
```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
- Purpose: **Remove an external link**
- Parameters:
- **task_id** (integer, required)
- **link_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"removeExternalTaskLink","id":552055660,"params":[9,1]}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": true,
"id": 552055660
}
```

View File

@@ -0,0 +1,187 @@
Internal Task Link API Procedures
=================================
## createTaskLink
- Purpose: **Create a link between two tasks**
- Parameters:
- **task_id** (integer, required)
- **opposite_task_id** (integer, required)
- **link_id** (integer, required)
- Result on success: **task_link_id**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "createTaskLink",
"id": 509742912,
"params": [
2,
3,
1
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 509742912,
"result": 1
}
```
## updateTaskLink
- Purpose: **Update task link**
- Parameters:
- **task_link_id** (integer, required)
- **task_id** (integer, required)
- **opposite_task_id** (integer, required)
- **link_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "updateTaskLink",
"id": 669037109,
"params": [
1,
2,
4,
2
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 669037109,
"result": true
}
```
## getTaskLinkById
- Purpose: **Get a task link**
- Parameters:
- **task_link_id** (integer, required)
- Result on success: **task link properties**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getTaskLinkById",
"id": 809885202,
"params": [
1
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 809885202,
"result": {
"id": "1",
"link_id": "1",
"task_id": "2",
"opposite_task_id": "3"
}
}
```
## getAllTaskLinks
- Purpose: **Get all links related to a task**
- Parameters:
- **task_id** (integer, required)
- Result on success: **list of task link**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getAllTaskLinks",
"id": 810848359,
"params": [
2
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 810848359,
"result": [
{
"id": "1",
"task_id": "3",
"label": "relates to",
"title": "B",
"is_active": "1",
"project_id": "1",
"task_time_spent": "0",
"task_time_estimated": "0",
"task_assignee_id": "0",
"task_assignee_username": null,
"task_assignee_name": null,
"column_title": "Backlog"
}
]
}
```
## removeTaskLink
- Purpose: **Remove a link between two tasks**
- Parameters:
- **task_link_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "removeTaskLink",
"id": 473028226,
"params": [
1
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 473028226,
"result": true
}
```

View File

@@ -8,25 +8,25 @@ There are two types of API access:
### Application API
- Access to the API with the user "jsonrpc" and the token available in settings
- Access to the API with the user "jsonrpc" and the token available on the settings page
- Access to all procedures
- No permission checked
- There is no user session on the server
- No access to procedures that starts with "My..." (example: "getMe" or "getMyProjects")
- Example of possible clients: tools to migrate/import data, create tasks from another system, etc...
### User API
- Access to the API with the user credentials (username and password)
- Access to a restricted set of procedures
- The project permissions are checked
- Application role and project permissions are checked for each procedure
- A user session is created on the server
- Example of possible clients: mobile/desktop application, command line utility, etc...
- Example of possible clients: native mobile/desktop application, command line utility, etc...
Security
--------
- Always use HTTPS with a valid certificate
- If you make a mobile application, it's your job to store securely the user credentials on the device
- Always use HTTPS with a valid certificate (avoid clear text communication)
- If you make a mobile application, it's your responsability to store securely the user credentials on the device
- After 3 authentication failure on the user api, the end-user have to unlock his account by using the login form
- Two factor authentication is not yet available through the API
@@ -58,8 +58,12 @@ Usage
- [Automatic Actions](api-action-procedures.markdown)
- [Tasks](api-task-procedures.markdown)
- [Subtasks](api-subtask-procedures.markdown)
- [Files](api-file-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)

View File

@@ -283,188 +283,3 @@ Response example:
"result": true
}
```
## createTaskLink
- Purpose: **Create a link between two tasks**
- Parameters:
- **task_id** (integer, required)
- **opposite_task_id** (integer, required)
- **link_id** (integer, required)
- Result on success: **task_link_id**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "createTaskLink",
"id": 509742912,
"params": [
2,
3,
1
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 509742912,
"result": 1
}
```
## updateTaskLink
- Purpose: **Update task link**
- Parameters:
- **task_link_id** (integer, required)
- **task_id** (integer, required)
- **opposite_task_id** (integer, required)
- **link_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "updateTaskLink",
"id": 669037109,
"params": [
1,
2,
4,
2
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 669037109,
"result": true
}
```
## getTaskLinkById
- Purpose: **Get a task link**
- Parameters:
- **task_link_id** (integer, required)
- Result on success: **task link properties**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getTaskLinkById",
"id": 809885202,
"params": [
1
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 809885202,
"result": {
"id": "1",
"link_id": "1",
"task_id": "2",
"opposite_task_id": "3"
}
}
```
## getAllTaskLinks
- Purpose: **Get all links related to a task**
- Parameters:
- **task_id** (integer, required)
- Result on success: **list of task link**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getAllTaskLinks",
"id": 810848359,
"params": [
2
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 810848359,
"result": [
{
"id": "1",
"task_id": "3",
"label": "relates to",
"title": "B",
"is_active": "1",
"project_id": "1",
"task_time_spent": "0",
"task_time_estimated": "0",
"task_assignee_id": "0",
"task_assignee_username": null,
"task_assignee_name": null,
"column_title": "Backlog"
}
]
}
```
## removeTaskLink
- Purpose: **Remove a link between two tasks**
- Parameters:
- **task_link_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "removeTaskLink",
"id": 473028226,
"params": [
1
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 473028226,
"result": true
}
```

View File

@@ -0,0 +1,221 @@
Project File API Procedures
===========================
## createProjectFile
- Purpose: **Create and upload a new project attachment**
- Parameters:
- **project_id** (integer, required)
- **filename** (integer, required)
- **blob** File content encoded in base64 (string, required)
- Result on success: **file_id**
- Result on failure: **false**
- Note: **The maximum file size depends of your PHP configuration, this method should not be used to upload large files**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "createProjectFile",
"id": 94500810,
"params": [
1,
"My file",
"cGxhaW4gdGV4dCBmaWxl"
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 94500810,
"result": 1
}
```
## getAllProjectFiles
- Purpose: **Get all files attached to a project**
- Parameters:
- **project_id** (integer, required)
- Result on success: **list of files**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getAllProjectFiles",
"id": 1880662820,
"params": {
"project_id": 1
}
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 1880662820,
"result": [
{
"id": "1",
"name": "My file",
"path": "1\/1\/0db4d0a897a4c852f6e12f0239d4805f7b4ab596",
"is_image": "0",
"project_id": "1",
"date": "1432509941",
"user_id": "0",
"size": "15",
"username": null,
"user_name": null
}
]
}
```
## getProjectFile
- Purpose: **Get file information**
- Parameters:
- **project_id** (integer, required)
- **file_id** (integer, required)
- Result on success: **file properties**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getProjectFile",
"id": 318676852,
"params": [
"42",
"1"
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 318676852,
"result": {
"id": "1",
"name": "My file",
"path": "1\/1\/0db4d0a897a4c852f6e12f0239d4805f7b4ab596",
"is_image": "0",
"project_id": "1",
"date": "1432509941",
"user_id": "0",
"size": "15"
}
}
```
## downloadProjectFile
- Purpose: **Download project file contents (encoded in base64)**
- Parameters:
- **project_id** (integer, required)
- **file_id** (integer, required)
- Result on success: **base64 encoded string**
- Result on failure: **empty string**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "downloadProjectFile",
"id": 235943344,
"params": [
"1",
"1"
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 235943344,
"result": "cGxhaW4gdGV4dCBmaWxl"
}
```
## removeProjectFile
- Purpose: **Remove a file associated to a project**
- Parameters:
- **project_id** (integer, required)
- **file_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "removeProjectFile",
"id": 447036524,
"params": [
"1",
"1"
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 447036524,
"result": true
}
```
## removeAllProjectFiles
- Purpose: **Remove all files associated to a project**
- Parameters:
- **project_id** (integer, required)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "removeAllProjectFiles",
"id": 593312993,
"params": {
"project_id": 1
}
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 593312993,
"result": true
}
```

View File

@@ -272,3 +272,36 @@ Response example:
"result": true
}
```
## getProjectUserRole
- Purpose: **Get the role of a user for a given project**
- Parameters:
- **project_id** (integer, required)
- **user_id** (integer, required)
- Result on success: **role name**
- Result on failure: **false**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getProjectUserRole",
"id": 2114673298,
"params": [
"2",
"3"
]
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 2114673298,
"result": "project-viewer"
}
```

View File

@@ -7,6 +7,8 @@ API Project Procedures
- Parameters:
- **name** (string, required)
- **description** (string, optional)
- **owner_id** (integer, optional)
- **identifier** (string, optional)
- Result on success: **project_id**
- Result on failure: **false**
@@ -131,6 +133,55 @@ Response example:
}
```
## getProjectByIdentifier
- Purpose: **Get project information**
- Parameters:
- **identifier** (string, required)
- Result on success: **project properties**
- Result on failure: **null**
Request example:
```json
{
"jsonrpc": "2.0",
"method": "getProjectByIdentifier",
"id": 1620253806,
"params": {
"identifier": "TEST"
}
}
```
Response example:
```json
{
"jsonrpc": "2.0",
"id": 1620253806,
"result": {
"id": "1",
"name": "Test",
"is_active": "1",
"token": "",
"last_modified": "1436119135",
"is_public": "0",
"is_private": "0",
"is_everybody_allowed": "0",
"default_swimlane": "Default swimlane",
"show_default_swimlane": "1",
"description": "test",
"identifier": "TEST",
"url": {
"board": "http:\/\/127.0.0.1:8000\/?controller=board&action=show&project_id=1",
"calendar": "http:\/\/127.0.0.1:8000\/?controller=calendar&action=show&project_id=1",
"list": "http:\/\/127.0.0.1:8000\/?controller=listing&action=show&project_id=1"
}
}
}
```
## getAllProjects
- Purpose: **Get all available projects**
@@ -183,9 +234,11 @@ Response example:
- Purpose: **Update a project**
- Parameters:
- **id** (integer, required)
- **name** (string, required)
- **project_id** (integer, required)
- **name** (string, optional)
- **description** (string, optional)
- **owner_id** (integer, optional)
- **identifier** (string, optional)
- Result on success: **true**
- Result on failure: **false**
@@ -197,7 +250,7 @@ Request example:
"method": "updateProject",
"id": 1853996288,
"params": {
"id": 1,
"project_id": 1,
"name": "PHP client update"
}
}

View File

@@ -0,0 +1,102 @@
Subtask Time Tracking API procedures
====================================
## hasSubtaskTimer
- Purpose: **Check if a timer is started for the given subtask and user**
- Parameters:
- **subtask_id** (integer, required)
- **user_id** (integer, optional)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"hasSubtaskTimer","id":1786995697,"params":[2,4]}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": true,
"id": 1786995697
}
```
## setSubtaskStartTime
- Purpose: **Start subtask timer for a user**
- Parameters:
- **subtask_id** (integer, required)
- **user_id** (integer, optional)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"setSubtaskStartTime","id":1168991769,"params":[2,4]}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": true,
"id": 1168991769
}
```
## setSubtaskEndTime
- Purpose: **Stop subtask timer for a user**
- Parameters:
- **subtask_id** (integer, required)
- **user_id** (integer, optional)
- Result on success: **true**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"setSubtaskEndTime","id":1026607603,"params":[2,4]}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": true,
"id": 1026607603
}
```
## getSubtaskTimeSpent
- Purpose: **Get time spent on a subtask for a user**
- Parameters:
- **subtask_id** (integer, required)
- **user_id** (integer, optional)
- Result on success: **number of hours**
- Result on failure: **false**
Request example:
```json
{"jsonrpc":"2.0","method":"getSubtaskTimeSpent","id":738527378,"params":[2,4]}
```
Response example:
```json
{
"jsonrpc": "2.0",
"result": 1.5,
"id": 738527378
}
```

View File

@@ -1,5 +1,5 @@
API File Procedures
===================
Task File API Procedures
========================
## createTaskFile

View File

@@ -3,25 +3,28 @@ Creating Tasks
From the board, click on the plus sign next to the column name:
![Task creation from the board](https://kanboard.net/screenshots/documentation/task-creation-board.png)
![Task creation from the board](screenshots/task-creation-board.png)
Then the task creation form appears:
![Task creation form](https://kanboard.net/screenshots/documentation/task-creation-form.png)
The only mandatory field is the title.
![Task creation form](screenshots/task-creation-form.png)
Field description:
- **Title**: The title of your task, which will be displayed on the board.
- **Description**: Allow you to add more information about the task, the content can be written in [Markdown](https://kanboard.net/documentation/syntax-guide).
- **Description**: Description that use the [Markdown](syntax-guide.markdown) format.
- **Tags**: The list of tags associated to tasks.
- **Create another task**: Check this box if you want to create a similar task (some fields will be pre-filled).
- **Assignee**: The person that will work on the task.
- **Category**: Only one category can be assigned to a task.
- **Column**: The column where the task will be created, your task will be positioned at the bottom.
- **Color**: Choose the color of the card.
- **Assignee**: The person that will work on the task.
- **Category**: Only one category can be assigned to a task (visible only if the projects have categories).
- **Column**: The column where the task will be created, your task will be positioned at the bottom.
- **Priority**: Task priority, the range can be defined in the project settings, default values are P0 to P3.
- **Complexity**: Used in agile project management (Scrum), the complexity or story points is a number that tells the team how hard the story is. Often, people use the Fibonacci series.
- **Original Estimate**: Estimation in hours to complete the tasks.
- **Reference**: External ID for the task, for example it can be ticket number that come from another system
- **Original Estimate**: Estimation in hours to complete the task.
- **Time Spent**: Time spent working on the task.
- **Start Date**: This is a date time field.
- **Due Date**: Overdue tasks will have a red due date and upcoming due dates will be black on the board. Several date format are accepted in addition to the date picker.
With the preview link, you can see the task description converted from the Markdown syntax.

View File

@@ -3,17 +3,17 @@ How to run Kanboard with Docker?
Kanboard can run easily with [Docker](https://www.docker.com).
The image size is approximately **50MB** and contains:
The image size is approximately **70MB** and contains:
- [Alpine Linux](http://alpinelinux.org/)
- The [process manager S6](http://skarnet.org/software/s6/)
- Nginx
- PHP-FPM
- PHP 7
The Kanboard cronjob is also running everyday at midnight.
URL rewriting is enabled in the included config file.
When the container is running, the memory utilization is around **20MB**.
When the container is running, the memory utilization is around **30MB**.
Use the stable version
----------------------
@@ -64,8 +64,8 @@ Volumes
You can attach 2 volumes to your container:
- Data folder: `/var/www/kanboard/data`
- Plugins folder: `/var/www/kanboard/plugins`
- Data folder: `/var/www/app/data`
- Plugins folder: `/var/www/app/plugins`
Use the flag `-v` to mount a volume on the host machine like described in [official Docker documentation](https://docs.docker.com/engine/userguide/containers/dockervolumes/).
@@ -84,8 +84,8 @@ The list of environment variables is available on [this page](env.markdown).
Config files
------------
- The container already include a custom config file located at `/var/www/kanboard/config.php`.
- You can store your own config file on the data volume: `/var/www/kanboard/data/config.php`.
- The container already include a custom config file located at `/var/www/app/config.php`.
- You can store your own config file on the data volume: `/var/www/app/data/config.php`.
References
----------
@@ -93,4 +93,4 @@ References
- [Official Kanboard images](https://registry.hub.docker.com/u/kanboard/kanboard/)
- [Docker documentation](https://docs.docker.com/)
- [Dockerfile stable version](https://github.com/kanboard/docker)
- [Dockerfile dev version](https://github.com/fguillot/kanboard/blob/master/Dockerfile)
- [Dockerfile dev version](https://github.com/kanboard/kanboard/blob/master/Dockerfile)

View File

@@ -7,4 +7,3 @@ Environment variables maybe useful when Kanboard is deployed as container (Docke
|---------------|---------------------------------------------------------------------------------------------------------------------------------|
| DATABASE_URL | `[database type]://[username]:[password]@[host]:[port]/[database name]`, example: `postgres://foo:foo@myserver:5432/kanboard` |
| DEBUG | Enable/Disable debug mode: "true" or "false" |
| LOG_DRIVER | Logging driver: stdout, stderr, file or syslog |

View File

@@ -0,0 +1,43 @@
Configuración de calendarios
============================
Ir al menu de configuraciones, despues elegir cofiguracion de calendarios que se encuentra al lado izquierdo
![Configuración de calendarios](https://kanboard.net/screenshots/documentation/calendar-settings.png)
Existe dos diferentes calendarios en kanboard :
- Calendarios de projectos
- Calendario por usuario (disponible desde el dashboard)
Calendario por projectos
------------------------
Este calendario visualiza las tareas que se le asignan fechas de vencimiento y las tareas estan basadas sobre
la fecha de creación o el inicio de fecha
### Visualizar tareas basadas en la fecha de creacion
- El inicio de fecha del evento del calendario es la fecha de creacion de la tarea
- El finalización de fecha del evento es cuendo se completa una tarea
### Visualizar tareas basadas en las fechas de inicio
- La fecha de inicio del evento del calendario is la fecha de incio de la tarea
- Esta fecha puede ser definida manualmente.
- La fecha de finalización del evento es la fecha de terminación
- Si no hay una fecha de inicio de la tarea no aparece en el calendario.
Calendarios por usuarios
------------------------
Este calendario visualiza solo las tareas asignadas para el usuario y opcionalmente la información de las subtareas
### Visualizar subtareas basadas en el tiempo de tracking
- Despliega la información de las subtareas desde el calendario o en el registro de la tabla de seguimiento de tiempo
- La intersección con los usuarios timetable es calculad
### Las estimaciones muestran las subtareas ( la previsión de los trabajos futuros )
- Mostrar la estimación de los trabajos futuros de las subtareas en estado de "todo" y con un valor definido " estimación " .

View File

@@ -0,0 +1,115 @@
Configuración del Email
=======================
Configuración de usuarios
-------------------------
Para recibir notificaciones por email los usuarios de Kanboard deben tener
- Activar las notificaciones de su perfil
- Tener una dirección valida de email en su perfil
- Ser miembro del proyecto y que este tenga activo la opción de notificaciones
Nota: El usuario que genera una sesión y que realiza alguna acción no recibe ninguna notificación, sólo otros miembros del proyecto.
Comunicación con correos electronicos
-------------------------------------
There are several email transports available:
- SMTP
- Sendmail
- PHP mail funcion nativa
- Otros métodos que pueden ser proporcionados por externos : Postmark, Sendgrid and Mailgun
Configuración del servidor
--------------------------
Por default, Kanboard usa el bundled PHP mail function para el envio de emails.
Porque usualmente el servidor no requiere una configuración y así tu servidor puede estar listo para enviar emails.
Sin embargo, es posible usar otros metodos, como el protocolo SMTP y Sendmail
### Configuración SMTP
Renombrar el archivo `config.default.php` a `config.php` y modificar estos valores:
```php
// We choose "smtp" as mail transport
define('MAIL_TRANSPORT', 'smtp');
// We define our server settings
define('MAIL_SMTP_HOSTNAME', 'mail.example.com');
define('MAIL_SMTP_PORT', 25);
// Credentials for authentication on the SMTP server (not mandatory)
define('MAIL_SMTP_USERNAME', 'username');
define('MAIL_SMTP_PASSWORD', 'super password');
```
También es posible utilizar una conexión segura, TLS or SSL:
```php
define('MAIL_SMTP_ENCRYPTION', 'ssl'); // Valid values are "null", "ssl" or "tls"
```
### Configuración Sendmail
Por default el comando para el sendmail esta `/usr/sbin/sendmail -bs` Pero usted puede personalizarlo en su archivo de configuración.
Ejemplo:
```php
// We choose "sendmail" as mail transport
define('MAIL_TRANSPORT', 'sendmail');
// If you need to change the sendmail command, replace the value
define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
```
### PHP funcion nativa de email
Esta es la configuración por default
```php
define('MAIL_TRANSPORT', 'mail');
```
### La dirección de correo electrónico del remitente
Por default, los correos electrónicos utilizarán la dirección del remitente `notifications@kanboard.local`.
con este correo no es posible responderle
Tu puedes personalizar esta direccion cambiando el valor de la constante `MAIL_FROM` en tu archivo de configuración
```php
define('MAIL_FROM', 'kanboard@mydomain.tld');
```
Esto puede ser útil si su configuracion del servidor SMTP no acepta una dirección por default.
### Cómo mostrar un enlace a la tarea en las notificaciones ?
Para hacer eso, tu tienes que especificar la URL de tu instalación de tu kanboard [Application Settings](https://kanboard.net/documentation/application-configuration).
De manera predeterminada, no se define nada, por lo que no se mostrará los enlaces.
Ejemplos :
- http://demo.kanboard.net/
- http://myserver/kanboard/
- http://kanboard.mydomain.com/
No se olvide de la barra final `/`.
Es necesario definir de forma manual debido a que Kanboard no puede adivinar la dirección URL de una secuencia de comandos de línea de comandos y algunas personas tienen una configuración muy específica.
Solución de problemas
---------------------
Si no hay mensajes de correo electrónico se envían y que está seguro de que todo está configurado correctamente entonces:
- Verificar el correo de spam
- Habilita el modo debug y verifique el archivo `data/debug.log`, Debería ver el error exacto
- Asegúrese de que el servidor o el proveedor de alojamiento le permite enviar mensajes de correo electrónico
- Si usa Selinux Permitir a PHP enviar emails

View File

@@ -0,0 +1,38 @@
Kanban vs Todo lists and Scrum
==============================
Kanban vs Todo lists
--------------------
### Todo lists (lista de tareas) :
- Fase unica (es solo una lista de tareas)
- Multitarea posible (no eficiente)
### Kanban:
- Multi fases,
- Concentración absoluta para evitar multitareas por que se puede establecer un limite por columna para mejorar el progreso
Kanban vs Scrum
---------------
### Scrum:
- Los sprints son time-boxed, usualmente 2 o 4 semanas
- No permitir cambios durante la iteración
- La estimación es requerida
- Utiliza la velocidad como métrica predeterminada
- El tablero de Scrum se borra entre cada sprint
- Scrum tiene funciones predefinidas como scrum master , los dueños del producto y el equipo
- Una gran cantidad de reuniones: planeaciones, backlogs grooming, daily stand-up, retrospectiva
### Kanban:
- Fluido continuo
- Los cambios se pueden crear en cualquier momento
- La estimacion es opcional
- Usa la iniciativa del tiempo de ciclo para apresurar el performance
- el tablero Kanban board es persistente
- Kanban no impone estrictas restricciones y reuniones, el proceso es mas flexible

View File

@@ -3,25 +3,33 @@ Créer des tâches
Depuis le tableau, cliquez sur le signe plus + à côté du nom de la colonne :
![Création de tâche à partir du tableau](https://kanboard.net/screenshots/documentation/task-creation-board.png)
![Création de tâche à partir du tableau](screenshots/task-creation-board.png)
Le formulaire de création de tâche apparaît :
![Formulaire de création de tâche](https://kanboard.net/screenshots/documentation/task-creation-form.png)
![Formulaire de création de tâche](screenshots/task-creation-form.png)
Le seul champ obligatoire est le titre.
Description des champs :
- **Titre** : le titre de votre tâche, tel qu'il sera affiché sur le tableau.
- **Description** : vous permet d'ajouter davantage d'informations sur la tâche. Le contenu peut être écrit en [Markdown](https://kanboard.net/documentation/syntax-guide).
- **Description** : vous permet d'ajouter davantage d'informations sur la tâche. Le contenu peut être écrit en [Markdown](syntax-guide.markdown).
- **Libellés**: Liste de libellés associés à la tâche.
- **Créer une autre tâche** : cochez cette case si vous souhaitez créer une tâche similaire (les champs seront pré-remplis).
- **Assigné** : la personne qui va travailler sur la tâche.
- **Catégorie** : une seule catégorie peut être assignée à une tâche.
- **Colonne** : la colonne dans laquelle la tâche sera créée. La tâche sera positionnée en bas de cette colonne.
- **Couleur** : Choisissez la couleur de la carte.
- **Complexité** : utilisée dans la gestion de projet agile (Scrum), la complexité des points d'étape est un nombre qui montre à l'équipe le degré de difficulté de l'avancement du projet. Les utilisateurs se servent souvent des suites de Fibonacci.
- **Référence** : Identifiant externe, par exemple cela peut-être un numéro de ticket qui vient d'un système externe.
- **Estimation originale** : estimation du nombre d'heures nécessaire pour terminer les tâches.
- **Date d'échéance** : les tâches dont la date d'échéance est dépassée auront une date d'échéance en rouge et les dates suivantes seront en noir dans le tableau. Plusieurs formats de date sont acceptés, outre le sélecteur de date.
Avec le lien d'aperçu (« Prévisualiser »), vous pouvez voir la description de la tâche convertie depuis la syntaxe Markdown.
Vous créer une tâche de plusieurs manières :
- Avec l'icône avec le signe plus sur le board
- Avec le raccourci clavier "n"
- Depuis le menu déroulant en haut à gauche

View File

@@ -22,6 +22,7 @@ Utiliser Kanboard
- [Types de projets](project-types.markdown)
- [Créer des projets](creating-projects.markdown)
- [Modifier des projets](editing-projects.markdown)
- [Supprimer des projets](removing-projects.markdown)
- [Partager des tableaux et des tâches](sharing-projects.markdown)
- [Actions automatiques](automatic-actions.markdown)
- [Permissions des projets](project-permissions.markdown)

View File

@@ -0,0 +1,10 @@
Supprimer des projets
=====================
Pour supprimer un projet, vous devez être gestionnaire du projet ou administrateur.
Aller dans les **Préférences du projet**, depuis le menu à gauche, en bas, choisissez **Supprimer**.
![Supprimer un Projet](screenshots/project-remove.png)
Supprimer un projet, supprime également toutes les tâches qui appartiennent à ce projet.

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -4,7 +4,7 @@ Deploy Kanboard on Heroku
You can try Kanboard for free on [Heroku](https://www.heroku.com/).
You can use this one click install button or follow the manual instructions below:
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/fguillot/kanboard)
[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/kanboard/kanboard)
Requirements
------------
@@ -17,7 +17,7 @@ Manual instructions
```bash
# Get the last development version
git clone https://github.com/fguillot/kanboard.git
git clone https://github.com/kanboard/kanboard.git
cd kanboard
# Push the code to Heroku (You can also use SSH if git over HTTP doesn't work)

View File

@@ -22,6 +22,7 @@ Using Kanboard
- [Project Types](project-types.markdown)
- [Creating projects](creating-projects.markdown)
- [Editing projects](editing-projects.markdown)
- [Removing projects](removing-projects.markdown)
- [Sharing boards and tasks](sharing-projects.markdown)
- [Automatic actions](automatic-actions.markdown)
- [Project permissions](project-permissions.markdown)
@@ -46,6 +47,7 @@ Using Kanboard
- [Subtasks](subtasks.markdown)
- [Analytics for tasks](analytics-tasks.markdown)
- [User mentions](user-mentions.markdown)
- [Tags](tags.markdown)
### Working with users and groups

View File

@@ -28,7 +28,7 @@ From the repository (development version)
You must install [composer](https://getcomposer.org/) to use this method.
1. `git clone https://github.com/fguillot/kanboard.git`
1. `git clone https://github.com/kanboard/kanboard.git`
2. `composer install --no-dev`
3. Go to the third step just above

View File

@@ -88,18 +88,25 @@ define('ENABLE_URL_REWRITE', true);
Adapt the example above according to your own configuration.
IIS configuration example
---------------------------
-------------------------
Create a web.config in you installation folder:
1. Download and install the Rewrite module for IIS: [Download link](http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module)
2. Create a web.config in you installation folder:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
<configuration>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="index.php" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^" ignoreCase="false" />
<rule name="Kanboard URL Rewrite" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
</conditions>
@@ -109,7 +116,6 @@ Create a web.config in you installation folder:
</rewrite>
</system.webServer>
</configuration>
```
In your Kanboard `config.php`:

View File

@@ -35,6 +35,6 @@ This object must implement the interface `Kanboard\Core\User\UserProviderInterfa
Example of authentication plugins
---------------------------------
- [Authentication providers included in Kanboard](https://github.com/fguillot/kanboard/tree/master/app/Auth)
- [Authentication providers included in Kanboard](https://github.com/kanboard/kanboard/tree/master/app/Auth)
- [Reverse-Proxy Authentication with LDAP support](https://github.com/kanboard/plugin-reverse-proxy-ldap)
- [SMS Two-Factor Authentication](https://github.com/kanboard/plugin-sms-2fa)

View File

@@ -52,4 +52,4 @@ $groupManager->register(new MyCustomLdapBackendGroupProvider($this->container));
Examples
--------
- [Group providers included in Kanboard (LDAP and Database)](https://github.com/fguillot/kanboard/tree/master/app/Group)
- [Group providers included in Kanboard (LDAP and Database)](https://github.com/kanboard/kanboard/tree/master/app/Group)

View File

@@ -155,6 +155,7 @@ List of template hooks:
| `template:board:public:task:after-title` | Task in public board: after title |
| `template:board:task:footer` | Task in board: footer |
| `template:board:task:icons` | Task in board: tooltip icon |
| `template:board:column:dropdown` | Dropdown menu in board columns |
| `template:config:sidebar` | Sidebar on settings page |
| `template:config:application ` | Application settings form |
| `template:config:email` | Email settings page |
@@ -162,7 +163,8 @@ List of template hooks:
| `template:dashboard:sidebar` | Sidebar on dashboard page |
| `template:export:sidebar` | Sidebar on export pages |
| `template:import:sidebar` | Sidebar on import pages |
| `template:header:dropdown` | Dropdown on header |
| `template:header:dropdown` | Page header dropdown menu (user avatar icon) |
| `template:header:creation-dropdown` | Page header dropdown menu (plus icon) |
| `template:layout:head` | Page layout `<head/>` tag |
| `template:layout:top` | Page layout top header |
| `template:layout:bottom` | Page layout footer |
@@ -182,8 +184,9 @@ List of template hooks:
| `template:task:dropdown` | Task dropdown menu in listing pages |
| `template:task:sidebar:actions` | Sidebar on task page (section actions) |
| `template:task:sidebar:information` | Sidebar on task page (section information) |
| `template:task:form:left-column` | Left column in task form |
| `template:task:form:right-column` | Right column in task form |
| `template:task:form:first-column` | 1st column in task form |
| `template:task:form:second-column` | 2nd column in task form |
| `template:task:form:third-column` | 3nd column in task form |
| `template:task:show:top ` | Show task page: top |
| `template:task:show:bottom` | Show task page: bottom |
| `template:task:show:before-description` | Show task page: before description |

View File

@@ -5,7 +5,7 @@ Note: The plugin API is **considered alpha** at the moment.
Plugins are useful to extend the core functionalities of Kanboard, adding features, creating themes or changing the default behavior.
Plugin creators should specify explicitly the compatible versions of Kanboard. Internal code of Kanboard may change over time and your plugin must be tested with new versions. Always check the [ChangeLog](https://github.com/fguillot/kanboard/blob/master/ChangeLog) for breaking changes.
Plugin creators should specify explicitly the compatible versions of Kanboard. Internal code of Kanboard may change over time and your plugin must be tested with new versions. Always check the [ChangeLog](https://github.com/kanboard/kanboard/blob/master/ChangeLog) for breaking changes.
- [Creating your plugin](plugin-registration.markdown)
- [Using plugin hooks](plugin-hooks.markdown)

View File

@@ -0,0 +1,10 @@
Removing Projects
=================
To remove a project, you must be manager of the project or administrator.
Go to the **"Project settings"**, and from the menu on the left, at the bottom, choose **"Remove"**.
![Removing Projects](screenshots/project-remove.png)
Removing a project remove all tasks that belongs to this project.

View File

@@ -51,7 +51,7 @@ Kanboard is pre-configured to work with Apache (URL rewriting).
| PHP Version |
|----------------|
| PHP >= 5.3.3 |
| PHP >= 5.3.9 |
| PHP 5.4 |
| PHP 5.5 |
| PHP 5.6 |

37
doc/ru_RU/2fa.markdown Normal file
View File

@@ -0,0 +1,37 @@
Двух-уровневая аутентификация
=============================
Любой пользователь может включить [двух-уровневую аутентификацию](http://en.wikipedia.org/wiki/Two_factor_authentication). После успешного входа, разовый код (6 знаков) запрашивается у пользователя для получения доступа в Канборд.
Этот код присылается в программу на вашем смартфоне.
Канборд использует [Time-based One-time Password Algorithm](http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) основанный на [RFC 6238](http://tools.ietf.org/html/rfc6238).
Имеется много программ совместимых со стандартной системой TOTP. Например, вы можете использовать эти приложения, бесплатные и с открытым исходным кодом:
- [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/) (Command line utility on Unix/Linux)
Эти системы могут работать офлайн и вам не нужно иметь мобильную связь.
Настройка
---------
1. Перейдите в пользовательский профиль
2. Слева нажмите **Двухфакторная авторизация** и поставте галочку в чекбоке
3. Секретный ключ сгенерируется для вас
![2FA](https://kanboard.net/screenshots/documentation/2fa.png)
Рисунок. Двухуровневая аутентификация.
- Вы должны сохранить секретный ключ в вашей TOTP программе. Если вы используете сматрфон, то просто сосканируйте QR код с помощью FreeOTP или Google Authenticator.
- Каждый раз, когда вы будете входить в Канборд, будет запрашиваться новый код
- Не забудьте протестировать ваше устройство, перед тем как закрыть вашу сессию
Новый секретный ключ генерируется каждый раз при включении/выключении этой возможности.
[Русская документация Kanboard](http://kanboard.ru/doc/)

View File

@@ -0,0 +1,37 @@
Аналитика для задач
===================
На странице детального просмотра задачи, в левом боковом меню, для каждой задачи имеется раздел аналитики.
Затраченное время и время цикла
-------------------------------
![Lead and cycle time](https://kanboard.net/screenshots/documentation/task-lead-cycle-time.png)
Рисунок. Затраченное время и время цикла
- Затраченное время - время между созданием задачи и датой завершения (закрытие задачи).
- Время цикла - время между началом испольнения задачи и датой завершения.
- Если задача не закрыта, то для расчета используется текущее время вместо даты завершения.
- Если дата начала выполнения задачи не указана, то время цикла не может быть расчитано.
**Заметка**: Вы можете настроить автоматическое создание даты начала выполения задачи, когда вы перемещаете задачу в определенную колонку.
Время затраченное в каждой колонке
----------------------------------
![Time spent into each column](https://kanboard.net/screenshots/documentation/time-into-each-column.png)
Рисунок. Время затраченное в каждой колонке
- Этот график показывает сколько времени задача находилась в каждой колонке.
- Затраченное время расчитывается до закрытия задачи.
[Русская документация Kanboard](http://kanboard.ru/doc/)

View File

@@ -0,0 +1,95 @@
Аналитика
=========
Каждый проект имеет анлитический раздел. В зависимости от того как вы используете Канборд, вы можете видеть подобные отчеты:
Перераспределение(загрузка) пользователей
-----------------------------------------
![User repartition](https://kanboard.net/screenshots/documentation/user-repartition.png)
Перераспределение(загрузка) пользователей
Круговая диаграмма, представленная выше, показыает количество открытых задач назначенных определенным пользователям.
Распределение задач
-------------------
![Task distribution](https://kanboard.net/screenshots/documentation/task-distribution.png)
Рисунок. Распределение задач
На рисунке выше, представлена круговая диаграмма, которая показывает количество открытых задач в определенных колонках.
Накопительная диаграмма
-----------------------
![Cumulative flow diagram](https://kanboard.net/screenshots/documentation/cfd.png)
Рисунок. Накопительная диаграмма
- Эта диаграмма отображает количество задач выполненных в каждой колонке в определенный промежуток времени.
- Счетчик задач записывается для каждой колонки каждый день.
- Если вы хотите исключить закрытые задачи, измените [глобальные настройки проекта](project-configuration.markdown).
Заметка: Для того чтобы увидеть этот график, вам нужно иметь, как минимум, данные за два дня.
Диаграмма сгорания
------------------
![Burndown chart](https://kanboard.net/screenshots/documentation/burndown-chart.png)
Рисунок. Диаграмма сгорания
[Диаграмма сгорания](https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D1%81%D0%B3%D0%BE%D1%80%D0%B0%D0%BD%D0%B8%D1%8F_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87) доступна для каждого проекта.
- Эта диаграмма отображает время затраченное на выполнение работы.
- Канборд использует историю задач для генерации этой диаграммы.
- Сумма историй задач для каждой колонки пересчитывается каждый день.
Среднее время затраченное в каждой колонке
------------------------------------------
![Average time spent into each column](https://kanboard.net/screenshots/documentation/average-time-spent-into-each-column.png)
Рисунок. Среднее время затраченное в каждой колонке
Этот график показывает среднее время затраченное в каждой колонке для последних 1000 задач.
- Канборд использует для подсчета данных переходы задач между колонками.
- Затраченное время подсчитывается до закрытия задачи.
Среднее время выполнения и время цикла
--------------------------------------
![Average time spent into each column](https://kanboard.net/screenshots/documentation/average-lead-cycle-time.png)
Рисунок. Среднее время затраченное в каждой колонке
Эта диаграмма показывает Среднее время выполнения и цикла для последних 1000 задач.
- Время выполнения - время между созданием задачи и датой завершения.
- Время цикла - время между указанной датой начала выполнения задачи и датой завершения.
- Если задача не закрыта, текущая дата будет использована вместо даты завершения.
Эти данные подсчитываются и записываются каждый день на протяжении жизни проекта.
Заметка: Не забудьте выполнить [ежедневные cronjob](cronjob.markdown) для того чтобы иметь точную статистику.
[Русская документация Kanboard](http://kanboard.ru/doc/)

View File

@@ -0,0 +1,78 @@
Json-RPC API
============
API пользователя и приложения
-----------------------------
Имеется два типа доступа к API:
### API приложения[¶](#application-api "Ссылка на этот заголовок")
- Доступ к API осуществляется с использованием пользователя “jsonrpc” и ключа, доступного в настройках
- Доступ ко всем процедурам
- Не проверяются права доступа
- Нет пользовательской сессии на сервере
- Этот доступ можно использовать для: утилит миграции/импорта данных, создания задач из других систем и т.д.
### API пользователя[¶](#user-api "Ссылка на этот заголовок")
- Доступ к API под пользовательскими учетными данными (имя пользователя и пароль)
- Доступ к ограниченному набору процедур
- Проверка прав доступа к проекту
- На сервере создается пользовательская сессия
- Этот доступ можно использовать для клиентов: мобильных/десктопных приложений, утилит коммандной строки и т.д.
Безопасность
------------
- Всегда используйте протокол HTTPS с действительным сертификатом
- Если вы делаете мобильное приложение, позаботьтесь о безопасном хранении учетных данных пользователя на мобильном устройстве
- После 3 неправильных подключений к пользовательскому api, пользователь может разблокировать свою учетную запись только с использованием формы входа
- Двухуровневая аутентификация пока не доступна через API
Протокол
--------
Канборд использует протокол Json-RPC для взаимодействия с внешними программами.
JSON-RPC - протокол удаленного вызова процедур в формате JSON. По сути своей, тот же XML-RPC, но использующий формат JSON.
Мы используем [протокол версии 2](http://www.jsonrpc.org/specification). Вы можете вызывать API используя `POST`{.docutils .literal} HTTP запрос.
Канборд поддерживает пакетные запросы, поэтому вы можете делать многократные API вызовы в одном HTTP запросе. Это, в частности, удобно для мобильных клиентов с высокой сетевой задержкой.
Использование
-------------
- [Аутентификация](api-authentication.markdown)
- [Примеры](api-examples.markdown)
- [Приложение](api-application-procedures.markdown)
- [Проекты](api-project-procedures.markdown)
- [Права доступа к проекту](api-project-permission-procedures.markdown)
- [Доски](api-board-procedures.markdown)
- [Колонки](api-column-procedures.markdown)
- [Дорожки](api-swimlane-procedures.markdown)
- [Категории](api-category-procedures.markdown)
- [Автоматические дейсвия](api-action-procedures.markdown)
- [Задачи](api-task-procedures.markdown)
- [Подзадачи](api-subtask-procedures.markdown)
- [Файлы](api-file-procedures.markdown)
- [Ссылки](api-link-procedures.markdown)
- [Комментарии](api-comment-procedures.markdown)
- [Пользователи](api-user-procedures.markdown)
- [Группы](api-group-procedures.markdown)
- [Члены группы](api-group-member-procedures.markdown)
- [Специфичные запросы пользователя](api-me-procedures.markdown)
[Русская документация Kanboard](http://kanboard.ru/doc/)

View File

@@ -0,0 +1,54 @@
Настройки приложения
====================
Некоторые параметры для приложения могут быть изменены на странице настроек. Только администратор может сделать эти настройки.
Выберите в правом выпадающем меню **Настройки**, затем в слева выберите **Настройки приложения**.
![Application settings](https://kanboard.net/screenshots/documentation/application-settings.png)
Рисунок. Настройки приложения
URL приложения[](#application-url "Ссылка на этот заголовок")
--------------------------------------------------------------
Этот параметр используется для email уведомлений. В тексте сообщения будет содержаться ссылка на задачу в Канборде.
Язык[](#language "Ссылка на этот заголовок")
---------------------------------------------
Язык приложения может быть изменен в любое время. Язык устанавливается для всех пользователей Канборд.
Часовой пояс[](#time-zone "Ссылка на этот заголовок")
------------------------------------------------------
По умолчанию, Канборд использует часовой пояс UTC, но вы можете указать любой часовой пояс. Список содержит все поддерживаемые часовые пояса для вашего веб сервера.
Формат даты[](#date-format "Ссылка на этот заголовок")
-------------------------------------------------------
Формать даты, который используется для полей дата. Например, дата завершения задачи.
Канборд поддерживает 4 разных формата:
- ДД/ММ/ГГГГ
- ММ/ДД/ГГГГ (по умолчанию)
- ГГГГ/ММ/ДД
- ММ.ДД.ГГГГ
Формат [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) всегда принимается (YYYY-MM-DD or YYYY\_MM\_DD).
Пользовательский стиль CSS[](#custom-stylesheet "Ссылка на этот заголовок")
----------------------------------------------------------------------------
Вы можете сделать свой стиль CSS для Канборд или улучшить имеющийся стиль.
[Русская документация Kanboard](http://kanboard.ru/doc/)

53
doc/ru_RU/assets.markdown Normal file
View File

@@ -0,0 +1,53 @@
Как создать asset (Javascript и CSS файлы)
==========================================
Файлы CSS стилей и Javascript объединены вместе и минимизированы.
- Оригинальные файлы CSS хранятся в каталоге `assets/css/src/*.css`{.docutils .literal}
- Оригинальные файлы Javascript хранятся в каталоге `assets/js/src/*.js`{.docutils .literal}
- `assets/*/vendor.min.*`{.docutils .literal} - внешние зависимости объединены и минимизированы
- `assets/*/app.min.*`{.docutils .literal} - исходный код приложения объединены и минимизированы
Требования[](#requirements "Ссылка на этот заголовок")
-------------------------------------------------------
- [NodeJS](https://nodejs.org/) с `npm`{.docutils .literal}
Сборка файлов Javascript и CSS[](#building-javascript-and-css-files "Ссылка на этот заголовок")
------------------------------------------------------------------------------------------------
Канборд использует [Gulp](http://gulpjs.com/) для сборки asset и [Bower](http://bower.io/) для управления зависимостями. Эти утилиты устанавлены в проекте как зависимости NodeJS.
### Запустить все[¶](#run-everything "Ссылка на этот заголовок")
make static
### Собрать `vendor.min.js`{.docutils .literal} и `vendor.min.css`{.docutils .literal}[¶](#build-vendor-min-js-and-vendor-min-css "Ссылка на этот заголовок")
gulp vendor
### Собрать `app.min.js`{.docutils .literal}[¶](#build-app-min-js "Ссылка на этот заголовок")
gulp js
### Собрать `app.min.css`{.docutils .literal}[¶](#build-app-min-css "Ссылка на этот заголовок")
gulp css
Примечание[](#notes "Ссылка на этот заголовок")
------------------------------------------------
Сборка asset невозможна из архива Kanboard, вы должны клонировать репозиторий.
[Русская документация Kanboard](http://kanboard.ru/doc/)

View File

@@ -0,0 +1,128 @@
Автоматизация процессов
=======================
Для минимизации пользовательских действий, Kanboard поддерживает автоматизацию процессов.
Каждый автоматизированный процесс представляет следующее:
- Ожидание наступления события
- Выполняется действие при наступлении этого события
- В результате устанавливается определенный параметр
Каждый проект может иметь свой набор автоматических процессов. Автоматические процессы доступны в панеле настроек (**Меню** -\> **Настройки**) **Автоматические действия**.
Добавление нового действия[](#add-a-new-action "Ссылка на этот заголовок")
---------------------------------------------------------------------------
Нажмите на ссылку **Добавить новое действие**.
![Automatique action](screenshots/automatic-action-creation.png)
Рисунок. Автоматическое действие.
- Выберете действие
- Затем, выберете событие
- И в завершении, задайте параметр
Список доступных действий[](#list-of-available-actions "Ссылка на этот заголовок")
-----------------------------------------------------------------------------------
- Создать комментарий из внешнего источника
- Добавлять запись при перемещении задачи между колонками
- Автоматически назначать категорию по цвету
- Изменить категорию основываясь на внешнем ярлыке
- Автоматически назначать категории на основе ссылки
- Автоматически назначать цвет по категории
- Назначить цвет, когда задача перемещается в определенную колонку
- Изменение цвета задач при использовании ссылки на определенные задачи
- Назначить определенный цвет пользователю
- Назначить задачу тому кто выполнит действие
- Назначить задачу пользователю, который произвел изменение в колонке
- Назначить задачу определенному пользователю
- Изменить назначенного основываясь на внешнем имени пользователя
- Закрыть задачу
- Закрыть задачу в выбранной колонке
- Создать задачу из внешнего источника
- Создать дубликат задачи в другом проекте
- Отправить задачу по email
- Переместить задачу в другой проект
- Переместить задачу в другую колонку, когда она назначена пользователю
- Переносить задачи в другую колонку при изменении категории
- Переместить задачу в другую колонку, когда назначение снято
- Открыть задачу
- Автоматическое обновление даты начала
Примеры[](#examples "Ссылка на этот заголовок")
------------------------------------------------
Здесь предствалены примеры использованные в реальной жизни:
### Когда я перемещаю задачу в колонку “Выполнено”, автоматически закрывать эту задачу[¶](#when-i-move-a-task-to-the-column-done-automatically-close-this-task "Ссылка на этот заголовок")
- Выберите действия: **Закрыть задачу в выбранной колонке**
- Выберите событие: **Переместить задачу в другую колонку**
- Установите параметр действия: **Колонка = Выполнено** (это колонка в которую будет перемещена задача)
### Когда я перемещаю задачу в колонку “На утверждение”, назначить эту задачу определенному пользователю.[¶](#when-i-move-a-task-to-the-column-to-be-validated-assign-this-task-to-a-specific-user "Ссылка на этот заголовок")
- Выберите действие: **Назначить задачу определенному пользователю**
- Выберите событие: **Переместить задачу в другую колонку**
- Установите параметр действия: **Колонка = На утверждение** и **Пользователь = Петр** (Петр - наш тестировщик)
### Когда я перемещаю задачу в колонку “В работе”, назначить эту задачу определенному пользователю[¶](#when-i-move-a-task-to-the-column-work-in-progress-assign-this-task-to-the-current-user "Ссылка на этот заголовок")
- Выберите действие: **Назначить задачу пользователю, который произвел изменение в колонке**
- Выберите событие: **Переместить задачу в другую колонку**
- Установите параметр действия: **Колонка = В работе**
### Когда задача выполнена, скопировать эту задачу в другой проект[¶](#when-a-task-is-completed-duplicate-this-task-to-another-project "Ссылка на этот заголовок")
Предположим, мы имеем два проекта “Заказы покупателей” и “Производство”. Когда заказ в проекте “Заказы покупателей” утвержден, копируем этот заказ в проект “Производство”.
- Выбираем действие: **Создать дубликат задачи в другом проекте**
- Выбираем событие: **Завершение задачи**
- Установите параметр действия: **Колонка = Утвержден** и **Проект = Производство**
### Когда задача перемещена в последнюю колонку, переместить эту задачу в другой проект[¶](#when-a-task-is-moved-to-the-last-column-move-the-exact-same-task-to-another-project "Ссылка на этот заголовок")
Предположим, мы имеем два проекта “Идеи” и “Разработка”, когда идея утверждена, перемещаем эту задачу в проект “Разработка”.
- Выберите действие: **Переместить задачу в другой проект**
- Выберите событие: **Переместить задачу в другую колонку**
- Установите параметр действия: **Колонка = Утверждена** и **Проект = Разработка**
### Я хочу назначать автоматически цвет для пользователя Петр[¶](#i-want-to-assign-automatically-a-color-to-the-user-bob "Ссылка на этот заголовок")
- Выберите действие: **Назначить определенный цвет пользователю**
- Выберите событие: **Изменен назначенный**
- Установите параметр действия: **Цвет = Зеленый** и **Назначена = Петр**
### Я хочу назначить цвет автоматически для определенной категории “Важные запросы”[¶](#i-want-to-assign-a-color-automatically-to-the-defined-category-feature-request "Ссылка на этот заголовок")
- Выберите действие: **Автоматически назначать цвет по категории**
- Выберите событие: **Создание или изменение задачи**
- Установите параметр действия: **Цвет = Голубой** и **Категория = Важные запросы**
### Я хочу устанавливать дату начала автоматически когда задача перемещена в колонку “В работе”[¶](#i-want-to-set-the-start-date-automatically-when-the-task-is-moved-to-the-column-work-in-progress "Ссылка на этот заголовок")
- Выберите действие: **Автоматическое обновление даты начала**
- Выберите событие: **Переместить задачу в другую колонку**
- Установите параметр действия: **Колонка = В работе**
[Русская документация Kanboard](http://kanboard.ru/doc/)

View File

@@ -0,0 +1,31 @@
Компактное и развернутое отображение задач
==========================================
Задачи на Доске могут быть отображены в компактном или развернутом виде. Переключение между компактным и развернутым видом может быть выполнено с помощью горячей клавиши **“s”** или в раскрывающемся Меню (слева вверху) -\> Развернуть задачи или Свернуть задачи.
Компактный вид[](#collapsed-mode "Ссылка на этот заголовок")
-------------------------------------------------------------
![Tasks collapsed](screenshots/board-collapsed-mode.png)
Рисунок. Задачи представлены в компактном виде
- Если для задачи назначен исполнитель, то инициалы исполнителя показываются рядом с номером задачи;
- Если заголовок задачи слишком длинный, вы можете подвести курсор мышки над задачей и полный заголовок задачи отобразится во всплывающем окне.
Развернутый вид[](#expanded-mode "Ссылка на этот заголовок")
-------------------------------------------------------------
![Tasks expanded](screenshots/board-expanded-mode.png)
Рисунок. Развернутый вид
[Русская документация Kanboard](http://kanboard.ru/doc/)

View File

@@ -0,0 +1,39 @@
Настройка Доски
===============
В правом верхнем выпадающем меню выберите **Настройки**, затем, слева, выберите **Настройки Доски**.
![Board settings](https://kanboard.net/screenshots/documentation/board-settings.png)
Рисунок. Настройка Доски
Подстветка задач[](#task-highlighting "Ссылка на этот заголовок")
------------------------------------------------------------------
Эта опция позволяет подсвечивать задачу, которая была перенесена недавно.
Установите значение 0 для выключения подсветки. По умолчанию установлено значение 172800 секунд (2 дня)
Перемещенные задачи будут подсвечиваться в течении двух дней.
Период обновления для публичных досок[](#refresh-interval-for-public-board "Ссылка на этот заголовок")
-------------------------------------------------------------------------------------------------------
Если вы создаете публичную доску, то страница, по умолчанию, будет обновляться каждые 60 секунд.
Период обновления для частных досок[](#refresh-interval-for-private-board "Ссылка на этот заголовок")
------------------------------------------------------------------------------------------------------
Когда в вашем браузере открыта Доска, Канборд проверяет обновления изменение каждые 10 секунд.
Процесс обновления реализован по технологии Ajax.
[Русская документация Kanboard](http://kanboard.ru/doc/)

Some files were not shown because too many files have changed in this diff Show More