mirror of https://github.com/wekan/wekan
The Open Source kanban (built with Meteor). Keep variable/table/field names camelCase. For translations, only add Pull Request changes to wekan/i18n/en.i18n.json , other translations are done at https://transifex.com/wekan/wekan only.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
385 lines
13 KiB
385 lines
13 KiB
template(name="sidebar")
|
|
.board-sidebar.sidebar(class="{{#if isOpen}}is-open{{/if}}")
|
|
//a.sidebar-tongue.js-toggle-sidebar(
|
|
// class="{{#if isTongueHidden}}is-hidden{{/if}}",
|
|
// title="{{showTongueTitle}}")
|
|
// i.fa.fa-navicon
|
|
.sidebar-shadow
|
|
.sidebar-content.sidebar-shortcuts
|
|
a.board-header-btn.js-shortcuts
|
|
i.fa.fa-keyboard-o
|
|
span {{_ 'keyboard-shortcuts' }}
|
|
.sidebar-content.js-board-sidebar-content.js-perfect-scrollbar
|
|
//a.hide-btn.js-hide-sidebar
|
|
// i.fa.fa-navicon
|
|
unless isDefaultView
|
|
h2
|
|
a.fa.fa-chevron-left.js-back-home
|
|
= getViewTitle
|
|
+Template.dynamic(template=getViewTemplate)
|
|
|
|
template(name='homeSidebar')
|
|
+membersWidget
|
|
hr
|
|
+labelsWidget
|
|
ul#cards.label-text-hidden
|
|
a.flex.js-toggle-minicard-label-text
|
|
span {{_ 'hide-minicard-label-text'}}
|
|
b
|
|
.materialCheckBox(class="{{#if hiddenMinicardLabelText}}is-checked{{/if}}")
|
|
hr
|
|
unless currentUser.isNoComments
|
|
h3
|
|
i.fa.fa-comments-o
|
|
| {{_ 'activities'}}
|
|
+activities(mode="board")
|
|
|
|
template(name="membersWidget")
|
|
.board-widget.board-widget-members
|
|
h3
|
|
i.fa.fa-users
|
|
| {{_ 'members'}}
|
|
unless currentUser.isCommentOnly
|
|
unless currentUser.isWorker
|
|
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}").right
|
|
i.board-header-btn-icon.fa.fa-cog
|
|
|
|
.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
|
|
i.fa.fa-plus
|
|
else if currentUser.isBoardAdmin
|
|
a.member.add-member.js-manage-board-members
|
|
i.fa.fa-plus
|
|
.clearfix
|
|
if isInvited
|
|
hr
|
|
p
|
|
i.fa.fa-exclamation-circle
|
|
| {{_ 'just-invited'}}
|
|
button.js-member-invite-accept.primary {{_ 'accept'}}
|
|
button.js-member-invite-decline {{_ 'decline'}}
|
|
|
|
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
|
|
i.fa.fa-check
|
|
|
|
template(name="boardDateSettingsPopup")
|
|
form.board-Date-settings
|
|
div.check-div
|
|
a.flex.js-field-has-receiveddate(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
|
|
span {{_ 'show-receiveddate-field'}}
|
|
div.check-div
|
|
a.flex.js-field-has-startdate(class="{{#if allowsStartDate}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if allowsStartDate}}is-checked{{/if}}")
|
|
span {{_ 'show-startdate-field'}}
|
|
div.check-div
|
|
a.flex.js-field-has-enddate(class="{{#if allowsEndDate}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if allowsEndDate}}is-checked{{/if}}")
|
|
span {{_ 'show-enddate-field'}}
|
|
div.check-div
|
|
a.flex.js-field-has-duedate(class="{{#if allowsDueDate}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if allowsDueDate}}is-checked{{/if}}")
|
|
span {{_ 'show-duedate-field'}}
|
|
|
|
template(name="boardSubtaskSettingsPopup")
|
|
form.board-subtask-settings
|
|
h3 {{_ 'show-parent-in-minicard'}}
|
|
a#prefix-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-full-path'}}is-checked{{/if}}")
|
|
span {{_ 'prefix-with-full-path'}}
|
|
a#prefix-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if $eq presentParentTask 'prefix-with-parent'}}is-checked{{/if}}")
|
|
span {{_ 'prefix-with-parent'}}
|
|
a#subtext-with-full-path.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-full-path'}}is-checked{{/if}}")
|
|
span {{_ 'subtext-with-full-path'}}
|
|
a#subtext-with-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if $eq presentParentTask 'subtext-with-parent'}}is-checked{{/if}}")
|
|
span {{_ 'subtext-with-parent'}}
|
|
a#no-parent.flex.js-field-show-parent-in-minicard(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if $eq presentParentTask 'no-parent'}}is-checked{{/if}}")
|
|
span {{_ 'no-parent'}}
|
|
div
|
|
hr
|
|
|
|
div.check-div
|
|
a.flex.js-field-has-subtasks(class="{{#if allowsSubtasks}}is-checked{{/if}}")
|
|
.materialCheckBox(class="{{#if allowsSubtasks}}is-checked{{/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'}}
|
|
|
|
template(name="archiveBoardPopup")
|
|
p {{_ 'close-board-pop'}}
|
|
button.js-confirm.negate.full(type="submit")
|
|
i.fa.fa-archive
|
|
| {{_ 'archive'}}
|
|
|
|
template(name="outgoingWebhooksPopup")
|
|
each integrations
|
|
form.integration-form
|
|
a.flex
|
|
span {{_ 'disable-webhook'}}
|
|
b
|
|
.materialCheckBox(class="{{#unless enabled}}is-checked{{/unless}}")
|
|
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 autofocus)
|
|
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" autofocus)
|
|
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
|
|
li: a.js-custom-fields {{_ 'custom-fields'}}
|
|
li
|
|
a.js-open-archives
|
|
i.fa.fa-archive
|
|
| {{_ 'archived-items'}}
|
|
if currentUser.isBoardAdmin
|
|
li
|
|
a.js-change-board-color
|
|
i.fa.fa-paint-brush
|
|
| {{_ 'board-change-color'}}
|
|
|
|
//-
|
|
XXX Language should be handled by sandstorm, but for now display a
|
|
language selection link in the board menu. This link is normally present
|
|
in the header bar that is not displayed on sandstorm.
|
|
if isSandstorm
|
|
li
|
|
a.js-change-language
|
|
i.fa.fa-flag
|
|
| {{_ 'language'}}
|
|
unless isSandstorm
|
|
if currentUser.isBoardAdmin
|
|
hr
|
|
ul.pop-over-list
|
|
li
|
|
a(href="{{exportUrl}}", download="{{exportFilename}}")
|
|
i.fa.fa-share-alt
|
|
| {{_ 'export-board'}}
|
|
li
|
|
a.js-outgoing-webhooks
|
|
i.fa.fa-globe
|
|
| {{_ 'outgoing-webhooks'}}
|
|
li
|
|
a.js-subtask-settings
|
|
i.fa.fa-sitemap
|
|
| {{_ 'subtask-settings'}}
|
|
li
|
|
a.js-Date-settings
|
|
i.fa.fa-calendar
|
|
| {{_ 'Date-settings'}}
|
|
unless currentBoard.isTemplatesBoard
|
|
hr
|
|
ul.pop-over-list
|
|
li
|
|
a.js-archive-board
|
|
i.fa.fa-arrow-right
|
|
i.fa.fa-archive
|
|
| {{_ 'archive-board'}}
|
|
|
|
if isSandstorm
|
|
hr
|
|
ul.pop-over-list
|
|
li
|
|
a(href="{{exportUrl}}", download="{{exportFilename}}")
|
|
i.fa.fa-share-alt
|
|
i.fa.fa-sign-out
|
|
| {{_ 'export-board'}}
|
|
li
|
|
a.js-import-board
|
|
i.fa.fa-share-alt
|
|
i.fa.fa-sign-in
|
|
| {{_ 'import-board-c'}}
|
|
li
|
|
a.js-archive-board
|
|
i.fa.fa-arrow-right
|
|
i.fa.fa-archive
|
|
| {{_ 'archive-board'}}
|
|
li
|
|
a.js-outgoing-webhooks
|
|
i.fa.fa-globe
|
|
| {{_ 'outgoing-webhooks'}}
|
|
hr
|
|
ul.pop-over-list
|
|
li
|
|
a.js-subtask-settings
|
|
i.fa.fa-sitemap
|
|
| {{_ 'subtask-settings'}}
|
|
hr
|
|
ul.pop-over-list
|
|
li
|
|
a.js-Date-settings
|
|
i.fa.fa-calendar
|
|
| {{_ 'Date-settings'}}
|
|
|
|
template(name="labelsWidget")
|
|
.board-widget.board-widget-labels
|
|
h3
|
|
i.fa.fa-tags
|
|
| {{_ '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
|
|
i.fa.fa-plus
|
|
|
|
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
|
|
i.fa.fa-exclamation-circle
|
|
| {{_ '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="addMemberPopup")
|
|
.js-search-member
|
|
+esInput(index="users")
|
|
|
|
if loading.get
|
|
+spinner
|
|
else if error.get
|
|
.warning {{_ error.get}}
|
|
else
|
|
ul.pop-over-list
|
|
+esEach(index="users")
|
|
li.item.js-member-item(class="{{#if isBoardMember}}disabled{{/if}}")
|
|
a.name.js-select-member(title="{{profile.fullname}} ({{username}})")
|
|
+userAvatar(userId=_id esSearch=true)
|
|
span.full-name
|
|
= profile.fullname
|
|
| (<span class="username">{{username}}</span>)
|
|
if isBoardMember
|
|
.quiet ({{_ 'joined'}})
|
|
|
|
+ifEsIsSearching(index='users')
|
|
+spinner
|
|
|
|
+ifEsHasNoResults(index="users")
|
|
.manage-member-section
|
|
p.quiet {{_ 'no-results'}}
|
|
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
|
|
i.fa.fa-check
|
|
span.sub-name {{_ 'admin-desc'}}
|
|
li
|
|
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-normal{{/if}}")
|
|
| {{_ 'normal'}}
|
|
if isNormal
|
|
i.fa.fa-check
|
|
span.sub-name {{_ 'normal-desc'}}
|
|
li
|
|
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-no-comments{{/if}}")
|
|
| {{_ 'no-comments'}}
|
|
if isNoComments
|
|
i.fa.fa-check
|
|
span.sub-name {{_ 'no-comments-desc'}}
|
|
li
|
|
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-comment-only{{/if}}")
|
|
| {{_ 'comment-only'}}
|
|
if isCommentOnly
|
|
i.fa.fa-check
|
|
span.sub-name {{_ 'comment-only-desc'}}
|
|
li
|
|
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-worker{{/if}}")
|
|
| {{_ 'worker'}}
|
|
if isWorker
|
|
i.fa.fa-check
|
|
span.sub-name {{_ 'worker-desc'}}
|
|
if isLastAdmin
|
|
hr
|
|
p.quiet.bottom {{_ 'last-admin-desc'}}
|
|
|