// note: menu_titles.length === menu_names.length + 1
// menu_titles[0] corresponds to /, is 'Home' or similar
- // menu_titles[i] corresponds to menu_names[i - 1], i >= 1a
+ // menu_titles[i] corresponds to menu_names[i - 1], i >= 1
// (navbar has Home appearing at same level as its immediate children)
await page(
// }
//}
}
- nav.navbar.navbar-expand-lg.navbar-dark.bg-primary.extend-background {
+ nav.navbar.navbar-expand-lg.navbar-dark.bg-primary.container-background {
//a.navbar-brand(href="#") {'Navbar'}
//' '
button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation") {
await body(_out)
- footer.page-footer.extend-background.py-5 {
+ footer.page-footer.container-background.py-5 {
a(rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/") {
img(alt="Creative Commons License" style="border-width:0;" src="/images/by-sa_3.0_88x31.png") {}
}
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_message_modal_message = document.getElementById('navbar-message-modal-message')
let id_navbar_search_button = document.getElementById('navbar-search-button')
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
// not show status/dialog, as it causes an annoying flicker
return
- id_navbar_signed_in_status.textContent = 'Signed in.' //`Signed in as ${email}.`
+ id_navbar_signed_in_status.textContent = 'Signed in.'
id_navbar_sign_in.hidden = true
id_navbar_sign_up.hidden = true
id_navbar_sign_out.hidden = false
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')
// not show status/dialog, as it causes an annoying flicker
return
- id_navbar_signed_in_status.textContent = 'Browsing as guest.'
+ id_navbar_signed_in_status.textContent = 'Signed out.'
id_navbar_sign_in.hidden = false
id_navbar_sign_up.hidden = false
id_navbar_sign_out.hidden = true
'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')