diff --git a/docker-compose.yml b/docker-compose.yml index fb8d92ff7..66c79a7d4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,6 +29,7 @@ services: - 8000:8000 env_file: - test_project/oidc_key + - test_project/envfile environment: DB: "SQLITE" DEBUG: "True" diff --git a/frontend/package.json b/frontend/package.json index ca4a9b004..12ae00c34 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,6 +22,11 @@ "@fullcalendar/vue3": "^6.1.15", "@github/webauthn-json": "^2.1.1", "@mdi/font": "^7.3.67", + "@tiptap/extension-highlight": "^2.11.7", + "@tiptap/extension-text-align": "^2.11.7", + "@tiptap/pm": "^2.11.7", + "@tiptap/starter-kit": "^2.11.7", + "@tiptap/vue-3": "^2.11.7", "apexcharts": "^3.50.0", "axios": "^1.8.2", "core-js": "^3.37.1", diff --git a/frontend/src/api/webmail.js b/frontend/src/api/webmail.js index 769bfe045..6c625129f 100644 --- a/frontend/src/api/webmail.js +++ b/frontend/src/api/webmail.js @@ -23,6 +23,13 @@ export default { } return repository.get(`/webmail/emails/content/`, { params }) }, + getEmailSource(mailbox, mailid) { + const params = { + mailbox, + mailid, + } + return repository.get(`/webmail/emails/source/`, { params }) + }, getEmailAttachment(mailbox, mailid, partnum) { const params = { mailbox, @@ -63,4 +70,7 @@ export default { } return repository.post('/webmail/emails/flag/', body) }, + sendEmail(body) { + return repository.post('/webmail/emails/send/', body) + }, } diff --git a/frontend/src/components/tools/HtmlEditor.vue b/frontend/src/components/tools/HtmlEditor.vue new file mode 100644 index 000000000..abd89fa31 --- /dev/null +++ b/frontend/src/components/tools/HtmlEditor.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/frontend/src/components/webmail/ComposeEmailForm.vue b/frontend/src/components/webmail/ComposeEmailForm.vue new file mode 100644 index 000000000..323ff80a7 --- /dev/null +++ b/frontend/src/components/webmail/ComposeEmailForm.vue @@ -0,0 +1,205 @@ + + + diff --git a/frontend/src/components/webmail/EmailList.vue b/frontend/src/components/webmail/EmailList.vue index cb618daed..b36672bad 100644 --- a/frontend/src/components/webmail/EmailList.vue +++ b/frontend/src/components/webmail/EmailList.vue @@ -30,7 +30,7 @@ > +
+ +
{ userMailboxes.value = resp.data }) + +const openComposeForm = () => { + router.push({ name: 'ComposeEmailView' }) +} diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index dc1ba3761..1e3029ee1 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -339,6 +339,22 @@ const routes = [ requiresAuth: true, }, }, + { + path: 'compose', + name: 'ComposeEmailView', + component: () => import('@/views/webmail/ComposeEmailView.vue'), + meta: { + requiresAuth: true, + }, + }, + { + path: 'reply', + name: 'ReplyEmailView', + component: () => import('@/views/webmail/ReplyEmailView.vue'), + meta: { + requiresAuth: true, + }, + }, ], }, ], diff --git a/frontend/src/views/webmail/ComposeEmailView.vue b/frontend/src/views/webmail/ComposeEmailView.vue new file mode 100644 index 000000000..fc6372490 --- /dev/null +++ b/frontend/src/views/webmail/ComposeEmailView.vue @@ -0,0 +1,7 @@ + + + diff --git a/frontend/src/views/webmail/EmailView.vue b/frontend/src/views/webmail/EmailView.vue index 9db2d7978..ba759b0fd 100644 --- a/frontend/src/views/webmail/EmailView.vue +++ b/frontend/src/views/webmail/EmailView.vue @@ -7,15 +7,20 @@ color="primary" variant="tonal" prepend-icon="mdi-reply" - append-icon="mdi-chevron-down" + @click="replyToEmail" > {{ $gettext('Reply') }} - - - - - - +
- + + @@ -100,6 +109,20 @@