From 2a313eb971ab36e166308f7882897ef204234d0a Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Fri, 17 Nov 2017 14:46:23 -0800 Subject: Add the possibility to send tasks and comments to multiple recipients --- ChangeLog | 2 +- app/Controller/CommentMailController.php | 23 ++++++++++++----------- app/Controller/TaskMailController.php | 23 ++++++++++++----------- app/Import/TaskImport.php | 4 +--- app/Locale/bs_BA/translations.php | 2 +- app/Locale/ca_ES/translations.php | 2 +- app/Locale/cs_CZ/translations.php | 2 +- app/Locale/da_DK/translations.php | 2 +- app/Locale/de_DE/translations.php | 2 +- app/Locale/el_GR/translations.php | 2 +- app/Locale/es_ES/translations.php | 2 +- app/Locale/fi_FI/translations.php | 2 +- app/Locale/fr_FR/translations.php | 2 +- app/Locale/hr_HR/translations.php | 2 +- app/Locale/hu_HU/translations.php | 2 +- app/Locale/id_ID/translations.php | 2 +- app/Locale/it_IT/translations.php | 2 +- app/Locale/ja_JP/translations.php | 2 +- app/Locale/ko_KR/translations.php | 2 +- app/Locale/my_MY/translations.php | 2 +- app/Locale/nb_NO/translations.php | 2 +- app/Locale/nl_NL/translations.php | 2 +- app/Locale/pl_PL/translations.php | 2 +- app/Locale/pt_BR/translations.php | 2 +- app/Locale/pt_PT/translations.php | 2 +- app/Locale/ro_RO/translations.php | 2 +- app/Locale/ru_RU/translations.php | 2 +- app/Locale/sr_Latn_RS/translations.php | 2 +- app/Locale/sv_SE/translations.php | 2 +- app/Locale/th_TH/translations.php | 2 +- app/Locale/tr_TR/translations.php | 2 +- app/Locale/vi_VN/translations.php | 2 +- app/Locale/zh_CN/translations.php | 2 +- app/Template/comment_mail/create.php | 4 ++-- app/Template/task_mail/create.php | 4 ++-- app/Validator/CommentValidator.php | 3 +-- app/Validator/TaskValidator.php | 3 +-- app/functions.php | 7 +++++++ assets/js/app.min.js | 4 ++-- assets/js/components/autocomplete-email.js | 14 ++++++++++---- tests/units/Validator/CommentValidatorTest.php | 12 +----------- tests/units/Validator/TaskValidatorTest.php | 8 ++------ vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_static.php | 1 + 44 files changed, 85 insertions(+), 86 deletions(-) diff --git a/ChangeLog b/ChangeLog index 473c37e0..9473a802 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ Breaking changes: New features: * Add predefined templates for task descriptions +* Add the possibility to send tasks and comments to multiple recipients * Add users, groups and projects search * Add command line argument to display Kanboard version * Add user backend provider system (to be used by external plugins) @@ -16,7 +17,6 @@ New features: Improvements: -* Improve docs * Minor CSS improvements * Add help message on project sharing page * Task CSV import is now able to handle the priority, start date, tags and one external link diff --git a/app/Controller/CommentMailController.php b/app/Controller/CommentMailController.php index 144c9a13..94947027 100644 --- a/app/Controller/CommentMailController.php +++ b/app/Controller/CommentMailController.php @@ -51,24 +51,25 @@ class CommentMailController extends BaseController protected function sendByEmail(array $values) { - $html = $this->template->render('comment_mail/email', array( - 'email' => $values, - )); + $html = $this->template->render('comment_mail/email', array('email' => $values)); + $emails = explode_csv_field($values['emails']); - $this->emailClient->send( - $values['email'], - $values['email'], - $values['subject'], - $html - ); + foreach ($emails as $email) { + $this->emailClient->send( + $email, + $email, + $values['subject'], + $html + ); + } } protected function prepareComment(array $values) { - $values['comment'] .= "\n\n_".t('Sent by email to [%s](mailto:%s) (%s)', $values['email'], $values['email'], $values['subject']).'_'; + $values['comment'] .= "\n\n_".t('Sent by email to "%s" (%s)', $values['emails'], $values['subject']).'_'; unset($values['subject']); - unset($values['email']); + unset($values['emails']); return $values; } diff --git a/app/Controller/TaskMailController.php b/app/Controller/TaskMailController.php index feb96a68..9e753af1 100644 --- a/app/Controller/TaskMailController.php +++ b/app/Controller/TaskMailController.php @@ -36,7 +36,7 @@ class TaskMailController extends BaseController $this->flash->success(t('Task sent by email successfully.')); $this->commentModel->create(array( - 'comment' => t('This task was sent by email to "%s" with subject "%s".', $values['email'], $values['subject']), + 'comment' => t('This task was sent by email to "%s" with subject "%s".', $values['emails'], $values['subject']), 'user_id' => $this->userSession->getId(), 'task_id' => $task['id'], )); @@ -49,15 +49,16 @@ class TaskMailController extends BaseController protected function sendByEmail(array $values, array $task) { - $html = $this->template->render('task_mail/email', array( - 'task' => $task, - )); - - $this->emailClient->send( - $values['email'], - $values['email'], - $values['subject'], - $html - ); + $emails = explode_csv_field($values['emails']); + $html = $this->template->render('task_mail/email', array('task' => $task)); + + foreach ($emails as $email) { + $this->emailClient->send( + $email, + $email, + $values['subject'], + $html + ); + } } } diff --git a/app/Import/TaskImport.php b/app/Import/TaskImport.php index 4f89962b..8278ed26 100644 --- a/app/Import/TaskImport.php +++ b/app/Import/TaskImport.php @@ -67,9 +67,7 @@ class TaskImport extends Base $this->nbImportedTasks++; if (! empty($row['tags'])) { - $tagsList = explode(',', $row['tags']); - array_walk($tagsList, function (&$value) { $value = trim($value); }); - $this->taskTagModel->save($this->projectId, $taskId, $tagsList); + $this->taskTagModel->save($this->projectId, $taskId, explode_csv_field($row['tags'])); } if (! empty($row['external_link'])) { diff --git a/app/Locale/bs_BA/translations.php b/app/Locale/bs_BA/translations.php index 12b96009..06e3f9f9 100644 --- a/app/Locale/bs_BA/translations.php +++ b/app/Locale/bs_BA/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Nemoguće priložiti datoteke, provjeri prava na "data" direktoriju na serveru.', 'Another category with the same name exists in this project' => 'Kategorija sa ovim imenom već postoji na ovom projektu', 'Comment sent by email successfully.' => 'Komentar je uspješno poslan email-om.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Pošalji email-om [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Pošalji email-om "%s" (%s)', 'Unable to read uploaded file.' => 'Nemoguće pročitati dodanu datoteku.', 'Database uploaded successfully.' => 'Baza podataka je uspješno dodana.', 'Task sent by email successfully.' => 'Zadatak je uspješno poslan email-om.', diff --git a/app/Locale/ca_ES/translations.php b/app/Locale/ca_ES/translations.php index 60769225..d72bd4d1 100644 --- a/app/Locale/ca_ES/translations.php +++ b/app/Locale/ca_ES/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'No es pot pujar arxius, comprovar els permisos de la carpeta de dades.', 'Another category with the same name exists in this project' => 'Una altra categoria amb el mateix nom existeix en aquest projecte', 'Comment sent by email successfully.' => 'Comentar enviat per correu electrònic amb èxit.', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', 'Unable to read uploaded file.' => 'No es pot llegir el fitxer pujat.', 'Database uploaded successfully.' => 'Base de dades carregat correctament.', 'Task sent by email successfully.' => 'Tasca enviat per correu electrònic amb èxit.', diff --git a/app/Locale/cs_CZ/translations.php b/app/Locale/cs_CZ/translations.php index c21b22f7..c7fc0e4e 100644 --- a/app/Locale/cs_CZ/translations.php +++ b/app/Locale/cs_CZ/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/da_DK/translations.php b/app/Locale/da_DK/translations.php index 1d58fe84..66f7d571 100644 --- a/app/Locale/da_DK/translations.php +++ b/app/Locale/da_DK/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/de_DE/translations.php b/app/Locale/de_DE/translations.php index 71b6ae76..174582c0 100644 --- a/app/Locale/de_DE/translations.php +++ b/app/Locale/de_DE/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Dateien können nicht hochgeladen werden, überprüfen Sie die Berechtigungen Ihres Datenordners.', 'Another category with the same name exists in this project' => 'Eine weitere Kategorie mit demselben Namen existiert in diesem Projekt', 'Comment sent by email successfully.' => 'Kommentar wurde erfolgreich per E-Mail gesendet.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Wurde per E-Mail an [%s] gesendet (mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Wurde per E-Mail an [%s] gesendet "%s"', 'Unable to read uploaded file.' => 'Die hochgeladene Datei konnte nicht gelesen werden.', 'Database uploaded successfully.' => 'Die Datenbank wurde erfolgreich hochgeladen.', 'Task sent by email successfully.' => 'Aufgabe wurde erfolgreich per E-Mail gesendet.', diff --git a/app/Locale/el_GR/translations.php b/app/Locale/el_GR/translations.php index ce53ef59..61d4e449 100644 --- a/app/Locale/el_GR/translations.php +++ b/app/Locale/el_GR/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/es_ES/translations.php b/app/Locale/es_ES/translations.php index df9dee49..ac1b82ec 100644 --- a/app/Locale/es_ES/translations.php +++ b/app/Locale/es_ES/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'No se pueden cargar archivos, verifique los permisos de su carpeta de datos (data)', 'Another category with the same name exists in this project' => 'Ya existe otra categoría con el mismo nombre en este proyecto', 'Comment sent by email successfully.' => 'Comentario enviado exitosamente por email', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Enviado por email a [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Enviado por email a "%s" (%s)', 'Unable to read uploaded file.' => 'No se pudo leer el archivo cargado', 'Database uploaded successfully.' => 'Base de datos cargada exitosamente', 'Task sent by email successfully.' => 'Tarea enviada exitosamente por email', diff --git a/app/Locale/fi_FI/translations.php b/app/Locale/fi_FI/translations.php index edfa7dd8..25f8ecec 100644 --- a/app/Locale/fi_FI/translations.php +++ b/app/Locale/fi_FI/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/fr_FR/translations.php b/app/Locale/fr_FR/translations.php index adb88eb0..3768839f 100644 --- a/app/Locale/fr_FR/translations.php +++ b/app/Locale/fr_FR/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Impossible de transférer le ou les fichiers, vérifiez les permissions du répertoire de données.', 'Another category with the same name exists in this project' => 'Une autre catégorie avec le même nom existe dans ce projet', 'Comment sent by email successfully.' => 'Commentaire envoyé par email avec succès.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Envoyé par email à [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Envoyé par email à « %s » (%s)', 'Unable to read uploaded file.' => 'Impossible de lire le fichier téléversé.', 'Database uploaded successfully.' => 'Base de données téléversée avec succès.', 'Task sent by email successfully.' => 'Tâche envoyée par email avec succès.', diff --git a/app/Locale/hr_HR/translations.php b/app/Locale/hr_HR/translations.php index 39159c53..9ff7ae72 100644 --- a/app/Locale/hr_HR/translations.php +++ b/app/Locale/hr_HR/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/hu_HU/translations.php b/app/Locale/hu_HU/translations.php index c0bd0a70..a90662d5 100644 --- a/app/Locale/hu_HU/translations.php +++ b/app/Locale/hu_HU/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Nem lehet feltölteni fájlokat. Ellenőrizze az adatkönyvtár jogosultságait.', 'Another category with the same name exists in this project' => 'Már létezik egy ugyanilyen nevű kategória ebben a projektben', 'Comment sent by email successfully.' => 'A megjegyzés sikeresen elküldve e-mailben.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'E-mail küldve neki: [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'E-mail küldve neki: "%s" (%s)', 'Unable to read uploaded file.' => 'Nem lehet beolvasni a feltöltött fájlt.', 'Database uploaded successfully.' => 'Az adatbázis sikeresen feltöltve.', 'Task sent by email successfully.' => 'A feladat sikeresen elküldve e-mailben.', diff --git a/app/Locale/id_ID/translations.php b/app/Locale/id_ID/translations.php index 59c92695..701c3410 100644 --- a/app/Locale/id_ID/translations.php +++ b/app/Locale/id_ID/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/it_IT/translations.php b/app/Locale/it_IT/translations.php index 5e925c29..4cf1831e 100644 --- a/app/Locale/it_IT/translations.php +++ b/app/Locale/it_IT/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/ja_JP/translations.php b/app/Locale/ja_JP/translations.php index f8635aa4..6aaf2571 100644 --- a/app/Locale/ja_JP/translations.php +++ b/app/Locale/ja_JP/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'ファイルをアップロードできません。データフォルダのアクセス権を確認してください。', 'Another category with the same name exists in this project' => '同じ名前の別のカテゴリがプロジェクトに存在します', 'Comment sent by email successfully.' => 'メールでコメントを送信しました', - 'Sent by email to [%s](mailto:%s) (%s)' => '%s をメールで送信しました(mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => '%s をメールで送信しました "%s"', 'Unable to read uploaded file.' => 'アップロードされたファイルを読み込めません', 'Database uploaded successfully.' => 'データベースをアップロードしました', 'Task sent by email successfully.' => 'タスクをメールで送信しました', diff --git a/app/Locale/ko_KR/translations.php b/app/Locale/ko_KR/translations.php index c83690b5..8a139def 100644 --- a/app/Locale/ko_KR/translations.php +++ b/app/Locale/ko_KR/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/my_MY/translations.php b/app/Locale/my_MY/translations.php index 587721ce..7ce542a2 100644 --- a/app/Locale/my_MY/translations.php +++ b/app/Locale/my_MY/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/nb_NO/translations.php b/app/Locale/nb_NO/translations.php index 49f39bd3..49ba2ae6 100644 --- a/app/Locale/nb_NO/translations.php +++ b/app/Locale/nb_NO/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/nl_NL/translations.php b/app/Locale/nl_NL/translations.php index 6a7a9782..d1bc66a8 100644 --- a/app/Locale/nl_NL/translations.php +++ b/app/Locale/nl_NL/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/pl_PL/translations.php b/app/Locale/pl_PL/translations.php index 0eeae221..78285ba3 100644 --- a/app/Locale/pl_PL/translations.php +++ b/app/Locale/pl_PL/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/pt_BR/translations.php b/app/Locale/pt_BR/translations.php index a7568b6b..61ad9eb7 100644 --- a/app/Locale/pt_BR/translations.php +++ b/app/Locale/pt_BR/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Incapaz de enviar arquivos. Verifique as permissões da sua pasta de dados.', 'Another category with the same name exists in this project' => 'Outra categoria com o mesmo nome existe neste projeto', 'Comment sent by email successfully.' => 'Comentário enviado por e-mail com sucesso.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Enviar por e-mail para [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Enviar por e-mail para "%s" (%s)', 'Unable to read uploaded file.' => 'Incapaz de ler arquivos enviados.', 'Database uploaded successfully.' => 'Base de dados enviado com sucesso.', 'Task sent by email successfully.' => 'Tarefa enviada por e-mail com sucesso.', diff --git a/app/Locale/pt_PT/translations.php b/app/Locale/pt_PT/translations.php index 92a1503b..824979b3 100644 --- a/app/Locale/pt_PT/translations.php +++ b/app/Locale/pt_PT/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Impossivel enviar ficheiros, verifique as permissões da pasta data', 'Another category with the same name exists in this project' => 'Outra categoria com o mesmo nome já existe neste projecto', 'Comment sent by email successfully.' => 'Comentário enviado por email com sucesso.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Enviado por email para [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Enviado por email para "%s" (%s)', 'Unable to read uploaded file.' => 'Não foi possivel ler ficheiro enviado.', 'Database uploaded successfully.' => 'Base de dados enviada com sucesso.', 'Task sent by email successfully.' => 'Tarefa enviada por email com sucesso.', diff --git a/app/Locale/ro_RO/translations.php b/app/Locale/ro_RO/translations.php index bbe6cffb..6a09c3d7 100644 --- a/app/Locale/ro_RO/translations.php +++ b/app/Locale/ro_RO/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Nu am putut încărca fișierele, verifică permisiunile directorului de date.', 'Another category with the same name exists in this project' => 'Altă categorie cu același nume există deja în proiect', 'Comment sent by email successfully.' => 'Comentariul a fost trimis prin e-mail.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Trimite prin e-mail la [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Trimite prin e-mail la "%s" (%s)', 'Unable to read uploaded file.' => 'Nu pot citi fișierul încărcat.', 'Database uploaded successfully.' => 'Baza de date a fost încărcată cu succes.', 'Task sent by email successfully.' => 'Sarcina a fost trimisă prin e-mail.', diff --git a/app/Locale/ru_RU/translations.php b/app/Locale/ru_RU/translations.php index f35c36bd..d04d73f1 100644 --- a/app/Locale/ru_RU/translations.php +++ b/app/Locale/ru_RU/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Невозможно загрузить файлы, проверьте права доступа на папку "data".', 'Another category with the same name exists in this project' => 'Другая категория с таким же именем уже существует в этом проекте', 'Comment sent by email successfully.' => 'Комментарий успешно отправлен по e-mail.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Отправлен по e-mail для [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'Отправлен по e-mail для "%s" (%s)', 'Unable to read uploaded file.' => 'Не удаётся прочитать загруженный файл.', 'Database uploaded successfully.' => 'База данных успешно импортирована.', 'Task sent by email successfully.' => 'Задача успешно отправлена по e-mail.', diff --git a/app/Locale/sr_Latn_RS/translations.php b/app/Locale/sr_Latn_RS/translations.php index 5d85e1d6..f7060da2 100644 --- a/app/Locale/sr_Latn_RS/translations.php +++ b/app/Locale/sr_Latn_RS/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/sv_SE/translations.php b/app/Locale/sv_SE/translations.php index b8f9dbf6..a497a857 100644 --- a/app/Locale/sv_SE/translations.php +++ b/app/Locale/sv_SE/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/th_TH/translations.php b/app/Locale/th_TH/translations.php index 4f4de735..4c6f45b7 100644 --- a/app/Locale/th_TH/translations.php +++ b/app/Locale/th_TH/translations.php @@ -1266,7 +1266,7 @@ return array( // 'Unable to upload files, check the permissions of your data folder.' => '', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Locale/tr_TR/translations.php b/app/Locale/tr_TR/translations.php index 82853a92..df95d2b3 100644 --- a/app/Locale/tr_TR/translations.php +++ b/app/Locale/tr_TR/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Dosya yüklenemedi. Lütfen yükleme dizine yazma izninizi kontrol ediniz.', 'Another category with the same name exists in this project' => 'Bu projede aynı ada sahip başka bir kategori var', 'Comment sent by email successfully.' => 'Yorum ePosta ile başarıyla gönderildi.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'ePostayı gönder [%s](mailto:%s) (%s)', + 'Sent by email to "%s" (%s)' => 'ePostayı gönder "%s" (%s)', 'Unable to read uploaded file.' => 'Yüklenen dosya okunamadı.', 'Database uploaded successfully.' => 'Veritabanı başarıyla yüklendi.', 'Task sent by email successfully.' => 'Görev ePosta ile başarıyla gönderildi.', diff --git a/app/Locale/vi_VN/translations.php b/app/Locale/vi_VN/translations.php index 13ed8f6b..f18577ce 100644 --- a/app/Locale/vi_VN/translations.php +++ b/app/Locale/vi_VN/translations.php @@ -1272,7 +1272,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => 'Không thể tải tệp lên, hãy kiểm tra quyền của thư mục dữ liệu của bạn.', 'Another category with the same name exists in this project' => 'Một thể loại khác có cùng tên tồn tại trong dự án này', 'Comment sent by email successfully.' => 'Thảo luận gửi qua email thành công.', - 'Sent by email to [%s](mailto:%s) (%s)' => 'Gửi qua email tới [ %s] (mailto: %s) ( %s)', + 'Sent by email to "%s" (%s)' => 'Gửi qua email tới "%s" ( %s)', 'Unable to read uploaded file.' => 'Không thể đọc tập tin được tải lên.', 'Database uploaded successfully.' => 'Cơ sở dữ liệu được tải lên thành công.', 'Task sent by email successfully.' => 'Nhiệm vụ gửi qua email thành công.', diff --git a/app/Locale/zh_CN/translations.php b/app/Locale/zh_CN/translations.php index 1ec8ac4d..be761e5d 100644 --- a/app/Locale/zh_CN/translations.php +++ b/app/Locale/zh_CN/translations.php @@ -1266,7 +1266,7 @@ return array( 'Unable to upload files, check the permissions of your data folder.' => '无法上传文件,请检查你的data目录权限。', // 'Another category with the same name exists in this project' => '', // 'Comment sent by email successfully.' => '', - // 'Sent by email to [%s](mailto:%s) (%s)' => '', + // 'Sent by email to "%s" (%s)' => '', // 'Unable to read uploaded file.' => '', // 'Database uploaded successfully.' => '', // 'Task sent by email successfully.' => '', diff --git a/app/Template/comment_mail/create.php b/app/Template/comment_mail/create.php index 8732080a..84c241d3 100644 --- a/app/Template/comment_mail/create.php +++ b/app/Template/comment_mail/create.php @@ -6,8 +6,8 @@ form->hidden('task_id', $values) ?> form->hidden('user_id', $values) ?> - form->label(t('Email'), 'email') ?> - form->email('email', $values, $errors, array('autofocus', 'required', 'tabindex="1"')) ?> + form->label(t('Email'), 'emails') ?> + form->text('emails', $values, $errors, array('autofocus', 'required', 'tabindex="1"')) ?>