"site_url": "https://nick.downing.id",
"site_title": "nick.downing.id",
"contact_from": "nick.downing.id contact <contact@nick.downing.id>",
- "contact_to": "Nick Downing <nick@nick.downing.id>",
+ "contact_to": "Nick Downing <nick@downing.id>",
"feedback_from": "nick.downing.id feedback <feedback@nick.downing.id>",
- "feedback_to": "Nick Downing <nick@nick.downing.id>",
+ "feedback_to": "Nick Downing <nick@downing.id>",
"noreply_from": "nick.downing.id <noreply@nick.downing.id>",
"noreply_signature": "Nick",
"copyright": "Nick Downing and contributors"
"port": 587,
"secure": false,
"auth": {
- "user": "contact@ndcode.org",
+ "user": "contact@nick.downing.id",
"pass": "XXXContact12"
},
"requireTLS": true
"port": 587,
"secure": false,
"auth": {
- "user": "feedback@ndcode.org",
+ "user": "feedback@nick.downing.id",
"pass": "XXXFeedback12"
},
"requireTLS": true
"port": 587,
"secure": false,
"auth": {
- "user": "noreply@ndcode.org",
+ "user": "noreply@nick.downing.id",
"pass": "XXXNoreply12"
},
"requireTLS": true
return async (root, name) => {
let nodemailers = await root.get('nodemailers')
if (nodemailers === undefined)
- throw new Problem(
+ throw new jst_server.Problem(
'Nodemailer error',
'Please import the nodemailers data into the database.',
509
)
let _nodemailer = await nodemailers.get_json(name)
- throw new Problem(
+ if (_nodemailer === undefined)
+ throw new jst_server.Problem(
'Nodemailer error',
- `Can't find the nodemailer "${name}" in the nodemailers data.',
+ `Can't find the nodemailer "${name}" in the nodemailers data.`,
509
)
return nodemailer.createTransport(_nodemailer)
span.h4.modal-title {'Sign in'}
}
div.modal-body {
- form#navbar-sign-in-form {
+ form.mb-2#navbar-sign-in-form {
div.row {
div.col-md-12 {
div.form-group {
}
}
- p.mt-2 {
+ p {
'No account yet? '
a(href="/my_account/sign_up/index.html") {'Sign up'}
}
a(href="/my_account/password_reset/index.html") {'Password reset'}
}
- p.'mt-3'.mb-0#navbar-sign-in-message(hidden) {}
+ div.alert.alert-danger.'mt-3'.mb-0#navbar-sign-in-alert(hidden) {}
}
div.modal-footer {
button.btn.btn-outline-secondary(type="button" data-dismiss="modal") {
div.row {
div.col-md-12 {
div.form-group {
- label.form-label(for="navbar-feedback-message1") {'Message'}
- textarea.form-control#navbar-feedback-message1(placeholder="I noticed that..." required rows=4 maxlength=65536) {
+ label.form-label(for="navbar-feedback-message") {'Message'}
+ textarea.form-control#navbar-feedback-message(placeholder="I noticed that..." required rows=4 maxlength=65536) {
if (feedback_draft)
`${feedback_draft.message}`
}
}
}
- p.'mt-3'.mb-0#navbar-feedback-message(hidden) {}
+ div.alert.alert-danger.'mt-3'.mb-0#navbar-feedback-alert(hidden) {}
}
div.modal-footer {
button.btn.btn-outline-secondary(type="button" data-dismiss="modal") {
document.addEventListener(
'DOMContentLoaded',
() => {
+ let id_navbar_feedback_alert = document.getElementById('navbar-feedback-alert')
let id_navbar_feedback_cross = document.getElementById('navbar-feedback-cross')
let id_navbar_feedback_form = document.getElementById('navbar-feedback-form')
let id_navbar_feedback_icon = document.getElementById('navbar-feedback-icon')
let id_navbar_feedback_message = document.getElementById('navbar-feedback-message')
- let id_navbar_feedback_message1 = document.getElementById('navbar-feedback-message1')
let id_navbar_feedback_modal = document.getElementById('navbar-feedback-modal')
let id_navbar_feedback_send_message = document.getElementById('navbar-feedback-send-message')
let id_navbar_feedback_spinner = document.getElementById('navbar-feedback-spinner')
let id_navbar_sidebar_inner = document.getElementById('navbar-sidebar-inner')
let id_navbar_sidebar_outer = document.getElementById('navbar-sidebar-outer')
let id_navbar_sign_in = document.getElementById('navbar-sign-in')
+ let id_navbar_sign_in_alert = document.getElementById('navbar-sign-in-alert')
let id_navbar_sign_in_cross = document.getElementById('navbar-sign-in-cross')
let id_navbar_sign_in_email = document.getElementById('navbar-sign-in-email')
let id_navbar_sign_in_form = document.getElementById('navbar-sign-in-form')
let id_navbar_sign_in_icon = document.getElementById('navbar-sign-in-icon')
- let id_navbar_sign_in_message = document.getElementById('navbar-sign-in-message')
let id_navbar_sign_in_modal = document.getElementById('navbar-sign-in-modal')
let id_navbar_sign_in_password = document.getElementById('navbar-sign-in-password')
let id_navbar_sign_in_sign_in = document.getElementById('navbar-sign-in-sign-in')
//id_navbar_sign_in_tick.hidden = true
id_navbar_sign_in_cross.hidden = true
id_navbar_sign_in_spinner.hidden = true
- id_navbar_sign_in_message.hidden = true
+ id_navbar_sign_in_alert.hidden = true
}
id_navbar_sign_in_email.addEventListener(
//id_navbar_sign_in_tick.hidden = true
id_navbar_sign_in_cross.hidden = true
id_navbar_sign_in_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_navbar_sign_in_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_navbar_sign_in_alert.hidden = true
if (!id_navbar_sign_in_form.checkValidity()) {
id_navbar_sign_in_form.classList.add('was-validated');
id_navbar_sign_in_cross.hidden = false
id_navbar_sign_in_spinner.hidden = true
- id_navbar_sign_in_message.textContent = problem.detail
- //id_navbar_sign_in_message.classList.remove('text-success')
- id_navbar_sign_in_message.classList.add('text-danger')
- id_navbar_sign_in_message.hidden = false
+ id_navbar_sign_in_alert.textContent = problem.detail
+ //id_navbar_sign_in_alert.classList.remove('alert-success')
+ //id_navbar_sign_in_alert.classList.add('alert-danger')
+ id_navbar_sign_in_alert.hidden = false
return
}
//id_navbar_sign_in_tick.hidden = false
//id_navbar_sign_in_spinner.hidden = true
- //id_navbar_sign_in_message.textContent = `You are now signed in as "${email}".`
- //id_navbar_sign_in_message.classList.add('text-success')
- //id_navbar_sign_in_message.classList.remove('text-danger')
- //id_navbar_sign_in_message.hidden = false
+ //id_navbar_sign_in_alert.textContent = `You are now signed in as "${email}".`
+ //id_navbar_sign_in_alert.classList.add('alert-success')
+ //id_navbar_sign_in_alert.classList.remove('alert-danger')
+ //id_navbar_sign_in_alert.hidden = false
if (sign_in_out(true))
// if location has been changed, leave the spinner and do
id_navbar_sign_in_icon.hidden = false
id_navbar_sign_in_spinner.hidden = true
- id_navbar_sign_in_message.hidden = true
+ id_navbar_sign_in_alert.hidden = true
id_navbar_message_modal_message.textContent = `You are now signed in as "${email}".`
$('#navbar-sign-in-modal').modal('hide')
$('#navbar-message-modal').modal('show')
'click',
() => {
// hack to move cursor to end of textarea
- let temp = id_navbar_feedback_message1.value
- id_navbar_feedback_message1.value = ''
- id_navbar_feedback_message1.value = temp
+ let temp = id_navbar_feedback_message.value
+ id_navbar_feedback_message.value = ''
+ id_navbar_feedback_message.value = temp
$('#navbar-feedback-modal').modal('show')
return false
$('#navbar-feedback-modal').on(
'shown.bs.modal',
- () => {id_navbar_feedback_message1.focus()}
+ () => {id_navbar_feedback_message.focus()}
)
let feedback_input_semaphore = new BinarySemaphore(false)
feedback_input_semaphore.try_acquire()
await api_call(
'/api/feedback/set_draft.json',
- id_navbar_feedback_message1.value.length === 0 ?
+ id_navbar_feedback_message.value.length === 0 ?
null :
{
- message: id_navbar_feedback_message1.value.slice(0, 65536)
+ message: id_navbar_feedback_message.value.slice(0, 65536)
}
)
}
feedback_input_semaphore.release()
id_navbar_feedback_send_message.disabled =
- id_navbar_feedback_message1.value.length === 0
+ id_navbar_feedback_message.value.length === 0
id_navbar_feedback_icon.hidden = false
//id_navbar_feedback_tick.hidden = true
id_navbar_feedback_cross.hidden = true
id_navbar_feedback_spinner.hidden = true
- id_navbar_feedback_message.hidden = true
+ id_navbar_feedback_alert.hidden = true
}
- id_navbar_feedback_message1.addEventListener(
+ id_navbar_feedback_message.addEventListener(
'input',
feedback_edited
)
//id_navbar_feedback_tick.hidden = true
id_navbar_feedback_cross.hidden = true
id_navbar_feedback_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_navbar_feedback_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_navbar_feedback_alert.hidden = true
if (!id_navbar_feedback_form.checkValidity()) {
id_navbar_feedback_form.classList.add('was-validated');
await api_call(
'/api/feedback/send_message.json',
location.href,
- id_navbar_feedback_message1.value.slice(0, 65536)
+ id_navbar_feedback_message.value.slice(0, 65536)
)
}
catch (error) {
id_navbar_feedback_cross.hidden = false
id_navbar_feedback_spinner.hidden = true
- id_navbar_feedback_message.textContent = problem.detail
- //id_navbar_feedback_message.classList.remove('text-success')
- id_navbar_feedback_message.classList.add('text-danger')
- id_navbar_feedback_message.hidden = false
+ id_navbar_feedback_alert.textContent = problem.detail
+ //id_navbar_feedback_alert.classList.remove('alert-success')
+ //id_navbar_feedback_alert.classList.add('alert-danger')
+ id_navbar_feedback_alert.hidden = false
return
}
//id_navbar_feedback_tick.hidden = false
//id_navbar_feedback_spinner.hidden = true
- //id_navbar_feedback_message.textContent = 'We have received your message. We will be in touch as soon as possible.'
- //id_navbar_feedback_message.classList.add('text-success')
- //id_navbar_feedback_message.classList.remove('text-danger')
- //id_navbar_feedback_message.hidden = false
+ //id_navbar_feedback_alert.alertContent = 'We have received your message. We will be in touch as soon as possible.'
+ //id_navbar_feedback_alert.classList.add('alert-success')
+ //id_navbar_feedback_alert.classList.remove('alert-danger')
+ //id_navbar_feedback_alert.hidden = false
id_navbar_feedback_icon.hidden = false
id_navbar_feedback_spinner.hidden = true
- id_navbar_feedback_message.hidden = true
+ id_navbar_feedback_alert.hidden = true
id_navbar_message_modal_message.textContent = 'Thanks! We have received your feedback.'
$('#navbar-feedback-modal').modal('hide')
$('#navbar-message-modal').modal('show')
div.row {
div.col-md-12 {
div.form-group {
- label.form-label(for="message1") {'Message *'}
- textarea.form-control#message1(placeholder="I am interested in..." required rows=6 maxlength=65536) {
+ label.form-label(for="message") {'Message *'}
+ textarea.form-control#message(placeholder="I am interested in..." required rows=6 maxlength=65536) {
if (contact_draft)
`${contact_draft.message}`
}
}
if (contact_draft !== null)
- button.btn.btn-success#send-enquiry(type="button") {
+ button.btn.btn-success.mb-3#send-enquiry(type="button") {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_envelope)}
}
'Send enquiry'
}
else
- button.btn.btn-success#send-enquiry(type="button" disabled) {
+ button.btn.btn-success.mb-3#send-enquiry(type="button" disabled) {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_envelope)}
}
'Send enquiry'
}
- p.'mt-3'.mb-0#message(hidden) {}
+ div.alert#alert(hidden) {}
- p.text-muted.mt-3 {'* These fields are required.'}
+ p.text-muted {'* These fields are required.'}
},
// scripts
async _out => {
document.addEventListener(
'DOMContentLoaded',
() => {
+ let id_alert = document.getElementById('alert')
let id_company = document.getElementById('company')
let id_cross = document.getElementById('cross')
let id_email = document.getElementById('email')
let id_given_names = document.getElementById('given-names')
let id_icon = document.getElementById('icon')
let id_message = document.getElementById('message')
- let id_message1 = document.getElementById('message1')
let id_send_enquiry = document.getElementById('send-enquiry')
let id_spinner = document.getElementById('spinner')
let id_tick = document.getElementById('tick')
id_family_name.value.length === 0 &&
id_company.value.length === 0 &&
id_email.value.length === 0 &&
- id_message1.value.length === 0 ?
+ id_message.value.length === 0 ?
null :
{
given_names: id_given_names.value.slice(0, 256),
family_name: id_family_name.value.slice(0, 256),
company: id_company.value.slice(0, 256),
email: id_email.value.slice(0, 256).toLowerCase(),
- message: id_message1.value.slice(0, 65536)
+ message: id_message.value.slice(0, 65536)
}
)
}
id_family_name.value.length === 0 &&
id_company.value.length === 0 &&
id_email.value.length === 0 &&
- id_message1.value.length === 0
+ id_message.value.length === 0
id_icon.hidden = false
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- id_message.hidden = true
+ id_alert.hidden = true
}
id_given_names.addEventListener('input', edited)
id_family_name.addEventListener('input', edited)
id_company.addEventListener('input', edited)
id_email.addEventListener('input', edited)
- id_message1.addEventListener('input', edited)
+ id_message.addEventListener('input', edited)
id_send_enquiry.addEventListener(
'click',
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_alert.hidden = true
if (!id_form.checkValidity()) {
id_form.classList.add('was-validated');
family_name: id_family_name.value.slice(0, 256),
company: id_company.value.slice(0, 256),
email: id_email.value.slice(0, 256).toLowerCase(),
- message: id_message1.value.slice(0, 65536)
+ message: id_message.value.slice(0, 65536)
}
)
}
id_cross.hidden = false
id_spinner.hidden = true
- id_message.textContent = problem.detail
- //id_message.classList.remove('text-success')
- id_message.classList.add('text-danger')
- id_message.hidden = false
+ id_alert.textContent = problem.detail
+ id_alert.classList.remove('alert-success')
+ id_alert.classList.add('alert-danger')
+ id_alert.hidden = false
return
}
id_tick.hidden = false
id_spinner.hidden = true
- id_message.textContent = 'We have received your enquiry. We will be in touch as soon as possible.'
- //id_message.classList.add('text-success')
- id_message.classList.remove('text-danger')
- id_message.hidden = false
+ id_alert.textContent = 'We have received your enquiry. We will be in touch as soon as possible.'
+ id_alert.classList.add('alert-success')
+ id_alert.classList.remove('alert-danger')
+ id_alert.hidden = false
}
)
}
'Save'
}
- p.'mt-3'.mb-0#card-1-message(hidden) {}
+ div.alert.alert-danger.'mt-3'.mb-0#card-1-alert(hidden) {}
}
}
}
'Save'
}
- p.'mt-3'.mb-0#card-2-message(hidden) {}
+ div.alert.alert-danger.'mt-3'.mb-0#card-2-alert(hidden) {}
}
}
}
() => {
let id_accordion = document.getElementById('accordion')
let id_card_1 = document.getElementById('card-1')
+ let id_card_1_alert = document.getElementById('card-1-alert')
let id_card_1_collapse = document.getElementById('card-1-collapse')
let id_card_1_cross = document.getElementById('card-1-cross')
let id_card_1_form = document.getElementById('card-1-form')
let id_card_1_heading = document.getElementById('card-1-heading')
let id_card_1_icon = document.getElementById('card-1-icon')
- let id_card_1_message = document.getElementById('card-1-message')
let id_card_1_revert = document.getElementById('card-1-revert')
let id_card_1_save = document.getElementById('card-1-save')
let id_card_1_spinner = document.getElementById('card-1-spinner')
let id_card_1_tick = document.getElementById('card-1-tick')
let id_card_2 = document.getElementById('card-2')
+ let id_card_2_alert = document.getElementById('card-2-alert')
let id_card_2_clear = document.getElementById('card-2-clear')
let id_card_2_collapse = document.getElementById('card-2-collapse')
let id_card_2_cross = document.getElementById('card-2-cross')
let id_card_2_form = document.getElementById('card-2-form')
let id_card_2_heading = document.getElementById('card-2-heading')
let id_card_2_icon = document.getElementById('card-2-icon')
- let id_card_2_message = document.getElementById('card-2-message')
let id_card_2_save = document.getElementById('card-2-save')
let id_card_2_spinner = document.getElementById('card-2-spinner')
let id_card_2_tick = document.getElementById('card-2-tick')
id_card_1_tick.hidden = true
id_card_1_cross.hidden = true
id_card_1_spinner.hidden = true
- id_card_1_message.hidden = true
+ id_card_1_alert.hidden = true
}
id_given_names.addEventListener('input', card_1_edited)
id_card_1_tick.hidden = true
id_card_1_cross.hidden = true
id_card_1_spinner.hidden = true
- id_card_1_message.hidden = true
+ id_card_1_alert.hidden = true
}
)
id_card_1_tick.hidden = true
id_card_1_cross.hidden = true
id_card_1_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_card_1_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_card_1_alert.hidden = true
if (!id_card_1_form.checkValidity()) {
id_card_1_form.classList.add('was-validated');
id_card_1_cross.hidden = false
id_card_1_spinner.hidden = true
- id_card_1_message.textContent = problem.detail
- //id_card_1_message.classList.remove('text-success')
- id_card_1_message.classList.add('text-danger')
- id_card_1_message.hidden = false
+ id_card_1_alert.textContent = problem.detail
+ //id_card_1_alert.classList.remove('alert-success')
+ //id_card_1_alert.classList.add('alert-danger')
+ id_card_1_alert.hidden = false
return
}
id_card_1_tick.hidden = false
//id_card_1_tick.hidden = true
//id_card_1_cross.hidden = true
//id_card_1_spinner.hidden = true
- id_card_1_message.hidden = true
+ id_card_1_alert.hidden = true
}
)
id_card_2_tick.hidden = true
id_card_2_cross.hidden = true
id_card_2_spinner.hidden = true
- id_card_2_message.hidden = true
+ id_card_2_alert.hidden = true
}
id_old_password.addEventListener('input', card_2_edited)
id_card_2_tick.hidden = true
id_card_2_cross.hidden = true
id_card_2_spinner.hidden = true
- id_card_2_message.hidden = true
+ id_card_2_alert.hidden = true
}
)
id_card_2_tick.hidden = true
id_card_2_cross.hidden = true
id_card_2_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_card_2_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_card_2_alert.hidden = true
if (!id_card_2_form.checkValidity()) {
id_card_2_form.classList.add('was-validated');
id_card_2_cross.hidden = false
id_card_2_spinner.hidden = true
- id_card_2_message.textContent = problem.detail
- //id_card_2_message.classList.remove('text-success')
- id_card_2_message.classList.add('text-danger')
- id_card_2_message.hidden = false
+ id_card_2_alert.textContent = problem.detail
+ //id_card_2_alert.classList.remove('alert-success')
+ //id_card_2_alert.classList.add('alert-danger')
+ id_card_2_alert.hidden = false
return
}
id_card_2_tick.hidden = false
//id_card_2_tick.hidden = true
//id_card_2_cross.hidden = true
//id_card_2_spinner.hidden = true
- id_card_2_message.hidden = true
+ id_card_2_alert.hidden = true
}
)
}
}
if (email.length)
- button.btn.btn-success#password-reset(type="button") {
+ button.btn.btn-success.mb-3#password-reset(type="button") {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_envelope)}
}
'Password reset'
}
else
- button.btn.btn-success#password-reset(type="button" disabled) {
+ button.btn.btn-success.mb-3#password-reset(type="button" disabled) {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_envelope)}
}
'Password reset'
}
- p.'mt-3'.mb-0#message(hidden) {}
+ div.alert#alert(hidden) {}
- p.text-muted.mt-3 {'* These fields are required.'}
+ p.text-muted {'* These fields are required.'}
},
// scripts
async _out => {
document.addEventListener(
'DOMContentLoaded',
() => {
+ let id_alert = document.getElementById('alert')
let id_cross = document.getElementById('cross')
let id_email = document.getElementById('email')
let id_form = document.getElementById('form')
let id_icon = document.getElementById('icon')
- let id_message = document.getElementById('message')
let id_new_password = document.getElementById('new-password')
let id_password_reset = document.getElementById('password-reset')
let id_spinner = document.getElementById('spinner')
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- id_message.hidden = true
+ id_alert.hidden = true
}
id_email.addEventListener('input', edited)
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_alert.hidden = true
if (!id_form.checkValidity()) {
id_form.classList.add('was-validated');
id_cross.hidden = false
id_spinner.hidden = true
- id_message.textContent = problem.detail
- //id_message.classList.remove('text-success')
- id_message.classList.add('text-danger')
- id_message.hidden = false
+ id_alert.textContent = problem.detail
+ id_alert.classList.remove('alert-success')
+ id_alert.classList.add('alert-danger')
+ id_alert.hidden = false
return
}
id_tick.hidden = false
id_spinner.hidden = true
- id_message.textContent = `Password reset link has been sent to "${email}". Please check your email for next steps.`
- //id_message.classList.add('text-success')
- id_message.classList.remove('text-danger')
- id_message.hidden = false
+ id_alert.textContent = `Password reset link has been sent to "${email}". Please check your email for next steps.`
+ id_alert.classList.add('alert-success')
+ id_alert.classList.remove('alert-danger')
+ id_alert.hidden = false
}
)
}
}
}
- p#message(hidden) {}
+ div.alert#alert(hidden) {}
},
// scripts
async _out => {
document.addEventListener(
'DOMContentLoaded',
() => {
+ let id_alert = document.getElementById('alert')
let id_cross = document.getElementById('cross')
let id_email = document.getElementById('email')
let id_form = document.getElementById('form')
let id_icon = document.getElementById('icon')
- let id_message = document.getElementById('message')
let id_send_verification_email = document.getElementById('send-verification-email')
let id_spinner = document.getElementById('spinner')
let id_tick = document.getElementById('tick')
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- id_message.hidden = true
+ id_alert.hidden = true
}
id_email.addEventListener('input', edited)
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_alert.hidden = true
if (!id_form.checkValidity()) {
id_form.classList.add('was-validated');
id_cross.hidden = false
id_spinner.hidden = true
- id_message.textContent = problem.detail
- //id_message.classList.remove('text-success')
- id_message.classList.add('text-danger')
- id_message.hidden = false
+ id_alert.textContent = problem.detail
+ id_alert.classList.remove('alert-success')
+ id_alert.classList.add('alert-danger')
+ id_alert.hidden = false
return
}
id_tick.hidden = false
id_spinner.hidden = true
- id_message.textContent = `Email verification link has been sent to "${email}". Please check your email for next steps.`
- //id_message.classList.add('text-success')
- id_message.classList.remove('text-danger')
- id_message.hidden = false
+ id_alert.textContent = `Email verification link has been sent to "${email}". Please check your email for next steps.`
+ id_alert.classList.add('alert-success')
+ id_alert.classList.remove('alert-danger')
+ id_alert.hidden = false
}
)
}
'Create account'
}
- p.'mt-3'.mb-0#card-1-message(hidden) {}
+ div.alert.'mt-3'.mb-0#card-1-alert(hidden) {}
}
}
}
'Re-send email'
}
- p.'mt-3'.mb-0#card-2-message(hidden) {}
+ div.alert.'mt-3'.mb-0#card-2-alert(hidden) {}
}
}
}
() => {
let id_accordion = document.getElementById('accordion')
let id_card_1 = document.getElementById('card-1')
+ let id_card_1_alert = document.getElementById('card-1-alert')
let id_card_1_collapse = document.getElementById('card-1-collapse')
let id_card_1_create_account = document.getElementById('card-1-create-account')
let id_card_1_cross = document.getElementById('card-1-cross')
let id_card_1_heading = document.getElementById('card-1-heading')
- let id_card_1_message = document.getElementById('card-1-message')
let id_card_1_new = document.getElementById('card-1-new')
let id_card_1_spinner = document.getElementById('card-1-spinner')
let id_card_1_tick = document.getElementById('card-1-tick')
let id_card_2 = document.getElementById('card-2')
+ let id_card_2_alert = document.getElementById('card-2-alert')
let id_card_2_back = document.getElementById('card-2-back')
let id_card_2_collapse = document.getElementById('card-2-collapse')
let id_card_2_cross = document.getElementById('card-2-cross')
let id_card_2_heading = document.getElementById('card-2-heading')
- let id_card_2_message = document.getElementById('card-2-message')
let id_card_2_resend_email = document.getElementById('card-2-resend-email')
let id_card_2_spinner = document.getElementById('card-2-spinner')
let id_card_2_tick = document.getElementById('card-2-tick')
id_card_1_tick.hidden = true
id_card_1_cross.hidden = true
id_card_1_spinner.hidden = true
- id_card_1_message.hidden = true
+ id_card_1_alert.hidden = true
id_card_2_resend_email.disabled = true
id_card_2_tick.hidden = true
id_card_2_cross.hidden = true
id_card_2_spinner.hidden = true
- id_card_2_message.hidden = true
+ id_card_2_alert.hidden = true
}
let details
id_card_1_tick.hidden = true
id_card_1_cross.hidden = true
id_card_1_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_card_1_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_card_1_alert.hidden = true
if (!id_form.checkValidity()) {
// workaround for https://github.com/twbs/bootstrap/issues/23454
id_card_1_cross.hidden = false
id_card_1_spinner.hidden = true
- id_card_1_message.textContent = problem.detail
- //id_card_1_message.classList.remove('text-success')
- id_card_1_message.classList.add('text-danger')
- id_card_1_message.hidden = false
+ id_card_1_alert.textContent = problem.detail
+ id_card_1_alert.classList.remove('alert-success')
+ id_card_1_alert.classList.add('alert-danger')
+ id_card_1_alert.hidden = false
$('#card-1-collapse').collapse('show')
return false
}
id_card_1_tick.hidden = false
id_card_1_spinner.hidden = true
- id_card_1_message.textContent = `Your account with email "${details.email}" has been created.`
- //id_card_1_message.classList.add('text-success')
- id_card_1_message.classList.remove('text-danger')
- id_card_1_message.hidden = false
+ id_card_1_alert.textContent = `Your account with email "${details.email}" has been created.`
+ id_card_1_alert.classList.add('alert-success')
+ id_card_1_alert.classList.remove('alert-danger')
+ id_card_1_alert.hidden = false
id_card_2_resend_email.disabled = false
id_card_2.scrollIntoView()
id_card_2_tick.hidden = true
id_card_2_cross.hidden = true
id_card_2_spinner.hidden = false
- // the below causes an ugly flicker, so just keep the message
- //id_card_2_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_card_2_alert.hidden = true
try {
await api_call(
id_card_2_cross.hidden = false
id_card_2_spinner.hidden = true
- id_card_2_message.textContent = problem.detail
- //id_card_2_message.classList.remove('text-success')
- id_card_2_message.classList.add('text-danger')
- id_card_2_message.hidden = false
+ id_card_2_alert.textContent = problem.detail
+ id_card_2_alert.classList.remove('alert-success')
+ id_card_2_alert.classList.add('alert-danger')
+ id_card_2_alert.hidden = false
$('#card-2-collapse').collapse('show')
return false
id_card_2_tick.hidden = false
id_card_2_spinner.hidden = true
- id_card_2_message.textContent = `Email verification link has been sent to "${details.email}". Please check your email for next steps.`
- //id_card_2_message.classList.add('text-success')
- id_card_2_message.classList.remove('text-danger')
- id_card_2_message.hidden = false
+ id_card_2_alert.textContent = `Email verification link has been sent to "${details.email}". Please check your email for next steps.`
+ id_card_2_alert.classList.add('alert-success')
+ id_card_2_alert.classList.remove('alert-danger')
+ id_card_2_alert.hidden = false
return true
}
}
if (email.length || details.length)
- button.btn.btn-success#verify-email(type="button") {
+ button.btn.btn-success.mb-3#verify-email(type="button") {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_user_check)}
}
'Verify email'
}
else
- button.btn.btn-success#verify-email(type="button" disabled) {
+ button.btn.btn-success.mb-3#verify-email(type="button" disabled) {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_user_check)}
}
'Verify email'
}
- p.'mt-3'.mb-0#message(hidden) {}
+ div.alert#alert(hidden) {}
- p.text-muted.mt-3 {'* These fields are required.'}
+ p.text-muted {'* These fields are required.'}
},
// scripts
async _out => {
document.addEventListener(
'DOMContentLoaded',
() => {
+ let id_alert = document.getElementById('alert')
let id_cross = document.getElementById('cross')
let id_email = document.getElementById('email')
let id_form = document.getElementById('form')
let id_icon = document.getElementById('icon')
let id_link_code = document.getElementById('link-code')
- let id_message = document.getElementById('message')
let id_spinner = document.getElementById('spinner')
let id_tick = document.getElementById('tick')
let id_verify_email = document.getElementById('verify-email')
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- id_message.hidden = true
+ id_alert.hidden = true
}
id_email.addEventListener('input', edited)
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_alert.hidden = true
if (!id_form.checkValidity()) {
id_form.classList.add('was-validated');
id_cross.hidden = false
id_spinner.hidden = true
- id_message.textContent = problem.detail
- //id_message.classList.remove('text-success')
- id_message.classList.add('text-danger')
- id_message.hidden = false
+ id_alert.textContent = problem.detail
+ id_alert.classList.remove('alert-success')
+ id_alert.classList.add('alert-danger')
+ id_alert.hidden = false
return
}
id_tick.hidden = false
id_spinner.hidden = true
- id_message.textContent = `Your email "${email}" has been verified. You can now sign in.`
- //id_message.classList.add('text-success')
- id_message.classList.remove('text-danger')
- id_message.hidden = false
+ id_alert.textContent = `Your email "${email}" has been verified. You can now sign in.`
+ id_alert.classList.add('alert-success')
+ id_alert.classList.remove('alert-danger')
+ id_alert.hidden = false
}
)
}
}
if (email.length || details.length)
- button.btn.btn-success#verify-password(type="button") {
+ button.btn.btn-success.mb-3#verify-password(type="button") {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_user_check)}
}
'Verify password'
}
else
- button.btn.btn-success#verify-password(type="button" disabled) {
+ button.btn.btn-success.mb-3#verify-password(type="button" disabled) {
div.icon24-outer.mr-2#icon {
div.icon24-inner {_out.push(fa_user_check)}
}
'Verify password'
}
- p.'mt-3'.mb-0#message(hidden) {}
+ div.alert#alert(hidden) {}
- p.text-muted.mt-3 {'* These fields are required.'}
+ p.text-muted {'* These fields are required.'}
},
// scripts
async _out => {
document.addEventListener(
'DOMContentLoaded',
() => {
+ let id_alert = document.getElementById('alert')
let id_cross = document.getElementById('cross')
let id_email = document.getElementById('email')
let id_form = document.getElementById('form')
let id_icon = document.getElementById('icon')
let id_link_code = document.getElementById('link-code')
- let id_message = document.getElementById('message')
let id_spinner = document.getElementById('spinner')
let id_tick = document.getElementById('tick')
let id_verify_password = document.getElementById('verify-password')
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- id_message.hidden = true
+ id_alert.hidden = true
}
id_email.addEventListener('input', edited)
id_tick.hidden = true
id_cross.hidden = true
id_spinner.hidden = true
- // the below causes an ugly flicker, so just keep the message
- //id_message.hidden = true
+ // the below causes an ugly flicker, so just keep the alert
+ //id_alert.hidden = true
if (!id_form.checkValidity()) {
id_form.classList.add('was-validated');
id_cross.hidden = false
id_spinner.hidden = true
- id_message.textContent = problem.detail
- //id_message.classList.remove('text-success')
- id_message.classList.add('text-danger')
- id_message.hidden = false
+ id_alert.textContent = problem.detail
+ id_alert.classList.remove('alert-success')
+ id_alert.classList.add('alert-danger')
+ id_alert.hidden = false
return
}
id_tick.hidden = false
id_spinner.hidden = true
- id_message.textContent = `New password for "${email}" has been verified. You can now sign in.`
- //id_message.classList.add('text-success')
- id_message.classList.remove('text-danger')
- id_message.hidden = false
+ id_alert.textContent = `New password for "${email}" has been verified. You can now sign in.`
+ id_alert.classList.add('alert-success')
+ id_alert.classList.remove('alert-danger')
+ id_alert.hidden = false
}
)
}