Conifgure email settings through user interface

This commit is contained in:
Frederic Guillot
2016-06-05 14:53:46 -04:00
parent a08339059b
commit cd4c09c10a
35 changed files with 213 additions and 82 deletions

View File

@@ -11,6 +11,7 @@ New features:
Improvements: Improvements:
* Configure email settings with the user interface in addition to config file
* Upgrade Docker image to Alpine Linux 3.4 * Upgrade Docker image to Alpine Linux 3.4
* Move task import to a separate section * Move task import to a separate section
* Mark web notification as read when clicking on it * Mark web notification as read when clicking on it

View File

@@ -72,6 +72,7 @@ class ConfigController extends BaseController
public function application() public function application()
{ {
$this->response->html($this->helper->layout->config('config/application', array( $this->response->html($this->helper->layout->config('config/application', array(
'mail_transports' => $this->emailClient->getAvailableTransports(),
'languages' => $this->languageModel->getLanguages(), 'languages' => $this->languageModel->getLanguages(),
'timezones' => $this->timezoneModel->getTimezones(), 'timezones' => $this->timezoneModel->getTimezones(),
'date_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateFormats()), 'date_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateFormats()),
@@ -81,6 +82,26 @@ class ConfigController extends BaseController
))); )));
} }
/**
* Display the email settings page
*
* @access public
*/
public function email()
{
$values = $this->configModel->getAll();
if (empty($values['mail_transport'])) {
$values['mail_transport'] = MAIL_TRANSPORT;
}
$this->response->html($this->helper->layout->config('config/email', array(
'values' => $values,
'mail_transports' => $this->emailClient->getAvailableTransports(),
'title' => t('Settings').' > '.t('Email settings'),
)));
}
/** /**
* Display the project settings page * Display the project settings page
* *

View File

@@ -102,4 +102,16 @@ class Client extends Base
return $this; return $this;
} }
/**
* Return the list of registered transports
*
* @access public
* @return array
*/
public function getAvailableTransports()
{
$availableTransports = $this->transports->keys();
return array_combine($availableTransports, $availableTransports);
}
} }

View File

@@ -62,4 +62,21 @@ class MailHelper extends Base
return MAIL_FROM; return MAIL_FROM;
} }
/**
* Get mail sender address
*
* @access public
* @return string
*/
public function getMailTransport()
{
$transport = $this->configModel->get('mail_transport');
if (!empty($transport)) {
return $transport;
}
return MAIL_TRANSPORT;
}
} }

View File

