Conifgure email settings through user interface
This commit is contained in:
parent
a08339059b
commit
cd4c09c10a
|
|
@ -11,6 +11,7 @@ New features:
|
|||
|
||||
Improvements:
|
||||
|
||||
* Configure email settings with the user interface in addition to config file
|
||||
* Upgrade Docker image to Alpine Linux 3.4
|
||||
* Move task import to a separate section
|
||||
* Mark web notification as read when clicking on it
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ class ConfigController extends BaseController
|
|||
public function application()
|
||||
{
|
||||
$this->response->html($this->helper->layout->config('config/application', array(
|
||||
'mail_transports' => $this->emailClient->getAvailableTransports(),
|
||||
'languages' => $this->languageModel->getLanguages(),
|
||||
'timezones' => $this->timezoneModel->getTimezones(),
|
||||
'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
|
||||
*
|
||||
|
|
|
|||
|
|
@ -102,4 +102,16 @@ class Client extends Base
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the list of registered transports
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAvailableTransports()
|
||||
{
|
||||
$availableTransports = $this->transports->keys();
|
||||
return array_combine($availableTransports, $availableTransports);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,4 +62,21 @@ class MailHelper extends Base
|
|||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,11 +39,12 @@ class EmailJob extends BaseJob
|
|||
*/
|
||||
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);
|
||||
|
||||
$this->emailClient
|
||||
->getTransport(MAIL_TRANSPORT)
|
||||
->getTransport($transport)
|
||||
->sendEmail($email, $name, $subject, $html, $author)
|
||||
;
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Pregledaj zadatak',
|
||||
'Remove user' => 'Ukloni korisnika',
|
||||
'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',
|
||||
'Username' => 'Korisničko ime',
|
||||
'Password' => 'Šifra',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'O Kanboardu',
|
||||
'Database driver:' => 'Database driver:',
|
||||
'Board settings' => 'Postavke table',
|
||||
'URL and token' => 'URL i token',
|
||||
'Webhook settings' => 'Postavke za webhook',
|
||||
'URL for task creation:' => 'URL za kreiranje zadataka',
|
||||
'Reset token' => 'Resetuj token',
|
||||
'API endpoint:' => 'API endpoint',
|
||||
'Refresh interval for private board' => 'Interval osvježavanja privatnih ploča',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Zobrazit úkol',
|
||||
'Remove user' => 'Odebrat uživatele',
|
||||
'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é',
|
||||
'Username' => 'Uživatelské jméno',
|
||||
'Password' => 'Heslo',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'O projektu',
|
||||
'Database driver:' => 'Databáze',
|
||||
'Board settings' => 'Nastavení nástěnky',
|
||||
'URL and token' => 'URL a Token',
|
||||
'Webhook settings' => 'Webhook nastavení',
|
||||
'URL for task creation:' => 'URL pro vytvoření úkolu',
|
||||
'Reset token' => 'Token reset',
|
||||
'API endpoint:' => 'API endpoint',
|
||||
'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.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Se denne opgave',
|
||||
'Remove user' => 'Fjern bruger',
|
||||
'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',
|
||||
'Username' => 'Brugernavn',
|
||||
'Password' => 'Password',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Om',
|
||||
'Database driver:' => 'Database driver:',
|
||||
'Board settings' => 'Baord indstillinger',
|
||||
'URL and token' => 'URL og token',
|
||||
'Webhook settings' => 'Webhook indstillinger',
|
||||
'URL for task creation:' => 'URL for opgave oprettelse:',
|
||||
'Reset token' => 'Reset endpoint',
|
||||
'API endpoint:' => 'API endpoint:',
|
||||
'Refresh interval for private board' => 'Refresh interval for privat board',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Aufgabe ansehen',
|
||||
'Remove user' => 'Benutzer löschen',
|
||||
'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',
|
||||
'Username' => 'Benutzername',
|
||||
'Password' => 'Passwort',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Über',
|
||||
'Database driver:' => 'Datenbanktreiber:',
|
||||
'Board settings' => 'Pinnwandeinstellungen',
|
||||
'URL and token' => 'URL und Token',
|
||||
'Webhook settings' => 'Webhook-Einstellungen',
|
||||
'URL for task creation:' => 'URL zur Aufgabenerstellung:',
|
||||
'Reset token' => 'Token zurücksetzen',
|
||||
'API endpoint:' => 'API-Endpunkt:',
|
||||
'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.',
|
||||
'Number of failed login:' => 'Anzahl fehlgeschlagener Anmeldungen:',
|
||||
'Account locked until:' => 'Konto gesperrt bis:',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Προβολή της εργασίας',
|
||||
'Remove user' => 'Αφαίρεση χρήστη',
|
||||
'Do you really want to remove this user: "%s"?' => 'Θέλετε σίγουρα να αφαιρέσετε αυτό τον χρήστη: « %s » ?',
|
||||
'New user' => 'Νέος Χρήστης',
|
||||
'All users' => 'Όλοι οι χρήστες',
|
||||
'Username' => 'Όνομα χρήστη',
|
||||
'Password' => 'Κωδικός',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'About',
|
||||
'Database driver:' => 'Database driver:',
|
||||
'Board settings' => 'Board settings',
|
||||
'URL and token' => 'URL / token',
|
||||
'Webhook settings' => 'Webhook settings',
|
||||
'URL for task creation:' => 'URL για δημιουργία εργασίας:',
|
||||
'Reset token' => 'Reset token',
|
||||
'API endpoint:' => 'URL API:',
|
||||
'Refresh interval for private board' => 'Ανανέωση interval στο private board',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Ver esta tarea',
|
||||
'Remove user' => 'Eliminar un usuario',
|
||||
'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',
|
||||
'Username' => 'Nombre de usuario',
|
||||
'Password' => 'Contraseña',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Acerca de',
|
||||
'Database driver:' => 'Controlador (Driver) de la base de datos',
|
||||
'Board settings' => 'Configuraciones del Tablero',
|
||||
'URL and token' => 'URL y ficha',
|
||||
'Webhook settings' => 'Configuraciones del Disparador Web (Webhook)',
|
||||
'URL for task creation:' => 'URL para la creación de tareas',
|
||||
'Reset token' => 'Limpiar ficha',
|
||||
'API endpoint:' => 'Punto final del API',
|
||||
'Refresh interval for private board' => 'Intervalo de refresco del tablero privado',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Näytä tämä tehtävä',
|
||||
'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"?',
|
||||
'New user' => 'Uusi käyttäjä',
|
||||
'All users' => 'Kaikki käyttäjät',
|
||||
'Username' => 'Käyttäjänimi',
|
||||
'Password' => 'Salasana',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Tietoja',
|
||||
'Database driver:' => 'Tietokantaohjelmisto:',
|
||||
'Board settings' => 'Taulun asetukset',
|
||||
'URL and token' => 'URL ja token',
|
||||
'Webhook settings' => 'Webhookin asetukset',
|
||||
'URL for task creation:' => 'URL tehtävän luomiseksi:',
|
||||
'Reset token' => 'Vaihda token',
|
||||
'API endpoint:' => 'API päätepiste:',
|
||||
'Refresh interval for private board' => 'Päivitystiheys yksityisille tauluille',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Voir cette tâche',
|
||||
'Remove user' => 'Supprimer un utilisateur',
|
||||
'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',
|
||||
'Username' => 'Nom d\'utilisateur',
|
||||
'Password' => 'Mot de passe',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'À propos',
|
||||
'Database driver:' => 'Type de base de données :',
|
||||
'Board settings' => 'Paramètres du tableau',
|
||||
'URL and token' => 'URL et jeton de sécurité',
|
||||
'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é',
|
||||
'API endpoint:' => 'URL de l\'API :',
|
||||
'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.',
|
||||
'Number of failed login:' => 'Nombre de connexion échouées :',
|
||||
'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',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Feladat megtekinté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"?',
|
||||
'New user' => 'Új felhasználó',
|
||||
'All users' => 'Minden felhasználó',
|
||||
'Username' => 'Felhasználónév',
|
||||
'Password' => 'Jelszó',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Kanboard információ',
|
||||
'Database driver:' => 'Adatbázis motor:',
|
||||
'Board settings' => 'Tábla beállítások',
|
||||
'URL and token' => 'URL és tokenek',
|
||||
'Webhook settings' => 'Webhook beállítások',
|
||||
'URL for task creation:' => 'Feladat létrehozás URL:',
|
||||
'Reset token' => 'Token újragenerálása',
|
||||
'API endpoint:' => 'API végpont:',
|
||||
'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',
|
||||
'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"?',
|
||||
//'Uninstall' => '',
|
||||
// 'Uninstall' => '',
|
||||
'Listing' => 'Listázás',
|
||||
'Metadata' => 'Metaadat',
|
||||
'Manage projects' => 'Projektek kezelése',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
'Enter one task by line.' => 'Minden sorban egy feladatot adjon meg.',
|
||||
'Number of failed login:' => 'A sikertelen bejelentkezések száma:',
|
||||
'Account locked until:' => 'A számla zárolva a következő időpontig:',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Lihat tugas ini',
|
||||
'Remove user' => 'Hapus pengguna',
|
||||
'Do you really want to remove this user: "%s"?' => 'Anda yakin akan menghapus pengguna ini : « %s » ?',
|
||||
'New user' => 'Pengguna baru',
|
||||
'All users' => 'Semua pengguna',
|
||||
'Username' => 'Nama pengguna',
|
||||
'Password' => 'Kata sandi',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Tentang',
|
||||
'Database driver:' => 'Driver basis data :',
|
||||
'Board settings' => 'Pengaturan papan',
|
||||
'URL and token' => 'URL dan token',
|
||||
'Webhook settings' => 'Pengaturan webhook',
|
||||
'URL for task creation:' => 'URL untuk pembuatan tugas :',
|
||||
'Reset token' => 'Mereset token',
|
||||
'API endpoint:' => 'API endpoint :',
|
||||
'Refresh interval for private board' => 'Interval pembaruan untuk papan pribadi',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Visualizza questo task',
|
||||
'Remove user' => 'Cancella un utente',
|
||||
'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',
|
||||
'Username' => 'Nome utente',
|
||||
'Password' => 'Password',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Informazioni',
|
||||
'Database driver:' => 'Driver per Database',
|
||||
'Board settings' => 'Impostazioni bacheca',
|
||||
'URL and token' => 'URL e token',
|
||||
'Webhook settings' => 'Impostazione Webhook',
|
||||
'URL for task creation:' => 'URL per la creazione dei task:',
|
||||
'Reset token' => 'Rigenera il token',
|
||||
'API endpoint:' => 'Endpoint dell\'API:',
|
||||
'Refresh interval for private board' => 'Intervallo di refresh per le bacheche private',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'このタクスを見る',
|
||||
'Remove user' => 'ユーザの削除',
|
||||
'Do you really want to remove this user: "%s"?' => 'ユーザ「%s」を本当に削除しますか?',
|
||||
'New user' => 'ユーザを追加する',
|
||||
'All users' => 'すべてのユーザ',
|
||||
'Username' => 'ユーザ名',
|
||||
'Password' => 'パスワード',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => '情報',
|
||||
'Database driver:' => 'データベースドライバ:',
|
||||
'Board settings' => '基本設定',
|
||||
'URL and token' => 'URL とトークン',
|
||||
'Webhook settings' => 'Webhook の設定',
|
||||
'URL for task creation:' => 'Task 作成の URL:',
|
||||
'Reset token' => 'トークンのリセット',
|
||||
'API endpoint:' => 'API エンドポイント:',
|
||||
'Refresh interval for private board' => '非公開ボードの更新頻度',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => '이 할일 보기',
|
||||
'Remove user' => '사용자 삭제',
|
||||
'Do you really want to remove this user: "%s"?' => '사용자 "%s"를 정말로 삭제하시겠습니까?',
|
||||
'New user' => '사용자를 추가하는 ',
|
||||
'All users' => '모든 사용자',
|
||||
'Username' => '사용자 이름',
|
||||
'Password' => '패스워드',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => '정보',
|
||||
'Database driver:' => '데이터베이스 드라이버:',
|
||||
'Board settings' => '기본 설정',
|
||||
'URL and token' => 'URL와 토큰',
|
||||
'Webhook settings' => 'Webhook의 설정',
|
||||
'URL for task creation:' => 'Task작성의 URL:',
|
||||
'Reset token' => '토큰 리셋',
|
||||
'API endpoint:' => 'API엔드 포인트:',
|
||||
'Refresh interval for private board' => '비공개 보드의 갱신 빈도',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Lihat tugas ini',
|
||||
'Remove user' => 'Hapus pengguna',
|
||||
'Do you really want to remove this user: "%s"?' => 'Anda yakin mahu menghapus pengguna ini : « %s » ?',
|
||||
'New user' => 'Pengguna baru',
|
||||
'All users' => 'Semua pengguna',
|
||||
'Username' => 'Nama pengguna',
|
||||
'Password' => 'Kata laluan',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Tentang',
|
||||
'Database driver:' => 'Driver pengkalan data:',
|
||||
'Board settings' => 'Pengaturan papan',
|
||||
'URL and token' => 'URL dan token',
|
||||
'Webhook settings' => 'Penetapan webhook',
|
||||
'URL for task creation:' => 'URL untuk cipta tugas:',
|
||||
'Reset token' => 'Menetap semula token',
|
||||
'API endpoint:' => 'API endpoint :',
|
||||
'Refresh interval for private board' => 'Interval pembaruan untuk papan pribadi',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Se denne oppgaven',
|
||||
'Remove user' => 'Fjern bruker',
|
||||
'Do you really want to remove this user: "%s"?' => 'Vil du fjerne denne brukeren: "%s"?',
|
||||
'New user' => 'Ny bruker',
|
||||
'All users' => 'Alle brukere',
|
||||
'Username' => 'Brukernavn',
|
||||
'Password' => 'Passord',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Om',
|
||||
'Database driver:' => 'Database driver:',
|
||||
'Board settings' => 'Innstillinger for prosjektside',
|
||||
'URL and token' => 'URL og token',
|
||||
'Webhook settings' => 'Webhook innstillinger',
|
||||
'URL for task creation:' => 'URL for oppgaveopprettelse:',
|
||||
'Reset token' => 'Resette token',
|
||||
'API endpoint:' => 'API endpoint:',
|
||||
'Refresh interval for private board' => 'Oppdateringsintervall for privat hovedside',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Deze taak bekijken',
|
||||
'Remove user' => 'Gebruiker verwijderen',
|
||||
'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',
|
||||
'Username' => 'Gebruikersnaam',
|
||||
'Password' => 'Wachtwoord',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Over',
|
||||
'Database driver:' => 'Database driver :',
|
||||
'Board settings' => 'Bord instellingen',
|
||||
'URL and token' => 'URL en token',
|
||||
'Webhook settings' => 'Webhook instellingen',
|
||||
'URL for task creation:' => 'URL voor aanmaken taken :',
|
||||
'Reset token' => 'Token resetten',
|
||||
'API endpoint:' => 'API endpoint :',
|
||||
'Refresh interval for private board' => 'Verversingsinterval voor private borden',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Zobacz zadanie',
|
||||
'Remove user' => 'Usuń użytkownika',
|
||||
'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',
|
||||
'Username' => 'Nazwa użytkownika',
|
||||
'Password' => 'Hasło',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Informacje',
|
||||
'Database driver:' => 'Silnik bazy danych:',
|
||||
'Board settings' => 'Ustawienia tablicy',
|
||||
'URL and token' => 'URL i token',
|
||||
'Webhook settings' => 'Ustawienia webhook',
|
||||
'URL for task creation:' => 'URL do tworzenia zadań',
|
||||
'Reset token' => 'Resetuj token',
|
||||
'API endpoint:' => 'Endpoint API',
|
||||
'Refresh interval for private board' => 'Częstotliwość odświeżania dla tablicy prywatnej',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Ver esta tarefa',
|
||||
'Remove user' => 'Remover usuário',
|
||||
'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',
|
||||
'Username' => 'Nome de usuário',
|
||||
'Password' => 'Senha',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Sobre',
|
||||
'Database driver:' => 'Driver do banco de dados:',
|
||||
'Board settings' => 'Configurações do board',
|
||||
'URL and token' => 'URL e token',
|
||||
'Webhook settings' => 'Configurações do Webhook',
|
||||
'URL for task creation:' => 'URL para a criação da tarefa:',
|
||||
'Reset token' => 'Resetar token',
|
||||
'API endpoint:' => 'API endpoint:',
|
||||
'Refresh interval for private board' => 'Intervalo de atualização para um board privado',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Ver esta tarefa',
|
||||
'Remove user' => 'Remover utilizador',
|
||||
'Do you really want to remove this user: "%s"?' => 'Pretende mesmo remover este utilizador: "%s"?',
|
||||
'New user' => 'Novo utilizador',
|
||||
'All users' => 'Todos os utilizadores',
|
||||
'Username' => 'Nome de utilizador',
|
||||
'Password' => 'Senha',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Sobre',
|
||||
'Database driver:' => 'Driver da base de dados:',
|
||||
'Board settings' => 'Configurações do Quadro',
|
||||
'URL and token' => 'URL e token',
|
||||
'Webhook settings' => 'Configurações do Webhook',
|
||||
'URL for task creation:' => 'URL para a criação da tarefa:',
|
||||
'Reset token' => 'Redefinir token',
|
||||
'API endpoint:' => 'API endpoint:',
|
||||
'Refresh interval for private board' => 'Intervalo de actualização para um quadro privado',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Посмотреть задачу',
|
||||
'Remove user' => 'Удалить пользователя',
|
||||
'Do you really want to remove this user: "%s"?' => 'Вы точно хотите удалить пользователя: « %s » ?',
|
||||
'New user' => 'Новый пользователь',
|
||||
'All users' => 'Все пользователи',
|
||||
'Username' => 'Имя пользователя',
|
||||
'Password' => 'Пароль',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Информация',
|
||||
'Database driver:' => 'Драйвер базы данных',
|
||||
'Board settings' => 'Настройки доски',
|
||||
'URL and token' => 'URL и токен',
|
||||
'Webhook settings' => 'Параметры Webhook',
|
||||
'URL for task creation:' => 'URL для создания задачи:',
|
||||
'Reset token' => 'Перезагрузить токен',
|
||||
'API endpoint:' => 'API endpoint:',
|
||||
'Refresh interval for private board' => 'Период обновления для частных досок',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Pregledaj zadatak',
|
||||
'Remove user' => 'Ukloni korisnika',
|
||||
'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',
|
||||
'Username' => 'Korisnik',
|
||||
'Password' => 'Lozinka',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Informacje',
|
||||
'Database driver:' => 'Database driver:',
|
||||
'Board settings' => 'Podešavanje table',
|
||||
'URL and token' => 'URL i token',
|
||||
// 'Webhook settings' => '',
|
||||
'URL for task creation:' => 'URL za kreiranje zadataka',
|
||||
'Reset token' => 'Resetuj token',
|
||||
// 'API endpoint:' => '',
|
||||
'Refresh interval for private board' => 'Interval osvežavanja privatnih tabli',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Se denna uppgift',
|
||||
'Remove user' => 'Ta bort användare',
|
||||
'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',
|
||||
'Username' => 'Användarnamn',
|
||||
'Password' => 'Lösenord',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Om',
|
||||
'Database driver:' => 'Databasdrivrutin:',
|
||||
'Board settings' => 'Inställningar för tavla',
|
||||
'URL and token' => 'URL och token',
|
||||
'Webhook settings' => 'Webhook inställningar',
|
||||
'URL for task creation:' => 'URL för att skapa uppgift:',
|
||||
'Reset token' => 'Nollställ token',
|
||||
'API endpoint:' => 'API ändpunkt:',
|
||||
'Refresh interval for private board' => 'Uppdateringsintervall för privat tavla',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'รายละเอียดงานนี้',
|
||||
'Remove user' => 'เอาผู้ใช้ออก',
|
||||
'Do you really want to remove this user: "%s"?' => 'คุณต้องการเอาผู้ใช้ « %s » ออกใช่หรือไม่?',
|
||||
'New user' => 'ผู้ใช้ใหม่',
|
||||
'All users' => 'ผู้ใช้ทั้งหมด',
|
||||
'Username' => 'ชื่อผู้ใช้',
|
||||
'Password' => 'รหัสผ่าน',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'เกี่ยวกับ',
|
||||
'Database driver:' => 'เครื่องมือฐานขข้อมูล',
|
||||
'Board settings' => 'ตั้งค่าบอร์ด',
|
||||
// 'URL and token' => '',
|
||||
// 'Webhook settings' => '',
|
||||
// 'URL for task creation:' => '',
|
||||
// 'Reset token' => '',
|
||||
// 'API endpoint:' => '',
|
||||
'Refresh interval for private board' => 'ระยะรีเฟรชบอร์ดส่วนตัว',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => 'Bu görevi görüntüle',
|
||||
'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"?',
|
||||
'New user' => 'Yeni kullanıcı',
|
||||
'All users' => 'Tüm kullanıcılar',
|
||||
'Username' => 'Kullanıcı adı',
|
||||
'Password' => 'Şifre',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => 'Hakkında',
|
||||
'Database driver:' => 'Veritabanı sürücüsü:',
|
||||
'Board settings' => 'Tablo ayarları',
|
||||
'URL and token' => 'URL veya Belirteç',
|
||||
'Webhook settings' => 'Webhook ayarları',
|
||||
'URL for task creation:' => 'Görev oluşturma için URL',
|
||||
'Reset token' => 'Belirteci sıfırla',
|
||||
'API endpoint:' => 'API bitiş noktası:',
|
||||
'Refresh interval for private board' => 'Özel tablolar için yenileme sıklığı',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ return array(
|
|||
'View this task' => '查看该任务',
|
||||
'Remove user' => '移除用户',
|
||||
'Do you really want to remove this user: "%s"?' => '确定要删除用户"%s"吗?',
|
||||
'New user' => '新建用户',
|
||||
'All users' => '所有用户',
|
||||
'Username' => '用户名',
|
||||
'Password' => '密码',
|
||||
|
|
@ -412,9 +411,7 @@ return array(
|
|||
'About' => '关于',
|
||||
'Database driver:' => '数据库驱动:',
|
||||
'Board settings' => '看板设置',
|
||||
'URL and token' => 'URL和令牌',
|
||||
'Webhook settings' => 'Webhook 设置',
|
||||
'URL for task creation:' => '创建任务的URL:',
|
||||
'Reset token' => '重置令牌',
|
||||
'API endpoint:' => 'API 端点:',
|
||||
'Refresh interval for private board' => '私人看板的刷新时间',
|
||||
|
|
@ -1200,4 +1197,9 @@ return array(
|
|||
// 'Enter one task by line.' => '',
|
||||
// 'Number of failed login:' => '',
|
||||
// 'Account locked until:' => '',
|
||||
// 'Email settings' => '',
|
||||
// 'Email sender address' => '',
|
||||
// 'Email transport' => '',
|
||||
// 'Webhook token' => '',
|
||||
// 'Imports' => '',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -9,9 +9,6 @@
|
|||
<?= $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>
|
||||
|
||||
<?= $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->select('application_language', $languages, $values, $errors) ?>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -7,6 +7,9 @@
|
|||
<li <?= $this->app->checkMenuSelection('ConfigController', 'application') ?>>
|
||||
<?= $this->url->link(t('Application settings'), 'ConfigController', 'application') ?>
|
||||
</li>
|
||||
<li <?= $this->app->checkMenuSelection('ConfigController', 'email') ?>>
|
||||
<?= $this->url->link(t('Email settings'), 'ConfigController', 'email') ?>
|
||||
</li>
|
||||
<li <?= $this->app->checkMenuSelection('ConfigController', 'project') ?>>
|
||||
<?= $this->url->link(t('Project settings'), 'ConfigController', 'project') ?>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ abstract class Base extends PHPUnit_Framework_TestCase
|
|||
$this->container['httpClient'] = $this
|
||||
->getMockBuilder('\Kanboard\Core\Http\Client')
|
||||
->setConstructorArgs(array($this->container))
|
||||
->setMethods(array('get', 'getJson', 'postJson', 'postForm'))
|
||||
->setMethods(array('get', 'getJson', 'postJson', 'postJsonAsync', 'postForm', 'postFormAsync'))
|
||||
->getMock();
|
||||
|
||||
$this->container['emailClient'] = $this
|
||||
|
|
|
|||
|
|
@ -32,4 +32,15 @@ class MailHelperTest extends Base
|
|||
|
||||
$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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue