Upgrade to nick_site commit f981fa57, adds alerts and inactive sidebar option
[ndcode_site.git] / _lib / navbar.jst
index 848488d..8988e57 100644 (file)
@@ -103,7 +103,7 @@ return async (env, head, body, scripts) => {
 
   // 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(
@@ -189,7 +189,7 @@ return async (env, head, body, scripts) => {
               //  }
               //}
             }
-            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") {
@@ -259,7 +259,7 @@ return async (env, head, body, scripts) => {
 
             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") {}
               }
@@ -291,7 +291,7 @@ return async (env, head, body, scripts) => {
               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 {
@@ -312,7 +312,7 @@ return async (env, head, body, scripts) => {
                 }
               }
 
-              p.mt-2 {
+              p {
                 'No account yet? '
                 a(href="/my_account/sign_up/index.html") {'Sign up'}
               }
@@ -322,7 +322,7 @@ return async (env, head, body, scripts) => {
                 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") {
@@ -368,8 +368,8 @@ return async (env, head, body, scripts) => {
                 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}`
                       }
@@ -379,7 +379,7 @@ return async (env, head, body, scripts) => {
                 }
               }
 
-              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") {
@@ -462,11 +462,11 @@ return async (env, head, body, scripts) => {
         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')
@@ -476,11 +476,11 @@ return async (env, head, body, scripts) => {
             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')
@@ -516,7 +516,7 @@ return async (env, head, body, scripts) => {
               //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(
@@ -535,8 +535,8 @@ return async (env, head, body, scripts) => {
                 //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');
@@ -569,32 +569,32 @@ return async (env, head, body, scripts) => {
                   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')
@@ -624,7 +624,7 @@ return async (env, head, body, scripts) => {
                   // 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
@@ -640,9 +640,9 @@ return async (env, head, body, scripts) => {
               '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
@@ -651,7 +651,7 @@ return async (env, head, body, scripts) => {
 
             $('#navbar-feedback-modal').on(
               'shown.bs.modal',
-              () => {id_navbar_feedback_message1.focus()}
+              () => {id_navbar_feedback_message.focus()}
             )
 
             let feedback_input_semaphore = new BinarySemaphore(false)
@@ -663,10 +663,10 @@ return async (env, head, body, scripts) => {
                   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)
                       }
                   )
                 }
@@ -677,15 +677,15 @@ return async (env, head, body, scripts) => {
               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
             )
@@ -697,8 +697,8 @@ return async (env, head, body, scripts) => {
                 //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');
@@ -715,7 +715,7 @@ return async (env, head, body, scripts) => {
                   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) {
@@ -724,22 +724,22 @@ return async (env, head, body, scripts) => {
                   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')