tailbone/tailbone/templates/settings/email/configure.mako
2023-08-30 23:32:09 -05:00

142 lines
4.5 KiB
Mako

## -*- coding: utf-8; -*-
<%inherit file="/configure.mako" />
<%def name="form_content()">
<h3 class="block is-size-3">General</h3>
<div class="block" style="padding-left: 2rem;">
<b-field label="Mail Handler"
message="Leave blank for default handler.">
<b-input name="rattail.mail.handler"
v-model="simpleSettings['rattail.mail.handler']"
@input="settingsNeedSaved = true">
</b-input>
</b-field>
<b-field label="Template Paths"
message="Leave blank for default paths.">
<b-input name="rattail.mail.templates"
v-model="simpleSettings['rattail.mail.templates']"
@input="settingsNeedSaved = true">
</b-input>
</b-field>
</div>
<h3 class="block is-size-3">Sending</h3>
<div class="block" style="padding-left: 2rem;">
<b-field>
<b-checkbox name="rattail.mail.record_attempts"
v-model="simpleSettings['rattail.mail.record_attempts']"
native-value="true"
@input="settingsNeedSaved = true">
Make record of all attempts to send email
</b-checkbox>
</b-field>
<b-field>
<b-checkbox name="rattail.mail.send_email_on_failure"
v-model="simpleSettings['rattail.mail.send_email_on_failure']"
native-value="true"
@input="settingsNeedSaved = true">
When sending an email fails, send another to report the failure
</b-checkbox>
</b-field>
</div>
<h3 class="block is-size-3">Testing</h3>
<div class="block" style="padding-left: 2rem;">
<b-field grouped>
<b-field horizontal label="Recipient">
<b-input v-model="testRecipient"></b-input>
</b-field>
<b-button type="is-primary"
@click="sendTest()"
:disabled="sendingTest">
{{ sendingTest ? "Working, please wait..." : "Send Test Email" }}
</b-button>
</b-field>
<div class="level">
<div class="level-left">
<div class="level-item">
<p>You can raise a "bogus" error to test if/how that generates email:</p>
</div>
<div class="level-item">
<b-button type="is-primary"
% if request.has_perm('errors.bogus'):
@click="raiseBogusError()"
:disabled="raisingBogusError"
% else:
disabled
title="your permissions do not allow this"
% endif
>
% if request.has_perm('errors.bogus'):
{{ raisingBogusError ? "Working, please wait..." : "Raise Bogus Error" }}
% else:
Raise Bogus Error
% endif
</b-button>
</div>
</div>
</div>
</div>
</%def>
<%def name="modify_this_page_vars()">
${parent.modify_this_page_vars()}
<script type="text/javascript">
ThisPageData.testRecipient = ${json.dumps(user_email_address)|n}
ThisPageData.sendingTest = false
ThisPage.methods.sendTest = function() {
this.sendingTest = true
let url = '${url('emailprofiles.send_test')}'
let params = {recipient: this.testRecipient}
this.simplePOST(url, params, response => {
this.$buefy.toast.open({
message: "Test email was sent!",
type: 'is-success',
duration: 4000, // 4 seconds
})
this.sendingTest = false
}, response => {
this.sendingTest = false
})
}
% if request.has_perm('errors.bogus'):
ThisPageData.raisingBogusError = false
ThisPage.methods.raiseBogusError = function() {
this.raisingBogusError = true
let url = '${url('bogus_error')}'
this.$http.get(url).then(response => {
this.$buefy.toast.open({
message: "Ironically, response was 200 which means we failed to raise an error!\n\nPlease investigate!",
type: 'is-danger',
duration: 5000, // 5 seconds
})
this.raisingBogusError = false
}, response => {
this.$buefy.toast.open({
message: "Error was raised; please check your email and/or logs.",
type: 'is-success',
duration: 4000, // 4 seconds
})
this.raisingBogusError = false
})
}
% endif
</script>
</%def>
${parent.body()}