mirror of
https://github.com/wekan/wekan.git
synced 2026-11-08 03:22:32 -05:00
#4236 made every multi-line editor submit only on Ctrl/Cmd+Enter (plain Enter = newline) so titles could be multi-line, but that removed the fast Enter-to-save title workflow some users rely on (v10 email feedback). Add a per-user preference in the Member Settings (Change Settings) popup, saved to profile.submitOnEnter and OFF by default: when on, plain Enter submits the card title, description and other inlined forms, and Shift+Enter inserts a newline; when off, behaviour is unchanged (Ctrl/Cmd+Enter saves). The rule stays in the single pure isSubmitKey(event, {submitOnEnter}); the card title, the card-description override and the shared client/lib/inlinedform.js all route through it and read the preference from the current user. New toggle + helper + toggleSubmitOnEnter method + schema field, i18n (en, fi), and editorSubmitKey.test.cjs extended with positive + negative opt-in cases. Thanks to xet7 ! Related to #4236.
268 lines
9.1 KiB
Plaintext
268 lines
9.1 KiB
Plaintext
template(name="headerUserBar")
|
|
#header-user-bar
|
|
a.header-user-bar-name.js-open-header-member-menu(title="{{_ 'memberMenuPopup-title'}}")
|
|
.header-user-bar-avatar
|
|
+userAvatar(userId=currentUser._id)
|
|
unless isMiniScreen
|
|
unless isSandstorm
|
|
if currentUser.profile.fullname
|
|
= currentUser.profile.fullname
|
|
else
|
|
= currentUser.username
|
|
|
|
template(name="memberMenuPopup")
|
|
ul.pop-over-list
|
|
with currentUser
|
|
li
|
|
a.js-toggle-grey-icons(href="#")
|
|
i.fa.fa-paint-brush
|
|
| {{_ 'grey-icons'}}
|
|
if currentUser.profile
|
|
if currentUser.profile.GreyIcons
|
|
i.fa.fa-check
|
|
li
|
|
a.js-my-cards(href="{{pathFor 'my-cards'}}")
|
|
i.fa.fa-list
|
|
| {{_ 'my-cards'}}
|
|
li
|
|
a.js-due-cards(href="{{pathFor 'due-cards'}}")
|
|
i.fa.fa-calendar
|
|
| {{_ 'dueCards-title'}}
|
|
li
|
|
a.js-global-search(href="{{pathFor 'global-search'}}")
|
|
i.fa.fa-search
|
|
| {{_ 'globalSearch-title'}}
|
|
li
|
|
a(href="{{pathFor 'home'}}")
|
|
i.fa.fa-home
|
|
| {{_ 'all-boards'}}
|
|
li
|
|
a(href="{{pathFor 'public'}}")
|
|
i.fa.fa-globe
|
|
| {{_ 'public'}}
|
|
li
|
|
a.board-header-btn.js-open-archived-board
|
|
i.fa.fa-archive
|
|
span {{_ 'archives'}}
|
|
//- Notifications removed from the member menu: same as the header bell icon.
|
|
if currentSetting.customHelpLinkUrl
|
|
li
|
|
a(href="{{currentSetting.customHelpLinkUrl}}", title="{{_ 'help'}}", target="_blank", rel="noopener noreferrer")
|
|
i.fa.fa-question-circle
|
|
| {{_ 'help'}}
|
|
unless currentUser.isWorker
|
|
ul.pop-over-list
|
|
li
|
|
a(href="{{pathFor 'allboards-templates'}}")
|
|
i.fa.fa-list
|
|
| {{_ 'templates'}}
|
|
if currentUser.isAdmin
|
|
li
|
|
a.js-go-setting(href="{{pathFor 'setting'}}")
|
|
i.fa.fa-lock
|
|
| {{_ 'admin-panel'}}
|
|
hr
|
|
if isSameDomainNameSettingValue
|
|
li
|
|
a.js-invite-people
|
|
i.fa.fa-envelope
|
|
| {{_ 'invite-people'}}
|
|
if isNotOAuth2AuthenticationMethod
|
|
li
|
|
a.js-edit-profile
|
|
i.fa.fa-user
|
|
| {{_ 'edit-profile'}}
|
|
li
|
|
a.js-change-settings
|
|
i.fa.fa-cog
|
|
| {{_ 'change-settings'}}
|
|
li
|
|
a.js-change-color
|
|
i.fa.fa-paint-brush
|
|
| {{_ 'change-color'}}
|
|
li
|
|
a.js-change-font
|
|
i.fa.fa-font
|
|
| {{_ 'change-font'}}
|
|
li
|
|
a.js-change-avatar
|
|
i.fa.fa-picture-o
|
|
| {{_ 'change-avatar'}}
|
|
unless isSandstorm
|
|
if isNotOAuth2AuthenticationMethod
|
|
li
|
|
a.js-change-password
|
|
i.fa.fa-key
|
|
| {{_ 'changePasswordPopup-title'}}
|
|
li
|
|
a.js-change-language
|
|
i.fa.fa-flag
|
|
| {{_ 'changeLanguagePopup-title'}}
|
|
if isSupportPageEnabled
|
|
li
|
|
a(href="{{pathFor 'support'}}")
|
|
i.fa.fa-question-circle
|
|
| {{_ 'support'}}
|
|
unless isSandstorm
|
|
hr
|
|
ul.pop-over-list
|
|
li
|
|
a.js-logout
|
|
i.fa.fa-sign-out
|
|
| {{_ 'log-out'}}
|
|
|
|
template(name="invitePeoplePopup")
|
|
ul#registration-setting.setting-detail
|
|
li
|
|
#invite-people-infos
|
|
li
|
|
br
|
|
li
|
|
.invite-people(class="{{#if currentSetting.disableRegistration}}{{else}}hide{{/if}}")
|
|
ul
|
|
li
|
|
.title {{_ 'invite-people'}}
|
|
textarea#email-to-invite.wekan-form-control(rows='5', placeholder="{{_ 'email-addresses'}}")
|
|
li
|
|
.title {{_ 'to-boards'}}
|
|
.bg-white
|
|
each boards
|
|
a.option.flex.js-toggle-board-choose(id= _id)
|
|
.materialCheckBox(data-id= _id)
|
|
|
|
span= title
|
|
|
|
li
|
|
button.js-email-invite.primary {{_ 'invite'}}
|
|
|
|
template(name="editProfilePopup")
|
|
form
|
|
label
|
|
| {{_ 'fullname'}}
|
|
input.js-profile-fullname(type="text" value=profile.fullname autofocus)
|
|
label
|
|
| {{_ 'username'}}
|
|
span.error.hide.username-taken
|
|
| {{_ 'error-username-taken'}}
|
|
if allowUserNameChange
|
|
input.js-profile-username(type="text" value=username)
|
|
else
|
|
input.js-profile-username(type="text" value=username readonly)
|
|
label
|
|
| {{_ 'initials'}}
|
|
input.js-profile-initials(type="text" value=profile.initials)
|
|
label
|
|
| {{_ 'email'}}
|
|
span.error.hide.email-taken
|
|
| {{_ 'error-email-taken'}}
|
|
if allowEmailChange
|
|
input.js-profile-email(type="email" value="{{emails.[0].address}}")
|
|
else
|
|
input.js-profile-email(type="email" value="{{emails.[0].address}}" readonly)
|
|
div.buttonsContainer
|
|
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
|
if allowUserDelete
|
|
div
|
|
input#deleteButton.primary.wide(type="button" value="{{_ 'delete'}}")
|
|
|
|
|
|
template(name="supportPopup")
|
|
ul.pop-over-list
|
|
li
|
|
+viewer
|
|
= currentSetting.supportPopupText
|
|
|
|
template(name="changePasswordPopup")
|
|
+atForm(state='changePwd')
|
|
|
|
template(name="changeLanguagePopup")
|
|
ul.pop-over-list
|
|
each languages
|
|
li(class="{{# if isCurrentLanguage}}active{{/if}}")
|
|
a.js-set-language
|
|
span.emoji-icon {{languageFlag}}
|
|
| {{name}}
|
|
if rtl
|
|
| (RTL)
|
|
if isCurrentLanguage
|
|
i.fa.fa-check
|
|
|
|
template(name="changeColorPopup")
|
|
//- #5778: global theme color override, saved to the user profile. Works like
|
|
Board Settings / Change Color, but applies to the whole UI (All Boards, Search,
|
|
Admin Panel, etc). The shared picker (docs/Theme/Theme.md) offers category +
|
|
theme dropdowns and custom color wheels for flat/clear themes.
|
|
+themeColorPicker(scope="global")
|
|
|
|
template(name="changeFontPopup")
|
|
//- #4759: pick a UI font that ALREADY EXISTS in this browser. One button per
|
|
detected font, each shown in its OWN font (names are plain text, Blaze-escaped,
|
|
validated to a curated whitelist server-side). Font size is a row of buttons
|
|
(smaller on the left, 100% in the middle, larger on the right). Clicking a font
|
|
or size applies it IMMEDIATELY (no Save button).
|
|
form.change-font.edit-label
|
|
label {{_ 'font'}}
|
|
.ui-font-buttons
|
|
a.ui-font-btn.js-ui-font-btn(data-font="" class="{{#if isNoneSelected}}active{{/if}}") {{_ 'font-default'}}
|
|
each detectedFonts
|
|
a.ui-font-btn.js-ui-font-btn(data-font="{{name}}" style="{{optionStyle}}" class="{{#if selected}}active{{/if}}") {{name}}
|
|
//- Preview (pangram + numbers) right below the font-name buttons.
|
|
.font-preview(style=previewStyle) {{_ 'font-preview-text'}}
|
|
label {{_ 'font-size'}}
|
|
.ui-font-size-buttons
|
|
each fontSizes
|
|
a.ui-font-size-btn.js-ui-font-size-btn(data-size="{{key}}" class="{{#if selected}}active{{/if}}") {{label}}
|
|
//- #4759: text + text-background color from a color wheel, each unsettable.
|
|
//- Applied immediately when the wheel is committed / reset.
|
|
label {{_ 'text-color'}}
|
|
.color-wheel-wrap
|
|
input.js-ui-text-color(type="color" value=textColorHex title="{{_ 'text-color'}}")
|
|
a.js-reset-text-color(class="{{#unless hasTextColor}}disabled{{/unless}}") {{_ 'unset-color'}}
|
|
label {{_ 'text-background-color'}}
|
|
.color-wheel-wrap
|
|
input.js-ui-bg-color(type="color" value=bgColorHex title="{{_ 'text-background-color'}}")
|
|
a.js-reset-bg-color(class="{{#unless hasBgColor}}disabled{{/unless}}") {{_ 'unset-color'}}
|
|
|
|
template(name="changeSettingsPopup")
|
|
ul.pop-over-list
|
|
li
|
|
a.js-toggle-desktop-drag-handles
|
|
i.fa.fa-arrows
|
|
| {{_ 'show-desktop-drag-handles'}}
|
|
if isShowDesktopDragHandles
|
|
i.fa.fa-check
|
|
li
|
|
a.js-toggle-submit-on-enter(title="{{_ 'submit-on-enter-description'}}")
|
|
i.fa.fa-level-down
|
|
| {{_ 'submit-on-enter'}}
|
|
if isSubmitOnEnter
|
|
i.fa.fa-check
|
|
unless currentUser.isWorker
|
|
li
|
|
label.bold.clear
|
|
i.fa.fa-sort-numeric-asc
|
|
| {{_ 'show-cards-minimum-count'}}
|
|
input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="-1")
|
|
label.bold.clear
|
|
i.fa.fa-calendar
|
|
| {{_ 'start-day-of-week'}}
|
|
select#start-day-of-week.inline-input.left
|
|
each day in weekDays startDayOfWeek
|
|
if day.isSelected
|
|
option(selected="true", value="#{day.value}") #{day.name}
|
|
else
|
|
option(value="#{day.value}") #{day.name}
|
|
label.bold.clear
|
|
| {{_ 'card-settings'}}
|
|
ul#cards.card-description-rescued
|
|
a.flex.js-rescue-card-description(title="{{_ 'rescue-card-description'}}")
|
|
b
|
|
#rescue-card-description.materialCheckBox.left(class="{{#if rescueCardDescription}}is-checked{{/if}}", value=rescueCardDescription)
|
|
span {{_ 'rescue-card-description'}}
|
|
input.js-apply-user-settings.left(type="submit" value="{{_ 'apply'}}")
|
|
|
|
template(name="userDeletePopup")
|
|
unless currentUser.isWorker
|
|
p {{_ 'delete-user-confirm-popup'}}
|
|
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|