Prettier for PUG templates (#26170)

* Setup prettier

* Ignore these pug templates by prettier

* Fix typo

* Fix prettier error

* Add prettier-ignore for quoting of event-segmentation attribute

* Manual tab indentation

* Interpolate

* Remove unbuffered if conditional

* Inline event-segmentation objects and remove prettier-ignore rule

* Fix spacing before interpolation

* Source format

* Source format

GitOrigin-RevId: c30e037f5caf8f91efc1bd9e75f81ae533b5a506
This commit is contained in:
Rebeka Dekany
2025-06-24 08:05:06 +00:00
committed by Copybot
parent 19dc71f414
commit c40ab3234d
96 changed files with 2140 additions and 1758 deletions
@@ -6,7 +6,7 @@ block vars
- metadata.robotsNoindexNofollow = true
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container-custom-sm.mx-auto
.card
.card-body
@@ -9,5 +9,5 @@ block entrypointVar
- entrypoint = 'pages/compromised-password'
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
#compromised-password
@@ -8,7 +8,7 @@ block entrypointVar
- entrypoint = 'pages/user/confirm-secondary-email'
block append meta
meta(name="ol-email" content=email)
meta(name='ol-email' content=email)
block content
main.content.content-alt
+24 -30
View File
@@ -2,56 +2,50 @@ extends ../layout-marketing
include ../_mixins/notification
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container
.row
.col-lg-8.offset-lg-2.col-xl-6.offset-xl-3
.card
.card-body
.page-header(data-ol-hide-on-error-message="confirm-email-wrong-user")
.page-header(data-ol-hide-on-error-message='confirm-email-wrong-user')
h1 #{translate("confirm_email")}
form(method='POST' action='/logout' id='logoutForm')
input(name='_csrf' type='hidden' value=csrfToken)
input(name='redirect' type='hidden' value=currentUrlWithQueryParams)
form(
method="POST"
action="/logout"
id="logoutForm"
name='confirmEmailForm'
data-ol-async-form
data-ol-auto-submit
action='/user/emails/confirm'
method='POST'
id='confirmEmailForm'
)
input(type="hidden", name="_csrf", value=csrfToken)
input(type="hidden", name="redirect", value=currentUrlWithQueryParams)
form(
data-ol-async-form,
data-ol-auto-submit,
name="confirmEmailForm"
action="/user/emails/confirm",
method="POST",
id="confirmEmailForm",
)
input(type="hidden", name="_csrf", value=csrfToken)
input(type="hidden", name="token", value=token)
input(name='_csrf' type='hidden' value=csrfToken)
input(name='token' type='hidden' value=token)
div(data-ol-not-sent)
+formMessages()
div(data-ol-custom-form-message="confirm-email-wrong-user" hidden)
+formMessages
div(data-ol-custom-form-message='confirm-email-wrong-user' hidden)
h1.h3 #{translate("we_cant_confirm_this_email")}
p !{translate("to_confirm_email_address_you_must_be_logged_in_with_the_requesting_account")}
p !{translate("you_are_currently_logged_in_as", {email: getUserEmail()})}
.actions
button.btn-primary.btn.w-100(
form="logoutForm"
) #{translate('log_in_with_a_different_account')}
button.btn-primary.btn.w-100(form='logoutForm') #{translate('log_in_with_a_different_account')}
.actions
button.btn-primary.btn.w-100(
type='submit',
type='submit'
data-ol-disabled-inflight
data-ol-hide-on-error-message="confirm-email-wrong-user"
data-ol-hide-on-error-message='confirm-email-wrong-user'
)
span(data-ol-inflight="idle")
span(data-ol-inflight='idle')
| #{translate('confirm')}
span(hidden data-ol-inflight="pending")
span(role='status').spinner-border.spinner-border-sm.mx-2
span(hidden data-ol-inflight='pending')
span.spinner-border.spinner-border-sm.mx-2(role='status')
div(hidden data-ol-sent)
+notification({ariaLive: 'polite', type: 'success', className: 'mb-3', content: translate("thank_you_email_confirmed")})
div.text-center
a.btn.btn-primary(href="/user/settings")
+notification({ariaLive: 'polite', type: 'success', className: 'mb-3', content: translate('thank_you_email_confirmed')})
.text-center
a.btn.btn-primary(href='/user/settings')
| #{translate('go_to_account_settings')}
@@ -2,7 +2,7 @@ extends ../layout-marketing
include ../_mixins/back_to_btns
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container
.row
.col-lg-10.offset-lg-1.col-xl-8.offset-xl-2
@@ -10,9 +10,9 @@ block content
.card-body
.page-header
h1 #{translate("newsletter_info_title")}
p #{translate("newsletter_info_summary")}
- var submitAction
if subscribed
- submitAction = '/user/newsletter/unsubscribe'
@@ -20,28 +20,28 @@ block content
else
- submitAction = '/user/newsletter/subscribe'
p !{translate("newsletter_info_unsubscribed", {}, ['strong'])}
form(
name='newsletterForm'
data-ol-async-form
data-ol-reload-on-success
name="newsletterForm"
action=submitAction
method="POST"
method='POST'
)
input(name='_csrf', type='hidden', value=csrfToken)
+formMessages()
input(name='_csrf' type='hidden' value=csrfToken)
+formMessages
p.actions.text-center
if subscribed
button.btn-danger.btn(type='submit', data-ol-disabled-inflight)
span(data-ol-inflight="idle") #{translate("unsubscribe")}
span(hidden data-ol-inflight="pending") #{translate("saving")}…
button.btn-danger.btn(type='submit' data-ol-disabled-inflight)
span(data-ol-inflight='idle') #{translate("unsubscribe")}
span(hidden data-ol-inflight='pending') #{translate("saving")}…
else
button.btn-primary.btn(type='submit', data-ol-disabled-inflight)
span(data-ol-inflight="idle") #{translate("subscribe")}
span(hidden data-ol-inflight="pending") #{translate("saving")}…
button.btn-primary.btn(type='submit' data-ol-disabled-inflight)
span(data-ol-inflight='idle') #{translate("subscribe")}
span(hidden data-ol-inflight='pending') #{translate("saving")}…
if subscribed
p #{translate("newsletter_info_note")}
.page-separator
+back-to-btns()
+back-to-btns
+18 -22
View File
@@ -1,7 +1,7 @@
extends ../layout-marketing
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container
.row
.col-lg-6.offset-lg-3.col-xl-4.offset-xl-4
@@ -11,10 +11,10 @@ block content
if login_support_title
h1 !{login_support_title}
else
h1 #{translate("log_in")}
form(data-ol-async-form, name="loginForm", action='/login', method="POST")
input(name='_csrf', type='hidden', value=csrfToken)
+formMessagesNewStyle()
h1 #{translate("log_in")}
form(name='loginForm' data-ol-async-form action='/login' method='POST')
input(name='_csrf' type='hidden' value=csrfToken)
+formMessagesNewStyle
+customFormMessageNewStyle('invalid-password-retry-or-reset', 'danger')
| !{translate('email_or_password_wrong_try_again_or_reset', {}, [{ name: 'a', attrs: { href: '/user/password/reset', 'aria-describedby': 'resetPasswordDescription' } }])}
span.visually-hidden(id='resetPasswordDescription')
@@ -23,28 +23,24 @@ block content
| !{translate('password_compromised_try_again_or_use_known_device_or_reset', {}, [{name: 'a', attrs: {href: 'https://haveibeenpwned.com/passwords', rel: 'noopener noreferrer', target: '_blank'}}, {name: 'a', attrs: {href: '/user/password/reset', target: '_blank'}}])}.
.form-group
input.form-control(
type='email',
name='email',
required,
placeholder='email@example.com',
autofocus="true"
name='email'
type='email'
required
placeholder='email@example.com'
autofocus='true'
)
.form-group
input.form-control(
type='password',
name='password',
required,
placeholder='********',
name='password'
type='password'
required
placeholder='********'
)
.actions
button.btn-primary.btn(
type='submit',
data-ol-disabled-inflight
)
span(data-ol-inflight="idle") #{translate("login")}
span(hidden data-ol-inflight="pending") #{translate("logging_in")}…
button.btn-primary.btn(type='submit' data-ol-disabled-inflight)
span(data-ol-inflight='idle') #{translate("login")}
span(hidden data-ol-inflight='pending') #{translate("logging_in")}…
a.float-end(href='/user/password/reset') #{translate("forgot_your_password")}?
if login_support_text
hr
p.text-center !{login_support_text}
p.text-center !{login_support_text}
@@ -1,7 +1,7 @@
extends ../layout-marketing
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container
.row
.col-lg-6.offset-lg-3.col-xl-4.offset-xl-4
@@ -13,6 +13,6 @@ block content
p
| Please
|
a(href="/login") log in
a(href='/login') log in
|
| to continue working on your projects.
@@ -11,51 +11,55 @@ block content
- var showCaptcha = settings.recaptcha && settings.recaptcha.siteKey && !(settings.recaptcha.disabled && settings.recaptcha.disabled.passwordReset)
if showCaptcha
script(type="text/javascript", nonce=scriptNonce, src="https://www.recaptcha.net/recaptcha/api.js?render=explicit")
script(
type='text/javascript'
nonce=scriptNonce
src='https://www.recaptcha.net/recaptcha/api.js?render=explicit'
)
div(
id="recaptcha"
class="g-recaptcha"
id='recaptcha'
class='g-recaptcha'
data-sitekey=settings.recaptcha.siteKey
data-size="invisible"
data-badge="inline"
data-size='invisible'
data-badge='inline'
)
main#main-content(data-ol-captcha-retry-trigger-area="")
a.auth-aux-logo(href="/")
img(src=buildImgPath("ol-brand/overleaf-o-dark.svg") alt=settings.appName)
main#main-content(data-ol-captcha-retry-trigger-area='')
a.auth-aux-logo(href='/')
img(src=buildImgPath('ol-brand/overleaf-o-dark.svg') alt=settings.appName)
.auth-aux-container
form(
name='passwordResetForm'
captcha-action-name=showCaptcha ? 'passwordReset' : false
data-ol-async-form
name="passwordResetForm"
action="/user/password/reset"
method="POST"
captcha=(showCaptcha ? '' : false)
captcha-action-name=(showCaptcha ? "passwordReset" : false)
action='/user/password/reset'
method='POST'
captcha=showCaptcha ? '' : false
)
if error === 'password_reset_token_expired'
h1.h3.mb-3.mt-0 #{translate("sorry_your_token_expired")}
p #{translate('please_request_a_new_password_reset_email_and_follow_the_link')}.
else
h1.h3.mb-3.mt-0(data-ol-not-sent) #{translate("password_reset_sentence_case")}
h1.h3.mb-3.mt-0(hidden data-ol-sent) #{translate("check_your_email")}
h1.h3.mb-3.mt-0(hidden data-ol-sent) #{translate("check_your_email")}
p.mb-3.pb-3(data-ol-not-sent) #{translate("enter_your_email_address_below_and_we_will_send_you_a_link_to_reset_your_password")}.
div(data-ol-not-sent)
+formMessagesNewStyle()
+formMessagesNewStyle
if error && error !== 'password_reset_token_expired'
+notification({ariaLive: 'assertive', type: 'error', className: 'mb-3', content: translate(error)})
div(data-ol-custom-form-message="no-password-allowed-due-to-sso" hidden)
+notification({ariaLive: 'polite', type: 'error', className: 'mb-3', content: translate("you_cant_reset_password_due_to_sso", {}, [{name: 'a', attrs: {href: '/sso-login'}}])})
input(type="hidden" name="_csrf" value=csrfToken)
div(data-ol-custom-form-message='no-password-allowed-due-to-sso' hidden)
+notification({ariaLive: 'polite', type: 'error', className: 'mb-3', content: translate('you_cant_reset_password_due_to_sso', {}, [{name: 'a', attrs: {href: '/sso-login'}}])})
input(name='_csrf' type='hidden' value=csrfToken)
.form-group.mb-3
label.form-label(for='email') #{translate("email")}
input.form-control#email(
aria-label="email"
type='email'
input#email.form-control(
name='email'
aria-label='email'
type='email'
required
autocomplete="username"
autocomplete='username'
autofocus
)
.actions
@@ -64,14 +68,14 @@ block content
data-ol-disabled-inflight
aria-label=translate('reset_password_sentence_case')
)
span(data-ol-inflight="idle")
span(data-ol-inflight='idle')
| #{translate("reset_password_sentence_case")}
span(hidden data-ol-inflight="pending")
span(hidden data-ol-inflight='pending')
| #{translate("requesting_password_reset")}…
a.btn.btn-ghost.w-100.mb-3(href="/login") #{translate("back_to_log_in")}
a.btn.btn-ghost.w-100.mb-3(href='/login') #{translate("back_to_log_in")}
div(hidden data-ol-sent)
p.mb-4 #{translate('password_reset_email_sent')}
a.btn.btn-primary.w-100.mb-3(href="/login") #{translate('back_to_log_in')}
a.btn.btn-primary.w-100.mb-3(href='/login') #{translate('back_to_log_in')}
if showCaptcha
+recaptchaConditions
+37 -33
View File
@@ -9,77 +9,81 @@ block content
- var showCaptcha = settings.recaptcha && settings.recaptcha.siteKey && !(settings.recaptcha.disabled && settings.recaptcha.disabled.passwordReset)
if showCaptcha
script(type="text/javascript", nonce=scriptNonce, src="https://www.recaptcha.net/recaptcha/api.js?render=explicit")
script(
type='text/javascript'
nonce=scriptNonce
src='https://www.recaptcha.net/recaptcha/api.js?render=explicit'
)
div(
id="recaptcha"
class="g-recaptcha"
id='recaptcha'
class='g-recaptcha'
data-sitekey=settings.recaptcha.siteKey
data-size="invisible"
data-badge="inline"
data-size='invisible'
data-badge='inline'
)
main.content.content-alt#main-content(data-ol-captcha-retry-trigger-area="")
main#main-content.content.content-alt(data-ol-captcha-retry-trigger-area='')
.container-custom-sm.mx-auto
.card
form(
name='passwordResetForm'
captcha-action-name=showCaptcha ? 'passwordReset' : false
data-ol-async-form
name="passwordResetForm"
action="/user/password/reset",
method="POST",
captcha=(showCaptcha ? '' : false),
captcha-action-name=(showCaptcha ? "passwordReset" : false),
action='/user/password/reset'
method='POST'
captcha=showCaptcha ? '' : false
)
if error === 'password_reset_token_expired'
h3.mt-0.mb-2 #{translate("sorry_your_token_expired")}
p #{translate('please_request_a_new_password_reset_email_and_follow_the_link')}.
else
h3.mt-0.mb-2(data-ol-not-sent) #{translate("password_reset")}
h3.mt-0.mb-2(hidden data-ol-sent) #{translate("check_your_email")}
h3.mt-0.mb-2(hidden data-ol-sent) #{translate("check_your_email")}
p(data-ol-not-sent) #{translate("enter_your_email_address_below_and_we_will_send_you_a_link_to_reset_your_password")}.
div(data-ol-not-sent)
+formMessages()
+formMessages
if error && error !== 'password_reset_token_expired'
div.alert.alert-danger.mb-2(
role="alert"
aria-live="assertive"
)
.alert.alert-danger.mb-2(role='alert' aria-live='assertive')
| #{translate(error)}
div(data-ol-custom-form-message="no-password-allowed-due-to-sso" hidden)
.notification.notification-type-error(aria-live="polite" style="margin-bottom: 10px;")
div(data-ol-custom-form-message='no-password-allowed-due-to-sso' hidden)
.notification.notification-type-error(
aria-live='polite'
style='margin-bottom: 10px'
)
.notification-icon
+material-symbol-rounded("error")
+material-symbol-rounded('error')
.notification-content-and-cta
.notification-content
p
| !{translate("you_cant_reset_password_due_to_sso", {}, [{name: 'a', attrs: {href: '/sso-login'}}])}
input(type="hidden", name="_csrf", value=csrfToken)
input(name='_csrf' type='hidden' value=csrfToken)
.form-group.mb-3
label(for='email') #{translate("email")}
input.form-control#email(
aria-label="email"
type='email',
name='email',
placeholder=translate("enter_your_email_address"),
required,
autocomplete="username",
input#email.form-control(
name='email'
aria-label='email'
type='email'
placeholder=translate('enter_your_email_address')
required
autocomplete='username'
autofocus
)
.actions
button.btn.btn-primary.w-100(
type='submit',
data-ol-disabled-inflight,
type='submit'
data-ol-disabled-inflight
aria-label=translate('request_password_reset_to_reconfirm')
)
span(data-ol-inflight="idle")
span(data-ol-inflight='idle')
| #{translate("request_password_reset")}
span(hidden data-ol-inflight="pending")
span(hidden data-ol-inflight='pending')
| #{translate("requesting_password_reset")}…
div(hidden data-ol-sent)
p.mb-4 #{translate('password_reset_email_sent')}
a(href="/login") #{translate('back_to_log_in')}
a(href='/login') #{translate('back_to_log_in')}
if showCaptcha
+recaptchaConditions
@@ -7,36 +7,36 @@ block vars
block content
main#main-content
.auth-aux-container
img.w-50.d-block(src=buildImgPath("ol-brand/overleaf.svg") alt=settings.appName)
img.w-50.d-block(
src=buildImgPath('ol-brand/overleaf.svg')
alt=settings.appName
)
h1.h3.mb-3 #{translate("keep_your_account_safe")}
div(data-ol-multi-submit)
p.small.mb-4
| !{translate("primary_email_check_question", { email: getUserEmail() }, ["strong"])}
form(
data-ol-async-form
action="/user/emails/primary-email-check"
method="POST"
action='/user/emails/primary-email-check'
method='POST'
)
input(name='_csrf', type='hidden', value=csrfToken)
+formMessagesNewStyle()
input(name='_csrf' type='hidden' value=csrfToken)
+formMessagesNewStyle
button.btn.btn-primary.w-100.mb-3(
type='submit'
data-ol-disabled-inflight
)
span(data-ol-inflight="idle") #{translate("yes_that_is_correct")}
span(hidden data-ol-inflight="pending") #{translate("confirming")}…
button.btn.btn-primary.w-100.mb-3(type='submit' data-ol-disabled-inflight)
span(data-ol-inflight='idle') #{translate("yes_that_is_correct")}
span(hidden data-ol-inflight='pending') #{translate("confirming")}…
a.btn.btn-secondary.w-100.mb-4(
href="/user/settings#add-email"
href='/user/settings#add-email'
data-ol-slow-link
event-tracking="primary-email-check-change-email"
event-tracking-mb="true"
event-tracking-trigger="click"
event-tracking='primary-email-check-change-email'
event-tracking-mb='true'
event-tracking-trigger='click'
)
span(data-ol-inflight="idle") #{translate("no_update_email")}
span(hidden data-ol-inflight="pending") #{translate("redirecting")}…
span(data-ol-inflight='idle') #{translate("no_update_email")}
span(hidden data-ol-inflight='pending') #{translate("redirecting")}…
p.small.mb-2
| #{translate("keep_your_email_updated")}
| #{translate("keep_your_email_updated")}
p.small
| !{translate("learn_more_about_emails", {}, [{name: 'a', attrs: {href: '/learn/how-to/Keeping_your_account_secure', 'event-tracking': 'primary-email-check-learn-more', 'event-tracking-mb': 'true', 'event-tracking-trigger': 'click' }}])}
| !{translate("learn_more_about_emails", {}, [{name: 'a', attrs: {href: '/learn/how-to/Keeping_your_account_secure', 'event-tracking': 'primary-email-check-learn-more', 'event-tracking-mb': 'true', 'event-tracking-trigger': 'click' }}])}
+28 -27
View File
@@ -5,46 +5,50 @@ block vars
- isWebsiteRedesign = true
block content
- var email = reconfirm_email ? reconfirm_email : ""
- var email = reconfirm_email ? reconfirm_email : ''
- var showCaptcha = settings.recaptcha && settings.recaptcha.siteKey && !(settings.recaptcha.disabled && settings.recaptcha.disabled.passwordReset)
if showCaptcha
script(type="text/javascript", nonce=scriptNonce, src="https://www.recaptcha.net/recaptcha/api.js?render=explicit")
script(
type='text/javascript'
nonce=scriptNonce
src='https://www.recaptcha.net/recaptcha/api.js?render=explicit'
)
div(
id="recaptcha"
class="g-recaptcha"
id='recaptcha'
class='g-recaptcha'
data-sitekey=settings.recaptcha.siteKey
data-size="invisible"
data-badge="inline"
data-size='invisible'
data-badge='inline'
)
main#main-content(data-ol-captcha-retry-trigger-area="")
.container.auth-aux-container(style="max-width: 420px;")
main#main-content(data-ol-captcha-retry-trigger-area='')
.container.auth-aux-container(style='max-width: 420px')
form(
name='reconfirmAccountForm'
captcha-action-name=showCaptcha ? 'passwordReset' : false
data-ol-async-form
name="reconfirmAccountForm"
action="/user/reconfirm"
method="POST"
action='/user/reconfirm'
method='POST'
aria-label=translate('request_reconfirmation_email')
captcha=(showCaptcha ? '' : false)
captcha-action-name=(showCaptcha ? "passwordReset" : false)
captcha=showCaptcha ? '' : false
)
h1.h5.mb-3 #{translate("reconfirm_account")}
p #{translate('reconfirm_explained')}
|
|
a(href=`mailto:${settings.adminEmail}`) #{settings.adminEmail}
| .
div(data-ol-not-sent)
+formMessagesNewStyle()
input(type="hidden" name="_csrf" value=csrfToken)
div(data-ol-not-sent)
+formMessagesNewStyle
input(name='_csrf' type='hidden' value=csrfToken)
.form-group.mb-3
label.form-label(for='email') #{translate("please_enter_email")}
input.form-control(
aria-label="email"
type='email'
name='email'
aria-label='email'
type='email'
placeholder='email@example.com'
required
autofocus
@@ -52,20 +56,17 @@ block content
)
.actions
button.btn.btn-primary.w-100(
style="white-space: normal;"
style='white-space: normal'
type='submit'
data-ol-disabled-inflight
aria-label=translate('request_password_reset_to_reconfirm')
)
span(data-ol-inflight="idle")
span(data-ol-inflight='idle')
| #{translate('request_password_reset_to_reconfirm')}
span(hidden data-ol-inflight="pending")
span(hidden data-ol-inflight='pending')
| #{translate('request_password_reset_to_reconfirm')}…
div(hidden data-ol-sent)
div.alert.alert-success(
role="alert"
aria-live="polite"
)
.alert.alert-success(role='alert' aria-live='polite')
span #{translate('password_reset_email_sent')}
if showCaptcha
+29 -28
View File
@@ -5,20 +5,24 @@ block vars
- bootstrap5PageStatus = 'disabled'
block content
- var email = reconfirm_email ? reconfirm_email : ""
- var email = reconfirm_email ? reconfirm_email : ''
- var showCaptcha = settings.recaptcha && settings.recaptcha.siteKey && !(settings.recaptcha.disabled && settings.recaptcha.disabled.passwordReset)
if showCaptcha
script(type="text/javascript", nonce=scriptNonce, src="https://www.recaptcha.net/recaptcha/api.js?render=explicit")
script(
type='text/javascript'
nonce=scriptNonce
src='https://www.recaptcha.net/recaptcha/api.js?render=explicit'
)
div(
id="recaptcha"
class="g-recaptcha"
id='recaptcha'
class='g-recaptcha'
data-sitekey=settings.recaptcha.siteKey
data-size="invisible"
data-badge="inline"
data-size='invisible'
data-badge='inline'
)
main.content.content-alt#main-content(data-ol-captcha-retry-trigger-area="")
main#main-content.content.content-alt(data-ol-captcha-retry-trigger-area='')
.container
.row
.col-sm-12.col-md-6.col-md-offset-3
@@ -28,44 +32,41 @@ block content
a(href=`mailto:${settings.adminEmail}`) #{settings.adminEmail}
| .
form(
name='reconfirmAccountForm'
captcha-action-name=showCaptcha ? 'passwordReset' : false
data-ol-async-form
name="reconfirmAccountForm"
action="/user/reconfirm",
method="POST",
action='/user/reconfirm'
method='POST'
aria-label=translate('request_reconfirmation_email')
captcha=(showCaptcha ? '' : false),
captcha-action-name=(showCaptcha ? "passwordReset" : false)
captcha=showCaptcha ? '' : false
)
div(data-ol-not-sent)
+formMessages()
input(type="hidden", name="_csrf", value=csrfToken)
+formMessages
input(name='_csrf' type='hidden' value=csrfToken)
.form-group
label(for='email') #{translate("please_enter_email")}
input.form-control(
aria-label="email"
type='email',
name='email',
placeholder='email@example.com',
required,
name='email'
aria-label='email'
type='email'
placeholder='email@example.com'
required
autofocus
value=email
)
.actions
button.btn.btn-primary(
type='submit',
data-ol-disabled-inflight,
type='submit'
data-ol-disabled-inflight
aria-label=translate('request_password_reset_to_reconfirm')
)
span(data-ol-inflight="idle")
span(data-ol-inflight='idle')
| #{translate('request_password_reset_to_reconfirm')}
span(hidden data-ol-inflight="pending")
span(hidden data-ol-inflight='pending')
| #{translate('request_password_reset_to_reconfirm')}…
div(hidden data-ol-sent)
div.alert.alert-success(
role="alert"
aria-live="polite"
)
.alert.alert-success(role='alert' aria-live='polite')
span #{translate('password_reset_email_sent')}
.row
.col-sm-12.col-md-6.col-md-offset-3
+3 -3
View File
@@ -4,7 +4,7 @@ block vars
- bootstrap5PageStatus = 'disabled'
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container
.row
.registration_message
@@ -15,12 +15,12 @@ block content
| #{translate("join_sl_to_view_project")}.
div
| #{translate("already_have_sl_account")}
a(href="/login") #{translate("login_here")}
a(href='/login') #{translate("login_here")}
else if newTemplateData.templateName !== undefined
h1 #{translate("register_to_edit_template", {templateName:newTemplateData.templateName})}
div #{translate("already_have_sl_account")}
a(href="/login") #{translate("login_here")}
a(href='/login') #{translate("login_here")}
.row
.col-md-8.col-md-offset-2.col-lg-6.col-lg-offset-3
+14 -18
View File
@@ -1,15 +1,15 @@
extends ../layout-marketing
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container
.row
.col-lg-10.offset-lg-1.col-xl-8.offset-xl-2
.card.clear-user-sessions
.card-body
.page-header
h1 #{translate("your_sessions")}
h1 #{translate("your_sessions")}
if currentSession.ip_address && currentSession.session_created
h3 #{translate("current_session")}
div
@@ -21,47 +21,43 @@ block content
tr
td #{currentSession.ip_address}
td #{moment(currentSession.session_created).utc().format('Do MMM YYYY, h:mm a')} UTC
h3 #{translate("other_sessions")}
div
p.small
| !{translate("clear_sessions_description")}
form(
data-ol-async-form
action='/user/sessions/clear'
method='POST'
)
form(data-ol-async-form action='/user/sessions/clear' method='POST')
input(name='_csrf' type='hidden' value=csrfToken)
div(data-ol-not-sent)
if sessions.length == 0
p.text-center
| #{translate("no_other_sessions")}
if sessions.length > 0
table.table.table-striped
thead
tr
th #{translate("ip_address")}
th #{translate("session_created_at")}
for session in sessions
each session in sessions
tr
td #{session.ip_address}
td #{moment(session.session_created).utc().format('Do MMM YYYY, h:mm a')} UTC
p.actions
.text-center
button.btn.btn-lg.btn-primary(
type="submit"
type='submit'
data-ol-disable-inflight
)
span(data-ol-inflight="idle") #{translate('clear_sessions')}
span(hidden data-ol-inflight="pending") #{translate("processing")}…
span(data-ol-inflight='idle') #{translate('clear_sessions')}
span(hidden data-ol-inflight='pending') #{translate("processing")}…
div(hidden data-ol-sent)
p.text-center
| #{translate("no_other_sessions")}
p.text-success.text-center
| #{translate('clear_sessions_success')}
.page-separator
+23 -27
View File
@@ -7,28 +7,25 @@ block vars
block content
main#main-content
a.auth-aux-logo(href="/")
img(src=buildImgPath("ol-brand/overleaf-o-dark.svg") alt=settings.appName)
a.auth-aux-logo(href='/')
img(src=buildImgPath('ol-brand/overleaf-o-dark.svg') alt=settings.appName)
.auth-aux-container
form(
name='passwordResetForm'
data-ol-async-form
name="passwordResetForm"
action="/user/password/set"
method="POST"
data-ol-hide-on-error="token-expired"
action='/user/password/set'
method='POST'
data-ol-hide-on-error='token-expired'
)
div(
hidden
data-ol-sent
)
div(hidden data-ol-sent)
h1.h3.mb-3.mt-0 #{translate("password_updated")}
p.mb-4 #{translate("your_password_has_been_successfully_changed")}.
a.btn.btn-primary.w-100(href='/login') #{translate("log_in_now")}
div(data-ol-not-sent)
h1.h3.mb-3.mt-0 #{translate("reset_your_password")}
p(data-ol-hide-on-error-message="token-expired") #{translate("create_a_new_password_for_your_account")}.
+formMessagesNewStyle()
p(data-ol-hide-on-error-message='token-expired') #{translate("create_a_new_password_for_your_account")}.
+formMessagesNewStyle
+customFormMessageNewStyle('password-contains-email', 'danger')
| #{translate('invalid_password_contains_email')}.
@@ -41,18 +38,21 @@ block content
+customFormMessageNewStyle('token-expired', 'danger')
| #{translate('password_reset_token_expired')}
br
a(href="/user/password/reset")
a(href='/user/password/reset')
| #{translate('request_new_password_reset_email')}
input(type="hidden" name="_csrf" value=csrfToken)
input(type="text" hidden name="email" autocomplete="username" value=email)
input(name='_csrf' type='hidden' value=csrfToken)
input(name='email' type='text' hidden autocomplete='username' value=email)
.form-group.mb-3
label.form-label(for='passwordField', data-ol-hide-on-error-message="token-expired") #{translate("new_password")}
input.form-control.auth-aux-new-password#passwordField(
type='password'
label.form-label(
for='passwordField'
data-ol-hide-on-error-message='token-expired'
) #{translate("new_password")}
input#passwordField.form-control.auth-aux-new-password(
name='password'
autocomplete="new-password"
type='password'
autocomplete='new-password'
autofocus
required
minlength=settings.passwordStrengthOptions.length.min
@@ -68,12 +68,8 @@ block content
| !{translate('password_was_detected_on_a_public_list_of_known_compromised_passwords', {}, [{name: 'a', attrs: {href: 'https://haveibeenpwned.com/passwords', rel: 'noopener noreferrer', target: '_blank'}}])}.
| #{translate('use_a_different_password')}.
input(
type="hidden"
name="passwordResetToken"
value=passwordResetToken
)
div(data-ol-hide-on-error-message="token-expired")
input(name='passwordResetToken' type='hidden' value=passwordResetToken)
div(data-ol-hide-on-error-message='token-expired')
div #{translate('in_order_to_have_a_secure_account_make_sure_your_password')}
ul.mb-3.ps-4
li #{translate('is_longer_than_n_characters', {n: settings.passwordStrengthOptions.length.min})}
@@ -85,7 +81,7 @@ block content
data-ol-disabled-inflight
aria-label=translate('set_new_password')
)
span(data-ol-inflight="idle")
span(data-ol-inflight='idle')
| #{translate('set_new_password')}
span(hidden data-ol-inflight="pending")
span(hidden data-ol-inflight='pending')
| #{translate('set_new_password')}…
+34 -32
View File
@@ -4,28 +4,25 @@ block vars
- bootstrap5PageStatus = 'disabled'
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
.container-custom-sm.mx-auto
.card
form(
data-ol-async-form,
name="passwordResetForm",
action="/user/password/set",
method="POST",
data-ol-hide-on-error="token-expired"
name='passwordResetForm'
data-ol-async-form
action='/user/password/set'
method='POST'
data-ol-hide-on-error='token-expired'
)
div(
hidden
data-ol-sent
)
div(hidden data-ol-sent)
h3.mt-0.mb-2 #{translate("password_updated")}
p.mb-4 #{translate("your_password_has_been_successfully_changed")}.
a(href='/login') #{translate("log_in_now")}
div(data-ol-not-sent)
h3.mt-0.mb-2 #{translate("reset_your_password")}
p(data-ol-hide-on-error-message="token-expired") #{translate("create_a_new_password_for_your_account")}.
+formMessages()
p(data-ol-hide-on-error-message='token-expired') #{translate("create_a_new_password_for_your_account")}.
+formMessages
+customFormMessage('password-contains-email', 'danger')
| #{translate('invalid_password_contains_email')}.
@@ -38,21 +35,30 @@ block content
+customFormMessage('token-expired', 'danger')
| #{translate('password_reset_token_expired')}
br
a(href="/user/password/reset")
a(href='/user/password/reset')
| #{translate('request_new_password_reset_email')}
input(type="hidden", name="_csrf", value=csrfToken)
input(type="text" hidden name="email" autocomplete="username" value=email)
input(name='_csrf' type='hidden' value=csrfToken)
input(
name='email'
type='text'
hidden
autocomplete='username'
value=email
)
.form-group
label(for='passwordField', data-ol-hide-on-error-message="token-expired") #{translate("new_password")}
input.form-control#passwordField(
type='password',
name='password',
placeholder=translate("enter_your_new_password"),
autocomplete="new-password",
autofocus,
required,
label(
for='passwordField'
data-ol-hide-on-error-message='token-expired'
) #{translate("new_password")}
input#passwordField.form-control(
name='password'
type='password'
placeholder=translate('enter_your_new_password')
autocomplete='new-password'
autofocus
required
minlength=settings.passwordStrengthOptions.length.min
)
@@ -66,12 +72,8 @@ block content
| !{translate('password_was_detected_on_a_public_list_of_known_compromised_passwords', {}, [{name: 'a', attrs: {href: 'https://haveibeenpwned.com/passwords', rel: 'noopener noreferrer', target: '_blank'}}])}.
| #{translate('use_a_different_password')}.
input(
type="hidden",
name="passwordResetToken",
value=passwordResetToken
)
div(data-ol-hide-on-error-message="token-expired")
input(name='passwordResetToken' type='hidden' value=passwordResetToken)
div(data-ol-hide-on-error-message='token-expired')
div #{translate('in_order_to_have_a_secure_account_make_sure_your_password')}
ul.mb-4.ps-4
li #{translate('is_longer_than_n_characters', {n: settings.passwordStrengthOptions.length.min})}
@@ -79,11 +81,11 @@ block content
li #{translate('is_not_used_on_any_other_website')}
.actions
button.btn.btn-primary.w-100(
type='submit',
type='submit'
data-ol-disabled-inflight
aria-label=translate('set_new_password')
)
span(data-ol-inflight="idle")
span(data-ol-inflight='idle')
| #{translate('set_new_password')}
span(hidden data-ol-inflight="pending")
span(hidden data-ol-inflight='pending')
| #{translate('set_new_password')}…
+54 -27
View File
@@ -2,38 +2,65 @@ extends ../layout-react
block entrypointVar
- entrypoint = 'pages/user/settings'
block vars
- isWebsiteRedesign = true
block append meta
meta(name="ol-hasPassword" data-type="boolean" content=hasPassword)
meta(name="ol-shouldAllowEditingDetails" data-type="boolean" content=shouldAllowEditingDetails)
meta(name="ol-oauthProviders", data-type="json", content=oauthProviders)
meta(name="ol-institutionLinked", data-type="json", content=institutionLinked)
meta(name="ol-samlError", data-type="json", content=samlError)
meta(name="ol-institutionEmailNonCanonical", content=institutionEmailNonCanonical)
meta(name='ol-hasPassword' data-type='boolean' content=hasPassword)
meta(
name='ol-shouldAllowEditingDetails'
data-type='boolean'
content=shouldAllowEditingDetails
)
meta(name='ol-oauthProviders' data-type='json' content=oauthProviders)
meta(name='ol-institutionLinked' data-type='json' content=institutionLinked)
meta(name='ol-samlError' data-type='json' content=samlError)
meta(
name='ol-institutionEmailNonCanonical'
content=institutionEmailNonCanonical
)
meta(name="ol-reconfirmedViaSAML", content=reconfirmedViaSAML)
meta(name="ol-reconfirmationRemoveEmail", content=reconfirmationRemoveEmail)
meta(name="ol-samlBeta", content=samlBeta)
meta(name="ol-ssoErrorMessage", content=ssoErrorMessage)
meta(name="ol-thirdPartyIds", data-type="json", content=thirdPartyIds || {})
meta(name="ol-passwordStrengthOptions", data-type="json", content=settings.passwordStrengthOptions || {})
meta(name="ol-isExternalAuthenticationSystemUsed" data-type="boolean" content=externalAuthenticationSystemUsed())
meta(name="ol-user" data-type="json" content=user)
meta(name="ol-labsExperiments" data-type="json" content=labsExperiments)
meta(name="ol-dropbox" data-type="json" content=dropbox)
meta(name="ol-github" data-type="json" content=github)
meta(name="ol-projectSyncSuccessMessage", content=projectSyncSuccessMessage)
meta(name="ol-personalAccessTokens", data-type="json" content=personalAccessTokens)
meta(name="ol-emailAddressLimit", data-type="json", content=emailAddressLimit)
meta(name="ol-currentManagedUserAdminEmail" data-type="string" content=currentManagedUserAdminEmail)
meta(name="ol-gitBridgeEnabled" data-type="boolean" content=gitBridgeEnabled)
meta(name="ol-isSaas" data-type="boolean" content=isSaas)
meta(name="ol-memberOfSSOEnabledGroups" data-type="json" content=memberOfSSOEnabledGroups)
meta(name="ol-capabilities" data-type="json" content=capabilities)
meta(name='ol-reconfirmedViaSAML' content=reconfirmedViaSAML)
meta(name='ol-reconfirmationRemoveEmail' content=reconfirmationRemoveEmail)
meta(name='ol-samlBeta' content=samlBeta)
meta(name='ol-ssoErrorMessage' content=ssoErrorMessage)
meta(name='ol-thirdPartyIds' data-type='json' content=thirdPartyIds || {})
meta(
name='ol-passwordStrengthOptions'
data-type='json'
content=settings.passwordStrengthOptions || {}
)
meta(
name='ol-isExternalAuthenticationSystemUsed'
data-type='boolean'
content=externalAuthenticationSystemUsed()
)
meta(name='ol-user' data-type='json' content=user)
meta(name='ol-labsExperiments' data-type='json' content=labsExperiments)
meta(name='ol-dropbox' data-type='json' content=dropbox)
meta(name='ol-github' data-type='json' content=github)
meta(name='ol-projectSyncSuccessMessage' content=projectSyncSuccessMessage)
meta(
name='ol-personalAccessTokens'
data-type='json'
content=personalAccessTokens
)
meta(name='ol-emailAddressLimit' data-type='json' content=emailAddressLimit)
meta(
name='ol-currentManagedUserAdminEmail'
data-type='string'
content=currentManagedUserAdminEmail
)
meta(name='ol-gitBridgeEnabled' data-type='boolean' content=gitBridgeEnabled)
meta(name='ol-isSaas' data-type='boolean' content=isSaas)
meta(
name='ol-memberOfSSOEnabledGroups'
data-type='json'
content=memberOfSSOEnabledGroups
)
meta(name='ol-capabilities' data-type='json' content=capabilities)
block content
main.content.content-alt#main-content
main#main-content.content.content-alt
#settings-page-root