diff --git a/ChangeLog b/ChangeLog index 6c16dcc0e..39ca44b3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ Version 1.0.40 (unreleased) New features: +* Send comments by email * Upload Sqlite database from user interface Improvements: diff --git a/app/Controller/CommentMailController.php b/app/Controller/CommentMailController.php new file mode 100644 index 000000000..e30d6a55c --- /dev/null +++ b/app/Controller/CommentMailController.php @@ -0,0 +1,74 @@ +getProject(); + $task = $this->getTask(); + + $this->response->html($this->helper->layout->task('comment_mail/create', array( + 'values' => $values, + 'errors' => $errors, + 'task' => $task, + 'project' => $project, + ))); + } + + public function save() + { + $task = $this->getTask(); + $values = $this->request->getValues(); + $values['task_id'] = $task['id']; + $values['user_id'] = $this->userSession->getId(); + + list($valid, $errors) = $this->commentValidator->validateEmailCreation($values); + + if ($valid) { + $this->sendByEmail($values); + $values = $this->prepareComment($values); + + if ($this->commentModel->create($values) !== false) { + $this->flash->success(t('Comment sent by email successfully.')); + } else { + $this->flash->failure(t('Unable to create your comment.')); + } + + $this->response->redirect($this->helper->url->to('TaskViewController', 'show', array('task_id' => $task['id'], 'project_id' => $task['project_id']), 'comments'), true); + } else { + $this->create($values, $errors); + } + } + + protected function sendByEmail(array $values) + { + $html = $this->template->render('comment_mail/email', array( + 'email' => $values, + )); + + $this->emailClient->send( + $values['email'], + $values['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']).'_'; + + unset($values['subject']); + unset($values['email']); + + return $values; + } +} diff --git a/app/Locale/bs_BA/translations.php b/app/Locale/bs_BA/translations.php index 7ca6e5df4..6e7fcdd38 100644 --- a/app/Locale/bs_BA/translations.php +++ b/app/Locale/bs_BA/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Dodaj', 'Replace' => 'Zamijeni', 'Import' => 'Uvoz', - 'change sorting' => 'Promijeni sortiranje', + 'Change sorting' => 'Promijeni sortiranje', 'Tasks Importation' => 'Uvoz zadataka', 'Delimiter' => 'Djelilac', 'Enclosure' => 'Prilog', diff --git a/app/Locale/cs_CZ/translations.php b/app/Locale/cs_CZ/translations.php index 2b594585b..2013834ec 100644 --- a/app/Locale/cs_CZ/translations.php +++ b/app/Locale/cs_CZ/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/da_DK/translations.php b/app/Locale/da_DK/translations.php index 478d71fe9..61d135c19 100644 --- a/app/Locale/da_DK/translations.php +++ b/app/Locale/da_DK/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/de_DE/translations.php b/app/Locale/de_DE/translations.php index 02880efbe..7ff21e8e1 100644 --- a/app/Locale/de_DE/translations.php +++ b/app/Locale/de_DE/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Anhängen', 'Replace' => 'Ersetzen', 'Import' => 'Import', - 'change sorting' => 'Sortierung ändern', + 'Change sorting' => 'Sortierung ändern', 'Tasks Importation' => 'Aufgaben Import', 'Delimiter' => 'Trennzeichen', 'Enclosure' => 'Textbegrenzer', diff --git a/app/Locale/el_GR/translations.php b/app/Locale/el_GR/translations.php index 3897b67b6..07b216e3c 100644 --- a/app/Locale/el_GR/translations.php +++ b/app/Locale/el_GR/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Προσθήκη', 'Replace' => 'Αντικατάσταση', 'Import' => 'Εισαγωγή', - 'change sorting' => 'Αλλαγή ταξινόμησης', + 'Change sorting' => 'Αλλαγή ταξινόμησης', 'Tasks Importation' => 'Εισαγωγή εργασιών', 'Delimiter' => 'Delimiter', 'Enclosure' => 'Enclosure', diff --git a/app/Locale/es_ES/translations.php b/app/Locale/es_ES/translations.php index 4f2da41dd..cea867ec9 100644 --- a/app/Locale/es_ES/translations.php +++ b/app/Locale/es_ES/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Añadir', 'Replace' => 'Reemplazar', 'Import' => 'Importar', - 'change sorting' => 'Cambiar orden', + 'Change sorting' => 'Cambiar orden', 'Tasks Importation' => 'Importación de tareas', 'Delimiter' => 'Delimitador', 'Enclosure' => 'Recinto', diff --git a/app/Locale/fi_FI/translations.php b/app/Locale/fi_FI/translations.php index c6276e27f..bee32a2cd 100644 --- a/app/Locale/fi_FI/translations.php +++ b/app/Locale/fi_FI/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/fr_FR/translations.php b/app/Locale/fr_FR/translations.php index 4b17b6747..38d35defd 100644 --- a/app/Locale/fr_FR/translations.php +++ b/app/Locale/fr_FR/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Ajouter', 'Replace' => 'Remplaçer', 'Import' => 'Importation', - 'change sorting' => 'changer l\'ordre', + 'Change sorting' => 'changer l\'ordre', 'Tasks Importation' => 'Importation des tâches', 'Delimiter' => 'Délimiteur', 'Enclosure' => 'Caractère d\'encadrement', diff --git a/app/Locale/hu_HU/translations.php b/app/Locale/hu_HU/translations.php index 4211ba3b2..1a12d0c01 100644 --- a/app/Locale/hu_HU/translations.php +++ b/app/Locale/hu_HU/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Hozzáfűz', 'Replace' => 'Helyettesít', 'Import' => 'Importál', - 'change sorting' => 'rendezési sorrend megváltoztatása', + 'Change sorting' => 'rendezési sorrend megváltoztatása', 'Tasks Importation' => 'Feladat importálás', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/id_ID/translations.php b/app/Locale/id_ID/translations.php index 4f4580cf0..6b51a76b1 100644 --- a/app/Locale/id_ID/translations.php +++ b/app/Locale/id_ID/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Tambahkan', 'Replace' => 'Ganti', 'Import' => 'Impor', - 'change sorting' => 'ubah pengurutan', + 'Change sorting' => 'ubah pengurutan', 'Tasks Importation' => 'Importasi Tugas', 'Delimiter' => 'Pembatas', 'Enclosure' => 'Lampiran', diff --git a/app/Locale/it_IT/translations.php b/app/Locale/it_IT/translations.php index de901550a..a77e01f56 100644 --- a/app/Locale/it_IT/translations.php +++ b/app/Locale/it_IT/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Aggiungi', 'Replace' => 'Sostituisci', 'Import' => 'Importa', - 'change sorting' => 'cambia ordinamento', + 'Change sorting' => 'cambia ordinamento', 'Tasks Importation' => 'Importazione task', 'Delimiter' => 'Delimitatore', // 'Enclosure' => '', diff --git a/app/Locale/ja_JP/translations.php b/app/Locale/ja_JP/translations.php index 147159a28..a85df1df6 100644 --- a/app/Locale/ja_JP/translations.php +++ b/app/Locale/ja_JP/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/ko_KR/translations.php b/app/Locale/ko_KR/translations.php index b42e728fe..5c7c174cd 100644 --- a/app/Locale/ko_KR/translations.php +++ b/app/Locale/ko_KR/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => '추가', 'Replace' => '변경', 'Import' => '가져오기', - 'change sorting' => '정렬 변경', + 'Change sorting' => '정렬 변경', 'Tasks Importation' => '할일 가져오기', 'Delimiter' => '구분자', 'Enclosure' => '동봉', diff --git a/app/Locale/my_MY/translations.php b/app/Locale/my_MY/translations.php index 727506bdf..f44411e8c 100644 --- a/app/Locale/my_MY/translations.php +++ b/app/Locale/my_MY/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/nb_NO/translations.php b/app/Locale/nb_NO/translations.php index 2e2900483..a6a92313c 100644 --- a/app/Locale/nb_NO/translations.php +++ b/app/Locale/nb_NO/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/nl_NL/translations.php b/app/Locale/nl_NL/translations.php index 001964b6c..93b4262f9 100644 --- a/app/Locale/nl_NL/translations.php +++ b/app/Locale/nl_NL/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/pl_PL/translations.php b/app/Locale/pl_PL/translations.php index 7f8887d7a..56154adc5 100644 --- a/app/Locale/pl_PL/translations.php +++ b/app/Locale/pl_PL/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Dołącz', 'Replace' => 'Zastąp', 'Import' => 'Importuj', - 'change sorting' => 'odwróć sortowanie', + 'Change sorting' => 'odwróć sortowanie', 'Tasks Importation' => 'Import zadań', 'Delimiter' => 'Separator pola', 'Enclosure' => 'Separator tekstu', diff --git a/app/Locale/pt_BR/translations.php b/app/Locale/pt_BR/translations.php index eef50b172..1203caa04 100644 --- a/app/Locale/pt_BR/translations.php +++ b/app/Locale/pt_BR/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Adicionar', 'Replace' => 'Substituir', 'Import' => 'Importar', - 'change sorting' => 'alterar ordenação', + 'Change sorting' => 'alterar ordenação', 'Tasks Importation' => 'Importação de Tarefas', 'Delimiter' => 'Separador', 'Enclosure' => 'Delimitador de campos', diff --git a/app/Locale/pt_PT/translations.php b/app/Locale/pt_PT/translations.php index 44e0cf6a1..3fdc56cd6 100644 --- a/app/Locale/pt_PT/translations.php +++ b/app/Locale/pt_PT/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Acrescentar', 'Replace' => 'Substituir', 'Import' => 'Importar', - 'change sorting' => 'alterar ordernação', + 'Change sorting' => 'alterar ordernação', 'Tasks Importation' => 'Importação de Tarefas', 'Delimiter' => 'Delimitador', 'Enclosure' => 'Clausura', diff --git a/app/Locale/ru_RU/translations.php b/app/Locale/ru_RU/translations.php index 6b4f7fb5c..5ba1b2af1 100644 --- a/app/Locale/ru_RU/translations.php +++ b/app/Locale/ru_RU/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Добавление', 'Replace' => 'Замена', 'Import' => 'Импорт', - 'change sorting' => 'изменить сортировку', + 'Change sorting' => 'изменить сортировку', 'Tasks Importation' => 'Импортирование задач', 'Delimiter' => 'Разделитель', 'Enclosure' => 'Тип кавычек', diff --git a/app/Locale/sr_Latn_RS/translations.php b/app/Locale/sr_Latn_RS/translations.php index cfd6286d1..36fa8a909 100644 --- a/app/Locale/sr_Latn_RS/translations.php +++ b/app/Locale/sr_Latn_RS/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/sv_SE/translations.php b/app/Locale/sv_SE/translations.php index 59948bb50..639777376 100644 --- a/app/Locale/sv_SE/translations.php +++ b/app/Locale/sv_SE/translations.php @@ -844,7 +844,7 @@ return array( // 'Append' => '', // 'Replace' => '', // 'Import' => '', - // 'change sorting' => '', + // 'Change sorting' => '', // 'Tasks Importation' => '', // 'Delimiter' => '', // 'Enclosure' => '', diff --git a/app/Locale/th_TH/translations.php b/app/Locale/th_TH/translations.php index 33579591e..38b1706af 100644 --- a/app/Locale/th_TH/translations.php +++ b/app/Locale/th_TH/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'เพิ่มเติม', 'Replace' => 'แทนที่', 'Import' => 'นำเข้า', - 'change sorting' => 'เปลี่ยนการเรียง', + 'Change sorting' => 'เปลี่ยนการเรียง', 'Tasks Importation' => 'การนำเข้างาน', 'Delimiter' => 'คั่น', 'Enclosure' => 'กำหนดข้อความ', diff --git a/app/Locale/tr_TR/translations.php b/app/Locale/tr_TR/translations.php index 98331ae49..1d97ba02f 100644 --- a/app/Locale/tr_TR/translations.php +++ b/app/Locale/tr_TR/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => 'Ekle', 'Replace' => 'Üzerine yaz', 'Import' => 'İçeri aktar', - 'change sorting' => 'sıralamayı değiştir', + 'Change sorting' => 'sıralamayı değiştir', 'Tasks Importation' => 'Görevleri içeri aktar', 'Delimiter' => 'Ayırıcı', 'Enclosure' => 'Enclosure', diff --git a/app/Locale/zh_CN/translations.php b/app/Locale/zh_CN/translations.php index 358bce935..53e21ce60 100644 --- a/app/Locale/zh_CN/translations.php +++ b/app/Locale/zh_CN/translations.php @@ -844,7 +844,7 @@ return array( 'Append' => '追加', 'Replace' => '替换', 'Import' => '导入', - 'change sorting' => '改变排序', + 'Change sorting' => '改变排序', 'Tasks Importation' => '任务重要性', 'Delimiter' => '分隔符', 'Enclosure' => '附件', diff --git a/app/Template/comment/show.php b/app/Template/comment/show.php index d8470c24f..5f15ffd68 100644 --- a/app/Template/comment/show.php +++ b/app/Template/comment/show.php @@ -8,26 +8,28 @@ = t('Created at:') ?> = $this->dt->datetime($comment['date_creation']) ?> - = t('Updated at:')?> = $this->dt->datetime($comment['date_modification']) ?> + = t('Updated at:') ?> = $this->dt->datetime($comment['date_modification']) ?> -
= $this->text->e($task['title']) ?> > = t('Comments') ?>
+= $this->text->e($task['title']) ?>
-+-
+ = $this->url->icon('sort', t('Change sorting'), 'CommentListController', 'toggleSorting', array('task_id' => $task['id'], 'project_id' => $task['project_id']), false, 'js-modal-replace') ?>
+
+
+ -
+ = $this->modal->medium('paper-plane', t('Send by email'), 'CommentMailController', 'create', array('task_id' => $task['id'], 'project_id' => $task['project_id'])) ?>
+
+
+
= t('Create and send comment by email') ?>
+