From 624f4db40dcfb3b482e583421f1c8e9251d88ca3 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Mon, 27 Jan 2020 20:37:11 +0100 Subject: [PATCH] Work on MessageComposer --- .../assets/vue/components/MessageComposer.vue | 113 +++++++++++------- .../assets/vue/components/MessageContent.vue | 74 +++++++++--- 2 files changed, 131 insertions(+), 56 deletions(-) diff --git a/apimail/static/apimail/assets/vue/components/MessageComposer.vue b/apimail/static/apimail/assets/vue/components/MessageComposer.vue index 1a4125eeb..e18fe33f2 100644 --- a/apimail/static/apimail/assets/vue/components/MessageComposer.vue +++ b/apimail/static/apimail/assets/vue/components/MessageComposer.vue @@ -2,40 +2,46 @@ <div> <h1>Compose email message</h1> <b-form> - <b-form-group - id="from_account" - label="From:" - label-for="input-from-account" - class="mb-4" - > - <b-form-input - id="input-from-account" - v-model="form.from_account" - type="email" - required - > - </b-form-input> - </b-form-group> - <b-form-group - id="to-recipient" - label="To:" - label-for="input-to-recipient" - class="mb-4" - > - <b-form-input - id="input-to-recipient" - v-model="form.torecipient" - type="email" - required - placeholder="Enter main recipient's email" - > - </b-form-input> - </b-form-group> + <b-row> + <b-col class="col-lg-6"> + <b-form-group + id="from_account" + label="From:" + label-for="input-from-account" + class="mb-4" + > + <b-form-input + id="input-from-account" + v-model="form.from_account" + type="email" + required + > + </b-form-input> + </b-form-group> + </b-col> + <b-col class="col-lg-6"> + <b-form-group + id="to-recipient" + label="To:" + label-for="input-to-recipient" + class="mb-4" + > + <b-form-input + id="input-to-recipient" + v-model="form.torecipient" + type="email" + required + placeholder="Enter main recipient's email" + > + </b-form-input> + </b-form-group> + </b-col> + </b-row> <b-form-group id="cc" label="cc:" label-for="input-cc" - class="mb-4" + class="mb-2" > <b-form-input id="input-cc" @@ -86,7 +92,10 @@ </b-col> <b-col class="col-lg-6"> <h3>Preview:</h3> - <span v-html="sanitized_body_html"></span> + <span + v-html="sanitized_body_html" + class="white-space-pre-wrap" + ></span> </b-col> </b-row> <b-button type="savedraft" variant="warning">Save draft</b-button> @@ -102,7 +111,11 @@ originalmessage: { type: Object, required: false, - } + }, + action: { + type: String, + required: true, + }, }, data () { return { @@ -125,15 +138,35 @@ mounted () { if (this.originalmessage) { this.form.from_account = this.originalmessage.data.To - this.form.torecipient = this.originalmessage.data.sender - this.form.cc = this.originalmessage.data.recipients - this.form.subject = 'Re: ' + this.originalmessage.data.subject - this.form.body = ('\n\n<blockquote>\nOn ' - + this.originalmessage.datetimestamp - + ', ' + this.originalmessage.data.from + ' wrote:\n' - + this.originalmessage.data["body-plain"] - + '\n</blockquote>') + this.form.body = ('\n\n<blockquote>\n') + if (this.action == 'reply') { + this.form.torecipient = this.originalmessage.data.sender + this.form.cc = this.originalmessage.data.recipients + this.form.subject = 'Re: ' + this.originalmessage.data.subject + this.form.body += ('On ' + this.originalmessage.datetimestamp + + ', ' + this.originalmessage.data.from + + ' wrote:\n\n') + } + if (this.action == 'forward') { + this.form.subject = 'Fwd: ' + this.originalmessage.data.subject + this.form.body += ('Begin forwarded message:\n\n' + + 'From: ' + this.originalmessage.data.sender + + '\nSubject: ' + this.originalmessage.subject + + '\nDate: ' + this.originalmessage.datetimestamp + + '\nTo: ' + this.originalmessage.data.To + + '\n\n') + } + this.form.body += (this.originalmessage.data["body-plain"] + + '\n</blockquote>') } } } </script> + +<style scoped> + + .white-space-pre-wrap { + white-space: pre-wrap; + } + +</style> diff --git a/apimail/static/apimail/assets/vue/components/MessageContent.vue b/apimail/static/apimail/assets/vue/components/MessageContent.vue index 74732f4e6..08429da4e 100644 --- a/apimail/static/apimail/assets/vue/components/MessageContent.vue +++ b/apimail/static/apimail/assets/vue/components/MessageContent.vue @@ -1,23 +1,65 @@ <template> <div> - <b-card header-tag="header" footer-tag="footer" class="overflow-x-auto"> + <b-card + border-variant="primary" + class="overflow-x-auto" + header-tag="header" + footer-tag="footer" + > <template v-slot:header> - <b-button v-b-modal.modal-reply>Reply</b-button> - <b-modal - id="modal-reply" - size="xl" - title="Reply" - hide-header-close - no-close-on-escape - no-close-on-backdrop - > - <message-composer :originalmessage="message"></message-composer> - <template v-slot:modal-footer="{ cancel, }"> - <b-button size="sm" variant="danger" @click="cancel()"> - Cancel + + <ul class="list-inline m-2"> + <li class="list-inline-item"> + <b-button + v-b-modal.modal-reply + variant="primary" + > + Reply + </b-button> + <b-modal + id="modal-reply" + size="xl" + title="Reply" + hide-header-close + no-close-on-escape + no-close-on-backdrop + > + <message-composer :originalmessage="message" action="reply"></message-composer> + <template v-slot:modal-footer="{ cancel, }"> + <b-button size="sm" variant="danger" @click="cancel()"> + Cancel + </b-button> + </template> + </b-modal> + </li> + <li class="list-inline-item"> + <b-button + v-b-modal.modal-forward + variant="dark" + text-variant="white" + > + Forward </b-button> - </template> - </b-modal> + <b-modal + id="modal-forward" + size="xl" + title="Forward" + hide-header-close + no-close-on-escape + no-close-on-backdrop + > + <message-composer :originalmessage="message" action="forward"></message-composer> + <template v-slot:modal-footer="{ cancel, }"> + <b-button variant="danger" @click="cancel()"> + Cancel + </b-button> + </template> + </b-modal> + </li> + <li class="list-inline-item"> + </li> + </ul> + <hr> <div class="text-dark"> <b-row> <b-col class="col-lg-8"> -- GitLab