wekan/client/components/sidebar/sidebar.jade
2025-11-05 17:06:26 +02:00

832 lines
31 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

template(name="sidebar")
.board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}} {{#unless isVerticalScrollbars}}no-scrollbars{{/unless}}")
//a.sidebar-tongue.js-toggle-sidebar(
// class="{{#if isTongueHidden}}is-hidden{{/if}}",
// title="{{showTongueTitle}}")
// i.fa.fa-navicon
.sidebar-actions
.sidebar-shortcuts
a.sidebar-btn.js-shortcuts(title="{{_ 'keyboard-shortcuts' }}")
| ⌨️
span {{_ 'keyboard-shortcuts' }}
a.sidebar-btn.js-keyboard-shortcuts-toggle(
title="{{#if isKeyboardShortcuts}}{{_ 'keyboard-shortcuts-enabled'}}{{else}}{{_ 'keyboard-shortcuts-disabled'}}{{/if}}")
| {{#if isKeyboardShortcuts}}✅{{else}}🚫{{/if}}
if isAccessibilityEnabled
a.sidebar-accessibility
| ♿
span {{_ 'accessibility'}}
a.sidebar-xmark.js-close-sidebar ✕
.sidebar-content.js-board-sidebar-content
//a.hide-btn.js-hide-sidebar
// i.fa.fa-navicon
unless isDefaultView
h2
a.js-back-home | ⬅️
= getViewTitle
if isOpen
+Template.dynamic(template=getViewTemplate)
template(name='homeSidebar')
+membersWidget
hr
+labelsWidget
hr
ul#cards.label-text-hidden
a.flex.js-toggle-minicard-label-text(title="{{_ 'hide-minicard-label-text'}}")
span {{#if hiddenMinicardLabelText}}✅{{else}}⬜{{/if}}
span {{_ 'hide-minicard-label-text'}}
if currentUser
ul#cards.vertical-scrollbars-toggle
a.flex.js-vertical-scrollbars-toggle(title="{{_ 'enable-vertical-scrollbars'}}")
span {{#if isVerticalScrollbars}}✅{{else}}⬜{{/if}}
span {{_ 'enable-vertical-scrollbars'}}
ul#cards.show-week-of-year-toggle
a.flex.js-show-week-of-year-toggle(title="{{_ 'show-week-of-year'}}")
span {{#if isShowWeekOfYear}}✅{{else}}⬜{{/if}}
span {{_ 'show-week-of-year'}}
hr
unless currentUser.isNoComments
h3.activity-title
| 💬
| {{_ 'activities'}}
a.flex.js-toggle-show-activities(title="{{_ 'show-activities'}}")
span {{#if showActivities}}✅{{else}}⬜{{/if}}
span {{_ 'show-activities'}}
+activities(mode="board")
template(name="membersWidget")
unless currentUser.isCommentOnly
unless currentUser.isWorker
h3
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}")
| ⚙️
| {{_ 'boardMenuPopup-title'}}
hr
h3
| 👥
| {{_ 'members'}}
+basicTabs(tabs=tabs)
+tabContent(slug="people")
unless currentUser.isWorker
p.quiet
.board-widget-content
each currentBoard.activeMembers
+userAvatar(userId=this.userId showStatus=true)
if isSandstorm
if currentUser.isBoardMember
a.member.add-member.sandstorm-powerbox-request-identity(title="{{_ 'add-members'}}")
|
else if currentUser.isBoardAdmin
a.member.add-member.js-manage-board-members(title="{{_ 'add-members'}}")
|
.clearfix
if isInvited
hr
p
| ⚠️
| {{_ 'just-invited'}}
button.js-member-invite-accept.primary {{_ 'accept'}}
button.js-member-invite-decline {{_ 'decline'}}
+tabContent(slug='organizations')
unless currentUser.isWorker
p.quiet
if AtLeastOneOrgWasCreated
.board-widget.board-widget-members
.board-widget-content
+boardOrgGeneral
.clearfix
+tabContent(slug="teams")
unless currentUser.isWorker
p.quiet
if AtLeastOneTeamWasCreated
.board-widget.board-widget-members
.board-widget-content
+boardTeamGeneral
.clearfix
template(name="boardOrgGeneral")
table
tbody
tr
th
| {{_ 'add-organizations'}}
br
i.addOrganizationsLabel
| {{_ 'to-create-organizations-contact-admin'}}
br
i.addOrganizationsLabel
| {{_ 'add-organizations-label'}}
th
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-addOrg(title="{{_ 'add-members'}}")
|
.divaddfaplusminus
| {{_ 'add'}}
each org in currentBoard.activeOrgs
+boardOrgRow(orgId=org.orgId)
template(name="boardTeamGeneral")
table
tbody
tr
th
| {{_ 'add-teams'}}
br
i.addTeamsLabel
| {{_ 'to-create-teams-contact-admin'}}
br
i.addTeamsLabel
| {{_ 'add-teams-label'}}
th
if currentUser.isBoardAdmin
a.member.orgOrTeamMember.add-member.js-manage-board-addTeam(title="{{_ 'add-members'}}")
|
.divaddfaplusminus
| {{_ 'add'}}
each currentBoard.activeTeams
+boardTeamRow(teamId=this.teamId)
template(name="boardChangeColorPopup")
.board-backgrounds-list.clearfix
each backgroundColors
.board-background-select.js-select-background
span.background-box(class="board-color-{{this}}")
span {{this}}
if isSelected
| ✅
template(name="boardChangeBackgroundImagePopup")
form
label
| {{_ 'board-background-image-url'}}
input.js-board-background-image-url(type="text" value="{{backgroundImageURL}}" autofocus)
div.buttonsContainer
input.primary.wide(type="submit" value="{{_ 'save'}}")
br
br
br
br
br
hr
div
button.js-remove-background-image.negate.wide.card-details-red.right {{_ 'unset-color'}}
template(name="boardInfoOnMyBoardsPopup")
form.board-info-on-my-boards
h3 {{_ 'show-at-all-boards-page'}}
unless currentSetting.hideCardCounterList
div.check-div
a.flex.js-field-has-cardcounterlist(class="{{#if allowsCardCounterList}}is-checked{{/if}}")
span {{#if allowsCardCounterList}}✅{{else}}⬜{{/if}}
span
| 🚪
| {{_ 'show-card-counter-per-list'}}
unless currentSetting.hideBoardMemberList
div.check-div
a.flex.js-field-has-boardmemberlist(class="{{#if allowsBoardMemberList}}is-checked{{/if}}")
span {{#if allowsBoardMemberList}}✅{{else}}⬜{{/if}}
span
| ⏳
| {{_ 'show-board_members-avatar'}}
template(name="boardCardSettingsPopup")
form.board-card-settings
.card-settings-grid
.card-settings-column
h4 {{_ 'show-on-card'}}
.card-settings-column
h4 {{_ 'show-on-minicard'}}
.card-settings-column
h4 {{_ 'description'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-receiveddate(title="{{_ 'card-received'}}" class="{{#if allowsReceivedDate}}is-checked{{/if}}")
span {{#if allowsReceivedDate}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-receiveddate(title="{{_ 'card-received'}}" class="{{#if allowsReceivedDate}}is-checked{{/if}}")
span {{#if allowsReceivedDate}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 🚪
| {{_ 'card-received'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-startdate(title="{{_ 'card-start'}}" class="{{#if allowsStartDate}}is-checked{{/if}}")
span {{#if allowsStartDate}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-startdate(title="{{_ 'card-start'}}" class="{{#if allowsStartDate}}is-checked{{/if}}")
span {{#if allowsStartDate}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| ⏳
| {{_ 'card-start'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-duedate(title="{{_ 'card-due'}}" class="{{#if allowsDueDate}}is-checked{{/if}}")
span {{#if allowsDueDate}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-duedate(title="{{_ 'card-due'}}" class="{{#if allowsDueDate}}is-checked{{/if}}")
span {{#if allowsDueDate}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 🚪
| {{_ 'card-due'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-enddate(title="{{_ 'card-end'}}" class="{{#if allowsEndDate}}is-checked{{/if}}")
span {{#if allowsEndDate}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-enddate(title="{{_ 'card-end'}}" class="{{#if allowsEndDate}}is-checked{{/if}}")
span {{#if allowsEndDate}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| ⏰
| {{_ 'card-end'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-members(title="{{_ 'members'}}" class="{{#if allowsMembers}}is-checked{{/if}}")
span {{#if allowsMembers}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-members(title="{{_ 'members'}}" class="{{#if allowsMembers}}is-checked{{/if}}")
span {{#if allowsMembers}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 👥
| {{_ 'members'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-creator(title="{{_ 'creator'}}" class="{{#if allowsCreator}}is-checked{{/if}}")
span {{#if allowsCreator}}✅{{else}}⬜{{/if}}
.card-settings-column
span
.card-settings-column
span
| 👤
| {{_ 'creator'}}
.card-settings-row
.card-settings-column
span
.card-settings-column
a.flex.js-field-has-creator-on-minicard(title="{{_ 'creator-on-minicard'}}" class="{{#if allowsCreatorOnMinicard}}is-checked{{/if}}")
span {{#if allowsCreatorOnMinicard}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 👤
| {{_ 'creator-on-minicard'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-assignee(title="{{_ 'assignee'}}" class="{{#if allowsAssignee}}is-checked{{/if}}")
span {{#if allowsAssignee}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-assignee(title="{{_ 'assignee'}}" class="{{#if allowsAssignee}}is-checked{{/if}}")
span {{#if allowsAssignee}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 👤
| {{_ 'assignee'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-assigned-by(title="{{_ 'assigned-by'}}" class="{{#if allowsAssignedBy}}is-checked{{/if}}")
span {{#if allowsAssignedBy}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-assigned-by(title="{{_ 'assigned-by'}}" class="{{#if allowsAssignedBy}}is-checked{{/if}}")
span {{#if allowsAssignedBy}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 🛒
| {{_ 'assigned-by'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-requested-by(title="{{_ 'requested-by'}}" class="{{#if allowsRequestedBy}}is-checked{{/if}}")
span {{#if allowsRequestedBy}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-requested-by(title="{{_ 'requested-by'}}" class="{{#if allowsRequestedBy}}is-checked{{/if}}")
span {{#if allowsRequestedBy}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 👤➕
| {{_ 'requested-by'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-card-sorting-by-number(title="{{_ 'card-sorting-by-number'}}" class="{{#if allowsCardSortingByNumber}}is-checked{{/if}}")
span {{#if allowsCardSortingByNumber}}✅{{else}}⬜{{/if}}
.card-settings-column
span
.card-settings-column
span
| 🔢
| {{_ 'card-sorting-by-number'}}
.card-settings-row
.card-settings-column
span
.card-settings-column
a.flex.js-field-has-card-sorting-by-number-on-minicard(title="{{_ 'card-sorting-by-number-on-minicard'}}" class="{{#if allowsCardSortingByNumberOnMinicard}}is-checked{{/if}}")
span {{#if allowsCardSortingByNumberOnMinicard}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 🔢
| {{_ 'card-sorting-by-number-on-minicard'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-card-show-lists(title="{{_ 'card-show-lists'}}" class="{{#if allowsShowLists}}is-checked{{/if}}")
span {{#if allowsShowLists}}✅{{else}}⬜{{/if}}
.card-settings-column
span
.card-settings-column
span
| 📋
| {{_ 'card-show-lists'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-labels(title="{{_ 'labels'}}" class="{{#if allowsLabels}}is-checked{{/if}}")
span {{#if allowsLabels}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-labels(title="{{_ 'labels'}}" class="{{#if allowsLabels}}is-checked{{/if}}")
span {{#if allowsLabels}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 🏷️
| {{_ 'labels'}}
.card-settings-row
.card-settings-column
span
.card-settings-column
a.flex.js-field-has-card-show-lists-on-minicard(title="{{_ 'card-show-lists-on-minicard'}}" class="{{#if allowsShowListsOnMinicard}}is-checked{{/if}}")
span {{#if allowsShowListsOnMinicard}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 📋
| {{_ 'card-show-lists-on-minicard'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-card-number(title="{{_ 'card'}} {{_ 'number'}}" class="{{#if allowsCardNumber}}is-checked{{/if}}")
span {{#if allowsCardNumber}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-card-number(title="{{_ 'card'}} {{_ 'number'}}" class="{{#if allowsCardNumber}}is-checked{{/if}}")
span {{#if allowsCardNumber}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| #️⃣
| {{_ 'card'}}
| {{_ 'number'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-description-title(title="{{_ 'description'}} {{_ 'title'}}" class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
span {{#if allowsDescriptionTitle}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-description-title(title="{{_ 'description'}} {{_ 'title'}}" class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
span {{#if allowsDescriptionTitle}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 📝
| {{_ 'description'}}
| {{_ 'title'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-description-text(title="{{_ 'description'}} {{_ 'custom-field-text'}}" class="{{#if allowsDescriptionText}}is-checked{{/if}}")
span {{#if allowsDescriptionText}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-description-text(title="{{_ 'description'}} {{_ 'custom-field-text'}}" class="{{#if allowsDescriptionText}}is-checked{{/if}}")
span {{#if allowsDescriptionText}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 📝
| {{_ 'description'}}
| {{_ 'custom-field-text'}}
.card-settings-row
.card-settings-column
span
.card-settings-column
a.flex.js-field-has-description-text-on-minicard(title="{{_ 'description-on-minicard'}}" class="{{#if allowsDescriptionTextOnMinicard}}is-checked{{/if}}")
span {{#if allowsDescriptionTextOnMinicard}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 📝
| {{_ 'description-on-minicard'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-checklists(title="{{_ 'checklists'}}" class="{{#if allowsChecklists}}is-checked{{/if}}")
span {{#if allowsChecklists}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-checklists(title="{{_ 'checklists'}}" class="{{#if allowsChecklists}}is-checked{{/if}}")
span {{#if allowsChecklists}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| ✅
| {{_ 'checklists'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-subtasks(title="{{_ 'subtasks'}}" class="{{#if allowsSubtasks}}is-checked{{/if}}")
span {{#if allowsSubtasks}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-subtasks(title="{{_ 'subtasks'}}" class="{{#if allowsSubtasks}}is-checked{{/if}}")
span {{#if allowsSubtasks}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 🌐
| {{_ 'subtasks'}}
.card-settings-row
.card-settings-column
a.flex.js-field-has-attachments(title="{{_ 'attachments'}}" class="{{#if allowsAttachments}}is-checked{{/if}}")
span {{#if allowsAttachments}}✅{{else}}⬜{{/if}}
.card-settings-column
a.flex.js-field-has-attachments(title="{{_ 'attachments'}}" class="{{#if allowsAttachments}}is-checked{{/if}}")
span {{#if allowsAttachments}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 📎
| {{_ 'attachments'}}
.card-settings-row
.card-settings-column
span
.card-settings-column
a.flex.js-field-has-badge-attachment-on-minicard(title="{{_ 'badge-attachment-on-minicard'}}" class="{{#if allowsBadgeAttachmentOnMinicard}}is-checked{{/if}}")
span {{#if allowsBadgeAttachmentOnMinicard}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 📎
| {{_ 'badge-attachment-on-minicard'}}
.card-settings-row
.card-settings-column
span
.card-settings-column
a.flex.js-field-has-cover-attachment-on-minicard(title="{{_ 'cover-attachment-on-minicard'}}" class="{{#if allowsCoverAttachmentOnMinicard}}is-checked{{/if}}")
span {{#if allowsCoverAttachmentOnMinicard}}✅{{else}}⬜{{/if}}
.card-settings-column
span
| 📖
| 🖼️
| {{_ 'cover-attachment-on-minicard'}}
//div.check-div
// a.flex.js-field-has-comments(class="{{#if allowsComments}}is-checked{{/if}}")
// .materialCheckBox(class="{{#if allowsComments}}is-checked{{/if}}")
// span
// i.fa.fa-comment-o
// | {{_ 'comment'}}
//div.check-div
// a.flex.js-field-has-activities(class="{{#if allowsActivities}}is-checked{{/if}}")
// .materialCheckBox(class="{{#if allowsActivities}}is-checked{{/if}}")
// span
// i.fa.fa-history
// | {{_ 'activities'}}
template(name="boardSubtaskSettingsPopup")
form.board-subtask-settings
h3 {{_ 'show-parent-in-minicard'}}
a#prefix-with-full-path.flex.js-field-show-parent-in-minicard(title="{{_ 'prefix-with-full-path'}}" class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
span {{#if $eq presentParentTask 'prefix-with-full-path'}}✅{{else}}⬜{{/if}}
span {{_ 'prefix-with-full-path'}}
a#prefix-with-parent.flex.js-field-show-parent-in-minicard(title="{{_ 'prefix-with-parent'}}" class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
span {{#if $eq presentParentTask 'prefix-with-parent'}}✅{{else}}⬜{{/if}}
span {{_ 'prefix-with-parent'}}
a#subtext-with-full-path.flex.js-field-show-parent-in-minicard(title="{{_ 'subtext-with-full-path'}}" class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
span {{#if $eq presentParentTask 'subtext-with-full-path'}}✅{{else}}⬜{{/if}}
span {{_ 'subtext-with-full-path'}}
a#subtext-with-parent.flex.js-field-show-parent-in-minicard(title="{{_ 'subtext-with-parent'}}" class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
span {{#if $eq presentParentTask 'subtext-with-parent'}}✅{{else}}⬜{{/if}}
span {{_ 'subtext-with-parent'}}
a#no-parent.flex.js-field-show-parent-in-minicard(title="{{_ 'no-parent'}}" class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
span {{#if $eq presentParentTask 'no-parent'}}✅{{else}}⬜{{/if}}
span {{_ 'no-parent'}}
div
hr
div.check-div
a.flex.js-field-has-subtasks(title="{{_ 'show-subtasks-field'}}" class="{{#if allowsSubtasks}}is-checked{{/if}}")
span {{#if allowsSubtasks}}✅{{else}}⬜{{/if}}
span {{_ 'show-subtasks-field'}}
label
| {{_ 'deposit-subtasks-board'}}
select.js-field-deposit-board(disabled="{{#unless allowsSubtasks}}disabled{{/unless}}")
each boards
if isBoardSelected
option(value=_id selected="selected") {{title}}
else
option(value=_id) {{title}}
if isNullBoardSelected
option(value='null' selected="selected") {{_ 'custom-field-dropdown-none'}}
else
option(value='null') {{_ 'custom-field-dropdown-none'}}
div
hr
label
| {{_ 'deposit-subtasks-list'}}
select.js-field-deposit-list(disabled="{{#unless hasLists}}disabled{{/unless}}")
each lists
if isListSelected
option(value=_id selected="selected") {{title}}
else
option(value=_id) {{title}}
template(name="chooseBoardSource")
ul.pop-over-list
li
a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
li
a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
li
a(href="{{pathFor '/import/csv'}}") {{_ 'from-csv'}}
template(name="archiveBoardPopup")
p {{_ 'close-board-pop'}}
button.js-confirm.negate.full(type="submit")
| 📦
| {{_ 'archive'}}
template(name="deleteDuplicateListsPopup")
p {{_ 'delete-duplicate-lists-confirm'}}
button.js-confirm.negate.full(type="submit")
| 🗑️
| {{_ 'delete'}}
template(name="outgoingWebhooksPopup")
each integrations
form.integration-form
a.flex
span {{#unless enabled}}✅{{else}}⬜{{/unless}}
span {{_ 'disable-webhook'}}
input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title" value=title)
input.js-outgoing-webhooks-url(type="text" name="url" value=url)
input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" value=token name="token")
select.js-outgoing-webhooks-type(name="type")
each _type in types
if($eq _type this.type)
option(value=_type selected="selected") {{_ _type}}
else
option(value=_type) {{_ _type}}
input(type="hidden" value=this.type name="_type")
input(type="hidden" value=_id name="id")
input.primary.wide(type="submit" value="{{_ 'save'}}")
form.integration-form
input.js-outgoing-webhooks-title(placeholder="{{_ 'webhook-title'}}" type="text" name="title")
input.js-outgoing-webhooks-url(placeholder="{{_ 'URL' }}" type="text" name="url")
input.js-outgoing-webhooks-token(placeholder="{{_ 'webhook-token' }}" type="text" name="token")
select.js-outgoing-webhooks-type(name="type")
each _type in types
option(value=_type) {{_ _type}}
input.primary.wide(type="submit" value="{{_ 'create'}}")
template(name="boardMenuPopup")
ul.pop-over-list
if currentUser.isBoardAdmin
li
a.js-open-rules-view(title="{{_ 'rules'}}")
| ✨
| {{_ 'rules'}}
if currentUser.isBoardAdmin
li
a.js-custom-fields
| 📝
| {{_ 'custom-fields'}}
li
a.js-open-archives
| 📦
| {{_ 'archived-items'}}
if currentUser.isBoardAdmin
li
a.js-open-migrations
| 🔧
| {{_ 'migrations'}}
li
a.js-change-board-color
| 🎨
| {{_ 'board-change-color'}}
li
a.js-change-background-image
| 🖼️
| {{_ 'board-change-background-image'}}
//Bug Board icons random dance https://github.com/wekan/wekan/issues/4214
//if currentUser.isBoardAdmin
// unless currentSetting.hideBoardMemberList
// unless currentSetting.hideCardCounterList
// li
// a.js-board-info-on-my-boards(title="{{_ 'board-info-on-my-boards'}}")
// i.fa.fa-id-card-o
// | {{_ 'board-info-on-my-boards'}}
hr
ul.pop-over-list
if withApi
li
a.js-export-board
| 📤
| {{_ 'export-board'}}
if currentUser.isBoardAdmin
li
a.js-outgoing-webhooks
| 🌐
| {{_ 'outgoing-webhooks'}}
li
a.js-card-settings
| 🃏
| {{_ 'card-settings'}}
li
a.js-subtask-settings
| 🌐
| {{_ 'subtask-settings'}}
unless currentBoard.isTemplatesBoard
if currentUser.isBoardAdmin
hr
ul.pop-over-list
li
a.js-delete-duplicate-lists
| 🗑️
| {{_ 'delete-duplicate-lists'}}
li
a.js-archive-board
| ➡️📦
| {{_ 'archive-board'}}
template(name="exportBoard")
ul.pop-over-list
li
a.download-json-link(href="{{exportUrl}}", download="{{exportJsonFilename}}")
| 📤
| {{_ 'export-board-json'}}
li
a(href="{{exportUrlExcel}}", download="{{exportFilenameExcel}}")
| 📤
| {{_ 'export-board-excel'}}
li
a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}")
| 📤
| {{_ 'export-board-csv'}} ,
li
a(href="{{exportScsvUrl}}", download="{{exportCsvFilename}}")
| 📤
| {{_ 'export-board-csv'}} ;
li
a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}")
| 📤
| {{_ 'export-board-tsv'}}
li
a.html-export-board
| 📦
| {{_ 'export-board-html'}}
template(name="labelsWidget")
.board-widget.board-widget-labels
h3
| 🏷️
| {{_ 'labels'}}
.board-widget-content
each currentBoard.labels
a.card-label(class="card-label-{{color}}"
class="{{#if currentUser.isNotCommentOnly}}{{#if currentUser.isNotWorker}}js-label{{/if}}{{/if}}")
span.card-label-name
+viewer
= name
if currentUser.isBoardAdmin
a.card-label.add-label.js-add-label(title="{{_ 'label-create'}}")
|
template(name="memberPopup")
.board-member-menu
.miniprofile-header
+userAvatar(userId=user._id showEdit=true)
.info
h3
.js-profile= user.profile.fullname
p.quiet @#{user.username}
if isInvited
p
| ⚠️
| {{_ 'not-accepted-yet'}}
ul.pop-over-list
li
a.js-filter-member {{_ 'filter-cards'}}
if currentUser.isBoardAdmin
li
a.js-change-role
| {{_ 'change-permissions'}}
span.quiet (#{memberType})
unless currentUser.isWorker
li
if $eq currentUser._id userId
a.js-leave-member {{_ 'leave-board'}}
else if currentUser.isBoardAdmin
a.js-remove-member {{_ 'remove-from-board'}}
template(name="removeMemberPopup")
p {{_ 'remove-member-pop' name=user.profile.fullname username=user.username boardTitle=board.title}}
button.js-confirm.negate.full(type="submit") {{_ 'remove-member'}}
template(name="leaveBoardPopup")
p {{_ 'leave-board-pop' boardTitle=board.title}}
button.js-confirm.negate.full(type="submit") {{_ 'leave-board'}}
template(name="addBoardOrgPopup")
select.js-boardOrgs#jsBoardOrgs
option(value="-1") {{_ 'organizations'}} :
each value in orgsDatas
option(value="{{value._id}}") {{value.orgDisplayName}}
template(name="removeBoardOrgPopup")
form
input.hide#hideOrgId(type="text" value=org._id)
label
| {{_ 'remove-organization-from-board'}}
br
hr
div.buttonsContainer
input.primary.wide.leaveBoardBtn#leaveBoardBtn(type="submit" value="{{_ 'confirm-btn'}}")
input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardBtn(type="submit" value="{{_ 'cancel'}}")
template(name="addBoardTeamPopup")
select.js-boardTeams#jsBoardTeams
option(value="-1") {{_ 'teams'}} :
each value in teamsDatas
option(value="{{value._id}}") {{_ value.teamDisplayName}}
template(name="removeBoardTeamPopup")
form
input.hide#hideTeamId(type="text" value=team._id)
label
| {{_ 'remove-team-from-table'}}
br
hr
div.buttonsContainer
input.primary.wide.leaveBoardBtn#leaveBoardTeamBtn(type="submit" value="{{_ 'confirm-btn'}}")
input.primary.wide.cancelLeaveBoardBtn#cancelLeaveBoardTeamBtn(type="submit" value="{{_ 'cancel'}}")
template(name="addMemberPopup")
.js-search-member
input.js-search-member-input(type="text" placeholder="{{_ 'email-address'}}")
if loading.get
+spinner
else if error.get
.warning {{_ error.get}}
else
ul.pop-over-list
each searchResults
li.item.js-member-item(class="{{#if isBoardMember}}disabled{{/if}}")
a.name.js-select-member(title="{{profile.fullname}} ({{username}})")
+userAvatar(userId=_id)
span.full-name
= profile.fullname
| (<span class="username">{{username}}</span>)
if isBoardMember
.quiet ({{_ 'joined'}})
if searching.get
+spinner
if noResults.get
.manage-member-section
p.quiet {{_ 'no-results'}}
button.js-email-invite.primary.full {{_ 'email-invite'}}
template(name="addMemberPopupTest")
.js-search-member
input.js-search-member-input(type="text" placeholder="{{_ 'email-address'}}")
ul.pop-over-list
each searchResults
li.item.js-member-item
a.name.js-select-member(title="{{profile.fullname}} ({{username}})")
+userAvatar(userId=_id)
span.full-name
= profile.fullname
| (<span class="username">{{username}}</span>)
button.js-email-invite.primary.full {{_ 'email-invite'}}
template(name="changePermissionsPopup")
ul.pop-over-list
li
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-admin{{/if}}")
| {{_ 'admin'}}
if isAdmin
| ✅
span.sub-name {{_ 'admin-desc'}}
li
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-normal{{/if}}")
| {{_ 'normal'}}
if isNormal
| ✅
span.sub-name {{_ 'normal-desc'}}
li
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-no-comments{{/if}}")
| {{_ 'no-comments'}}
if isNoComments
| ✅
span.sub-name {{_ 'no-comments-desc'}}
li
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-comment-only{{/if}}")
| {{_ 'comment-only'}}
if isCommentOnly
| ✅
span.sub-name {{_ 'comment-only-desc'}}
li
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-worker{{/if}}")
| {{_ 'worker'}}
if isWorker
| ✅
span.sub-name {{_ 'worker-desc'}}
if isLastAdmin
hr
p.quiet.bottom {{_ 'last-admin-desc'}}