Compare commits

...
52 Commits
Author SHA1 Message Date
Lauri Ojansivu 7bfbcf7e03 v5.48 2021-08-11 23:48:02 +03:00
Lauri Ojansivu 91cad7b49e Updated to Node.js v12.22.5. Thanks to Node.js developers. 2021-08-11 23:40:56 +03:00
Lauri Ojansivu 26f1defc56 Updated ChangeLog. 2021-08-11 23:16:27 +03:00
Lauri Ojansivu 9a03654062 Fixed: Can't save user without Initials.
Thanks to devagleo and xet7 !

Fixes #3928
2021-08-11 23:14:18 +03:00
Lauri Ojansivu 2576ef75bd Updated dependencies.
Thanks to developers of dependencies!
2021-08-11 23:11:50 +03:00
Lauri Ojansivu 752b45af42 Updated ChangeLog. 2021-08-11 23:11:34 +03:00
Lauri Ojansivu 23c70ac252 Added new translation: [French (Switzerland) (fr_CH).
Thanks to translators!
2021-08-11 23:10:20 +03:00
Lauri Ojansivu ad4de9e85d Updated dependencies. 2021-08-11 22:10:59 +03:00
Lauri Ojansivu 855d60f28e Merge branch 'master' of github.com:wekan/wekan 2021-08-11 22:07:23 +03:00
Lauri Ojansivu 781a94c05f Updated ChangeLog. 2021-08-11 22:06:56 +03:00
Lauri Ojansivu b3cc01b041 Updated dependencies.
Thanks to developers of dependencies!
2021-08-11 22:05:17 +03:00
Lauri Ojansivu e23ced47ae Merge pull request #3944 from wekan/dependabot/npm_and_yarn/jszip-3.7.0
Bump jszip from 3.6.0 to 3.7.0
2021-08-11 21:33:39 +03:00
dependabot[bot] f406b51a5f Bump jszip from 3.6.0 to 3.7.0
Bumps [jszip](https://github.com/Stuk/jszip) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/Stuk/jszip/releases)
- [Changelog](https://github.com/Stuk/jszip/blob/master/CHANGES.md)
- [Commits](https://github.com/Stuk/jszip/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: jszip
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-11 18:32:04 +00:00
Lauri Ojansivu c81cb786ed Updated version. 2021-08-11 21:28:18 +03:00
Lauri Ojansivu 846f1244c7 Updated ChangeLog. 2021-08-11 21:04:45 +03:00
Lauri Ojansivu 3ea723329a Merge pull request #3942 from syndimann/feature/searchable-members-in-card-popup
Feature: Searchfields for members and assignees card popups
2021-08-11 21:02:06 +03:00
Kai Lehmann 698c9ed1ea adds searchfields to members and assignees popup 2021-08-10 21:20:16 +02:00
Lauri Ojansivu 63044ac13a v5.47 2021-08-05 00:49:00 +03:00
Lauri Ojansivu 68d9de8946 Updated dependencies. 2021-08-05 00:42:50 +03:00
Lauri Ojansivu 92a7717e50 v5.46 2021-08-05 00:33:22 +03:00
Lauri Ojansivu d5c0a5d377 Updated dependencies. 2021-08-05 00:26:54 +03:00
Lauri Ojansivu c0b7fb0b84 v5.45 2021-08-05 00:24:29 +03:00
Lauri Ojansivu 9b4e556837 Updated ChangeLog. 2021-08-05 00:13:08 +03:00
Lauri Ojansivu 1aec0b5f0d Merge pull request #3939 from syndimann/bugfix/3866-mentions-in-maximized-card
Fix: Show missing user mentions popover when posting comments in maximized card layout
2021-08-05 00:10:56 +03:00
Lauri Ojansivu c5d4e06ea3 Updated ChangeLog. 2021-08-05 00:10:14 +03:00
Lauri Ojansivu 97bf907448 Merge pull request #3937 from syndimann/feature/card-and-board-mentions
Feature: Special handles to notify board or card members in a comment
2021-08-05 00:08:43 +03:00
Kai Lehmann 7ef2a2a9f4 fixes missing user mentions when in maximized card 2021-08-04 22:22:59 +02:00
Kai Lehmann 547d82fe57 adds handles to notifiy board or card members 2021-08-03 23:35:12 +02:00
Lauri Ojansivu 977821d293 v5.44 2021-08-03 17:42:26 +03:00
Lauri Ojansivu f4e5306181 Updated ChangeLog. 2021-08-03 16:14:15 +03:00
Lauri Ojansivu f01b440fb7 Merge pull request #3936 from syndimann/feature/boardwise-card-numbers
Fix: Consecutive Card numbering when a card is moved to another board or copied
2021-08-03 16:12:28 +03:00
Kai Lehmann 2fd741bf54 fix cardnumber assignment for moved or copied card 2021-08-03 14:03:05 +02:00
Kai Lehmann e8522c323f fixes retrieval of next board cardnumber 2021-08-03 14:02:22 +02:00
Lauri Ojansivu def2ec46e0 Updated ChangeLog. 2021-08-03 06:15:40 +03:00
Lauri Ojansivu 4e17d5a10f Wekan v5.43 for helm.
Thanks to xet7 !
2021-08-03 06:13:43 +03:00
Lauri Ojansivu dcba6909e2 v5.43 2021-08-03 05:56:55 +03:00
Lauri Ojansivu fc74324d1a Updated ChangeLog. 2021-08-03 05:51:56 +03:00
Lauri Ojansivu 8bb33c53f0 Merge pull request #3935 from syndimann/feature/boardwise-card-numbers
Feature: Consecutive boardwise card numbering
2021-08-03 05:44:39 +03:00
Kai Lehmann 236b6c3552 Fixes card-number migration
and further optimizes getNextCardNumber in board model
2021-08-02 22:41:46 +02:00
Kai Lehmann 28e9a6ac33 show cardNumber in minicard and cardDetails 2021-08-02 21:44:37 +02:00
Kai Lehmann f91cc25b11 assign next cardNumber to newly created card 2021-08-02 21:44:19 +02:00
Kai Lehmann 6fd45ce74b adds card number allowance to card settings 2021-08-02 21:41:58 +02:00
Kai Lehmann b57eae14d4 add cardNumber handling to card and board model 2021-08-02 21:41:30 +02:00
Lauri Ojansivu 12db3714f9 Updated ChangeLog. 2021-08-01 17:15:56 +03:00
Lauri Ojansivu 7a1f42fa4e v5.42 for helm 2021-08-01 17:10:10 +03:00
Lauri Ojansivu 74064324cf Merge pull request #3933 from varac/update_helmchart
Update helmchart, pin image version
2021-08-01 17:08:13 +03:00
Varac f3baa32d6c Update Chart apiVersion, pin image version
This makes this Chart compatible with [flux](https://fluxcd.io)
[helm-controller](https://fluxcd.io/docs/components/helm), which
requires v2 charts.
2021-08-01 15:54:17 +02:00
Lauri Ojansivu 33eed50290 v5.42 2021-08-01 15:46:03 +03:00
Lauri Ojansivu 11d9d1c889 Updated translations. 2021-08-01 15:41:57 +03:00
Lauri Ojansivu 5a7860ac8e Updated ChangeLog. 2021-08-01 15:31:58 +03:00
Lauri Ojansivu b13f691389 Updated to Node.js v12.22.4. Thanks to Node.js developers. 2021-08-01 15:30:08 +03:00
Varac d70e876388 Ignore downloaded chart dependencies 2021-07-27 22:06:26 +02:00
46 changed files with 2026 additions and 400 deletions

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
ENV \
DEBUG=false \
NODE_VERSION=v12.22.3 \
NODE_VERSION=v12.22.5 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
+1 -1
View File
@@ -81,7 +81,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.22.3
node-engine: 12.22.5
node-packages:
- node-gyp
- node-pre-gyp
+1 -1
View File
@@ -83,7 +83,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.22.3
node-engine: 12.22.5
node-packages:
- node-gyp
- node-pre-gyp
+4
View File
@@ -34,3 +34,7 @@ ehthumbs.db
.devcontainer/docker-compose.extend.yml
.devcontainer/volumes*/
.coverage
# Helm chart
# Chart dependencies
/helm/wekan/**/*.tgz
+1 -1
View File
@@ -3,7 +3,7 @@ sudo: required
env:
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
TRAVIS_NODE_VERSION: 12.22.3
TRAVIS_NODE_VERSION: 12.22.5
TRAVIS_NPM_VERSION: latest
before_install:
+1 -1
View File
@@ -39,7 +39,7 @@ host = https://www.transifex.com
# tap:i18n requires us to use `-` separator in the language identifiers whereas
# Transifex uses a `_` separator, without an option to customize it on one side
# or the other, so we need to do a Manual mapping.
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_IT:en-IT, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_IT:en-IT, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, fr_CH:fr-CH, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
[wekan.application]
file_filter = i18n/<lang>.i18n.json
+103
View File
@@ -3,6 +3,109 @@
Note: With Docker, please don't use latest tag. Only use release tags.
See https://github.com/wekan/wekan/issues/3874
# v5.48 2021-08-11 Wekan release
This release adds the following CRITICAL SECURITY UPDATES:
- [Updated to Node.js v12.22.5](https://github.com/wekan/wekan/commit/91cad7b49e25cecdf417321dadcdd9ea5cd8b020).
Thanks to Node.js developers.
- Also jszip update in some of included update commits.
and adds the following new features:
- [Searchfields for members and assignees card popups](https://github.com/wekan/wekan/pull/3942).
Thanks to syndimann.
and adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/b3cc01b04167bd67dde02c6c899baf8917ae09c1).
Thanks to developers of dependencies.
and adds the following new translations:
- [French (Switzerland) (fr_CH)](https://github.com/wekan/wekan/commit/23c70ac252494b464cd2a268d7e680370775ddc4).
Thanks to translators.
and fixes the following bugs:
- [Fixed: Can't save user without Initials](https://github.com/wekan/wekan/commit/9a03654062f9c8ac7aac257f11b386a054cd39e7).
Thanks to devagleo and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.47 2021-08-05 Wekan release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/68d9de89466611521db7d942dcf8daf58ba15a3e).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.46 2021-08-05 Wekan release
This release adds the following updates:
- [Updated dependencies](https://github.com/wekan/wekan/commit/d5c0a5d377d31bedadf3730756406355a17a563a).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.45 2021-08-05 Wekan release
This release adds the following new features:
- [Special handles to notify board or card members in a comment](https://github.com/wekan/wekan/pull/3937).
Thanks to syndimann.
and fixes the following bugs:
- [Fix: Show missing user mentions popover when posting comments in maximized card layout](https://github.com/wekan/wekan/pull/3939).
Thanks to syndimann.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.44 2021-08-03 Wekan release
This release adds the following updates:
- [Wekan v5.43](https://github.com/wekan/wekan/commit/4e17d5a10f95fcea420c794ed8b30ea18dc2a725) and v5.44 for helm.
Thanks to xet7.
and fixes the following bugs:
- [Fix: Consecutive Card numbering when a card is moved to another board or copied](https://github.com/wekan/wekan/pull/3936).
Thanks to syndimann.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.43 2021-08-03 Wekan release
This release adds the following new features:
- [Consecutive boardwise card numbering](https://github.com/wekan/wekan/pull/3935).
Thanks to syndimann.
and adds the following updates:
- [Update Helm Chart apiVersion, pin image version](https://github.com/wekan/wekan/pulls/3933).
This makes this Chart compatible with [flux](https://fluxcd.io)
[helm-controller](https://fluxcd.io/docs/components/helm), which requires v2 charts.
Thanks to varac.
- [Wekan v5.42 for helm](https://github.com/wekan/wekan/commit/7a1f42fa4e153ff4a0fb481ca5a363ac62033b7f).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.42 2021-08-01 Wekan release
This release adds the following CRITICAL SECURITY UPDATES:
- [Updated to Node.js v12.22.4](https://github.com/wekan/wekan/commit/b13f6913896f787e1cae485381d98345d9f8b830).
Thanks to Node.js developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.41 2021-07-26 Wekan release
This release fixes the following bugs:
+1 -1
View File
@@ -12,7 +12,7 @@ ARG DEBIAN_FRONTEND=noninteractive
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
DEBUG=false \
NODE_VERSION=v12.22.3 \
NODE_VERSION=v12.22.5 \
METEOR_RELEASE=1.10.2 \
USE_EDGE=false \
METEOR_EDGE=1.5-beta.17 \
+2 -2
View File
@@ -4,7 +4,7 @@ FROM amd64/alpine:3.7 AS builder
ENV QEMU_VERSION=v4.2.0-6 \
QEMU_ARCHITECTURE=aarch64 \
NODE_ARCHITECTURE=linux-arm64 \
NODE_VERSION=v12.22.3 \
NODE_VERSION=v12.22.5 \
WEKAN_VERSION=latest \
WEKAN_ARCHITECTURE=arm64
@@ -40,7 +40,7 @@ LABEL maintainer="wekan"
# Set the environment variables (defaults where required)
ENV QEMU_ARCHITECTURE=aarch64 \
NODE_ARCHITECTURE=linux-arm64 \
NODE_VERSION=v12.22.3 \
NODE_VERSION=v12.22.5 \
NODE_ENV=production \
NPM_VERSION=latest \
WITH_API=true \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v5.41.0"
appVersion: "v5.48.0"
files:
userUploads:
- README.md
+7 -2
View File
@@ -25,6 +25,9 @@ template(name="cardDetails")
h2.card-details-title.js-card-title(
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
+viewer
if currentBoard.allowsCardNumber
span.card-number
| ##{getCardNumber}
= getTitle
if isWatching
i.card-details-watch.fa.fa-eye
@@ -705,8 +708,9 @@ template(name="boardsAndLists")
button.primary.confirm.js-done {{_ 'done'}}
template(name="cardMembersPopup")
input.card-members-filter(type="text" placeholder="Search...")
ul.pop-over-list.js-card-member-list
each board.activeMembers
each members
li.item(class="{{#if isCardMember}}active{{/if}}")
a.name.js-select-member(href="#")
+userAvatar(userId=user._id)
@@ -717,9 +721,10 @@ template(name="cardMembersPopup")
i.fa.fa-check
template(name="cardAssigneesPopup")
input.card-assignees-filter(type="text" placeholder="Search...")
unless currentUser.isWorker
ul.pop-over-list.js-card-assignee-list
each board.activeMembers
each members
li.item(class="{{#if isCardAssignee}}active{{/if}}")
a.name.js-select-assignee(href="#")
+userAvatar(userId=user._id)
+52 -6
View File
@@ -180,7 +180,7 @@ BlazeComponent.extendComponent({
integration,
'CardSelected',
params,
() => {},
() => { },
);
});
}
@@ -541,8 +541,8 @@ BlazeComponent.extendComponent({
}).register('exportCardPopup');
// only allow number input
Template.editCardSortOrderForm.onRendered(function() {
this.$('input').on("keypress paste", function(event) {
Template.editCardSortOrderForm.onRendered(function () {
this.$('input').on("keypress paste", function (event) {
let keyCode = event.keyCode;
let charCode = String.fromCharCode(keyCode);
let regex = new RegExp('[-0-9.]');
@@ -667,6 +667,40 @@ Template.editCardTitleForm.onRendered(function () {
autosize(this.$('.js-edit-card-title'));
});
Template.cardMembersPopup.onCreated(function () {
const members = Boards.findOne(Session.get('currentBoard')).activeMembers();
this.members = new ReactiveVar(members);
});
Template.cardMembersPopup.events({
'keyup .card-members-filter'(event) {
const members = filterMembers(event.target.value);
Template.instance().members.set(members);
}
});
Template.cardMembersPopup.helpers({
members() {
return Template.instance().members.get();
},
});
const filterMembers = (filterTerm) => {
let members = Boards.findOne(Session.get('currentBoard')).activeMembers();
if (filterTerm) {
members = members
.map(member => ({
member,
user: Users.findOne(member.userId)
}))
.filter(({ user }) =>
user.profile.fullname.toLowerCase().indexOf(filterTerm.toLowerCase()) !== -1)
.map(({ member }) => member);
}
return members;
}
Template.editCardTitleForm.events({
'keydown .js-edit-card-title'(event) {
// If enter key was pressed, submit the data
@@ -1019,9 +1053,8 @@ BlazeComponent.extendComponent({
// https://github.com/wekan/wekan/issues/2785
const message = `${TAPi18n.__(
'delete-linked-card-before-this-card',
)} linkedId: ${
this._id
} at client/components/cards/cardDetails.js and https://github.com/wekan/wekan/issues/2785`;
)} linkedId: ${this._id
} at client/components/cards/cardDetails.js and https://github.com/wekan/wekan/issues/2785`;
alert(message);
}
Utils.goBoardId(this.boardId);
@@ -1589,6 +1622,11 @@ EscapeActions.register(
},
);
Template.cardAssigneesPopup.onCreated(function () {
const members = Boards.findOne(Session.get('currentBoard')).activeMembers();
this.members = new ReactiveVar(members);
});
Template.cardAssigneesPopup.events({
'click .js-select-assignee'(event) {
const card = Cards.findOne(Session.get('currentCard'));
@@ -1596,6 +1634,10 @@ Template.cardAssigneesPopup.events({
card.toggleAssignee(assigneeId);
event.preventDefault();
},
'keyup .card-assignees-filter'(event) {
const members = filterMembers(event.target.value);
Template.instance().members.set(members);
},
});
Template.cardAssigneesPopup.helpers({
@@ -1606,6 +1648,10 @@ Template.cardAssigneesPopup.helpers({
return _.contains(cardAssignees, this.userId);
},
members() {
return Template.instance().members.get();
},
user() {
return Users.findOne(this.userId);
},
+6
View File
@@ -114,6 +114,12 @@ avatar-radius = 50%
background: darken(white, 7%)
border-bottom: 1px solid darken(white, 14%)
.card-number {
color: darken(white, 30%);
display: inline-block;
margin-right: 5px;
}
.close-card-details,
.maximize-card-details,
.minimize-card-details,
+3
View File
@@ -37,6 +37,9 @@ template(name="minicard")
if getArchived
span.linked-icon.linked-archived.fa.fa-archive
+viewer
if currentBoard.allowsCardNumber
span.card-number
| ##{getCardNumber}
= getTitle
if $eq 'subtext-with-full-path' currentBoard.presentParentTask
.parent-subtext
+4
View File
@@ -114,6 +114,10 @@
font-size:20px;
color: #ccc;
.minicard-title
.card-number
color: darken(white, 30%);
display: inline-block;
margin-right: 5px;
p:last-child
margin-bottom: 0
.viewer
+16 -13
View File
@@ -81,7 +81,9 @@ BlazeComponent.extendComponent({
Utils.boardView() === 'board-view-cal' ||
!Utils.boardView()
)
swimlaneId = board.getDefaultSwimline()._id;
swimlaneId = board.getDefaultSwimline()._id;
const nextCardNumber = board.getNextCardNumber();
const _id = Cards.insert({
title,
@@ -93,6 +95,7 @@ BlazeComponent.extendComponent({
sort: sortIndex,
swimlaneId,
type: cardType,
cardNumber: nextCardNumber,
linkedId,
});
@@ -241,7 +244,7 @@ BlazeComponent.extendComponent({
Boards.findOne(currentBoardId)
.customFields()
.fetch(),
function(field) {
function (field) {
if (field.automaticallyOnCard || field.alwaysOnCard)
arr.push({ _id: field._id, value: null });
},
@@ -750,17 +753,17 @@ BlazeComponent.extendComponent({
checkIdleTime() {
return window.requestIdleCallback ||
function(handler) {
const startTime = Date.now();
return setTimeout(function() {
handler({
didTimeout: false,
timeRemaining() {
return Math.max(0, 50.0 - (Date.now() - startTime));
},
});
}, 1);
};
function (handler) {
const startTime = Date.now();
return setTimeout(function () {
handler({
didTimeout: false,
timeRemaining() {
return Math.max(0, 50.0 - (Date.now() - startTime));
},
});
}, 1);
};
}
updateList() {
+10 -3
View File
@@ -1,3 +1,9 @@
const specialHandles = [
{userId: 'board_members', username: 'board_members'},
{userId: 'card_members', username: 'card_members'}
];
const specialHandleNames = specialHandles.map(m => m.username);
Template.editor.onRendered(() => {
const textareaSelector = 'textarea';
const mentions = [
@@ -7,13 +13,14 @@ Template.editor.onRendered(() => {
search(term, callback) {
const currentBoard = Boards.findOne(Session.get('currentBoard'));
callback(
_.union(
currentBoard
.activeMembers()
.map(member => {
const username = Users.findOne(member.userId).username;
return username.includes(term) ? username : null;
})
.filter(Boolean),
.filter(Boolean), [...specialHandleNames])
);
},
template(value) {
@@ -323,13 +330,13 @@ Blaze.Template.registerHelper(
return HTML.Raw(
DOMPurify.sanitize(content, { ALLOW_UNKNOWN_PROTOCOLS: true }),
);
const knowedUsers = currentBoard.members.map(member => {
const knowedUsers = _.union(currentBoard.members.map(member => {
const u = Users.findOne(member.userId);
if (u) {
member.username = u.username;
}
return member;
});
}), [...specialHandles]);
const mentionRegex = /\B@([\w.]*)/gi;
let currentMention;
+2
View File
@@ -86,6 +86,8 @@ Template.userFormsLayout.helpers({
name = 'Français (Belgique)';
} else if (lang.name === 'fr-CA') {
name = 'Français (Canada)';
} else if (lang.name === 'fr-CH') {
name = 'Français (Schweiz)';
} else if (lang.name === 'ig') {
name = 'Igbo';
} else if (lang.name === 'lv') {
+3
View File
@@ -317,6 +317,9 @@ kbd
.grabbing
cursor: grabbing
.textcomplete-dropdown
z-index: 2000 !important;
// Implement a thiner close icon as suggested in
// https://github.com/FortAwesome/Font-Awesome/issues/1540#issuecomment-68689950
.fa.fa-times-thin:before
+1 -1
View File
@@ -342,7 +342,7 @@ template(name="editUserPopup")
input.js-profile-fullname(type="text" value=user.profile.fullname required)
label
| {{_ 'initials'}}
input.js-profile-initials(type="text" value=user.profile.initials required)
input.js-profile-initials(type="text" value=user.profile.initials)
label
| {{_ 'admin'}}
select.select-role.js-profile-isadmin
+7
View File
@@ -189,6 +189,13 @@ template(name="boardCardSettingsPopup")
span
i.fa.fa-tags
| {{_ 'labels'}}
div.check-div
a.flex.js-field-has-card-number(class="{{#if allowsCardNumber}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsCardNumber}}is-checked{{/if}}")
span
i.fa.fa-hashtag
| {{_ 'card'}}
| {{_ 'number'}}
div.check-div
a.flex.js-field-has-description-title(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
+20
View File
@@ -776,6 +776,10 @@ BlazeComponent.extendComponent({
return this.currentBoard.allowsComments;
},
allowsCardNumber() {
return this.currentBoard.allowsCardNumber;
},
allowsDescriptionTitle() {
return this.currentBoard.allowsDescriptionTitle;
},
@@ -1019,6 +1023,22 @@ BlazeComponent.extendComponent({
this.currentBoard.allowsDescriptionTitle,
);
},
'click .js-field-has-card-number'(evt) {
evt.preventDefault();
this.currentBoard.allowsCardNumber = !this.currentBoard
.allowsCardNumber;
this.currentBoard.setAllowsCardNumber(
this.currentBoard.allowsCardNumber,
);
$(`.js-field-has-card-number ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsCardNumber,
);
$('.js-field-has-card-number').toggleClass(
CKCLS,
this.currentBoard.allowsCardNumber,
);
},
'click .js-field-has-description-text'(evt) {
evt.preventDefault();
this.currentBoard.allowsDescriptionText = !this.currentBoard
+2
View File
@@ -180,6 +180,8 @@ Template.changeLanguagePopup.helpers({
name = 'Français (Belgique)';
} else if (lang.name === 'fr-CA') {
name = 'Français (Canada)';
} else if (lang.name === 'fr-CH') {
name = 'Français (Schweiz)';
} else if (lang.name === 'ig') {
name = 'Igbo';
} else if (lang.name === 'lv') {
+6
View File
@@ -0,0 +1,6 @@
dependencies:
- name: mongodb
repository: https://charts.bitnami.com/bitnami
version: 10.0.5
digest: sha256:f6520f39b687cb52574ec2fda514662ce913665c0fd2391b68fdb4d2eb059497
generated: "2021-07-27T22:16:39.945592552+02:00"
+20 -10
View File
@@ -1,14 +1,24 @@
name: wekan
version: 1.0.3
apiVersion: v1
apiVersion: v2
appVersion: "5.48"
dependencies:
- condition: mongodb.enabled
name: mongodb
repository: https://charts.bitnami.com/bitnami
version: 10.0.x
description: Open Source kanban
home: https://wekan.github.io/
home: https://wekan.github.io
icon: https://wekan.github.io/wekan-logo.svg
keywords:
- kanban
maintainers:
- email: github@randall.cc
name: technotaff
- email: jiangyt.cn@gmail.com
name: jiangytcn
- email: varac@varac.net
name: varac
name: wekan
sources:
- https://github.com/wekan/wekan
maintainers:
- name: technotaff
email: github@randall.cc
- name: jiangytcn
email: jiangyt.cn@gmail.com
engine: gotpl
type: application
version: 1.1.0
-5
View File
@@ -1,5 +0,0 @@
dependencies:
- name: mongodb
version: 10.0.x
repository: "https://charts.bitnami.com/bitnami"
condition: mongodb.enabled
+1 -1
View File
@@ -14,7 +14,7 @@ serviceAccounts:
##
image:
repository: quay.io/wekan/wekan
tag: latest
tag: v5.48
pullPolicy: IfNotPresent
## Configuration for wekan component
+2 -2
View File
@@ -89,7 +89,7 @@
"add-subtask": "Teilaufgabe hinzufügen",
"add-checklist": "Checkliste hinzufügen",
"add-checklist-item": "Element zu Checkliste hinzufügen",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"convertChecklistItemToCardPopup-title": "in Karte konvertieren",
"add-cover": "Cover hinzufügen",
"add-label": "Label hinzufügen",
"add-list": "Liste hinzufügen",
@@ -951,7 +951,7 @@
"operator-created": "erstellt",
"operator-modified": "geändert",
"operator-sort": "sortieren",
"operator-comment": "Kommentar",
"operator-comment": "Kommentar speichern",
"operator-has": "hat",
"operator-limit": "Begrenzung",
"predicate-archived": "archiviert",
+1063
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -89,7 +89,7 @@
"add-subtask": "Adicionar Sub-tarefa",
"add-checklist": "Adicionar Lista de Verificação",
"add-checklist-item": "Adicionar um item à lista de verificação",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"convertChecklistItemToCardPopup-title": "Converter para Cartão",
"add-cover": "Adicionar Capa",
"add-label": "Adicionar Etiqueta",
"add-list": "Adicionar Lista",
@@ -199,7 +199,7 @@
"poker-forty": "40",
"poker-oneHundred": "100",
"poker-unsure": "?",
"poker-finish": "Finish",
"poker-finish": "Finalizar",
"poker-result-votes": "Votos",
"poker-result-who": "Who",
"poker-replay": "Replay",
+3 -3
View File
@@ -89,7 +89,7 @@
"add-subtask": "Добавить подзадачу",
"add-checklist": "Добавить контрольный список",
"add-checklist-item": "Добавить пункт в контрольный список",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"convertChecklistItemToCardPopup-title": "Преобразовать в Карточку",
"add-cover": "Прикрепить",
"add-label": "Добавить метку",
"add-list": "Добавить простой список",
@@ -121,8 +121,8 @@
"archives": "Архив",
"template": "Шаблон",
"templates": "Шаблоны",
"template-container": "Template Container",
"add-template-container": "Add Template Container",
"template-container": "Шаблон Контейнера",
"add-template-container": "Добавить Шаблон Контейнера",
"assign-member": "Назначить участника",
"attached": "прикреплено",
"attachment": "Вложение",
+1 -1
View File
@@ -89,7 +89,7 @@
"add-subtask": "新增子任務",
"add-checklist": "新增待辦清單",
"add-checklist-item": "新增項目",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"convertChecklistItemToCardPopup-title": "轉換為卡片",
"add-cover": "新增封面",
"add-label": "新增標籤",
"add-list": "新增清單",
+23 -8
View File
@@ -210,15 +210,30 @@ if (Meteor.isServer) {
// ignore commenter mention himself?
continue;
}
const atUser = _.findWhere(knownUsers, { username });
if (!atUser) {
continue;
if (activity.boardId && username === 'board_members') {
// mentions all board members
const knownUids = knownUsers.map(u => u.userId);
watchers = _.union(watchers, [...knownUids]);
title = 'act-atUserComment';
} else if (activity.cardId && username === 'card_members') {
// mentions all card members if assigned
const card = activity.card();
watchers = _.union(watchers, [...card.members]);
title = 'act-atUserComment';
} else {
const atUser = _.findWhere(knownUsers, { username });
if (!atUser) {
continue;
}
const uid = atUser.userId;
params.atUsername = username;
params.atEmails = atUser.emails;
title = 'act-atUserComment';
watchers = _.union(watchers, [uid]);
}
const uid = atUser.userId;
params.atUsername = username;
params.atEmails = atUser.emails;
title = 'act-atUserComment';
watchers = _.union(watchers, [uid]);
}
}
params.commentId = comment._id;
+32
View File
@@ -375,6 +375,14 @@ Boards.attachSchema(
defaultValue: true,
},
allowsCardNumber: {
/**
* Does the board allows card numbers?
*/
type: Boolean,
defaultValue: false,
},
allowsActivities: {
/**
* Does the board allows comments?
@@ -1056,6 +1064,26 @@ Boards.helpers({
return result;
},
getNextCardNumber() {
const boardCards = Cards.find(
{
boardId: this._id
},
{
sort: { cardNumber: -1 },
limit: 1
}
).fetch();
// If no card is assigned to the board, return 1
if (!boardCards || boardCards.length === 0) {
return 1;
}
const maxCardNr = !!boardCards[0].cardNumber ? boardCards[0].cardNumber : 0;
return maxCardNr + 1;
},
cardsDueInBetween(start, end) {
return Cards.find({
boardId: this._id,
@@ -1285,6 +1313,10 @@ Boards.mutations({
return { $set: { allowsDescriptionTitle } };
},
setAllowsCardNumber(allowsCardNumber) {
return { $set: { allowsCardNumber } };
},
setAllowsDescriptionText(allowsDescriptionText) {
return { $set: { allowsDescriptionText } };
},
+22
View File
@@ -470,6 +470,16 @@ Cards.attachSchema(
optional: true,
defaultValue: [],
},
cardNumber: {
/**
* A boardwise sequentially increasing number that is assigned
* to every newly created card
*/
type: Number,
decimal: true,
optional: true,
defaultValue: 0,
},
}),
);
@@ -567,6 +577,7 @@ Cards.helpers({
delete this._id;
this.boardId = boardId;
this.cardNumber = Boards.findOne(boardId).getNextCardNumber();
this.swimlaneId = swimlaneId;
this.listId = listId;
const _id = Cards.insert(this);
@@ -1647,6 +1658,10 @@ Cards.helpers({
}
},
getCardNumber() {
return this.cardNumber;
},
getBoardTitle() {
if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId });
@@ -1975,8 +1990,12 @@ Cards.mutations({
'_id',
);
// assign the new card number from the target board
const newCardNumber = newBoard.getNextCardNumber();
Object.assign(mutatedFields, {
labelIds: newCardLabelIds,
cardNumber: newCardNumber
});
mutatedFields.customFields = this.mapCustomFieldsToBoard(newBoard._id);
@@ -3207,6 +3226,8 @@ if (Meteor.isServer) {
Authentication.checkAdminOrCondition(req.userId, addPermission);
const paramListId = req.params.listId;
const paramParentId = req.params.parentId;
const nextCardNumber = board.getNextCardNumber();
const currentCards = Cards.find(
{
listId: paramListId,
@@ -3229,6 +3250,7 @@ if (Meteor.isServer) {
userId: req.body.authorId,
swimlaneId: req.body.swimlaneId,
sort: currentCards.count(),
cardNumber: nextCardNumber,
members,
assignees,
});
+503 -306
View File
File diff suppressed because it is too large. Load diff
+12 -12
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v5.41.0",
"version": "v5.48.0",
"description": "Open-Source kanban",
"private": true,
"repository": {
@@ -15,13 +15,13 @@
"devDependencies": {
"babel-plugin-istanbul": "^6.0.0",
"chai": "^4.3.4",
"flatted": "^3.2.0",
"puppeteer": "^10.0.0",
"sinon": "^11.1.1"
"flatted": "^3.2.2",
"puppeteer": "^10.2.0",
"sinon": "^11.1.2"
},
"dependencies": {
"@babel/core": "^7.14.6",
"@babel/runtime": "^7.14.6",
"@babel/core": "^7.15.0",
"@babel/runtime": "^7.15.3",
"@liradb2000/markdown-it-mermaid": "^0.4.3",
"ajv": "^6.12.6",
"babel-runtime": "^6.26.0",
@@ -34,13 +34,13 @@
"exceljs": "^4.2.1",
"fibers": "^5.0.0",
"gridfs-stream": "https://github.com/wekan/gridfs-stream/tarball/master",
"jszip": "^3.6.0",
"ldapjs": "^2.3.0",
"markdown-it": "^12.1.0",
"jszip": "^3.7.1",
"ldapjs": "^2.3.1",
"markdown-it": "^12.2.0",
"markdown-it-emoji": "^2.0.0",
"meteor-node-stubs": "^1.0.3",
"mongodb": "^3.6.9",
"os": "^0.1.1",
"meteor-node-stubs": "^1.1.0",
"mongodb": "^3.6.11",
"os": "^0.1.2",
"page": "^1.11.5",
"papaparse": "^5.3.1",
"qs": "^6.10.1",
+23 -5
View File
@@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Wekan REST API v5.41</title>
<title>Wekan REST API v5.48</title>
<style>
</style>
@@ -1555,7 +1555,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<ul class="toc-list-h1">
<li>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.41">Wekan REST API v5.41</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.48">Wekan REST API v5.48</a>
</li>
@@ -2128,7 +2128,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id="wekan-rest-api">Wekan REST API v5.41</h1>
<h1 id="wekan-rest-api">Wekan REST API v5.48</h1>
<blockquote>
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
</blockquote>
@@ -3554,6 +3554,7 @@ System.out.println(response.toString());
<span class="hljs-attr">&quot;allowsComments&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionTitle&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionText&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCardNumber&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsActivities&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsLabels&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCreator&quot;</span>: <span class="hljs-literal">true</span>,
@@ -9138,7 +9139,8 @@ System.out.println(response.toString());
],
<span class="hljs-attr">&quot;linkId_gantt&quot;</span>: [
<span class="hljs-string">&quot;string&quot;</span>
]
],
<span class="hljs-attr">&quot;cardNumber&quot;</span>: <span class="hljs-number">0</span>
}
</code></pre>
<h3 id="get_card-responses">Responses</h3>
@@ -18346,6 +18348,7 @@ UserSecurity
<span class="hljs-attr">&quot;allowsComments&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionTitle&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsDescriptionText&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCardNumber&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsActivities&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsLabels&quot;</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">&quot;allowsCreator&quot;</span>: <span class="hljs-literal">true</span>,
@@ -18551,6 +18554,13 @@ UserSecurity
<td>Does the board allows description text?</td>
</tr>
<tr>
<td>allowsCardNumber</td>
<td>boolean</td>
<td>true</td>
<td>none</td>
<td>Does the board allows card numbers?</td>
</tr>
<tr>
<td>allowsActivities</td>
<td>boolean</td>
<td>true</td>
@@ -19302,7 +19312,8 @@ UserSecurity
],
<span class="hljs-attr">&quot;linkId_gantt&quot;</span>: [
<span class="hljs-string">&quot;string&quot;</span>
]
],
<span class="hljs-attr">&quot;cardNumber&quot;</span>: <span class="hljs-number">0</span>
}
</code></pre>
@@ -19563,6 +19574,13 @@ UserSecurity
<td>none</td>
<td>ID of card which is the parent link in gantt view</td>
</tr>
<tr>
<td>cardNumber</td>
<td>number¦null</td>
<td>false</td>
<td>none</td>
<td>A boardwise sequentially increasing number that is assigned<br />to every newly created card</td>
</tr>
</tbody>
</table>
<h4 id="enumerated-values-3">Enumerated Values</h4>
+12 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v5.41
version: v5.48
description: |
The REST API allows you to control and extend Wekan with ease.
@@ -2770,6 +2770,10 @@ definitions:
description: |
Does the board allows description text?
type: boolean
allowsCardNumber:
description: |
Does the board allows card numbers?
type: boolean
allowsActivities:
description: |
Does the board allows comments?
@@ -2888,6 +2892,7 @@ definitions:
- allowsComments
- allowsDescriptionTitle
- allowsDescriptionText
- allowsCardNumber
- allowsActivities
- allowsLabels
- allowsCreator
@@ -3268,6 +3273,12 @@ definitions:
type: string
x-nullable: true
x-nullable: true
cardNumber:
description: |
A boardwise sequentially increasing number that is assigned
to every newly created card
type: number
x-nullable: true
required:
- archived
- swimlaneId
+2 -2
View File
@@ -18,8 +18,8 @@ REM Install chocolatey
choco install -y git curl python2 dotnet4.5.2 nano mongodb-3 mongoclient meteor
curl -O https://nodejs.org/dist/v12.22.3/node-v12.22.3-x64.msi
call node-v12.22.3-x64.msi
curl -O https://nodejs.org/dist/v12.22.5/node-v12.22.5-x64.msi
call node-v12.22.5-x64.msi
call npm config -g set msvs_version 2015
call meteor npm config -g set msvs_version 2015
+3 -3
View File
@@ -28,7 +28,7 @@ do
#curl -0 -L https://npmjs.org/install.sh | sudo sh
#sudo chown -R $(id -u):$(id -g) $HOME/.npm
sudo npm -g install n
sudo n 12.22.3
sudo n 12.22.5
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
#sudo apt-get install -y nodejs
elif [[ "$OSTYPE" == "darwin"* ]]; then
@@ -81,13 +81,13 @@ do
cd ~/repos/wekan
rm -rf node_modules .meteor/local .build
chmod u+w *.json
npm install
meteor npm install
meteor build .build --directory
rm -rf ~/repos/wekan/.build/bundle/programs/web.browser.legacy
cd ~/repos/wekan/.build/bundle/programs/server
rm -rf node_modules
chmod u+w *.json
npm install
meteor npm install
# Cleanup
cd ~/repos/wekan/.build/bundle
find . -type d -name '*-garbage*' | xargs rm -rf
@@ -57,6 +57,9 @@ tx pull -f -l fi
echo "French:"
tx pull -f -l fr
echo "French (Switzerland):"
tx pull -f -l fr_CH
echo "Galician:"
tx pull -f -l gl
+2 -2
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 541,
appVersion = 548,
# Increment this for every release.
appMarketingVersion = (defaultText = "5.41.0~2021-07-26"),
appMarketingVersion = (defaultText = "5.48.0~2021-08-11"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+39
View File
@@ -1061,3 +1061,42 @@ Migrations.add('add-hide-logo-by-default', () => {
noValidateMulti,
);
});
Migrations.add('add-card-number-allowed', () => {
Boards.update(
{
allowsCardNumber: {
$exists: false,
},
},
{
$set: {
allowsCardNumber: false,
},
},
noValidateMulti,
);
});
Migrations.add('assign-boardwise-card-numbers', () => {
Boards.find().forEach(board => {
let nextCardNumber = board.getNextCardNumber();
Cards.find(
{
boardId: board._id,
cardNumber: {
$exists: false
}
},
{
sort: { createdAt: 1 }
}
).forEach(card => {
Cards.update(
card._id,
{ $set: { cardNumber: nextCardNumber } },
noValidate);
nextCardNumber++;
});
})
});
+2 -2
View File
@@ -1,5 +1,5 @@
name: wekan
version: '5.41'
version: '5.48'
summary: The open-source kanban
description: |
Wekan is an open-source and collaborative kanban board application.
@@ -80,7 +80,7 @@ parts:
wekan:
source: .
plugin: nodejs
node-engine: 12.22.3
node-engine: 12.22.5
node-packages:
- node-gyp
- node-pre-gyp
+1 -1
View File
@@ -2,7 +2,7 @@
set -euxo pipefail
BUILD_DEPS="bsdtar gnupg wget curl bzip2 python git ca-certificates perl-Digest-SHA"
NODE_VERSION=v12.22.3
NODE_VERSION=v12.22.5
#METEOR_RELEASE=1.6.0.1 - for Stacksmith, meteor-1.8 branch that could have METEOR@1.8.1-beta.8 or newer
USE_EDGE=false
METEOR_EDGE=1.5-beta.17