summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-01-07 21:05:23 -0500
committerFrederic Guillot <fred@kanboard.net>2016-01-07 21:05:23 -0500
commit7864685cfdb64d2ef6497a445f0d8ed96762e4bf (patch)
treefde3834717d4a435c48dba07885529fdffbe7eb3
parent54b3cfe8a14e99ab2372fc5095facc3a2259f077 (diff)
Move Gitlab webhook to an external plugin
-rw-r--r--ChangeLog1
-rw-r--r--app/Action/CommentCreation.php7
-rw-r--r--app/Action/TaskClose.php6
-rw-r--r--app/Action/TaskCreation.php6
-rw-r--r--app/Action/TaskOpen.php6
-rw-r--r--app/Controller/Webhook.php15
-rw-r--r--app/Core/Base.php1
-rw-r--r--app/Core/Event/EventManager.php6
-rw-r--r--app/Integration/GitlabWebhook.php298
-rw-r--r--app/Locale/bs_BA/translations.php10
-rw-r--r--app/Locale/cs_CZ/translations.php10
-rw-r--r--app/Locale/da_DK/translations.php10
-rw-r--r--app/Locale/de_DE/translations.php10
-rw-r--r--app/Locale/es_ES/translations.php10
-rw-r--r--app/Locale/fi_FI/translations.php10
-rw-r--r--app/Locale/fr_FR/translations.php10
-rw-r--r--app/Locale/hu_HU/translations.php10
-rw-r--r--app/Locale/id_ID/translations.php10
-rw-r--r--app/Locale/it_IT/translations.php10
-rw-r--r--app/Locale/ja_JP/translations.php10
-rw-r--r--app/Locale/nb_NO/translations.php10
-rw-r--r--app/Locale/nl_NL/translations.php10
-rw-r--r--app/Locale/pl_PL/translations.php10
-rw-r--r--app/Locale/pt_BR/translations.php10
-rw-r--r--app/Locale/pt_PT/translations.php10
-rw-r--r--app/Locale/ru_RU/translations.php10
-rw-r--r--app/Locale/sr_Latn_RS/translations.php10
-rw-r--r--app/Locale/sv_SE/translations.php10
-rw-r--r--app/Locale/th_TH/translations.php10
-rw-r--r--app/Locale/tr_TR/translations.php10
-rw-r--r--app/Locale/zh_CN/translations.php10
-rw-r--r--app/ServiceProvider/ClassProvider.php3
-rw-r--r--app/Template/project/integrations.php12
-rw-r--r--doc/gitlab-webhooks.markdown70
-rw-r--r--doc/index.markdown1
-rw-r--r--tests/units/Integration/GitlabWebhookTest.php258
-rw-r--r--tests/units/fixtures/gitlab_comment_created.json46
-rw-r--r--tests/units/fixtures/gitlab_issue_closed.json25
-rw-r--r--tests/units/fixtures/gitlab_issue_opened.json25
-rw-r--r--tests/units/fixtures/gitlab_issue_reopened.json25
-rw-r--r--tests/units/fixtures/gitlab_push.json44
41 files changed, 33 insertions, 1042 deletions
diff --git a/ChangeLog b/ChangeLog
index de916e7d..887172ce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,7 @@ Breaking changes:
* Action name stored in the database is now the absolute class name
* Core functionalities moved to external plugins:
- Github Webhook: https://github.com/kanboard/plugin-github-webhook
+ - Gitlab Webhook: https://github.com/kanboard/plugin-gitlab-webhook
- Bitbucket Webhook: https://github.com/kanboard/plugin-bitbucket-webhook
New features:
diff --git a/app/Action/CommentCreation.php b/app/Action/CommentCreation.php
index e08ef47f..b91e39e2 100644
--- a/app/Action/CommentCreation.php
+++ b/app/Action/CommentCreation.php
@@ -2,8 +2,6 @@
namespace Kanboard\Action;
-use Kanboard\Integration\GitlabWebhook;
-
/**
* Create automatically a comment from a webhook
*
@@ -31,10 +29,7 @@ class CommentCreation extends Base
*/
public function getCompatibleEvents()
{
- return array(
- GitlabWebhook::EVENT_COMMIT,
- GitlabWebhook::EVENT_ISSUE_COMMENT,
- );
+ return array();
}
/**
diff --git a/app/Action/TaskClose.php b/app/Action/TaskClose.php
index 7f8af786..b8c5e175 100644
--- a/app/Action/TaskClose.php
+++ b/app/Action/TaskClose.php
@@ -2,7 +2,6 @@
namespace Kanboard\Action;
-use Kanboard\Integration\GitlabWebhook;
use Kanboard\Model\Task;
/**
@@ -32,10 +31,7 @@ class TaskClose extends Base
*/
public function getCompatibleEvents()
{
- return array(
- GitlabWebhook::EVENT_COMMIT,
- GitlabWebhook::EVENT_ISSUE_CLOSED,
- );
+ return array();
}
/**
diff --git a/app/Action/TaskCreation.php b/app/Action/TaskCreation.php
index 8daa6726..290c31e1 100644
--- a/app/Action/TaskCreation.php
+++ b/app/Action/TaskCreation.php
@@ -2,8 +2,6 @@
namespace Kanboard\Action;
-use Kanboard\Integration\GitlabWebhook;
-
/**
* Create automatically a task from a webhook
*
@@ -31,9 +29,7 @@ class TaskCreation extends Base
*/
public function getCompatibleEvents()
{
- return array(
- GitlabWebhook::EVENT_ISSUE_OPENED,
- );
+ return array();
}
/**
diff --git a/app/Action/TaskOpen.php b/app/Action/TaskOpen.php
index efbcb874..ec0f96f7 100644
--- a/app/Action/TaskOpen.php
+++ b/app/Action/TaskOpen.php
@@ -2,8 +2,6 @@
namespace Kanboard\Action;
-use Kanboard\Integration\GitlabWebhook;
-
/**
* Open automatically a task
*
@@ -31,9 +29,7 @@ class TaskOpen extends Base
*/
public function getCompatibleEvents()
{
- return array(
- GitlabWebhook::EVENT_ISSUE_REOPENED,
- );
+ return array();
}
/**
diff --git a/app/Controller/Webhook.php b/app/Controller/Webhook.php
index be8bf030..0eafe3e5 100644
--- a/app/Controller/Webhook.php
+++ b/app/Controller/Webhook.php
@@ -39,19 +39,4 @@ class Webhook extends Base
$this->response->text('FAILED');
}
-
- /**
- * Handle Gitlab webhooks
- *
- * @access public
- */
- public function gitlab()
- {
- $this->checkWebhookToken();
-
- $this->gitlabWebhook->setProjectId($this->request->getIntegerParam('project_id'));
- $result = $this->gitlabWebhook->parsePayload($this->request->getJson());
-
- echo $result ? 'PARSED' : 'IGNORED';
- }
}
diff --git a/app/Core/Base.php b/app/Core/Base.php
index bbc51c50..1eef3cf7 100644
--- a/app/Core/Base.php
+++ b/app/Core/Base.php
@@ -45,7 +45,6 @@ use Pimple\Container;
* @property \Kanboard\Core\Lexer $lexer
* @property \Kanboard\Core\Paginator $paginator
* @property \Kanboard\Core\Template $template
- * @property \Kanboard\Integration\GitlabWebhook $gitlabWebhook
* @property \Kanboard\Formatter\ProjectGanttFormatter $projectGanttFormatter
* @property \Kanboard\Formatter\TaskFilterGanttFormatter $taskFilterGanttFormatter
* @property \Kanboard\Formatter\TaskFilterAutoCompleteFormatter $taskFilterAutoCompleteFormatter
diff --git a/app/Core/Event/EventManager.php b/app/Core/Event/EventManager.php
index 34a70900..8d76bfcb 100644
--- a/app/Core/Event/EventManager.php
+++ b/app/Core/Event/EventManager.php
@@ -2,7 +2,6 @@
namespace Kanboard\Core\Event;
-use Kanboard\Integration\GitlabWebhook;
use Kanboard\Model\Task;
use Kanboard\Model\TaskLink;
@@ -53,11 +52,6 @@ class EventManager
Task::EVENT_CLOSE => t('Closing a task'),
Task::EVENT_CREATE_UPDATE => t('Task creation or modification'),
Task::EVENT_ASSIGNEE_CHANGE => t('Task assignee change'),
- GitlabWebhook::EVENT_COMMIT => t('Gitlab commit received'),
- GitlabWebhook::EVENT_ISSUE_OPENED => t('Gitlab issue opened'),
- GitlabWebhook::EVENT_ISSUE_REOPENED => t('Gitlab issue reopened'),
- GitlabWebhook::EVENT_ISSUE_CLOSED => t('Gitlab issue closed'),
- GitlabWebhook::EVENT_ISSUE_COMMENT => t('Gitlab issue comment created'),
);
$events = array_merge($events, $this->events);
diff --git a/app/Integration/GitlabWebhook.php b/app/Integration/GitlabWebhook.php
deleted file mode 100644
index 5e0aa59d..00000000
--- a/app/Integration/GitlabWebhook.php
+++ /dev/null
@@ -1,298 +0,0 @@
-<?php
-
-namespace Kanboard\Integration;
-
-use Kanboard\Event\GenericEvent;
-
-/**
- * Gitlab Webhook
- *
- * @package integration
- * @author Frederic Guillot
- */
-class GitlabWebhook extends \Kanboard\Core\Base
-{
- /**
- * Events
- *
- * @var string
- */
- const EVENT_ISSUE_OPENED = 'gitlab.webhook.issue.opened';
- const EVENT_ISSUE_CLOSED = 'gitlab.webhook.issue.closed';
- const EVENT_ISSUE_REOPENED = 'gitlab.webhook.issue.reopened';
- const EVENT_COMMIT = 'gitlab.webhook.commit';
- const EVENT_ISSUE_COMMENT = 'gitlab.webhook.issue.commented';
-
- /**
- * Supported webhook events
- *
- * @var string
- */
- const TYPE_PUSH = 'push';
- const TYPE_ISSUE = 'issue';
- const TYPE_COMMENT = 'comment';
-
- /**
- * Project id
- *
- * @access private
- * @var integer
- */
- private $project_id = 0;
-
- /**
- * Set the project id
- *
- * @access public
- * @param integer $project_id Project id
- */
- public function setProjectId($project_id)
- {
- $this->project_id = $project_id;
- }
-
- /**
- * Parse events
- *
- * @access public
- * @param array $payload Gitlab event
- * @return boolean
- */
- public function parsePayload(array $payload)
- {
- switch ($this->getType($payload)) {
- case self::TYPE_PUSH:
- return $this->handlePushEvent($payload);
- case self::TYPE_ISSUE;
- return $this->handleIssueEvent($payload);
- case self::TYPE_COMMENT;
- return $this->handleCommentEvent($payload);
- }
-
- return false;
- }
-
- /**
- * Get event type
- *
- * @access public
- * @param array $payload Gitlab event
- * @return string
- */
- public function getType(array $payload)
- {
- if (empty($payload['object_kind'])) {
- return '';
- }
-
- switch ($payload['object_kind']) {
- case 'issue':
- return self::TYPE_ISSUE;
- case 'note':
- return self::TYPE_COMMENT;
- case 'push':
- return self::TYPE_PUSH;
- default:
- return '';
- }
- }
-
- /**
- * Parse push event
- *
- * @access public
- * @param array $payload Gitlab event
- * @return boolean
- */
- public function handlePushEvent(array $payload)
- {
- foreach ($payload['commits'] as $commit) {
- $this->handleCommit($commit);
- }
-
- return true;
- }
-
- /**
- * Parse commit
- *
- * @access public
- * @param array $commit Gitlab commit
- * @return boolean
- */
- public function handleCommit(array $commit)
- {
- $task_id = $this->task->getTaskIdFromText($commit['message']);
-
- if (empty($task_id)) {
- return false;
- }
-
- $task = $this->taskFinder->getById($task_id);
-
- if (empty($task)) {
- return false;
- }
-
- if ($task['project_id'] != $this->project_id) {
- return false;
- }
-
- $this->container['dispatcher']->dispatch(
- self::EVENT_COMMIT,
- new GenericEvent(array(
- 'task_id' => $task_id,
- 'commit_message' => $commit['message'],
- 'commit_url' => $commit['url'],
- 'comment' => $commit['message']."\n\n[".t('Commit made by @%s on Gitlab', $commit['author']['name']).']('.$commit['url'].')'
- ) + $task)
- );
-
- return true;
- }
-
- /**
- * Parse issue event
- *
- * @access public
- * @param array $payload Gitlab event
- * @return boolean
- */
- public function handleIssueEvent(array $payload)
- {
- switch ($payload['object_attributes']['action']) {
- case 'open':
- return $this->handleIssueOpened($payload['object_attributes']);
- case 'close':
- return $this->handleIssueClosed($payload['object_attributes']);
- case 'reopen':
- return $this->handleIssueReopened($payload['object_attributes']);
- }
-
- return false;
- }
-
- /**
- * Handle new issues
- *
- * @access public
- * @param array $issue Issue data
- * @return boolean
- */
- public function handleIssueOpened(array $issue)
- {
- $event = array(
- 'project_id' => $this->project_id,
- 'reference' => $issue['id'],
- 'title' => $issue['title'],
- 'description' => $issue['description']."\n\n[".t('Gitlab Issue').']('.$issue['url'].')',
- );
-
- $this->container['dispatcher']->dispatch(
- self::EVENT_ISSUE_OPENED,
- new GenericEvent($event)
- );
-
- return true;
- }
-
- /**
- * Handle issue reopening
- *
- * @access public
- * @param array $issue Issue data
- * @return boolean
- */
- public function handleIssueReopened(array $issue)
- {
- $task = $this->taskFinder->getByReference($this->project_id, $issue['id']);
-
- if (! empty($task)) {
- $event = array(
- 'project_id' => $this->project_id,
- 'task_id' => $task['id'],
- 'reference' => $issue['id'],
- );
-
- $this->container['dispatcher']->dispatch(
- self::EVENT_ISSUE_REOPENED,
- new GenericEvent($event)
- );
-
- return true;
- }
-
- return false;
- }
-
-
- /**
- * Handle issue closing
- *
- * @access public
- * @param array $issue Issue data
- * @return boolean
- */
- public function handleIssueClosed(array $issue)
- {
- $task = $this->taskFinder->getByReference($this->project_id, $issue['id']);
-
- if (! empty($task)) {
- $event = array(
- 'project_id' => $this->project_id,
- 'task_id' => $task['id'],
- 'reference' => $issue['id'],
- );
-
- $this->container['dispatcher']->dispatch(
- self::EVENT_ISSUE_CLOSED,
- new GenericEvent($event)
- );
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Parse comment issue events
- *
- * @access public
- * @param array $payload Event data
- * @return boolean
- */
- public function handleCommentEvent(array $payload)
- {
- if (! isset($payload['issue'])) {
- return false;
- }
-
- $task = $this->taskFinder->getByReference($this->project_id, $payload['issue']['id']);
-
- if (! empty($task)) {
- $user = $this->user->getByUsername($payload['user']['username']);
-
- if (! empty($user) && ! $this->projectPermission->isAssignable($this->project_id, $user['id'])) {
- $user = array();
- }
-
- $event = array(
- 'project_id' => $this->project_id,
- 'reference' => $payload['object_attributes']['id'],
- 'comment' => $payload['object_attributes']['note']."\n\n[".t('By @%s on Gitlab', $payload['user']['username']).']('.$payload['object_attributes']['url'].')',
- 'user_id' => ! empty($user) ? $user['id'] : 0,
- 'task_id' => $task['id'],
- );
-
- $this->container['dispatcher']->dispatch(
- self::EVENT_ISSUE_COMMENT,
- new GenericEvent($event)
- );
-
- return true;
- }
-
- return false;
- }
-}
diff --git a/app/Locale/bs_BA/translations.php b/app/Locale/bs_BA/translations.php
index 50b17c1b..777810cd 100644
--- a/app/Locale/bs_BA/translations.php
+++ b/app/Locale/bs_BA/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Swimline traka je uspješno kreirana.',
'Example: "Bug, Feature Request, Improvement"' => 'Npr: "Greška, Zahtjev za izmjenama, Poboljšanje"',
'Default categories for new projects (Comma-separated)' => 'Podrazumijevane kategorije za novi projekat',
- 'Gitlab commit received' => 'Gitlab: commit dobijen',
- 'Gitlab issue opened' => 'Gitlab: problem otvoren',
- 'Gitlab issue closed' => 'Gitlab: problem zatvoren',
- 'Gitlab webhooks' => 'Gitlab webhooks',
- 'Help on Gitlab webhooks' => 'Pomoc na Gitlab webhooks',
'Integrations' => 'Integracije',
'Integration with third-party services' => 'Integracija sa uslugama vanjskih servisa',
- 'Gitlab Issue' => 'Gitlab problemi',
'Subtask Id' => 'ID pod-zadatka',
'Subtasks' => 'Pod-zadaci',
'Subtasks Export' => 'Izvoz pod-zadataka',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Vanjski korisnik',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Vanjski korisnik ne čuva šifru u Kanboard bazi, npr: LDAP, Google i Github korisnički računi.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Ako ste označili kvadratić "Zabrani prijavnu formu", unos pristupnih podataka u prijavnoj formi će biti ignorisan.',
- 'By @%s on Gitlab' => 'Od @%s s Gitlab-om',
- 'Gitlab issue comment created' => 'Gitlab: dodan komentar za problem',
'New remote user' => 'Novi vanjski korisnik',
'New local user' => 'Novi lokalni korisnik',
'Default task color' => 'Podrazumijevana boja zadatka',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/cs_CZ/translations.php b/app/Locale/cs_CZ/translations.php
index 8baba251..70ea873b 100644
--- a/app/Locale/cs_CZ/translations.php
+++ b/app/Locale/cs_CZ/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Die Swimlane wurde erfolgreich angelegt.',
'Example: "Bug, Feature Request, Improvement"' => 'Beispiel: "Bug, Funktionswünsche, Verbesserung"',
'Default categories for new projects (Comma-separated)' => 'Výchozí kategorie pro nové projekty (oddělené čárkou)',
- 'Gitlab commit received' => 'Gitlab commit erhalten',
- 'Gitlab issue opened' => 'Gitlab Fehler eröffnet',
- 'Gitlab issue closed' => 'Gitlab Fehler geschlossen',
- 'Gitlab webhooks' => 'Gitlab Webhook',
- 'Help on Gitlab webhooks' => 'Hilfe für Gitlab Webhooks',
'Integrations' => 'Integrace',
'Integration with third-party services' => 'Integration von Fremdleistungen',
- 'Gitlab Issue' => 'Gitlab Fehler',
'Subtask Id' => 'Dílčí úkol Id',
'Subtasks' => 'Dílčí úkoly',
'Subtasks Export' => 'Export dílčích úkolů',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Vzdálený uživatel',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Hesla vzdáleným uživatelům se neukládají do databáze Kanboard. Naříklad: LDAP, Google a Github účty.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Pokud zaškrtnete políčko "Zakázat přihlašovací formulář", budou pověření zadané do přihlašovacího formuláře ignorovány.',
- 'By @%s on Gitlab' => 'uživatelem @%s na Gitlab',
- 'Gitlab issue comment created' => 'Vytvořen komentář problému na Gitlab',
'New remote user' => 'Nový vzdálený uživatel',
'New local user' => 'Nový lokální uživatel',
'Default task color' => 'Výchozí barva úkolu',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/da_DK/translations.php b/app/Locale/da_DK/translations.php
index dd531abb..37504d66 100644
--- a/app/Locale/da_DK/translations.php
+++ b/app/Locale/da_DK/translations.php
@@ -543,14 +543,8 @@ return array(
// 'Your swimlane have been created successfully.' => '',
// 'Example: "Bug, Feature Request, Improvement"' => '',
// 'Default categories for new projects (Comma-separated)' => '',
- // 'Gitlab commit received' => '',
- // 'Gitlab issue opened' => '',
- // 'Gitlab issue closed' => '',
- // 'Gitlab webhooks' => '',
- // 'Help on Gitlab webhooks' => '',
// 'Integrations' => '',
// 'Integration with third-party services' => '',
- // 'Gitlab Issue' => '',
// 'Subtask Id' => '',
// 'Subtasks' => '',
// 'Subtasks Export' => '',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/de_DE/translations.php b/app/Locale/de_DE/translations.php
index 263e0421..69efb309 100644
--- a/app/Locale/de_DE/translations.php
+++ b/app/Locale/de_DE/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Die Swimlane wurde erfolgreich angelegt.',
'Example: "Bug, Feature Request, Improvement"' => 'Beispiel: "Bug, Funktionswünsche, Verbesserung"',
'Default categories for new projects (Comma-separated)' => 'Standard-Kategorien für neue Projekte (Komma-getrennt)',
- 'Gitlab commit received' => 'Gitlab-Commit erhalten',
- 'Gitlab issue opened' => 'Gitlab-Issue eröffnet',
- 'Gitlab issue closed' => 'Gitlab-Issue geschlossen',
- 'Gitlab webhooks' => 'Gitlab-Webhook',
- 'Help on Gitlab webhooks' => 'Hilfe für Gitlab-Webhooks',
'Integrations' => 'Integration',
'Integration with third-party services' => 'Integration von externen Diensten',
- 'Gitlab Issue' => 'Gitlab-Issue',
'Subtask Id' => 'Teilaufgaben-ID',
'Subtasks' => 'Teilaufgaben',
'Subtasks Export' => 'Export von Teilaufgaben',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Remote-Benutzer',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Remote-Benutzer haben kein Passwort in der Kanboard Datenbank, Beispiel LDAP, Goole und Github Accounts',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Wenn die Box "Verbiete Login-Formular" angeschaltet ist, werden Eingaben in das Login Formular ignoriert.',
- 'By @%s on Gitlab' => 'Durch @%s auf Gitlab',
- 'Gitlab issue comment created' => 'Gitlab Ticket Kommentar erstellt',
'New remote user' => 'Neuer Remote-Benutzer',
'New local user' => 'Neuer lokaler Benutzer',
'Default task color' => 'Voreingestellte Aufgabenfarbe',
@@ -1047,7 +1039,6 @@ return array(
'Project Manager' => 'Projekt Manager',
'Project Member' => 'Projekt Mitglied',
'Project Viewer' => 'Projekt Betrachter',
- 'Gitlab issue reopened' => 'Gitlab Thema wiedereröffnet',
'Your account is locked for %d minutes' => 'Ihr Zugang wurde für %d Minuten gesperrt',
'Invalid captcha' => 'Ungültiges Captcha',
'The name must be unique' => 'Der Name muss eindeutig sein',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/es_ES/translations.php b/app/Locale/es_ES/translations.php
index aa08e35c..e28e1757 100644
--- a/app/Locale/es_ES/translations.php
+++ b/app/Locale/es_ES/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Su calle ha sido creada correctamente',
'Example: "Bug, Feature Request, Improvement"' => 'Ejemplo: "Error, Solicitud de característica, Mejora',
'Default categories for new projects (Comma-separated)' => 'Categorías por defecto para nuevos proyectos (separadas por comas)',
- 'Gitlab commit received' => 'Recibido envío desde Gitlab',
- 'Gitlab issue opened' => 'Abierto asunto de Gitlab',
- 'Gitlab issue closed' => 'Cerrado asunto de Gitlab',
- 'Gitlab webhooks' => 'Disparadores Web (Webhooks) de Gitlab',
- 'Help on Gitlab webhooks' => 'Ayuda sobre Disparadores Web (Webhooks) de Gitlab',
'Integrations' => 'Integraciones',
'Integration with third-party services' => 'Integración con servicios de terceros',
- 'Gitlab Issue' => 'Asunto Gitlab',
'Subtask Id' => 'Id de Subtarea',
'Subtasks' => 'Subtareas',
'Subtasks Export' => 'Exportación de Subtareas',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Usuario remoto',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Los usuarios remotos no almacenan sus contraseñas en la base de datos Kanboard, por ejemplo: cuentas de LDAP, Google y Github',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Si marcas la caja de edición "Desactivar formulario de ingreso", se ignoran las credenciales entradas en el formulario de ingreso.',
- 'By @%s on Gitlab' => 'Por @%s en Gitlab',
- 'Gitlab issue comment created' => 'Creado comentario de asunto de Gitlab',
'New remote user' => 'Nuevo usuario remoto',
'New local user' => 'Nuevo usuario local',
'Default task color' => 'Color por defecto de tarea',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/fi_FI/translations.php b/app/Locale/fi_FI/translations.php
index e1a14749..76f312fd 100644
--- a/app/Locale/fi_FI/translations.php
+++ b/app/Locale/fi_FI/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Kaista luotu onnistuneesti.',
'Example: "Bug, Feature Request, Improvement"' => 'Esimerkiksi: "Bugit, Ominaisuuspyynnöt, Parannukset"',
'Default categories for new projects (Comma-separated)' => 'Oletuskategoriat uusille projekteille (pilkuin eroteltu)',
- // 'Gitlab commit received' => '',
- // 'Gitlab issue opened' => '',
- // 'Gitlab issue closed' => '',
- // 'Gitlab webhooks' => '',
- // 'Help on Gitlab webhooks' => '',
// 'Integrations' => '',
// 'Integration with third-party services' => '',
- // 'Gitlab Issue' => '',
// 'Subtask Id' => '',
// 'Subtasks' => '',
// 'Subtasks Export' => '',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/fr_FR/translations.php b/app/Locale/fr_FR/translations.php
index f974584f..f2e7dda2 100644
--- a/app/Locale/fr_FR/translations.php
+++ b/app/Locale/fr_FR/translations.php
@@ -545,14 +545,8 @@ return array(
'Your swimlane have been created successfully.' => 'Votre swimlane a été créée avec succès.',
'Example: "Bug, Feature Request, Improvement"' => 'Exemple: « Incident, Demande de fonctionnalité, Amélioration »',
'Default categories for new projects (Comma-separated)' => 'Catégories par défaut pour les nouveaux projets (séparation par des virgules)',
- 'Gitlab commit received' => 'Commit reçu via Gitlab',
- 'Gitlab issue opened' => 'Ouverture d\'un ticket sur Gitlab',
- 'Gitlab issue closed' => 'Fermeture d\'un ticket sur Gitlab',
- 'Gitlab webhooks' => 'Webhook Gitlab',
- 'Help on Gitlab webhooks' => 'Aide sur les webhooks Gitlab',
'Integrations' => 'Intégrations',
'Integration with third-party services' => 'Intégration avec des services externes',
- 'Gitlab Issue' => 'Ticket Gitlab',
'Subtask Id' => 'Identifiant de la sous-tâche',
'Subtasks' => 'Sous-tâches',
'Subtasks Export' => 'Exportation des sous-tâches',
@@ -872,8 +866,6 @@ return array(
'Remote user' => 'Utilisateur distant',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Les utilisateurs distants ne stockent pas leur mot de passe dans la base de données de Kanboard, exemples : comptes LDAP, Github ou Google.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Si vous cochez la case « Interdire le formulaire d\'authentification », les identifiants entrés dans le formulaire d\'authentification seront ignorés.',
- 'By @%s on Gitlab' => 'Par @%s sur Gitlab',
- 'Gitlab issue comment created' => 'Commentaire créé sur un ticket Gitlab',
'New remote user' => 'Créer un utilisateur distant',
'New local user' => 'Créer un utilisateur local',
'Default task color' => 'Couleur par défaut des tâches',
@@ -1050,7 +1042,6 @@ return array(
'Project Manager' => 'Chef de projet',
'Project Member' => 'Membre du projet',
'Project Viewer' => 'Visualiseur de projet',
- 'Gitlab issue reopened' => 'Ticket Gitlab rouvert',
'Your account is locked for %d minutes' => 'Votre compte est vérouillé pour %d minutes',
'Invalid captcha' => 'Captcha invalid',
'The name must be unique' => 'Le nom doit être unique',
@@ -1097,4 +1088,5 @@ return array(
'Two-Factor Provider: ' => 'Fournisseur d\'authentification à deux facteurs : ',
'Disable two-factor authentication' => 'Désactiver l\'authentification à deux-facteurs',
'Enable two-factor authentication' => 'Activer l\'authentification à deux-facteurs',
+ 'There is no integration registered at the moment.' => 'Il n\'y a aucune intégration enregistrée pour le moment.',
);
diff --git a/app/Locale/hu_HU/translations.php b/app/Locale/hu_HU/translations.php
index 392ead6c..54c4ba40 100644
--- a/app/Locale/hu_HU/translations.php
+++ b/app/Locale/hu_HU/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'A folyamat sikeresen létrehozva.',
'Example: "Bug, Feature Request, Improvement"' => 'Például: Hiba, Új funkció, Fejlesztés',
'Default categories for new projects (Comma-separated)' => 'Alapértelmezett kategóriák az új projektekben (Vesszővel elválasztva)',
- 'Gitlab commit received' => 'Gitlab commit érkezett',
- 'Gitlab issue opened' => 'Gitlab issue nyitás',
- 'Gitlab issue closed' => 'Gitlab issue zárás',
- 'Gitlab webhooks' => 'Gitlab webhooks',
- 'Help on Gitlab webhooks' => 'Gitlab webhooks súgó',
'Integrations' => 'Integráció',
'Integration with third-party services' => 'Integráció harmadik féllel',
- 'Gitlab Issue' => 'Gitlab issue',
'Subtask Id' => 'Részfeladat id',
'Subtasks' => 'Részfeladatok',
'Subtasks Export' => 'Részfeladat exportálás',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/id_ID/translations.php b/app/Locale/id_ID/translations.php
index 9640abfb..ab296437 100644
--- a/app/Locale/id_ID/translations.php
+++ b/app/Locale/id_ID/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Swimlane anda berhasil dibuat.',
'Example: "Bug, Feature Request, Improvement"' => 'Contoh: « Insiden, Permintaan Fitur, Perbaikan »',
'Default categories for new projects (Comma-separated)' => 'Standar kategori untuk proyek baru (dipisahkan dengan koma)',
- 'Gitlab commit received' => 'Menerima komit Gitlab',
- 'Gitlab issue opened' => 'Tiket Gitlab dibuka',
- 'Gitlab issue closed' => 'Tiket Gitlab ditutup',
- 'Gitlab webhooks' => 'Webhook Gitlab',
- 'Help on Gitlab webhooks' => 'Bantuan pada webhook Gitlab',
'Integrations' => 'Integrasi',
'Integration with third-party services' => 'Integrasi dengan layanan pihak ketiga',
- 'Gitlab Issue' => 'Tiket Gitlab',
'Subtask Id' => 'Id Subtugas',
'Subtasks' => 'Subtugas',
'Subtasks Export' => 'Ekspor Subtugas',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Pengguna jauh',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Pengguna jauh tidak menyimpan kata sandi mereka dalam basis data Kanboard, contoh: akun LDAP, Google dan Github.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Jika anda mencentang kotak "Larang formulir login", kredensial masuk ke formulis login akan diabaikan.',
- 'By @%s on Gitlab' => 'Dengan @%s pada Gitlab',
- 'Gitlab issue comment created' => 'Komentar dibuat pada tiket Gitlab',
'New remote user' => 'Pengguna baru jauh',
'New local user' => 'Pengguna baru lokal',
'Default task color' => 'Standar warna tugas',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/it_IT/translations.php b/app/Locale/it_IT/translations.php
index 81d1853f..7d8df85f 100644
--- a/app/Locale/it_IT/translations.php
+++ b/app/Locale/it_IT/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'La sua corsia è stata creata con successo',
'Example: "Bug, Feature Request, Improvement"' => 'Esempio: "Bug, Richiesta di Funzioni, Migliorie"',
'Default categories for new projects (Comma-separated)' => 'Categorie di default per i progetti (Separati da virgola)',
- 'Gitlab commit received' => 'Commit ricevuto da Gitlab',
- 'Gitlab issue opened' => 'Issue di Gitlab aperta',
- 'Gitlab issue closed' => 'Issue di Gitlab chiusa',
- 'Gitlab webhooks' => 'Webhooks di Gitlab',
- 'Help on Gitlab webhooks' => 'Guida ai Webhooks di Gitlab',
'Integrations' => 'Integrazioni',
'Integration with third-party services' => 'Integrazione con servizi di terze parti',
- 'Gitlab Issue' => 'Issue di Gitlab',
'Subtask Id' => 'Id del sotto-compito',
'Subtasks' => 'Sotto-compiti',
'Subtasks Export' => 'Esporta sotto-compiti',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/ja_JP/translations.php b/app/Locale/ja_JP/translations.php
index 3b24f224..f1d20c49 100644
--- a/app/Locale/ja_JP/translations.php
+++ b/app/Locale/ja_JP/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'スイムレーンが作成されました。',
'Example: "Bug, Feature Request, Improvement"' => '例: バグ, 機能, 改善',
'Default categories for new projects (Comma-separated)' => '新しいプロジェクトのデフォルトカテゴリー (コンマ区切り)',
- 'Gitlab commit received' => 'Gitlab コミットを受診しました',
- 'Gitlab issue opened' => 'Gitlab Issue がオープンされました',
- 'Gitlab issue closed' => 'Gitlab Issue がクローズされました',
- 'Gitlab webhooks' => 'Gitlab Webhooks',
- 'Help on Gitlab webhooks' => 'Gitlab Webhooks のヘルプ',
'Integrations' => '連携',
'Integration with third-party services' => 'サードパーティサービスとの連携',
- 'Gitlab Issue' => 'Gitlab Issue',
'Subtask Id' => 'サブタスク Id',
'Subtasks' => 'サブタスク',
'Subtasks Export' => 'サブタスクの出力',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/nb_NO/translations.php b/app/Locale/nb_NO/translations.php
index 75631126..67dac98c 100644
--- a/app/Locale/nb_NO/translations.php
+++ b/app/Locale/nb_NO/translations.php
@@ -543,14 +543,8 @@ return array(
// 'Your swimlane have been created successfully.' => '',
// 'Example: "Bug, Feature Request, Improvement"' => '',
// 'Default categories for new projects (Comma-separated)' => '',
- // 'Gitlab commit received' => '',
- // 'Gitlab issue opened' => '',
- // 'Gitlab issue closed' => '',
- // 'Gitlab webhooks' => '',
- // 'Help on Gitlab webhooks' => '',
'Integrations' => 'Integrasjoner',
'Integration with third-party services' => 'Integrasjoner med tredje-parts tjenester',
- // 'Gitlab Issue' => '',
'Subtask Id' => 'Deloppgave ID',
'Subtasks' => 'Deloppgaver',
'Subtasks Export' => 'Eksporter deloppgaver',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
'New remote user' => 'Ny eksternbruker',
'New local user' => 'Ny internbruker',
'Default task color' => 'Standard oppgavefarge',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/nl_NL/translations.php b/app/Locale/nl_NL/translations.php
index 5e1d2960..c52c20ea 100644
--- a/app/Locale/nl_NL/translations.php
+++ b/app/Locale/nl_NL/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Swimlane succesvol aangemaakt.',
'Example: "Bug, Feature Request, Improvement"' => 'Voorbeeld: « Bug, Feature Request, Improvement »',
'Default categories for new projects (Comma-separated)' => 'Standaard categorieën voor nieuwe projecten (komma gescheiden)',
- 'Gitlab commit received' => 'Gitlab commir ontvangen',
- 'Gitlab issue opened' => 'Gitlab issue geopend',
- 'Gitlab issue closed' => 'Gitlab issue gesloten',
- 'Gitlab webhooks' => 'Gitlab webhooks',
- 'Help on Gitlab webhooks' => 'Hulp bij Gitlab webhooks',
'Integrations' => 'Integraties',
'Integration with third-party services' => 'Integratie met derde-partij-services',
- 'Gitlab Issue' => 'Gitlab issue',
'Subtask Id' => 'Subtaak id',
'Subtasks' => 'Subtaken',
'Subtasks Export' => 'Subtaken exporteren',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/pl_PL/translations.php b/app/Locale/pl_PL/translations.php
index 253e19f6..dc95fbe1 100644
--- a/app/Locale/pl_PL/translations.php
+++ b/app/Locale/pl_PL/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Proces tworzony pomyślnie.',
'Example: "Bug, Feature Request, Improvement"' => 'Przykład: "Błąd, Żądanie Funkcjonalności, Udoskonalenia"',
'Default categories for new projects (Comma-separated)' => 'Domyślne kategorie dla nowych projektów (oddzielone przecinkiem)',
- // 'Gitlab commit received' => '',
- // 'Gitlab issue opened' => '',
- // 'Gitlab issue closed' => '',
- // 'Gitlab webhooks' => '',
- // 'Help on Gitlab webhooks' => '',
'Integrations' => 'Integracje',
'Integration with third-party services' => 'Integracja z usługami firm trzecich',
- // 'Gitlab Issue' => '',
'Subtask Id' => 'ID pod-zadania',
'Subtasks' => 'Pod-zadania',
'Subtasks Export' => 'Eksport pod-zadań',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
'New remote user' => 'Nowy użytkownik zdalny',
'New local user' => 'Nowy użytkownik lokalny',
'Default task color' => 'Domyślny kolor zadań',
@@ -1047,7 +1039,6 @@ return array(
'Project Manager' => 'Menedżer projektu',
'Project Member' => 'Uczestnik projektu',
'Project Viewer' => 'Obserwator projektu',
- // 'Gitlab issue reopened' => '',
'Your account is locked for %d minutes' => 'Twoje konto zostało zablokowane na %d minut',
'Invalid captcha' => 'Błędny kod z obrazka (captcha)',
'The name must be unique' => 'Nazwa musi być unikatowa',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/pt_BR/translations.php b/app/Locale/pt_BR/translations.php
index ac063b16..7b291f26 100644
--- a/app/Locale/pt_BR/translations.php
+++ b/app/Locale/pt_BR/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Sua swimlane foi criada com sucesso.',
'Example: "Bug, Feature Request, Improvement"' => 'Exemplo: "Bug, Solicitação de Recurso, Melhoria"',
'Default categories for new projects (Comma-separated)' => 'Categorias padrões para novos projetos (separadas por vírgula)',
- 'Gitlab commit received' => 'Gitlab commit received',
- 'Gitlab issue opened' => 'Gitlab issue opened',
- 'Gitlab issue closed' => 'Gitlab issue closed',
- 'Gitlab webhooks' => 'Gitlab webhooks',
- 'Help on Gitlab webhooks' => 'Ajuda sobre os webhooks do GitLab',
'Integrations' => 'Integrações',
'Integration with third-party services' => 'Integração com serviços de terceiros',
- 'Gitlab Issue' => 'Gitlab Issue',
'Subtask Id' => 'ID da subtarefa',
'Subtasks' => 'Subtarefas',
'Subtasks Export' => 'Exportar subtarefas',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Usuário remoto',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Os usuários remotos não conservam as suas senhas no banco de dados Kanboard, exemplos: contas LDAP, Github ou Google.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Se você marcar "Interdir o formulário de autenticação", os identificadores entrados no formulário de login serão ignorado.',
- 'By @%s on Gitlab' => 'Por @%s no Gitlab',
- 'Gitlab issue comment created' => 'Comentário criado em um bilhete Gitlab',
'New remote user' => 'Criar um usuário remoto',
'New local user' => 'Criar um usuário local',
'Default task color' => 'Cor padrão para as tarefas',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/pt_PT/translations.php b/app/Locale/pt_PT/translations.php
index fec3b724..44003b1b 100644
--- a/app/Locale/pt_PT/translations.php
+++ b/app/Locale/pt_PT/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Seu swimlane foi criado com sucesso.',
'Example: "Bug, Feature Request, Improvement"' => 'Exemplo: "Bug, Feature Request, Improvement"',
'Default categories for new projects (Comma-separated)' => 'Categorias padrão para novos projectos (Separadas por vírgula)',
- 'Gitlab commit received' => 'Commit recebido do Gitlab',
- 'Gitlab issue opened' => 'Problema aberto no Gitlab',
- 'Gitlab issue closed' => 'Problema fechado no Gitlab',
- 'Gitlab webhooks' => 'Gitlab webhooks',
- 'Help on Gitlab webhooks' => 'Ajuda sobre Gitlab webhooks',
'Integrations' => 'Integrações',
'Integration with third-party services' => 'Integração com serviços de terceiros',
- 'Gitlab Issue' => 'Problema Gitlab',
'Subtask Id' => 'ID da subtarefa',
'Subtasks' => 'Subtarefas',
'Subtasks Export' => 'Exportar subtarefas',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Utilizador remoto',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Utilizadores remotos não guardam a password na base de dados do Kanboard, por exemplo: LDAP, contas do Google e Github.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Se activar a opção "Desactivar login", as credenciais digitadas no login serão ignoradas.',
- 'By @%s on Gitlab' => 'Por @%s no Gitlab',
- 'Gitlab issue comment created' => 'Comentário a problema no Gitlab adicionado',
'New remote user' => 'Novo utilizador remoto',
'New local user' => 'Novo utilizador local',
'Default task color' => 'Cor de tarefa por defeito',
@@ -1047,7 +1039,6 @@ return array(
'Project Manager' => 'Gestor de Projecto',
'Project Member' => 'Membro de Projecto',
'Project Viewer' => 'Visualizador de Projecto',
- 'Gitlab issue reopened' => 'Problema Gitlab reaberto',
'Your account is locked for %d minutes' => 'A sua conta está bloqueada por %d minutos',
'Invalid captcha' => 'Captcha inválido',
'The name must be unique' => 'O nome deve ser único',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/ru_RU/translations.php b/app/Locale/ru_RU/translations.php
index a8066115..4ad5b593 100644
--- a/app/Locale/ru_RU/translations.php
+++ b/app/Locale/ru_RU/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Ваша дорожка была успешно создан.',
'Example: "Bug, Feature Request, Improvement"' => 'Например: "Баг, Фича, Улучшение"',
'Default categories for new projects (Comma-separated)' => 'Стандартные категории для нового проекта (разделяются запятыми)',
- 'Gitlab commit received' => 'Получен коммит с Gitlab',
- 'Gitlab issue opened' => 'Gitlab вопрос открыт',
- 'Gitlab issue closed' => 'Gitlab вопрос закрыт',
- 'Gitlab webhooks' => 'Gitlab webhooks',
- 'Help on Gitlab webhooks' => 'Помощь по Gitlab webhooks',
'Integrations' => 'Интеграции',
'Integration with third-party services' => 'Интеграция со сторонними сервисами',
- 'Gitlab Issue' => 'Gitlab вопрос',
'Subtask Id' => 'Id подзадачи',
'Subtasks' => 'Подзадачи',
'Subtasks Export' => 'Экспортировать подзадачи',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Удаленный пользователь',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Учетные данные для входа через LDAP, Google и Github не будут сохранены в Kanboard.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Если вы установите флажок "Запретить форму входа", учетные данные, введенные в форму входа будет игнорироваться.',
- 'By @%s on Gitlab' => 'От @%s на Gitlab',
- 'Gitlab issue comment created' => 'Был создан комментарий к задаче на Gitlab',
'New remote user' => 'Новый удаленный пользователь',
'New local user' => 'Новый локальный пользователь',
'Default task color' => 'Стандартные цвета задач',
@@ -1047,7 +1039,6 @@ return array(
'Project Manager' => 'Менеджер проекта',
'Project Member' => 'Участник проекта',
'Project Viewer' => 'Наблюдатель проекта',
- 'Gitlab issue reopened' => 'Gitlab вопрос переоткрыт',
'Your account is locked for %d minutes' => 'Ваш аккаунт заблокирован на %d минут',
'Invalid captcha' => 'Неверный код подтверждения',
'The name must be unique' => 'Имя должно быть уникальным',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/sr_Latn_RS/translations.php b/app/Locale/sr_Latn_RS/translations.php
index b59e2e51..07efed98 100644
--- a/app/Locale/sr_Latn_RS/translations.php
+++ b/app/Locale/sr_Latn_RS/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Razdelnik je uspešno kreiran.',
'Example: "Bug, Feature Request, Improvement"' => 'Npr: "Greška, Zahtev za izmenama, Poboljšanje"',
'Default categories for new projects (Comma-separated)' => 'Osnovne kategorije za projekat',
- // 'Gitlab commit received' => '',
- // 'Gitlab issue opened' => '',
- // 'Gitlab issue closed' => '',
- // 'Gitlab webhooks' => '',
- // 'Help on Gitlab webhooks' => '',
'Integrations' => 'Integracje',
'Integration with third-party services' => 'Integracja sa uslugama spoljnih servisa',
- // 'Gitlab Issue' => '',
'Subtask Id' => 'ID pod-zadania',
'Subtasks' => 'Pod-zadataka',
'Subtasks Export' => 'Eksport pod-zadań',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/sv_SE/translations.php b/app/Locale/sv_SE/translations.php
index bf6ee199..46159d8b 100644
--- a/app/Locale/sv_SE/translations.php
+++ b/app/Locale/sv_SE/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Din swimlane har skapats',
'Example: "Bug, Feature Request, Improvement"' => 'Exempel: "Bug, ny funktionalitet, förbättringar"',
'Default categories for new projects (Comma-separated)' => 'Standardkategorier för nya projekt (komma-separerade)',
- 'Gitlab commit received' => 'Gitlab bidrag mottaget',
- 'Gitlab issue opened' => 'Gitlab fråga öppnad',
- 'Gitlab issue closed' => 'Gitlab fråga stängd',
- 'Gitlab webhooks' => 'Gitlab webhooks',
- 'Help on Gitlab webhooks' => 'Hjälp för Gitlab webhooks',
'Integrations' => 'Integrationer',
'Integration with third-party services' => 'Integration med tjänst från tredjepart',
- 'Gitlab Issue' => 'Gitlab fråga',
'Subtask Id' => 'Deluppgifts-ID',
'Subtasks' => 'Deluppgift',
'Subtasks Export' => 'Export av deluppgifter',
@@ -870,8 +864,6 @@ return array(
'Remote user' => 'Extern användare',
'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => 'Externa användares lösenord lagras inte i Kanboard-databasen, exempel: LDAP, Google och Github-konton.',
'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => 'Om du aktiverar boxen "Tillåt inte loginformulär" kommer inloggningsuppgifter i formuläret att ignoreras.',
- 'By @%s on Gitlab' => 'Av @%s på Gitlab',
- 'Gitlab issue comment created' => 'Gitlab frågekommentar skapad',
'New remote user' => 'Ny extern användare',
'New local user' => 'Ny lokal användare',
'Default task color' => 'Standardfärg för uppgifter',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/th_TH/translations.php b/app/Locale/th_TH/translations.php
index 81946540..0706163d 100644
--- a/app/Locale/th_TH/translations.php
+++ b/app/Locale/th_TH/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'สวิมเลนของคุณถูกสร้างเรียบร้อยแล้ว',
'Example: "Bug, Feature Request, Improvement"' => 'ตัวอย่าง: "Bug, Feature Request, Improvement"',
'Default categories for new projects (Comma-separated)' => 'ค่าเริ่มต้นกลุ่มสำหรับโปรเจคใหม่ (Comma-separated)',
- // 'Gitlab commit received' => '',
- // 'Gitlab issue opened' => '',
- // 'Gitlab issue closed' => '',
- // 'Gitlab webhooks' => '',
- // 'Help on Gitlab webhooks' => '',
'Integrations' => 'การใช้ร่วมกัน',
'Integration with third-party services' => 'การใช้งานร่วมกับบริการ third-party',
- // 'Gitlab Issue' => '',
'Subtask Id' => 'รหัสงานย่อย',
'Subtasks' => 'งานย่อย',
'Subtasks Export' => 'ส่งออก งานย่อย',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/tr_TR/translations.php b/app/Locale/tr_TR/translations.php
index 10472aad..3b576485 100644
--- a/app/Locale/tr_TR/translations.php
+++ b/app/Locale/tr_TR/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => 'Kulvar başarıyla oluşturuldu.',
'Example: "Bug, Feature Request, Improvement"' => 'Örnek: "Sorun, Özellik talebi, İyileştirme"',
'Default categories for new projects (Comma-separated)' => 'Yeni projeler için varsayılan kategoriler (Virgül ile ayrılmış)',
- // 'Gitlab commit received' => '',
- // 'Gitlab issue opened' => '',
- // 'Gitlab issue closed' => '',
- // 'Gitlab webhooks' => '',
- // 'Help on Gitlab webhooks' => '',
'Integrations' => 'Entegrasyon',
'Integration with third-party services' => 'Dış servislerle entegrasyon',
- // 'Gitlab Issue' => '',
'Subtask Id' => 'Alt görev No:',
'Subtasks' => 'Alt görevler',
'Subtasks Export' => 'Alt görevleri dışa aktar',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
// 'Default task color' => '',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/Locale/zh_CN/translations.php b/app/Locale/zh_CN/translations.php
index a152748f..f5de4725 100644
--- a/app/Locale/zh_CN/translations.php
+++ b/app/Locale/zh_CN/translations.php
@@ -543,14 +543,8 @@ return array(
'Your swimlane have been created successfully.' => '已经成功创建泳道。',
'Example: "Bug, Feature Request, Improvement"' => '示例:“缺陷,功能需求,提升',
'Default categories for new projects (Comma-separated)' => '新项目的默认分类(用逗号分隔)',
- 'Gitlab commit received' => '收到 Gitlab 提交',
- 'Gitlab issue opened' => '开启 Gitlab 问题',
- 'Gitlab issue closed' => '关闭 Gitlab 问题',
- 'Gitlab webhooks' => 'Gitlab 网络钩子',
- 'Help on Gitlab webhooks' => 'Gitlab 网络钩子帮助',
'Integrations' => '整合',
'Integration with third-party services' => '与第三方服务进行整合',
- 'Gitlab Issue' => 'Gitlab 问题',
'Subtask Id' => '子任务 Id',
'Subtasks' => '子任务',
'Subtasks Export' => '子任务导出',
@@ -870,8 +864,6 @@ return array(
// 'Remote user' => '',
// 'Remote users do not store their password in Kanboard database, examples: LDAP, Google and Github accounts.' => '',
// 'If you check the box "Disallow login form", credentials entered in the login form will be ignored.' => '',
- // 'By @%s on Gitlab' => '',
- // 'Gitlab issue comment created' => '',
// 'New remote user' => '',
// 'New local user' => '',
'Default task color' => '默认任务颜色',
@@ -1047,7 +1039,6 @@ return array(
// 'Project Manager' => '',
// 'Project Member' => '',
// 'Project Viewer' => '',
- // 'Gitlab issue reopened' => '',
// 'Your account is locked for %d minutes' => '',
// 'Invalid captcha' => '',
// 'The name must be unique' => '',
@@ -1094,4 +1085,5 @@ return array(
// 'Two-Factor Provider: ' => '',
// 'Disable two-factor authentication' => '',
// 'Enable two-factor authentication' => '',
+ // 'There is no integration registered at the moment.' => '',
);
diff --git a/app/ServiceProvider/ClassProvider.php b/app/ServiceProvider/ClassProvider.php
index f7cd466c..3f6aecc5 100644
--- a/app/ServiceProvider/ClassProvider.php
+++ b/app/ServiceProvider/ClassProvider.php
@@ -114,9 +114,6 @@ class ClassProvider implements ServiceProviderInterface
'UserSync',
'UserSession',
'UserProfile',
- ),
- 'Integration' => array(
- 'GitlabWebhook',
)
);
diff --git a/app/Template/project/integrations.php b/app/Template/project/integrations.php
index 77b1b793..54720c69 100644
--- a/app/Template/project/integrations.php
+++ b/app/Template/project/integrations.php
@@ -5,11 +5,11 @@
<form method="post" action="<?= $this->url->href('project', 'integrations', array('project_id' => $project['id'])) ?>" autocomplete="off">
<?= $this->form->csrf() ?>
- <?= $this->hook->render('template:project:integrations', array('project' => $project, 'values' => $values, 'webhook_token' => $webhook_token)) ?>
+ <?php $integrations = $this->hook->render('template:project:integrations', array('project' => $project, 'values' => $values, 'webhook_token' => $webhook_token)) ?>
- <h3><img src="<?= $this->url->dir() ?>assets/img/gitlab-icon.png"/>&nbsp;<?= t('Gitlab webhooks') ?></h3>
- <div class="listing">
- <input type="text" class="auto-select" readonly="readonly" value="<?= $this->url->href('webhook', 'gitlab', array('token' => $webhook_token, 'project_id' => $project['id']), false, '', true) ?>"/><br/>
- <p class="form-help"><?= $this->url->doc(t('Help on Gitlab webhooks'), 'gitlab-webhooks') ?></p>
- </div>
+ <?php if (empty($integrations)): ?>
+ <p class="alert"><?= t('There is no integration registered at the moment.') ?></p>
+ <?php else: ?>
+ <?= $integrations ?>
+ <?php endif ?>
</form> \ No newline at end of file
diff --git a/doc/gitlab-webhooks.markdown b/doc/gitlab-webhooks.markdown
deleted file mode 100644
index fec47c19..00000000
--- a/doc/gitlab-webhooks.markdown
+++ /dev/null
@@ -1,70 +0,0 @@
-Gitlab webhooks
-===============
-
-Gitlab events can be connected to Kanboard automatic actions.
-
-List of supported events
-------------------------
-
-- Gitlab commit received
-- Gitlab issue opened
-- Gitlab issue closed
-- Gitlab issue comment created
-
-List of supported actions
--------------------------
-
-- Create a task from an external provider
-- Close a task
-- Create a comment from an external provider
-
-Configuration
--------------
-
-![Gitlab configuration](http://kanboard.net/screenshots/documentation/gitlab-webhooks.png)
-
-1. On Kanboard, go to the project settings and choose the section **Integrations**
-2. Copy the Gitlab webhook url
-3. On Gitlab, go to the project settings and go to the section **Webhooks**
-4. Check the boxes **Push Events**, **Comments** and **Issues Events**
-5. Paste the url and save
-
-Examples
---------
-
-### Close a Kanboard task when a commit pushed to Gitlab
-
-- Choose the event: **Gitlab commit received**
-- Choose the action: **Close the task**
-
-When one or more commits are sent to Gitlab, Kanboard will receive the information, each commit message with a task number included will be closed.
-
-Example:
-
-- Commit message: "Fix bug #1234"
-- That will close the Kanboard task #1234
-
-### Create a Kanboard task when a new issue is opened on Gitlab
-
-- Choose the event: **Gitlab issue opened**
-- Choose the action: **Create a task from an external provider**
-
-When a task is created from a Gitlab issue, the link to the issue is added to the description and the task have a new field named "Reference" (this is the Gitlab ticket number).
-
-### Close a Kanboard task when an issue is closed on Gitlab
-
-- Choose the event: **Gitlab issue closed**
-- Choose the action: **Close the task**
-
-### Reopen a Kanboard task when a closed issue is reopened on Gitlab
-
-- Choose the event: **Gitlab issue reopened**
-- Choose the action: **Open a task**
-
-### Create a comment on Kanboard when an issue is commented on Gitlab
-
-- Choose the event: **Gitlab issue comment created**
-- Choose the action: **Create a comment from an external provider**
-
-If the username is the same between Gitlab and Kanboard the comment author will be assigned, otherwise there is no author.
-The user also have to be member of the project in Kanboard.
diff --git a/doc/index.markdown b/doc/index.markdown
index bc3a2fbf..953dc72f 100644
--- a/doc/index.markdown
+++ b/doc/index.markdown
@@ -68,7 +68,6 @@ Using Kanboard
### Integrations
-- [Gitlab webhooks](gitlab-webhooks.markdown)
- [iCalendar subscriptions](ical.markdown)
- [RSS/Atom subscriptions](rss.markdown)
- [Json-RPC API](api-json-rpc.markdown)
diff --git a/tests/units/Integration/GitlabWebhookTest.php b/tests/units/Integration/GitlabWebhookTest.php
deleted file mode 100644
index afd9f7f1..00000000
--- a/tests/units/Integration/GitlabWebhookTest.php
+++ /dev/null
@@ -1,258 +0,0 @@
-<?php
-
-require_once __DIR__.'/../Base.php';
-
-use Kanboard\Integration\GitlabWebhook;
-use Kanboard\Model\TaskCreation;
-use Kanboard\Model\TaskFinder;
-use Kanboard\Model\Project;
-use Kanboard\Model\ProjectUserRole;
-use Kanboard\Model\User;
-use Kanboard\Core\Security\Role;
-
-class GitlabWebhookTest extends Base
-{
- public function testGetEventType()
- {
- $g = new GitlabWebhook($this->container);
-
- $this->assertEquals(GitlabWebhook::TYPE_PUSH, $g->getType(json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_push.json'), true)));
- $this->assertEquals(GitlabWebhook::TYPE_ISSUE, $g->getType(json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_issue_opened.json'), true)));
- $this->assertEquals(GitlabWebhook::TYPE_COMMENT, $g->getType(json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_comment_created.json'), true)));
- $this->assertEquals('', $g->getType(array()));
- }
-
- public function testHandleCommit()
- {
- $g = new GitlabWebhook($this->container);
- $p = new Project($this->container);
- $tc = new TaskCreation($this->container);
- $tf = new TaskFinder($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $g->setProjectId(1);
-
- $this->container['dispatcher']->addListener(GitlabWebhook::EVENT_COMMIT, array($this, 'onCommit'));
-
- $event = json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_push.json'), true);
-
- // No task
- $this->assertFalse($g->handleCommit($event['commits'][0]));
-
- // Create task with the wrong id
- $this->assertEquals(1, $tc->create(array('title' => 'test1', 'project_id' => 1)));
- $this->assertFalse($g->handleCommit($event['commits'][0]));
-
- // Create task with the right id
- $this->assertEquals(2, $tc->create(array('title' => 'test2', 'project_id' => 1)));
- $this->assertTrue($g->handleCommit($event['commits'][0]));
-
- $called = $this->container['dispatcher']->getCalledListeners();
- $this->assertArrayHasKey(GitlabWebhook::EVENT_COMMIT.'.GitlabWebhookTest::onCommit', $called);
- }
-
- public function testHandleIssueOpened()
- {
- $g = new GitlabWebhook($this->container);
- $g->setProjectId(1);
-
- $this->container['dispatcher']->addListener(GitlabWebhook::EVENT_ISSUE_OPENED, array($this, 'onOpen'));
-
- $event = json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_issue_opened.json'), true);
- $this->assertTrue($g->handleIssueOpened($event['object_attributes']));
-
- $called = $this->container['dispatcher']->getCalledListeners();
- $this->assertArrayHasKey(GitlabWebhook::EVENT_ISSUE_OPENED.'.GitlabWebhookTest::onOpen', $called);
- }
-
- public function testHandleIssueReopened()
- {
- $g = new GitlabWebhook($this->container);
- $p = new Project($this->container);
- $tc = new TaskCreation($this->container);
- $tf = new TaskFinder($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $g->setProjectId(1);
-
- $this->container['dispatcher']->addListener(GitlabWebhook::EVENT_ISSUE_REOPENED, array($this, 'onReopen'));
-
- $event = json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_issue_reopened.json'), true);
-
- // Issue not there
- $this->assertFalse($g->handleIssueReopened($event['object_attributes']));
-
- $called = $this->container['dispatcher']->getCalledListeners();
- $this->assertEmpty($called);
-
- $this->assertEquals(1, $tc->create(array('title' => 'A', 'project_id' => 1, 'reference' => 355691)));
- $task = $tf->getByReference(1, 355691);
- $this->assertTrue($g->handleIssueReopened($event['object_attributes']));
-
- $called = $this->container['dispatcher']->getCalledListeners();
- $this->assertArrayHasKey(GitlabWebhook::EVENT_ISSUE_REOPENED.'.GitlabWebhookTest::onReopen', $called);
- }
-
-
- public function testHandleIssueClosed()
- {
- $g = new GitlabWebhook($this->container);
- $p = new Project($this->container);
- $tc = new TaskCreation($this->container);
- $tf = new TaskFinder($this->container);
-
- $this->assertEquals(1, $p->create(array('name' => 'test')));
- $g->setProjectId(1);
-
- $this->container['dispatcher']->addListener(GitlabWebhook::EVENT_ISSUE_CLOSED, array($this, 'onClose'));
-
- $event = json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_issue_closed.json'), true);
-
- // Issue not there
- $this->assertFalse($g->handleIssueClosed($event['object_attributes']));
-
- $called = $this->container['dispatcher']->getCalledListeners();
- $this->assertEmpty($called);
-
- // Create a task with the issue reference
- $this->assertEquals(1, $tc->create(array('title' => 'A', 'project_id' => 1, 'reference' => 355691)));
- $task = $tf->getByReference(1, 355691);
- $this->assertNotEmpty($task);
-
- $task = $tf->getByReference(2, 355691);
- $this->assertEmpty($task);
-
- $this->assertTrue($g->handleIssueClosed($event['object_attributes']));
-
- $called = $this->container['dispatcher']->getCalledListeners();
- $this->assertArrayHasKey(GitlabWebhook::EVENT_ISSUE_CLOSED.'.GitlabWebhookTest::onClose', $called);
- }
-
- public function testCommentCreatedWithNoUser()
- {
- $this->container['dispatcher']->addListener(GitlabWebhook::EVENT_ISSUE_COMMENT, array($this, 'onCommentCreatedWithNoUser'));
-
- $p = new Project($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'foobar')));
-
- $tc = new TaskCreation($this->container);
- $this->assertEquals(1, $tc->create(array('title' => 'boo', 'reference' => 355691, 'project_id' => 1)));
-
- $g = new GitlabWebhook($this->container);
- $g->setProjectId(1);
-
- $this->assertNotFalse($g->parsePayload(
- json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_comment_created.json'), true)
- ));
- }
-
- public function testCommentCreatedWithNotMember()
- {
- $this->container['dispatcher']->addListener(GitlabWebhook::EVENT_ISSUE_COMMENT, array($this, 'onCommentCreatedWithNotMember'));
-
- $p = new Project($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'foobar')));
-
- $tc = new TaskCreation($this->container);
- $this->assertEquals(1, $tc->create(array('title' => 'boo', 'reference' => 355691, 'project_id' => 1)));
-
- $u = new User($this->container);
- $this->assertEquals(2, $u->create(array('username' => 'minicoders')));
-
- $g = new GitlabWebhook($this->container);
- $g->setProjectId(1);
-
- $this->assertNotFalse($g->parsePayload(
- json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_comment_created.json'), true)
- ));
- }
-
- public function testCommentCreatedWithUser()
- {
- $this->container['dispatcher']->addListener(GitlabWebhook::EVENT_ISSUE_COMMENT, array($this, 'onCommentCreatedWithUser'));
-
- $p = new Project($this->container);
- $this->assertEquals(1, $p->create(array('name' => 'foobar')));
-
- $tc = new TaskCreation($this->container);
- $this->assertEquals(1, $tc->create(array('title' => 'boo', 'reference' => 355691, 'project_id' => 1)));
-
- $u = new User($this->container);
- $this->assertEquals(2, $u->create(array('username' => 'minicoders')));
-
- $pp = new ProjectUserRole($this->container);
- $this->assertTrue($pp->addUser(1, 2, Role::PROJECT_MEMBER));
-
- $g = new GitlabWebhook($this->container);
- $g->setProjectId(1);
-
- $this->assertNotFalse($g->parsePayload(
- json_decode(file_get_contents(__DIR__.'/../fixtures/gitlab_comment_created.json'), true)
- ));
- }
-
- public function onOpen($event)
- {
- $data = $event->getAll();
- $this->assertEquals(1, $data['project_id']);
- $this->assertEquals(355691, $data['reference']);
- $this->assertEquals('Bug', $data['title']);
- $this->assertEquals("There is a bug somewhere.\r\n\r\nBye\n\n[Gitlab Issue](https://gitlab.com/minicoders/test-webhook/issues/1)", $data['description']);
- }
-
- public function onReopen($event)
- {
- $data = $event->getAll();
- $this->assertEquals(1, $data['project_id']);
- $this->assertEquals(1, $data['task_id']);
- $this->assertEquals(355691, $data['reference']);
- }
- public function onClose($event)
- {
- $data = $event->getAll();
- $this->assertEquals(1, $data['project_id']);
- $this->assertEquals(1, $data['task_id']);
- $this->assertEquals(355691, $data['reference']);
- }
-
- public function onCommit($event)
- {
- $data = $event->getAll();
- $this->assertEquals(1, $data['project_id']);
- $this->assertEquals(2, $data['task_id']);
- $this->assertEquals('test2', $data['title']);
- $this->assertEquals("Fix bug #2\n\n[Commit made by @Fred on Gitlab](https://gitlab.com/minicoders/test-webhook/commit/48aafa75eef9ad253aa254b0c82c987a52ebea78)", $data['comment']);
- $this->assertEquals("Fix bug #2", $data['commit_message']);
- $this->assertEquals('https://gitlab.com/minicoders/test-webhook/commit/48aafa75eef9ad253aa254b0c82c987a52ebea78', $data['commit_url']);
- }
-
- public function onCommentCreatedWithNoUser($event)
- {
- $data = $event->getAll();
- $this->assertEquals(1, $data['project_id']);
- $this->assertEquals(1, $data['task_id']);
- $this->assertEquals(0, $data['user_id']);
- $this->assertEquals(1642761, $data['reference']);
- $this->assertEquals("Super comment!\n\n[By @minicoders on Gitlab](https://gitlab.com/minicoders/test-webhook/issues/1#note_1642761)", $data['comment']);
- }
-
- public function onCommentCreatedWithNotMember($event)
- {
- $data = $event->getAll();
- $this->assertEquals(1, $data['project_id']);
- $this->assertEquals(1, $data['task_id']);
- $this->assertEquals(0, $data['user_id']);
- $this->assertEquals(1642761, $data['reference']);
- $this->assertEquals("Super comment!\n\n[By @minicoders on Gitlab](https://gitlab.com/minicoders/test-webhook/issues/1#note_1642761)", $data['comment']);
- }
-
- public function onCommentCreatedWithUser($event)
- {
- $data = $event->getAll();
- $this->assertEquals(1, $data['project_id']);
- $this->assertEquals(1, $data['task_id']);
- $this->assertEquals(2, $data['user_id']);
- $this->assertEquals(1642761, $data['reference']);
- $this->assertEquals("Super comment!\n\n[By @minicoders on Gitlab](https://gitlab.com/minicoders/test-webhook/issues/1#note_1642761)", $data['comment']);
- }
-}
diff --git a/tests/units/fixtures/gitlab_comment_created.json b/tests/units/fixtures/gitlab_comment_created.json
deleted file mode 100644
index b6599419..00000000
--- a/tests/units/fixtures/gitlab_comment_created.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "object_kind": "note",
- "user": {
- "name": "Fred",
- "username": "minicoders",
- "avatar_url": "https://secure.gravatar.com/avatar/3c44936e5a56f80711bff14987d2733f?s=40&d=identicon"
- },
- "project_id": 320820,
- "repository": {
- "name": "test-webhook",
- "url": "git@gitlab.com:minicoders/test-webhook.git",
- "description": "",
- "homepage": "https://gitlab.com/minicoders/test-webhook"
- },
- "object_attributes": {
- "id": 1642761,
- "note": "Super comment!",
- "noteable_type": "Issue",
- "author_id": 74067,
- "created_at": "2015-07-17 21:37:48 UTC",
- "updated_at": "2015-07-17 21:37:48 UTC",
- "project_id": 320820,
- "attachment": null,
- "line_code": null,
- "commit_id": "",
- "noteable_id": 355691,
- "st_diff": null,
- "system": false,
- "url": "https://gitlab.com/minicoders/test-webhook/issues/1#note_1642761"
- },
- "issue": {
- "id": 355691,
- "title": "Bug",
- "assignee_id": null,
- "author_id": 74067,
- "project_id": 320820,
- "created_at": "2015-07-17 21:31:47 UTC",
- "updated_at": "2015-07-17 21:37:48 UTC",
- "position": 0,
- "branch_name": null,
- "description": "There is a bug somewhere.\r\n\r\nBye",
- "milestone_id": null,
- "state": "opened",
- "iid": 1
- }
-} \ No newline at end of file
diff --git a/tests/units/fixtures/gitlab_issue_closed.json b/tests/units/fixtures/gitlab_issue_closed.json
deleted file mode 100644
index 82500b3c..00000000
--- a/tests/units/fixtures/gitlab_issue_closed.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "object_kind": "issue",
- "user": {
- "name": "Fred",
- "username": "minicoders",
- "avatar_url": "https://secure.gravatar.com/avatar/3c44936e5a56f80711bff14987d2733f?s=40&d=identicon"
- },
- "object_attributes": {
- "id": 355691,
- "title": "Bug",
- "assignee_id": null,
- "author_id": 74067,
- "project_id": 320820,
- "created_at": "2015-07-17 21:31:47 UTC",
- "updated_at": "2015-07-17 22:10:17 UTC",
- "position": 0,
- "branch_name": null,
- "description": "There is a bug somewhere.\r\n\r\nBye",
- "milestone_id": null,
- "state": "closed",
- "iid": 1,
- "url": "https://gitlab.com/minicoders/test-webhook/issues/1",
- "action": "close"
- }
-} \ No newline at end of file
diff --git a/tests/units/fixtures/gitlab_issue_opened.json b/tests/units/fixtures/gitlab_issue_opened.json
deleted file mode 100644
index 3e75c138..00000000
--- a/tests/units/fixtures/gitlab_issue_opened.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "object_kind": "issue",
- "user": {
- "name": "Fred",
- "username": "minicoders",
- "avatar_url": "https://secure.gravatar.com/avatar/3c44936e5a56f80711bff14987d2733f?s=40&d=identicon"
- },
- "object_attributes": {
- "id": 355691,
- "title": "Bug",
- "assignee_id": null,
- "author_id": 74067,
- "project_id": 320820,
- "created_at": "2015-07-17 21:31:47 UTC",
- "updated_at": "2015-07-17 21:31:47 UTC",
- "position": 0,
- "branch_name": null,
- "description": "There is a bug somewhere.\r\n\r\nBye",
- "milestone_id": null,
- "state": "opened",
- "iid": 1,
- "url": "https://gitlab.com/minicoders/test-webhook/issues/1",
- "action": "open"
- }
-} \ No newline at end of file
diff --git a/tests/units/fixtures/gitlab_issue_reopened.json b/tests/units/fixtures/gitlab_issue_reopened.json
deleted file mode 100644
index bf76262d..00000000
--- a/tests/units/fixtures/gitlab_issue_reopened.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "object_kind": "issue",
- "user": {
- "name": "Fred",
- "username": "minicoders",
- "avatar_url": "https://secure.gravatar.com/avatar/3c44936e5a56f80711bff14987d2733f?s=40&d=identicon"
- },
- "object_attributes": {
- "id": 355691,
- "title": "Bug",
- "assignee_id": null,
- "author_id": 74067,
- "project_id": 320820,
- "created_at": "2015-07-17 21:31:47 UTC",
- "updated_at": "2015-07-17 21:31:47 UTC",
- "position": 0,
- "branch_name": null,
- "description": "There is a bug somewhere.\r\n\r\nBye",
- "milestone_id": null,
- "state": "opened",
- "iid": 1,
- "url": "https://gitlab.com/minicoders/test-webhook/issues/1",
- "action": "reopen"
- }
-}
diff --git a/tests/units/fixtures/gitlab_push.json b/tests/units/fixtures/gitlab_push.json
deleted file mode 100644
index ed77f041..00000000
--- a/tests/units/fixtures/gitlab_push.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "object_kind": "push",
- "before": "e4ec6156d208a45fc546fae73c28300b5af1692a",
- "after": "48aafa75eef9ad253aa254b0c82c987a52ebea78",
- "ref": "refs/heads/master",
- "checkout_sha": "48aafa75eef9ad253aa254b0c82c987a52ebea78",
- "message": null,
- "user_id": 74067,
- "user_name": "Fred",
- "user_email": "f+gitlab@minicoders.com",
- "project_id": 320820,
- "repository": {
- "name": "test-webhook",
- "url": "git@gitlab.com:minicoders/test-webhook.git",
- "description": "",
- "homepage": "https://gitlab.com/minicoders/test-webhook",
- "git_http_url": "https://gitlab.com/minicoders/test-webhook.git",
- "git_ssh_url": "git@gitlab.com:minicoders/test-webhook.git",
- "visibility_level": 0
- },
- "commits": [
- {
- "id": "48aafa75eef9ad253aa254b0c82c987a52ebea78",
- "message": "Fix bug #2",
- "timestamp": "2015-06-21T00:41:41+00:00",
- "url": "https://gitlab.com/minicoders/test-webhook/commit/48aafa75eef9ad253aa254b0c82c987a52ebea78",
- "author": {
- "name": "Fred",
- "email": "me@localhost"
- }
- },
- {
- "id": "e4ec6156d208a45fc546fae73c28300b5af1692a",
- "message": "test",
- "timestamp": "2015-06-21T00:35:55+00:00",
- "url": "https://gitlab.com/localhost/test-webhook/commit/e4ec6156d208a45fc546fae73c28300b5af1692a",
- "author": {
- "name": "Fred",
- "email": "me@localhost"
- }
- }
- ],
- "total_commits_count": 2
-} \ No newline at end of file