@@ -39,11 +39,12 @@ class EmailJob extends BaseJob
*/ */
public function execute($email, $name, $subject, $html, $author) public function execute($email, $name, $subject, $html, $author)
{ {
$this->logger->debug(__METHOD__.' Sending email to '.$email.' via '.MAIL_TRANSPORT); $transport = $this->helper->mail->getMailTransport();
$this->logger->debug(__METHOD__.' Sending email to: '.$email.' using transport: '.$transport);
$startTime = microtime(true); $startTime = microtime(true);
$this->emailClient $this->emailClient
->getTransport(MAIL_TRANSPORT) ->getTransport($transport)
->sendEmail($email, $name, $subject, $html, $author) ->sendEmail($email, $name, $subject, $html, $author)
; ;

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Pregledaj zadatak', 'View this task' => 'Pregledaj zadatak',
'Remove user' => 'Ukloni korisnika', 'Remove user' => 'Ukloni korisnika',
'Do you really want to remove this user: "%s"?' => 'Da li zaista želiš da ukloniš korisnika: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Da li zaista želiš da ukloniš korisnika: "%s"?',
'New user' => 'Novi korisnik',
'All users' => 'Svi korisnici', 'All users' => 'Svi korisnici',
'Username' => 'Korisničko ime', 'Username' => 'Korisničko ime',
'Password' => 'Šifra', 'Password' => 'Šifra',
@@ -412,9 +411,7 @@ return array(
'About' => 'O Kanboardu', 'About' => 'O Kanboardu',
'Database driver:' => 'Database driver:', 'Database driver:' => 'Database driver:',
'Board settings' => 'Postavke table', 'Board settings' => 'Postavke table',
'URL and token' => 'URL i token',
'Webhook settings' => 'Postavke za webhook', 'Webhook settings' => 'Postavke za webhook',
'URL for task creation:' => 'URL za kreiranje zadataka',
'Reset token' => 'Resetuj token', 'Reset token' => 'Resetuj token',
'API endpoint:' => 'API endpoint', 'API endpoint:' => 'API endpoint',
'Refresh interval for private board' => 'Interval osvježavanja privatnih ploča', 'Refresh interval for private board' => 'Interval osvježavanja privatnih ploča',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Zobrazit úkol', 'View this task' => 'Zobrazit úkol',
'Remove user' => 'Odebrat uživatele', 'Remove user' => 'Odebrat uživatele',
'Do you really want to remove this user: "%s"?' => 'Opravdu chcete odebrat uživatele: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Opravdu chcete odebrat uživatele: "%s"?',
'New user' => 'Nový uživatel',
'All users' => 'Všichni uživatelé', 'All users' => 'Všichni uživatelé',
'Username' => 'Uživatelské jméno', 'Username' => 'Uživatelské jméno',
'Password' => 'Heslo', 'Password' => 'Heslo',
@@ -412,9 +411,7 @@ return array(
'About' => 'O projektu', 'About' => 'O projektu',
'Database driver:' => 'Databáze', 'Database driver:' => 'Databáze',
'Board settings' => 'Nastavení nástěnky', 'Board settings' => 'Nastavení nástěnky',
'URL and token' => 'URL a Token',
'Webhook settings' => 'Webhook nastavení', 'Webhook settings' => 'Webhook nastavení',
'URL for task creation:' => 'URL pro vytvoření úkolu',
'Reset token' => 'Token reset', 'Reset token' => 'Token reset',
'API endpoint:' => 'API endpoint', 'API endpoint:' => 'API endpoint',
'Refresh interval for private board' => 'Interval automatického obnovování pro soukromé nástěnky', 'Refresh interval for private board' => 'Interval automatického obnovování pro soukromé nástěnky',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Se denne opgave', 'View this task' => 'Se denne opgave',
'Remove user' => 'Fjern bruger', 'Remove user' => 'Fjern bruger',
'Do you really want to remove this user: "%s"?' => 'Ønsker du virkelig at fjerne denne bruger: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Ønsker du virkelig at fjerne denne bruger: "%s"?',
'New user' => 'Ny bruger',
'All users' => 'Alle brugere', 'All users' => 'Alle brugere',
'Username' => 'Brugernavn', 'Username' => 'Brugernavn',
'Password' => 'Password', 'Password' => 'Password',
@@ -412,9 +411,7 @@ return array(
'About' => 'Om', 'About' => 'Om',
'Database driver:' => 'Database driver:', 'Database driver:' => 'Database driver:',
'Board settings' => 'Baord indstillinger', 'Board settings' => 'Baord indstillinger',
'URL and token' => 'URL og token',
'Webhook settings' => 'Webhook indstillinger', 'Webhook settings' => 'Webhook indstillinger',
'URL for task creation:' => 'URL for opgave oprettelse:',
'Reset token' => 'Reset endpoint', 'Reset token' => 'Reset endpoint',
'API endpoint:' => 'API endpoint:', 'API endpoint:' => 'API endpoint:',
'Refresh interval for private board' => 'Refresh interval for privat board', 'Refresh interval for private board' => 'Refresh interval for privat board',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Aufgabe ansehen', 'View this task' => 'Aufgabe ansehen',
'Remove user' => 'Benutzer löschen', 'Remove user' => 'Benutzer löschen',
'Do you really want to remove this user: "%s"?' => 'Soll dieser Benutzer wirklich gelöscht werden: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Soll dieser Benutzer wirklich gelöscht werden: "%s"?',
'New user' => 'Neuer Benutzer',
'All users' => 'Alle Benutzer', 'All users' => 'Alle Benutzer',
'Username' => 'Benutzername', 'Username' => 'Benutzername',
'Password' => 'Passwort', 'Password' => 'Passwort',
@@ -412,9 +411,7 @@ return array(
'About' => 'Über', 'About' => 'Über',
'Database driver:' => 'Datenbanktreiber:', 'Database driver:' => 'Datenbanktreiber:',
'Board settings' => 'Pinnwandeinstellungen', 'Board settings' => 'Pinnwandeinstellungen',
'URL and token' => 'URL und Token',
'Webhook settings' => 'Webhook-Einstellungen', 'Webhook settings' => 'Webhook-Einstellungen',
'URL for task creation:' => 'URL zur Aufgabenerstellung:',
'Reset token' => 'Token zurücksetzen', 'Reset token' => 'Token zurücksetzen',
'API endpoint:' => 'API-Endpunkt:', 'API endpoint:' => 'API-Endpunkt:',
'Refresh interval for private board' => 'Aktualisierungsintervall für private Pinnwände', 'Refresh interval for private board' => 'Aktualisierungsintervall für private Pinnwände',
@@ -1200,4 +1197,9 @@ return array(
'Enter one task by line.' => 'Geben Sie eine Aufgabe pro Zeile ein.', 'Enter one task by line.' => 'Geben Sie eine Aufgabe pro Zeile ein.',
'Number of failed login:' => 'Anzahl fehlgeschlagener Anmeldungen:', 'Number of failed login:' => 'Anzahl fehlgeschlagener Anmeldungen:',
'Account locked until:' => 'Konto gesperrt bis:', 'Account locked until:' => 'Konto gesperrt bis:',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Προβολή της εργασίας', 'View this task' => 'Προβολή της εργασίας',
'Remove user' => 'Αφαίρεση χρήστη', 'Remove user' => 'Αφαίρεση χρήστη',
'Do you really want to remove this user: "%s"?' => 'Θέλετε σίγουρα να αφαιρέσετε αυτό τον χρήστη: « %s » ?', 'Do you really want to remove this user: "%s"?' => 'Θέλετε σίγουρα να αφαιρέσετε αυτό τον χρήστη: « %s » ?',
'New user' => 'Νέος Χρήστης',
'All users' => 'Όλοι οι χρήστες', 'All users' => 'Όλοι οι χρήστες',
'Username' => 'Όνομα χρήστη', 'Username' => 'Όνομα χρήστη',
'Password' => 'Κωδικός', 'Password' => 'Κωδικός',
@@ -412,9 +411,7 @@ return array(
'About' => 'About', 'About' => 'About',
'Database driver:' => 'Database driver:', 'Database driver:' => 'Database driver:',
'Board settings' => 'Board settings', 'Board settings' => 'Board settings',
'URL and token' => 'URL / token',
'Webhook settings' => 'Webhook settings', 'Webhook settings' => 'Webhook settings',
'URL for task creation:' => 'URL για δημιουργία εργασίας:',
'Reset token' => 'Reset token', 'Reset token' => 'Reset token',
'API endpoint:' => 'URL API:', 'API endpoint:' => 'URL API:',
'Refresh interval for private board' => 'Ανανέωση interval στο private board', 'Refresh interval for private board' => 'Ανανέωση interval στο private board',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Ver esta tarea', 'View this task' => 'Ver esta tarea',
'Remove user' => 'Eliminar un usuario', 'Remove user' => 'Eliminar un usuario',
'Do you really want to remove this user: "%s"?' => '¿De verdad que desea suprimir a este usuario: « %s » ?', 'Do you really want to remove this user: "%s"?' => '¿De verdad que desea suprimir a este usuario: « %s » ?',
'New user' => 'Añadir un usuario',
'All users' => 'Todos los usuarios', 'All users' => 'Todos los usuarios',
'Username' => 'Nombre de usuario', 'Username' => 'Nombre de usuario',
'Password' => 'Contraseña', 'Password' => 'Contraseña',
@@ -412,9 +411,7 @@ return array(
'About' => 'Acerca de', 'About' => 'Acerca de',
'Database driver:' => 'Controlador (Driver) de la base de datos', 'Database driver:' => 'Controlador (Driver) de la base de datos',
'Board settings' => 'Configuraciones del Tablero', 'Board settings' => 'Configuraciones del Tablero',
'URL and token' => 'URL y ficha',
'Webhook settings' => 'Configuraciones del Disparador Web (Webhook)', 'Webhook settings' => 'Configuraciones del Disparador Web (Webhook)',
'URL for task creation:' => 'URL para la creación de tareas',
'Reset token' => 'Limpiar ficha', 'Reset token' => 'Limpiar ficha',
'API endpoint:' => 'Punto final del API', 'API endpoint:' => 'Punto final del API',
'Refresh interval for private board' => 'Intervalo de refresco del tablero privado', 'Refresh interval for private board' => 'Intervalo de refresco del tablero privado',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Näytä tämä tehtävä', 'View this task' => 'Näytä tämä tehtävä',
'Remove user' => 'Poista käyttäjä', 'Remove user' => 'Poista käyttäjä',
'Do you really want to remove this user: "%s"?' => 'Oletko varma että haluat poistaa käyttäjän "%s"?', 'Do you really want to remove this user: "%s"?' => 'Oletko varma että haluat poistaa käyttäjän "%s"?',
'New user' => 'Uusi käyttäjä',
'All users' => 'Kaikki käyttäjät', 'All users' => 'Kaikki käyttäjät',
'Username' => 'Käyttäjänimi', 'Username' => 'Käyttäjänimi',
'Password' => 'Salasana', 'Password' => 'Salasana',
@@ -412,9 +411,7 @@ return array(
'About' => 'Tietoja', 'About' => 'Tietoja',
'Database driver:' => 'Tietokantaohjelmisto:', 'Database driver:' => 'Tietokantaohjelmisto:',
'Board settings' => 'Taulun asetukset', 'Board settings' => 'Taulun asetukset',
'URL and token' => 'URL ja token',
'Webhook settings' => 'Webhookin asetukset', 'Webhook settings' => 'Webhookin asetukset',
'URL for task creation:' => 'URL tehtävän luomiseksi:',
'Reset token' => 'Vaihda token', 'Reset token' => 'Vaihda token',
'API endpoint:' => 'API päätepiste:', 'API endpoint:' => 'API päätepiste:',
'Refresh interval for private board' => 'Päivitystiheys yksityisille tauluille', 'Refresh interval for private board' => 'Päivitystiheys yksityisille tauluille',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Voir cette tâche', 'View this task' => 'Voir cette tâche',
'Remove user' => 'Supprimer un utilisateur', 'Remove user' => 'Supprimer un utilisateur',
'Do you really want to remove this user: "%s"?' => 'Voulez-vous vraiment supprimer cet utilisateur : « %s » ?', 'Do you really want to remove this user: "%s"?' => 'Voulez-vous vraiment supprimer cet utilisateur : « %s » ?',
'New user' => 'Ajouter un utilisateur',
'All users' => 'Tous les utilisateurs', 'All users' => 'Tous les utilisateurs',
'Username' => 'Nom d\'utilisateur', 'Username' => 'Nom d\'utilisateur',
'Password' => 'Mot de passe', 'Password' => 'Mot de passe',
@@ -412,9 +411,7 @@ return array(
'About' => 'À propos', 'About' => 'À propos',
'Database driver:' => 'Type de base de données :', 'Database driver:' => 'Type de base de données :',
'Board settings' => 'Paramètres du tableau', 'Board settings' => 'Paramètres du tableau',
'URL and token' => 'URL et jeton de sécurité',
'Webhook settings' => 'Paramètres pour les webhooks', 'Webhook settings' => 'Paramètres pour les webhooks',
'URL for task creation:' => 'URL pour la création de tâche :',
'Reset token' => 'Regénérer le jeton de sécurité', 'Reset token' => 'Regénérer le jeton de sécurité',
'API endpoint:' => 'URL de l\'API :', 'API endpoint:' => 'URL de l\'API :',
'Refresh interval for private board' => 'Intervalle pour rafraîchir un tableau privé', 'Refresh interval for private board' => 'Intervalle pour rafraîchir un tableau privé',
@@ -1201,4 +1198,9 @@ return array(
'Enter one task by line.' => 'Entrez une tâche par ligne.', 'Enter one task by line.' => 'Entrez une tâche par ligne.',
'Number of failed login:' => 'Nombre de connexion échouées :', 'Number of failed login:' => 'Nombre de connexion échouées :',
'Account locked until:' => 'Compte bloqué jusqu\'au :', 'Account locked until:' => 'Compte bloqué jusqu\'au :',
'Email settings' => 'Paramètres des emails',
'Email sender address' => 'Adresse email de l\'expéditeur',
'Email transport' => 'Transport des emails',
'Webhook token' => 'Jeton de sécurité des webhooks',
'Imports' => 'Importations',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Feladat megtekintése', 'View this task' => 'Feladat megtekintése',
'Remove user' => 'Felhasználó törlése', 'Remove user' => 'Felhasználó törlése',
'Do you really want to remove this user: "%s"?' => 'Valóban törölni akarja ezt a felhasználót: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Valóban törölni akarja ezt a felhasználót: "%s"?',
'New user' => 'Új felhasználó',
'All users' => 'Minden felhasználó', 'All users' => 'Minden felhasználó',
'Username' => 'Felhasználónév', 'Username' => 'Felhasználónév',
'Password' => 'Jelszó', 'Password' => 'Jelszó',
@@ -412,9 +411,7 @@ return array(
'About' => 'Kanboard információ', 'About' => 'Kanboard információ',
'Database driver:' => 'Adatbázis motor:', 'Database driver:' => 'Adatbázis motor:',
'Board settings' => 'Tábla beállítások', 'Board settings' => 'Tábla beállítások',
'URL and token' => 'URL és tokenek',
'Webhook settings' => 'Webhook beállítások', 'Webhook settings' => 'Webhook beállítások',
'URL for task creation:' => 'Feladat létrehozás URL:',
'Reset token' => 'Token újragenerálása', 'Reset token' => 'Token újragenerálása',
'API endpoint:' => 'API végpont:', 'API endpoint:' => 'API végpont:',
'Refresh interval for private board' => 'Privát táblák frissítési intervalluma', 'Refresh interval for private board' => 'Privát táblák frissítési intervalluma',
@@ -1189,7 +1186,7 @@ return array(
'Not available' => 'Nem áll rendelkezésre', 'Not available' => 'Nem áll rendelkezésre',
'Remove plugin' => 'Plugin eltávolítása', 'Remove plugin' => 'Plugin eltávolítása',
'Do you really want to remove this plugin: "%s"?' => 'Valóban el kívánja távolítani ezt a plugin-t: "%s"?', 'Do you really want to remove this plugin: "%s"?' => 'Valóban el kívánja távolítani ezt a plugin-t: "%s"?',
//'Uninstall' => '', // 'Uninstall' => '',
'Listing' => 'Listázás', 'Listing' => 'Listázás',
'Metadata' => 'Metaadat', 'Metadata' => 'Metaadat',
'Manage projects' => 'Projektek kezelése', 'Manage projects' => 'Projektek kezelése',
@@ -1200,4 +1197,9 @@ return array(
'Enter one task by line.' => 'Minden sorban egy feladatot adjon meg.', 'Enter one task by line.' => 'Minden sorban egy feladatot adjon meg.',
'Number of failed login:' => 'A sikertelen bejelentkezések száma:', 'Number of failed login:' => 'A sikertelen bejelentkezések száma:',
'Account locked until:' => 'A számla zárolva a következő időpontig:', 'Account locked until:' => 'A számla zárolva a következő időpontig:',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Lihat tugas ini', 'View this task' => 'Lihat tugas ini',
'Remove user' => 'Hapus pengguna', 'Remove user' => 'Hapus pengguna',
'Do you really want to remove this user: "%s"?' => 'Anda yakin akan menghapus pengguna ini : « %s » ?', 'Do you really want to remove this user: "%s"?' => 'Anda yakin akan menghapus pengguna ini : « %s » ?',
'New user' => 'Pengguna baru',
'All users' => 'Semua pengguna', 'All users' => 'Semua pengguna',
'Username' => 'Nama pengguna', 'Username' => 'Nama pengguna',
'Password' => 'Kata sandi', 'Password' => 'Kata sandi',
@@ -412,9 +411,7 @@ return array(
'About' => 'Tentang', 'About' => 'Tentang',
'Database driver:' => 'Driver basis data :', 'Database driver:' => 'Driver basis data :',
'Board settings' => 'Pengaturan papan', 'Board settings' => 'Pengaturan papan',
'URL and token' => 'URL dan token',
'Webhook settings' => 'Pengaturan webhook', 'Webhook settings' => 'Pengaturan webhook',
'URL for task creation:' => 'URL untuk pembuatan tugas :',
'Reset token' => 'Mereset token', 'Reset token' => 'Mereset token',
'API endpoint:' => 'API endpoint :', 'API endpoint:' => 'API endpoint :',
'Refresh interval for private board' => 'Interval pembaruan untuk papan pribadi', 'Refresh interval for private board' => 'Interval pembaruan untuk papan pribadi',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Visualizza questo task', 'View this task' => 'Visualizza questo task',
'Remove user' => 'Cancella un utente', 'Remove user' => 'Cancella un utente',
'Do you really want to remove this user: "%s"?' => 'Veramente vuoi cancellare questo utente: "%s" ?', 'Do you really want to remove this user: "%s"?' => 'Veramente vuoi cancellare questo utente: "%s" ?',
'New user' => 'Aggiungi un utente',
'All users' => 'Tutti gli utenti', 'All users' => 'Tutti gli utenti',
'Username' => 'Nome utente', 'Username' => 'Nome utente',
'Password' => 'Password', 'Password' => 'Password',
@@ -412,9 +411,7 @@ return array(
'About' => 'Informazioni', 'About' => 'Informazioni',
'Database driver:' => 'Driver per Database', 'Database driver:' => 'Driver per Database',
'Board settings' => 'Impostazioni bacheca', 'Board settings' => 'Impostazioni bacheca',
'URL and token' => 'URL e token',
'Webhook settings' => 'Impostazione Webhook', 'Webhook settings' => 'Impostazione Webhook',
'URL for task creation:' => 'URL per la creazione dei task:',
'Reset token' => 'Rigenera il token', 'Reset token' => 'Rigenera il token',
'API endpoint:' => 'Endpoint dell\'API:', 'API endpoint:' => 'Endpoint dell\'API:',
'Refresh interval for private board' => 'Intervallo di refresh per le bacheche private', 'Refresh interval for private board' => 'Intervallo di refresh per le bacheche private',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'このタクスを見る', 'View this task' => 'このタクスを見る',
'Remove user' => 'ユーザの削除', 'Remove user' => 'ユーザの削除',
'Do you really want to remove this user: "%s"?' => 'ユーザ「%s」を本当に削除しますか', 'Do you really want to remove this user: "%s"?' => 'ユーザ「%s」を本当に削除しますか',
'New user' => 'ユーザを追加する',
'All users' => 'すべてのユーザ', 'All users' => 'すべてのユーザ',
'Username' => 'ユーザ名', 'Username' => 'ユーザ名',
'Password' => 'パスワード', 'Password' => 'パスワード',
@@ -412,9 +411,7 @@ return array(
'About' => '情報', 'About' => '情報',
'Database driver:' => 'データベースドライバ:', 'Database driver:' => 'データベースドライバ:',
'Board settings' => '基本設定', 'Board settings' => '基本設定',
'URL and token' => 'URL とトークン',
'Webhook settings' => 'Webhook の設定', 'Webhook settings' => 'Webhook の設定',
'URL for task creation:' => 'Task 作成の URL:',
'Reset token' => 'トークンのリセット', 'Reset token' => 'トークンのリセット',
'API endpoint:' => 'API エンドポイント:', 'API endpoint:' => 'API エンドポイント:',
'Refresh interval for private board' => '非公開ボードの更新頻度', 'Refresh interval for private board' => '非公開ボードの更新頻度',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => '이 할일 보기', 'View this task' => '이 할일 보기',
'Remove user' => '사용자 삭제', 'Remove user' => '사용자 삭제',
'Do you really want to remove this user: "%s"?' => '사용자 "%s"를 정말로 삭제하시겠습니까?', 'Do you really want to remove this user: "%s"?' => '사용자 "%s"를 정말로 삭제하시겠습니까?',
'New user' => '사용자를 추가하는 ',
'All users' => '모든 사용자', 'All users' => '모든 사용자',
'Username' => '사용자 이름', 'Username' => '사용자 이름',
'Password' => '패스워드', 'Password' => '패스워드',
@@ -412,9 +411,7 @@ return array(
'About' => '정보', 'About' => '정보',
'Database driver:' => '데이터베이스 드라이버:', 'Database driver:' => '데이터베이스 드라이버:',
'Board settings' => '기본 설정', 'Board settings' => '기본 설정',
'URL and token' => 'URL와 토큰',
'Webhook settings' => 'Webhook의 설정', 'Webhook settings' => 'Webhook의 설정',
'URL for task creation:' => 'Task작성의 URL:',
'Reset token' => '토큰 리셋', 'Reset token' => '토큰 리셋',
'API endpoint:' => 'API엔드 포인트:', 'API endpoint:' => 'API엔드 포인트:',
'Refresh interval for private board' => '비공개 보드의 갱신 빈도', 'Refresh interval for private board' => '비공개 보드의 갱신 빈도',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Lihat tugas ini', 'View this task' => 'Lihat tugas ini',
'Remove user' => 'Hapus pengguna', 'Remove user' => 'Hapus pengguna',
'Do you really want to remove this user: "%s"?' => 'Anda yakin mahu menghapus pengguna ini : « %s » ?', 'Do you really want to remove this user: "%s"?' => 'Anda yakin mahu menghapus pengguna ini : « %s » ?',
'New user' => 'Pengguna baru',
'All users' => 'Semua pengguna', 'All users' => 'Semua pengguna',
'Username' => 'Nama pengguna', 'Username' => 'Nama pengguna',
'Password' => 'Kata laluan', 'Password' => 'Kata laluan',
@@ -412,9 +411,7 @@ return array(
'About' => 'Tentang', 'About' => 'Tentang',
'Database driver:' => 'Driver pengkalan data:', 'Database driver:' => 'Driver pengkalan data:',
'Board settings' => 'Pengaturan papan', 'Board settings' => 'Pengaturan papan',
'URL and token' => 'URL dan token',
'Webhook settings' => 'Penetapan webhook', 'Webhook settings' => 'Penetapan webhook',
'URL for task creation:' => 'URL untuk cipta tugas:',
'Reset token' => 'Menetap semula token', 'Reset token' => 'Menetap semula token',
'API endpoint:' => 'API endpoint :', 'API endpoint:' => 'API endpoint :',
'Refresh interval for private board' => 'Interval pembaruan untuk papan pribadi', 'Refresh interval for private board' => 'Interval pembaruan untuk papan pribadi',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Se denne oppgaven', 'View this task' => 'Se denne oppgaven',
'Remove user' => 'Fjern bruker', 'Remove user' => 'Fjern bruker',
'Do you really want to remove this user: "%s"?' => 'Vil du fjerne denne brukeren: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Vil du fjerne denne brukeren: "%s"?',
'New user' => 'Ny bruker',
'All users' => 'Alle brukere', 'All users' => 'Alle brukere',
'Username' => 'Brukernavn', 'Username' => 'Brukernavn',
'Password' => 'Passord', 'Password' => 'Passord',
@@ -412,9 +411,7 @@ return array(
'About' => 'Om', 'About' => 'Om',
'Database driver:' => 'Database driver:', 'Database driver:' => 'Database driver:',
'Board settings' => 'Innstillinger for prosjektside', 'Board settings' => 'Innstillinger for prosjektside',
'URL and token' => 'URL og token',
'Webhook settings' => 'Webhook innstillinger', 'Webhook settings' => 'Webhook innstillinger',
'URL for task creation:' => 'URL for oppgaveopprettelse:',
'Reset token' => 'Resette token', 'Reset token' => 'Resette token',
'API endpoint:' => 'API endpoint:', 'API endpoint:' => 'API endpoint:',
'Refresh interval for private board' => 'Oppdateringsintervall for privat hovedside', 'Refresh interval for private board' => 'Oppdateringsintervall for privat hovedside',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Deze taak bekijken', 'View this task' => 'Deze taak bekijken',
'Remove user' => 'Gebruiker verwijderen', 'Remove user' => 'Gebruiker verwijderen',
'Do you really want to remove this user: "%s"?' => 'Weet u zeker dat u deze gebruiker wil verwijderen : « %s » ?', 'Do you really want to remove this user: "%s"?' => 'Weet u zeker dat u deze gebruiker wil verwijderen : « %s » ?',
'New user' => 'Nieuwe gebruiker',
'All users' => 'Alle gebruikers', 'All users' => 'Alle gebruikers',
'Username' => 'Gebruikersnaam', 'Username' => 'Gebruikersnaam',
'Password' => 'Wachtwoord', 'Password' => 'Wachtwoord',
@@ -412,9 +411,7 @@ return array(
'About' => 'Over', 'About' => 'Over',
'Database driver:' => 'Database driver :', 'Database driver:' => 'Database driver :',
'Board settings' => 'Bord instellingen', 'Board settings' => 'Bord instellingen',
'URL and token' => 'URL en token',
'Webhook settings' => 'Webhook instellingen', 'Webhook settings' => 'Webhook instellingen',
'URL for task creation:' => 'URL voor aanmaken taken :',
'Reset token' => 'Token resetten', 'Reset token' => 'Token resetten',
'API endpoint:' => 'API endpoint :', 'API endpoint:' => 'API endpoint :',
'Refresh interval for private board' => 'Verversingsinterval voor private borden', 'Refresh interval for private board' => 'Verversingsinterval voor private borden',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Zobacz zadanie', 'View this task' => 'Zobacz zadanie',
'Remove user' => 'Usuń użytkownika', 'Remove user' => 'Usuń użytkownika',
'Do you really want to remove this user: "%s"?' => 'Na pewno chcesz usunąć użytkownika: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Na pewno chcesz usunąć użytkownika: "%s"?',
'New user' => 'Nowy użytkownik',
'All users' => 'Wszyscy użytkownicy', 'All users' => 'Wszyscy użytkownicy',
'Username' => 'Nazwa użytkownika', 'Username' => 'Nazwa użytkownika',
'Password' => 'Hasło', 'Password' => 'Hasło',
@@ -412,9 +411,7 @@ return array(
'About' => 'Informacje', 'About' => 'Informacje',
'Database driver:' => 'Silnik bazy danych:', 'Database driver:' => 'Silnik bazy danych:',
'Board settings' => 'Ustawienia tablicy', 'Board settings' => 'Ustawienia tablicy',
'URL and token' => 'URL i token',
'Webhook settings' => 'Ustawienia webhook', 'Webhook settings' => 'Ustawienia webhook',
'URL for task creation:' => 'URL do tworzenia zadań',
'Reset token' => 'Resetuj token', 'Reset token' => 'Resetuj token',
'API endpoint:' => 'Endpoint API', 'API endpoint:' => 'Endpoint API',
'Refresh interval for private board' => 'Częstotliwość odświeżania dla tablicy prywatnej', 'Refresh interval for private board' => 'Częstotliwość odświeżania dla tablicy prywatnej',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Ver esta tarefa', 'View this task' => 'Ver esta tarefa',
'Remove user' => 'Remover usuário', 'Remove user' => 'Remover usuário',
'Do you really want to remove this user: "%s"?' => 'Você realmente deseja remover este usuário: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Você realmente deseja remover este usuário: "%s"?',
'New user' => 'Novo usuário',
'All users' => 'Todos os usuários', 'All users' => 'Todos os usuários',
'Username' => 'Nome de usuário', 'Username' => 'Nome de usuário',
'Password' => 'Senha', 'Password' => 'Senha',
@@ -412,9 +411,7 @@ return array(
'About' => 'Sobre', 'About' => 'Sobre',
'Database driver:' => 'Driver do banco de dados:', 'Database driver:' => 'Driver do banco de dados:',
'Board settings' => 'Configurações do board', 'Board settings' => 'Configurações do board',
'URL and token' => 'URL e token',
'Webhook settings' => 'Configurações do Webhook', 'Webhook settings' => 'Configurações do Webhook',
'URL for task creation:' => 'URL para a criação da tarefa:',
'Reset token' => 'Resetar token', 'Reset token' => 'Resetar token',
'API endpoint:' => 'API endpoint:', 'API endpoint:' => 'API endpoint:',
'Refresh interval for private board' => 'Intervalo de atualização para um board privado', 'Refresh interval for private board' => 'Intervalo de atualização para um board privado',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Ver esta tarefa', 'View this task' => 'Ver esta tarefa',
'Remove user' => 'Remover utilizador', 'Remove user' => 'Remover utilizador',
'Do you really want to remove this user: "%s"?' => 'Pretende mesmo remover este utilizador: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Pretende mesmo remover este utilizador: "%s"?',
'New user' => 'Novo utilizador',
'All users' => 'Todos os utilizadores', 'All users' => 'Todos os utilizadores',
'Username' => 'Nome de utilizador', 'Username' => 'Nome de utilizador',
'Password' => 'Senha', 'Password' => 'Senha',
@@ -412,9 +411,7 @@ return array(
'About' => 'Sobre', 'About' => 'Sobre',
'Database driver:' => 'Driver da base de dados:', 'Database driver:' => 'Driver da base de dados:',
'Board settings' => 'Configurações do Quadro', 'Board settings' => 'Configurações do Quadro',
'URL and token' => 'URL e token',
'Webhook settings' => 'Configurações do Webhook', 'Webhook settings' => 'Configurações do Webhook',
'URL for task creation:' => 'URL para a criação da tarefa:',
'Reset token' => 'Redefinir token', 'Reset token' => 'Redefinir token',
'API endpoint:' => 'API endpoint:', 'API endpoint:' => 'API endpoint:',
'Refresh interval for private board' => 'Intervalo de actualização para um quadro privado', 'Refresh interval for private board' => 'Intervalo de actualização para um quadro privado',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Посмотреть задачу', 'View this task' => 'Посмотреть задачу',
'Remove user' => 'Удалить пользователя', 'Remove user' => 'Удалить пользователя',
'Do you really want to remove this user: "%s"?' => 'Вы точно хотите удалить пользователя: « %s » ?', 'Do you really want to remove this user: "%s"?' => 'Вы точно хотите удалить пользователя: « %s » ?',
'New user' => 'Новый пользователь',
'All users' => 'Все пользователи', 'All users' => 'Все пользователи',
'Username' => 'Имя пользователя', 'Username' => 'Имя пользователя',
'Password' => 'Пароль', 'Password' => 'Пароль',
@@ -412,9 +411,7 @@ return array(
'About' => 'Информация', 'About' => 'Информация',
'Database driver:' => 'Драйвер базы данных', 'Database driver:' => 'Драйвер базы данных',
'Board settings' => 'Настройки доски', 'Board settings' => 'Настройки доски',
'URL and token' => 'URL и токен',
'Webhook settings' => 'Параметры Webhook', 'Webhook settings' => 'Параметры Webhook',
'URL for task creation:' => 'URL для создания задачи:',
'Reset token' => 'Перезагрузить токен', 'Reset token' => 'Перезагрузить токен',
'API endpoint:' => 'API endpoint:', 'API endpoint:' => 'API endpoint:',
'Refresh interval for private board' => 'Период обновления для частных досок', 'Refresh interval for private board' => 'Период обновления для частных досок',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Pregledaj zadatak', 'View this task' => 'Pregledaj zadatak',
'Remove user' => 'Ukloni korisnika', 'Remove user' => 'Ukloni korisnika',
'Do you really want to remove this user: "%s"?' => 'Da li zaista želiš da ukloniš korisnika: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Da li zaista želiš da ukloniš korisnika: "%s"?',
'New user' => 'novi korisnik',
'All users' => 'Svi korisnici', 'All users' => 'Svi korisnici',
'Username' => 'Korisnik', 'Username' => 'Korisnik',
'Password' => 'Lozinka', 'Password' => 'Lozinka',
@@ -412,9 +411,7 @@ return array(
'About' => 'Informacje', 'About' => 'Informacje',
'Database driver:' => 'Database driver:', 'Database driver:' => 'Database driver:',
'Board settings' => 'Podešavanje table', 'Board settings' => 'Podešavanje table',
'URL and token' => 'URL i token',
// 'Webhook settings' => '', // 'Webhook settings' => '',
'URL for task creation:' => 'URL za kreiranje zadataka',
'Reset token' => 'Resetuj token', 'Reset token' => 'Resetuj token',
// 'API endpoint:' => '', // 'API endpoint:' => '',
'Refresh interval for private board' => 'Interval osvežavanja privatnih tabli', 'Refresh interval for private board' => 'Interval osvežavanja privatnih tabli',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Se denna uppgift', 'View this task' => 'Se denna uppgift',
'Remove user' => 'Ta bort användare', 'Remove user' => 'Ta bort användare',
'Do you really want to remove this user: "%s"?' => 'Vill du verkligen ta bort användaren: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Vill du verkligen ta bort användaren: "%s"?',
'New user' => 'Ny användare',
'All users' => 'Alla användare', 'All users' => 'Alla användare',
'Username' => 'Användarnamn', 'Username' => 'Användarnamn',
'Password' => 'Lösenord', 'Password' => 'Lösenord',
@@ -412,9 +411,7 @@ return array(
'About' => 'Om', 'About' => 'Om',
'Database driver:' => 'Databasdrivrutin:', 'Database driver:' => 'Databasdrivrutin:',
'Board settings' => 'Inställningar för tavla', 'Board settings' => 'Inställningar för tavla',
'URL and token' => 'URL och token',
'Webhook settings' => 'Webhook inställningar', 'Webhook settings' => 'Webhook inställningar',
'URL for task creation:' => 'URL för att skapa uppgift:',
'Reset token' => 'Nollställ token', 'Reset token' => 'Nollställ token',
'API endpoint:' => 'API ändpunkt:', 'API endpoint:' => 'API ändpunkt:',
'Refresh interval for private board' => 'Uppdateringsintervall för privat tavla', 'Refresh interval for private board' => 'Uppdateringsintervall för privat tavla',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'รายละเอียดงานนี้', 'View this task' => 'รายละเอียดงานนี้',
'Remove user' => 'เอาผู้ใช้ออก', 'Remove user' => 'เอาผู้ใช้ออก',
'Do you really want to remove this user: "%s"?' => 'คุณต้องการเอาผู้ใช้ « %s » ออกใช่หรือไม่?', 'Do you really want to remove this user: "%s"?' => 'คุณต้องการเอาผู้ใช้ « %s » ออกใช่หรือไม่?',
'New user' => 'ผู้ใช้ใหม่',
'All users' => 'ผู้ใช้ทั้งหมด', 'All users' => 'ผู้ใช้ทั้งหมด',
'Username' => 'ชื่อผู้ใช้', 'Username' => 'ชื่อผู้ใช้',
'Password' => 'รหัสผ่าน', 'Password' => 'รหัสผ่าน',
@@ -412,9 +411,7 @@ return array(
'About' => 'เกี่ยวกับ', 'About' => 'เกี่ยวกับ',
'Database driver:' => 'เครื่องมือฐานขข้อมูล', 'Database driver:' => 'เครื่องมือฐานขข้อมูล',
'Board settings' => 'ตั้งค่าบอร์ด', 'Board settings' => 'ตั้งค่าบอร์ด',
// 'URL and token' => '',
// 'Webhook settings' => '', // 'Webhook settings' => '',
// 'URL for task creation:' => '',
// 'Reset token' => '', // 'Reset token' => '',
// 'API endpoint:' => '', // 'API endpoint:' => '',
'Refresh interval for private board' => 'ระยะรีเฟรชบอร์ดส่วนตัว', 'Refresh interval for private board' => 'ระยะรีเฟรชบอร์ดส่วนตัว',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => 'Bu görevi görüntüle', 'View this task' => 'Bu görevi görüntüle',
'Remove user' => 'Kullanıcıyı kaldır', 'Remove user' => 'Kullanıcıyı kaldır',
'Do you really want to remove this user: "%s"?' => 'Bu kullanıcıyı gerçekten silmek istiyor musunuz: "%s"?', 'Do you really want to remove this user: "%s"?' => 'Bu kullanıcıyı gerçekten silmek istiyor musunuz: "%s"?',
'New user' => 'Yeni kullanıcı',
'All users' => 'Tüm kullanıcılar', 'All users' => 'Tüm kullanıcılar',
'Username' => 'Kullanıcı adı', 'Username' => 'Kullanıcı adı',
'Password' => 'Şifre', 'Password' => 'Şifre',
@@ -412,9 +411,7 @@ return array(
'About' => 'Hakkında', 'About' => 'Hakkında',
'Database driver:' => 'Veritabanı sürücüsü:', 'Database driver:' => 'Veritabanı sürücüsü:',
'Board settings' => 'Tablo ayarları', 'Board settings' => 'Tablo ayarları',
'URL and token' => 'URL veya Belirteç',
'Webhook settings' => 'Webhook ayarları', 'Webhook settings' => 'Webhook ayarları',
'URL for task creation:' => 'Görev oluşturma için URL',
'Reset token' => 'Belirteci sıfırla', 'Reset token' => 'Belirteci sıfırla',
'API endpoint:' => 'API bitiş noktası:', 'API endpoint:' => 'API bitiş noktası:',
'Refresh interval for private board' => 'Özel tablolar için yenileme sıklığı', 'Refresh interval for private board' => 'Özel tablolar için yenileme sıklığı',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -35,7 +35,6 @@ return array(
'View this task' => '查看该任务', 'View this task' => '查看该任务',
'Remove user' => '移除用户', 'Remove user' => '移除用户',
'Do you really want to remove this user: "%s"?' => '确定要删除用户"%s"吗?', 'Do you really want to remove this user: "%s"?' => '确定要删除用户"%s"吗?',
'New user' => '新建用户',
'All users' => '所有用户', 'All users' => '所有用户',
'Username' => '用户名', 'Username' => '用户名',
'Password' => '密码', 'Password' => '密码',
@@ -412,9 +411,7 @@ return array(
'About' => '关于', 'About' => '关于',
'Database driver:' => '数据库驱动:', 'Database driver:' => '数据库驱动:',
'Board settings' => '看板设置', 'Board settings' => '看板设置',
'URL and token' => 'URL和令牌',
'Webhook settings' => 'Webhook 设置', 'Webhook settings' => 'Webhook 设置',
'URL for task creation:' => '创建任务的URL',
'Reset token' => '重置令牌', 'Reset token' => '重置令牌',
'API endpoint:' => 'API 端点:', 'API endpoint:' => 'API 端点:',
'Refresh interval for private board' => '私人看板的刷新时间', 'Refresh interval for private board' => '私人看板的刷新时间',
@@ -1200,4 +1197,9 @@ return array(
// 'Enter one task by line.' => '', // 'Enter one task by line.' => '',
// 'Number of failed login:' => '', // 'Number of failed login:' => '',
// 'Account locked until:' => '', // 'Account locked until:' => '',
// 'Email settings' => '',
// 'Email sender address' => '',
// 'Email transport' => '',
// 'Webhook token' => '',
// 'Imports' => '',
); );

View File

@@ -9,9 +9,6 @@
<?= $this->form->text('application_url', $values, $errors, array('placeholder="http://example.kanboard.net/"')) ?> <?= $this->form->text('application_url', $values, $errors, array('placeholder="http://example.kanboard.net/"')) ?>
<p class="form-help"><?= t('Example: http://example.kanboard.net/ (used to generate absolute URLs)') ?></p> <p class="form-help"><?= t('Example: http://example.kanboard.net/ (used to generate absolute URLs)') ?></p>
<?= $this->form->label(t('Email sender address'), 'mail_sender_address') ?>
<?= $this->form->text('mail_sender_address', $values, $errors, array('placeholder="'.MAIL_FROM.'"')) ?>
<?= $this->form->label(t('Language'), 'application_language') ?> <?= $this->form->label(t('Language'), 'application_language') ?>
<?= $this->form->select('application_language', $languages, $values, $errors) ?> <?= $this->form->select('application_language', $languages, $values, $errors) ?>

View File

@@ -0,0 +1,18 @@
<div class="page-header">
<h2><?= t('Email settings') ?></h2>
</div>
<form method="post" action="<?= $this->url->href('ConfigController', 'save', array('redirect' => 'email')) ?>" autocomplete="off">
<?= $this->form->csrf() ?>
<?= $this->form->label(t('Email sender address'), 'mail_sender_address') ?>
<?= $this->form->text('mail_sender_address', $values, $errors, array('placeholder="'.MAIL_FROM.'"')) ?>
<?= $this->form->label(t('Email transport'), 'mail_transport') ?>
<?= $this->form->select('mail_transport', $mail_transports, $values, $errors) ?>
<?= $this->hook->render('template:config:email', array('values' => $values, 'errors' => $errors)) ?>
<div class="form-actions">
<button type="submit" class="btn btn-blue"><?= t('Save') ?></button>
</div>
</form>

View File

@@ -7,6 +7,9 @@
<li <?= $this->app->checkMenuSelection('ConfigController', 'application') ?>> <li <?= $this->app->checkMenuSelection('ConfigController', 'application') ?>>
<?= $this->url->link(t('Application settings'), 'ConfigController', 'application') ?> <?= $this->url->link(t('Application settings'), 'ConfigController', 'application') ?>
</li> </li>
<li <?= $this->app->checkMenuSelection('ConfigController', 'email') ?>>
<?= $this->url->link(t('Email settings'), 'ConfigController', 'email') ?>
</li>
<li <?= $this->app->checkMenuSelection('ConfigController', 'project') ?>> <li <?= $this->app->checkMenuSelection('ConfigController', 'project') ?>>
<?= $this->url->link(t('Project settings'), 'ConfigController', 'project') ?> <?= $this->url->link(t('Project settings'), 'ConfigController', 'project') ?>
</li> </li>

View File

@@ -54,7 +54,7 @@ abstract class Base extends PHPUnit_Framework_TestCase
$this->container['httpClient'] = $this $this->container['httpClient'] = $this
->getMockBuilder('\Kanboard\Core\Http\Client') ->getMockBuilder('\Kanboard\Core\Http\Client')
->setConstructorArgs(array($this->container)) ->setConstructorArgs(array($this->container))
->setMethods(array('get', 'getJson', 'postJson', 'postForm')) ->setMethods(array('get', 'getJson', 'postJson', 'postJsonAsync', 'postForm', 'postFormAsync'))
->getMock(); ->getMock();
$this->container['emailClient'] = $this $this->container['emailClient'] = $this

View File

@@ -32,4 +32,15 @@ class MailHelperTest extends Base
$this->assertEquals('me@here', $helper->getMailSenderAddress()); $this->assertEquals('me@here', $helper->getMailSenderAddress());
} }
public function testGetTransport()
{
$helper = new MailHelper($this->container);
$this->assertEquals(MAIL_TRANSPORT, $helper->getMailTransport());
$this->container['configModel']->save(array('mail_transport' => 'smtp'));
$this->container['memoryCache']->flush();
$this->assertEquals('smtp', $helper->getMailTransport());
}
} }