diff options
Diffstat (limited to 'doc')
207 files changed, 11892 insertions, 477 deletions
diff --git a/doc/api-authentication.markdown b/doc/api-authentication.markdown index 962e5b1b..3ba1e8f5 100644 --- a/doc/api-authentication.markdown +++ b/doc/api-authentication.markdown @@ -1,48 +1,26 @@ API Authentication ================== -Default method (HTTP Basic) ---------------------------- +API endpoint +------------ + +URL: `https://YOUR_SERVER/jsonrpc.php` -The API credentials are available on the settings page. -- API end-point: `https://YOUR_SERVER/jsonrpc.php` +Default method (HTTP Basic) +--------------------------- -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`. diff --git a/doc/api-external-task-link-procedures.markdown b/doc/api-external-task-link-procedures.markdown new file mode 100644 index 00000000..85f67b60 --- /dev/null +++ b/doc/api-external-task-link-procedures.markdown @@ -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 +} +``` diff --git a/doc/api-internal-task-link-procedures.markdown b/doc/api-internal-task-link-procedures.markdown new file mode 100644 index 00000000..eca0d886 --- /dev/null +++ b/doc/api-internal-task-link-procedures.markdown @@ -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 +} +``` diff --git a/doc/api-json-rpc.markdown b/doc/api-json-rpc.markdown index bb14b008..ab1056f0 100644 --- a/doc/api-json-rpc.markdown +++ b/doc/api-json-rpc.markdown @@ -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) diff --git a/doc/api-link-procedures.markdown b/doc/api-link-procedures.markdown index 6113316f..44e78a2a 100644 --- a/doc/api-link-procedures.markdown +++ b/doc/api-link-procedures.markdown @@ -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 -} -``` diff --git a/doc/api-project-file-procedures.markdown b/doc/api-project-file-procedures.markdown new file mode 100644 index 00000000..fdc5da1a --- /dev/null +++ b/doc/api-project-file-procedures.markdown @@ -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 +} +``` diff --git a/doc/api-project-permission-procedures.markdown b/doc/api-project-permission-procedures.markdown index 2844ae3c..d5e9b066 100644 --- a/doc/api-project-permission-procedures.markdown +++ b/doc/api-project-permission-procedures.markdown @@ -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" +} +``` diff --git a/doc/api-project-procedures.markdown b/doc/api-project-procedures.markdown index 6cc1b15b..09000e68 100644 --- a/doc/api-project-procedures.markdown +++ b/doc/api-project-procedures.markdown @@ -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" } } diff --git a/doc/api-subtask-time-tracking-procedures.markdown b/doc/api-subtask-time-tracking-procedures.markdown new file mode 100644 index 00000000..67447623 --- /dev/null +++ b/doc/api-subtask-time-tracking-procedures.markdown @@ -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 +} +``` 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-file-procedures.markdown b/doc/api-task-file-procedures.markdown index 930be733..51840bea 100644 --- a/doc/api-file-procedures.markdown +++ b/doc/api-task-file-procedures.markdown @@ -1,5 +1,5 @@ -API File Procedures -=================== +Task File API Procedures +======================== ## createTaskFile 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/creating-tasks.markdown b/doc/creating-tasks.markdown index 2ebdbb9c..99dce713 100644 --- a/doc/creating-tasks.markdown +++ b/doc/creating-tasks.markdown @@ -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). +- **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. +- **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. -- **Color**: Choose the color of the card. +- **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. diff --git a/doc/docker.markdown b/doc/docker.markdown index 3f13e954..5b77da76 100644 --- a/doc/docker.markdown +++ b/doc/docker.markdown @@ -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) diff --git a/doc/env.markdown b/doc/env.markdown index 28f14b18..902066d7 100644 --- a/doc/env.markdown +++ b/doc/env.markdown @@ -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 | 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
+
+![2FA](https://kanboard.net/screenshots/documentation/2fa.png)
+
+- Tienes que salvar la key secret en tu software TOTP. Si usas un smartphone, la solución sera mas fácil ya que puedes escanear el Qr code con FreeOTP o Google Authenticator.
+- Cada vez que abras una nueva session , un nuevo código se pedirá.
+- No se olvide de verficar el dispositivo antes de cerrar la sesión
+
+Una nueva key secret es generada cada vez que actives o desactives esta función
\ No newline at end of file diff --git a/doc/es_ES/analytics.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
+-----------------------
+
+![User repartition](https://kanboard.net/screenshots/documentation/user-repartition.png)
+
+Esta gráfico de sectores muestra el numero de tareas abiertas asignadas por usuario.
+
+Distribución de tareas
+----------------------
+
+![Task distribution](https://kanboard.net/screenshots/documentation/task-distribution.png)
+
+Este gráfico de sectores da una visión general del numero de tareas abiertas por columnas.
+
+Diagrama de flujo acumulado
+---------------------------
+
+![Cumulative flow diagram](https://kanboard.net/screenshots/documentation/cfd.png)
+
+- Este gráfico muesta el numerto de tareas acumuladas por cada columna a través del tiempo.
+- Cada día , el número total de tareas se registra para cada columna.
+- Si tu quiseras excluir las tareas cerradas, deberá cambiar las configuraciones globales del proyecto
+
+Nota: Necesitas tener al menos dos dias de datos para mirar la gráfica
+
+
+Gráfico Burn down
+
+El gráfico burn down esta dispobible para cada proyecto.
+
+ Esta gráfico es un represtación grafica del trabajo This chart is a graphical representation del trabajo laborado contra el tiempo.
+ Kanboard usa la complejidad o historia de puntos para generar este diagrama.
+ Todos los días, se calcula la suma de los puntos de la historia de cada columna .
+
+Average time spent into each column
+ This chart shows the average time spent into each column for the last 1000 tasks.
+
+ Kanboard uses the task transitions to calculate the data.
+ The time spent is calculated until the task is closed.
+
+
+Promedio de avances y ciclos de tiempos
+
+
+Este gráfico muestra el promedio de avances y ciclo de tiempos para las ultimas 1000 tareas fuera de tiempo.
+
+ El tiempo promedio es el tiempo entre la creación de la tarea y la fecha de finalización
+ El tiempo de ciclo se encuentra entre la fecha de inicio de la tarea especificada y fecha de la tarea finalizada
+ Si la tarea no es cerrada,
+ If the task is not closed, el momento actual se utiliza en lugar de la fecha de finalización.
+
+Esos indicadores se calculan y registran todos los días durante todo el proyecto.
+
+Nota: No olvidar ejecutar todos los dias el cronjob para tener estadísticas precisas.
diff --git a/doc/es_ES/api-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/calendar-configuration.markdown b/doc/es_ES/calendar-configuration.markdown new file mode 100644 index 00000000..ccd83204 --- /dev/null +++ b/doc/es_ES/calendar-configuration.markdown @@ -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 " . 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/email-configuration.markdown b/doc/es_ES/email-configuration.markdown new file mode 100644 index 00000000..576c62ea --- /dev/null +++ b/doc/es_ES/email-configuration.markdown @@ -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 diff --git a/doc/es_ES/kanban-vs-todo-and-scrum.markdown b/doc/es_ES/kanban-vs-todo-and-scrum.markdown new file mode 100644 index 00000000..6e8d9e6c --- /dev/null +++ b/doc/es_ES/kanban-vs-todo-and-scrum.markdown @@ -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 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: + +![User Mention](screenshots/mention-autocomplete.png) + +- Por el momento, solo las descripciones de la tarea y la area de comentarios la función esta activada. +- El usuario mencionado sólo funciona durante las tareas y comentarios creados +- Para notificar, necesita mencionar a los usuarios con su membresia de proyecto +- Cuando alguien se mencionó, este usuario recibirá una notificación. +- El @username mencionado está relacionado con el perfil de usuario. + +La notificacion es enviada de acuerdo a la configuracion del usuario, se le puede enviar un email, una notificaicon via web o mensajes en Slack/Hipchat/Jabber si y cuando se tenga instalados dichos plugins. + diff --git a/doc/fr/2fa.markdown b/doc/fr_FR/2fa.markdown index 2ecaa10b..2ecaa10b 100644 --- a/doc/fr/2fa.markdown +++ b/doc/fr_FR/2fa.markdown diff --git a/doc/fr/analytics-tasks.markdown b/doc/fr_FR/analytics-tasks.markdown index 0eb89e34..0eb89e34 100644 --- a/doc/fr/analytics-tasks.markdown +++ b/doc/fr_FR/analytics-tasks.markdown diff --git a/doc/fr/analytics.markdown b/doc/fr_FR/analytics.markdown index 0b94f272..0b94f272 100644 --- a/doc/fr/analytics.markdown +++ b/doc/fr_FR/analytics.markdown diff --git a/doc/fr/application-configuration.markdown b/doc/fr_FR/application-configuration.markdown index 12768f03..12768f03 100644 --- a/doc/fr/application-configuration.markdown +++ b/doc/fr_FR/application-configuration.markdown diff --git a/doc/fr/application-configuration.markup b/doc/fr_FR/application-configuration.markup index 12768f03..12768f03 100644 --- a/doc/fr/application-configuration.markup +++ b/doc/fr_FR/application-configuration.markup diff --git a/doc/fr/automatic-actions.markdown b/doc/fr_FR/automatic-actions.markdown index f136b98c..f136b98c 100644 --- a/doc/fr/automatic-actions.markdown +++ b/doc/fr_FR/automatic-actions.markdown diff --git a/doc/fr/board-collapsed-expanded.markdown b/doc/fr_FR/board-collapsed-expanded.markdown index 29396772..29396772 100644 --- a/doc/fr/board-collapsed-expanded.markdown +++ b/doc/fr_FR/board-collapsed-expanded.markdown diff --git a/doc/fr/board-configuration.markdown b/doc/fr_FR/board-configuration.markdown index f7f8be33..f7f8be33 100644 --- a/doc/fr/board-configuration.markdown +++ b/doc/fr_FR/board-configuration.markdown diff --git a/doc/fr/board-horizontal-scrolling-and-compact-view.markdown b/doc/fr_FR/board-horizontal-scrolling-and-compact-view.markdown index 7ad9c23c..7ad9c23c 100644 --- a/doc/fr/board-horizontal-scrolling-and-compact-view.markdown +++ b/doc/fr_FR/board-horizontal-scrolling-and-compact-view.markdown diff --git a/doc/fr/board-show-hide-columns.markdown b/doc/fr_FR/board-show-hide-columns.markdown index 8eac0b2c..8eac0b2c 100644 --- a/doc/fr/board-show-hide-columns.markdown +++ b/doc/fr_FR/board-show-hide-columns.markdown diff --git a/doc/fr/calendar-configuration.markdown b/doc/fr_FR/calendar-configuration.markdown index 6494568a..6494568a 100644 --- a/doc/fr/calendar-configuration.markdown +++ b/doc/fr_FR/calendar-configuration.markdown diff --git a/doc/fr/calendar.markdown b/doc/fr_FR/calendar.markdown index 2ceeeaa4..2ceeeaa4 100644 --- a/doc/fr/calendar.markdown +++ b/doc/fr_FR/calendar.markdown diff --git a/doc/fr/closing-tasks.markdown b/doc/fr_FR/closing-tasks.markdown index 022a1dfd..022a1dfd 100644 --- a/doc/fr/closing-tasks.markdown +++ b/doc/fr_FR/closing-tasks.markdown diff --git a/doc/fr/create-tasks-by-email.markdown b/doc/fr_FR/create-tasks-by-email.markdown index dd06a1c4..dd06a1c4 100644 --- a/doc/fr/create-tasks-by-email.markdown +++ b/doc/fr_FR/create-tasks-by-email.markdown diff --git a/doc/fr/creating-projects.markdown b/doc/fr_FR/creating-projects.markdown index e5da7cc6..e5da7cc6 100644 --- a/doc/fr/creating-projects.markdown +++ b/doc/fr_FR/creating-projects.markdown diff --git a/doc/fr/creating-tasks.markdown b/doc/fr_FR/creating-tasks.markdown index 9b7fa274..c3cfed01 100644 --- a/doc/fr/creating-tasks.markdown +++ b/doc/fr_FR/creating-tasks.markdown @@ -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 diff --git a/doc/fr/currency-rate.markdown b/doc/fr_FR/currency-rate.markdown index e84acd31..e84acd31 100644 --- a/doc/fr/currency-rate.markdown +++ b/doc/fr_FR/currency-rate.markdown diff --git a/doc/fr/duplicate-move-tasks.markdown b/doc/fr_FR/duplicate-move-tasks.markdown index 07c863d0..07c863d0 100644 --- a/doc/fr/duplicate-move-tasks.markdown +++ b/doc/fr_FR/duplicate-move-tasks.markdown diff --git a/doc/fr/editing-projects.markdown b/doc/fr_FR/editing-projects.markdown index 2186a1b9..2186a1b9 100644 --- a/doc/fr/editing-projects.markdown +++ b/doc/fr_FR/editing-projects.markdown diff --git a/doc/fr/gantt-chart-projects.markdown b/doc/fr_FR/gantt-chart-projects.markdown index 3801dc88..3801dc88 100644 --- a/doc/fr/gantt-chart-projects.markdown +++ b/doc/fr_FR/gantt-chart-projects.markdown diff --git a/doc/fr/gantt-chart-tasks.markdown b/doc/fr_FR/gantt-chart-tasks.markdown index fbd1b587..fbd1b587 100644 --- a/doc/fr/gantt-chart-tasks.markdown +++ b/doc/fr_FR/gantt-chart-tasks.markdown diff --git a/doc/fr/index.markdown b/doc/fr_FR/index.markdown index f74c3fce..a73c5c23 100644 --- a/doc/fr/index.markdown +++ b/doc/fr_FR/index.markdown @@ -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) diff --git a/doc/fr/kanban-vs-todo-and-scrum.markdown b/doc/fr_FR/kanban-vs-todo-and-scrum.markdown index b6f5bc1f..b6f5bc1f 100644 --- a/doc/fr/kanban-vs-todo-and-scrum.markdown +++ b/doc/fr_FR/kanban-vs-todo-and-scrum.markdown diff --git a/doc/fr/keyboard-shortcuts.markdown b/doc/fr_FR/keyboard-shortcuts.markdown index 28a131d8..28a131d8 100644 --- a/doc/fr/keyboard-shortcuts.markdown +++ b/doc/fr_FR/keyboard-shortcuts.markdown diff --git a/doc/fr/link-labels.markdown b/doc/fr_FR/link-labels.markdown index 9c266b5a..9c266b5a 100644 --- a/doc/fr/link-labels.markdown +++ b/doc/fr_FR/link-labels.markdown diff --git a/doc/fr/notifications.markdown b/doc/fr_FR/notifications.markdown index 43f34a8e..43f34a8e 100644 --- a/doc/fr/notifications.markdown +++ b/doc/fr_FR/notifications.markdown diff --git a/doc/fr/project-configuration.markdown b/doc/fr_FR/project-configuration.markdown index 22db5bf1..22db5bf1 100644 --- a/doc/fr/project-configuration.markdown +++ b/doc/fr_FR/project-configuration.markdown diff --git a/doc/fr/project-permissions.markdown b/doc/fr_FR/project-permissions.markdown index c4ef4df4..c4ef4df4 100644 --- a/doc/fr/project-permissions.markdown +++ b/doc/fr_FR/project-permissions.markdown diff --git a/doc/fr/project-types.markdown b/doc/fr_FR/project-types.markdown index 70434ec8..70434ec8 100644 --- a/doc/fr/project-types.markdown +++ b/doc/fr_FR/project-types.markdown diff --git a/doc/fr/project-views.markdown b/doc/fr_FR/project-views.markdown index 603108f6..603108f6 100644 --- a/doc/fr/project-views.markdown +++ b/doc/fr_FR/project-views.markdown diff --git a/doc/fr/recurring-tasks.markdown b/doc/fr_FR/recurring-tasks.markdown index 95f24c40..95f24c40 100644 --- a/doc/fr/recurring-tasks.markdown +++ b/doc/fr_FR/recurring-tasks.markdown diff --git a/doc/fr_FR/removing-projects.markdown b/doc/fr_FR/removing-projects.markdown new file mode 100644 index 00000000..1b64191e --- /dev/null +++ b/doc/fr_FR/removing-projects.markdown @@ -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. diff --git a/doc/fr/roles.markdown b/doc/fr_FR/roles.markdown index e55a3969..e55a3969 100644 --- a/doc/fr/roles.markdown +++ b/doc/fr_FR/roles.markdown diff --git a/doc/fr/screenshots.markdown b/doc/fr_FR/screenshots.markdown index e634bd1b..e634bd1b 100644 --- a/doc/fr/screenshots.markdown +++ b/doc/fr_FR/screenshots.markdown diff --git a/doc/fr/screenshots/automatic-action-creation.png b/doc/fr_FR/screenshots/automatic-action-creation.png Binary files differindex ad90590d..ad90590d 100644 --- a/doc/fr/screenshots/automatic-action-creation.png +++ b/doc/fr_FR/screenshots/automatic-action-creation.png diff --git a/doc/fr/screenshots/board-collapsed-mode.png b/doc/fr_FR/screenshots/board-collapsed-mode.png Binary files differindex a496faff..a496faff 100644 --- a/doc/fr/screenshots/board-collapsed-mode.png +++ b/doc/fr_FR/screenshots/board-collapsed-mode.png diff --git a/doc/fr/screenshots/board-compact-mode.png b/doc/fr_FR/screenshots/board-compact-mode.png Binary files differindex 872ceae5..872ceae5 100644 --- a/doc/fr/screenshots/board-compact-mode.png +++ b/doc/fr_FR/screenshots/board-compact-mode.png diff --git a/doc/fr/screenshots/board-expanded-mode.png b/doc/fr_FR/screenshots/board-expanded-mode.png Binary files differindex 19f61451..19f61451 100644 --- a/doc/fr/screenshots/board-expanded-mode.png +++ b/doc/fr_FR/screenshots/board-expanded-mode.png diff --git a/doc/fr/screenshots/board-task-limit.png b/doc/fr_FR/screenshots/board-task-limit.png Binary files differindex 8353f33c..8353f33c 100644 --- a/doc/fr/screenshots/board-task-limit.png +++ b/doc/fr_FR/screenshots/board-task-limit.png diff --git a/doc/fr/screenshots/board-view.png b/doc/fr_FR/screenshots/board-view.png Binary files differindex 0d1e18ea..0d1e18ea 100644 --- a/doc/fr/screenshots/board-view.png +++ b/doc/fr_FR/screenshots/board-view.png diff --git a/doc/fr/screenshots/calendar-view.png b/doc/fr_FR/screenshots/calendar-view.png Binary files differindex 1226162b..1226162b 100644 --- a/doc/fr/screenshots/calendar-view.png +++ b/doc/fr_FR/screenshots/calendar-view.png diff --git a/doc/fr/screenshots/gantt-view.png b/doc/fr_FR/screenshots/gantt-view.png Binary files differindex 3caafa98..3caafa98 100644 --- a/doc/fr/screenshots/gantt-view.png +++ b/doc/fr_FR/screenshots/gantt-view.png diff --git a/doc/fr/screenshots/hide-column.png b/doc/fr_FR/screenshots/hide-column.png Binary files differindex 61015f9a..61015f9a 100644 --- a/doc/fr/screenshots/hide-column.png +++ b/doc/fr_FR/screenshots/hide-column.png diff --git a/doc/fr/screenshots/list-view.png b/doc/fr_FR/screenshots/list-view.png Binary files differindex c40e807a..c40e807a 100644 --- a/doc/fr/screenshots/list-view.png +++ b/doc/fr_FR/screenshots/list-view.png diff --git a/doc/fr/screenshots/new-project.png b/doc/fr_FR/screenshots/new-project.png Binary files differindex 42e5f196..42e5f196 100644 --- a/doc/fr/screenshots/new-project.png +++ b/doc/fr_FR/screenshots/new-project.png diff --git a/doc/fr/screenshots/new-user.png b/doc/fr_FR/screenshots/new-user.png Binary files differindex 116e9074..116e9074 100644 --- a/doc/fr/screenshots/new-user.png +++ b/doc/fr_FR/screenshots/new-user.png diff --git a/doc/fr/screenshots/project-disable-sharing.png b/doc/fr_FR/screenshots/project-disable-sharing.png Binary files differindex 58832045..58832045 100644 --- a/doc/fr/screenshots/project-disable-sharing.png +++ b/doc/fr_FR/screenshots/project-disable-sharing.png diff --git a/doc/fr/screenshots/project-edition.png b/doc/fr_FR/screenshots/project-edition.png Binary files differindex ce8594fe..ce8594fe 100644 --- a/doc/fr/screenshots/project-edition.png +++ b/doc/fr_FR/screenshots/project-edition.png diff --git a/doc/fr/screenshots/project-enable-sharing.png b/doc/fr_FR/screenshots/project-enable-sharing.png Binary files differindex 147ccc53..147ccc53 100644 --- a/doc/fr/screenshots/project-enable-sharing.png +++ b/doc/fr_FR/screenshots/project-enable-sharing.png diff --git a/doc/fr/screenshots/project-permissions.png b/doc/fr_FR/screenshots/project-permissions.png Binary files differindex 54f38690..54f38690 100644 --- a/doc/fr/screenshots/project-permissions.png +++ b/doc/fr_FR/screenshots/project-permissions.png diff --git a/doc/fr/screenshots/project-view.png b/doc/fr_FR/screenshots/project-view.png Binary files differindex ff9a7f76..ff9a7f76 100644 --- a/doc/fr/screenshots/project-view.png +++ b/doc/fr_FR/screenshots/project-view.png diff --git a/doc/fr/screenshots/show-column.png b/doc/fr_FR/screenshots/show-column.png Binary files differindex 51f78ac8..51f78ac8 100644 --- a/doc/fr/screenshots/show-column.png +++ b/doc/fr_FR/screenshots/show-column.png diff --git a/doc/fr/screenshots/swimlane-configuration.png b/doc/fr_FR/screenshots/swimlane-configuration.png Binary files differindex d0b25e9c..d0b25e9c 100644 --- a/doc/fr/screenshots/swimlane-configuration.png +++ b/doc/fr_FR/screenshots/swimlane-configuration.png diff --git a/doc/fr/screenshots/swimlanes.png b/doc/fr_FR/screenshots/swimlanes.png Binary files differindex e24a5b85..e24a5b85 100644 --- a/doc/fr/screenshots/swimlanes.png +++ b/doc/fr_FR/screenshots/swimlanes.png diff --git a/doc/fr_FR/screenshots/task-creation-board.png b/doc/fr_FR/screenshots/task-creation-board.png Binary files differnew file mode 100644 index 00000000..18f13b3f --- /dev/null +++ b/doc/fr_FR/screenshots/task-creation-board.png diff --git a/doc/fr_FR/screenshots/task-creation-form.png b/doc/fr_FR/screenshots/task-creation-form.png Binary files differnew file mode 100644 index 00000000..5e4b455e --- /dev/null +++ b/doc/fr_FR/screenshots/task-creation-form.png diff --git a/doc/fr/sharing-projects.markdown b/doc/fr_FR/sharing-projects.markdown index f3db3c68..f3db3c68 100644 --- a/doc/fr/sharing-projects.markdown +++ b/doc/fr_FR/sharing-projects.markdown diff --git a/doc/fr/subtasks.markdown b/doc/fr_FR/subtasks.markdown index 02345c2a..02345c2a 100644 --- a/doc/fr/subtasks.markdown +++ b/doc/fr_FR/subtasks.markdown diff --git a/doc/fr/swimlanes.markdown b/doc/fr_FR/swimlanes.markdown index 92b4a9fa..92b4a9fa 100644 --- a/doc/fr/swimlanes.markdown +++ b/doc/fr_FR/swimlanes.markdown diff --git a/doc/fr/task-links.markdown b/doc/fr_FR/task-links.markdown index f2756ac7..f2756ac7 100644 --- a/doc/fr/task-links.markdown +++ b/doc/fr_FR/task-links.markdown diff --git a/doc/fr/time-tracking.markdown b/doc/fr_FR/time-tracking.markdown index 625bc26f..625bc26f 100644 --- a/doc/fr/time-tracking.markdown +++ b/doc/fr_FR/time-tracking.markdown diff --git a/doc/fr/transitions.markdown b/doc/fr_FR/transitions.markdown index 94a14bbc..94a14bbc 100644 --- a/doc/fr/transitions.markdown +++ b/doc/fr_FR/transitions.markdown diff --git a/doc/fr/usage-examples.markdown b/doc/fr_FR/usage-examples.markdown index b91fa613..b91fa613 100644 --- a/doc/fr/usage-examples.markdown +++ b/doc/fr_FR/usage-examples.markdown diff --git a/doc/fr/user-management.markdown b/doc/fr_FR/user-management.markdown index bb9b0731..bb9b0731 100644 --- a/doc/fr/user-management.markdown +++ b/doc/fr_FR/user-management.markdown diff --git a/doc/fr/what-is-kanban.markdown b/doc/fr_FR/what-is-kanban.markdown index f479927c..f479927c 100644 --- a/doc/fr/what-is-kanban.markdown +++ b/doc/fr_FR/what-is-kanban.markdown diff --git a/doc/heroku.markdown b/doc/heroku.markdown index 43b15c72..1891efb0 100644 --- a/doc/heroku.markdown +++ b/doc/heroku.markdown @@ -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) diff --git a/doc/index.markdown b/doc/index.markdown index c1e9a506..bc3e8a32 100644 --- a/doc/index.markdown +++ b/doc/index.markdown @@ -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 diff --git a/doc/installation.markdown b/doc/installation.markdown index 2ebe4d14..4955612f 100644 --- a/doc/installation.markdown +++ b/doc/installation.markdown @@ -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 diff --git a/doc/nice-urls.markdown b/doc/nice-urls.markdown index 9fbb3510..bfea719d 100644 --- a/doc/nice-urls.markdown +++ b/doc/nice-urls.markdown @@ -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`: diff --git a/doc/plugin-authentication.markdown b/doc/plugin-authentication.markdown index 06fdfd8d..e1ca6f01 100644 --- a/doc/plugin-authentication.markdown +++ b/doc/plugin-authentication.markdown @@ -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) diff --git a/doc/plugin-group-provider.markdown b/doc/plugin-group-provider.markdown index 4d73b740..31c61aaf 100644 --- a/doc/plugin-group-provider.markdown +++ b/doc/plugin-group-provider.markdown @@ -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) diff --git a/doc/plugin-hooks.markdown b/doc/plugin-hooks.markdown index a21157e5..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. @@ -155,14 +198,17 @@ 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 | | `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` | 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 | @@ -172,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 | @@ -182,8 +230,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 | diff --git a/doc/plugins.markdown b/doc/plugins.markdown index 475bc249..cff3eb6c 100644 --- a/doc/plugins.markdown +++ b/doc/plugins.markdown @@ -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) diff --git a/doc/removing-projects.markdown b/doc/removing-projects.markdown new file mode 100644 index 00000000..f9e622cb --- /dev/null +++ b/doc/removing-projects.markdown @@ -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. diff --git a/doc/requirements.markdown b/doc/requirements.markdown index 9943465a..f6c9b309 100644 --- a/doc/requirements.markdown +++ b/doc/requirements.markdown @@ -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 | diff --git a/doc/ru_RU/2fa.markdown b/doc/ru_RU/2fa.markdown new file mode 100644 index 00000000..0787c720 --- /dev/null +++ b/doc/ru_RU/2fa.markdown @@ -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/) + diff --git a/doc/ru_RU/analytics-tasks.markdown b/doc/ru_RU/analytics-tasks.markdown new file mode 100644 index 00000000..176a4616 --- /dev/null +++ b/doc/ru_RU/analytics-tasks.markdown @@ -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/) + diff --git a/doc/ru_RU/analytics.markdown b/doc/ru_RU/analytics.markdown new file mode 100644 index 00000000..2af6de34 --- /dev/null +++ b/doc/ru_RU/analytics.markdown @@ -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/) + diff --git a/doc/ru_RU/api-json-rpc.markdown b/doc/ru_RU/api-json-rpc.markdown new file mode 100644 index 00000000..257f83ec --- /dev/null +++ b/doc/ru_RU/api-json-rpc.markdown @@ -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/) + diff --git a/doc/ru_RU/application-configuration.markdown b/doc/ru_RU/application-configuration.markdown new file mode 100644 index 00000000..d8b2661e --- /dev/null +++ b/doc/ru_RU/application-configuration.markdown @@ -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/) + diff --git a/doc/ru_RU/assets.markdown b/doc/ru_RU/assets.markdown new file mode 100644 index 00000000..9a0124c5 --- /dev/null +++ b/doc/ru_RU/assets.markdown @@ -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/) + diff --git a/doc/ru_RU/automatic-actions.markdown b/doc/ru_RU/automatic-actions.markdown new file mode 100644 index 00000000..1e0631c3 --- /dev/null +++ b/doc/ru_RU/automatic-actions.markdown @@ -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/) + diff --git a/doc/ru_RU/board-collapsed-expanded.markdown b/doc/ru_RU/board-collapsed-expanded.markdown new file mode 100644 index 00000000..a19981a5 --- /dev/null +++ b/doc/ru_RU/board-collapsed-expanded.markdown @@ -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/) + diff --git a/doc/ru_RU/board-configuration.markdown b/doc/ru_RU/board-configuration.markdown new file mode 100644 index 00000000..fb4fb58d --- /dev/null +++ b/doc/ru_RU/board-configuration.markdown @@ -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/) + diff --git a/doc/ru_RU/board-horizontal-scrolling-and-compact-view.markdown b/doc/ru_RU/board-horizontal-scrolling-and-compact-view.markdown new file mode 100644 index 00000000..9eaa5c9e --- /dev/null +++ b/doc/ru_RU/board-horizontal-scrolling-and-compact-view.markdown @@ -0,0 +1,19 @@ +Горизонтальная прокрутка и компактный вид +========================================= + +Когда ширины экрана не хватает для отображения всех колонок, то внизу появляется горизонтальная прокрутка. + +Однако, можно переключится на компактный вид доски для отображения всех колонок на вашем экране. + + +![Switch to compact mode](screenshots/board-compact-mode.png) + +Рисунок. Переключение на компактное представление. + +Переключится между горизонтальной прокруткой и компактным видом можно с помощью горячей клавиши **“c”** или в левом верхнем раскрывающемся “Меню” -\> “Компактный вид” или “Широкий вид”. + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/board-show-hide-columns.markdown b/doc/ru_RU/board-show-hide-columns.markdown new file mode 100644 index 00000000..5c333b5c --- /dev/null +++ b/doc/ru_RU/board-show-hide-columns.markdown @@ -0,0 +1,25 @@ +Показать и скрыть колонки на Доске +================================== + +Вы можете показать и скрыть колонки на Доске очень просто: + +![Hide a column](screenshots/hide-column.png) + +Рисунок. Спрятать колонку. + + +Чтобы скрыть (спрятать) колонку , откройте выпадающее меню колонки. + +![Show a column](screenshots/show-column.png) + +Рисунок.Показать колонку. + + +Для отображения скрытой колонки нажмите “иконку плюс” + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/bruteforce-protection.markdown b/doc/ru_RU/bruteforce-protection.markdown new file mode 100644 index 00000000..25e50880 --- /dev/null +++ b/doc/ru_RU/bruteforce-protection.markdown @@ -0,0 +1,37 @@ +Защита от Brute Force +===================== + +Защита от Brute Force (подбор пароля методом перебора) в Канборде работает на уровне учетной записи пользователя: + +- После 3 неправильных вводов пароля для одного и того же пользователя, на форме входа появляется капча для предотвращения дальнейшего подбора программой-роботом. +- После 6 неудачных вводов пароля, учетная запись пользователя блокируется на 15 минут. + +Эта возможность работает только для метода аутентификации с использованием формы входа на веб странице. + +Однако, **после трех ошибочных аутентификаций через пользовательский API, учетная запись может быть разблокирована с использованием формы входа на веб странице** + +В Канборде нет блокировок по IP адресу, потому что программы-роботы используют множество анонимных прокси. Однако, вы можете использовать внешнюю утилиту, например [fail2ban](http://www.fail2ban.org) , чтобы избежать массового сканирования. + +Настройки защиты от Brute Force могут быть изменены в следующих переменных: + + // Enable captcha after 3 authentication failure + + define('BRUTEFORCE_CAPTCHA', 3); + + + + // Lock the account after 6 authentication failure + + define('BRUTEFORCE_LOCKDOWN', 6); + + + + // Lock account duration in minutes + + define('BRUTEFORCE_LOCKDOWN_DURATION', 15); + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/calendar-configuration.markdown b/doc/ru_RU/calendar-configuration.markdown new file mode 100644 index 00000000..bd6d604e --- /dev/null +++ b/doc/ru_RU/calendar-configuration.markdown @@ -0,0 +1,59 @@ +Настройки календаря +=================== + +В правом верхнем выпадающем меню выберите **Настройки**, затем, слева, выберите **Настройки календаря**. + + +![Calendar settings](https://kanboard.net/screenshots/documentation/calendar-settings.png) + +Рисунок. Настройки календаря + + +В Канборде имеется два вида Календаря: + +- Календарь проекта +- Пользовательский календарь (доступен в левом меню Инфопанели) + + +Календарь проекта[¶](#project-calendar "Ссылка на этот заголовок") +------------------------------------------------------------------ + +Эти календари показывают задачи с указанной датой создания или датой начала и датой завершения. + +### Показать задачи в зависимости от даты создания[¶](#show-tasks-based-on-the-creation-date "Ссылка на этот заголовок") + +- Дата начала в календаре показывает дату создания задачи. +- Конечная дата показывает дату завершения. + + +### Показать задачи в зависимости от даты начала[¶](#show-tasks-based-on-the-start-date "Ссылка на этот заголовок") + +- Дата начала в календаре показывает дату начала задачи. +- Эта дата должна быть установлена вручную. +- Конечная дата показывает дату завершения. +- Если не указать дату начала, то задача не будет отображена в календаре. + + + +Пользовательский календарь[¶](#user-calendar "Ссылка на этот заголовок") +------------------------------------------------------------------------ + +Пользовательский календарь показывает только задачи назначенные пользователю и, опционально, информацию о подзадачах. + + +### Показать подзадачи, основанные на отслеживании времени[¶](#show-sub-tasks-based-on-the-time-tracking "Ссылка на этот заголовок") + +- Показывает подзадачи в календаре из записей таблицы отслеживания времени. +- Пересечения в пользовательской таблице времени также подсчитываются. + + +### Показывать оценку подзадач (прогнозирование будущих работ)[¶](#show-sub-task-estimates-forecast-of-future-work "Ссылка на этот заголовок") + +- Показывает оценку будущих работ для подзадач в статусе “для исполнения” и с указанным значением “оценка”. + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/calendar.markdown b/doc/ru_RU/calendar.markdown new file mode 100644 index 00000000..f0658c89 --- /dev/null +++ b/doc/ru_RU/calendar.markdown @@ -0,0 +1,31 @@ +Календарь +========= + + +Календарь может быть представлен в двух видах: + +- Представление в проекте с использование фильтров (доступно на Доске) +- Пользовательское представление (доступно в рабочей панели и в пользовательском разделе) + +В Календаре можно увидеть следующую информацию: + +- Задачи с “датой испольнения”, отображаются наверху. **Дата испольнения может быть изменена перемещением задачи на другой день**. +- Задачи с датой создания или датой начала. **Эти события не могут быть изменены в календаре**. +- Отслеживание времени подзадачи. Все записанные временные диапазоны будут отображены в Календаре. +- Подсчеты, прогнозы затрачиваемого время на подзадачу. + +![Calendar](https://kanboard.net/screenshots/documentation/calendar.png) + +Рисунок. Календарь + + +Настроки Календаря могут быть изменены на странице **Настройки** + +Заметка: Дата исполения не содержит информацию о времени. + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/centos-installation.markdown b/doc/ru_RU/centos-installation.markdown new file mode 100644 index 00000000..95808586 --- /dev/null +++ b/doc/ru_RU/centos-installation.markdown @@ -0,0 +1,127 @@ +Инсталяция Канборд на Centos +============================ + + +**Внимание**: Некоторые возможности Канборда требуют [запуск ежедневных фоновых задач](cronjob.markdown). + + +Centos 7[¶](#centos-7 "Ссылка на этот заголовок") +------------------------------------------------- + +Установите PHP и Apache: + + + yum install -y php php-mbstring php-pdo php-gd unzip wget + + +По умолчанию, Centos 7 использует PHP 5.4.16 и Apache 2.4.6. + + + +Перезапустите Apache: + + + + systemctl restart httpd.service + + + +Установите Канборд: + + + + cd /var/www/html + + wget https://kanboard.net/kanboard-latest.zip + + unzip kanboard-latest.zip + + chown -R apache:apache kanboard/data + + rm kanboard-latest.zip + + + +Если включен SELinux, убедитесь что пользователь веб сервера Apache имеет права на запись в директорию data: + + + + chcon -R -t httpd_sys_content_rw_t /var/www/html/kanboard/data + + + +Убедитесь, что Канборд может посылать email сообщения и делать внешние сетевые запросы, например с SELinux: + + + + setsebool -P httpd_can_network_connect=1 + + + +Позволяет делать внешние подключения если используется LDAP, SMTP, Web hooks или другая интеграция. + + + +Centos 6.x[¶](#centos-6-x "Ссылка на этот заголовок") +----------------------------------------------------- + + + +Установите PHP и Apache: + + + + yum install -y php php-mbstring php-pdo php-gd unzip wget + + + +По умолчанию, Centos 6.5 использует PHP 5.3.3 и Apache 2.2.15. + + + +Включите короткие теги: + + + +- Отредактируйте файл `/etc/php.ini`{.docutils .literal} + + + +- Измените строку `short_open_tag = On`{.docutils .literal} (вместо `short_open_tag = Off`{.docutils .literal}) + + + +Перезапустите Apache: + + + + service httpd restart + + + +Установите Канборд: + + + + cd /var/www/html + + wget https://kanboard.net/kanboard-latest.zip + + unzip kanboard-latest.zip + + chown -R apache:apache kanboard/data + + rm kanboard-latest.zip + + + +Готово. Можете работать с Канборд. Откройте в браузере `http://ваш_сервер/kanboard/`{.docutils .literal}. + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/cli.markdown b/doc/ru_RU/cli.markdown new file mode 100644 index 00000000..9c7b56a7 --- /dev/null +++ b/doc/ru_RU/cli.markdown @@ -0,0 +1,331 @@ +Интерфейс командной строки +========================== + + + +Канборд обеспечивает простой интерфейс командной строки, которым можно воспользоваться только из Unix терминала. Эта возможность доступна только с локальной машины. + + + +Интерфейс командной строки полезен для выполнения команд вне процессов веб сервера. + + + +Использование[¶](#usage "Ссылка на этот заголовок") +--------------------------------------------------- + + + +- Откройте терминал и перейдите в директорию Канборд (например: `cd /var/www/kanboard`) + + + +- Выполните команду `./kanboard` + + + +<!-- --> + + + + Kanboard version master + + + + Usage: + + command [options] [arguments] + + + + Options: + + -h, --help Display this help message + + -q, --quiet Do not output any message + + -V, --version Display this application version + + --ansi Force ANSI output + + --no-ansi Disable ANSI output + + -n, --no-interaction Do not ask any interactive question + + -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug + + + + Available commands: + + cronjob Execute daily cronjob + + help Displays help for a command + + list Lists commands + + export + + export:daily-project-column-stats Daily project column stats CSV export (number of tasks per column and per day) + + export:subtasks Subtasks CSV export + + export:tasks Tasks CSV export + + export:transitions Task transitions CSV export + + locale + + locale:compare Compare application translations with the fr_FR locale + + locale:sync Synchronize all translations based on the fr_FR locale + + notification + + notification:overdue-tasks Send notifications for overdue tasks + + plugin + + plugin:install Install a plugin from a remote Zip archive + + plugin:uninstall Remove a plugin + + plugin:upgrade Update all installed plugins + + projects + + projects:daily-stats Calculate daily statistics for all projects + + trigger + + trigger:tasks Trigger scheduler event for all tasks + + user + + user:reset-2fa Remove two-factor authentication for a user + + user:reset-password Change user password + + + +Доступные команды[¶](#available-commands "Ссылка на этот заголовок") +-------------------------------------------------------------------- + + + +### Экспорт задач в формате CSV[¶](#tasks-csv-export "Ссылка на этот заголовок") + + + +Применение: + + + + ./kanboard export:tasks <project_id> <start_date> <end_date> + + + +Пример: + + + + ./kanboard export:tasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv + + + +Данные CSV передаются в `stdout`. + + + +### Экспорт подзадач в формате CSV[¶](#subtasks-csv-export "Ссылка на этот заголовок") + + + +Применение: + + + + ./kanboard export:subtasks <project_id> <start_date> <end_date> + + + +Пример: + + + + ./kanboard export:subtasks 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv + + + +### Экспорт перемещения задач в формате CSV[¶](#task-transitions-csv-export "Ссылка на этот заголовок") + + + +Применение: + + + + ./kanboard export:transitions <project_id> <start_date> <end_date> + + + +Пример: + + + + ./kanboard export:transitions 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv + + + +### Экспорт ежедневных сведений в формате CSV[¶](#export-daily-summaries-data-in-csv "Ссылка на этот заголовок") + + + +Экспортированные данные будут выведены в стандартный вывод: + + + + ./kanboard export:daily-project-column-stats <project_id> <start_date> <end_date> + + + +Пример: + + + + ./kanboard export:daily-project-column-stats 1 2014-10-01 2014-11-30 > /tmp/my_custom_export.csv + + + +### Отправка уведомлений для просроченных задач[¶](#send-notifications-for-overdue-tasks "Ссылка на этот заголовок") + + + +Email сообщения будут отправлены всем пользователям, у которых включено оповещение. + + + + ./kanboard notification:overdue-tasks + + + +Необязательные параметры: + + + +- `--show`: Показывать отправку уведомлений + + + +- `--group`: Группировать все просроченные задачи для одного пользователя (со всех проектов) на один email + + + +- `--manager`: Посылать все просроченные задачи менеджеру (менеджерам) проекта в одном email сообщении + + + +Вы можете просмотреть просроченные задачи с помощью параметра `--show`: + + + +```bash +./kanboard notification:overdue-tasks --show ++-----+---------+------------+------------+--------------+----------+ +| Id | Title | Due date | Project Id | Project name | Assignee | ++-----+---------+------------+------------+--------------+----------+ +| 201 | Test | 2014-10-26 | 1 | Project #0 | admin | +| 202 | My task | 2014-10-28 | 1 | Project #0 | | ++-----+---------+------------+------------+--------------+----------+ +``` + + +### Запуск ежедневной калькуляции статистики[¶](#run-daily-project-stats-calculation "Ссылка на этот заголовок") + + + +Эта команда считает статистику для каждого проекта: + + + + ./kanboard projects:daily-stats + + Run calculation for Project #0 + + Run calculation for Project #1 + + Run calculation for Project #10 + + + +### Триггеры для задач[¶](#trigger-for-tasks) + + + +Эта команда посылает “событие для ежедневных фоновых заданий” для всех открытых задач в каждом проекте. + + + + ./kanboard trigger:tasks + + Trigger task event: project_id=2, nb_tasks=1 + + + +### Сброс пароля пользователя[¶](#reset-user-password "Ссылка на этот заголовок") + + + + ./kanboard user:reset-password my_user + + + +Будет запрошен пароль и подтверждение. Символы не отображаются на экране. + + + +### Удаление двухуровневой аутентификации для пользователя[¶](#remove-two-factor-authentication-for-a-user "Ссылка на этот заголовок") + + + + ./kanboard user:reset-2fa my_user + + + +### Установка плагина[¶](#install-a-plugin "Ссылка на этот заголовок") + + + + ./kanboard plugin:install https://github.com/kanboard/plugin-github-auth/releases/download/v1.0.1/GithubAuth-1.0.1.zip + + + +Заметка: Установленные файлы будут иметь теже права, что и у текущего пользователя + + + +### Удаление плагина[¶](#remove-a-plugin "Ссылка на этот заголовок") + + + + ./kanboard plugin:uninstall Budget + + + +### Обновление всех плагинов[¶](#upgrade-all-plugins "Ссылка на этот заголовок") + + + + ./kanboard plugin:upgrade + + * Updating plugin: Budget Planning + + * Plugin up to date: Github Authentication + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/closing-tasks.markdown b/doc/ru_RU/closing-tasks.markdown new file mode 100644 index 00000000..ae91757d --- /dev/null +++ b/doc/ru_RU/closing-tasks.markdown @@ -0,0 +1,30 @@ +Закрытие задач +============== + +Когда задача закрыта, то она скрывается на Доске. + +Не смотря на это, вы можете в любой момент зайти в список закрытых задач используя запрос **status:closed** в любой форме поиска или просто выбрать фильтр “Закрытые задачи” в выпадающем меню. + +Имеется два пути для закрытия задачи: - На Доске выбрать задачу и выпадающем меню выбрать **Закрыть задачу** + +![Close a task from drop-down menu](https://kanboard.net/screenshots/documentation/menu-close-task.png) + +Рисунок. Закрытие задачи, используя выпадающее меню. + + +или - Используя детальное представление задачи, выбрать **Закрыть задачу** в меню боковой панели (слева) + + +![Close task](https://kanboard.net/screenshots/documentation/closing-tasks.png) + +Рисунок. Закрытие задачи. + + + +**Заметка**: Когда вы закрываете задачу, у всех не выполненных подзадач будет изменен статус на “Выполнено” + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/cloudron.markdown b/doc/ru_RU/cloudron.markdown new file mode 100644 index 00000000..2e41d0d0 --- /dev/null +++ b/doc/ru_RU/cloudron.markdown @@ -0,0 +1,45 @@ +Как запустить Канборд на Cloudron +================================= + + +[Cloudron](https://cloudron.io) приватный смартсервер, на котором вы можете установить веб приложения, такие как Канборд. Вы можете установить Канборд в определенном домене, при этом каждой инсталяции создавается резервная копия и поддерживается новая версия Канборда автоматически. + + + +[![Install](https://cloudron.io/img/button.svg)](https://cloudron.io/button.html?app=net.kanboard.cloudronapp) + + + +Учетные записи[¶](#accounts "Ссылка на этот заголовок") +------------------------------------------------------- + + +Приложение плотно интегрируется с системой Управления пользователями Cloudron (через LDAP). Только пользователи Cloudron могут войти в Канборд. Плюс, любой администратор Cloudron становится администратором Канборда автоматически. + + +Установка плагинов[¶](#installing-plugins "Ссылка на этот заголовок") +--------------------------------------------------------------------- + + + +Плагины могут быть установлены и настроены с помощью утилиты [Cloudron CLI](https://cloudron.io/references/cli.html). Для подробной информации смотрите [описание приложения](https://cloudron.io/appstore.html?app=net.kanboard.cloudronapp). + + + +Исходный код приложения[¶](#application-source-code "Ссылка на этот заголовок") +------------------------------------------------------------------------------- + + + +Исходный код приложения Cloudron находится [здесь](https://github.com/cloudron-io/kanboard-app). + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/coding-standards.markdown b/doc/ru_RU/coding-standards.markdown new file mode 100644 index 00000000..b6100375 --- /dev/null +++ b/doc/ru_RU/coding-standards.markdown @@ -0,0 +1,64 @@ +Стандарты используемые при написании кода +========================================= + + + +Код PHP[¶](#php-code "Ссылка на этот заголовок") +------------------------------------------------ + + + +- Отступ: 4 пробела + + + +- Перевод строки: Unix =\> `\n`{.docutils .literal} + + + +- Кодировка: UTF-8 + + + +- Используйте только открытые теги `<?php`{.docutils .literal} or `<?=`{.docutils .literal} для templates, но **никогда** не используйте `<?`{.docutils .literal} + + + +- Всегда пишите коментарии PHPdoc для свойств методов и классов + + + +- Стиль кодирования: [PSR-1](http://www.php-fig.org/psr/psr-1/) и [PSR-2](http://www.php-fig.org/psr/psr-2/) + + + +Код JavaScript[¶](#javascript-code "Ссылка на этот заголовок") +-------------------------------------------------------------- + + + +- Отступ: 4 пробела + + + +- Перевод строки: Unix =\> `\n`{.docutils .literal} + + + +Код CSS[¶](#css-code "Ссылка на этот заголовок") +------------------------------------------------ + + + +- Отступ: 4 пробела + + + +- Перевод строки: Unix =\> `\n`{.docutils .literal} + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/config.markdown b/doc/ru_RU/config.markdown new file mode 100644 index 00000000..b0419966 --- /dev/null +++ b/doc/ru_RU/config.markdown @@ -0,0 +1,523 @@ +Конфигурационный файл +===================== + + + +Вы можете изменить базовые настройки Канборда добавив файл `config.php` в корень проекта или в каталог `data`. Вы, также, можете переименовать файл `config.default.php` в `config.php` и установить желаемые значения. + + +Включение/выключение режима отладки[¶](#enable-disable-debug-mode "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------- + + + + define('DEBUG', true); + + define('LOG_DRIVER', 'file'); // Other drivers are: syslog, stdout, stderr or file + + + +Обработчик логов может быть определен если вы включите режим отладки. Режим отладки фиксирует все SQL запросы и время затрачиваемое на генерацию страниц. + + + +Плагины[¶](#plugins "Ссылка на этот заголовок") +----------------------------------------------- + + + +Каталог плагинов: + + + + define('PLUGINS_DIR', 'data/plugins'); + + + +Включение/выключение установки плагинов через интерфейс пользователя: + + + + define('PLUGIN_INSTALLER', true); // Default is true + + + +Каталог для загружаемых файлов[¶](#folder-for-uploaded-files "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------- + + + + define('FILES_DIR', 'data/files'); + + + +Включение/выключение переопределения url адресов[¶](#enable-disable-url-rewrite "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------------------- + + + + define('ENABLE_URL_REWRITE', false); + + + +Настройка email[¶](#email-configuration "Ссылка на этот заголовок") +------------------------------------------------------------------- + + + + // E-mail address for the "From" header (notifications) + + define('MAIL_FROM', 'notifications@kanboard.local'); + + + + // Mail transport to use: "smtp", "sendmail" or "mail" (PHP mail function) + + define('MAIL_TRANSPORT', 'mail'); + + + + // SMTP configuration to use when the "smtp" transport is chosen + + define('MAIL_SMTP_HOSTNAME', ''); + + define('MAIL_SMTP_PORT', 25); + + define('MAIL_SMTP_USERNAME', ''); + + define('MAIL_SMTP_PASSWORD', ''); + + define('MAIL_SMTP_ENCRYPTION', null); // Valid values are "null", "ssl" or "tls" + + + + // Sendmail command to use when the transport is "sendmail" + + define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs'); + + + +Настройки базы данных[¶](#database-settings "Ссылка на этот заголовок") +----------------------------------------------------------------------- + + + + // Database driver: sqlite, mysql or postgres (sqlite by default) + + define('DB_DRIVER', 'sqlite'); + + + + // Mysql/Postgres username + + define('DB_USERNAME', 'root'); + + + + // Mysql/Postgres password + + define('DB_PASSWORD', ''); + + + + // Mysql/Postgres hostname + + define('DB_HOSTNAME', 'localhost'); + + + + // Mysql/Postgres database name + + define('DB_NAME', 'kanboard'); + + + + // Mysql/Postgres custom port (null = default port) + + define('DB_PORT', null); + + + + // Mysql SSL key + + define('DB_SSL_KEY', null); + + + + // Mysql SSL certificate + + define('DB_SSL_CERT', null); + + + + // Mysql SSL CA + + define('DB_SSL_CA', null); + + + +Настройки LDAP[¶](#ldap-settings "Ссылка на этот заголовок") +------------------------------------------------------------ + + + + // Enable LDAP authentication (false by default) + + define('LDAP_AUTH', false); + + + + // LDAP server hostname + + define('LDAP_SERVER', ''); + + + + // LDAP server port (389 by default) + + define('LDAP_PORT', 389); + + + + // By default, require certificate to be verified for ldaps:// style URL. Set to false to skip the verification + + define('LDAP_SSL_VERIFY', true); + + + + // Enable LDAP START_TLS + + define('LDAP_START_TLS', false); + + + + // By default Kanboard lowercase the ldap username to avoid duplicate users (the database is case sensitive) + + // Set to true if you want to preserve the case + + define('LDAP_USERNAME_CASE_SENSITIVE', false); + + + + // LDAP bind type: "anonymous", "user" or "proxy" + + define('LDAP_BIND_TYPE', 'anonymous'); + + + + // LDAP username to use with proxy mode + + // LDAP username pattern to use with user mode + + define('LDAP_USERNAME', null); + + + + // LDAP password to use for proxy mode + + define('LDAP_PASSWORD', null); + + + + // LDAP DN for users + + // Example for ActiveDirectory: CN=Users,DC=kanboard,DC=local + + // Example for OpenLDAP: ou=People,dc=example,dc=com + + define('LDAP_USER_BASE_DN', ''); + + + + // LDAP pattern to use when searching for a user account + + // Example for ActiveDirectory: '(&(objectClass=user)(sAMAccountName=%s))' + + // Example for OpenLDAP: 'uid=%s' + + define('LDAP_USER_FILTER', ''); + + + + // LDAP attribute for username + + // Example for ActiveDirectory: 'samaccountname' + + // Example for OpenLDAP: 'uid' + + define('LDAP_USER_ATTRIBUTE_USERNAME', 'uid'); + + + + // LDAP attribute for user full name + + // Example for ActiveDirectory: 'displayname' + + // Example for OpenLDAP: 'cn' + + define('LDAP_USER_ATTRIBUTE_FULLNAME', 'cn'); + + + + // LDAP attribute for user email + + define('LDAP_USER_ATTRIBUTE_EMAIL', 'mail'); + + + + // LDAP attribute to find groups in user profile + + define('LDAP_USER_ATTRIBUTE_GROUPS', 'memberof'); + + + + // LDAP attribute for user avatar image: thumbnailPhoto or jpegPhoto + + define('LDAP_USER_ATTRIBUTE_PHOTO', ''); + + + + // LDAP attribute for user language, example: 'preferredlanguage' + + // Put an empty string to disable language sync + + define('LDAP_USER_ATTRIBUTE_LANGUAGE', ''); + + + + // Allow automatic LDAP user creation + + define('LDAP_USER_CREATION', true); + + + + // LDAP DN for administrators + + // Example: CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local + + define('LDAP_GROUP_ADMIN_DN', ''); + + + + // LDAP DN for managers + + // Example: CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local + + define('LDAP_GROUP_MANAGER_DN', ''); + + + + // Enable LDAP group provider for project permissions + + // The end-user will be able to browse LDAP groups from the user interface and allow access to specified projects + + define('LDAP_GROUP_PROVIDER', false); + + + + // LDAP Base DN for groups + + define('LDAP_GROUP_BASE_DN', ''); + + + + // LDAP group filter + + // Example for ActiveDirectory: (&(objectClass=group)(sAMAccountName=%s*)) + + define('LDAP_GROUP_FILTER', ''); + + + + // LDAP user group filter + + // If this filter is configured, Kanboard will search user groups in LDAP_GROUP_BASE_DN + + // Example for OpenLDAP: (&(objectClass=posixGroup)(memberUid=%s)) + + define('LDAP_GROUP_USER_FILTER', ''); + + + + // LDAP attribute for the group name + + define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn'); + + + +Настройки аутентификации Reverse-Proxy[¶](#reverse-proxy-authentication-settings "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------ + + + + // Enable/disable the reverse proxy authentication + + define('REVERSE_PROXY_AUTH', false); + + + + // Header name to use for the username + + define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER'); + + + + // Username of the admin, by default blank + + define('REVERSE_PROXY_DEFAULT_ADMIN', ''); + + + + // Default domain to use for setting the email address + + define('REVERSE_PROXY_DEFAULT_DOMAIN', ''); + + + +Настройки аутентификации RememberMe[¶](#rememberme-authentication-settings "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------ + + + + // Enable/disable remember me authentication + + define('REMEMBER_ME_AUTH', true); + + + +Настройки Secure HTTP headers[¶](#secure-http-headers-settings "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------ + + + + // Enable or disable "Strict-Transport-Security" HTTP header + + define('ENABLE_HSTS', true); + + + + // Enable or disable "X-Frame-Options: DENY" HTTP header + + define('ENABLE_XFRAME', true); + + + +Запись событий[¶](#logging "Ссылка на этот заголовок") +------------------------------------------------------ + + + +По умолчанию, Канборд записывает не все события. Если вы хотите включить запись событий, вы должны установить обработчик логов. + + + + // Available log drivers: syslog, stderr, stdout or file + + define('LOG_DRIVER', ''); + + + + // Log filename if the log driver is "file" + + define('LOG_FILE', __DIR__.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'debug.log'); + + + +Защита от Brute-force[¶](#brute-force-protection "Ссылка на этот заголовок") +---------------------------------------------------------------------------- + + + + // Enable captcha after 3 authentication failure + + define('BRUTEFORCE_CAPTCHA', 3); + + + + // Lock the account after 6 authentication failure + + define('BRUTEFORCE_LOCKDOWN', 6); + + + + // Lock account duration in minute + + define('BRUTEFORCE_LOCKDOWN_DURATION', 15); + + + +Сессии[¶](#session "Ссылка на этот заголовок") +---------------------------------------------- + + + + // Session duration in second (0 = until the browser is closed) + + // See http://php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime + + define('SESSION_DURATION', 0); + + + +Проксирование клиентских HTTP[¶](#http-client-proxy "Ссылка на этот заголовок") +------------------------------------------------------------------------------- + + + +Если внешние запросы HTTP необходимо пробрасывать через прокси: + + + + define('HTTP_PROXY_HOSTNAME', ''); + + define('HTTP_PROXY_PORT', '3128'); + + define('HTTP_PROXY_USERNAME', ''); + + define('HTTP_PROXY_PASSWORD', ''); + + + +Другие настройки[¶](#various-settings "Ссылка на этот заголовок") +----------------------------------------------------------------- + + + + // Escape html inside markdown text + + define('MARKDOWN_ESCAPE_HTML', true); + + + + // API alternative authentication header, the default is HTTP Basic Authentication defined in RFC2617 + + define('API_AUTHENTICATION_HEADER', ''); + + + + // Hide login form, useful if all your users use Google/Github/ReverseProxy authentication + + define('HIDE_LOGIN_FORM', false); + + + + // Disabling logout (for external SSO authentication) + + define('DISABLE_LOGOUT', false); + + + + // Override API token stored in the database, useful for automated tests + + define('API_AUTHENTICATION_TOKEN', 'My unique API Token'); + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/contributing.markdown b/doc/ru_RU/contributing.markdown new file mode 100644 index 00000000..54917067 --- /dev/null +++ b/doc/ru_RU/contributing.markdown @@ -0,0 +1,96 @@ +Руководство для участников проекта +================================== + + + +Как я могу помочь проекту?[¶](#how-can-i-help "Ссылка на этот заголовок") +------------------------------------------------------------------------- + + + +Канборд пока не идеален, поэтому есть несколько вариантов помочь проекту: + + + +- Присылать отзывы +- Сообщать об ошибках +- Добавлять или обновлять переводы +- Улучшать документацию +- Писать код +- Рассказать друзьям, что Канборд отличная программа :) + + + +Перед тем как начать большое дело, создайте новое “обсуждение вопроса” (issue) на [https://github.com/fguillot/kanboard/issues](https://github.com/fguillot/kanboard/issues) и объясните ваше предложение. + + + +Я хочу внести предложения по проекту[¶](#i-want-to-give-feedback "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------- + + + +- У вас есть идея по улучшению (пользовательский интерфейс или другие возможности) +- Посмотрите в обсуждениях (issue), может ваша идея уже предложена кем-то +- Откройте новое обсуждение (issue) +- Опишите вашу идею +- Вы можете проголосовать +1 за имеющиеся предложения + + +Я хочу сообщить об ошибке[¶](#i-want-to-report-a-bug "Ссылка на этот заголовок") +-------------------------------------------------------------------------------- + +- Убедитесь, что обсуждение вопроса (issue) ранее не публиковалось +- Откройте новую заявку (ticket) +- Опишите, что именно не работает +- Опишите, как воспроизвести ошибку (последовательность, как вы вышли на данную ошибку) +- Опишите ваше окружение (версию Канборда, какая ОС, веб сервер, версию PHP, база данных и версия, хостинг провайдер) + + +Я хочу перевести Канборд на другой язык[¶](#i-want-to-translate-kanboard "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------------------- + +Канборд уже переведен на несколько языков. Вы можете улучшить эти переводы. Некоторые переводы еще не завершены. Для того, чтобы сделать перевод, ознакомтесь с [руководством по переводу на другой язык](translations.markdown). + + +Я хочу улучшить документацию[¶](#i-want-to-improve-the-documentation "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------ + +- Вы считаете, что что-то недостаточно хорошо описано, имеются грамматические или орфографические ошибки, что-то еще. +- Документация написана в формате Markdown и хранится в каталоге `docs`{.docutils .literal}. +- Редактируйте файлы и присылайте pull-request. +- Документация на официальном вебсайте синхронизируется с репозиторием. + + +Я хочу внести свой вклад в код[¶](#i-want-to-contribute-to-the-code "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------- + +Pull-requests всегда приветствуются, однако, чтобы они были приняты, вы должны следовать следующим указаниям: + +- **Перед тем как внести большое изменение или переделать дизайн, откройте новую заявку (ticket) для обсуждения.** +- Если вы хотите добавить новую возможность, уважайте филосовию Канборда: **Мы фокусируемся на простоте**, мы не хотим иметь раздутую программу. +- Это же относится и к пользовательскому интерфейсу: **простота и производительность** +- Присылайте только по одному pull-request для новой возможности или исправления ошибки. +- Небольшие pull-request легче просмотреть и быстрее влить в проект. +- Убедитесь, что [модульные тесты выполняются успешно](tests.markdown). +- Уважайте [стандарты кодирования](coding-standards.markdown). +- Пишите код, который могут поддерживать другие, избегайте дублирования, используйте лучше практики PHP. + +В любом случае, если вы не уверены в чем-то - открывайте новую заявку (ticket) + + +Рассказать друзьям, что Канборд отличная программа :)[¶](#tell-your-friends-that-kanboard-is-awesome "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------------------------------- + +Если вы используете Канборд, покажите его и окружающим. Расскажите всем о прелестях бесплатного и опенсурсного программного обеспечения. + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/create-tasks-by-email.markdown b/doc/ru_RU/create-tasks-by-email.markdown new file mode 100644 index 00000000..baddc682 --- /dev/null +++ b/doc/ru_RU/create-tasks-by-email.markdown @@ -0,0 +1,61 @@ +Создание задач через email +========================== + + +Вы можете создавать задачи отправляя email (сообщения через электронную почту). Эта возможность доступна при использовании плагинов. + +В настоящий момент, Канборд поддерживает три внешних плагина: + + +- [Mailgun](https://github.com/kanboard/plugin-mailgun) +- [Sendgrid](https://github.com/kanboard/plugin-sendgrid) +- [Postmark](https://github.com/kanboard/plugin-postmark) + +Эти плагины позволяют обрабатывать входящие электронные сообщения (email) без дополнительной настройки SMTP сервера. + +При получении плагином email сообщения, плагин передает это сообщение в веб транслятор Канборда. + + +Обработка входящих email сообщений[¶](#incoming-emails-workflow "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------- + + +1. Вы отправляете email сообщение на определенный адрес, например **something+myproject@inbound.mydomain.tld** +2. Email сообщение перенаправляется на SMTP сервер +3. SMTP провайдер передает в веб сервис Канборда email сообщение в JSON формате или в формате multipart/form-data +4. Канборд обрабатывает полученное email сообщение и создает задачу в указанном проекте + +**Заметка**: Новые задачи автоматически создаются в первой колонке. + + +Формат email сообщения[¶](#email-format "Ссылка на этот заголовок") +------------------------------------------------------------------- + +- Email адрес до знака **@** должен содержать разделитель **плюс**, например **kanboard+project123** +- Строка следующая после знака плюс означает **Идентификатор проекта**, например, проект **Проект 123** может иметь идентификатор проекта **project123**. Идентификатор проекта можно задать в свойствах проекта **Меню** -\> **Настройки** -\> **Изменить проект** -\> **Идентификатор**. **Идентификатор** должен быть из цифр и латинских букв. +- Тема из email сообщения становится названием задачи +- Текст email сообщения становится описанием задачи (в формате Markdown) + +Email сообщения могут быть написаны в текстовом или HTML формате. **Канборд сам переконвертирует формат сообщения в Markdown** + + +Безопастность и требования[¶](#security-and-requirements "Ссылка на этот заголовок") +------------------------------------------------------------------------------------ + +- Веб транслятор Канборд защищен случайным ключом +- Email адрес отправителя должен быть такой же как и у пользователя Канборд +- Проект в Канборде должен иметь уникальный идентификатор +- Отправитель email сообщения должен быть участником проекта + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/creating-projects.markdown b/doc/ru_RU/creating-projects.markdown new file mode 100644 index 00000000..b878a538 --- /dev/null +++ b/doc/ru_RU/creating-projects.markdown @@ -0,0 +1,62 @@ +Создание проектов +================= + + +Kanboard может содержать одновременно несколько проектов. Проекты могут быть следующих типов: + +- Командный проект +- Приватный проект для одного пользователя + +Создание проекта для нескольких пользователей[¶](#creating-projects-for-multiple-users "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------ + +- Только пользователи с ролью администратор и менеджер могут создавать такие проекты +- Можно добавлять к проекту пользователей и группы + +На рабочей панели нажмите ссылку **Новый проект**: + +![Project creation form](screenshots/new-project.png) + +Рисунок. Форма создания проекта. + + +Теперь надо только добавить название для проекта! Легко, не правда ли? + + +Создание приватного проекта[¶](#creating-a-private-project "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------- + +- Любой пользователь Kanboard может создать приватный проект +- **Нет** возможности добавлять участников к приватному проекту +- Только владелец приватного проекта и администратор могут получить доступ к проекту + + +На рабочей панели нажмите **Новый проект с ограниченным доступом**. + + + +Создание проекта из другого проекта[¶](#creating-projects-from-another-project "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------------------------- + +При создании нового проекта у вас есть возможность использовать данные другого (ранее созданного) проекта: + +- Разрешения +- Действия +- Дорожки +- Категории +- Задачи + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/creating-tasks.markdown b/doc/ru_RU/creating-tasks.markdown new file mode 100644 index 00000000..ec2922a8 --- /dev/null +++ b/doc/ru_RU/creating-tasks.markdown @@ -0,0 +1,42 @@ +Создание задач +============== + + +На Доске нажмите значок плюс рядом с названием колонки: + + +![Task creation from the board](https://kanboard.net/screenshots/documentation/task-creation-board.png) + +Рисунок. Создание задачи на Доске + + +Далее появится форма создания задачи: + +![Task creation form](https://kanboard.net/screenshots/documentation/task-creation-form.png) + +Рисунок. Форма создания задачи. + + +Только поле **Название** является обязательным полем для заполнения. + + +Описание полей: + +- **Название**: Название вашей задачи, которое будет отображаться на доске. +- **Описание**: Позволяет вам добавить больше информации о задаче, содержимое может содержать синтаксис [Markdown](syntax-guide.markdown). +- **Создать другую задачу**: Отметьте этот чекбокс если вы хотите создать похожую задачу (некоторые поля будут заполнены). +- **Назначена**: Пользователь, которому будет назначена для выполнения эта задача. +- **Категория**: Только одна категория может быть назначена задаче. +- **Колонка**: Колонка в которой задача будет создана, ваша задача будет помещена вниз. +- **Цвет**: Выберите цвет для карточки. +- **Сложность**: используется в быстрых управлениях проектами (Scrum); сложность - это число, которое говорит команде проекта насколько тяжело выполнить задачу. Обычно пользователи используют шкалу Фибоначи. +- **Запланировано часов**: Планирование времени, которое будет затрачено на выполнение задачи. Измеряется в часах. +- **Сделать до**: Просроченные задачи будут иметь дату завершения красного цвета, а предстоящие задачи будут иметь дату завершения черного цвета. + +**-** + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/cronjob.markdown b/doc/ru_RU/cronjob.markdown new file mode 100644 index 00000000..c3bb5f6d --- /dev/null +++ b/doc/ru_RU/cronjob.markdown @@ -0,0 +1,41 @@ +Ежедневные фоновые задачи +========================= + + +Для корректной работы, Канборд должен запускать ежедневные фоновые задачи. На Unix платформах этот процесс выполнятся в `cron`. + +Фоновые задачи необходимы для следующих возможностей: + +- Отчеты и аналитика (подсчет ежедневной статистики для каждого проекта) +- Рассылка оповещений для просроченных задач +- Выполнение автоматических действий подключенных к событиям “Ежедневные фоновые процессы для задач” + + +Настройка на Unix и Linux платформах[¶](#configuration-on-unix-and-linux-platforms "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------------- + +Для создания фоновых задач под операционной системой Unix/Linux используются разные решения. Здесь приведен пример для Ubuntu 14.04. Для других систем процедура похожа. + + +Отредактируйте crontab под пользователем вашего веб сервера: + + + sudo crontab -u www-data -e + + +Пример запуска ежедневной фоновой задачи в 8 утра: + + + 0 8 * * * cd /path/to/kanboard && ./kanboard cronjob >/dev/null 2>&1 + + +Примечание: процес выполнения фоновых задач должен иметь права доступа к вашей базе данных в случае если вы используете Sqlite. Обычно, достаточно запускать фоновую задачу под пользователем веб сервера. + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/currency-rate.markdown b/doc/ru_RU/currency-rate.markdown new file mode 100644 index 00000000..6d7dbc3e --- /dev/null +++ b/doc/ru_RU/currency-rate.markdown @@ -0,0 +1,43 @@ +Курсы валют +=========== + + +Каждый пользователь может иметь предопределенный ежечасный курс для разных валют. Если вы хотите вручную занести курсы валют, то вы можете указать ставку в соответсвии с курсом. + +Эта опция используются для расчета бюджета проекта. + +![Currency Rate](https://kanboard.net/screenshots/documentation/currency-rate.png) + +Рисунок. Курсы валют + + +Для настроек курса валют выберите, справа вверху в выпадающем меню, **Настройки** -\> затем, слева, **Курсы валют**. + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/custom-filters.markdown b/doc/ru_RU/custom-filters.markdown new file mode 100644 index 00000000..60630860 --- /dev/null +++ b/doc/ru_RU/custom-filters.markdown @@ -0,0 +1,36 @@ +Пользовательские фильтры +======================== + +Пользовательские фильтры позволяют вам сохранять любые поисковые запросы. Таким образом, вы можете легко расширить стандартные фильтры и сохранить часто используемые поисковые запросы. + +- Пользовательские фильтры сохраняются в проекте и имеют привязку к создателю. +- Если создатель фильтра является менеджером проекта, то он может предоставить этот фильтр всем участникам проекта. + + +Создание фильтра[¶](#filter-creation "Ссылка на этот заголовок") +---------------------------------------------------------------- + + +Перейдите в **Меню** -\> **Пользовательские фильтры** или **Меню** -\> **Настройки** -\> **Пользовательские фильтры** + +![Custom Filter Creation](https://kanboard.net/screenshots/documentation/custom-filter-creation.png) + +Рисунок. Создание пользовательского фильтра. + + + +Созданый фильтр появится на Доске рядом со стандартными фильтрами + +![Custom Filter Dropdown](https://kanboard.net/screenshots/documentation/custom-filter-dropdown.png) + +Рисунок. Выпадающий список - Пользовательский фильтр. + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/debian-installation.markdown b/doc/ru_RU/debian-installation.markdown new file mode 100644 index 00000000..2c33465e --- /dev/null +++ b/doc/ru_RU/debian-installation.markdown @@ -0,0 +1,104 @@ +Как установить Канборд на Debian? +================================= + +Некоторые возможности Канборда требуют [запуск ежедневных фоновых задач](cronjob.markdown). + + +Debian 8 (Jessie)[¶](#debian-8-jessie "Ссылка на этот заголовок") +----------------------------------------------------------------- + + +Установите Apache и PHP: + + + apt-get update + + apt-get install -y php5 php5-sqlite php5-gd unzip + + service apache2 restart + + + +Установите Канборд: + + + 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)[¶](#debian-7-wheezy "Ссылка на этот заголовок") +----------------------------------------------------------------- + + + +Установите Apache и PHP: + + + + apt-get update + + apt-get install -y php5 php5-sqlite php5-gd unzip + + + +Установите Канборд: + + + + 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)[¶](#debian-6-squeeze "Ссылка на этот заголовок") +------------------------------------------------------------------- + + + +Установите Apache и PHP: + + + + apt-get update + + apt-get install -y libapache2-mod-php5 php5-sqlite php5-gd unzip + + + +Установите Канборд: + + + + 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 + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/docker.markdown b/doc/ru_RU/docker.markdown new file mode 100644 index 00000000..358ade73 --- /dev/null +++ b/doc/ru_RU/docker.markdown @@ -0,0 +1,134 @@ +Как запустить Канборд с Docker? +=============================== + + +Канборд можно легко запустить с [Docker](https://www.docker.com). + + +Размер образа, приблизительно, **50MB** содержит: + +- [Alpine Linux](http://alpinelinux.org/) +- The [process manager S6](http://skarnet.org/software/s6/) +- Nginx +- PHP-FPM + + +Канборд запускает фоновые задачи каждый день в полночь. Переписывание URL (URL rewriting) включено в базовой конфигурации. + +Когда контейнер запущен, использование памяти около **20MB**. + + +Использование стабильной версии[¶](#use-the-stable-version "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------- + + +Для получения последней стабильной версии Канборда используйте тег **stable**: + + + + docker pull kanboard/kanboard + + docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:stable + + + +Использование разрабатываемой версии (автоматической сборки)[¶](#use-the-development-version-automated-build "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------------------------------------------------------- + + + +Каждый новый коммит в репозитории вызывает новую сборку в [Docker Hub](https://registry.hub.docker.com/u/kanboard/kanboard/). + + + + docker pull kanboard/kanboard + + docker run -d --name kanboard -p 80:80 -t kanboard/kanboard:latest + + + +Используя **разрабатываемую версию** Канборда с тегом **latest**, вы принимаете на себя все риски нестабильной версии. + + + +Создание своего образа Docker[¶](#build-your-own-docker-image "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------- + +Для сборки своего образа, в репозитории Канборда имеется `Dockerfile`{.docutils .literal}. Склонируйте репозиторий Канборда и выполните следующую команду: + + + + docker build -t youruser/kanboard:master . + + + +или + + + + make docker-image + + + +Для запуска вашего контейнера в фоновом режиме на порту 80: + + + + docker run -d --name kanboard -p 80:80 -t youruser/kanboard:master + + + +Тома[¶](#volumes "Ссылка на этот заголовок") +-------------------------------------------- + + +Вы можете прикрепить 2 тома к вашему контейнеру: + +- Каталог с данными: `/var/www/kanboard/data` +- Каталог с плагинами: `/var/www/kanboard/plugins` + + + +Используйте опцию `-v` для монтирования тома на удаленной машине как описано в [официальной документации Docker](https://docs.docker.com/engine/userguide/containers/dockervolumes/). + + + +Обновление вашего контейнера[¶](#upgrade-your-container "Ссылка на этот заголовок") +----------------------------------------------------------------------------------- + +- Загрузите новый образ +- Удалите старый контейнер +- Перезапустите новый контейнер с теми же томами + + +Переменные окружения[¶](#environment-variables "Ссылка на этот заголовок") +-------------------------------------------------------------------------- + + +Список переменных окружения доступен на [этой странице](env.markdown). + + + +Файлы конфигурации[¶](#config-files "Ссылка на этот заголовок") +--------------------------------------------------------------- + +- Контейнер уже содержит конфигурационный файл расположенный в `/var/www/kanboard/config.php`. +- Вы можете сохранить свой конфиг файл в томе с данными: `/var/www/kanboard/data/config.php`. + + + +Ссылки[¶](#references "Ссылка на этот заголовок") +------------------------------------------------- + +- [Официальные образы Канборд](https://registry.hub.docker.com/u/kanboard/kanboard/) +- [Документация Docker](https://docs.docker.com/) +- [Стабильная версия Dockerfile](https://github.com/kanboard/docker) +- [Разрабатываемая версия Dockerfile](https://github.com/fguillot/kanboard/blob/master/Dockerfile) + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/duplicate-move-tasks.markdown b/doc/ru_RU/duplicate-move-tasks.markdown new file mode 100644 index 00000000..48cec06c --- /dev/null +++ b/doc/ru_RU/duplicate-move-tasks.markdown @@ -0,0 +1,79 @@ +Дублирование и перенос задач +============================ + + +Создание копии задачи в том же проекте[¶](#duplicate-a-task-into-the-same-project "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------- + + +Перейдите в детальное представление задачи и выберите в боковой панели (слева) **Клонировать**. + +![Task Duplication](https://kanboard.net/screenshots/documentation/task-duplication.png) + +Рисунок. Создание копии задачи. + + +Новая задача будет создана с теми же свойствами как и у оригинальной задачи. + + +Создание копии задачи в другой проект[¶](#duplicate-a-task-to-another-project "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------- + + +Перейдите в детальное представление задачи и выберите в боковом меню (слева) **Клонировать в другой проект**. + +![Task Duplication Another Project](https://kanboard.net/screenshots/documentation/task-duplication-another-project.png) + +Рисунок. Создание копии задачи в другой проект. + + +При выборе проекта в выпадающем списке, показываются только те проекты в которых вы являетесь участниками. + +Перед тем как скопировать задачу, Канборд просит вас указать свойства проекта (куда будет копироваться), потому что проекты могуг иметь разные столбцы, дорожки и т.д. + +Вам нужно указать: + +- Дорожку, в которую скопируется задача +- Колонку +- Категорию +- Испольнителя + +Перемещение задачи в другой проект[¶](#move-a-task-to-another-project "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------- + +Перейдите в детальное представление задачи и выберите в боковом меню **Переместить в другой проект** + +Процедура перемещения задачи в другой проект такая же как и при копировании, вы должны указать новые свойства для задачи. + + +Список копируемых полей[¶](#list-of-fields-duplicated "Ссылка на этот заголовок") +--------------------------------------------------------------------------------- + + +Ниже приведен список полей (свойств), которые будут скопированы: + +- заголовок +- описание +- дата\_исполнение +- цвет\_id +- проект\_id +- колонка\_id +- владелец\_id +- оценка +- категория\_id +- время\_запланировано +- дорожка\_id +- повторение\_статус +- повторение\_триггер +- повторение\_фактор +- повторение\_timeframe +- повторение\_basedate + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/editing-projects.markdown b/doc/ru_RU/editing-projects.markdown new file mode 100644 index 00000000..5ff81f90 --- /dev/null +++ b/doc/ru_RU/editing-projects.markdown @@ -0,0 +1,25 @@ +Редактирование проектов +======================= + + +Проект может быть переименован и выключен в любое время + +Для переименования проекта нажмите на ссылку **“Изменить проект”** (для перехода выберите **Меню** -\> **Настройки**) + + +![Project edition](screenshots/project-edition.png) + +Рисунок. Изменение проекта. + +- Дата начала и дата завершения используются при генерации диаграммы Ганта +- Описание отображается как подсказка на Доске и на странице со списком проектов +- Администраторы и менеджеры проекта могут сделать приватный проект доступным для других пользователей установив галочку в чекбоксе **“Приватный проект”** +- Вы можете сделать публичный проект приватным. + +Внимание: Когда вы делаете приватный проект из публичного, все пользователи ранее присоединенные к проекту будут иметь доступ. Ограничьте список пользователей для вашего приватного проекта. + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/email-configuration.markdown b/doc/ru_RU/email-configuration.markdown new file mode 100644 index 00000000..e04aca7b --- /dev/null +++ b/doc/ru_RU/email-configuration.markdown @@ -0,0 +1,156 @@ +Настройка email +=============== + + +Настройки пользователя[¶](#user-settings "Ссылка на этот заголовок") +-------------------------------------------------------------------- + +Для получение уведомлений на email, пользователи Канборда должны иметь: + +- Включенные уведомления, должны быть включены в профиле пользователя +- Должен быть прописан правильный email адрес в профиле пользователя +- Быть участником проекта, который отсылает уведомления + + +Примечание: Пользователь, выполнивший вход в Канборд и выполняющий действие, не будет получать уведомления. Уведомления будут получать только другие участники проекта. + + + +Email шлюзы[¶](#email-transports "Ссылка на этот заголовок") +------------------------------------------------------------ + +В Канборд доступны несколько шлюзов для email: + +- SMTP +- Sendmail +- Встроенная mail функция PHP +- Другие методы могут предоставить внешние плагины: Postmark, Sendgrid and Mailgun + + +Настройки сервера[¶](#server-settings "Ссылка на этот заголовок") +----------------------------------------------------------------- + +По умолчанию, Канборд использует встроенную в PHP функцию для передачи email сообщений. Обычно не требуется дополнительных настроек, если ваш сервер уже может отправлять email сообщения. + +Если вы захотите использовать другие методы: SMTP протокол и Sendmail, то ниже приведены инструкции по настройке. + +### Настройка SMTP[¶](#smtp-configuration "Ссылка на этот заголовок") + +Переименуйте файл `config.default.php`{.docutils .literal} в `config.php`{.docutils .literal} и измените следующие значения: + + + // 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'); + + + +Возможно понадобится использовать шифрованное подключение TLS или SSL: + + + define('MAIL_SMTP_ENCRYPTION', 'ssl'); // Valid values are "null", "ssl" or "tls" + + +### Настройка Sendmail[¶](#sendmail-configuration "Ссылка на этот заголовок") + +По умолчанию команда отправки сообщений выглядит так `/usr/sbin/sendmail -bs`{.docutils .literal}, но вы можете изменить ее в файле конфигурации. + +Например: + + + + // 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'); + + + +### Встроенная mail функция PHP[¶](#php-native-mail-function "Ссылка на этот заголовок") + +Это конфигурация по умолчанию: + + + + define('MAIL_TRANSPORT', 'mail'); + + + +### Email адрес отправителя[¶](#the-sender-email-address "Ссылка на этот заголовок") + +По умолчанию, сообщения отправляются с адресом отправителя `notifications@kanboard.local`{.docutils .literal}. На этот адрес нельзя ответить. + +Вы можете настроить этот адрес изменив значение константы `MAIL_FROM`{.docutils .literal} в вашем конфигурационном файле. + + + define('MAIL_FROM', 'kanboard@mydomain.tld'); + + +Это может быть полезным, если ваш SMTP сервер не принимает неправильные адреса. + + +### Как отобразить ссылку на задачу в уведомлении?[¶](#how-to-display-a-link-to-the-task-in-notifications "Ссылка на этот заголовок") + +Чтобы сделать это, вы должны указать URL вашего установленного Канборда в [Настройках приложения](application-configuration.markdown). + +Например: + + + +- [http://demo.kanboard.ru/](http://demo.kanboard.ru/) + + + +- <http:/>/имясервера/kanboard/ + + + +- [http://kanboard.mydomain.com/](http://kanboard.mydomain.com/) + + + +Не забудьте добавить в конце слеш `/`{.docutils .literal}. + + + +Вы должны сделать это вручную, потому что Канборд не может угадать URL из скрипта командной строки и некоторые конфигурации веб серверов очень специфичны. + + +Решение проблем[¶](#troubleshooting "Ссылка на этот заголовок") +--------------------------------------------------------------- + +Если email сообщения не отправляются и вы уверены, что все настроили правильно: + +- Проверьте папку Спам +- Включите режим отладки и посмотрите отладочный файл `data/debug.log`{.docutils .literal}, вы можете увидеть конкретную ошибку +- Убедитесь, что ваш сервер или ваш хостинг провайдер позволяет вам отсылать email сообщения +- Если вы используете SeLinux, разрешите PHP отсылать email сообщения. + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/env.markdown b/doc/ru_RU/env.markdown new file mode 100644 index 00000000..3764e98e --- /dev/null +++ b/doc/ru_RU/env.markdown @@ -0,0 +1,21 @@ +Переменные окружения +==================== + +Переменные окружения могут пригодится когда Канборд развертывается как контейнер (Docker). + + +| Переменная | Описание | +|---------|------------------------------------------------------------------| +| DATABASE\_URL | `[database type]://[username]:[password]@[host]:[port]/[database name]`, например: `postgres://foo:foo@myserver:5432/kanboard` | +| DEBUG | Включение/выключение режима отладки: “true” или “false” | +| LOG\_DRIVER | Logging driver: stdout, stderr, file or syslog | + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ext-search.markdown b/doc/ru_RU/ext-search.markdown new file mode 100644 index 00000000..1d6e7fe1 --- /dev/null +++ b/doc/ru_RU/ext-search.markdown @@ -0,0 +1,235 @@ +Синтаксис расширенного поиска +============================= + + +В Канборде используется простой язык запросов для расширенного поиска. Вы можете искать задачи, комментарии, подзадачи, ссылки, но только активные. + + +Пример запроса[¶](#example-of-query "Ссылка на этот заголовок") +--------------------------------------------------------------- + + + +В этом примере показываются как отобразить задачи назначенные мне с датой окончания завтра и название содержит “my title”: + + + + assigne:me due:tomorrow my title + + + +Глобальный поиск[¶](#global-search "Ссылка на этот заголовок") +-------------------------------------------------------------- + + + +### Поиск по id задачи или названию задачи[¶](#search-by-task-id-or-title "Ссылка на этот заголовок") + +- Поиск задачи по id: `#123` +- Поиск по id задачи и названию задачи: `123` +- Поиск по названию задачи: `любые слова и цифры`, но не должны содержать атрибуты поиска + + +### Поиск по статусу[¶](#search-by-status "Ссылка на этот заголовок") + +Атрибут: **status** + +- Запрос на поиск открытых задач: `status:open` +- Запрос на поиск закрытых задач: `status:closed` + + + +### Поиск по испольнителю[¶](#search-by-assignee "Ссылка на этот заголовок") + + +Атрибут: **assignee** + +- Поиск по полному имени испольнителя: `assignee:"Петр Иванов"` +- Поиск исполнителя по имени пользователя: `assignee:pivanov` +- Отбор нескольких испольнителей: `assignee:tsemenov assignee:"Петр Иванов"` +- Поиск задач без исполнителя: `assignee:nobody` +- Поиск задач назначенных мне: `assignee:me` + + +### Поиск по создателю задач[¶](#search-by-task-creator "Ссылка на этот заголовок") + + +Атрибут: **creator** + +- Отбор задач созданных мной: `creator:me` +- Отбор задач которые создал Петр Иванов: `creator:"Петр Иванов"` +- Отбор задач созданных пользователем с id \#1: `creator:1` + + +### Поиск по исполнителю подзадач[¶](#search-by-subtask-assignee "Ссылка на этот заголовок") + +Атрибут: **subtask:assignee** + +- Например: `subtask:assignee:"Петр Иванов"` + + +### Поиск по цвету[¶](#search-by-color "Ссылка на этот заголовок") + +Атрибут: **color** + +- Отбор по цвету с id blue: `color:blue` +- Отбор по названию цвета: `color:"Deep Orange"` + + +### Отбор по “Сделать до”[¶](#search-by-the-due-date "Ссылка на этот заголовок") + + +Атрибут: **due** + +- Поиск задач со сроком испольнения до сегодня: `due:today` +- Поиск задач со сроком исполнения завтра: `due:tomorrow` +- Поиск задач со сроком исполнения вчера: `due:yesterday` +- Поиск задач с конкретной датой исполнения: `due:2016-06-29` + +Дата должна быть в формате ISO 8601: **YYYY-MM-DD**. + +Все строковые форматы поддерживаемые функцией `strtotime()` допустимы. Например, `next Thursday`, `-2 days`{.docutils .literal}, `+2 months`, `tomorrow` и т.д. + + +Операторы сравнения с датой: + +- Старше чем: **due:\>2015-06-29** +- Моложе чем: **due:\<2015-06-29** +- Старше чем или равно: **due:\>=2015-06-29** +- Моложе чем или равно: **due:\<=2015-06-29** + + +### Поиск по дате изменения[¶](#search-by-modification-date "Ссылка на этот заголовок") + +Атрибут: **modified** или **updated** + +Формат даты такой же как и у “Сделать до” + +Отфильтровать недавно измененные задачи: `modified:recently`. + +Этот запрос использует тоже значение что и в настройках Доски - “Время подсвечивания задачи”. + + +### Поиск по дате создания[¶](#search-by-creation-date "Ссылка на этот заголовок") + +Атрибут: **created** + +Работает также как и поиск по дате изменения. + + +### Поиск по описанию[¶](#search-by-description "Ссылка на этот заголовок") + +Атрибут: **description** or **desc** + +Например: `description:"здесь пишем тескт для поиска"` + + +### Поиск по внешним ссылкам[¶](#search-by-external-reference "Ссылка на этот заголовок") + +Например: нужно найти задачу, которая содержит ссылку на id или название другой задачи. + +- `ref:1234` или `reference:TICKET-1234` + + +### Поиск по категории[¶](#search-by-category "Ссылка на этот заголовок") + +Атрибут: **category** + +- Найти задачи с указанной категорией: `category:"Важные запросы"` +- Найти задачи, которые содержать указанные категории: `category:"Ошибки" category:"Изменения"` +- Найти задачи без категорий: `category:none` + + +### Поиск проектов[¶](#search-by-project "Ссылка на этот заголовок") + +Атрибут: **project** + +- Поиск задач по имени проекта: `project:"Какой-то проект"` +- Поиск задач по id проекта: `project:23` +- Поиск задач в нескольких проектах: `project:"Проект A" project:"Проект B"` + + +### Поиск в колонках[¶](#search-by-columns "Ссылка на этот заголовок") + +Атрибут: **column** + +- Поиск задач в указанной колонке: `column:"В работе"` +- Поиск задач в нескольких колонках: `column:"Невыполненные заказы" column:ready` + + +### Поиск в Дорожках[¶](#search-by-swim-lane "Ссылка на этот заголовок") + +Атрибут: **swimlane** + +- Поиск задач в указанной Дорожке: `swimlane:"Версия 42"` +- Поиск задач в базовой Дорожке: `swimlane:default` +- Поиск задач в нескольких Дорожках: `swimlane:"Версия 1.2" swimlane:"Версия 1.3"` + + +### Поиск ссылки на задачу[¶](#search-by-task-link "Ссылка на этот заголовок") + +Атрибут: **link** + +- Поиск задач содержащих ссылку: `link:"это веха задачи "` +- Поиск задач по нескольким ссылкам: `link:"веха задачи " link:"относится к"` + + +### Поиск по комментарию[¶](#search-by-comment "Ссылка на этот заголовок") + +Атрибут: **comment** + +- Найти комментарии, которые содержат указанное название: `comment:"Какое-то название"` + + +Поиск активности задач[¶](#activity-stream-search "Ссылка на этот заголовок") +----------------------------------------------------------------------------- + + + +### Поиск событий по названию задачи[¶](#search-events-by-task-title "Ссылка на этот заголовок") + + + +Атрибут: **title** или без ничего (по умолчанию) + +- Например: `title:"My task"` +- Поиск задачи по id: `#123` + + +### Поиск событий по статусу задачи[¶](#search-events-by-task-status "Ссылка на этот заголовок") + +Атрибут: **status** + + + +### Поиск событий по создателю[¶](#search-by-event-creator "Ссылка на этот заголовок") + +Атрибут: **creator** + + + +### Поиск событий по дате создания[¶](#search-by-event-creation-date "Ссылка на этот заголовок") + +Атрибут: **created** + + + +### Поиск событий по проекту[¶](#search-events-by-project "Ссылка на этот заголовок") + +Атрибут: **project** + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/faq.markdown b/doc/ru_RU/faq.markdown new file mode 100644 index 00000000..0730f2c8 --- /dev/null +++ b/doc/ru_RU/faq.markdown @@ -0,0 +1,162 @@ +Часто задаваемые вопросы +======================== + + +Вы можете порекомендовать веб хостинг провайдера для Канборд?[¶](#can-you-recommend-a-web-hosting-provider-for-kanboard "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------------------------- + +Работу Канборд поддерживают несколько крупных провайдеров VPS, такие как [Digital Ocean](https://www.digitalocean.com/?refcode=4b541f47aae4), [Linode](https://www.linode.com/?r=4e381ac8a61116f40c60dc7438acc719610d8b11) или [Gandi](https://www.gandi.net/). + +Для получения большей производительности, выбирайте провайдера с быстрыми дисками чтения/записи, потому что Канборд использует по умолчанию Sqlite. Избегайте провайдеров которые используют подключения NFS. + + +У меня выводится пустая страница после установки или обновления Канборд[¶](#i-get-a-blank-page-after-installing-or-upgrading-kanboard "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------------------------------------------------------------------------- + +- Проверьте, установили ли вы всё на сервер, что было указано в требованиях +- Посмотрите ошибки в PHP и Apache логах +- Проверьте права доступа к файлам +- Если вы используете кеширование OPcode, перезапустите ваш веб сервер или php-fpm + + +У меня выводится ошибка “There is no suitable CSPRNG installed on your system”[¶](#i-have-the-error-there-is-no-suitable-csprng-installed-on-your-system "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ + +Если вы используете PHP \< 7.0, то вам нужно включить расширение openssl или доступ из приложения к `/dev/urandom`, если имеются ограничения от `open_basedir`. + + +Страница не найдена и URL выглядит криво (&)[¶](#page-not-found-and-the-url-seems-wrong-amp "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------- + +- UTL выглядит как `/?controller=auth&action=login&redirect_query=` вместо `?controller=auth&action=login&redirect_query=` +- Канборд выдает ошибку “Страница не найдена” + + +Эта ошибка исходит из настроек конфигурации вашего PHP, значение `arg_separator.output` отсутствует в базовой настройке. Есть разные пути решения этой проблемы: + +Измените значение прямо в вашем `php.ini`: + + + arg_separator.output = "&" + + +Переделайте значение с помощью `.htaccess`: + + + php_value arg_separator.output "&" + + +Иначе Канборд будет брать значение напрямую из PHP. + + + +Ошибка аутентификации в API и Apache + PHP-FPM[¶](#authentication-failure-with-the-api-and-apache-php-fpm "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------------------------- + +По умолчанию, php-cgi под Apache не передает HTTP Basic user/pass в PHP. Чтобы это окружение заработало, добавьте эти строки в ваш файл `.htaccess`: + + + + RewriteCond %{HTTP:Authorization} ^(.+)$ + + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + + +Проблемы с eAccelerator[¶](#known-issues-with-eaccelerator "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------- + +Канборд не очень хорошо работает с [eAccelerator](http://eaccelerator.net). Проблема в том, что выдается чистая страница или падает Apache: + + + [Wed Mar 05 21:36:56 2014] [notice] child pid 22630 exit signal Segmentation fault (11) + + +Лучшее решение, чтобы избежать этой проблемы, выключить eAccelerator или прописать в конфиге какие файлы вы хотите кешировать (параметр `eaccelerator.filter`). + + + +Проект [eAccelerator выглядит мертвым и не обновляется с 2012](https://github.com/eaccelerator/eaccelerator/commits/master). Мы рекомендуем перейти на последнюю версию PHP, потому что в него включен [OPcache](http://php.net/manual/en/intro.opcache.php). + + +Почему минимальная рекомендуемая версия PHP 5.3.3?[¶](#why-the-minimum-requirement-is-php-5-3-3 "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------- + +Канборд использует функцию `password_hash()` для шифрования пароля, а эта функция доступна только для PHP \>= 5.5. + +Однако, имеется back-port для [более ранних версий PHP](https://github.com/ircmaxell/password_compat#requirements). Эта библиотека требует минимум PHP 5.3.7 для корректной работы. + +По всей видимости, патчи безопасности back-port имеются в Centos и Debian, поэтому PHP 5.3.3 подходит для работы Канборд. + +Канборд v1.0.10 и v1.0.11 требует минимум PHP 5.3.7, но эти изменения возвращены на PHP 5.3.3 в Канборде \>= v1.0.12 + + + +Как проверить работу Канборда со встроенным веб-сервером PHP?[¶](#how-to-test-kanboard-with-the-php-built-in-web-server "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------------------------- + +Если вы не хотите устанавливать веб сервер типа Apache, то вы можете протестировать работу Канборда на [встроенном в PHP веб сервере](http://www.php.net/manual/en/features.commandline.webserver.php): + + + unzip kanboard-VERSION.zip + + cd kanboard + + php -S localhost:8000 + + open http://localhost:8000/ + + + +Как установить Канборд на Yunohost?[¶](#how-to-install-kanboard-on-yunohost "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------- + +[YunoHost](https://yunohost.org/) это серверная операционная система, цель которой предоставить хостинг для всех. + +Отсюда можно [загрузить инсталяционный пакет Kanboard для Yunohost](https://github.com/mbugeia/kanboard_ynh). + + +Где я могу найти список связанных с Канборд проектов?[¶](#where-can-i-find-a-list-of-related-projects "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------- + +- [Kanboard API python client by @freekoder]([https://github.com/freekoder/kanboard-py](https://github.com/freekoder/kanboard-py)) + +- [Kanboard Presenter by David Eberlein](https://github.com/davideberlein/kanboard-presenter) + +- [CSV2Kanboard by @ashbike]([https://github.com/ashbike/csv2kanboard](https://github.com/ashbike/csv2kanboard)) + +- [Kanboard for Yunohost by @mbugeia]([https://github.com/mbugeia/kanboard\_ynh](https://github.com/mbugeia/kanboard_ynh)) + +- [Trello import script by @matueranet]([https://github.com/matueranet/kanboard-import-trello](https://github.com/matueranet/kanboard-import-trello)) + +- [Chrome extension by Timo](https://chrome.google.com/webstore/detail/kanboard-quickmenu/akjbeplnnihghabpgcfmfhfmifjljneh?utm_source=chrome-ntp-icon), [Source code](https://github.com/BlueTeck/kanboard_chrome_extension) + +- [Python client script by @dzudek]([https://gist.github.com/fguillot/84c70d4928eb1e0cb374](https://gist.github.com/fguillot/84c70d4928eb1e0cb374)) + +- [Shell script for SQLite to MySQL/MariaDB migration by @oliviermaridat]([https://github.com/oliviermaridat/kanboard-sqlite2mysql](https://github.com/oliviermaridat/kanboard-sqlite2mysql)) + +- [Git hooks for integration with Kanboard by Gene Pavlovsky](https://github.com/gene-pavlovsky/kanboard-git-hooks) + + + +Имеются ли руководства по Канборду на других языках?[¶](#are-there-some-tutorials-about-kanboard-in-other-languages "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------------------------------------------------------- + +- [Серия статей про Kanboard на немецком языке](http://demaya.de/wp/2014/07/kanboard-eine-jira-alternative-im-detail-installation/) . +- [Русская документация по Канборд](http://kanboard.ru/doc/). + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/freebsd-installation.markdown b/doc/ru_RU/freebsd-installation.markdown new file mode 100644 index 00000000..b014e354 --- /dev/null +++ b/doc/ru_RU/freebsd-installation.markdown @@ -0,0 +1,187 @@ +Инсталяция на FreeBSD 10 +======================== + + +Инсталяция из пакетов[¶](#install-from-packages "Ссылка на этот заголовок") +--------------------------------------------------------------------------- + + $ pkg update + + $ pkg upgrade + + $ pkg install apache24 mod_php56 kanboard + + + +Включите Apache в `/etc/rc.conf`{.docutils .literal}: + + + + $ echo apache24_enable="YES" >> /etc/rc.conf + + + +Установите PHP для Apache: + + + + $ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf + + $ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf + + + +Затем, запустите Apache: + + + + $ service apache24 start + + + +Создайте символическую ссылку на каталог Kanboard в корне Apache: + + + + cd /usr/local/www/apache24/data + + ln -s /usr/local/www/kanboard + + + +Готово. Можете перейти в <http:/>/вашвебсервер/kanboard и начинать работать! + + + +*Примечание*: Если вы хотите добавить дополнительные возможности, типа интеграции LDAP, то нужно установить соответствующий PHP модуль. Также, вам необходимо настроить соответсвующие права на каталог data. + + + +Установка из портов[¶](#installing-from-ports "Ссылка на этот заголовок") +------------------------------------------------------------------------- + + +Нужно установить 3 основных элемента: + + + +- Apache + +- mod\_php for Apache + +- Kanboard + + + +Загрузите и распакуйте порты: + + + + $ portsnap fetch + + $ portsnap extract + + + +или обновите имеющиеся: + + + + $ portsnap fetch + + $ portsnap update + + + +Дополнительную информацию о дереве портов вы можете посмотреть на [FreeBSD Handbook](https://www.freebsd.org/doc/handbook/ports-using.html). + + + +Установка Apache: + + + + $ cd /usr/ports/www/apache24 + + $ make install clean + + + +Включите Apache в `/etc/rc.conf`{.docutils .literal}: + + + + $ echo apache24_enable="YES" >> /etc/rc.conf + + + +Установите mod\_php для Apache: + + + + $ cd /usr/ports/www/mod_php5 + + $ make install clean + + + +Установите Kanboard из портов: + + + + $ cd /usr/ports/www/kanboard + + $ make install clean + + + +Установите PHP для Apache: + + + + $ echo "AddType application/x-httpd-php .php" >> /usr/local/etc/apache24/Includes/php.conf + + $ echo "DirectoryIndex index.php index.html" >> /usr/local/etc/apache24/Includes/php.conf + + + +Затем, запустите Apache: + + + + $ service apache24 start + + + +Готово. Можете перейти в <http:/>/вашвебсервер/kanboard и начинать работать! + + + +*Примечание*: Если вы хотите использовать дополнительные возможности, типа интеграции LDAP, то нужно установить PHP модуль из `lang/php5-extensions`{.docutils .literal}. + + + +Установка из архива[¶](#manual-installation "Ссылка на этот заголовок") +----------------------------------------------------------------------- + +Начина с версии 1.0.16 Kanboard имеется в портах FreeBSD, поэтому нет необходимости устанавливать вручную. + + + +Обратите внимание[¶](#please-note "Ссылка на этот заголовок") +------------------------------------------------------------- + +- Порт расположен на хостинге [bitbucket](https://bitbucket.org/if0/freebsd-kanboard/). Делайте комментарии, ответвления и предлагайте обновления! +- Некоторые возможности Канборд требуют [запуск ежедневных фоновых задач](cronjob.markdown). + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/gantt-chart-projects.markdown b/doc/ru_RU/gantt-chart-projects.markdown new file mode 100644 index 00000000..d440a85d --- /dev/null +++ b/doc/ru_RU/gantt-chart-projects.markdown @@ -0,0 +1,60 @@ +Диаграмма Ганта для всех проектов +================================= + + + +Цель диаграммы Ганта для проектов - показать прогресс проектов основанный на дате начала и дате завершения. + + + +- Диаграмма Ганта для проектов доступна из раздела **Управление проектами** + + + +- Только менеджеры проекта и администраторы имеют доступ в этот раздел + + + +- Менеджеры проекта могут видеть только те проекты, в которых они являются участниками + + + +- Приватные проекты не показывают этот график + + + +![Gantt Chart for all projects](https://kanboard.net/screenshots/documentation/gantt-chart-all-projects.png) + +Рисунок. Диаграмма Ганта для всех проектов + + + +- **Дата начала** и **дата завершения** проекта используются для рисования графика + + + +- Горизонтальные полосы (столбики) могут быть расширены (сжаты) и перемещены горизонтально с помощью мыши + + + +- Перемещение по вертикали невозможно + + + +- Полосы (столбики) проекта отображаются черным, когда проект не имеет дату начала и завершения + + + +- Информационная подсказка показывает список менеджеров и участников проекта + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/gantt-chart-tasks.markdown b/doc/ru_RU/gantt-chart-tasks.markdown new file mode 100644 index 00000000..1b8c4a2c --- /dev/null +++ b/doc/ru_RU/gantt-chart-tasks.markdown @@ -0,0 +1,66 @@ +Диаграмма Ганта для задач +========================= + + + +Цель диаграммы Ганта - показать время отведенное на задачу в заданном проекте. + + + +- Диаграмма Ганта доступна в рабочем окружении проекта + + + +- Только менеджеры проектов могут иметь доступ в этот раздел + + + +![Gantt Chart](https://kanboard.net/screenshots/documentation/gantt-chart-project.png) + +Рисунок. Диаграмма Ганта. + + + +- Дата начала и дата завершения задач используется для рисования диаграммы + + + +- Задача может быть расширена и перемещена горизонтально с помощью мыши + + + +- Перемещение по вертикали невозможно + + + +- Полоса (горизонтальный столбик) на диаграмме имеет такой же цвет как и задача + + + +- Каждая полоса отображает статус прогресса в процентах. Проценты подсчитываются с учетом позиции задачи в колонке на Доске. + + + +- Для соответсвия модели Kanban, задачи могут быть отсортированы в соответствии с позициями на доске или по дате начала + + + +- Новые задачи созданные через диаграмму Ганта будут показаны на Доске в первой колонке на первой позиции + + + +- Задачи отображаются черным цветом, если не указана дата начала или дата исполнения + + + +![Task not defined](https://kanboard.net/screenshots/documentation/gantt-chart-not-defined.png) + +Рисунок. Задача без указанных дат начала или завершения + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/genindex.markdown b/doc/ru_RU/genindex.markdown new file mode 100644 index 00000000..ceb48d17 --- /dev/null +++ b/doc/ru_RU/genindex.markdown @@ -0,0 +1,15 @@ +Алфавитный указатель +==================== + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/groups.markdown b/doc/ru_RU/groups.markdown new file mode 100644 index 00000000..5ab043d4 --- /dev/null +++ b/doc/ru_RU/groups.markdown @@ -0,0 +1,35 @@ +Управление группами +=================== + + + +В Канборде каждый пользователь может быть членом одной или нескольких групп. Группа - это что-то вроде команды или организации. + + + +Только администраторы могут создавать новую группу и добавлять туда пользователей. + + + +Настройка групп доступна через **Управление пользователями** (выпадающее меню справа вверху) -\> **Просмотр всех пользователей**. Здесь вы можете создавать новые группы и добавлять пользователей в группы. + + + +![Group Management](screenshots/groups-management.png) + +Рисунок. Управление группами. + + + +Менеджеры проектов могут предоставлять доступ группам к проектам на [странице Разрешения проекта](project-permissions.markdown). + + + +Внешние id в основном используются для предоставления доступа внешним группам. Канборд поддерживает группы из LDAP посредством [автоматической синхронизации групп из LDAP сервера](ldap-group-sync.markdown). + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/heroku.markdown b/doc/ru_RU/heroku.markdown new file mode 100644 index 00000000..6e2bd945 --- /dev/null +++ b/doc/ru_RU/heroku.markdown @@ -0,0 +1,72 @@ +Развертывание Канборд на Heroku +=============================== + +Вы можете бесплатно испытать работу Kanboard на [Heroku](https://www.heroku.com/). Вам нужно нажать кнопку **Deploy to Heroku** и следовать руководству приведенному ниже: + +[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/fguillot/kanboard) + + + +Требования[¶](#requirements "Ссылка на этот заголовок") +------------------------------------------------------- + + + +- Учетная запись на Heroku. Вы можете зарегистрироваться бесплатно. +- Установленная утилита командной строки Heroku + + + +Руководство по установке[¶](#manual-instructions "Ссылка на этот заголовок") +---------------------------------------------------------------------------- + + + # Get the last development version + + git clone https://github.com/fguillot/kanboard.git + + cd kanboard + + + + # Push the code to Heroku (You can also use SSH if git over HTTP doesn't work) + + heroku create + + git push heroku master + + + + # Start a new dyno with a Postgresql database + + heroku ps:scale web=1 + + heroku addons:add heroku-postgresql:hobby-dev + + + + # Open your browser + + heroku open + + + +Ограничения[¶](#limitations "Ссылка на этот заголовок") +------------------------------------------------------- + +- Хранилище на Heroku эфимерное. Это означает, что файлы, загружаемые через Канборд, будут отсутствовать в системе после перезагрузки. Вы можете установить плагин для хранения файлов в облаке, например [Amazon S3](https://github.com/kanboard/plugin-s3). +- Некоторые возможности Канборда требуют, чтобы вы выполняли [запуск ежедневных фоновых задач](cronjob.markdown). + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ical.markdown b/doc/ru_RU/ical.markdown new file mode 100644 index 00000000..77b6340e --- /dev/null +++ b/doc/ru_RU/ical.markdown @@ -0,0 +1,111 @@ +Синхронизация вашего календаря +============================== + + +Канборд поддерживает iCal транслятор для проектов и пользователей. Эта возможность позволяет вам импортировать задачи из Канборд в любую программу календарь (например, Microsoft Outlook, Apple Calendar, Mozilla Thunderbird и Google Calendar). + +Подписки на календарь возможны только на **чтение**, т.е. вы не можете создавать задачи во внешнем календаре. Данные из Календаря экспортируются в стандарте iCal. + +Заметка: Только задачи в промежутке от -2 месяцев до +6 месяцев (прошедшие два месяца и предстоящие 6 месяцев) экспортируются в iCalendar транслятор. + + +Календарь проекта[¶](#project-calendars "Ссылка на этот заголовок") +------------------------------------------------------------------- + +- Каждый проект имеет свой календарь. +- Ссылка на подписку уникальна для каждого проекта. Ссылка становится активной, когда вы включаете общий доступ к вашему проекту: **Меню** -\> **Настройки** -\> **Общий доступ** +- Этот календарь показывает только задачи для выбранного проекта. + + +Календарь пользователя[¶](#user-calendars "Ссылка на этот заголовок") +--------------------------------------------------------------------- + +- Каждый пользователь имеет свой собственный календарь. +- Ссылка на подписку уникальная для каждого пользователя. Ссылка становится активной, когда вы включите общий доступ для пользователя: в правом верхнем выпадающем меню - **Мой профиль** -\> в левом меню - **Общий доступ**. +- Этот календарь показывает задачи назначенные пользователю во всех проектах. + + +Добавление Канборд календаря в календарь Apple[¶](#adding-your-kanboard-calendar-to-apple-calendar "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------------------ + +- Откройте календарь +- Выберите **Файл** -\> **Новая подписка на календарь** +- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте + +![Add iCal subscription](https://kanboard.net/screenshots/documentation/apple-calendar-add-subscription.png) + +Рисунок. Добавление подписки на календарь. + + +- Вы можете выбрать синхронизацию календаря с iCloud, чтобы иметь доступ к календарю с любых ваших устройств +- Не забудьте указать частоту синхронизации + + +![Edit iCal subscription](https://kanboard.net/screenshots/documentation/apple-calendar-edit-subscription.png) + +Рисунок. Редактирование подписки на календарь. + + +Добавление вашего календаря из Канборд в Microsoft Outlook[¶](#adding-your-kanboard-calendar-to-microsoft-outlook "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------------------- + +![Outlook Add Internet Calendar](https://kanboard.net/screenshots/documentation/outlook-add-subscription.png) + +Рисунок. Добавление в Outlook календаря из интернет + +- Откройте Outlook +- Выберите **Открыть календарь** -\> **Из интернета** +- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте + + +![Outlook Edit Internet Calendar](https://kanboard.net/screenshots/documentation/outlook-edit-subscription.png) + +Рисунок. Настройка интернет календаря в Outlook. + + +Добавление вашего календаря из Канборд в Mozilla Thunderbird[¶](#adding-your-kanboard-calendar-to-mozilla-thunderbird "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------------------------------------- + + +- Установите в Thunderbird Дополнение **Lightning** +- Выберите **Файл** -\> **Новый календарь** +- В диалоговом окне, выберите **Из сети** + +![Thunderbird Step 1](https://kanboard.net/screenshots/documentation/thunderbird-new-calendar-step1.png) + +Рисунок. Создание календаря в Thunderbird, шаг 1. + + + +- Выберите формат iCalendar +- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте + +![Thunderbird Step 2](https://kanboard.net/screenshots/documentation/thunderbird-new-calendar-step2.png) + +Рисунок. Создание календаря в Thunderbird, шаг 2. + +- Выберите цвета и другие настройки и в завершении нажмите **Сохранить**. + + +Добавление вашего календаря Канборд в календарь Google[¶](#adding-your-kanboard-calendar-to-google-calendar "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------------- + +- Нажмите иконку “треугольник” рядом с **Другие календари** (слева). +- Вставьте ссылку на календарь из Канборд в поле “Добавить календарь друга” +- Скопируйте в Канборд URL ссылку на iCal транслятор и вставьте + + +![Google Calendar](https://kanboard.net/screenshots/documentation/google-calendar-add-subscription.png) + +Рисунок. Календарь Google. + +Ваш календарь из Канборд будет доступен на планшетах и смартфонах, нужно только сделать синхронизацию. + + +[Справка по настройке календаря Google](https://support.google.com/calendar/?hl=ru#topic=3417969). + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/index.markdown b/doc/ru_RU/index.markdown new file mode 100644 index 00000000..c4a12d52 --- /dev/null +++ b/doc/ru_RU/index.markdown @@ -0,0 +1,248 @@ +Документация +============ + + +Как работать в Kanboard[¶](#using-kanboard "Ссылка на этот заголовок") +---------------------------------------------------------------------- + + +### Введение[¶](#introduction "Ссылка на этот заголовок") + + +- [Что такое Kanban?](what-is-kanban.markdown) + +- [Kanban против Todo списков и Scrum](kanban-vs-todo-and-scrum.markdown) + +- [Где можно использовать Kanboard](usage-examples.markdown) + + +### Использование доски[¶](#using-the-board "Ссылка на этот заголовок") + + +- [Доска, Календарь, Список и Гант представления](project-views.markdown) + +- [Компактное или развернутое отображение задач](board-collapsed-expanded.markdown) + +- [Горизонтальная прокрутка и компактный вид](board-horizontal-scrolling-and-compact-view.markdown) + +- [Отображение и скрытие колонок](board-show-hide-columns.markdown) + + +### Работа с проектами[¶](#working-with-projects "Ссылка на этот заголовок") + +- [Типы проектов](project-types.markdown) + +- [Создание проектов](creating-projects.markdown) + +- [Редактирование проектов](editing-projects.markdown) + +- [Публичные доски и задачи](sharing-projects.markdown) + +- [Автоматизация процессов](automatic-actions.markdown) + +- [Права доступа к проекту](project-permissions.markdown) + +- [Дорожки](swimlanes.markdown) + +- [Календарь](calendar.markdown) + +- [Аналитика](analytics.markdown) + +- [Диаграмма Ганта для задач](gantt-chart-tasks.markdown) + +- [Диаграмма Ганта для проектов](gantt-chart-projects.markdown) + +- [Пользовательские фильтры](custom-filters.markdown) + + + +### Работа с задачами[¶](#working-with-tasks "Ссылка на этот заголовок") + +- [Создание задач](creating-tasks.markdown) + +- [Закрытие задач](closing-tasks.markdown) + +- [Дублирование и перенос задач](duplicate-move-tasks.markdown) + +- [Добавление снимка экрана](screenshots.markdown) + +- [Ссылки на задачу](task-links.markdown) + +- [Перемещения](transitions.markdown) + +- [Отслеживание времени](time-tracking.markdown) + +- [Повторяющиеся задачи](recurring-tasks.markdown) + +- [Создание задач через email](create-tasks-by-email.markdown) + +- [Подзадачи](subtasks.markdown) + +- [Аналитика для задач](analytics-tasks.markdown) + +- [Ссылка на пользователя](user-mentions.markdown) + + + +### Работа с пользователями и группами[¶](#working-with-users-and-groups "Ссылка на этот заголовок") + +- [Роли](roles.markdown) + +- [Типы пользователей](user-types.markdown) + +- [Управление группами](groups.markdown) + +- [Управление пользователями](user-management.markdown) + +- [Уведомления](notifications.markdown) + +- [Двухуровневая аутентификация](2fa.markdown) + + + +### Настройки[¶](#settings "Ссылка на этот заголовок") + +- [Горячие клавиши](keyboard-shortcuts.markdown) + +- [Настройки приложения](application-configuration.markdown) + +- [Настройки проекта](project-configuration.markdown) + +- [Настройка Доски](board-configuration.markdown) + +- [Настройки календаря](calendar-configuration.markdown) + +- [Настройка ссылок](link-labels.markdown) + +- [Курсы валют](currency-rate.markdown) + + +### Встроенные возможности[¶](#integrations "Ссылка на этот заголовок") + +- [iCalendar подписки](ical.markdown) + +- [RSS/Atom подписки](rss.markdown) + +- [Json-RPC API](api-json-rpc.markdown) + +- [Webhooks](webhooks.markdown) + +- [Плагины](plugins.markdown) + + +### Дополнительно[¶](#more "Ссылка на этот заголовок") + +- [Синтаксис расширенного поиска](ext-search.markdown) + +- [Интерфейс командной строки](cli.markdown) + +- [Руководство по синтаксису](syntax-guide.markdown) + +- [Защита от Brute force](bruteforce-protection.markdown) + +- [Часто задаваемые вопросы](faq.markdown) + + + +Технические детали[¶](#technical-details "Ссылка на этот заголовок") +-------------------------------------------------------------------- + + +### Инсталяция[¶](#installation "Ссылка на этот заголовок") + +- [Требования](requirements.markdown) + +- [Инструкция по инсталяции](installation.markdown) + +- [Обновление Kanboard до новой версии](update.markdown) + +- [Инсталяция на Ubuntu](ubuntu-installation.markdown) + +- [Инсталяция на Debian](debian-installation.markdown) + +- [Инсталяция на Centos](centos-installation.markdown) + +- [Инсталяция на OpenSuse](suse-installation.markdown) + +- [Инсталяция на FreeBSD](freebsd-installation.markdown) + +- [Инсталяция на Windows Server и IIS](windows-iis-installation.markdown) + +- [Инсталяция на Windows Server и Apache](windows-apache-installation.markdown) + +- [Инсталяция на Heroku](heroku.markdown) + +- [Запуск Kanboard под Docker](docker.markdown) + +- [Запуск Kanboard под Vagrant](vagrant.markdown) + +- [Запуск Kanboard на Cloudron](cloudron.markdown) + +- [Запуск Kanboard на Nitrous](nitrous.markdown) + + +### Настройка[¶](#configuration "Ссылка на этот заголовок") + +- [Ежедневные фоновые задачи](cronjob.markdown) + +- [Конфигурационный файл](config.markdown) + +- [Переменные окружения](env.markdown) + +- [Настройка email](email-configuration.markdown) + +- [Переопределение URL](nice-urls.markdown) + +- [Директория плагинов](plugin-directory.markdown) + + + +### База данных[¶](#database "Ссылка на этот заголовок") + +- [База данных Sqlite](sqlite-database.markdown) + +- [Как использовать Mysql](mysql-configuration.markdown) + +- [Как использовать Postgresql](postgresql-configuration.markdown) + + +### Аутентификация[¶](#authentication "Ссылка на этот заголовок") + +- [LDAP аутентификация](ldap-authentication.markdown) + +- [Синхронизация групп LDAP](ldap-group-sync.markdown) + +- [Изображения из профиля LDAP](ldap-profile-picture.markdown) + +- [Параметры LDAP](ldap-parameters.markdown) + +- [Пример конфигурации LDAP](ldap-configuration-examples.markdown) + +- [Аутентификация Reverse proxy](reverse-proxy-authentication.markdown) + + +### Участие в проекте[¶](#contributors "Ссылка на этот заголовок") + +- [Руководство для участников проекта](contributing.markdown) + +- [Переводы на другие языки](translations.markdown) + +- [Стандарты при написании кода](coding-standards.markdown) + +- [Выполнение тестов](tests.markdown) + +- [Создание assets](assets.markdown) + + +[Документация](https://github.com/fguillot/kanboard/tree/master/doc) написана в формате [Markdown](https://ru.wikipedia.org/wiki/Markdown). Если вы желаете улучшить документацию - пошлите pull-request. + + + +* [Проект перевода документации Канборд на русский язык](https://github.com/hairetdin/kanboard-doc-ru). [Русская документация Канборд в формате html](http://kanboard.ru/doc/). + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/installation.markdown b/doc/ru_RU/installation.markdown new file mode 100644 index 00000000..e59e43d2 --- /dev/null +++ b/doc/ru_RU/installation.markdown @@ -0,0 +1,117 @@ +Инсталяция +========== + + + +В первую очередь, ознакомтесь с [требованиями](requirements.markdown). + + + +Инсталяция из архива (стабильная версия)[¶](#from-the-archive-stable-version "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------- + + + +1. У вас должен быть установлен веб сервер с PHP + +2. Скачайте исходный код и скопируйте директорию `kanboard` в каталог веб сервера + +3. Проверьте, чтобы директория `data` была доступна на запись + +4. В вашем браузере перейдите по ссылке <http:/>/вашвебсервер/kanboard + +5. Логин и пароль по умолчанию - **admin/admin** + +6. Все, теперь вы можете работать в Канборд + +7. Не забудьте сменить пароль! + + + +Место хранения данных: + + +- База данных Sqlite: `db.sqlite` + +- Файл отладки: `debug.log` (если включена отладка) + +- Загруженные файлы: `files/*` + +- Изображения: `files/thumbnails/*` + + + +Те, кто использует удаленную базу данных (Mysql/Postgresql) и удаленное файловое хранилище (Aws S3 или подобное), могут не назначать права доступа к локальным данным. + + +Инсталяция из репозитория (разрабатываемая версия)[¶](#from-the-repository-development-version "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------------------------- + + + +Вы можете установить [composer](https://getcomposer.org/) для этого метода инсталяции. + + +1. `git clone https://github.com/fguillot/kanboard.git` + +2. `composer install --no-dev` + +3. Далее, перейдите к третьему шагу [Инсталяция из архива](installation.html#from-the-archive-stable-version) + + + +**Внимание**: Инсталируя **текущую разрабатываемую версию**, вы должны понимать, что это нестабильная версия и берете все риски по работе Канборд на себя. + + + +Инсталяция в другой каталог[¶](#installation-outside-of-the-document-root "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------------- + + + +Если вы хотите инсталировать Канборд в другую директорию, вне корневого каталога веб сервера, вам нужно создать, как минимум, следующие символьные ссылки: + + . + + ├── assets -> ../kanboard/assets + ├── doc -> ../kanboard/doc + ├── favicon.ico -> ../kanboard/favicon.ico + ├── index.php -> ../kanboard/index.php + ├── jsonrpc.php -> ../kanboard/jsonrpc.php + └── robots.txt -> ../kanboard/robots.txt + + + +`.htaccess` необязательно, потому что его содержимое может быть включена прямо в конфигурацию Apache. + + +Вы можете указать текущее месторасположение директорий плагинов и файлов изменив [конфигурационный файл](config.markdown). + + + +Безопасность[¶](#security "Ссылка на этот заголовок") +----------------------------------------------------- + +- Не забудьте изменить логин и пароль пользователя admin, назначенный по умолчанию + +- Не предоставляйте всем права на директорию `data` через URL. + + + +Примечание[¶](#notes "Ссылка на этот заголовок") +------------------------------------------------ + + +- Некоторые возможности Канборда требуют, чтобы [ежедневно выполнялись фоновые задачи](cronjob.markdown). + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/kanban-vs-todo-and-scrum.markdown b/doc/ru_RU/kanban-vs-todo-and-scrum.markdown new file mode 100644 index 00000000..7c1b205b --- /dev/null +++ b/doc/ru_RU/kanban-vs-todo-and-scrum.markdown @@ -0,0 +1,75 @@ +Сравнение Kanban, Todo lists и Scrum +==================================== + + +Сравнение Kanban и Todo lists[¶](#kanban-vs-todo-lists "Ссылка на этот заголовок") +---------------------------------------------------------------------------------- + + +### Todo lists (списки для исполнения):[¶](#todo-lists "Ссылка на этот заголовок") + +- Имеют одну фазу (только список пунктов) + +- Возможна многозадачность (не эффективна) + + + +### Kanban:[¶](#kanban "Ссылка на этот заголовок") + + + +- Имеет много фаз, каждая колонка представлена как шаг процесса + +- Концентрация внимания и исключение многозадачности, потому что вы можете установить этап процесса заданной колонкой + + + +Сравнение Kanban и Scrum[¶](#kanban-vs-scrum "Ссылка на этот заголовок") +------------------------------------------------------------------------ + + +### [Scrum:](https://ru.wikipedia.org/wiki/Scrum)[¶](#scrum "Ссылка на этот заголовок") + + +- Спринты жестко фиксированные временем, обычно 2 или 4 недели + +- Не позволяет вносить изменения в течении итерации + +- Обязательна предварительная оценка + +- Используется скорость как единица измерения по умолчанию + +- Доска Scrum очищается между спринтами + +- Scrum имеет преопределенные роли, такие как, мастер, владелец продукта и команда + +- Множество встреч: планирование, беклог груминг (причесывание), ежедневные совещания, ретроспектива + + + +### Kanban:[¶](#id1 "Ссылка на этот заголовок") + +- Непрерывный поток + +- Гибкость - изменения могут быть сделаны в любое время + +- Предварительная оценка опциональна + +- Используется время выполнения (lead time) и время цикла (cycle time) для измерения производительности + +- Доска Kanboar постоянна + +- Kanban не навязывает строгих ограничений или встреч, процессы более гибкие + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/keyboard-shortcuts.markdown b/doc/ru_RU/keyboard-shortcuts.markdown new file mode 100644 index 00000000..a09c92bc --- /dev/null +++ b/doc/ru_RU/keyboard-shortcuts.markdown @@ -0,0 +1,99 @@ +Горячие клавиши +=============== + + +Горячие клавиши доступны в зависимости от страницы на которой вы находитесь. + + + +В проекте (Доска, Календарь, Список, Гант)[¶](#project-views-board-calendar-list-gantt "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------ + +- Переключиться на Обзор проектов = **v o** (переключите клавиатуру в английскую раскладку и нажмите клавиши **v** и **o** ) + + + +- Переключиться на Доску = **v b** + + + +- Переключиться на Календарь = **v c** + + + +- Переключиться на список = **v l** + + + +- Переключиться на диаграмму Ганта = **v g** + + + +На Доске[¶](#board-view "Ссылка на этот заголовок") +--------------------------------------------------- + +- Новая задача = **n** + + + +- Свернуть/развернуть задачи = **s** + + + +- Компактный/широкий вид = **c** + + + +В Задаче[¶](#task-view "Ссылка на этот заголовок") +-------------------------------------------------- + +- Редактировать задачу = **e** + + + +- Новая подзадача = **s** + + + +- Новый комментарий = **c** + + + +- Новая внутренняя ссылка = **l** + + + +В приложении (главное окно Канборд)[¶](#application "Ссылка на этот заголовок") +------------------------------------------------------------------------------- + + +- Показать список горячих клавиш = **?** + + + +- Открыть переключатель проектов = **b** + + + +- Переход в окно поиска = **f** + + + +- Очистить окно поиска = **r** + + + +- Закрыть окно диалога = **ESC** + + + +- Расширенный поиск = **CTRL+ENTER** or **⌘+ENTER** + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ldap-authentication.markdown b/doc/ru_RU/ldap-authentication.markdown new file mode 100644 index 00000000..a94d8f89 --- /dev/null +++ b/doc/ru_RU/ldap-authentication.markdown @@ -0,0 +1,327 @@ +Аутентификация LDAP +=================== + + +Требования[¶](#requirements "Ссылка на этот заголовок") +------------------------------------------------------- + + + +- Включенное в PHP раширение LDAP + + + +- Сервер LDAP: + + + + - OpenLDAP + + - Microsoft Active Directory + + - Novell eDirectory + + + +Рабочий процесс[¶](#workflow "Ссылка на этот заголовок") +-------------------------------------------------------- + + + +Когда активирована аутентификация LDAP, процесс входа выглядит следующим образом: + + + +1. Выполняется попытка аутентификации пользователя в базе данных Канборда + +2. Если пользователь не найден в базе Канборда, выполняется аутентификация LDAP + +3. Если аутентификация LDAP выполнена успешно, по умолчанию, локальный пользователь (в Канборде) создается автоматически без пароля и помечается как пользователь LDAP. + + + +Полное имя и email адрес автоматически подгружаются из сервера LDAP. + + + +Типы аутентификации[¶](#authentication-types "Ссылка на этот заголовок") +------------------------------------------------------------------------ + + +| Тип | Описание | +|--------------|-------------------------------------------------------------| +| Proxy User | Использовать специального пользователя для просмотра директории LDAP | +| User | Использовать учетные данные конечного пользователя для просмотра директории LDAP | +| Anonymous | Не надо выполнять аутентификацию для доступа к каталогу LDAP | + + +**Рекомендуемый метод аутентификации - “Proxy”**. + + + +### Анонимный (Anonymous) метод[¶](#anonymous-mode "Ссылка на этот заголовок") + + + + define('LDAP_BIND_TYPE', 'anonymous'); + + define('LDAP_USERNAME', null); + + define('LDAP_PASSWORD', null); + + + +Этот метод используется по умолчанию, но некоторые сервера LDAP не поддерживают доступ анонимам, из соображений безопасности. + + + +### Proxy метод[¶](#proxy-mode "Ссылка на этот заголовок") + + + +Специальный пользователь используется для доступа к директории LDAP: + + + + define('LDAP_BIND_TYPE', 'proxy'); + + define('LDAP_USERNAME', 'my proxy user'); + + define('LDAP_PASSWORD', 'my proxy password'); + + + +### Пользовательский метод (user)[¶](#user-mode "Ссылка на этот заголовок") + + + +Этот метод используется для доступа под учетной записью конечного пользователя. + + + +Например, Microsoft Active Directory не разрешает подключение под анонимным пользователем и если вы не хотите использовать пользователя proxy, то используйте этот метод. + + + + define('LDAP_BIND_TYPE', 'user'); + + define('LDAP_USERNAME', '%s@kanboard.local'); + + define('LDAP_PASSWORD', null); + + + +В этом методе, константа `LDAP_USERNAME` использутся как шаблон для пользователя ldap, например: + + + +- `%s@kanboard.local` будет заменен `my_user@kanboard.local` + + + +- `KANBOARD\\%s` будет заменен на `KANBOARD\my_user` + + + +Фильтр пользователей LDAP[¶](#user-ldap-filter "Ссылка на этот заголовок") +-------------------------------------------------------------------------- + + +Параметр конфигурации `LDAP_USER_FILTER` используется для поиска пользователей по директории LDAP. + + + +Например: + + + +- `(&(objectClass=user)(sAMAccountName=%s))` будет заменено на `(&(objectClass=user)(sAMAccountName=указанный_пользователь))` + + +- `uid=%s` is replaced by `uid=указанный_пользователь` + + + +Другие примеры [фильтров для Active Directory](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx) + + + +Пример фильра доступа в Канборд: + + + +`(&(objectClass=user)(sAMAccountName=%s)(memberOf=CN=Kanboard Users,CN=Users,DC=kanboard,DC=local))` + + + +Этот пример разрешает подключатся к Канборду только пользователям участникам группы “Kanboard Users” + + + +Пример для Microsoft Active Directory[¶](#example-for-microsoft-active-directory "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------ + + + +Предположим, что мы имеем домен `KANBOARD` (kanboard.local) и контролер домена `myserver.kanboard.local`. + + + +Первый пример для метода прокси (proxy): + + + + <?php + + + + // Enable LDAP authentication (false by default) + + define('LDAP_AUTH', true); + + + + define('LDAP_BIND_TYPE', 'proxy'); + + define('LDAP_USERNAME', 'administrator@kanboard.local'); + + define('LDAP_PASSWORD', 'my super secret password'); + + + + // LDAP server hostname + + define('LDAP_SERVER', 'myserver.kanboard.local'); + + + + // LDAP properties + + define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local'); + + define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))'); + + + +Второй пример с пользовательским методом (user): + + + + <?php + + + + // Enable LDAP authentication (false by default) + + define('LDAP_AUTH', true); + + + + define('LDAP_BIND_TYPE', 'user'); + + define('LDAP_USERNAME', '%s@kanboard.local'); + + define('LDAP_PASSWORD', null); + + + + // LDAP server hostname + + define('LDAP_SERVER', 'myserver.kanboard.local'); + + + + // LDAP properties + + define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local'); + + define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))'); + + + +Пример для OpenLDAP[¶](#example-for-openldap "Ссылка на этот заголовок") +------------------------------------------------------------------------ + + + +Наш сервер LDAP - `myserver.example.com` и все пользователи хранятся в `ou=People,dc=example,dc=com`. + + + +Для этого примера мы использовали анонимное подключение. + + + + <?php + + + + // Enable LDAP authentication (false by default) + + define('LDAP_AUTH', true); + + + + // LDAP server hostname + + define('LDAP_SERVER', 'myserver.example.com'); + + + + // LDAP properties + + define('LDAP_USER_BASE_DN', 'ou=People,dc=example,dc=com'); + + define('LDAP_USER_FILTER', 'uid=%s'); + + + +Выключение автоматического создания учетных записей[¶](#disable-automatic-account-creation "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------------------------------------- + + + +По умолчанию, Канборд автоматически создает учетную запись пользователя, если такой пользователь не найден. + + + +Вы можете выключить это поведение, если вы предпочитаете создавать учетные записи вручную. + + + +Для этого установите значение `LDAP_ACCOUNT_CREATION` в `false`: + + + + // Automatically create user account + + define('LDAP_ACCOUNT_CREATION', false); + + + +Устранение неисправностей[¶](#troubleshooting "Ссылка на этот заголовок") +------------------------------------------------------------------------- + +Если включен SELinux, вы должны разрешить Apache доступ к вашему серверу LDAP. + + + +- Вы должны переключить SELinux в разрешающий режим (permissive mode) или совсем выключить (не рекомендуется) + +- Вы должны разрешить все сетевые подключения, например `setsebool -P httpd_can_network_connect=1` или назначить более ограничивающие правила + + + +В любом случае, ознакомтесь с официальной документацией Redhat/Centos. + + + +Если вам не удается настроить аутентификацию LDAP, то вы можете [включить режим отладки](config.markdown) и посмотреть файлы событий. + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ldap-configuration-examples.markdown b/doc/ru_RU/ldap-configuration-examples.markdown new file mode 100644 index 00000000..32b8a29d --- /dev/null +++ b/doc/ru_RU/ldap-configuration-examples.markdown @@ -0,0 +1,438 @@ +Пример конфигурации LDAP +======================== + + +Microsoft Active Directory[¶](#microsoft-active-directory "Ссылка на этот заголовок") +------------------------------------------------------------------------------------- + +- Аутентификация пользователя + + + +- Загрузка пользовательского профиля из Active Directory + + + +- Установка языка пользователя из атрибутов LDAP + + + +- Роли в Канборд сопоставляются с группами в Active Directory + + + +- Поставщики групп LDAP включены + + + +<!-- --> + + + + define('LDAP_AUTH', true); + + + + define('LDAP_SERVER', 'my-ldap-server'); + + define('LDAP_PORT', 389); + + + + define('LDAP_BIND_TYPE', 'proxy'); + + define('LDAP_USERNAME', 'administrator@kanboard.local'); + + define('LDAP_PASSWORD', 'secret'); + + + + define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local'); + + define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))'); + + + + define('LDAP_USER_ATTRIBUTE_USERNAME', 'samaccountname'); + + define('LDAP_USER_ATTRIBUTE_FULLNAME', 'displayname'); + + define('LDAP_USER_ATTRIBUTE_PHOTO', 'jpegPhoto'); + + define('LDAP_USER_ATTRIBUTE_LANGUAGE', 'preferredLanguage'); + + + + define('LDAP_GROUP_ADMIN_DN', 'CN=Kanboard Admins,CN=Users,DC=kanboard,DC=local'); + + define('LDAP_GROUP_MANAGER_DN', 'CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local'); + + + + define('LDAP_GROUP_PROVIDER', true); + + define('LDAP_GROUP_BASE_DN', 'CN=Users,DC=kanboard,DC=local'); + + define('LDAP_GROUP_FILTER', '(&(objectClass=group)(sAMAccountName=%s*))'); + + define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn'); + + + +OpenLDAP с memberOf overlay[¶](#openldap-with-memberof-overlay "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------ + +Пример LDIF пользователя: + + + dn: uid=manager,ou=Users,dc=kanboard,dc=local + + objectClass: top + + objectClass: person + + objectClass: organizationalPerson + + objectClass: inetOrgPerson + + uid: manager + + sn: Lastname + + givenName: Firstname + + cn: Kanboard Manager + + displayName: Kanboard Manager + + mail: manager@kanboard.local + + userPassword: password + + memberOf: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local + + + +Пример LDIF группы: + + + + dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local + + objectClass: top + + objectClass: groupOfNames + + cn: Kanboard Managers + + member: uid=manager,ou=Users,dc=kanboard,dc=local + + + +Конфигурация Канборд: + + +- Аутентификация пользователя + + + +- Роли в Канборд сопоставляются с группами LDAP + + + +- Поставщики групп LDAP включены + + + +<!-- --> + + + + define('LDAP_AUTH', true); + + + + define('LDAP_SERVER', 'my-ldap-server'); + + define('LDAP_PORT', 389); + + + + define('LDAP_BIND_TYPE', 'proxy'); + + define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local'); + + define('LDAP_PASSWORD', 'password'); + + + + define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local'); + + define('LDAP_USER_FILTER', 'uid=%s'); + + + + define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local'); + + + + define('LDAP_GROUP_PROVIDER', true); + + define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_FILTER', '(&(objectClass=groupOfNames)(cn=%s*))'); + + define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn'); + + + +OpenLDAP с Posix groups (memberUid)[¶](#openldap-with-posix-groups-memberuid "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------- + + +Пример LDIF пользователя: + + + + dn: uid=manager,ou=Users,dc=kanboard,dc=local + + objectClass: inetOrgPerson + + objectClass: posixAccount + + objectClass: shadowAccount + + uid: manager + + sn: Lastname + + givenName: Firstname + + cn: Kanboard Manager + + displayName: Kanboard Manager + + uidNumber: 10001 + + gidNumber: 8000 + + userPassword: password + + homeDirectory: /home/manager + + mail: manager@kanboard.local + + + +Пример LDIF группы: + + + + dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local + + objectClass: posixGroup + + cn: Kanboard Managers + + gidNumber: 5001 + + memberUid: manager + + + +Конфигурация Канборд: + + + +- Аутентификация пользователя + + + +- Роли в Канборд сопоставляются с группами LDAP + + + +- Поставщики групп LDAP включены + + + +<!-- --> + + + + define('LDAP_AUTH', true); + + + + define('LDAP_SERVER', 'my-ldap-server'); + + define('LDAP_PORT', 389); + + + + define('LDAP_BIND_TYPE', 'proxy'); + + define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local'); + + define('LDAP_PASSWORD', 'password'); + + + + define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local'); + + define('LDAP_USER_FILTER', 'uid=%s'); + + + + define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local'); + + + + // This filter is used to find the groups of our user + + define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))'); + + + + define('LDAP_GROUP_PROVIDER', true); + + define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_FILTER', '(&(objectClass=posixGroup)(cn=%s*))'); + + define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn'); + + + +OpenLDAP с groupOfNames[¶](#openldap-with-groupofnames "Ссылка на этот заголовок") +---------------------------------------------------------------------------------- + + +Пример LDIF пользователя: + + + + dn: uid=manager,ou=Users,dc=kanboard,dc=local + + objectClass: top + + objectClass: person + + objectClass: organizationalPerson + + objectClass: inetOrgPerson + + uid: manager + + sn: Lastname + + givenName: Firstname + + cn: Kanboard Manager + + displayName: Kanboard Manager + + mail: manager@kanboard.local + + userPassword: password + + + +Пример LDIF группы: + + + + dn: cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local + + objectClass: top + + objectClass: groupOfNames + + cn: Kanboard Managers + + member: uid=manager,ou=Users,dc=kanboard,dc=local + + + +Конфигурация Канборд: + + + +- Аутентификация пользователя + + + +- Роли в Канборд сопоставляются с группами LDAP + + + +- Поставщики групп LDAP включены + + + +<!-- --> + + + + define('LDAP_AUTH', true); + + + + define('LDAP_SERVER', 'my-ldap-server'); + + define('LDAP_PORT', 389); + + + + define('LDAP_BIND_TYPE', 'proxy'); + + define('LDAP_USERNAME', 'cn=admin,DC=kanboard,DC=local'); + + define('LDAP_PASSWORD', 'password'); + + + + define('LDAP_USER_BASE_DN', 'OU=Users,DC=kanboard,DC=local'); + + define('LDAP_USER_FILTER', 'uid=%s'); + + + + define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local'); + + + + // This filter is used to find the groups of our user + + define('LDAP_GROUP_USER_FILTER', '(&(objectClass=groupOfNames)(member=uid=%s,ou=Users,dc=kanboard,dc=local))'); + + + + define('LDAP_GROUP_PROVIDER', true); + + define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_FILTER', '(&(objectClass=groupOfNames)(cn=%s*))'); + + define('LDAP_GROUP_ATTRIBUTE_NAME', 'cn'); + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ldap-group-sync.markdown b/doc/ru_RU/ldap-group-sync.markdown new file mode 100644 index 00000000..87d9d1cc --- /dev/null +++ b/doc/ru_RU/ldap-group-sync.markdown @@ -0,0 +1,153 @@ +Синхронизация групп LDAP +======================== + + + +Требования[¶](#requirements "Ссылка на этот заголовок") +------------------------------------------------------- + + + +- Правильно настроенную аутентификацию LDAP + + + +- Используется сервер LDAP, который поддерживает `memberOf` или `memberUid` (PosixGroups) + + + +Автоматическое определение ролей пользователей на основании LDAP групп[¶](#define-automatically-user-roles-based-on-ldap-groups "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------------------------------------------------------------------- + + + +Используйте следующие константы в вашем конфигурационном файле: + + + +- `LDAP_GROUP_ADMIN_DN`: Уникальные имена (Distinguished Names) для администраторов приложения + + + +- `LDAP_GROUP_MANAGER_DN`: Уникальные имена (Distinguished Names) для менеджеров приложения + + + +### Пример для Active Directory:[¶](#example-for-active-directory "Ссылка на этот заголовок") + + + + define('LDAP_GROUP_ADMIN_DN', 'CN=Kanboard Admins,CN=Users,DC=kanboard,DC=local'); + + define('LDAP_GROUP_MANAGER_DN', 'CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local'); + + + +- Участники группы “Kanboard Admins” будут иметь роль “Администратор” + + + +- Участники группы “Kanboard Managers” будут иметь роль “Менеджер” + + + +- Все, кто не попадает под предыдущие определения, будут иметь роль “Пользователь” + + + +### Пример OpenLDAP с Posix Groups:[¶](#example-for-openldap-with-posix-groups "Ссылка на этот заголовок") + + + + define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_USER_FILTER', '(&(objectClass=posixGroup)(memberUid=%s))'); + + define('LDAP_GROUP_ADMIN_DN', 'cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_MANAGER_DN', 'cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local'); + + + +Вы **должны определить параметр** `LDAP_GROUP_USER_FILTER`, если ваше сервер LDAP использует `memberUid` вместо `memberOf`. Все параметры в этом примере обязательные. + + + +Автоматическая загрузка групп LDAP для Канборд проекта[¶](#automatically-load-ldap-groups-for-project-permissions "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------------------- + + + +Эта возможность позволяет вам синхронизировать автоматически группы LDAP с группами Канборд. Каждая группа может иметь разные роли в проектах. + + + +В проекте на странице *Разрешения*, можно ввести имя группы (имеется автодополнение) и Канборд будет искать группу во всех подключенных поставщиках. + + + +Если группа не найдена в локальной базе данных, то она будет автоматически синхронизированна. + + + +- `LDAP_GROUP_PROVIDER`: Включение поставщика группы LDAP + + + +- `LDAP_GROUP_BASE_DN`: Уникальное имя (Distinguished Names) для поиска группы в LDAP директории + + + +- `LDAP_GROUP_FILTER`: фильтр LDAP используемый для выполнения запроса + + + +- `LDAP_GROUP_ATTRIBUTE_NAME`: атрибут LDAP используемый для получения имени группы + + + +### Пример для Active Directory:[¶](#id1 "Ссылка на этот заголовок") + + + + define('LDAP_GROUP_PROVIDER', true); + + define('LDAP_GROUP_BASE_DN', 'CN=Groups,DC=kanboard,DC=local'); + + define('LDAP_GROUP_FILTER', '(&(objectClass=group)(sAMAccountName=%s*))'); + + + +С помощью фильтра, в примере выше, Канборд будет искать группы соответсвующие запросу. Если пользователь введет текст “Мои группы” в автозаполняемое поле, Канборд вернет все группы которые соответсвуют шаблону: `(&(objectClass=group)(sAMAccountName=Мои группы*))`. + + + +- Примечание 1: Спец символ `*` очень важен, в противном случает **будет выбрано только точное совпадение** + + + +- Примечание 2: Эта функция возможна только с аутентификацией LDAP настроенной на метод “proxy” или “anonymous” + + + +[Больше примеров фильтров LDAP для Active Directory](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx) + + + +### Пример OpenLDAP с Posix Groups:[¶](#id2 "Ссылка на этот заголовок") + + + + define('LDAP_GROUP_PROVIDER', true); + + define('LDAP_GROUP_BASE_DN', 'ou=Groups,dc=kanboard,dc=local'); + + define('LDAP_GROUP_FILTER', '(&(objectClass=posixGroup)(cn=%s*))'); + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ldap-parameters.markdown b/doc/ru_RU/ldap-parameters.markdown new file mode 100644 index 00000000..5d00913d --- /dev/null +++ b/doc/ru_RU/ldap-parameters.markdown @@ -0,0 +1,49 @@ +Параметры LDAP для конфигурации +=============================== + + + +Список доступных параметров LDAP: + + +| Параметр | Значение по умолчанию |Описание | +|---------------------------|------------------------------|-----------------------------| +| `LDAP_AUTH` | false | Включить аутентификацию LDAP | +| `LDAP_SERVER` | Нет значения | Имя сервера LDAP | +| `LDAP_PORT` | 389 | Порт сервера LDAP | +| `LDAP_SSL_VERIFY` | true | Проверка сертификата для URL `ldaps://` | +| `LDAP_START_TLS` | false | Включение LDAP start TLS | +| `LDAP_USERNAME_CASE_SENSITIVE` | false | Включение/выключение нижнего и верхнего регистра букв в Канборд для пользователей ldap для исключения дублирования пользователей (база данных чувствительна к регистру) | +| `LDAP_BIND_TYPE` | anonymous | Тип подключения: “anonymous”, “user” or “proxy” | +| `LDAP_USERNAME` | null | Имя пользователя LDAP для использования в методе proxy или шаблон имени пользователя для использования в методе user | +| `LDAP_PASSWORD` | null | Пароль LDAP при использовании метода proxy | +| `LDAP_USER_BASE_DN`| Нет значения | Уникальное имя (DN) LDAP для пользователей (Пример: “CN=Users,DC=kanboard,DC=local”) | +| `LDAP_USER_FILTER` | Нет значения | Шаблон LDAP, который используется для поиска пользователей (Пример: “(&(objectClass=user)(sAMAccountName=%s))”) | +| `LDAP_USER_ATTRIBUTE_USERNAME` | uid | Атрибут LDAP для имени пользователя (Например: “samaccountname”) | +| `LDAP_USER_ATTRIBUTE_FULLNAME` | cn | Атрибут LDAP полного имени пользователя (Например: “displayname”) | +| `LDAP_USER_ATTRIBUTE_EMAIL` | mail | Атрибут LDAP для email пользователя | +| `LDAP_USER_ATTRIBUTE_GROUPS` | memberof | Атрибут LDAP для поиска групп в профиле пользователя | +| `LDAP_USER_ATTRIBUTE_PHOTO` | Нет значения | Атрибут LDAP для поиска фотографии пользователя (jpegPhoto или thumbnailPhoto) | +| `LDAP_USER_ATTRIBUTE_LANGUAGE` | Нет значения | Атрибут LDAP для языка пользователя (preferredlanguage), применимый формат языка - “ru-RU” | +| `LDAP_USER_CREATION` | true | Включение автоматического создания пользователя из LDAP | +| `LDAP_GROUP_ADMIN_DN` | Нет значения | Уникальное имя (DN) LDAP для администраторов (Например: “CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local”) | +| `LDAP_GROUP_MANAGER_DN` | Нет значения | Уникальное имя (DN) LDAP для менеджеров (Например: “CN=Kanboard Managers,CN=Users,DC=kanboard,DC=local”) | +| `LDAP_GROUP_PROVIDER` | false | Включение поставщика групп LDAP для “Разрешения” в проектах | +| `LDAP_GROUP_BASE_DN` | Нет значения | Уникальное имя (Base DN) LDAP для групп | +| `LDAP_GROUP_FILTER` | Нет значения | Фильтр групп LDAP (Например: “(&(objectClass=group)(sAMAccountName=%s\*))”) | +| `LDAP_GROUP_USER_FILTER` | Empty | Если определено, то Канборд будет искать группы пользователей в LDAP\_GROUP\_BASE\_DN с помощью этого фильтра, это удобно только для posixGroups (Например: `(&(objectClass=posixGroup)(memberUid=%s))`| +| `LDAP_GROUP_ATTRIBUTE_NAME` | cn | атрибут LDAP для имени группы | + + +Примечание + + + +- Атрибуты LDAP должны быть в нижнем регистре + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ldap-profile-picture.markdown b/doc/ru_RU/ldap-profile-picture.markdown new file mode 100644 index 00000000..9d6bb543 --- /dev/null +++ b/doc/ru_RU/ldap-profile-picture.markdown @@ -0,0 +1,46 @@ +Фотография пользователя из профиля LDAP +======================================= + + + +Канборд может автоматически загружать фотографию пользователя из сервера LDAP. + + + +Эта функция возможна только если активирована аутентификация LDAP и указан параметр `LDAP_USER_ATTRIBUTE_PHOTO`. + + + +Настройка[¶](#configuration "Ссылка на этот заголовок") +------------------------------------------------------- + + + +В вашем `config.php`, вы должны установить атрибут LDAP, используемый для хранения изображения. + + + + define('LDAP_USER_ATTRIBUTE_PHOTO', 'jpegPhoto'); + + + +Обычно используются атрибуты `jpegPhoto` или `thumbnailPhoto`. Изображения могут хранится в формате JPEG или PNG. + + + +Для загрузки изображения в пользовательски профиль, администраторы Active Directory могут использовать программу [AD Photo Edit](http://www.cjwdev.co.uk/Software/ADPhotoEdit/Info.html). + + + +Примечание[¶](#notes "Ссылка на этот заголовок") +------------------------------------------------ + +Изображение из профиля **загружается при входе, только если изображение не было загружено ранее**. + +Для смены изображения, нужно вручную удалить ранее загруженное изображение из профиля пользователя. + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/link-labels.markdown b/doc/ru_RU/link-labels.markdown new file mode 100644 index 00000000..d091a33c --- /dev/null +++ b/doc/ru_RU/link-labels.markdown @@ -0,0 +1,23 @@ +Настройки ссылки +================ + + +Связи в задачах могут быть изменены в настройках приложения (**Настройки** -\> **Настройки ссылки**) + +![Link Labels](https://kanboard.net/screenshots/documentation/link-labels.png) + +Рисунок. Метки для ссылок. + + +Каждая метка может иметь противоположное опеределение. Если нет противоположного значения, метка считается двунаправленная. + +![Link Label Creation](https://kanboard.net/screenshots/documentation/link-label-creation.png) + +Рисунок. Создание ссылки. + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/mysql-configuration.markdown b/doc/ru_RU/mysql-configuration.markdown new file mode 100644 index 00000000..82c02b37 --- /dev/null +++ b/doc/ru_RU/mysql-configuration.markdown @@ -0,0 +1,128 @@ +Настройка Mysql/MariaDB +======================= + + + +По умолчанию Канборд использует для хранения данных Sqlite. Вместо Sqlite возможно использовать Mysql или MariaDB. + + + +Требования[¶](#requirements "Ссылка на этот заголовок") +------------------------------------------------------- + + + +- Сервер Mysql + + + +- Установленное расширение PHP - `pdo_mysql` + + + +Примечание: работа Канборда протестирована с **Mysql \>= 5.5 и MariaDB \>= 10.0** + + + +Настройка Mysql[¶](#mysql-configuration "Ссылка на этот заголовок") +------------------------------------------------------------------- + + + +### Создание базы данных[¶](#create-a-database "Ссылка на этот заголовок") + + + +Первым шагом надо создать базу данных на вашем сервере Mysql. Например, вы можете создать базу в командной строке клиента mysql: + + + + CREATE DATABASE kanboard; + + + +### Создание файла конфигурации[¶](#create-a-config-file "Ссылка на этот заголовок") + + + +Файл `config.php` должен содержать следующие значения: + + + + <?php + + + + // We choose to use Mysql instead of Sqlite + + define('DB_DRIVER', 'mysql'); + + + + // Mysql parameters + + define('DB_USERNAME', 'REPLACE_ME'); + + define('DB_PASSWORD', 'REPLACE_ME'); + + define('DB_HOSTNAME', 'REPLACE_ME'); + + define('DB_NAME', 'kanboard'); + + + +Примечание: Вы можете переименовать демонстрационный файл `config.default.php` в `config.php`. + + + +### Импорт SQL дампа (альтернативный метод)[¶](#importing-sql-dump-alternative-method "Ссылка на этот заголовок") + + + +В первый раз, Канборд запускает по очереди каждую миграцию базы данных и этот процес может занять некоторое время, в зависимости от вашей конфигурации. + + + +Чтобы избежать задержек, вы можете инициализировать базу данных напрямую, имопртируя SQL схему: + + + + mysql -u root -p my_database < app/Schema/Sql/mysql.sql + + + +Файл [\`\`](#id1)app/Schema/Sql/mysql.sql\`\`это SQL дамп, который представляет последнюю версию базы данных. + + + +Конфигурация SSL[¶](#ssl-configuration "Ссылка на этот заголовок") +------------------------------------------------------------------ + + + +Эти параметры должны быть указаны для включения соединения Mysql SSL: + + + + // Mysql SSL key + + define('DB_SSL_KEY', '/path/to/client-key.pem'); + + + + // Mysql SSL certificate + + define('DB_SSL_CERT', '/path/to/client-cert.pem'); + + + + // Mysql SSL CA + + define('DB_SSL_CA', '/path/to/ca-cert.pem'); + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/nice-urls.markdown b/doc/ru_RU/nice-urls.markdown new file mode 100644 index 00000000..ca516f78 --- /dev/null +++ b/doc/ru_RU/nice-urls.markdown @@ -0,0 +1,233 @@ +Переопределение URL +=================== + + + +Канборд может работать и с переопределенными URL и с простыми. + + + +- Пример переопределенного URL: `/board/123` + + + +- По другому: `?controller=board&action=show&project_id=123` + + + +Если вы используете Канборд с Apache и включенным mode rewrite, красивые URL будут использоваться автоматически. В случае, если вы получаете ошибку “404 Not Found”, то возможно надо внести изменения в DocumentRoot: + + + + <Directory /var/www/kanboard/> + + AllowOverride FileInfo Options=All,MultiViews AuthConfig + + </Directory> + + + +URL ярлыки[¶](#url-shortcuts "Ссылка на этот заголовок") +-------------------------------------------------------- + + + +- Перейти к задаче \#123: **/t/123** + + + +- Перейти на доску в проект \#2: **/b/2** + + + +- Перейти в календарь проекта \#5: **/c/5** + + + +- Перейти к просмотру списком проекта \#8: **/l/8** + + + +- Перейти к настройкам проекта для проекта id \#42: **/p/42** + + + +Настройка[¶](#configuration "Ссылка на этот заголовок") +------------------------------------------------------- + + + +По умолчанию, Канборд проверяет включен ли в Apache mode rewrite. + + + +Для исключения автоматической проверки переопределения URL на веб сервере, вы должны включить эту опцию в вашем конфигурационном фале: + + + + define('ENABLE_URL_REWRITE', true); + + + +Когда константа имеет значение `true`: + + + +- Сгенерированные из утилиты командной строки URL будут также преобразованы + + + +- Если вы используете другой веб сервер вместо Apache, например Nginx или Microsoft IIS, вы можете сами настроить переопределение URL + + + +Примечание: Канборд всегда использует URL по “старинке”, если данная константа не настроена. Эта настройка опциональна. + + + +Пример настройки Nginx[¶](#nginx-configuration-example "Ссылка на этот заголовок") +---------------------------------------------------------------------------------- + + + +В разделе `server`, вашего конфигурационного файла Nginx, вы можете использовать этот пример: + + + + index index.php; + + + + location / { + + try_files $uri $uri/ /index.php$is_args$args; + + + + # If Kanboard is under a subfolder + + # try_files $uri $uri/ /kanboard/index.php; + + } + + + + location ~ \.php$ { + + try_files $uri =404; + + fastcgi_split_path_info ^(.+\.php)(/.+)$; + + fastcgi_pass unix:/var/run/php5-fpm.sock; + + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + + fastcgi_index index.php; + + include fastcgi_params; + + } + + + + # Deny access to the directory data + + location ~* /data { + + deny all; + + return 404; + + } + + + + # Deny access to .htaccess + + location ~ /\.ht { + + deny all; + + return 404; + + } + + + +В конфигурационном файле Канборда `config.php`: + + + + define('ENABLE_URL_REWRITE', true); + + + +Адаптируйте пример приведенный выше к вашей конфигурации. + + + +Пример настройки IIS[¶](#iis-configuration-example "Ссылка на этот заголовок") +------------------------------------------------------------------------------ + + + +Создайте web.config в каталоге где установлен Канборд: + + + + <?xml version="1.0" encoding="UTF-8"?> + + <configuration> + + <system.webServer> + + <rewrite> + + <rules> + + <rule name="Imported Rule 1" stopProcessing="true"> + + <match url="^" ignoreCase="false" /> + + <conditions logicalGrouping="MatchAll"> + + <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> + + </conditions> + + <action type="Rewrite" url="index.php" appendQueryString="true" /> + + </rule> + + </rules> + + </rewrite> + + </system.webServer> + + </configuration> + + + +В конфигурационном файле Канборда `config.php`: + + + + define('ENABLE_URL_REWRITE', true); + + + +Адаптируйте пример приведенный выше к вашей конфигурации. + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/nitrous.markdown b/doc/ru_RU/nitrous.markdown new file mode 100644 index 00000000..8b975b0d --- /dev/null +++ b/doc/ru_RU/nitrous.markdown @@ -0,0 +1,16 @@ +Nitrous быстрый старт +===================== + + +Создайте свободное окружение разработки для проекта Kanboard в облаке на [Nitrous.io](https://www.nitrous.io). + +Зайдите на ваш сайт через ссылку в IDE `Preview > 3000`{.docutils .literal}. + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/notifications.markdown b/doc/ru_RU/notifications.markdown new file mode 100644 index 00000000..8fc37876 --- /dev/null +++ b/doc/ru_RU/notifications.markdown @@ -0,0 +1,111 @@ +Уведомления +=========== + + + +Канборд имеет возможность отправлять сообщения по нескольким каналам: + + + +- Email + +- Веб (уведомления в Канборд) + + + +Внешние плагины позволяют вам посылать уведомления в Slack, Hipchat, Jabber или другие чат системы. + + + +Настройка[¶](#configuration "Ссылка на этот заголовок") +------------------------------------------------------- + + + +Любой пользователь может включить уведоления в своем профиле: в правом верхнем углу выберите во всплывающем меню **Мой профиль** -\> **Уведомления**. Уведомления по умолчанию выключены. + + + +Для получения уведомлений по email вам надо иметь электронную почту (email), которая должна быть указана в вашем профиле, и Канборд должен быть настроен на отправку электронной почты. + + + +![Notifications](https://kanboard.net/screenshots/documentation/notifications.png) + +Рисунок. Уведомления + + + +Вы можете выбрать, удобный для вас, способ получения уведомлений: + + + +- Email + + + +- Веб (смотрите ниже) + + + +Для каждого проекта в котором вы являетесь участником, вы можете выбрать получение уведомления для: + + + +- Всех задач + + + +- Только для задач назначеных вам + + + +- Только для задач, которые создали вы + + + +- Только для задач, созданных вами и назначенных вам + + + +Также, вы можете выбрать проекты из которых хотите получать уведомления. По умолчанию - все проекты, в которых вы являетесь участником. + + + +Веб уведомления[¶](#web-notifications "Ссылка на этот заголовок") +----------------------------------------------------------------- + + + +Веб уведомления доступны на рабочей панели **Мои уведомления** или вверху в виде иконки: + + + +![Web Notifications Icon](https://kanboard.net/screenshots/documentation/web-notifications-icon.png) + +Рисунок. Иконка веб уведомления. + + + +Уведомления отображаются списком. Вы можете выбрать действие **Пометить как прочитанное** для каждого сообщения или отметить сразу все. + + + +![Web Notifications](https://kanboard.net/screenshots/documentation/web-notifications.png) + +Рисунок. Веб уведомления. + + + +Таким образом, вы можете получать веб уведомления без использования электронной почты. + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/plugin-directory.markdown b/doc/ru_RU/plugin-directory.markdown new file mode 100644 index 00000000..1920c91d --- /dev/null +++ b/doc/ru_RU/plugin-directory.markdown @@ -0,0 +1,38 @@ +Настройка директории плагинов +============================= + + + +Для установки, обновления и удаления плагинов в интерфейсе пользователя, вам необходимо выполнить следующие пункты: + + + +- Директория плагинов должна быть доступна на запись от пользователя веб сервера + + + +- Расширение zip должно быть доступно на вашем сервере + + + +- Параметр в конфигурации `PLUGIN_INSTALLER` должен быть установлен в `true` + + + +Для отключения этой возможности, измените значение в конфигурационном файле `PLUGIN_INSTALLER` на `false`. Также, вы должны изменить права доступа на директорию плагинов. + + + +Только администраторы могут устанавливать плагины через пользовательский интерфейс. + + + +По умолчанию, доступны только плагины из списка на веб сайте Канборда. + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/plugins.markdown b/doc/ru_RU/plugins.markdown new file mode 100644 index 00000000..e5ec2719 --- /dev/null +++ b/doc/ru_RU/plugins.markdown @@ -0,0 +1,167 @@ +Разработка плагина +================== + + + +**Внимание: API плагинов на данный момент в состоянии альфа.** + + + +Плагины удобны для расширения базового функционала Канборда: добавление возможностей, создание тем или изменения базового поведения. + + + +Создатели плагина должны указать точную версию Канборда, под которую написан плагин. Внутренний код Канборда может изменяться и ваш плагин должен тестироваться на совместимость с новой версией. Всегда следите за [ChangeLog](https://github.com/fguillot/kanboard/blob/master/ChangeLog) для внесения изменений. + + + +- [Создание вашего плагина](plugin-registration.markdown) + + + +- [Использование plugin hooks](plugin-hooks.markdown) + + + +- [События](plugin-events.markdown) + + + +- [Изменение базового поведения приложений](plugin-overrides.markdown) + + + +- [Добавление миграции схемы для плагинов](plugin-schema-migrations.markdown) + + + +- [Пользовательские маршруты](plugin-routes.markdown) + + + +- [Добавление обработчиков](plugin-helpers.markdown) + + + +- [Добавление почтовых трансляторов](plugin-mail-transports.markdown) + + + +- [Добавление типов оповещений](plugin-notifications.markdown) + + + +- [Добавление автоматических действий](plugin-automatic-actions.markdown) + + + +- [Расширение данных пользователей, задач и проектов](plugin-metadata.markdown) + + + +- [Архитектура аутентификации](plugin-authentication-architecture.markdown) + + + +- [Регистрация плагина аутентификации](plugin-authentication.markdown) + + + +- [Архитектура авторизации](plugin-authorization-architecture.markdown) + + + +- [Провайдер пользовательской группы](plugin-group-provider.markdown) + + + +- [Провайдер внешней ссылки](plugin-external-link.markdown) + + + +- [Добавление провайдера аватара](plugin-avatar-provider.markdown) + + + +- [Клиент LDAP](plugin-ldap-client.markdown) + + + +Примеры плагинов[¶](#examples-of-plugins "Ссылка на этот заголовок") +-------------------------------------------------------------------- + + + +- [Двухуровневая аутентификация SMS](https://github.com/kanboard/plugin-sms-2fa) + + + +- [Аутентификация Reverse-Proxy с поддержкой LDAP](https://github.com/kanboard/plugin-reverse-proxy-ldap) + + + +- [Slack](https://github.com/kanboard/plugin-slack) + + + +- [Hipchat](https://github.com/kanboard/plugin-hipchat) + + + +- [Jabber](https://github.com/kanboard/plugin-jabber) + + + +- [Sendgrid](https://github.com/kanboard/plugin-sendgrid) + + + +- [Mailgun](https://github.com/kanboard/plugin-mailgun) + + + +- [Postmark](https://github.com/kanboard/plugin-postmark) + + + +- [Amazon S3](https://github.com/kanboard/plugin-s3) + + + +- [Планирование бюджета](https://github.com/kanboard/plugin-budget) + + + +- [Расписание пользователя](https://github.com/kanboard/plugin-timetable) + + + +- [Прогнозирование подзадач](https://github.com/kanboard/plugin-subtask-forecast) + + + +- [Пример автоматических действий](https://github.com/kanboard/plugin-example-automatic-action) + + + +- [Пример плагина темы](https://github.com/kanboard/plugin-example-theme) + + + +- [Пример плагина CSS](https://github.com/kanboard/plugin-example-css) + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/postgresql-configuration.markdown b/doc/ru_RU/postgresql-configuration.markdown new file mode 100644 index 00000000..9407ce59 --- /dev/null +++ b/doc/ru_RU/postgresql-configuration.markdown @@ -0,0 +1,92 @@ +Настройка Postgresql +==================== + + + +По умолчанию, Канборд использует для хранения данных Sqlite, но возможно использовать и Postgresql. + + + +Требования[¶](#requirements "Ссылка на этот заголовок") +------------------------------------------------------- + + + +- Установленный и настроенный сервер Postgresql + + + +- Установленное PHP расширение - `pdo_pgsql` (Debian/Ubuntu: `apt-get install php5-pgsql`) + + + +Примечание: работа Канборда протестирована с **Postgresql 9.3 и 9.4** + + + +Настройка[¶](#configuration "Ссылка на этот заголовок") +------------------------------------------------------- + + + +### Создайте пустую базу данных выполнив команду `pgsql`:[¶](#create-an-empty-database-with-the-command-pgsql "Ссылка на этот заголовок") + + + + CREATE DATABASE kanboard; + + + +### Создание конфигурационного файла[¶](#create-a-config-file "Ссылка на этот заголовок") + + + +Файл `config.php` должен содержать следующие значения: + +```php +<?php + +// We choose to use Postgresql instead of Sqlite +define('DB_DRIVER', 'postgres'); + +// Mysql parameters +define('DB_USERNAME', 'REPLACE_ME'); +define('DB_PASSWORD', 'REPLACE_ME'); +define('DB_HOSTNAME', 'REPLACE_ME'); +define('DB_NAME', 'kanboard'); +``` + + + +Примечание: Вы можете переименовать демонстрационный файл `config.default.php` в `config.php`. + + + +### Импортирование дампа SQL (альтернативный метод)[¶](#importing-sql-dump-alternative-method "Ссылка на этот заголовок") + + + +В первый раз, Канборд запускает по очереди каждую миграцию базы данных и этот процес может занять некоторое время, в зависимости от вашей конфигурации. + + + +Для избежания проблем или задержек вы можете инициализировать базу данных напрямую посредством импорта схемы SQL: + +```bash +psql -U postgres my_database < app/Schema/Sql/postgres.sql +``` + +Файл `app/Schema/Sql/postgres.sql` - это sql дамп, который представляет последнюю версию базы данных. + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/project-configuration.markdown b/doc/ru_RU/project-configuration.markdown new file mode 100644 index 00000000..af4863d7 --- /dev/null +++ b/doc/ru_RU/project-configuration.markdown @@ -0,0 +1,105 @@ +Настройки проекта +================= + + + +В правом верхнем выпадающем меню выберите **Настройки**, затем выберите **Настройки проекта** слева. + + + +![Project settings](https://kanboard.net/screenshots/documentation/project-settings.png) + +Рисунок. Настройки проекта. + + + +Колонки по умолчанию для новых проектов[¶](#default-columns-for-new-projects "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------- + + + +Вы можете изменить колонки по умолчанию. Это удобно, когда вы создаете однотипные проекты с одними и теми же колонками. + + + +Название колонок должны быть разделены запятой. + + + +По умолчанию, в Канборде используются следующие колонки: Ожидающие, Готовые, В процессе, Выполнено + + + +Стандартные категории для новых проектов[¶](#default-categories-for-new-projects "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------ + + + +Категории не являются общими для приложения, но могут использоваться в проектах. Каждый проект может иметь разные категории. + + + +Однако, если вы постоянно создаете одни и теже категории для разных проектов, то вы можете задать список категорий, которые будут автоматически создаваться при создании проекта. + + + +Разрешена только одна подзадача в разработке одновременно для одного пользователя[¶](#allow-only-one-subtask-in-progress-at-the-same-time-for-a-user "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + + + +Когда эта опция включена, пользователь может работать только с одной подзадачей одновременно. + + + +Если другая подзадача перейдет статус “В процессе”, то пользователь увидит следующее диалоговое окно: + + + +![Subtask user restriction](https://kanboard.net/screenshots/documentation/subtask-user-restriction.png) + +Рисунок. Ограничение пользовательских подзадач. + + + +Триггер автоматического отслеживания времени подзадач[¶](#trigger-automatically-subtask-time-tracking "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------- + + + +- Если этот триггер включен когда статус подзадачи меняется на “В процессе”, то таймер автоматически запускается. + + + +- Выключите эту опцию, если вы не хотите отслеживать время. + + + +Включить в диаграмму закрытые задачи[¶](#include-closed-tasks-in-the-cumulative-flow-diagram "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------------ + + + +- Если эта опция включена, закрытые задачи будут добавлены в накопительную диаграмму. + + + +- Если выключена, то только открытые задачи будут подсчитаны. + + + +- Эта опция влияет на колонку “total” (всего) в таблице “project\_daily\_column\_stats” (проект\_ежедневно\_колонка\_статистика) + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/project-permissions.markdown b/doc/ru_RU/project-permissions.markdown new file mode 100644 index 00000000..580162fb --- /dev/null +++ b/doc/ru_RU/project-permissions.markdown @@ -0,0 +1,55 @@ +Права доступа к проекту +======================= + + + +Все проекты изолированы и отделены друг от друга. Доступ к проекту может назначать владелец проекта. + + + +Каждый пользователь и каждая группа могут иметь разные назначенные роли. Имеются [три типа ролей для проектов](roles.markdown): + + + +- Менеджер проекта + + + +- Участник проекта + + + +- Наблюдатель проекта + + + +Только администратор может иметь полный доступ ко всему. + + + +Назначение ролей доступно через **Меню -\> Настройки -\> Разрешения** + + + +![Project Permissions](screenshots/project-permissions.png) + +Рисунок. Права доступа к проекту + + + +Если вы выберите **Разрешить любому**, то все пользователи Канборд будут считаться участниками Проекта. В таком случае, нет необходимости назначать роли. Потому что, разрешения, назначенные пользователям и группам, на доступ к Проекту не будут работать. + + + +Приватный проект не позволяет устанавливать разрешения. + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/project-types.markdown b/doc/ru_RU/project-types.markdown new file mode 100644 index 00000000..d1169241 --- /dev/null +++ b/doc/ru_RU/project-types.markdown @@ -0,0 +1,27 @@ +Типы проектов +============= + + + +Проекты могут быть двух типов: + + + +| Тип | Описание | +|-----------------|----------------------------------------------------------| +| Командный проект| В проекте могут принимать участие пользователи и группы | +| Приватный проект| Проект принадлежит только одному пользователю, к проекту нельзя присоединить участников| + + + +- Командный проект могут создавать только пользователи с ролью Администратор и Менеджер. +- Приватный проект могут создавать все пользователи. + + +[Читать документацию про роли в Kanboard](roles.markdown) + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/project-views.markdown b/doc/ru_RU/project-views.markdown new file mode 100644 index 00000000..1d1f1117 --- /dev/null +++ b/doc/ru_RU/project-views.markdown @@ -0,0 +1,154 @@ +Представления Доска, Календарь, Список и Гант +============================================= + + + +В каждом проекте задачи могут быть отображены в разных представлениях: **Доска, Календарь, Список и Гант**. Для отображения представлений используется фильтр в верхней части рабочей панели. Для поиска используется [расширенный синтаксис](ext-search.markdown). + + + +Представление - Доска[¶](#board-view "Ссылка на этот заголовок") +---------------------------------------------------------------- + + + +![Board view](screenshots/board-view.png) + +Рисунок. Представление зачад в виде доски + + + +- В этом представлении вы можете мышкой перемещать задачи между колонками. + + + +- Также, для перемещения задач на доске, можно использовать горячие клавиши **“v b”**. + + + +- Затемнения вокруг задачи показывает активную или измененную задачу. + + + +![Board Task Limit](screenshots/board-task-limit.png) + +Рисунок. Лимит задач на Доске + + + +Когда лимит задач для колонки достигнут, тогда фон колонки становится красный. Это означает, что слишком много задач выполняются одновременно. + + + +[Ознакомится с настройками Доски](board-configuration.markdown) + + + +Представление - Календарь[¶](#calendar-view "Ссылка на этот заголовок") +----------------------------------------------------------------------- + + + +![Calendar view](screenshots/calendar-view.png) + +Рисунок. Представление в виде календаря + + + +- В этом представлении вы можете видеть задачи на конкретные даты. + + + +- Вы можете сделать настройки, которые позволят вам видеть задачи в работе. + + + +- Вы можете использовать горячие клавиши **“v c”** для перехода на представление Календарь. + + + +- [Ознакомится с настройками Календаря](calendar-configuration.markdown) + + + +Представление - Список[¶](#list-view "Ссылка на этот заголовок") +---------------------------------------------------------------- + + + +![List view](https://kanboard.net/screenshots/documentation/list-view.png) + +Рисунок. Представление списком. + + + +- С помощью этого представления все результаты отображаются в виде таблицы. + + + +- Для быстрого перехода на представление Список вы можете использовать горячие клавиши **“v l”**. + + + +Представление - Гант.[¶](#gantt-view "Ссылка на этот заголовок") +---------------------------------------------------------------- + + + +![Gantt view](screenshots/gantt-view.png) + +Рисунок. Представление диаграммой Ганта. + + + +- Представление Гант отображает задачи горизонтальными графиками + + + +- Для построения графика используется дата начала и срок выполнения + + + +- Для быстрого перехода к представлению Гант используйте горячие клавиши : **“v g”** + + + +Обзор Проекта[¶](#project-overview "Ссылка на этот заголовок") +-------------------------------------------------------------- + + + +![Project overview](screenshots/project-view.png) + +Рисунок. Представления проекта + + + +- Отображает описание проекта + + + +- Показывает прикрепленные и загруженные документы проекта + + + +- Показывает список участников проекта + + + +- Показывает последнюю активность в проекте + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/recurring-tasks.markdown b/doc/ru_RU/recurring-tasks.markdown new file mode 100644 index 00000000..a6572f2c --- /dev/null +++ b/doc/ru_RU/recurring-tasks.markdown @@ -0,0 +1,67 @@ +Повторяющиеся задачи +==================== + + + +Для соответсвия методологии Канбан, повторяющиеся задачи не имеют в качестве основы дату, а запускаются при наступлении событий на Доске. + + + +- Повторяющиеся задачи копируются (появляются вновь) в первой колонке Доски когда наступает определенное событие + + + +- Дата завершения (срок выполнения задачи) пересчитывается автоматически + + + +- Each task records the task id of the parent task that created it and the child task created + + + +Настройка[¶](#configuration "Ссылка на этот заголовок") +------------------------------------------------------- + + + +Перейдите на страницу детального представления задачи или используйте выпадающее меню на доске, выберите **Редактировать повторы**. + + + +![Recurring task](https://kanboard.net/screenshots/documentation/recurring-tasks.png) + +Рисунок. Редактировать повторы. + + + +В редактировании повторов имеется выбор 3 триггеров для генерации периодической задачи: + + + +- Когда задача перемещается из первой колонки + + + +- Когда задача перемещается в последнюю колонку + + + +- Когда задача закрывается + + + +Дата завершения, если установлена для текущей задачи, может быть пересчитана с учетом **Коэффициента для расчета новой даты** и **Период для рассчета новой даты завершения** (например, 7 дней, 6 месяцев, 1 год). Базовой датой вычисления новой даты завершения может быть и имеющаяся дата завершения, или дата действия. + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/requirements.markdown b/doc/ru_RU/requirements.markdown new file mode 100644 index 00000000..aa6933b9 --- /dev/null +++ b/doc/ru_RU/requirements.markdown @@ -0,0 +1,137 @@ +Системные требования +==================== + + + +На сервере[¶](#server-side "Ссылка на этот заголовок") +------------------------------------------------------ + + + +### Поддерживаемые операционные системы[¶](#compatible-operating-systems "Ссылка на этот заголовок") + +|Операционная система| +|-----------------------------------| +|Linux Ubuntu Xenial Xerus 16.04 LTS| +| Linux Ubuntu Trusty 14.04 LTS| +| Linux Centos 6.x| +| Linux Centos 7.x| +| Linux Redhat 6.x| +|Linux Redhat 7.x| +| Linux Debian 8| +| FreeBSD 10.x| +| Microsoft Windows 2012 R2| +| Microsoft Windows 2008| + + + +### Поддерживаемые базы данных[¶](#compatible-databases "Ссылка на этот заголовок") + + +|База данных | +|----------------------| +|Sqlite 3.x | +|Mysql \>= 5.5 | +|MariaDB \>= 10 | +| Postgresql \>= 9.3 | + + + +Какую базу данных выбрать? + + +| Тип | Когда использовать | +|--------------------|--------------------------------------------------------| +| Sqlite | Один пользователь или небольшая команда | +| Mysql/Postgres | Большая команда, конфигурация высокой доступности | + + + + +Не используйте Sqlite на смонтированном NFS. Используйте Sqlite только на дисках с высокой скоростью чтение/запись. + + + +### Совместимые веб сервера[¶](#compatible-web-servers "Ссылка на этот заголовок") + +Apache HTTP Server, Nginx , Microsoft IIS + +Канборд изначально сконфигурирован для работы с Apache (URL rewriting). + + + +### Версии PHP[¶](#php-versions "Ссылка на этот заголовок") + + +PHP \>= 5.3.3, PHP 5.4, PHP 5.5, PHP 5.6, PHP 7.x + + + +### Требуемые расширения для PHP[¶](#php-extensions-required "Ссылка на этот заголовок") + + +| Требуемые расширения для PHP | Примечание | +|----------------------------------|-----------------------------------------| +| pdo\_sqlite | Только при использовании Sqlite | +| pdo\_mysql | Только при использоании Mysql/MariaDB | +| pdo\_pgsql | Только при использовании Postgres | +| gd | | +| mbstring | | +| openssl | | +| json | | +| hash | | +| ctype | | +| session | | +| ldap | Только для аутентификации LDAP | +| Zend OPcache | Рекомендуется | + + +### Рекомендуется[¶](#recommendations "Ссылка на этот заголовок") + + + +- Современная Linux или Unix операционная система. + + + +- Высокая производительность достигается с последней версией PHP со включенным кешированием OPcode. + + + +На клиенте[¶](#client-side "Ссылка на этот заголовок") +------------------------------------------------------ + + + +### Браузеры[¶](#browsers "Ссылка на этот заголовок") + + + +Используйте современные браузеры, обновленные до последней версии: + +|Браузер | +|-----------------| +| Safari | +| Google Chrome | +| Mozilla Firefox | +| Microsoft Internet Explorer \>= 11| +| Microsoft Edge | + + + +### Устройства[¶](#devices "Ссылка на этот заголовок") + + +| Устройство | Разрешение экрана | +|--------------------------------------|--------------------------------------| +| Персональный компьютер или ноутбук | \>= 1366 x 768 | +| Планшет | \>= 1024 x 768 | + + +Канборд, пока, не оптимизирован для работы на смартфонах. Конечно, он работает, но пользовательский интерфейс не совсем удобный для использования. + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/reverse-proxy-authentication.markdown b/doc/ru_RU/reverse-proxy-authentication.markdown new file mode 100644 index 00000000..2d97a6e4 --- /dev/null +++ b/doc/ru_RU/reverse-proxy-authentication.markdown @@ -0,0 +1,138 @@ +Аутентификация Reverse Proxy +============================ + + + +Этот метод аутентификации часто используется для [SSO](https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B0) (Технология единого входа), особенно удобно в больших организациях. + + + +Аутентификация выполняется с помощью другой системы, поэтому Канборд не знает вашего пароля и допускает вас к приложению, так как вы уже прошли аутентификацию. + + + +Требования[¶](#requirements "Ссылка на этот заголовок") +------------------------------------------------------- + + + +- Правильно сконфигурированный reverse proxy + + + +или + + + +- Apache Auth на том же сервере + + + +Как это работает?[¶](#how-does-this-work "Ссылка на этот заголовок") +-------------------------------------------------------------------- + + + +1. Ваш reverse proxy аутентифицирует пользователя и посылает имя пользователя через заголовок HTTP. + + + +2. Канборд извлекает имя пользователя из запроса + + + + - Пользователь создается в Канборд автоматически (опция настраивается) + + + + - Открывается новая сессия Канборд (дополнительная аутентификация в Канборд не нужна) + + + +Инструкция по установке[¶](#installation-instructions "Ссылка на этот заголовок") +--------------------------------------------------------------------------------- + + + +### Настройка вашего reverse proxy[¶](#setting-up-your-reverse-proxy "Ссылка на этот заголовок") + + + +В рамках данной документации не рассматривается установка и настройка reverse proxy. Вы должны убедится, что логин пользователя отправляется с reverse proxy в заголовке HTTP. + + + +### Настройки Канборда[¶](#setting-up-kanboard "Ссылка на этот заголовок") + + + +Создайте свой файл конфигурации `config.php` или скопируйте конфигурацию из файла `config.default.php`: + + + + <?php + + + + // Enable/disable reverse proxy authentication + + define('REVERSE_PROXY_AUTH', true); // Set this value to true + + + + // The HTTP header to retrieve. If not specified, REMOTE_USER is the default + + define('REVERSE_PROXY_USER_HEADER', 'REMOTE_USER'); + + + + // The default Kanboard admin for your organization. + + // Since everything should be filtered by the reverse proxy, + + // you should want to have a bootstrap admin user. + + define('REVERSE_PROXY_DEFAULT_ADMIN', 'myadmin'); + + + + // The default domain to assume for the email address. + + // In case the username is not an email address, it + + // will be updated automatically as USER@mydomain.com + + define('REVERSE_PROXY_DEFAULT_DOMAIN', 'mydomain.com'); + + + +Примечание: + + + +- Если proxy находится на том же сервере, что и Канборд, то в соответствии с протоколом \<[http://www.ietf.org/rfc/rfc3875](http://www.ietf.org/rfc/rfc3875)\>\`\_\_ имя заголовка будет `REMOTE_USER`. Например, Apache добавляет `REMOTE_USER` по умолчанию, если установлено `Require valid-user`. + + + +- Если Apache служит reverse proxy для другого Apache выполняющего Канборд, то заголовок `REMOTE_USER` не установлен (это же относится к IIS и Nginx). + + + +- Если у вас имеется действующий reverse proxy, то [проект HTTP ICAP](http://tools.ietf.org/html/draft-stecher-icap-subid-00#section-3.4) предполагает, что заголовок должен быть `X-Authenticated-User`. Этот стандарт де-факто был принят разными инструментами. + + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/roles.markdown b/doc/ru_RU/roles.markdown new file mode 100644 index 00000000..5af8a937 --- /dev/null +++ b/doc/ru_RU/roles.markdown @@ -0,0 +1,44 @@ +Пользовательские роли +===================== + + + +Роли в приложениях[¶](#application-roles "Ссылка на этот заголовок") + +-------------------------------------------------------------------- + + + +Каждый пользователь системы Канборд имеет одну из этих ролей + + + +| Роль | Описание | +|----------------|-----------------------------------------------------------| +| Администратор | Имеет доступ ко всему | +| Менеджер | Может создавать командные проекты, но не может изменять настройки приложения | +| Пользователь | Может создавать только приватные проекты | + + + + +Роли в проектах[¶](#project-roles "Ссылка на этот заголовок") + +------------------------------------------------------------- + + + +В каждом командном проекте могут быть назначены разные роли для пользователей и групп: + + +| Роль | Описание | +|-----------------|----------------------------------------------------------| +| Менеджер проекта| Может изменять настройки проекта, имеет доступ к диаграмме Ганта и отчетам | +| Участник проекта| Может создавать задачи и пользоваться доской | +| Наблюдатель проекта | Имеет доступ к доске и задачам только на просмотр (чтение) | + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/rss.markdown b/doc/ru_RU/rss.markdown new file mode 100644 index 00000000..c4718880 --- /dev/null +++ b/doc/ru_RU/rss.markdown @@ -0,0 +1,58 @@ +RSS/Atom подписки +================= + + + +Канборд поддерживает RSS ленты для проектов и пользователей. + + + +- RSS/Atom лента для проекта - содержит только активность в проекте + + + +- RSS/Atom лента пользователя - содержит поток активности пользователя во всех проектах, в которых пользователь является участником + + + +Эти подписки доступны только при включенном общем доступе в пользовательском профиле или в настройках проекта. + + + +Включение/выключение RSS ленты проекта[¶](#enable-disable-project-rss-feeds "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------- + + + +Перейдите в **Настройки проекта** -\> **Общий доступ** + + + +![Disable public access](https://kanboard.net/screenshots/documentation/project-disable-sharing.png) + +Рисунок. Выключение общего доступа. + + + +Включение/выключение RSS ленты пользователя[¶](#enable-disable-user-rss-feeds "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------- + + + +Перейдите в **Мой профиль** -\> **Общий доступ** + + + +Ссылка на RSS ленту защищена случайным ключом, только пользователи, которые знают URL ссылку, могут иметь доступ к ленте. + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/screenshots.markdown b/doc/ru_RU/screenshots.markdown new file mode 100644 index 00000000..2260f258 --- /dev/null +++ b/doc/ru_RU/screenshots.markdown @@ -0,0 +1,74 @@ +Добавление снимков экрана (скриншота) +===================================== + + + +Для экономии времени вы можете копировать и вставлять изображения прямо в Канборде. Загруженные изображения прикрепляются к задаче. + + + +Например, очень удобно для решения проблемы прикрепить снимок экрана. + + + +Вы можете добавить снимок экрана прямо из Доски нажав на выпадающее меню задачи и выбрав **Прикрепить картинку** или на странице детального просмотра задачи. + + + +![Drop-down screenshot menu](https://kanboard.net/screenshots/documentation/dropdown-screenshot.png) + + + +Рисунок. Выпадающее меню задачи - **Прикрепить картинку**. + + + +Для добавления нового снимка экрана (скриншота), сделайте снимок экрана (нажмите клавиши Ctrl+PrtScn) и вставьте его используя сочетания клавиш CTRL+V или Command+V + + + +![Screenshot page](https://kanboard.net/screenshots/documentation/task-screenshot.png) + +Рисунок. Прикрепить картинку. + + + +В Mac OS X вы можете использовать следующие горячие клавиши для создания снимка экрана: + + + +- Command-Control-Shift-3: Делает снимок экрана и сохраняет его в буфер обмена + + + +- Command-Control-Shift-4 и выделите необходимую область на экране: Делает снимок экрана для области экрана и сохраняет ее в буфер обмена + + + +- Command-Control-Shift-4, затем пробел, затем нажать на окно: Делает снимок окна и сохраняет его в буфер обмена + + + +Имеется много разных других программ для создания снимков с экрана с примечаниями и разными формами. + + + +**Заметка**: Эта возможность работает не во всех браузерах. Например, не работает в Safari из-за этой ошибки: [https://bugs.webkit.org/show\_bug.cgi?id=49141](https://bugs.webkit.org/show_bug.cgi?id=49141) + + + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/search.markdown b/doc/ru_RU/search.markdown new file mode 100644 index 00000000..14c3f5b1 --- /dev/null +++ b/doc/ru_RU/search.markdown @@ -0,0 +1,24 @@ +Поиск + +===== + + + +Для работы поиска включите JavaScript в браузере. + + + +Здесь можно делать поиск по всем разделам этой документации. Введите ключевые слова в текстовое поле и нажмите кнопку «искать». Внимание: будут найдены только те страницы, в которых есть все указанные слова. Страницы, где есть только часть этих слов, отобраны не будут. + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/sharing-projects.markdown b/doc/ru_RU/sharing-projects.markdown new file mode 100644 index 00000000..e8448189 --- /dev/null +++ b/doc/ru_RU/sharing-projects.markdown @@ -0,0 +1,82 @@ +Публичные доски и задачи +======================== + + + +По умолчанию, Доска имеет приватный доступ, но имеется возможность сделать Доску публичной. + + + +Публичная доска **не может быть изменена (имеется только доступ на чтение)**. Доступ к доске защищен случайно сгенерированным ключом, только пользователи знающие правильный URL могут увидеть публичную Доску. + + + +Публичная Доска автоматически обновляется каждые 60 секунд. Детали задач, также, доступны только для чтения. + + + +Пример использования: + + + +- Публикация вашей Доски для кого-либо снаружи (работник из другой организации) + + + +- Отображение Доски на большом экране в вашем офисе + + + +Включение общего доступа[¶](#enable-public-access "Ссылка на этот заголовок") +----------------------------------------------------------------------------- + + + +Выберете ваш проект, затем нажмите на ссылку **“Общий доступ”** и в завершении нажмите на кнопку **“Включить общий доступ”** + + + +![Enable public access](screenshots/project-enable-sharing.png) + +Рисунок. Включение общего доступа + + + +Когда общий доступ к проекту включен, сгенерируется несколько ссылок: + + + +- Ссылка для просмотра + + + +- RSS лента + + + +- iCalendar данные + + + +![Disable public access](screenshots/project-disable-sharing.png) + +Рисунок. Отключить общий доступ. + + + +Вы можете выключить общий доступ к проекту в любой момент. + + + +Каждый раз, когда вы включаете или выключаете общий доступ, генерируется новый ключ. **Доступ по предыдущей ссылке будет невозможен**. + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/sqlite-database.markdown b/doc/ru_RU/sqlite-database.markdown new file mode 100644 index 00000000..202452cb --- /dev/null +++ b/doc/ru_RU/sqlite-database.markdown @@ -0,0 +1,96 @@ +Настройка базы данных Sqlite +============================ + + + +Канборд использует для хранения данных Sqlite по умолчанию. Все задачи, проекты и учетные записи пользователей храняться в этой базе данных. + + + +База данных Sqlite хранит данные в файле `db.sqlite` в директории `data`. + + + +Экспорт/Резервное копирование[¶](#export-backup "Ссылка на этот заголовок") +--------------------------------------------------------------------------- + + + +### Командная строка[¶](#command-line "Ссылка на этот заголовок") + + + +Создание резервных копий выполняется просто, надо скопировать файл `data/db.sqlite` туда, где у вас будут хранится резервные копии. + + + +### Пользовательский интерфейс[¶](#user-interface "Ссылка на этот заголовок") + + + +Также, в любое время, вы можете скачать базу данных прямо через меню **Настройки**. + + + +Выгружаемая база данных упакована с помощью Gzip и имя базы выглядитит как `db.sqlite.gz`. + + + +Импорт/Восстановление[¶](#import-restoration "Ссылка на этот заголовок") +------------------------------------------------------------------------ + + + +Загрузить базу данных через пользовательский интерфейс невозможно. Восстановление должно быть выполнено вручную, когда никто не работает с программой. + + + +- Для восстановления резервной копии, достаточно заменить рабочий файл `data/db.sqlite`. + + + +- Для разархивирования базы данных упакованной с помощью gzip, выполните следующую команду в терминале: `gunzip db.sqlite.gz`. + + + +Оптимизация[¶](#optimization "Ссылка на этот заголовок") +-------------------------------------------------------- + + + +Время от времени, рекомендуется оптимизировать базу данных выполнив команду `VACUUM`. Эта команда пересоздает всю базу данных и используется в следующих случаях: + + + +- Для уменьшения размера файла базы данных. В процессе работы пользователей, после удаления записей, в базе данных остается пустое пространство и, соответственно, размер файла базы данных остается прежним. + + + +- Дефрагментация, база данных фрагментирована выполнением частыми вставками или обновлениями. + + + +### Выполнение оптимизации в командной строке[¶](#from-the-command-line "Ссылка на этот заголовок") + + + + sqlite3 data/db.sqlite 'VACUUM' + + + +### Выполнение оптимизации через пользовательский интерфейс[¶](#from-the-user-interface "Ссылка на этот заголовок") + + + +Перейдите в правое выпадающее меню **Настройки** и нажмите на ссылку **Оптимизировать базу данных** + + + +Для дополнительной информации, изучите [документацию Sqlite](https://sqlite.org/lang_vacuum.html). + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/subtasks.markdown b/doc/ru_RU/subtasks.markdown new file mode 100644 index 00000000..c78aee73 --- /dev/null +++ b/doc/ru_RU/subtasks.markdown @@ -0,0 +1,111 @@ +Подзадачи +========= + + +Подзадачи - это прекрасная возможность разделить основную задачу на части. + + + +Каждая подзадача: + + + +- Может быть назначена участнику проекта + + + +- Имеет 3 разных статуса: **Для исполнения**, **В работе**, **Выполнено** + + + +- Имеет информацию по отслеживанию времени: **затраченное время** и **запланированное время** + + + +- Может быть перемещена в списке, для изменения порядка выполнения + + + +Создание подзадачи[¶](#creating-subtasks "Ссылка на этот заголовок") +-------------------------------------------------------------------- + + + +В детальном представлении задачи, в левой боковой панели нажмите **Добавить подзадачу**: + + + +![Add a subtask](https://kanboard.net/screenshots/documentation/add-subtask.png) + +Рисунок. Добавление подзадачи. + + + +Вы, также, можете быстро добавить подзадачу нажав на заголовок: + + + +![Add a subtask from the task view](https://kanboard.net/screenshots/documentation/add-subtask-shortcut.png) + +Рисунок. Добавление подзадачи на странице детального просмотра задачи. + + + +Изменение статуса подзадачи[¶](#change-subtask-status "Ссылка на этот заголовок") +--------------------------------------------------------------------------------- + + + +Когда вы нажимаете на заголовок подзадачи стату меняется: + + + +![Subtask in progress](https://kanboard.net/screenshots/documentation/subtask-status-inprogress.png) + +Рисунок. Выполнение подзадачи. + + + +Иконка перед названием подзадачи обновляется в соответсвии со статусом. + + + +![Subtask done](https://kanboard.net/screenshots/documentation/subtask-status-done.png) + +Рисунок. Подзадача выполнена. + + + +**Заметка**: Когда задача закрыта, то все подзадачи меняют статус на **Выполнена**. + + + +Таймер подзадачи[¶](#subtask-timer "Ссылка на этот заголовок") +-------------------------------------------------------------- + + + +- Когда подзадача выполняется, таймер должен быт запущен. Таймер можно запустить и остановить в любое время. + + + +- Время таймера записывается автоматически в затраченное время. Так же, вы можете изменить вручную значение **затраченного времени** при редактировании подзадачи. + + + +- Подсчитываемое время округляется до 15 минут. Эта информация записывается в отдельную таблицу. + + + +- Время, затраченное на выполнение задачи, и запланированнное время обновляется автоматически, в соответсвии с суммой всех подзадач. + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/suse-installation.markdown b/doc/ru_RU/suse-installation.markdown new file mode 100644 index 00000000..6d508708 --- /dev/null +++ b/doc/ru_RU/suse-installation.markdown @@ -0,0 +1,36 @@ +Инсталяция на OpenSuse +====================== + + + +OpenSuse Leap 42.1[¶](#opensuse-leap-42-1 "Ссылка на этот заголовок") +--------------------------------------------------------------------- + + + + sudo zypper install php5 php5-sqlite php5-gd php5-json php5-mcrypt php5-mbstring php5-openssl + + cd /srv/www/htdocs + + sudo wget https://kanboard.net/kanboard-latest.zip + + sudo unzip kanboard-latest.zip + + sudo chmod -R 777 kanboard + + sudo rm kanboard-latest.zip + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/swimlanes.markdown b/doc/ru_RU/swimlanes.markdown new file mode 100644 index 00000000..d6e36fdd --- /dev/null +++ b/doc/ru_RU/swimlanes.markdown @@ -0,0 +1,81 @@ +Дорожки +======= + + + +Дорожки - это горизонтальное разделение вашей Доски. Например, очень удобно разделять релизы программ, разделить ваши задачи для разных продуктов, команд или чего-то еще. + + + +Доска с дорожками[¶](#board-with-swimlanes "Ссылка на этот заголовок") +---------------------------------------------------------------------- + + + +![Swimlanes](screenshots/swimlanes.png) + +Рисунок. Дорожки + + + +- Вы можете свернуть дорожку нажав на иконку слева + + + +- “Стандатная дорожка” всегда расположена сверху + + + +Управление дорожками[¶](#managing-swimlanes "Ссылка на этот заголовок") +----------------------------------------------------------------------- + + + +- Все проекты имеют дорожку по умолчанию - **Стандартная дорожка** + + + +- Если имеется больше одной дорожки, то на Доске будут показаны все имеющиеся дорожки. + + + +- Вы можете перемещать мышкой задачи между дорожками. + + + +Для настройки дорожек перейдите на страницу **настройки проекта** (Меню -\> Настройки) и нажмите **Дорожки** (слева). + + + +![Swimlanes Configuration](screenshots/swimlane-configuration.png) + +Рисунок. Настройка Дорожек. + + + +Теперь вы можете добавить новую дорожку или переименовать стандартную дорожку. Также, вы можете выключить дорожку или изменить расположение любой дорожки. + + + +- Стандартная дорожка всегда расположена сверху, но вы можете ее выключить и она не будет отображаться на Доске. + + + +- Выключенные дорожки не отображаются на Доске. + + + +- **Удаление дорожки не влечет за собой удаление расположенных на этой дорожке задач**, эти задачи будут перемещены в “Стандартную дорожку”. + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/syntax-guide.markdown b/doc/ru_RU/syntax-guide.markdown new file mode 100644 index 00000000..9d7414a8 --- /dev/null +++ b/doc/ru_RU/syntax-guide.markdown @@ -0,0 +1,246 @@ +Руководство по синтаксису +========================= + + + +Канборд использует [Markdown синтаксис](https://ru.wikipedia.org/wiki/Markdown) для комментариев или описания задач. Далее приведены примеры: + + + +Жирный и курсив[¶](#bold-and-italic "Ссылка на этот заголовок") +--------------------------------------------------------------- + +- Жирный текст: Используйте 2 звездочки или 2 подчеркивания вокруг слов(а) + + + +- Курсив: Используйте 1 звездочку или 1 подчеркивание вокруг слов(а) + + + +### Пример написания (источник)[¶](#source "Ссылка на этот заголовок") + + + + This **word** is very __important__. + + + + And here, an *italic* word with one _underscore_. + + + +### Результат[¶](#result "Ссылка на этот заголовок") + + + +This **word** is very **important**. + + + +And here, an *italic* word with one *underscore*. + + + +Неупорядоченные списки[¶](#unordered-lists "Ссылка на этот заголовок") +---------------------------------------------------------------------- + + + +Неупорядоченный список использует звездочки, минусы или плюсы вначале абзаца + + + +### Пример написания (источник)[¶](#id1 "Ссылка на этот заголовок") + + + + - Item 1 + + - Item 2 + + - Item 3 + + + + or + + + + * Item 1 + + * Item 2 + + * Item 3 + + + +### Результат[¶](#id2 "Ссылка на этот заголовок") + + + +- Item 1 + +- Item 2 + +- Item 3 + + + +Упорядоченные списки[¶](#ordered-lists "Ссылка на этот заголовок") +------------------------------------------------------------------ + + + +Упорядоченные списки префиксом имеют цифру: + + + +### Пример написания (источник)[¶](#id3 "Ссылка на этот заголовок") + + + + 1. Do that first + + 2. Do this + + 3. And that + + + +### Результат[¶](#id4 "Ссылка на этот заголовок") + + + +1. Do that first + +2. Do this + +3. And that + + + +Ссылки[¶](#links "Ссылка на этот заголовок") +-------------------------------------------- + + + +### Пример написания (источник)[¶](#id5 "Ссылка на этот заголовок") + + + + [My link title](https://kanboard.net/) + + + + <https://kanboard.net> + + + +### Результат[¶](#id6 "Ссылка на этот заголовок") + + + +[My link title](https://kanboard.net/) + + + +[https://kanboard.net](https://kanboard.net) + + + +Исходный код[¶](#source-code "Ссылка на этот заголовок") +-------------------------------------------------------- + + + +### Код встраиваемый в текст[¶](#inline-code "Ссылка на этот заголовок") + + + +Используйте обратные кавычки (переключитесь на анлийскую раскладку и нажмите ё) + + + + Execute this command: `tail -f /var/log/messages`. + + + +### Результат[¶](#id7 "Ссылка на этот заголовок") + + + +Execute this command: `tail -f /var/log/messages`{.docutils .literal}. + + + +### Блоки кода[¶](#code-blocks "Ссылка на этот заголовок") + + + +Используйте 3 обратных кавычки с указанием языка программирования + + + + ```php + + <?php + + + + phpinfo(); + + + + ?> + + ``` + + + +### Результат[¶](#id8 "Ссылка на этот заголовок") + + + + <?php + + + + phpinfo(); + + + + ?> + + + +Заголовки[¶](#titles "Ссылка на этот заголовок") +------------------------------------------------ + + + +### Пример написания (источник)[¶](#id9 "Ссылка на этот заголовок") + + + + # Title level 1 + + + + ## Title level 2 + + + + ### Title level 3 + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/task-links.markdown b/doc/ru_RU/task-links.markdown new file mode 100644 index 00000000..2912f91b --- /dev/null +++ b/doc/ru_RU/task-links.markdown @@ -0,0 +1,93 @@ +Ссылки на задачи +================ + + + +Задачи могут быть созданы вместе с предопределенными связями: + + + +![Task Links](https://kanboard.net/screenshots/documentation/task-links.png) + +Рисунок. Ссылки на задачи + + + +Связи по умолчанию: + + + +- **относится к** + + + +- **блокирована**| блокирует + + + +- **блокирует** | блокирована + + + +- **дублирована** | дублирует + + + +- **дублирует** | дублирована + + + +- **является продолжением** | является началом для + + + +- **является началом для** | является продолжением + + + +- **часть вехи** | является вехой для + + + +- **является вехой для** | часть вехи + + + +- **исправлено** | исправляет + + + +- **исправляет** | исправлено + + + +Эти названия могут быть быть изменены в настройках приложения. + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/tests.markdown b/doc/ru_RU/tests.markdown new file mode 100644 index 00000000..2373d030 --- /dev/null +++ b/doc/ru_RU/tests.markdown @@ -0,0 +1,262 @@ +Автоматизированные тесты +======================== + + + +[PHPUnit](https://phpunit.de/) используется для запуска автоматизированных тестов в Канборд. + + + +Вы можете запускать тесты для разных баз данных (Sqlite, Mysql and Postgresql), чтобы убедится, что результаты будут одинаковые. + + + +Требования[¶](#requirements "Ссылка на этот заголовок") +------------------------------------------------------- + + + +- Компьютер Linux/Unix + + + +- PHP cli + + + +- Установленный PHPUnit + + + +- Mysql и Postgresql (опционально) + + + +Unit тесты[¶](#unit-tests "Ссылка на этот заголовок") +----------------------------------------------------- + + + +### Тестирование с Sqlite[¶](#test-with-sqlite "Ссылка на этот заголовок") + + + +Sqlite тестирование использует базу данных в памяти, без использования записи на файловую систему. + + + +Конфигурационный файл PHPUnit - `tests/units.sqlite.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.sqlite.xml`. + + + +Пример: + + + + phpunit -c tests/units.sqlite.xml + + + + PHPUnit 5.0.0 by Sebastian Bergmann and contributors. + + + + ............................................................... 63 / 649 ( 9%) + + ............................................................... 126 / 649 ( 19%) + + ............................................................... 189 / 649 ( 29%) + + ............................................................... 252 / 649 ( 38%) + + ............................................................... 315 / 649 ( 48%) + + ............................................................... 378 / 649 ( 58%) + + ............................................................... 441 / 649 ( 67%) + + ............................................................... 504 / 649 ( 77%) + + ............................................................... 567 / 649 ( 87%) + + ............................................................... 630 / 649 ( 97%) + + ................... 649 / 649 (100%) + + + + Time: 1.22 minutes, Memory: 151.25Mb + + + + OK (649 tests, 43595 assertions) + + + +### Тестирование с Mysql[¶](#test-with-mysql "Ссылка на этот заголовок") + + + +У вас должна быть локально установлена база данных Mysql или MariaDb. + + + +По умолчанию, используются следующие учетные данные: + + + +- Hostname: **localhost** + +- Username: **root** + +- Password: none + +- Database: **kanboard\_unit\_test** + + + +При каждом выполнении база данных удаляется и создается снова. + + + +Конфигурационный файл HPUnit - `tests/units.mysql.xml`. Из директории Kanboard запустите команду `phpunit -c tests/units.mysql.xml`. + + + +### Тестирование с Postgresql[¶](#test-with-postgresql "Ссылка на этот заголовок") + + + +У вас должен быть локально установлен Postgresql. + + + +По умолчанию, используются следующие учетные данные: + + + +- Hostname: **localhost** + +- Username: **postgres** + +- Password: none + +- Database: **kanboard\_unit\_test** + + + +Убедитесь, что пользователь `postgres` может создавать и удалять базу данных. База данных пересоздается при каждом выполнении теста. + + + +Конфигурационных файл PHPUnit - `tests/units.postgres.xml`. Из директории Kanboard, запустите команду `phpunit -c tests/units.postgres.xml`. + + + +Тесты интеграции[¶](#integration-tests "Ссылка на этот заголовок") +------------------------------------------------------------------ + + + +Фактически тестируются только вызовы API. + + + +Реальные HTTP calls выполняются с этими тестами. Поэтому, необходим локальный экземпляр Канборда, который слушает на `http://localhost:8000/`. + + + +Все данные будут удалены/изменены при тестировании. Более того скрипт будет сброшен и установлен новый ключ API. + + + +1. Запустите локольный экземпляр Канборда: `php -S 127.0.0.1:8000` + + + +2. Запустите тест в другом терминале + + + +Этот же метод используется для запуска тестов для разных баз данных: + + + +- Sqlite: `phpunit -c tests/integration.sqlite.xml` + +- Mysql: `phpunit -c tests/integration.mysql.xml` + +- Postgresql: `phpunit -c tests/integration.postgres.xml` + + + +Пример: + + + + phpunit -c tests/integration.sqlite.xml + + + + PHPUnit 5.0.0 by Sebastian Bergmann and contributors. + + + + ............................................................... 63 / 135 ( 46%) + + ............................................................... 126 / 135 ( 93%) + + ......... 135 / 135 (100%) + + + + Time: 1.18 minutes, Memory: 14.75Mb + + + + OK (135 tests, 526 assertions) + + + +Непрерывная интеграция с Travis-CI[¶](#continuous-integration-with-travis-ci "Ссылка на этот заголовок") + +-------------------------------------------------------------------------------------------------------- + + + +После каждого commit влитого в мой репозиторий, юнит тесты выполняются для 5 различных версий PHP: + + + +- PHP 7.0 + +- PHP 5.6 + +- PHP 5.5 + +- PHP 5.4 + +- PHP 5.3 + + + +При тестировании каждой версии PHP используются 3 поддерживаемые базы данных: Sqlite, Mysql and Postgresql. + + + +Конфигурационный файл Travis - `.travis.yml` - находится в корневой директории Kanboard. + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/time-tracking.markdown b/doc/ru_RU/time-tracking.markdown new file mode 100644 index 00000000..98364d38 --- /dev/null +++ b/doc/ru_RU/time-tracking.markdown @@ -0,0 +1,112 @@ +Отслеживание времени +==================== + + + +Отслеживание времени (контроль времени) может быть использовано для уровня задач или для уровня подзадач. + + + +Отслеживание времени испольнения задач[¶](#task-time-tracking "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------- + + + +![Task time tracking](https://kanboard.net/screenshots/documentation/task-time-tracking.png) + +Рисунок. Отслеживание времени испольнения задач + + + +Задачи имеют два поля: + + + +- Запланировано времени + + + +- Затрачено времени + + + +Эти значения показывают время работы и могут быть установлены вручную + + + +Отслеживание времени подзадач[¶](#subtask-time-tracking "Ссылка на этот заголовок") +----------------------------------------------------------------------------------- + + + +![Subtask time tracking](https://kanboard.net/screenshots/documentation/subtask-time-tracking.png) + +Рисунок. Отслеживание времени подзадач + + + +Подзадачи тоже имеют поля “Запланировано” и “Затрачено” время. + + + +Когда вы меняете значения в этих полях, **отслеживание времени задачи обновляется автоматически и формируется суммарное время всех подзадач** + + + +Канборд записывает время между изменениями статуса каждой подзадачи в отдельную таблицу. + + + +- При изменении статуса подзадачи с **“Для испольнения”** на **“В работе”**, записывается время начала + + + +- При изменении статуса подзадачи с **“В работе”** на **“Выполнено”**, записывается как время окончания и, при этом, обновляется **затраченное время** в подзадаче и в задаче. + + + +Анализ всех записей можно увидеть на странице детального просмотра задачи: + + + +![Task timesheet](https://kanboard.net/screenshots/documentation/task-timesheet.png) + +Рисунок. Таблица учета времени. + + + +Для каждой подзадачи, таймер может быть остановлен и запущен в любое время: + + + +![Subtask timer](https://kanboard.net/screenshots/documentation/subtask-timer.png) + +Рисунок. Таймер подзадач. + + + +- Таймер не зависит от статуса подзадачи + + + +- Вы можете запустить таймер для новой записи, созданной в таблице отслеживания задач, в любое время + + + +- Вы можете остановить учет времени даты завершения в таблице отслеживания задач, в любое время + + + +- Подсчет затраченного времени округляется до четверти часа + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/transitions.markdown b/doc/ru_RU/transitions.markdown new file mode 100644 index 00000000..efb95c50 --- /dev/null +++ b/doc/ru_RU/transitions.markdown @@ -0,0 +1,60 @@ +Перемещения задач +================= + + + +Запись о перемещении отражает каждое движение задачи между колонками. + + + +![Transitions](https://kanboard.net/screenshots/documentation/transitions.png) + +Рисунок. Перемещения. + + + +Перемещение доступно в боковом меню в детальном представлении задачи (**Перемещения**). Вы можете увидеть следующую информацию: + + + +- Дата, когда было выполенено перемещение + + + +- Исходная колонка - колонка, из которой было сделано перемещение + + + +- Колонка назначения - колонка, в которую была перемещена задача + + + +- Исполнитель (пользователь, который переместил задачу) + + + +- Время проведенное в колонке (сколько времени было затрачено на выполнение задачи в указанной колонке) + + + +Данные о перемещении задач, также, могут быть экспортированы со страницы настроек проекта (**Меню** -\> **Экспорт**). + + + +![Transitions Export](https://kanboard.net/screenshots/documentation/transitions-export.png) + +Рисунок. Экспорт перемещений задач. + + + +Для указанного промежутка времени вы можете сформировать CSV файл, который вы можете импортировать в любое программное обеспечение с электронными таблицами (например, Excell). + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/translations.markdown b/doc/ru_RU/translations.markdown new file mode 100644 index 00000000..f4bcafc0 --- /dev/null +++ b/doc/ru_RU/translations.markdown @@ -0,0 +1,155 @@ +Переводы на другие языки (локализация) +====================================== + + + +Как перевести Канборд на новый язык?[¶](#how-to-translate-kanboard-to-a-new-language "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------------------------------- + + + +- Переводы хранятся в директории `app/Locale` + + + +- В этой директории есть поддиректории для разных языков, например, для русского имеется `ru_RU`, для французского - `fr_FR` и т.д. + + + +- Переводы находятся в PHP файле, который возвращает массив с парой ключ-значение + + + +- Ключ - оригинальный текст на английском и значение - перевод на соответсвующем языке + + + +- **Французские переводы всегда в актуальном состоянии** + + + +- Всегда используйте последнюю версию (branch master) + + + +### Создание нового перевода[¶](#create-a-new-translation "Ссылка на этот заголовок") + + + +1. Создайте новую директорию: `app/Locale/xx_XX`, например `app/Locale/fr_CA` для канадского фрацузского + + + +2. Создайте новый файл для перевода: `app/Locale/xx_XX/translations.php` + + + +3. Используйте как образец содержимое французского перевода (локализации) и замените значения + + + +4. Внесите изменения в файл `app/Model/Language.php` + + + +5. Проверьте добавленный язык на локальной версии Канборда + + + +6. Пошлите [pull-request на Github](https://help.github.com/articles/using-pull-requests/) + + + +Как обновить имеющийся перевод?[¶](#how-to-update-an-existing-translation "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------------- + + + +1. Откройте файл перевода `app/Locale/xx_XX/translations.php` + + + +2. Отсутсвующие переводы закоментированы - `//` и значения пустые, нужно заполнить значения и удалить коментарий + + + +3. Проверьте внесенные изменения на локальной версии Канборда и пошлите [pull-request](https://help.github.com/articles/using-pull-requests/) + + + +Как добавить новый текст перевода в приложение?[¶](#how-to-add-new-translated-text-in-the-application "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------------------- + + + +Переводы отображаются с помощью функций в исходном коде: + + + +- `t()`: показывает текст с HTML escaping + + + +- `e()`: показывает текст без HTML escaping + + + +Всегда используйте английскую версию исходного кода. + + + +Текстовые строки используют функцию `sprintf()` для замены элементов: + + + +- `%s` используется для замены строки + + + +- `%d` используется для замены цифры + + + +Ознакомится с доступными форматами вы можете в [документации PHP](http://php.net/sprintf). + + + +Как найти отсутствующие переводы в приложении?[¶](#how-to-find-missing-translations-in-the-applications "Ссылка на этот заголовок") +----------------------------------------------------------------------------------------------------------------------------------- + + + +Из терминала запустите следующую команду: + + + + ./kanboard locale:compare + + + +Все отсутствующие и неиспользуемые переводы будут показаны на экране. Добавьте их во французскую локализацию и синхронизируйте с другими локализациями (смотрите ниже) + + + +Как синхронизировать файлы переводов?[¶](#how-to-synchronize-translation-files "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------------------------- + + + +В оболочке Unix запустите следующую команду: + + + + ./kanboard locale:sync + + + +Французский перевод используется для ссылки на другие локализации. + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/ubuntu-installation.markdown b/doc/ru_RU/ubuntu-installation.markdown new file mode 100644 index 00000000..ac3cb565 --- /dev/null +++ b/doc/ru_RU/ubuntu-installation.markdown @@ -0,0 +1,111 @@ +Как инсталировать Канборд на Ubuntu? +==================================== + + + +Ubuntu Xenial 16.04 LTS[¶](#ubuntu-xenial-16-04-lts "Ссылка на этот заголовок") +------------------------------------------------------------------------------- + + + +Установите Apache и PHP: + + + + sudo apt-get update + + sudo apt-get install -y apache2 libapache2-mod-php7.0 php7.0-cli php7.0-mbstring php7.0-sqlite3 \ + + php7.0-opcache php7.0-json php7.0-mysql php7.0-pgsql php7.0-ldap php7.0-gd + + + +Установите Канборд: + + + + cd /var/www/html + + sudo wget https://kanboard.net/kanboard-latest.zip + + sudo unzip kanboard-latest.zip + + sudo chown -R www-data:www-data kanboard/data + + sudo rm kanboard-latest.zip + + + +Ubuntu Trusty 14.04 LTS[¶](#ubuntu-trusty-14-04-lts "Ссылка на этот заголовок") +------------------------------------------------------------------------------- + + + +Установите Apache и PHP: + + + + sudo apt-get update + + sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip + + + +Установите Канборд: + + + + cd /var/www/html + + sudo wget https://kanboard.net/kanboard-latest.zip + + sudo unzip kanboard-latest.zip + + sudo chown -R www-data:www-data kanboard/data + + sudo rm kanboard-latest.zip + + + +Ubuntu Precise 12.04 LTS[¶](#ubuntu-precise-12-04-lts "Ссылка на этот заголовок") +--------------------------------------------------------------------------------- + + + +Установите Apache и PHP: + + + + sudo apt-get update + + sudo apt-get install -y php5 php5-sqlite php5-mysql php5-pgsql php5-ldap php5-gd php5-json php5-mcrypt unzip + + + +Установите Канборд: + + + + cd /var/www + + sudo wget https://kanboard.net/kanboard-latest.zip + + sudo unzip kanboard-latest.zip + + sudo chown -R www-data:www-data kanboard/data + + sudo rm kanboard-latest.zip + + + +Некоторые возможности Канборда требуют [запуска ежедневных фоновых задач](cronjob.markdown). + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/update.markdown b/doc/ru_RU/update.markdown new file mode 100644 index 00000000..7cfabdb0 --- /dev/null +++ b/doc/ru_RU/update.markdown @@ -0,0 +1,57 @@ +Обновление Канборд до новой версии +================================== + + +Обновление Канборда до новой версии бесшовное. Процесс сводится к тому, что надо просто скопировать каталог с данными из старой версии в новый Канборд. Канборд запустит миграцию баз данных автоматически. + + + +Важные замечания перед обновлением[¶](#important-things-to-do-before-updating "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------- + +- Перед обновлением, обязательно сделайте копию ваших данных со старой версии Канборда + +- Всегда следите за [историей изменений](https://github.com/fguillot/kanboard/blob/master/ChangeLog) для отслеживания критических изменений + +- Всегда закрывайте все пользовательские сессии (очищайте все сессии на сервере) + + +Обновление из архива (стабильная версия)[¶](#from-the-archive-stable-version "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------- + + + +1. Скачайте и распакуйте архив с новой версией + +2. Скопируйте содержимое каталога с данными старой версии во вновь распакованный каталог + +3. Скопируйте из старой версии Канборда `config.php`, если вы его создавали + +4. Скопируйте плагины, если есть + +5. Убедитесь, что директория `data` имеет права на запись от пользователя веб сервера + +6. Проверьте работу новой версии + +7. Удалите старую версию Канборда + + +Обновление из репозитория (разрабатываемая версия)[¶](#from-the-repository-development-version "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------------------------- + + + +1. `git pull` + +2. `composer install --no-dev` + +3. Выполните вход и проверьте, что все работает корректно + + +**Внимание**: Выполняя обновление из разрабатываемой версии, вы должны понимать, что это нестабильная версия и берете все риски по работе Канборд на себя. + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/usage-examples.markdown b/doc/ru_RU/usage-examples.markdown new file mode 100644 index 00000000..d0d580e8 --- /dev/null +++ b/doc/ru_RU/usage-examples.markdown @@ -0,0 +1,193 @@ +Примеры использования +===================== + + + +Вы можете настроить вашу доску в соответсвии с вашими бизнес-процессами + + + +Разработка программного обеспечения[¶](#software-development "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------- + + + +- Заказ + + + +- Готов + + + +- В работе + + + +- Требуется утверждение + + + +- Утверждено + + + +- Развернуто в продакшн + + + +Отслеживание ошибок[¶](#bug-tracking "Ссылка на этот заголовок") +---------------------------------------------------------------- + + + +- Сообщение + + + +- Подтверждено + + + +- В работе + + + +- Проверено + + + +- Исправлено + + + +Продажи[¶](#sales "Ссылка на этот заголовок") +--------------------------------------------- + + + +- Клиенты + + + +- Встречи + + + +- Предложения + + + +- Приобретение + + + +Эффективное управление бизнесом[¶](#lean-business-management "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------- + + + +- Идеи + + + +- События + + + +- Мероприятия + + + +- Анализы + + + +- Исполненно + + + +Подбор персонала[¶](#recruiting-process "Ссылка на этот заголовок") +------------------------------------------------------------------- + + + +- Предложения о работе + + + +- Кандидаты + + + +- Телефонный отбор + + + +- Собеседование + + + +- Наем + + + +Онлайн магазин[¶](#online-shops "Ссылка на этот заголовок") +----------------------------------------------------------- + + + +- Заказы + + + +- Упаковка + + + +- Готов к отправке + + + +- Отправлен + + + +Производство[¶](#manufactory "Ссылка на этот заголовок") +-------------------------------------------------------- + + + +- Заказы покупателей + + + +- Сборка + + + +- Проверка + + + +- Упаковка + + + +- Готово к отгрузке + + + +- Отправлен + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/user-management.markdown b/doc/ru_RU/user-management.markdown new file mode 100644 index 00000000..ce74b7f8 --- /dev/null +++ b/doc/ru_RU/user-management.markdown @@ -0,0 +1,89 @@ +Управление пользователями +========================= + + + +Создание нового пользователя[¶](#add-a-new-user "Ссылка на этот заголовок") +--------------------------------------------------------------------------- + + + +Только администратор может создавать нового пользователя. + + + +1. В выпадающем меню, в правом верхнем углу, выберите **Управление пользователями** + + + +2. Вверху имеются ссылки - **Новый локальный пользователь** и **Новый удаленный пользователь** + + + +3. При создании пользователя нужно заполнить форму и сохранить + + + +![New user](screenshots/new-user.png) + +Рисунок. Форма создания нового пользователя. + + + +При создании **Локального пользователя** вы должны, как минимум, заполнить следующие поля: + + + +- **Имя пользователя**: это поле является уникальным идентификатором вашего пользователя (логин) + + + +- **Пароль**: Пароль пользователя должен иметь минимум 6 символов + + + +Для **удаленных пользователей** обязательно только **Имя пользователя**. + + + +Редактирование пользователей[¶](#edit-users "Ссылка на этот заголовок") +----------------------------------------------------------------------- + + + +После перехода в **Управление пользователями**, вам будет доступен список пользователей. Кликните на пользователя в столбце **Имя пользователя**. Далее, вам будет доступно редактирование настроек и профиля пользователя. + + + +- Если вы имеете права пользователя, то вы сможете только изменить ваш профиль + + + +- Для редактирования любого пользователя вам должны быть назначены права администратора + + + +Удаеление пользователей[¶](#remove-users "Ссылка на этот заголовок") +-------------------------------------------------------------------- + + + +В списке пользователей выберите в колонке **Действия** в выпадающем меню **Удалить**. Эта ссылка доступна только для администраторов. + + + +Если вы удалите пользователя, то все задачи назначенные пользователю перестанут быть назначенными. + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/user-mentions.markdown b/doc/ru_RU/user-mentions.markdown new file mode 100644 index 00000000..766103e3 --- /dev/null +++ b/doc/ru_RU/user-mentions.markdown @@ -0,0 +1,49 @@ +Ссылка на пользователя +====================== + + + +В Канборде есть возможность посылать уведомления пользователю, если кто-то ссылается на него в тексте. + + + +Если вы хотите заострить внимание о ком-либо в комментарии или в задаче, то вы можете использовать символ @ и следом указать имя пользователя. Канборд автоматически предлагает список пользователей: + + + +![User Mention](screenshots/mention-autocomplete.png) + +Рисунок. Ссылка на пользователя. + + + +- В данный момент, добавлять ссылку на пользователя можно только в описании задачи и тексте комментария. + + + +- Ссылка на пользователя работает только в задачах и при создании комментария. + + + +- Для получения уведомления, пользователь, на которого ссылаются, должен быть участником проекта, в котором создается ссылка. + + + +- Если была создана ссылка на пользователя, то этот пользователь получит уведомление. + + + +- @username - выглядит как ссылка на публичный профиль пользователя. + + + +Уведомление посылаются пользователю в соответсвии с пользовательскими настройками: это может быть email, уведомление на веб странице или даже сообщение в Slack/Hipchat/Jabber, если вы установили соответсвующие плагины. + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/user-types.markdown b/doc/ru_RU/user-types.markdown new file mode 100644 index 00000000..9afb58b8 --- /dev/null +++ b/doc/ru_RU/user-types.markdown @@ -0,0 +1,26 @@ +Типы пользователей +================== + + + +В Канборде могут быть два типа пользователей: + + + +| Тип | Описание | +|--------------|-------------------------------------------------------------| +| Локальный пользователь | Пароль пользователя хранится в базе данных Канборда| +| Удаленный пользователь | Учетные данные пользователя управляются (контролируются) другой системой (например, LDAP сервер). Другими словами, аутентификация пользователя происходит во внешней системе, не в Канборде.| + + + +Примеры удаленных пользователей: + +- LDAP пользователь + +- Аутентификация пользователя через реверс-прокси + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/vagrant.markdown b/doc/ru_RU/vagrant.markdown new file mode 100644 index 00000000..59e920cc --- /dev/null +++ b/doc/ru_RU/vagrant.markdown @@ -0,0 +1,51 @@ +Запуск Канборда с Vagrant +========================= + + + +Вы можете легко развернуть Канборд с Vagrant: + + + +- Склонируйте проект с репозитория git + + + +- Выполните `vagrant up` + + + +- Для входа в приложение используйте URL `http://localhost:8001/` + + + +Виртуальная машина построена на Ubuntu 14.04 с PHP 5.5. + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/webhooks.markdown b/doc/ru_RU/webhooks.markdown new file mode 100644 index 00000000..dbba0867 --- /dev/null +++ b/doc/ru_RU/webhooks.markdown @@ -0,0 +1,477 @@ +Webhooks +======== + +Webhooks служат для взаимодействия с внешними приложениями. Webhook посылает уведомление стороннему приложению о событиях, которые произошли в Канборд. + + +- Webhooks могут быть использованы для создания задач вызовом простого URL (Вы можете сделать это и при помощи API) +- Обращение к внешнему приложению может происходить автоматически, когда наступает какое-либо событие в Канборд (создана задача, обновлен комментарий и т.д.) + + + +Как написать webhook приемник во внешнем приложении?[¶](#how-to-write-a-web-hook-receiver "Ссылка на этот заголовок") +--------------------------------------------------------------------------------------------------------------------- + +Все внутренние события в Канборде могут быть посланы во внешний URL. + +- Webhook URL (url приемник внешнего приложения) может быть задан в **Настройки** -\> **Webhooks** -\> **Webhook URL** +- Когда в Канборде происходит событие, Канборд обращается к указанному URL автоматически +- Данные конвертируются в формат JSON и передаются с помощью POST HTTP запроса +- Webhook ключ передается в составе запроса в виде строкового параметра. Таким образом, вы можете проверить, что запрос на самом деле пришел из Канборда. +- **Созданный вами URL должен среагировать в течении 1 секунды**. Это желательно сделать потому, что запросы являются синхронными (ограничения языка PHP) и возможны тормоза в пользовательском интерфейсе, если скрипт будет слишком медленный! + + + +### Список поддерживаемых событий[¶](#list-of-supported-events "Ссылка на этот заголовок") + +- comment.create +- comment.update +- comment.delete +- file.create +- task.move.project +- task.move.column +- task.move.position +- task.move.swimlane +- task.update +- task.create +- task.close +- task.open +- task.assignee_change +- subtask.update +- subtask.create +- subtask.delete +- task_internal_link.create_update +- task_internal_link.delete + + + +### Пример HTTP запроса[¶](#example-of-http-request "Ссылка на этот заголовок") + + + + POST https://your_webhook_url/?token=WEBHOOK_TOKEN_HERE + + User-Agent: Kanboard Webhook + + Content-Type: application/json + + Connection: close + + + + { + + "event_name": "task.move.column", + + "event_data": { + + "task_id": "1", + + "project_id": "1", + + "position": 1, + + "column_id": "1", + + "swimlane_id": "0", + + "src_column_id": "2", + + "dst_column_id": "1", + + "date_moved": "1431991532", + + "recurrence_status": "0", + + "recurrence_trigger": "0" + + } + + } + + + +Функциональная часть всех событий имеет следующий формат: + + + + { + + "event_name": "model.event_name", + + "event_data": { + + "key1": "value1", + + "key2": "value2", + + ... + + } + + } + + + +Значения `event_data`{.docutils .literal} могут быть неупорядочены в событиях. + + + +### Пример функциональной части события[¶](#examples-of-event-payloads "Ссылка на этот заголовок") + + + +Создание задачи: + + + + { + + "event_name": "task.create", + + "event_data": { + + "title": "Demo", + + "description": "", + + "project_id": "1", + + "owner_id": "1", + + "category_id": 0, + + "swimlane_id": 0, + + "column_id": "2", + + "color_id": "yellow", + + "score": 0, + + "time_estimated": 0, + + "date_due": 0, + + "creator_id": 1, + + "date_creation": 1431991532, + + "date_modification": 1431991532, + + "date_moved": 1431991532, + + "position": 1, + + "task_id": 1 + + } + + } + + + +Изменение задачи: + + + + { + + "event_name": "task.update", + + "event_data": { + + "id": "1", + + "title": "Demo", + + "description": "", + + "date_creation": "1431991532", + + "color_id": "yellow", + + "project_id": "1", + + "column_id": "1", + + "owner_id": "1", + + "position": "1", + + "is_active": "1", + + "date_completed": null, + + "score": "0", + + "date_due": "0", + + "category_id": "2", + + "creator_id": "1", + + "date_modification": 1431991603, + + "reference": "", + + "date_started": 1431993600, + + "time_spent": 0, + + "time_estimated": 0, + + "swimlane_id": "0", + + "date_moved": "1431991572", + + "recurrence_status": "0", + + "recurrence_trigger": "0", + + "recurrence_factor": "0", + + "recurrence_timeframe": "0", + + "recurrence_basedate": "0", + + "recurrence_parent": null, + + "recurrence_child": null, + + "task_id": "1", + + "changes": { + + "category_id": "2" + + } + + } + + } + + + +События изменеия задачи имеют поле `changes`{.docutils .literal}, которое содержит обновленные значения. + + + +Перемещение задачи в другую колонку: + + + + { + + "event_name": "task.move.column", + + "event_data": { + + "task_id": "1", + + "project_id": "1", + + "position": 1, + + "column_id": "1", + + "swimlane_id": "0", + + "src_column_id": "2", + + "dst_column_id": "1", + + "date_moved": "1431991532", + + "recurrence_status": "0", + + "recurrence_trigger": "0" + + } + + } + + + +Перемещение задачи в другое место: + + + + { + + "event_name": "task.move.position", + + "event_data": { + + "task_id": "2", + + "project_id": "1", + + "position": 1, + + "column_id": "1", + + "swimlane_id": "0", + + "src_column_id": "1", + + "dst_column_id": "1", + + "date_moved": "1431996905", + + "recurrence_status": "0", + + "recurrence_trigger": "0" + + } + + } + + + +Создание комментария: + + + + { + + "event_name": "comment.create", + + "event_data": { + + "id": 1, + + "task_id": "1", + + "user_id": "1", + + "comment": "test", + + "date_creation": 1431991615 + + } + + } + + + +Изменение комментария: + + + + { + + "event_name": "comment.update", + + "event_data": { + + "id": "1", + + "task_id": "1", + + "user_id": "1", + + "comment": "test edit" + + } + + } + + + +Создание подзадачи: + + + + { + + "event_name": "subtask.create", + + "event_data": { + + "id": 3, + + "task_id": "1", + + "title": "Test", + + "user_id": "1", + + "time_estimated": "2", + + "position": 3 + + } + + } + + + +Изменение подзадачи: + + + + { + + "event_name": "subtask.update", + + "event_data": { + + "id": "1", + + "status": 1, + + "task_id": "1" + + } + + } + + + +Загрузка файла: + + + + { + + "event_name": "file.create", + + "event_data": { + + "task_id": "1", + + "name": "test.png" + + } + + } + + + +Создан снимок экрана: + + + + { + + "event_name": "file.create", + + "event_data": { + + "task_id": "2", + + "name": "Screenshot taken May 19, 2015 at 10:56 AM" + + } + + } + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/what-is-kanban.markdown b/doc/ru_RU/what-is-kanban.markdown new file mode 100644 index 00000000..46196bbb --- /dev/null +++ b/doc/ru_RU/what-is-kanban.markdown @@ -0,0 +1,80 @@ +Что такое Kanban? +================= + + + +Kanban - методология, которая первоначально применила компания Toyota для увеличения производительности. Описание в википедии - [Канбан доска](https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BD%D0%B1%D0%B0%D0%BD-%D0%B4%D0%BE%D1%81%D0%BA%D0%B0) + + + +Смысл Kanban заключается в следующем: + + + +- Визуализация рабочих процессов + + + +- Уменьшение времени для достижения цели + + + +Визуализация рабочих процессов[¶](#visualize-your-workflow "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------- + + + +- Ваш рабочий процесс отображается на доске и вы ясно видете картину вашего проекта + + + +- Каждая колонка представляет шаг вашего рабочего процесса + + + +Сосредоточте внимание и избегайте многозадачности[¶](#bring-focus-and-avoid-multitasking "Ссылка на этот заголовок") +-------------------------------------------------------------------------------------------------------------------- + + + +- Каждая фаза может иметь работу ограниченную временем + + + +- Уменьшайте объем для определения узких мест + + + +- Ограничте количество одновременно выполняемых задач + + + +Подсчет производительности и улучшений[¶](#measure-performance-and-improvement "Ссылка на этот заголовок") +---------------------------------------------------------------------------------------------------------- + + + +Kanban использует время выполнения (lead time) и время цикла (cycle time) для подсчета производительности: + + + +- **Время выполнения**: Время между созданием задачи и ее завершением + + + +- **Время цикла**: Время между началом выполнения задачи и ее завершением + + + +Например, вам заложено время выполнения - 100 дней, а затратили на выполнение задачи (время цикла) всего 1 час. + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/windows-apache-installation.markdown b/doc/ru_RU/windows-apache-installation.markdown new file mode 100644 index 00000000..7f181e10 --- /dev/null +++ b/doc/ru_RU/windows-apache-installation.markdown @@ -0,0 +1,253 @@ +Установка Канборд на Windows Server и Apache +============================================ + + + +Это руководство поможет вам шаг за шагом установить Канборд на Windows Server с Apache и PHP + + + +**Внимание**: Если у вас 64 разрядная платформа, то вам нужно выбрать “x64”, и выберите “x86” для 32 разрядной операционной системы. + + + +Установка распространяемого пакета Visual C++[¶](#visual-c-redistributable-installation "Ссылка на этот заголовок") +------------------------------------------------------------------------------------------------------------------- + + + +PHP и Apache скомпилированы с Visual Studio, поэтому вам нужно установить эту библиотеку, если вы не сделали это ранее. + + + +1. Скачайте библиотеку с [официального вебсайта Microsoft](http://www.microsoft.com/en-us/download/details.aspx?id=30679) + + + +2. Запустите установку `vcredist_x64.exe` или `vcredist_x86.exe`, в соответствии с вашей платформой + + + +Установка Apache[¶](#apache-installation "Ссылка на этот заголовок") +-------------------------------------------------------------------- + + + +1. Скачайте исходники Apache с [Apache Lounge](http://www.apachelounge.com/download/) + + + +2. Разархивируйте Apache24 в каталог `C:\Apache24` + + + +### Назначение имени сервера[¶](#define-the-server-name "Ссылка на этот заголовок") + + + +Откройте файл `C:\Apache24\conf\httpd.conf` и добавьте директиву: + + + + ServerName localhost + + + +### Установка сервиса Apache[¶](#install-the-apache-service "Ссылка на этот заголовок") + + + +Откройте консоль (`cmd.exe`), перейдите в каталог `C:\Apache24\bin` и установите сервис Apache: + + + + cd C:\Apache24\bin + + + + # Install the windows service + + httpd.exe -k install + + + +### Установка ApacheMonitor[¶](#install-apachemonitor "Ссылка на этот заголовок") + + + +- Выполните `C:\Apache24\bin\ApacheMonitor.exe` и добавьте его в автозагрузку. + + + +- Теперь во всплывающем меню, при нажатии правой кнопки мыши на иконке, нажмите запустить Apache + + + +### Проверка работы Apache[¶](#check-the-apache-installation "Ссылка на этот заголовок") + + + +В браузере откройте <http://localhost/>. Вы должны увидеть пустую страницу и текст “It works!”. + + + +Установка PHP[¶](#php-installation "Ссылка на этот заголовок") +-------------------------------------------------------------- + + + +1. Скачайте последнюю стабильную версию PHP с [официального сайта PHP](http://windows.php.net/download/), выберите версию **Thread Safe** и используйте соответствующую разрядность: x86 or x64. + + + +2. Разархивируйте файлы в `C:\php` + + + +3. Перейдите в каталог PHP (`C:\php`) и переименуйе файл `php.ini-production` в `php.ini` + + + +Отредактируйте `php.ini`: + + + +Раскоментируйте директорию расширений: + + + + extension_dir = "C:/php/ext" + + + +Раскоментируйте следующие модули PHP: + + + + extension=php_gd2.dll + + extension=php_ldap.dll + + extension=php_mbstring.dll + + extension=php_openssl.dll + + extension=php_pdo_sqlite.dll + + + +Установите часовой пояс: + + + + date.timezone = America/Montreal + + + +Список всех поддерживаемых часовых поясов можно посмотреть в [документации PHP](http://php.net/manual/en/timezones.america.php). + + + +Загрузка модулей PHP для Apache: + + + +Добавьте следующие строки конфигурации в файл `C:\Apache24\conf\httpd.conf`: + + + + LoadModule php5_module "c:/php/php5apache2_4.dll" + + AddHandler application/x-httpd-php .php + + + + # configure the path to php.ini + + PHPIniDir "C:/php" + + + + # change this directive + + DirectoryIndex index.php index.html + + + +Перезапустите Apache. + + + +Проверка работы PHP: + + + +Создайте файл `phpinfo.php` в каталоге `C:\Apache24\htdocs`: + + + + <?php + + + + phpinfo(); + + + + ?> + + + +Откройте в браузере [http://localhost/phpinfo.php](http://localhost/phpinfo.php) и вы должны увидеть информацию о PHP. + + + +Устновка Канборд[¶](#kanboard-installation "Ссылка на этот заголовок") +---------------------------------------------------------------------- + + + +- [Скачайте zip файл](https://kanboard.net/downloads) + + + +- Разархивируйте архив в `C:\Apache24\htdocs\kanboard` + + + +- Откройте в браузере <http://localhost/kanboard/>. Ура. Теперь вы можете работать в Канборд. Все легко и просто. + + + +- Учетная запись и пароль по умолчанию - **admin/admin** + + + +Протестировано на[¶](#tested-configuration "Ссылка на этот заголовок") +---------------------------------------------------------------------- + + + +- Windows 2008 R2 / Apache 2.4.12 / PHP 5.6.8 + + + +Примечание[¶](#notes "Ссылка на этот заголовок") +------------------------------------------------ + + + +- Некоторые функции Канборда требуют выполнять [запуск ежедневных фоновых задач](cronjob.markdown). + + + + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/ru_RU/windows-iis-installation.markdown b/doc/ru_RU/windows-iis-installation.markdown new file mode 100644 index 00000000..0aabca6a --- /dev/null +++ b/doc/ru_RU/windows-iis-installation.markdown @@ -0,0 +1,150 @@ +Инсталяция Kanboard на Windows 2008/2012 с IIS +============================================== + + + +Это пошаговое руководство поможет вам установить Канборд на Windows Server с IIS и PHP. + + + +Установка PHP[¶](#php-installation "Ссылка на этот заголовок") +-------------------------------------------------------------- + + + +- Установите IIS на ваш Windows сервер (Добавьте новую роль и не забудьте включить CGI/FastCGI) + + + +- При инсталяции PHP можете использовать следующую официальную документацию: + + + + - [Microsoft IIS 5.1 and IIS 6.0](http://php.net/manual/en/install.windows.iis6.php) + + - [Microsoft IIS 7.0 and later](http://php.net/manual/en/install.windows.iis7.php) + + - [PHP for Windows is available here](http://windows.php.net/download/) + + + +Отредактируйте `php.ini`, раскоментируйте эти PHP модули: + + + + extension=php_gd2.dll + + extension=php_ldap.dll + + extension=php_mbstring.dll + + extension=php_openssl.dll + + extension=php_pdo_sqlite.dll + + + +Установите часовой пояс + + + + date.timezone = America/Montreal + + + +Список поддерживаемых часовых поясов можно посмотреть в [документации PHP](http://php.net/manual/en/timezones.america.php). + + + +Проверьте, что PHP работает корректно: + + + +Перейдите в корневой каталог IIS `C:\inetpub\wwwroot` и создайте файл `phpinfo.php`, со следующим содержимым: + + + + <?php + + + + phpinfo(); + + + + ?> + + + +В браузере откройте страницу `http://localhost/phpinfo.php` и вы должны увидеть текущие настройки PHP. Если вы видите ошибку 500, значит что-то сделано неправильно при установке. + + + +Примечание: + + + +- Если вы используете PHP \< 5.4, то необходимо включить короткие теги (short tags) в php.ini + + + +- Не забудьте включить необходимые php расширения, упомянутые выше + + + +- Если вы наблюдаете ошибку “the library MSVCP110.dll is missing”, то возможно вам нужно скачать распространяемый пакет Visual C++ для Visual Studio с сайта Microsoft. + + + +Установка Канборд[¶](#kanboard-installation "Ссылка на этот заголовок") +----------------------------------------------------------------------- + + + +- Скачайте zip файл + + + +- Распакуйте архив в `C:\inetpub\wwwroot\kanboard` (например) + + + +- Убедитесь, что у пользователя вебсервера IIS имеется доступ на запись на директорию `data` + + + +- Откройте веб браузер и используйте Kanboard <http://localhost/kanboard/> + + + +- Пользователь и пароль по умолчанию - **admin/admin** + + + +Работа Канборд тестировалось на[¶](#tested-configurations "Ссылка на этот заголовок") +------------------------------------------------------------------------------------- + + + +- Windows 2008 R2 Standard Edition / IIS 7.5 / PHP 5.5.16 + +- Windows 2012 Standard Edition / IIS 8.5 / PHP 5.3.29 + + + +Примечание[¶](#notes "Ссылка на этот заголовок") +------------------------------------------------ + + + +- Некоторые возможности Канборда требуют [запуск выполнения ежедневных фоновых задач](cronjob.markdown). + + + + + + + + +[Русская документация Kanboard](http://kanboard.ru/doc/) + diff --git a/doc/screenshots/project-remove.png b/doc/screenshots/project-remove.png Binary files differnew file mode 100644 index 00000000..d1c33cc1 --- /dev/null +++ b/doc/screenshots/project-remove.png diff --git a/doc/screenshots/tags-board.png b/doc/screenshots/tags-board.png Binary files differnew file mode 100644 index 00000000..1a7f710d --- /dev/null +++ b/doc/screenshots/tags-board.png diff --git a/doc/screenshots/tags-global.png b/doc/screenshots/tags-global.png Binary files differnew file mode 100644 index 00000000..f5059ae8 --- /dev/null +++ b/doc/screenshots/tags-global.png diff --git a/doc/screenshots/tags-projects.png b/doc/screenshots/tags-projects.png Binary files differnew file mode 100644 index 00000000..2e08ce90 --- /dev/null +++ b/doc/screenshots/tags-projects.png diff --git a/doc/screenshots/tags-search.png b/doc/screenshots/tags-search.png Binary files differnew file mode 100644 index 00000000..eab1ad80 --- /dev/null +++ b/doc/screenshots/tags-search.png diff --git a/doc/screenshots/tags-task.png b/doc/screenshots/tags-task.png Binary files differnew file mode 100644 index 00000000..c9c8b2f7 --- /dev/null +++ b/doc/screenshots/tags-task.png diff --git a/doc/screenshots/task-creation-board.png b/doc/screenshots/task-creation-board.png Binary files differnew file mode 100644 index 00000000..456dff0b --- /dev/null +++ b/doc/screenshots/task-creation-board.png diff --git a/doc/screenshots/task-creation-form.png b/doc/screenshots/task-creation-form.png Binary files differnew file mode 100644 index 00000000..d1e5d24e --- /dev/null +++ b/doc/screenshots/task-creation-form.png diff --git a/doc/search.markdown b/doc/search.markdown index 37bb8625..ab8e0b5a 100644 --- a/doc/search.markdown +++ b/doc/search.markdown @@ -152,6 +152,12 @@ Attribute: **comment** - Find comments that contains this title: `comment:"My comment message"` +### Search by tags + +Attribute: **tag** + +- Example: `tag:"My tag"` + Activity stream search ---------------------- diff --git a/doc/tags.markdown b/doc/tags.markdown new file mode 100644 index 00000000..26b3169d --- /dev/null +++ b/doc/tags.markdown @@ -0,0 +1,28 @@ +Tags +==== + +With Kanboard, you can associate one or many tags to a task. +You can define tags globally for all projects or only for a specific project. + +![Tags on the board](screenshots/tags-board.png) + +From the task form, you can enter the desired tags: + +![Tags form](screenshots/tags-task.png) + +The auto-completion form will show up to suggest available tags. + +You can also create tags directly from the task form. +By default, when you create tags from a task form they are associated to the current project: + +![Project Tags](screenshots/tags-projects.png) + +All tags can be managed in the project settings. + +To define tags globally for all projects, go to the application settings: + +![Global Tags](screenshots/tags-global.png) + +To search tasks based on tags, just use the attribute "tag": + +![Search Tags](screenshots/tags-search.png) diff --git a/doc/tests.markdown b/doc/tests.markdown index b2d95491..59177f87 100644 --- a/doc/tests.markdown +++ b/doc/tests.markdown @@ -9,9 +9,11 @@ Requirements ------------ - Linux/Unix machine -- PHP cli +- PHP - PHPUnit installed - Mysql and Postgresql (optional) +- Selenium (optional) +- Firefox (optional) Unit Tests ---------- @@ -83,39 +85,59 @@ From your Kanboard directory, run the command `phpunit -c tests/units.postgres.x Integration Tests ----------------- -Actually only the API calls are tested. +Integration tests are mainly used to test the API. +The test suites are making real HTTP calls to the application that run inside a container. -Real HTTP calls are made with those tests. -So a local instance of Kanboard is necessary and must listen on `http://localhost:8000/`. +### Requirements -All data will be removed/altered by the test suite. -Moreover the script will reset and set a new API key. +- PHP +- Composer +- Unix operating system (Mac OS or Linux) +- Docker +- Docker Compose -1. Start a local instance of Kanboard `php -S 127.0.0.1:8000` -2. Run the test suite from another terminal +### Running integration tests -The same method as above is used to run tests across different databases: +Integration tests are using Docker containers. +There are 3 different environment available to run tests against each supported database. -- Sqlite: `phpunit -c tests/integration.sqlite.xml` -- Mysql: `phpunit -c tests/integration.mysql.xml` -- Postgresql: `phpunit -c tests/integration.postgres.xml` +You can use these commands to run each test suite: + +```bash +# Run tests with Sqlite +make integration-test-sqlite + +# Run tests with Mysql +make integration-test-mysql + +# Run tests with Postgres +make integration-test-postgres +``` + +Acceptance Tests +---------------- + +Acceptance tests (also sometimes known as end-to-end tests, and functional tests) test the actual functionality of the UI in a browser using Selenium. + +In order to run these tests you must have [Selenium Standalone Server](http://www.seleniumhq.org/download/) installed, and a compatible version of Firefox. + +The PHPUnit config file is `tests/acceptance.xml`. +With Selenium and the Kanboard app running, from your Kanboard directory, run the command `make test-browser`. This will initiate the testing suite and you will see Firefox open automatically and perform the actions specified in the acceptance tests. Example: ```bash -phpunit -c tests/integration.sqlite.xml +$ make test-browser +PHPUnit 4.8.26 by Sebastian Bergmann and contributors. -PHPUnit 5.0.0 by Sebastian Bergmann and contributors. - -............................................................... 63 / 135 ( 46%) -............................................................... 126 / 135 ( 93%) -......... 135 / 135 (100%) +.. -Time: 1.18 minutes, Memory: 14.75Mb +Time: 5.59 seconds, Memory: 5.25MB -OK (135 tests, 526 assertions) +OK (2 tests, 5 assertions) ``` + Continuous Integration with Travis-CI ------------------------------------- diff --git a/doc/update.markdown b/doc/update.markdown index 44f81ff0..4aa59fff 100644 --- a/doc/update.markdown +++ b/doc/update.markdown @@ -10,7 +10,7 @@ Important things to do before updating - **Always make a backup of your data before upgrading** - Check that your backup is valid -- Always read the [change log](https://github.com/fguillot/kanboard/blob/master/ChangeLog) to check for breaking changes +- Always read the [change log](https://github.com/kanboard/kanboard/blob/master/ChangeLog) to check for breaking changes - Always close all user sessions (flush all sessions on the server) From the archive (stable version) diff --git a/doc/web.config b/doc/web.config new file mode 100644 index 00000000..1461fe2d --- /dev/null +++ b/doc/web.config @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<configuration> + <system.webServer> + <defaultDocument> + <files> + <clear /> + <add value="index.php" /> + </files> + </defaultDocument> + <rewrite> + <rules> + <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> + <action type="Rewrite" url="index.php" appendQueryString="true" /> + </rule> + </rules> + </rewrite> + </system.webServer> +</configuration> diff --git a/doc/webhooks.markdown b/doc/webhooks.markdown index 628c7e38..e43ab9ce 100644 --- a/doc/webhooks.markdown +++ b/doc/webhooks.markdown @@ -1,5 +1,5 @@ -Web Hooks -========= +Webhooks +======== Webhooks are useful to perform actions with external applications. @@ -21,6 +21,7 @@ All internal events of Kanboard can be sent to an external URL. - comment.create - comment.update +- comment.delete - file.create - task.move.project - task.move.column @@ -33,6 +34,9 @@ All internal events of Kanboard can be sent to an external URL. - task.assignee_change - subtask.update - subtask.create +- subtask.delete +- task_internal_link.create_update +- task_internal_link.delete ### Example of HTTP request @@ -43,19 +47,65 @@ Content-Type: application/json Connection: close { - "event_name": "task.move.column", - "event_data": { - "task_id": "1", - "project_id": "1", - "position": 1, - "column_id": "1", - "swimlane_id": "0", - "src_column_id": "2", - "dst_column_id": "1", - "date_moved": "1431991532", - "recurrence_status": "0", - "recurrence_trigger": "0" - } + "event_name": "task.move.column", + "event_data": { + "task_id": "4", + "task": { + "id": "4", + "reference": "", + "title": "My task", + "description": "", + "date_creation": "1469314356", + "date_completed": null, + "date_modification": "1469315422", + "date_due": "1469491200", + "date_started": "0", + "time_estimated": "0", + "time_spent": "0", + "color_id": "green", + "project_id": "1", + "column_id": "1", + "owner_id": "1", + "creator_id": "1", + "position": "1", + "is_active": "1", + "score": "0", + "category_id": "0", + "priority": "0", + "swimlane_id": "0", + "date_moved": "1469315422", + "recurrence_status": "0", + "recurrence_trigger": "0", + "recurrence_factor": "0", + "recurrence_timeframe": "0", + "recurrence_basedate": "0", + "recurrence_parent": null, + "recurrence_child": null, + "category_name": null, + "swimlane_name": null, + "project_name": "Demo Project", + "default_swimlane": "Default swimlane", + "column_title": "Backlog", + "assignee_username": "admin", + "assignee_name": null, + "creator_username": "admin", + "creator_name": null + }, + "changes": { + "src_column_id": "2", + "dst_column_id": "1", + "date_moved": "1469315398" + }, + "project_id": "1", + "position": 1, + "column_id": "1", + "swimlane_id": "0", + "src_column_id": "2", + "dst_column_id": "1", + "date_moved": "1469315398", + "recurrence_status": "0", + "recurrence_trigger": "0" + } } ``` @@ -80,26 +130,51 @@ Task creation: ```json { - "event_name": "task.create", - "event_data": { - "title": "Demo", - "description": "", - "project_id": "1", - "owner_id": "1", - "category_id": 0, - "swimlane_id": 0, - "column_id": "2", - "color_id": "yellow", - "score": 0, - "time_estimated": 0, - "date_due": 0, - "creator_id": 1, - "date_creation": 1431991532, - "date_modification": 1431991532, - "date_moved": 1431991532, - "position": 1, - "task_id": 1 - } + "event_name": "task.create", + "event_data": { + "task_id": 5, + "task": { + "id": "5", + "reference": "", + "title": "My new task", + "description": "", + "date_creation": "1469315481", + "date_completed": null, + "date_modification": "1469315481", + "date_due": "0", + "date_started": "0", + "time_estimated": "0", + "time_spent": "0", + "color_id": "orange", + "project_id": "1", + "column_id": "2", + "owner_id": "1", + "creator_id": "1", + "position": "1", + "is_active": "1", + "score": "3", + "category_id": "0", + "priority": "2", + "swimlane_id": "0", + "date_moved": "1469315481", + "recurrence_status": "0", + "recurrence_trigger": "0", + "recurrence_factor": "0", + "recurrence_timeframe": "0", + "recurrence_basedate": "0", + "recurrence_parent": null, + "recurrence_child": null, + "category_name": null, + "swimlane_name": null, + "project_name": "Demo Project", + "default_swimlane": "Default swimlane", + "column_title": "Ready", + "assignee_username": "admin", + "assignee_name": null, + "creator_username": "admin", + "creator_name": null + } + } } ``` @@ -107,113 +182,121 @@ Task modification: ```json { - "event_name": "task.update", - "event_data": { - "id": "1", - "title": "Demo", - "description": "", - "date_creation": "1431991532", - "color_id": "yellow", - "project_id": "1", - "column_id": "1", - "owner_id": "1", - "position": "1", - "is_active": "1", - "date_completed": null, - "score": "0", - "date_due": "0", - "category_id": "2", - "creator_id": "1", - "date_modification": 1431991603, - "reference": "", - "date_started": 1431993600, - "time_spent": 0, - "time_estimated": 0, - "swimlane_id": "0", - "date_moved": "1431991572", - "recurrence_status": "0", - "recurrence_trigger": "0", - "recurrence_factor": "0", - "recurrence_timeframe": "0", - "recurrence_basedate": "0", - "recurrence_parent": null, - "recurrence_child": null, - "task_id": "1", - "changes": { - "category_id": "2" + "event_name": "task.update", + "event_data": { + "task_id": "5", + "task": { + "id": "5", + "reference": "", + "title": "My new task", + "description": "New description", + "date_creation": "1469315481", + "date_completed": null, + "date_modification": "1469315531", + "date_due": "1469836800", + "date_started": "0", + "time_estimated": "0", + "time_spent": "0", + "color_id": "purple", + "project_id": "1", + "column_id": "2", + "owner_id": "1", + "creator_id": "1", + "position": "1", + "is_active": "1", + "score": "3", + "category_id": "0", + "priority": "2", + "swimlane_id": "0", + "date_moved": "1469315481", + "recurrence_status": "0", + "recurrence_trigger": "0", + "recurrence_factor": "0", + "recurrence_timeframe": "0", + "recurrence_basedate": "0", + "recurrence_parent": null, + "recurrence_child": null, + "category_name": null, + "swimlane_name": null, + "project_name": "Demo Project", + "default_swimlane": "Default swimlane", + "column_title": "Ready", + "assignee_username": "admin", + "assignee_name": null, + "creator_username": "admin", + "creator_name": null + }, + "changes": { + "description": "New description", + "color_id": "purple", + "date_due": 1469836800 + } } - } } ``` Task update events have a field called `changes` that contains updated values. -Move a task to another column: - -```json -{ - "event_name": "task.move.column", - "event_data": { - "task_id": "1", - "project_id": "1", - "position": 1, - "column_id": "1", - "swimlane_id": "0", - "src_column_id": "2", - "dst_column_id": "1", - "date_moved": "1431991532", - "recurrence_status": "0", - "recurrence_trigger": "0" - } -} -``` - -Move a task to another position: - -```json -{ - "event_name": "task.move.position", - "event_data": { - "task_id": "2", - "project_id": "1", - "position": 1, - "column_id": "1", - "swimlane_id": "0", - "src_column_id": "1", - "dst_column_id": "1", - "date_moved": "1431996905", - "recurrence_status": "0", - "recurrence_trigger": "0" - } -} -``` - Comment creation: ```json { - "event_name": "comment.create", - "event_data": { - "id": 1, - "task_id": "1", - "user_id": "1", - "comment": "test", - "date_creation": 1431991615 - } -} -``` - -Comment modification: - -``` -{ - "event_name": "comment.update", - "event_data": { - "id": "1", - "task_id": "1", - "user_id": "1", - "comment": "test edit" - } + "event_name": "comment.create", + "event_data": { + "comment": { + "id": "1", + "task_id": "5", + "user_id": "1", + "date_creation": "1469315727", + "comment": "My comment.", + "reference": null, + "username": "admin", + "name": null, + "email": null, + "avatar_path": null + }, + "task": { + "id": "5", + "reference": "", + "title": "My new task", + "description": "New description", + "date_creation": "1469315481", + "date_completed": null, + "date_modification": "1469315531", + "date_due": "1469836800", + "date_started": "0", + "time_estimated": "0", + "time_spent": "0", + "color_id": "purple", + "project_id": "1", + "column_id": "2", + "owner_id": "1", + "creator_id": "1", + "position": "1", + "is_active": "1", + "score": "3", + "category_id": "0", + "priority": "2", + "swimlane_id": "0", + "date_moved": "1469315481", + "recurrence_status": "0", + "recurrence_trigger": "0", + "recurrence_factor": "0", + "recurrence_timeframe": "0", + "recurrence_basedate": "0", + "recurrence_parent": null, + "recurrence_child": null, + "category_name": null, + "swimlane_name": null, + "project_name": "Demo Project", + "default_swimlane": "Default swimlane", + "column_title": "Ready", + "assignee_username": "admin", + "assignee_name": null, + "creator_username": "admin", + "creator_name": null + } + } } ``` @@ -221,28 +304,65 @@ Subtask creation: ```json { - "event_name": "subtask.create", - "event_data": { - "id": 3, - "task_id": "1", - "title": "Test", - "user_id": "1", - "time_estimated": "2", - "position": 3 - } -} -``` - -Subtask modification: - -```json -{ - "event_name": "subtask.update", - "event_data": { - "id": "1", - "status": 1, - "task_id": "1" - } + "event_name": "subtask.create", + "event_data": { + "subtask": { + "id": "1", + "title": "My subtask", + "status": "0", + "time_estimated": "0", + "time_spent": "0", + "task_id": "5", + "user_id": "1", + "position": "1", + "username": "admin", + "name": null, + "timer_start_date": 0, + "status_name": "Todo", + "is_timer_started": false + }, + "task": { + "id": "5", + "reference": "", + "title": "My new task", + "description": "New description", + "date_creation": "1469315481", + "date_completed": null, + "date_modification": "1469315531", + "date_due": "1469836800", + "date_started": "0", + "time_estimated": "0", + "time_spent": "0", + "color_id": "purple", + "project_id": "1", + "column_id": "2", + "owner_id": "1", + "creator_id": "1", + "position": "1", + "is_active": "1", + "score": "3", + "category_id": "0", + "priority": "2", + "swimlane_id": "0", + "date_moved": "1469315481", + "recurrence_status": "0", + "recurrence_trigger": "0", + "recurrence_factor": "0", + "recurrence_timeframe": "0", + "recurrence_basedate": "0", + "recurrence_parent": null, + "recurrence_child": null, + "category_name": null, + "swimlane_name": null, + "project_name": "Demo Project", + "default_swimlane": "Default swimlane", + "column_title": "Ready", + "assignee_username": "admin", + "assignee_name": null, + "creator_username": "admin", + "creator_name": null + } + } } ``` @@ -250,22 +370,118 @@ File upload: ```json { - "event_name": "file.create", - "event_data": { - "task_id": "1", - "name": "test.png" - } + "event_name": "task.file.create", + "event_data": { + "file": { + "id": "1", + "name": "kanboard-latest.zip", + "path": "tasks/5/6f32893e467e76671965b1ec58c06a2440823752", + "is_image": "0", + "task_id": "5", + "date": "1469315613", + "user_id": "1", + "size": "4907308" + }, + "task": { + "id": "5", + "reference": "", + "title": "My new task", + "description": "New description", + "date_creation": "1469315481", + "date_completed": null, + "date_modification": "1469315531", + "date_due": "1469836800", + "date_started": "0", + "time_estimated": "0", + "time_spent": "0", + "color_id": "purple", + "project_id": "1", + "column_id": "2", + "owner_id": "1", + "creator_id": "1", + "position": "1", + "is_active": "1", + "score": "3", + "category_id": "0", + "priority": "2", + "swimlane_id": "0", + "date_moved": "1469315481", + "recurrence_status": "0", + "recurrence_trigger": "0", + "recurrence_factor": "0", + "recurrence_timeframe": "0", + "recurrence_basedate": "0", + "recurrence_parent": null, + "recurrence_child": null, + "category_name": null, + "swimlane_name": null, + "project_name": "Demo Project", + "default_swimlane": "Default swimlane", + "column_title": "Ready", + "assignee_username": "admin", + "assignee_name": null, + "creator_username": "admin", + "creator_name": null + } + } } ``` -Screenshot created: +Task link creation: ```json { - "event_name": "file.create", - "event_data": { - "task_id": "2", - "name": "Screenshot taken May 19, 2015 at 10:56 AM" - } + "event_name": "task_internal_link.create_update", + "event_data": { + "task_link": { + "id": "2", + "opposite_task_id": "5", + "task_id": "4", + "link_id": "3", + "label": "is blocked by", + "opposite_link_id": "2" + }, + "task": { + "id": "4", + "reference": "", + "title": "My task", + "description": "", + "date_creation": "1469314356", + "date_completed": null, + "date_modification": "1469315422", + "date_due": "1469491200", + "date_started": "0", + "time_estimated": "0", + "time_spent": "0", + "color_id": "green", + "project_id": "1", + "column_id": "1", + "owner_id": "1", + "creator_id": "1", + "position": "1", + "is_active": "1", + "score": "0", + "category_id": "0", + "priority": "0", + "swimlane_id": "0", + "date_moved": "1469315422", + "recurrence_status": "0", + "recurrence_trigger": "0", + "recurrence_factor": "0", + "recurrence_timeframe": "0", + "recurrence_basedate": "0", + "recurrence_parent": null, + "recurrence_child": null, + "category_name": null, + "swimlane_name": null, + "project_name": "Demo Project", + "default_swimlane": "Default swimlane", + "column_title": "Backlog", + "assignee_username": "admin", + "assignee_name": null, + "creator_username": "admin", + "creator_name": null + } + } } ``` diff --git a/doc/windows-iis-installation.markdown b/doc/windows-iis-installation.markdown index bd4607de..26ce178f 100644 --- a/doc/windows-iis-installation.markdown +++ b/doc/windows-iis-installation.markdown @@ -12,7 +12,10 @@ PHP installation - [Microsoft IIS 7.0 and later](http://php.net/manual/en/install.windows.iis7.php) - [PHP for Windows is available here](http://windows.php.net/download/) -Edit the `php.ini`, uncomment these PHP modules: + +### PHP.ini + +You need at least, these extensions in your `php.ini`: ```ini extension=php_gd2.dll @@ -22,7 +25,9 @@ extension=php_openssl.dll extension=php_pdo_sqlite.dll ``` -Set the time zone: +The complete list of required PHP extensions is available on the [requirements page](requirements.markdown) + +Do not forget to set the time zone: ```ini date.timezone = America/Montreal @@ -30,27 +35,21 @@ date.timezone = America/Montreal The list of supported time zones can be found in the [PHP documentation](http://php.net/manual/en/timezones.america.php). -Check if PHP runs correctly: - -Go the IIS document root `C:\inetpub\wwwroot` and create a file `phpinfo.php`: - -```php -<?php - -phpinfo(); - -?> -``` - -Open a browser at `http://localhost/phpinfo.php` and you should see the current PHP settings. -If you got an error 500, something is not correctly done in your installation. - Notes: - If you use PHP < 5.4, you have to enable the short tags in your php.ini - Don't forget to enable the required php extensions mentioned above - If you got an error about "the library MSVCP110.dll is missing", you probably need to download the Visual C++ Redistributable for Visual Studio from the Microsoft website. +IIS Modules +----------- + +The Kanboard archive contains a `web.config` file to enable [URL rewriting](nice-urls.markdown). +This configuration require the [Rewrite module for IIS](http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module). + +If you don't have the rewrite module, you will get an internal server error (500) from IIS. +If you don't want to have Kanboard with nice URLs, you can remove the file `web.config`. + Kanboard installation --------------------- @@ -59,12 +58,7 @@ Kanboard installation - Make sure the directory `data` is writable by the IIS user - Open your web browser to use Kanboard http://localhost/kanboard/ - The default credentials are **admin/admin** - -Tested configurations ---------------------- - -- Windows 2008 R2 Standard Edition / IIS 7.5 / PHP 5.5.16 -- Windows 2012 Standard Edition / IIS 8.5 / PHP 5.3.29 +- [URL rewrite configuration](nice-urls.markdown) Notes ----- |