summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Controller/Webhook.php33
-rw-r--r--app/Core/Base.php6
-rw-r--r--app/Core/EmailClient.php49
-rw-r--r--app/Core/Mail/Client.php96
-rw-r--r--app/Core/Mail/ClientInterface.php24
-rw-r--r--app/Core/Mail/Transport/Mail.php (renamed from app/Integration/Smtp.php)34
-rw-r--r--app/Core/Mail/Transport/Sendmail.php25
-rw-r--r--app/Core/Mail/Transport/Smtp.php30
-rw-r--r--app/Core/Plugin/Base.php2
-rw-r--r--app/Integration/Mailgun.php95
-rw-r--r--app/Integration/Postmark.php94
-rw-r--r--app/Integration/Sendgrid.php98
-rw-r--r--app/Locale/cs_CZ/translations.php7
-rw-r--r--app/Locale/da_DK/translations.php7
-rw-r--r--app/Locale/de_DE/translations.php7
-rw-r--r--app/Locale/es_ES/translations.php7
-rw-r--r--app/Locale/fi_FI/translations.php7
-rw-r--r--app/Locale/fr_FR/translations.php7
-rw-r--r--app/Locale/hu_HU/translations.php7
-rw-r--r--app/Locale/id_ID/translations.php7
-rw-r--r--app/Locale/it_IT/translations.php7
-rw-r--r--app/Locale/ja_JP/translations.php7
-rw-r--r--app/Locale/nb_NO/translations.php9
-rw-r--r--app/Locale/nl_NL/translations.php7
-rw-r--r--app/Locale/pl_PL/translations.php7
-rw-r--r--app/Locale/pt_BR/translations.php7
-rw-r--r--app/Locale/pt_PT/translations.php7
-rw-r--r--app/Locale/ru_RU/translations.php7
-rw-r--r--app/Locale/sr_Latn_RS/translations.php7
-rw-r--r--app/Locale/sv_SE/translations.php7
-rw-r--r--app/Locale/th_TH/translations.php7
-rw-r--r--app/Locale/tr_TR/translations.php7
-rw-r--r--app/Locale/zh_CN/translations.php7
-rw-r--r--app/ServiceProvider/ClassProvider.php14
-rw-r--r--app/Template/config/integrations.php20
-rw-r--r--app/constants.php5
36 files changed, 199 insertions, 575 deletions
diff --git a/app/Controller/Webhook.php b/app/Controller/Webhook.php
index 1b3a659b..1186680d 100644
--- a/app/Controller/Webhook.php
+++ b/app/Controller/Webhook.php
@@ -92,37 +92,4 @@ class Webhook extends Base
echo $result ? 'PARSED' : 'IGNORED';
}
-
- /**
- * Handle Postmark webhooks
- *
- * @access public
- */
- public function postmark()
- {
- $this->checkWebhookToken();
- echo $this->postmark->receiveEmail($this->request->getJson()) ? 'PARSED' : 'IGNORED';
- }
-
- /**
- * Handle Mailgun webhooks
- *
- * @access public
- */
- public function mailgun()
- {
- $this->checkWebhookToken();
- echo $this->mailgun->receiveEmail($_POST) ? 'PARSED' : 'IGNORED';
- }
-
- /**
- * Handle Sendgrid webhooks
- *
- * @access public
- */
- public function sendgrid()
- {
- $this->checkWebhookToken();
- echo $this->sendgrid->receiveEmail($_POST) ? 'PARSED' : 'IGNORED';
- }
}
diff --git a/app/Core/Base.php b/app/Core/Base.php
index 331b67e3..76723e8f 100644
--- a/app/Core/Base.php
+++ b/app/Core/Base.php
@@ -11,7 +11,7 @@ use Pimple\Container;
* @author Frederic Guillot
*
* @property \Kanboard\Core\Helper $helper
- * @property \Kanboard\Core\EmailClient $emailClient
+ * @property \Kanboard\Core\Mail\Client $emailClient
* @property \Kanboard\Core\HttpClient $httpClient
* @property \Kanboard\Core\Paginator $paginator
* @property \Kanboard\Core\Request $request
@@ -29,11 +29,7 @@ use Pimple\Container;
* @property \Kanboard\Integration\GitlabWebhook $gitlabWebhook
* @property \Kanboard\Integration\HipchatWebhook $hipchatWebhook
* @property \Kanboard\Integration\Jabber $jabber
- * @property \Kanboard\Integration\Mailgun $mailgun
- * @property \Kanboard\Integration\Postmark $postmark
- * @property \Kanboard\Integration\Sendgrid $sendgrid
* @property \Kanboard\Integration\SlackWebhook $slackWebhook
- * @property \Kanboard\Integration\Smtp $smtp
* @property \Kanboard\Formatter\ProjectGanttFormatter $projectGanttFormatter
* @property \Kanboard\Formatter\TaskFilterGanttFormatter $taskFilterGanttFormatter
* @property \Kanboard\Formatter\TaskFilterAutoCompleteFormatter $taskFilterAutoCompleteFormatter
diff --git a/app/Core/EmailClient.php b/app/Core/EmailClient.php
deleted file mode 100644
index 38d6b3f1..00000000
--- a/app/Core/EmailClient.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace Kanboard\Core;
-
-/**
- * Mail client
- *
- * @package core
- * @author Frederic Guillot
- */
-class EmailClient extends Base
-{
- /**
- * Send a HTML email
- *
- * @access public
- * @param string $email
- * @param string $name
- * @param string $subject
- * @param string $html
- */
- public function send($email, $name, $subject, $html)
- {
- $this->container['logger']->debug('Sending email to '.$email.' ('.MAIL_TRANSPORT.')');
-
- $start_time = microtime(true);
- $author = 'Kanboard';
-
- if (Session::isOpen() && $this->userSession->isLogged()) {
- $author = e('%s via Kanboard', $this->user->getFullname($this->session['user']));
- }
-
- switch (MAIL_TRANSPORT) {
- case 'sendgrid':
- $this->sendgrid->sendEmail($email, $name, $subject, $html, $author);
- break;
- case 'mailgun':
- $this->mailgun->sendEmail($email, $name, $subject, $html, $author);
- break;
- case 'postmark':
- $this->postmark->sendEmail($email, $name, $subject, $html, $author);
- break;
- default:
- $this->smtp->sendEmail($email, $name, $subject, $html, $author);
- }
-
- $this->container['logger']->debug('Email sent in '.round(microtime(true) - $start_time, 6).' seconds');
- }
-}
diff --git a/app/Core/Mail/Client.php b/app/Core/Mail/Client.php
new file mode 100644
index 00000000..c7cfaab9
--- /dev/null
+++ b/app/Core/Mail/Client.php
@@ -0,0 +1,96 @@
+<?php
+
+namespace Kanboard\Core\Mail;
+
+use Pimple\Container;
+use Kanboard\Core\Base;
+
+/**
+ * Mail Client
+ *
+ * @package mail
+ * @author Frederic Guillot
+ */
+class Client extends Base
+{
+ /**
+ * Mail transport instances
+ *
+ * @access private
+ * @var \Pimple\Container
+ */
+ private $transports;
+
+ /**
+ * Constructor
+ *
+ * @access public
+ * @param \Pimple\Container $container
+ */
+ public function __construct(Container $container)
+ {
+ parent::__construct($container);
+ $this->transports = new Container;
+ }
+
+ /**
+ * Send a HTML email
+ *
+ * @access public
+ * @param string $email
+ * @param string $name
+ * @param string $subject
+ * @param string $html
+ * @return EmailClient
+ */
+ public function send($email, $name, $subject, $html)
+ {
+ $this->container['logger']->debug('Sending email to '.$email.' ('.MAIL_TRANSPORT.')');
+
+ $start_time = microtime(true);
+ $author = 'Kanboard';
+
+ if ($this->userSession->isLogged()) {
+ $author = e('%s via Kanboard', $this->user->getFullname($this->session['user']));
+ }
+
+ $this->getTransport(MAIL_TRANSPORT)->sendEmail($email, $name, $subject, $html, $author);
+
+ if (DEBUG) {
+ $this->logger->debug('Email sent in '.round(microtime(true) - $start_time, 6).' seconds');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Get mail transport instance
+ *
+ * @access public
+ * @param string $transport
+ * @return EmailClientInterface
+ */
+ public function getTransport($transport)
+ {
+ return $this->transports[$transport];
+ }
+
+ /**
+ * Add a new mail transport
+ *
+ * @access public
+ * @param string $transport
+ * @param string $class
+ * @return EmailClient
+ */
+ public function setTransport($transport, $class)
+ {
+ $container = $this->container;
+
+ $this->transports[$transport] = function() use ($class, $container) {
+ return new $class($container);
+ };
+
+ return $this;
+ }
+}
diff --git a/app/Core/Mail/ClientInterface.php b/app/Core/Mail/ClientInterface.php
new file mode 100644
index 00000000..66263a98
--- /dev/null
+++ b/app/Core/Mail/ClientInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Kanboard\Core\Mail;
+
+/**
+ * Mail Client Interface
+ *
+ * @package mail
+ * @author Frederic Guillot
+ */
+interface ClientInterface
+{
+ /**
+ * Send a HTML email
+ *
+ * @access public
+ * @param string $email
+ * @param string $name
+ * @param string $subject
+ * @param string $html
+ * @param string $author
+ */
+ public function sendEmail($email, $name, $subject, $html, $author);
+}
diff --git a/app/Integration/Smtp.php b/app/Core/Mail/Transport/Mail.php
index 3ef6539d..ca06e208 100644
--- a/app/Integration/Smtp.php
+++ b/app/Core/Mail/Transport/Mail.php
@@ -1,21 +1,21 @@
<?php
-namespace Kanboard\Integration;
+namespace Kanboard\Core\Mail\Transport;
use Swift_Message;
use Swift_Mailer;
use Swift_MailTransport;
-use Swift_SendmailTransport;
-use Swift_SmtpTransport;
use Swift_TransportException;
+use Kanboard\Core\Base;
+use Kanboard\Core\Mail\ClientInterface;
/**
- * Smtp
+ * PHP Mail Handler
*
- * @package integration
+ * @package transport
* @author Frederic Guillot
*/
-class Smtp extends \Kanboard\Core\Base
+class Mail extends Base implements ClientInterface
{
/**
* Send a HTML email
@@ -40,32 +40,18 @@ class Smtp extends \Kanboard\Core\Base
Swift_Mailer::newInstance($this->getTransport())->send($message);
}
catch (Swift_TransportException $e) {
- $this->container['logger']->error($e->getMessage());
+ $this->logger->error($e->getMessage());
}
}
/**
* Get SwiftMailer transport
*
- * @access private
+ * @access protected
* @return \Swift_Transport
*/
- private function getTransport()
+ protected function getTransport()
{
- switch (MAIL_TRANSPORT) {
- case 'smtp':
- $transport = Swift_SmtpTransport::newInstance(MAIL_SMTP_HOSTNAME, MAIL_SMTP_PORT);
- $transport->setUsername(MAIL_SMTP_USERNAME);
- $transport->setPassword(MAIL_SMTP_PASSWORD);
- $transport->setEncryption(MAIL_SMTP_ENCRYPTION);
- break;
- case 'sendmail':
- $transport = Swift_SendmailTransport::newInstance(MAIL_SENDMAIL_COMMAND);
- break;
- default:
- $transport = Swift_MailTransport::newInstance();
- }
-
- return $transport;
+ return Swift_MailTransport::newInstance();
}
}
diff --git a/app/Core/Mail/Transport/Sendmail.php b/app/Core/Mail/Transport/Sendmail.php
new file mode 100644
index 00000000..849e3385
--- /dev/null
+++ b/app/Core/Mail/Transport/Sendmail.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace Kanboard\Core\Mail\Transport;
+
+use Swift_SendmailTransport;
+
+/**
+ * PHP Mail Handler
+ *
+ * @package transport
+ * @author Frederic Guillot
+ */
+class Sendmail extends Mail
+{
+ /**
+ * Get SwiftMailer transport
+ *
+ * @access protected
+ * @return \Swift_Transport
+ */
+ protected function getTransport()
+ {
+ return Swift_SendmailTransport::newInstance(MAIL_SENDMAIL_COMMAND);
+ }
+}
diff --git a/app/Core/Mail/Transport/Smtp.php b/app/Core/Mail/Transport/Smtp.php
new file mode 100644
index 00000000..757408ea
--- /dev/null
+++ b/app/Core/Mail/Transport/Smtp.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Kanboard\Core\Mail\Transport;
+
+use Swift_SmtpTransport;
+
+/**
+ * PHP Mail Handler
+ *
+ * @package transport
+ * @author Frederic Guillot
+ */
+class Smtp extends Mail
+{
+ /**
+ * Get SwiftMailer transport
+ *
+ * @access protected
+ * @return \Swift_Transport
+ */
+ protected function getTransport()
+ {
+ $transport = Swift_SmtpTransport::newInstance(MAIL_SMTP_HOSTNAME, MAIL_SMTP_PORT);
+ $transport->setUsername(MAIL_SMTP_USERNAME);
+ $transport->setPassword(MAIL_SMTP_PASSWORD);
+ $transport->setEncryption(MAIL_SMTP_ENCRYPTION);
+
+ return $transport;
+ }
+}
diff --git a/app/Core/Plugin/Base.php b/app/Core/Plugin/Base.php
index d8b196e1..e38ffee8 100644
--- a/app/Core/Plugin/Base.php
+++ b/app/Core/Plugin/Base.php
@@ -66,7 +66,7 @@ abstract class Base extends \Kanboard\Core\Base
*/
public function getPluginName()
{
- return ucfirst(substr(get_called_class(), 7, -7));
+ return ucfirst(substr(get_called_class(), 16, -7));
}
/**
diff --git a/app/Integration/Mailgun.php b/app/Integration/Mailgun.php
deleted file mode 100644
index 045284d2..00000000
--- a/app/Integration/Mailgun.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-
-namespace Kanboard\Integration;
-
-use Kanboard\Core\Tool;
-
-/**
- * Mailgun Integration
- *
- * @package integration
- * @author Frederic Guillot
- */
-class Mailgun extends \Kanboard\Core\Base
-{
- /**
- * Send a HTML email
- *
- * @access public
- * @param string $email
- * @param string $name
- * @param string $subject
- * @param string $html
- * @param string $author
- */
- public function sendEmail($email, $name, $subject, $html, $author)
- {
- $headers = array(
- 'Authorization: Basic '.base64_encode('api:'.MAILGUN_API_TOKEN)
- );
-
- $payload = array(
- 'from' => sprintf('%s <%s>', $author, MAIL_FROM),
- 'to' => sprintf('%s <%s>', $name, $email),
- 'subject' => $subject,
- 'html' => $html,
- );
-
- $this->httpClient->postForm('https://api.mailgun.net/v3/'.MAILGUN_DOMAIN.'/messages', $payload, $headers);
- }
-
- /**
- * Parse incoming email
- *
- * @access public
- * @param array $payload Incoming email
- * @return boolean
- */
- public function receiveEmail(array $payload)
- {
- if (empty($payload['sender']) || empty($payload['subject']) || empty($payload['recipient'])) {
- return false;
- }
-
- // The user must exists in Kanboard
- $user = $this->user->getByEmail($payload['sender']);
-
- if (empty($user)) {
- $this->container['logger']->debug('Mailgun: ignored => user not found');
- return false;
- }
-
- // The project must have a short name
- $project = $this->project->getByIdentifier(Tool::getMailboxHash($payload['recipient']));
-
- if (empty($project)) {
- $this->container['logger']->debug('Mailgun: ignored => project not found');
- return false;
- }
-
- // The user must be member of the project
- if (! $this->projectPermission->isMember($project['id'], $user['id'])) {
- $this->container['logger']->debug('Mailgun: ignored => user is not member of the project');
- return false;
- }
-
- // Get the Markdown contents
- if (! empty($payload['stripped-html'])) {
- $description = $this->htmlConverter->convert($payload['stripped-html']);
- }
- else if (! empty($payload['stripped-text'])) {
- $description = $payload['stripped-text'];
- }
- else {
- $description = '';
- }
-
- // Finally, we create the task
- return (bool) $this->taskCreation->create(array(
- 'project_id' => $project['id'],
- 'title' => $payload['subject'],
- 'description' => $description,
- 'creator_id' => $user['id'],
- ));
- }
-}
diff --git a/app/Integration/Postmark.php b/app/Integration/Postmark.php
deleted file mode 100644
index b57f92d4..00000000
--- a/app/Integration/Postmark.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-namespace Kanboard\Integration;
-
-/**
- * Postmark integration
- *
- * @package integration
- * @author Frederic Guillot
- */
-class Postmark extends \Kanboard\Core\Base
-{
- /**
- * Send a HTML email
- *
- * @access public
- * @param string $email
- * @param string $name
- * @param string $subject
- * @param string $html
- * @param string $author
- */
- public function sendEmail($email, $name, $subject, $html, $author)
- {
- $headers = array(
- 'Accept: application/json',
- 'X-Postmark-Server-Token: '.POSTMARK_API_TOKEN,
- );
-
- $payload = array(
- 'From' => sprintf('%s <%s>', $author, MAIL_FROM),
- 'To' => sprintf('%s <%s>', $name, $email),
- 'Subject' => $subject,
- 'HtmlBody' => $html,
- );
-
- $this->httpClient->postJson('https://api.postmarkapp.com/email', $payload, $headers);
- }
-
- /**
- * Parse incoming email
- *
- * @access public
- * @param array $payload Incoming email
- * @return boolean
- */
- public function receiveEmail(array $payload)
- {
- if (empty($payload['From']) || empty($payload['Subject']) || empty($payload['MailboxHash'])) {
- return false;
- }
-
- // The user must exists in Kanboard
- $user = $this->user->getByEmail($payload['From']);
-
- if (empty($user)) {
- $this->container['logger']->debug('Postmark: ignored => user not found');
- return false;
- }
-
- // The project must have a short name
- $project = $this->project->getByIdentifier($payload['MailboxHash']);
-
- if (empty($project)) {
- $this->container['logger']->debug('Postmark: ignored => project not found');
- return false;
- }
-
- // The user must be member of the project
- if (! $this->projectPermission->isMember($project['id'], $user['id'])) {
- $this->container['logger']->debug('Postmark: ignored => user is not member of the project');
- return false;
- }
-
- // Get the Markdown contents
- if (! empty($payload['HtmlBody'])) {
- $description = $this->htmlConverter->convert($payload['HtmlBody']);
- }
- else if (! empty($payload['TextBody'])) {
- $description = $payload['TextBody'];
- }
- else {
- $description = '';
- }
-
- // Finally, we create the task
- return (bool) $this->taskCreation->create(array(
- 'project_id' => $project['id'],
- 'title' => $payload['Subject'],
- 'description' => $description,
- 'creator_id' => $user['id'],
- ));
- }
-}
diff --git a/app/Integration/Sendgrid.php b/app/Integration/Sendgrid.php
deleted file mode 100644
index 2da87119..00000000
--- a/app/Integration/Sendgrid.php
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-
-namespace Kanboard\Integration;
-
-use Kanboard\Core\Tool;
-
-/**
- * Sendgrid Integration
- *
- * @package integration
- * @author Frederic Guillot
- */
-class Sendgrid extends \Kanboard\Core\Base
-{
- /**
- * Send a HTML email
- *
- * @access public
- * @param string $email
- * @param string $name
- * @param string $subject
- * @param string $html
- * @param string $author
- */
- public function sendEmail($email, $name, $subject, $html, $author)
- {
- $payload = array(
- 'api_user' => SENDGRID_API_USER,
- 'api_key' => SENDGRID_API_KEY,
- 'to' => $email,
- 'toname' => $name,
- 'from' => MAIL_FROM,
- 'fromname' => $author,
- 'html' => $html,
- 'subject' => $subject,
- );
-
- $this->httpClient->postForm('https://api.sendgrid.com/api/mail.send.json', $payload);
- }
-
- /**
- * Parse incoming email
- *
- * @access public
- * @param array $payload Incoming email
- * @return boolean
- */
- public function receiveEmail(array $payload)
- {
- if (empty($payload['envelope']) || empty($payload['subject'])) {
- return false;
- }
-
- $envelope = json_decode($payload['envelope'], true);
- $sender = isset($envelope['to'][0]) ? $envelope['to'][0] : '';
-
- // The user must exists in Kanboard
- $user = $this->user->getByEmail($envelope['from']);
-
- if (empty($user)) {
- $this->container['logger']->debug('SendgridWebhook: ignored => user not found');
- return false;
- }
-
- // The project must have a short name
- $project = $this->project->getByIdentifier(Tool::getMailboxHash($sender));
-
- if (empty($project)) {
- $this->container['logger']->debug('SendgridWebhook: ignored => project not found');
- return false;
- }
-
- // The user must be member of the project
- if (! $this->projectPermission->isMember($project['id'], $user['id'])) {
- $this->container['logger']->debug('SendgridWebhook: ignored => user is not member of the project');
- return false;
- }
-
- // Get the Markdown contents
- if (! empty($payload['html'])) {
- $description = $this->htmlConverter->convert($payload['html']);
- }
- else if (! empty($payload['text'])) {
- $description = $payload['text'];
- }
- else {
- $description = '';
- }
-
- // Finally, we create the task
- return (bool) $this->taskCreation->create(array(
- 'project_id' => $project['id'],
- 'title' => $payload['subject'],
- 'description' => $description,
- 'creator_id' => $user['id'],
- ));
- }
-}
diff --git a/app/Locale/cs_CZ/translations.php b/app/Locale/cs_CZ/translations.php
index ba3d809f..0ea35a9b 100644
--- a/app/Locale/cs_CZ/translations.php
+++ b/app/Locale/cs_CZ/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Kopie',
'Project cloned successfully.' => 'Kopie projektu byla úspěšně vytvořena.',
'Unable to clone this project.' => 'Kopii projektu nelze vytvořit.',
- 'Email notifications' => 'Upozornění E-Mailem ',
'Enable email notifications' => 'Povolit upozornění pomocí e-mailů',
'Task position:' => 'Pořadí úkolu:',
'The task #%d have been opened.' => 'Úkol #%d byl znovu otevřen.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Schwedische Kronen',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'Identifikátor projektu je volitelný alfanumerický kód používaný k identifikaci vašeho projektu.',
'Identifier' => 'Identifikator',
- 'Postmark (incoming emails)' => 'Postmark (Eingehende E-Mails)',
- 'Help on Postmark integration' => 'Hilfe bei Postmark-Integration',
- 'Mailgun (incoming emails)' => 'Mailgun (Eingehende E-Mails)',
- 'Help on Mailgun integration' => 'Hilfe bei Mailgun-Integration',
- 'Sendgrid (incoming emails)' => 'Sendgrid (Eingehende E-Mails)',
- 'Help on Sendgrid integration' => 'Hilfe bei Sendgrid-Integration',
'Disable two factor authentication' => 'Zrušit dvou stupňovou autorizaci',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Willst du wirklich für folgenden Nutzer die Zwei-Faktor-Authentifizierung deaktivieren: "%s"?',
// 'Edit link' => '',
diff --git a/app/Locale/da_DK/translations.php b/app/Locale/da_DK/translations.php
index fa45e581..a0578120 100644
--- a/app/Locale/da_DK/translations.php
+++ b/app/Locale/da_DK/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Kopier',
'Project cloned successfully.' => 'Projektet er kopieret.',
'Unable to clone this project.' => 'Projektet kunne ikke kopieres',
- 'Email notifications' => 'Email notifikationer',
'Enable email notifications' => 'Aktivér email notifikationer',
'Task position:' => 'Opgave position:',
'The task #%d have been opened.' => 'Opgaven #%d er blevet åbnet.',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/de_DE/translations.php b/app/Locale/de_DE/translations.php
index c15e4376..13d88b11 100644
--- a/app/Locale/de_DE/translations.php
+++ b/app/Locale/de_DE/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'duplizieren',
'Project cloned successfully.' => 'Projekt wurde dupliziert.',
'Unable to clone this project.' => 'Duplizieren dieses Projekts schlug fehl.',
- 'Email notifications' => 'E-Mail-Benachrichtigungen',
'Enable email notifications' => 'E-Mail-Benachrichtigungen einschalten',
'Task position:' => 'Position der Aufgabe',
'The task #%d have been opened.' => 'Die Aufgabe #%d wurde geöffnet.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Schwedische Kronen',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'Der Projektidentifikator ist ein optionaler alphanumerischer Code, der das Projekt identifiziert.',
'Identifier' => 'Identifikator',
- 'Postmark (incoming emails)' => 'Postmark (Eingehende E-Mails)',
- 'Help on Postmark integration' => 'Hilfe bei Postmark-Integration',
- 'Mailgun (incoming emails)' => 'Mailgun (Eingehende E-Mails)',
- 'Help on Mailgun integration' => 'Hilfe bei Mailgun-Integration',
- 'Sendgrid (incoming emails)' => 'Sendgrid (Eingehende E-Mails)',
- 'Help on Sendgrid integration' => 'Hilfe bei Sendgrid-Integration',
'Disable two factor authentication' => 'Deaktiviere Zwei-Faktor-Authentifizierung',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Willst du wirklich für folgenden Nutzer die Zwei-Faktor-Authentifizierung deaktivieren: "%s"?',
'Edit link' => 'Verbindung bearbeiten',
diff --git a/app/Locale/es_ES/translations.php b/app/Locale/es_ES/translations.php
index 152a617a..7e951471 100644
--- a/app/Locale/es_ES/translations.php
+++ b/app/Locale/es_ES/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Clonar',
'Project cloned successfully.' => 'Proyecto clonado correctamente',
'Unable to clone this project.' => 'Impsible clonar proyecto',
- 'Email notifications' => 'Notificaciones correo electrónico',
'Enable email notifications' => 'Habilitar notificaciones por correo electrónico',
'Task position:' => 'Posición de la tarea',
'The task #%d have been opened.' => 'La tarea #%d ha sido abierta',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Corona sueca',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'El identificador del proyecto us un código opcional alfanumérico que se usa para identificar su proyecto.',
'Identifier' => 'Identificador',
- 'Postmark (incoming emails)' => 'Matasellos (emails entrantes)',
- 'Help on Postmark integration' => 'Ayuda sobre la integración de Matasellos',
- 'Mailgun (incoming emails)' => 'Mailgun (emails entrantes)',
- 'Help on Mailgun integration' => 'Ayuda sobre la integración con Mailgun',
- 'Sendgrid (incoming emails)' => 'Sendgrid (emails entrantes)',
- 'Help on Sendgrid integration' => 'Ayuda sobre la integración con Sendgrid',
'Disable two factor authentication' => 'Desactivar la autenticación de dos factores',
'Do you really want to disable the two factor authentication for this user: "%s"?' => '¿Realmentes quiere desactuvar la autenticación de dos factores para este usuario: "%s?"',
'Edit link' => 'Editar enlace',
diff --git a/app/Locale/fi_FI/translations.php b/app/Locale/fi_FI/translations.php
index 71844cc6..be4d2275 100644
--- a/app/Locale/fi_FI/translations.php
+++ b/app/Locale/fi_FI/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Kahdenna',
'Project cloned successfully.' => 'Projekti kahdennettu onnistuneesti',
'Unable to clone this project.' => 'Projektin kahdennus epäonnistui',
- 'Email notifications' => 'Sähköposti-ilmoitukset',
'Enable email notifications' => 'Ota käyttöön sähköposti-ilmoitukset',
'Task position:' => 'Tehtävän sijainti',
'The task #%d have been opened.' => 'Tehtävä #%d on avattu',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/fr_FR/translations.php b/app/Locale/fr_FR/translations.php
index ec32ecb1..1afdeab3 100644
--- a/app/Locale/fr_FR/translations.php
+++ b/app/Locale/fr_FR/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Clone',
'Project cloned successfully.' => 'Projet cloné avec succès.',
'Unable to clone this project.' => 'Impossible de cloner ce projet.',
- 'Email notifications' => 'Notifications par email',
'Enable email notifications' => 'Activer les notifications par emails',
'Task position:' => 'Position de la tâche :',
'The task #%d have been opened.' => 'La tâche #%d a été ouverte.',
@@ -737,12 +736,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Couronne suédoise',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'L\'identificateur du projet est un code alpha-numérique optionnel pour identifier votre projet.',
'Identifier' => 'Identificateur',
- 'Postmark (incoming emails)' => 'Postmark (emails entrants)',
- 'Help on Postmark integration' => 'Aide sur l\'intégration avec Postmark',
- 'Mailgun (incoming emails)' => 'Mailgun (emails entrants)',
- 'Help on Mailgun integration' => 'Aide sur l\'intégration avec Mailgun',
- 'Sendgrid (incoming emails)' => 'Sendgrid (emails entrants)',
- 'Help on Sendgrid integration' => 'Aide sur l\'intégration avec Sendgrid',
'Disable two factor authentication' => 'Désactiver l\'authentification à deux facteurs',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Voulez-vous vraiment désactiver l\'authentification à deux facteurs pour cet utilisateur : « %s » ?',
'Edit link' => 'Modifier un lien',
diff --git a/app/Locale/hu_HU/translations.php b/app/Locale/hu_HU/translations.php
index bef65570..bd9ac9b5 100644
--- a/app/Locale/hu_HU/translations.php
+++ b/app/Locale/hu_HU/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Másolat',
'Project cloned successfully.' => 'A projekt sikeresen másolva.',
'Unable to clone this project.' => 'A projekt másolása sikertelen.',
- 'Email notifications' => 'E-mail értesítések',
'Enable email notifications' => 'E-mail értesítések engedélyezése',
'Task position:' => 'Feladat helye:',
'The task #%d have been opened.' => 'Feladat #%d megnyitva.',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/id_ID/translations.php b/app/Locale/id_ID/translations.php
index 03c96b83..ef4eefee 100644
--- a/app/Locale/id_ID/translations.php
+++ b/app/Locale/id_ID/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Klon',
'Project cloned successfully.' => 'Kloning proyek berhasil.',
'Unable to clone this project.' => 'Tidak dapat mengkloning proyek.',
- 'Email notifications' => 'Pemberitahuan email',
'Enable email notifications' => 'Aktifkan pemberitahuan dari email',
'Task position:' => 'Posisi tugas :',
'The task #%d have been opened.' => 'Tugas #%d telah dibuka.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Krona Swedia',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'Identifier proyek adalah kode alfanumerik opsional digunakan untuk mengidentifikasi proyek Anda.',
'Identifier' => 'Identifier',
- 'Postmark (incoming emails)' => 'Postmark (email masuk)',
- 'Help on Postmark integration' => 'Bantuan pada integrasi Postmark',
- 'Mailgun (incoming emails)' => 'Mailgun (email masuk)',
- 'Help on Mailgun integration' => 'Bantuan pada integrasi Mailgun',
- 'Sendgrid (incoming emails)' => 'Sendgrid (email masuk)',
- 'Help on Sendgrid integration' => 'Bantuan pada integrasi Sendgrid',
'Disable two factor authentication' => 'Matikan dua faktor otentifikasi',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Apakah anda yakin akan mematikan dua faktor otentifikasi untuk pengguna ini : « %s » ?',
'Edit link' => 'Modifikasi tautan',
diff --git a/app/Locale/it_IT/translations.php b/app/Locale/it_IT/translations.php
index a9f19d84..e906888a 100644
--- a/app/Locale/it_IT/translations.php
+++ b/app/Locale/it_IT/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Clona',
'Project cloned successfully.' => 'Progetto clonato con successo.',
'Unable to clone this project.' => 'Impossibile clonare questo progetto',
- 'Email notifications' => 'Notifiche email',
'Enable email notifications' => 'Abilita le notifiche via email',
'Task position:' => 'Posizione del compito:',
'The task #%d have been opened.' => 'Il compito #%d è stato aperto.',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/ja_JP/translations.php b/app/Locale/ja_JP/translations.php
index 001fd014..7bf174ed 100644
--- a/app/Locale/ja_JP/translations.php
+++ b/app/Locale/ja_JP/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => '複製',
'Project cloned successfully.' => 'プロジェクトを複製しました。',
'Unable to clone this project.' => 'プロジェクトの複製に失敗しました。',
- 'Email notifications' => 'メール通知',
'Enable email notifications' => 'メール通知を設定',
'Task position:' => 'タスクの位置:',
'The task #%d have been opened.' => 'タスク #%d をオープンしました。',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/nb_NO/translations.php b/app/Locale/nb_NO/translations.php
index b1aaf48a..ba4a06d5 100644
--- a/app/Locale/nb_NO/translations.php
+++ b/app/Locale/nb_NO/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Kopier',
'Project cloned successfully.' => 'Prosjektet er kopiert.',
'Unable to clone this project.' => 'Prosjektet kunne ikke kopieres',
- 'Email notifications' => 'Epostvarslinger',
'Enable email notifications' => 'Aktiver epostvarslinger',
'Task position:' => 'Oppgaveposisjon:',
'The task #%d have been opened.' => 'Oppgaven #%d er åpnet.',
@@ -730,17 +729,11 @@ return array(
// 'This chart show the task complexity over the time (Work Remaining).' => '',
// 'Screenshot taken %s' => '',
'Add a screenshot' => 'Legg til et skjermbilde',
- 'Take a screenshot and press CTRL+V or ⌘+V to paste here.' => 'Ta et skjermbilde og trykk CTRL+V for å lime det inn her.',
+ // 'Take a screenshot and press CTRL+V or ⌘+V to paste here.' => '',
'Screenshot uploaded successfully.' => 'Skjermbilde opplastet',
// 'SEK - Swedish Krona' => '',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'Prosjektkoden er en alfanumerisk kode som kan brukes for å identifisere prosjektet',
'Identifier' => 'Prosjektkode',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/nl_NL/translations.php b/app/Locale/nl_NL/translations.php
index 5ee15c25..09076565 100644
--- a/app/Locale/nl_NL/translations.php
+++ b/app/Locale/nl_NL/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Kloon',
'Project cloned successfully.' => 'Project succesvol gekloond.',
'Unable to clone this project.' => 'Klonen van project niet gelukt.',
- 'Email notifications' => 'Email notificatie',
'Enable email notifications' => 'Email notificatie aanzetten',
'Task position:' => 'Taak positie :',
'The task #%d have been opened.' => 'Taak #%d is geopend.',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/pl_PL/translations.php b/app/Locale/pl_PL/translations.php
index f0d43ad5..92ad4c26 100644
--- a/app/Locale/pl_PL/translations.php
+++ b/app/Locale/pl_PL/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Sklonuj',
'Project cloned successfully.' => 'Projekt sklonowany pomyślnie.',
'Unable to clone this project.' => 'Nie można sklonować projektu.',
- 'Email notifications' => 'Powiadomienia email',
'Enable email notifications' => 'Włącz powiadomienia email',
'Task position:' => 'Pozycja zadania:',
'The task #%d have been opened.' => 'Zadania #%d zostały otwarte.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Korona szwedzka',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'Identyfikator projektu to opcjonalny kod alfanumeryczny do identyfikacji projektu.',
'Identifier' => 'Identyfikator',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
'Disable two factor authentication' => 'Wyłącz uwierzytelnianie dwuetapowe',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Czy na pewno chcesz wyłączyć uwierzytelnianie dwuetapowe dla tego użytkownika: "%s"?',
'Edit link' => 'Edytuj link',
diff --git a/app/Locale/pt_BR/translations.php b/app/Locale/pt_BR/translations.php
index 52cb14cc..6112f34c 100644
--- a/app/Locale/pt_BR/translations.php
+++ b/app/Locale/pt_BR/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Clonar',
'Project cloned successfully.' => 'Projeto clonado com sucesso.',
'Unable to clone this project.' => 'Não foi possível clonar este projeto.',
- 'Email notifications' => 'Notificações por email',
'Enable email notifications' => 'Habilitar notificações por email',
'Task position:' => 'Posição da tarefa:',
'The task #%d have been opened.' => 'A tarefa #%d foi aberta.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Coroa sueca',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'O identificador de projeto é um código alfanumérico opcional utilizado para identificar o seu projeto.',
'Identifier' => 'Identificador',
- 'Postmark (incoming emails)' => 'Postmark (e-mails recebidos)',
- 'Help on Postmark integration' => 'Ajuda na integração do Postmark',
- 'Mailgun (incoming emails)' => 'Mailgun (e-mails recebidos)',
- 'Help on Mailgun integration' => 'Ajuda na integração do Mailgun',
- 'Sendgrid (incoming emails)' => 'Sendgrid (e-mails recebidos)',
- 'Help on Sendgrid integration' => 'Ajuda na integração do Sendgrid',
'Disable two factor authentication' => 'Desativar autenticação à dois fatores',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Você deseja realmente desativar a autenticação à dois fatores para esse usuário: "%s"?',
'Edit link' => 'Editar um link',
diff --git a/app/Locale/pt_PT/translations.php b/app/Locale/pt_PT/translations.php
index ac8961ab..800e5ee3 100644
--- a/app/Locale/pt_PT/translations.php
+++ b/app/Locale/pt_PT/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Clonar',
'Project cloned successfully.' => 'Projecto clonado com sucesso.',
'Unable to clone this project.' => 'Não foi possível clonar este projecto.',
- 'Email notifications' => 'Notificações por email',
'Enable email notifications' => 'Activar notificações por email',
'Task position:' => 'Posição da tarefa:',
'The task #%d have been opened.' => 'A tarefa #%d foi aberta.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Coroa sueca',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'O identificador de projecto é um código alfanumérico opcional utilizado para identificar o seu projecto.',
'Identifier' => 'Identificador',
- 'Postmark (incoming emails)' => 'Postmark (e-mails recebidos)',
- 'Help on Postmark integration' => 'Ajuda na integração do Postmark',
- 'Mailgun (incoming emails)' => 'Mailgun (e-mails recebidos)',
- 'Help on Mailgun integration' => 'Ajuda na integração do Mailgun',
- 'Sendgrid (incoming emails)' => 'Sendgrid (e-mails recebidos)',
- 'Help on Sendgrid integration' => 'Ajuda na integração do Sendgrid',
'Disable two factor authentication' => 'Desactivar autenticação com dois factores',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Tem a certeza que quer desactivar a autenticação com dois factores para esse utilizador: "%s"?',
'Edit link' => 'Editar um link',
diff --git a/app/Locale/ru_RU/translations.php b/app/Locale/ru_RU/translations.php
index 4a64e066..fd0540e0 100644
--- a/app/Locale/ru_RU/translations.php
+++ b/app/Locale/ru_RU/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Клонировать',
'Project cloned successfully.' => 'Проект клонирован.',
'Unable to clone this project.' => 'Не удалось клонировать проект.',
- 'Email notifications' => 'Уведомления по e-mail',
'Enable email notifications' => 'Включить уведомления по e-mail',
'Task position:' => 'Позиция задачи:',
'The task #%d have been opened.' => 'Задача #%d была открыта.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Шведская крона',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'Идентификатор проекта - это опциональный буквенно-цифровой код использующийся для идентификации проекта',
'Identifier' => 'Идентификатор',
- 'Postmark (incoming emails)' => 'Postmark (входящие сообщения)',
- 'Help on Postmark integration' => 'Справка о Postmark интеграции',
- 'Mailgun (incoming emails)' => 'Mailgun (входящие сообщения)',
- 'Help on Mailgun integration' => 'Справка о Mailgun интеграции',
- 'Sendgrid (incoming emails)' => 'Sendgrid (входящие сообщения)',
- 'Help on Sendgrid integration' => 'Справка о Sendgrid интеграции',
'Disable two factor authentication' => 'Выключить двухфакторную авторизацию',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Вы действительно хотите выключить двухфакторную авторизацию для пользователя "%s"?',
'Edit link' => 'Редактировать ссылку',
diff --git a/app/Locale/sr_Latn_RS/translations.php b/app/Locale/sr_Latn_RS/translations.php
index 0f80aa1e..a1eac165 100644
--- a/app/Locale/sr_Latn_RS/translations.php
+++ b/app/Locale/sr_Latn_RS/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Iskopiraj',
'Project cloned successfully.' => 'Projekat uspešno iskopiran.',
'Unable to clone this project.' => 'Nije moguće iskopirati projekat.',
- 'Email notifications' => 'Obaveštenje e-mailom',
'Enable email notifications' => 'Omogući obaveštenja e-mailom',
'Task position:' => 'Pozicija zadatka:',
'The task #%d have been opened.' => 'Zadatak #%d je otvoren.',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/sv_SE/translations.php b/app/Locale/sv_SE/translations.php
index f1994f81..6faf7f60 100644
--- a/app/Locale/sv_SE/translations.php
+++ b/app/Locale/sv_SE/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Klona',
'Project cloned successfully.' => 'Projektet har klonats.',
'Unable to clone this project.' => 'Kunde inte klona projektet.',
- 'Email notifications' => 'Epostnotiser',
'Enable email notifications' => 'Aktivera epostnotiser',
'Task position:' => 'Uppgiftsposition:',
'The task #%d have been opened.' => 'Uppgiften #%d har öppnats.',
@@ -735,12 +734,6 @@ return array(
'SEK - Swedish Krona' => 'SEK - Svensk Krona',
'The project identifier is an optional alphanumeric code used to identify your project.' => 'Projektidentifieraren är en valbar alfanumerisk kod som används för att identifiera ditt projekt.',
'Identifier' => 'Identifierare',
- 'Postmark (incoming emails)' => 'Postmark (inkommande e-post)',
- 'Help on Postmark integration' => 'Hjälp för Postmark integration',
- 'Mailgun (incoming emails)' => 'Mailgrun (inkommande e-post)',
- 'Help on Mailgun integration' => 'Hjälp för Mailgrun integration',
- 'Sendgrid (incoming emails)' => 'Sendgrid (inkommande e-post)',
- 'Help on Sendgrid integration' => 'Hjälp för Sendgrid integration',
'Disable two factor authentication' => 'Inaktivera två-faktors autentisering',
'Do you really want to disable the two factor authentication for this user: "%s"?' => 'Vill du verkligen inaktivera två-faktors autentisering för denna användare: "%s"?',
'Edit link' => 'Ändra länk',
diff --git a/app/Locale/th_TH/translations.php b/app/Locale/th_TH/translations.php
index 931bd87c..b2918ae2 100644
--- a/app/Locale/th_TH/translations.php
+++ b/app/Locale/th_TH/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'เลียนแบบ',
'Project cloned successfully.' => 'เลียนแบบโปรเจคเรียบร้อยแล้ว',
'Unable to clone this project.' => 'ไม่สามารถเลียบแบบโปรเจคได้',
- 'Email notifications' => 'อีเมลแจ้งเตือน',
'Enable email notifications' => 'เปิดอีเมลแจ้งเตือน',
'Task position:' => 'ตำแหน่งงาน',
'The task #%d have been opened.' => 'งานที่ #%d ถุกเปิด',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
'Edit link' => 'แก้ไขลิงค์',
diff --git a/app/Locale/tr_TR/translations.php b/app/Locale/tr_TR/translations.php
index 53f8fb95..54cb165d 100644
--- a/app/Locale/tr_TR/translations.php
+++ b/app/Locale/tr_TR/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => 'Kopya oluştur',
'Project cloned successfully.' => 'Proje kopyası başarıyla oluşturuldu.',
'Unable to clone this project.' => 'Proje kopyası oluşturulamadı.',
- 'Email notifications' => 'E-Posta bilgilendirmesi',
'Enable email notifications' => 'E-Posta bilgilendirmesini aç',
'Task position:' => 'Görev pozisyonu',
'The task #%d have been opened.' => '#%d numaralı görev açıldı.',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
// 'Edit link' => '',
diff --git a/app/Locale/zh_CN/translations.php b/app/Locale/zh_CN/translations.php
index 5863934a..02e0572c 100644
--- a/app/Locale/zh_CN/translations.php
+++ b/app/Locale/zh_CN/translations.php
@@ -353,7 +353,6 @@ return array(
'Clone' => '克隆',
'Project cloned successfully.' => '成功复制项目。',
'Unable to clone this project.' => '无法复制此项目',
- 'Email notifications' => '邮件通知',
'Enable email notifications' => '启用邮件通知',
'Task position:' => '任务位置:',
'The task #%d have been opened.' => '任务#%d已经被开启.',
@@ -735,12 +734,6 @@ return array(
// 'SEK - Swedish Krona' => '',
// 'The project identifier is an optional alphanumeric code used to identify your project.' => '',
// 'Identifier' => '',
- // 'Postmark (incoming emails)' => '',
- // 'Help on Postmark integration' => '',
- // 'Mailgun (incoming emails)' => '',
- // 'Help on Mailgun integration' => '',
- // 'Sendgrid (incoming emails)' => '',
- // 'Help on Sendgrid integration' => '',
// 'Disable two factor authentication' => '',
// 'Do you really want to disable the two factor authentication for this user: "%s"?' => '',
'Edit link' => '编辑链接',
diff --git a/app/ServiceProvider/ClassProvider.php b/app/ServiceProvider/ClassProvider.php
index d91bced7..4acebfeb 100644
--- a/app/ServiceProvider/ClassProvider.php
+++ b/app/ServiceProvider/ClassProvider.php
@@ -3,6 +3,7 @@
namespace Kanboard\ServiceProvider;
use Kanboard\Core\Plugin\Loader;
+use Kanboard\Core\Mail\Client as EmailClient;
use Kanboard\Core\ObjectStorage\FileStorage;
use Kanboard\Core\Paginator;
use Kanboard\Core\OAuth2;
@@ -78,7 +79,6 @@ class ClassProvider implements ServiceProviderInterface
'ProjectGanttFormatter',
),
'Core' => array(
- 'EmailClient',
'Helper',
'HttpClient',
'Lexer',
@@ -99,11 +99,7 @@ class ClassProvider implements ServiceProviderInterface
'GitlabWebhook',
'HipchatWebhook',
'Jabber',
- 'Mailgun',
- 'Postmark',
- 'Sendgrid',
'SlackWebhook',
- 'Smtp',
)
);
@@ -127,6 +123,14 @@ class ClassProvider implements ServiceProviderInterface
return new FileStorage(FILES_DIR);
};
+ $container['emailClient'] = function($container) {
+ $mailer = new EmailClient($container);
+ $mailer->setTransport('smtp', '\Kanboard\Core\Mail\Transport\Smtp');
+ $mailer->setTransport('sendmail', '\Kanboard\Core\Mail\Transport\Sendmail');
+ $mailer->setTransport('mail', '\Kanboard\Core\Mail\Transport\Mail');
+ return $mailer;
+ };
+
$container['pluginLoader'] = new Loader($container);
$container['cspRules'] = array('style-src' => "'self' 'unsafe-inline'", 'img-src' => '* data:');
diff --git a/app/Template/config/integrations.php b/app/Template/config/integrations.php
index 4e24a270..b454fa86 100644
--- a/app/Template/config/integrations.php
+++ b/app/Template/config/integrations.php
@@ -6,6 +6,8 @@
<?= $this->form->csrf() ?>
+ <?= $this->hook->render('template:config:integrations', array('values' => $values)) ?>
+
<h3><i class="fa fa-google"></i> <?= t('Google Authentication') ?></h3>
<div class="listing">
<input type="text" class="auto-select" readonly="readonly" value="<?= $this->url->href('oauth', 'google', array(), false, '', true) ?>"/><br/>
@@ -24,24 +26,6 @@
<p class="form-help"><?= $this->url->doc(t('Help on Gitlab authentication'), 'gitlab-authentication') ?></p>
</div>
- <h3><img src="<?= $this->url->dir() ?>assets/img/mailgun-icon.png"/>&nbsp;<?= t('Mailgun (incoming emails)') ?></h3>
- <div class="listing">
- <input type="text" class="auto-select" readonly="readonly" value="<?= $this->url->href('webhook', 'mailgun', array('token' => $values['webhook_token']), false, '', true) ?>"/><br/>
- <p class="form-help"><?= $this->url->doc(t('Help on Mailgun integration'), 'mailgun') ?></p>
- </div>
-
- <h3><img src="<?= $this->url->dir() ?>assets/img/sendgrid-icon.png"/>&nbsp;<?= t('Sendgrid (incoming emails)') ?></h3>
- <div class="listing">
- <input type="text" class="auto-select" readonly="readonly" value="<?= $this->url->href('webhook', 'sendgrid', array('token' => $values['webhook_token']), false, '', true) ?>"/><br/>
- <p class="form-help"><?= $this->url->doc(t('Help on Sendgrid integration'), 'sendgrid') ?></p>
- </div>
-
- <h3><img src="<?= $this->url->dir() ?>assets/img/postmark-icon.png"/>&nbsp;<?= t('Postmark (incoming emails)') ?></h3>
- <div class="listing">
- <input type="text" class="auto-select" readonly="readonly" value="<?= $this->url->href('webhook', 'postmark', array('token' => $values['webhook_token']), false, '', true) ?>"/><br/>
- <p class="form-help"><?= $this->url->doc(t('Help on Postmark integration'), 'postmark') ?></p>
- </div>
-
<h3><img src="<?= $this->url->dir() ?>assets/img/gravatar-icon.png"/>&nbsp;<?= t('Gravatar') ?></h3>
<div class="listing">
<?= $this->form->checkbox('integration_gravatar', t('Enable Gravatar images'), 1, $values['integration_gravatar'] == 1) ?>
diff --git a/app/constants.php b/app/constants.php
index 004f7cf7..5010dacd 100644
--- a/app/constants.php
+++ b/app/constants.php
@@ -82,11 +82,6 @@ defined('MAIL_SMTP_USERNAME') or define('MAIL_SMTP_USERNAME', '');
defined('MAIL_SMTP_PASSWORD') or define('MAIL_SMTP_PASSWORD', '');
defined('MAIL_SMTP_ENCRYPTION') or define('MAIL_SMTP_ENCRYPTION', null);
defined('MAIL_SENDMAIL_COMMAND') or define('MAIL_SENDMAIL_COMMAND', '/usr/sbin/sendmail -bs');
-defined('POSTMARK_API_TOKEN') or define('POSTMARK_API_TOKEN', '');
-defined('MAILGUN_API_TOKEN') or define('MAILGUN_API_TOKEN', '');
-defined('MAILGUN_DOMAIN') or define('MAILGUN_DOMAIN', '');
-defined('SENDGRID_API_USER') or define('SENDGRID_API_USER', '');
-defined('SENDGRID_API_KEY') or define('SENDGRID_API_KEY', '');
// Enable or disable "Strict-Transport-Security" HTTP header
defined('ENABLE_HSTS') or define('ENABLE_HSTS', true);