Merge branch 'master' of https://github.com/wekan/wekan into search

This commit is contained in:
John R. Supplee 2021-03-28 22:16:15 +02:00
commit 238b0f0725
99 changed files with 2611 additions and 3329 deletions

View file

@ -52,6 +52,7 @@ mquandalle:autofocus
ongoworks:speakingurl
raix:handlebar-helpers
tap:i18n
http@1.4.2
# UI components
blaze
@ -90,7 +91,6 @@ meteorhacks:aggregate@1.3.0
wekan-markdown
konecty:mongo-counter
percolate:synced-cron
easylogic:summernote
cfs:filesystem
tmeasday:check-npm-versions
steffo:meteor-accounts-saml
@ -144,4 +144,4 @@ rajit:bootstrap3-datepicker-zh-cn
rajit:bootstrap3-datepicker-zh-tw
staringatlights:fast-render
spacebars
jkuester:http
georgemccann:meteor-emoji-picker

View file

@ -56,7 +56,6 @@ ddp-server@2.3.2
deps@1.0.12
diff-sequence@1.1.1
dynamic-import@0.6.0
easylogic:summernote@0.8.8
ecmascript@0.15.0
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.11.0
@ -68,6 +67,7 @@ fastclick@1.0.13
fetch@0.1.1
fortawesome:fontawesome@4.7.0
geojson-utils@1.0.10
georgemccann:meteor-emoji-picker@0.1.74
horka:swipebox@1.0.2
hot-code-push@1.0.4
html-tools@1.0.11
@ -76,7 +76,6 @@ http@1.4.3
id-map@1.1.0
idmontie:migrations@1.0.3
inter-process-messaging@0.1.1
jkuester:http@2.0.1
jquery@1.11.11
kadira:blaze-layout@2.3.0
kadira:dochead@1.5.0
@ -227,7 +226,6 @@ templating-runtime@1.3.2
templating-tools@1.1.2
tmeasday:check-npm-versions@0.3.2
tracker@1.2.0
twbs:bootstrap@3.3.6
ui@1.0.13
underscore@1.0.10
url@1.3.1

View file

@ -1,3 +1,64 @@
# Upcoming Wekan release
This release adds the following updates:
- [Updated release scripts](https://github.com/wekan/wekan/commit/59580e4b0f711ca55e8cb0d73803a4ff8b56352d).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.13 2021-03-28 Wekan release
This release fixes the following bugs:
- [Fixed Sandstorm Wekan attachments upload](https://github.com/wekan/wekan/commit/d4a1611b86521cd5913277cfa2c86c43958eec7b).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.12 2021-03-28 Wekan release
This release fixes the following bugs:
- [Fix HTTP not defined](https://github.com/wekan/wekan/commit/4c609161915cc46ebfccad3d9e7ffdecdef1f85c).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.11 2021-03-28 Wekan release
This release adds the following new features:
- [Added emoji picker to card description edit and card comment edit.
Removed and disabled Summernote wysiwyg editor, package-lock.json
etc](https://github.com/wekan/wekan/commit/84fde1ecfc81e89ed1895cab3bcb328e4f166a87).
Thanks to xet7.
and adds the following updates:
- [Updated dependencies. Fixed lint](https://github.com/wekan/wekan/commit/4e1c0fdce82e3b4add8c4ffd1832752181573e88).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.10 2021-03-28 Wekan release
This release adds the following new features:
- [Move swimlane from one board to another](https://github.com/wekan/wekan/pull/3674).
Thanks to jrsupplee.
- [Added translatable Move Swimlane popup title](https://github.com/wekan/wekan/commit/16665bccf912c5e907739c35f7ef5a376c81740e).
Thanks to xet7.
- [REST API: Export one attachment](https://github.com/wekan/wekan/pull/3673).
Thanks to vagnernascimento.
and adds the following updates:
- [Updated package-lock.json](https://github.com/wekan/wekan/commit/3145ec65a3defb8ac8d97aed7e43595f661f7100).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.09 2021-03-26 Wekan release
This release adds the following improvements:

View file

@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v5.09.0"
appVersion: "v5.13.0"
files:
userUploads:
- README.md

View file

@ -3,5 +3,5 @@ template(name="descriptionForm")
.new-description.js-new-description(
class="{{#if descriptionFormIsOpen}}is-open{{/if}}")
form.js-new-description-form
+editor(class="js-new-description-input" data-meteor-emoji-large="true" autofocus="autofocus")
+editor(class="js-new-description-input" autofocus="autofocus")
| {{getUnsavedValue 'cardDescription' _id getDescription}}

View file

@ -4,6 +4,7 @@ template(name="editor")
class="{{class}}"
id=id
autofocus=autofocus
data-meteor-emoji="true"
placeholder="{{_ 'comment-placeholder'}}")
+Template.contentBlock

View file

@ -1,4 +1,5 @@
Template.editor.onRendered(() => {
new MeteorEmoji();
const textareaSelector = 'textarea';
const mentions = [
// User mentions
@ -99,7 +100,9 @@ Template.editor.onRendered(() => {
if (inputs.length === 0) {
// only enable richereditor to new comment or edit comment no others
enableTextarea();
} else {
}
/*
else {
const placeholder = inputs.attr('placeholder') || '';
const mSummernotes = [];
const getSummernote = function(input) {
@ -258,6 +261,7 @@ Template.editor.onRendered(() => {
});
});
}
*/
} else {
enableTextarea();
}

View file

@ -39,6 +39,8 @@ template(name="swimlaneActionPopup")
hr
ul.pop-over-list
li: a.js-close-swimlane {{_ 'archive-swimlane'}}
ul.pop-over-list
li: a.js-move-swimlane {{_ 'move-swimlane'}}
template(name="swimlaneAddPopup")
unless currentUser.isCommentOnly

View file

@ -47,20 +47,25 @@ Template.swimlaneFixedHeader.helpers({
},
});
Template.swimlaneActionPopup.events({
'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
'click .js-close-swimlane'(event) {
event.preventDefault();
this.archive();
Popup.close();
},
});
Template.swimlaneActionPopup.helpers({
BlazeComponent.extendComponent({
isCommentOnly() {
return Meteor.user().isCommentOnly();
},
});
events() {
return [
{
'click .js-set-swimlane-color': Popup.open('setSwimlaneColor'),
'click .js-close-swimlane'(event) {
event.preventDefault();
this.archive();
Popup.close();
},
'click .js-move-swimlane': Popup.open('moveSwimlane'),
},
];
},
}).register('swimlaneActionPopup');
BlazeComponent.extendComponent({
onCreated() {

View file

@ -61,3 +61,13 @@ template(name="addListForm")
a.open-list-composer.js-open-inlined-form
i.fa.fa-plus
| {{_ 'add-list'}}
template(name="moveSwimlanePopup")
unless currentUser.isWorker
label {{_ 'boards'}}:
select.js-select-boards(autofocus)
each toBoard in toBoards
option(value="{{toBoard._id}}") {{toBoard.title}}
.edit-controls.clearfix
button.primary.confirm.js-done {{_ 'done'}}

View file

@ -323,3 +323,46 @@ BlazeComponent.extendComponent({
initSortable(boardComponent, $listsDom);
},
}).register('listsGroup');
BlazeComponent.extendComponent({
onCreated() {
this.currentSwimlane = this.currentData();
},
board() {
return Boards.findOne(Session.get('currentBoard'));
},
toBoards() {
const boards = Boards.find(
{
archived: false,
'members.userId': Meteor.userId(),
type: 'board',
_id: { $ne: this.board()._id },
},
{
sort: { title: 1 },
},
);
return boards;
},
events() {
return [
{
'click .js-done'() {
const swimlane = Swimlanes.findOne(this.currentSwimlane._id);
const bSelect = $('.js-select-boards')[0];
let boardId;
if (bSelect) {
boardId = bSelect.options[bSelect.selectedIndex].value;
Meteor.call('moveSwimlane', this.currentSwimlane._id, boardId);
}
Popup.close();
},
},
];
},
}).register('moveSwimlanePopup');

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Vytvořeno (Od nejstarších)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Erstelldatum (älteste zuerst)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Alle System-Nachrichten aller Nutzer verbergen",
"now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen"
"now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -986,5 +986,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "ساخته شده در تاریخ (با اولویت قدیمی تر)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Luotu (Vanhin ensin)",
"links-heading": "Linkit",
"hide-system-messages-of-all-users": "Piilota kaikkien käyttäjien järjestelmäviestit",
"now-system-messages-of-all-users-are-hidden": "Nyt kaikkien käyttäjien järjestelmäviestit on piilotettu"
"now-system-messages-of-all-users-are-hidden": "Nyt kaikkien käyttäjien järjestelmäviestit on piilotettu",
"move-swimlane": "Siirrä Swimlane",
"moveSwimlanePopup-title": "Siirrä Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Date de création (Plus anciennes en premier)",
"links-heading": "Liens",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "מועד יצירה (הישן ביותר בהתחלה)",
"links-heading": "קישורים",
"hide-system-messages-of-all-users": "להסתיר את הודעות המערכת של כל המשתמשים",
"now-system-messages-of-all-users-are-hidden": "כעת הודעות המערכת של כל המשתמשים מוסתרות"
"now-system-messages-of-all-users-are-hidden": "כעת הודעות המערכת של כל המשתמשים מוסתרות",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Data di creazione (dalla più vecchia)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "作成日(古いものから)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Aangemaakt op (Oudste Eerst)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Verberg systeemberichten voor alle gebruikers",
"now-system-messages-of-all-users-are-hidden": "Systeemberichten zijn nu verborgen voor alle gebruikers"
"now-system-messages-of-all-users-are-hidden": "Systeemberichten zijn nu verborgen voor alle gebruikers",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "daty utworzenia (najpierw najstarsze)",
"links-heading": "Linki",
"hide-system-messages-of-all-users": "Ukryj powiadomienia systemowe wszystkich użytkowników",
"now-system-messages-of-all-users-are-hidden": "Odtąd powiadomienia systemowe wszystkich użytkowników będą ukryte"
"now-system-messages-of-all-users-are-hidden": "Odtąd powiadomienia systemowe wszystkich użytkowników będą ukryte",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Criado em (o mais antigo primeiro) ",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Esconder mensagens do sistema para todos os usuários",
"now-system-messages-of-all-users-are-hidden": "Agora as mensagens do sistema para todos os usuários estão escondidas "
"now-system-messages-of-all-users-are-hidden": "Agora as mensagens do sistema para todos os usuários estão escondidas ",
"move-swimlane": "Mover Raia",
"moveSwimlanePopup-title": "Mover Raia"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Дата создания (сначала старые)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -981,7 +981,9 @@
"title-alphabetically": "Titel (Alfabetisk)",
"created-at-newest-first": "Skapad den (Nyast först)",
"created-at-oldest-first": "Skapad den (äldst först)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"links-heading": "Länkar",
"hide-system-messages-of-all-users": "Göm systemmeddelanden för alla användare",
"now-system-messages-of-all-users-are-hidden": "Systemmeddelande dolda för alla användare",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Được tạo lúc (Cũ nhất trước)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "创建时间(最旧)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "Created At (Oldest First)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -983,5 +983,7 @@
"created-at-oldest-first": "創建於(最早優先)",
"links-heading": "Links",
"hide-system-messages-of-all-users": "Hide system messages of all users",
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden"
"now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden",
"move-swimlane": "Move Swimlane",
"moveSwimlanePopup-title": "Move Swimlane"
}

View file

@ -1527,14 +1527,17 @@ Cards.mutations({
return this.move(boardId, swimlaneId, listId, sort);
},
move(boardId, swimlaneId, listId, sort) {
move(boardId, swimlaneId, listId, sort = null) {
const mutatedFields = {
boardId,
swimlaneId,
listId,
sort,
};
if (sort !== null) {
mutatedFields.sort = sort;
}
// we must only copy the labels and custom fields if the target board
// differs from the source board
if (this.boardId !== boardId) {

View file

@ -48,6 +48,57 @@ if (Meteor.isServer) {
}
});
// todo XXX once we have a real API in place, move that route there
// todo XXX also share the route definition between the client and the server
// so that we could use something like
// `ApiRoutes.path('boards/export', boardId)``
// on the client instead of copy/pasting the route path manually between the
// client and the server.
/**
* @operation exportJson
* @tag Boards
*
* @summary This route is used to export a attachement to a json file format.
*
* @description If user is already logged-in, pass loginToken as param
* "authToken": '/api/boards/:boardId/attachments/:attachmentId/export?authToken=:token'
*
*
* @param {string} boardId the ID of the board we are exporting
* @param {string} attachmentId the ID of the attachment we are exporting
* @param {string} authToken the loginToken
*/
JsonRoutes.add(
'get',
'/api/boards/:boardId/attachments/:attachmentId/export',
function(req, res) {
const boardId = req.params.boardId;
const attachmentId = req.params.attachmentId;
let user = null;
const loginToken = req.query.authToken;
if (loginToken) {
const hashToken = Accounts._hashLoginToken(loginToken);
user = Meteor.users.findOne({
'services.resume.loginTokens.hashedToken': hashToken,
});
} else if (!Meteor.settings.public.sandstorm) {
Authentication.checkUserId(req.userId);
user = Users.findOne({ _id: req.userId, isAdmin: true });
}
const exporter = new Exporter(boardId, attachmentId);
if (exporter.canExport(user)) {
JsonRoutes.sendResult(res, {
code: 200,
data: exporter.build(),
});
} else {
// we could send an explicit error message, but on the other hand the only
// way to get there is by hacking the UI so let's keep it raw.
JsonRoutes.sendResult(res, 403);
}
},
);
/**
* @operation exportCSV/TSV
* @tag Boards

View file

@ -2,8 +2,9 @@ const Papa = require('papaparse');
// exporter maybe is broken since Gridfs introduced, add fs and path
export class Exporter {
constructor(boardId) {
constructor(boardId, attachmentId) {
this._boardId = boardId;
this._attachmentId = attachmentId;
}
build() {
@ -33,6 +34,62 @@ export class Exporter {
},
}),
);
// [Old] for attachments we only export IDs and absolute url to original doc
// [New] Encode attachment to base64
const getBase64Data = function(doc, callback) {
let buffer = Buffer.allocUnsafe(0);
buffer.fill(0);
// callback has the form function (err, res) {}
const tmpFile = path.join(
os.tmpdir(),
`tmpexport${process.pid}${Math.random()}`,
);
const tmpWriteable = fs.createWriteStream(tmpFile);
const readStream = doc.createReadStream();
readStream.on('data', function(chunk) {
buffer = Buffer.concat([buffer, chunk]);
});
readStream.on('error', function() {
callback(null, null);
});
readStream.on('end', function() {
// done
fs.unlink(tmpFile, () => {
//ignored
});
callback(null, buffer.toString('base64'));
});
readStream.pipe(tmpWriteable);
};
const getBase64DataSync = Meteor.wrapAsync(getBase64Data);
const byBoardAndAttachment = this._attachmentId
? { boardId: this._boardId, _id: this._attachmentId }
: byBoard;
result.attachments = Attachments.find(byBoardAndAttachment)
.fetch()
.map(attachment => {
let filebase64 = null;
filebase64 = getBase64DataSync(attachment);
return {
_id: attachment._id,
cardId: attachment.cardId,
//url: FlowRouter.url(attachment.url()),
file: filebase64,
name: attachment.original.name,
type: attachment.original.type,
};
});
//When has a especific valid attachment return the single element
if (this._attachmentId) {
return result.attachments.length > 0 ? result.attachments[0] : {};
}
result.lists = Lists.find(byBoard, noBoardId).fetch();
result.cards = Cards.find(byBoardNoLinked, noBoardId).fetch();
result.swimlanes = Swimlanes.find(byBoard, noBoardId).fetch();
@ -84,54 +141,6 @@ export class Exporter {
);
});
// [Old] for attachments we only export IDs and absolute url to original doc
// [New] Encode attachment to base64
const getBase64Data = function(doc, callback) {
let buffer = Buffer.allocUnsafe(0);
buffer.fill(0);
// callback has the form function (err, res) {}
const tmpFile = path.join(
os.tmpdir(),
`tmpexport${process.pid}${Math.random()}`,
);
const tmpWriteable = fs.createWriteStream(tmpFile);
const readStream = doc.createReadStream();
readStream.on('data', function(chunk) {
buffer = Buffer.concat([buffer, chunk]);
});
readStream.on('error', function() {
callback(null, null);
});
readStream.on('end', function() {
// done
fs.unlink(tmpFile, () => {
//ignored
});
callback(null, buffer.toString('base64'));
});
readStream.pipe(tmpWriteable);
};
const getBase64DataSync = Meteor.wrapAsync(getBase64Data);
result.attachments = Attachments.find(byBoard)
.fetch()
.map(attachment => {
let filebase64 = null;
filebase64 = getBase64DataSync(attachment);
return {
_id: attachment._id,
cardId: attachment.cardId,
//url: FlowRouter.url(attachment.url()),
file: filebase64,
name: attachment.original.name,
type: attachment.original.type,
};
});
// we also have to export some user data - as the other elements only
// include id but we have to be careful:
// 1- only exports users that are linked somehow to that board

View file

@ -202,7 +202,7 @@ Lists.helpers({
this.swimlaneId = swimlaneId;
let _id = null;
existingListWithSameName = Lists.findOne({
const existingListWithSameName = Lists.findOne({
boardId,
title: this.title,
archived: false,
@ -225,6 +225,35 @@ Lists.helpers({
});
},
move(boardId, swimlaneId) {
const boardList = Lists.findOne({
boardId,
title: this.title,
archived: false,
});
let listId;
if (boardList) {
listId = boardList._id;
this.cards().forEach(card => {
card.move(boardId, this._id, boardList._id);
});
} else {
console.log('list.title:', this.title);
console.log('boardList:', boardList);
listId = Lists.insert({
title: this.title,
boardId,
type: this.type,
archived: false,
wipLimit: this.wipLimit,
});
}
this.cards(swimlaneId).forEach(card => {
card.move(boardId, swimlaneId, listId);
});
},
cards(swimlaneId) {
const selector = {
listId: this._id,

4881
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v5.09.0",
"version": "v5.13.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
@ -40,47 +40,44 @@
},
"homepage": "https://wekan.github.io",
"devDependencies": {
"eslint": "^7.19.0",
"babel-eslint": "^10.1.0",
"eslint": "^5.16.0",
"eslint-config-meteor": "0.0.9",
"eslint-config-prettier": "^3.6.0",
"eslint-import-resolver-meteor": "^0.4.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-meteor": "^7.2.2",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-import": "^2.20.0",
"eslint-plugin-meteor": "^5.1.0",
"eslint-plugin-prettier": "^3.1.2",
"lint-staged": "^7.3.0",
"pre-commit": "^1.2.2",
"prettier": "^1.19.1",
"prettier-eslint": "^9.0.2"
},
"dependencies": {
"@babel/core": "^7.12.10",
"@babel/eslint-parser": "^7.12.13",
"@babel/runtime": "^7.12.5",
"@typescript-eslint/parser": "^4.14.2",
"ajv": "^7.0.4",
"@babel/core": "^7.9.6",
"@babel/runtime": "^7.9.6",
"@root/request": "^1.6.1",
"ajv": "^6.12.4",
"babel-runtime": "^6.26.0",
"bcrypt": "^5.0.0",
"bson": "^4.2.2",
"bunyan": "^1.8.15",
"core-js": "^3.8.3",
"bson": "^4.0.3",
"bunyan": "^1.8.12",
"es6-promise": "^4.2.4",
"exceljs": "^4.2.0",
"exceljs": "^4.2.1",
"fibers": "^5.0.0",
"flatted": "^3.1.1",
"flatted": "^3.0.4",
"gridfs-stream": "https://github.com/wekan/gridfs-stream/tarball/master",
"jszip": "^3.5.0",
"ldapjs": "^2.2.3",
"markdown-it": "^12.0.4",
"jszip": "^3.4.0",
"ldapjs": "^2.1.1",
"markdown-it": "^12.0.2",
"markdown-it-emoji": "^2.0.0",
"meteor-node-stubs": "^1.0.2",
"mongodb": "^3.6.4",
"meteor-node-stubs": "^1.0.1",
"mongodb": "^3.6.2",
"os": "^0.1.1",
"page": "^1.11.5",
"papaparse": "^5.3.0",
"qs": "^6.9.6",
"source-map-resolve": "^0.6.0",
"papaparse": "^5.2.0",
"qs": "^6.9.4",
"source-map-support": "^0.5.19",
"typescript": "^4.1.3",
"xss": "^1.0.8"
}
}

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.09</title>
<title>Wekan REST API v5.13</title>
<style>
</style>
@ -1549,7 +1549,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.09">Wekan REST API v5.09</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.13">Wekan REST API v5.13</a>
</li>
@ -2092,7 +2092,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.09</h1>
<h1 id="wekan-rest-api">Wekan REST API v5.13</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>

View file

@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v5.09
version: v5.13
description: |
The REST API allows you to control and extend Wekan with ease.
@ -326,6 +326,36 @@ paths:
type: string
swimlaneId:
type: string
/api/boards/{board}/attachments/{attachment}/export:
get:
operationId: exportJson
summary: This route is used to export a attachement to a json file format.
description: |
If user is already logged-in, pass loginToken as param
"authToken": '/api/boards/:boardId/attachments/:attachmentId/export?authToken=:token'
tags:
- Boards
parameters:
- name: board
in: path
description: |
the ID of the board we are exporting
type: string
required: true
- name: attachment
in: path
description: |
the ID of the attachment we are exporting
type: string
required: true
produces:
- application/json
security:
- UserSecurity: []
responses:
'200':
description: |-
200 response
/api/boards/{board}/cards/{card}/checklists:
get:
operationId: get_all_checklists

30
releases/clone-release-repos.sh Executable file
View file

@ -0,0 +1,30 @@
#!/bin/bash
# With this, clone all release related repos.
# 1) Check that this script has no parameters
if [ $# -ne 0 ]
then
echo "Syntax, no parameters:"
echo " ./releases/clone-release-repos.sh"
exit 1
fi
# 2) Create directories, clone repos
mkdir ../w
cd ../w
git clone git@github.com:wekan/wekan.github.io.git
git clone git@github.com:wekan/wekan-ondra.git
git clone git@github.com:wekan/wekan-gantt-gpl.git
# 3) Set upstreams
cd wekan-ondra
git remote add upstream https://github.com/wekan/wekan
cd ../wekan-gantt-gpl
git remote add upstream https://github.com/wekan/wekan
# 4) Go back to Wekan repo directory
cd ../wekan
echo "Release repos ondra, gantt-gpl, and website cloned and upstreams set."

View file

@ -3,6 +3,13 @@
# This script is only for Wekan maintainer to
# convert x64 bundle to arm64 bundle.
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./maintainer-make-bundle-a.sh 5.10"
exit 1
fi
cd ~/repos
rm -rf bundle
@ -21,13 +28,11 @@ sudo rm -rf /home/wekan/repos/bundle/programs/server/npm/node_modules/meteor/ost
cd bundle/programs/server
chmod u+w *.json
npm uninstall fibers node-gyp node-pre-gyp
npm install node-gyp@5.0.4 node-pre-gyp fibers
npm uninstall fibers node-gyp node-pre-gyp @mapbox/node-pre-gyp
npm install
npm uninstall fibers node-gyp node-pre-gyp
npm install node-pre-gyp
npm install node-gyp
npm install @mapbox/node-pre-gyp
npm install fibers
npm install node-gyp@5.0.4
cd /home/wekan/repos/bundle
find . -type d -name '*-garbage*' | xargs rm -rf

View file

@ -1,3 +1,20 @@
#!/bin/bash
# This script is only for Wekan maintainer to
# convert x64 bundle to ppc64le bundle.
# 1) Check that there is only one parameter
# of Wekan version number
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./maintainer-make-bundle-o.sh 5.10"
exit 1
fi
# 2) Build bundle
cd /home/ubuntu
rm -rf bundle
#wget https://releases.wekan.team/wekan-$1.zip
@ -7,7 +24,7 @@ chmod u+w *.json
cd /home/ubuntu/bundle/programs/server/node_modules/fibers
node build.js
cd /home/ubuntu
cp -pR /home/ubuntu/node-fibers/bin/linux-ppc64-72-glibc bundle/programs/server/node_modules/fibers/bin/
#cp -pR /home/ubuntu/node-fibers/bin/linux-ppc64-72-glibc bundle/programs/server/node_modules/fibers/bin/
cd bundle
find . -type d -name '*-garbage*' | xargs rm -rf
find . -name '*phantom*' | xargs rm -rf

View file

@ -1,3 +1,15 @@
#!/bin/bash
# This script is only for Wekan maintainer to
# convert x64 bundle to s390x bundle.
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./maintainer-make-bundle-s.sh 5.10"
exit 1
fi
cd /home/linux1
rm -rf bundle
unzip wekan-$1.zip

2
releases/node-version.sh Executable file
View file

@ -0,0 +1,2 @@
#!/bin/bash
cat ~/repos/wekan/Dockerfile | grep NODE_VERSION=v | sed 's|\\||g' - | sed 's| ||g' - | sed 's|NODE_VERSION=v||g' -

View file

@ -1,20 +0,0 @@
# Extract the OpenAPI specification.
# Install dependencies.
sudo apt-get install python3-pip
sudo pip3 install -U setuptools wheel
sudo npm install -g api2html
mkdir -p ~/python
cd ~/python
git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
cd ~/python/esprima-python
sudo python3 setup.py install --record files.txt
cd ~/repos/wekan
mkdir -p public/api
# Generate docs.
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
# Copy docs to bundle
#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser/app/

View file

@ -1,9 +1,41 @@
# Generate docs.
# Extract the OpenAPI specification.
#mkdir -p public/api
python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
# 1) Check that there is only one parameter
# of Wekan version number:
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./rebuild-docs.sh 5.10"
exit 1
fi
# 2) If esprima-python directory does not exist,
# install dependencies.
if [ ! -d ~/python/esprima-python ]; then
sudo apt-get -y install python3-pip
sudo pip3 install -U setuptools wheel
sudo npm install -g api2html
mkdir -p ~/python
cd ~/python
git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
cd ~/python/esprima-python
sudo python3 setup.py install --record files.txt
fi
# 2) Go to Wekan repo directory
cd ~/repos/wekan
# 3) Create api docs directory, if it does not exist
if [ ! -d public/api ]; then
mkdir -p public/api
fi
# 4) Generate docs.
#python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
python3 ./openapi/generate_openapi.py --release v$1 > ./public/api/wekan.yml
api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
# Copy docs to bundle
#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser/app/
#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser.legacy/app/

View file

@ -6,6 +6,9 @@ cd ~/repos/wekan/.build
zip -r wekan-$1.zip bundle
{
scp ~/repos/wekan/releases/maintainer-make-bundle-a.sh a:/home/wekan/repos/maintainer-make-bundle.sh
scp ~/repos/wekan/releases/maintainer-make-bundle-s.sh s:/home/linux1/maintainer-make-bundle.sh
scp ~/repos/wekan/releases/maintainer-make-bundle-o.sh o:/home/ubuntu/maintainer-make-bundle.sh
scp wekan-$1.zip x2:/var/snap/wekan/common/releases.wekan.team/
scp wekan-$1.zip a:/home/wekan/repos/
scp wekan-$1.zip s:/home/linux1/
@ -14,4 +17,4 @@ zip -r wekan-$1.zip bundle
cd ..
echo "Bundle uploaded to x2/a/s/o."
echo "x64 bundle and arm64/s390x/ppc64le build scripts uploaded to x2/a/s/o."

View file

@ -1,2 +1,18 @@
#!/bin/bash
# Release script for wekan-ondra and wekan-gantt-gpl
# part 1. After this merge and fix merge conflicts, and part 2.
# 1) Check that there is only one parameter
# of Wekan version number:
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./release-ondra-2.sh 5.10"
exit 1
fi
# 2) Get up
git fetch upstream
git merge upstream/master

View file

@ -1 +1,20 @@
#/bin/bash
# Release script for wekan-ondra and wekan-gantt-gpl
# part 2. Before these, part 1 and merge and fix merge conflicts.
# 1) Check that there is only one parameter
# of Wekan version number:
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./release-ondra-2.sh 5.10"
exit 1
fi
# 2) Move Wekan version tag to be newest after merge
# and push to repo.
git tag --force v$1 HEAD
git push --tags --force
git push --follow-tags

47
releases/release-website.sh Executable file
View file

@ -0,0 +1,47 @@
#!/bin/bash
# Release website with new Wekan version number
# and new API docs.
# 1) Check that there is only 2 parameters
# of Wekan previous and new version number:
if [ $# -ne 2 ]
then
echo "Syntax with Wekan previous and new version number:"
echo " ./release-website.sh 5.09 5.10"
exit 1
fi
# 2) Go to website directory
cd ~/repos/w/wekan.github.io
# 3) Get latest changes to website
git pull
# 4) Change version number in website
sed -i 's|v$1|v$2|g' index.html
# 5) Change version number in API docs index page
cd api
sed -i 's|v$1|v$2|g' index.html
# 6) Create directory for new docs
mkdir v$2
# 7) Go to new docs directory
cd v$2
# 8) Copy new docs from Wekan repo to new docs directory
cp ~/repos/wekan/public/api/* .
# 9) Move wekan.html to index.html
mv wekan.html index.html
# 10) Go to docs repo
cd ~/repos/w/wekan.github.io
# 11) Commit all changes to git and push website changes live
git add --all
git commit -m "v$2"
git push

View file

@ -1,21 +1,33 @@
# Usage: ./release.sh 4.37
#!/bin/bash
# Commit and push version number changes
# Release script for wekan.
# 1) Check that there is only one parameter
# of Wekan version number:
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./release.sh 5.10"
exit 1
fi
# 2) Commit and push version number changes
cd ~/repos/wekan
git add --all
git commit -m "v$1"
git push
# Add release tag
# 3) Add release tag
~/repos/wekan/releases/add-tag.sh v$1
# Push to repo
# 4) Push to repo
git push
# Build Bundle
# 5) Build Bundle
~/repos/wekan/releases/release-bundle.sh $1
# Build Sandstorm
# 6) Build Sandstorm
~/repos/wekan/releases/release-sandstorm.sh $1
# Build Snap

View file

@ -1,2 +1,17 @@
#!/bin/bash
# 1) Check that there is only one parameter
# of Wekan version number
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./up-a.sh 5.10"
exit 1
fi
# 2) Download release from arm64 build server
scp a:/home/wekan/repos/wekan-$1-arm64.zip .
# 3) Upload arm64 release to download server
scp wekan-$1-arm64.zip x2:/var/snap/wekan/common/releases.wekan.team/raspi3/

View file

@ -1,2 +1,17 @@
#!/bin/bash
# 1) Check that there is only one parameter
# of Wekan version number
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./up-o.sh 5.10"
exit 1
fi
# 2) Download release from ppc64le build server
scp o:/home/ubuntu/wekan-$1-ppc64le.zip .
# 3) Upload ppc64le release to download server
scp wekan-$1-ppc64le.zip x2:/var/snap/wekan/common/releases.wekan.team/ppc64le/

View file

@ -1,2 +1,17 @@
#!/bin/bash
# 1) Check that there is only one parameter
# of Wekan version number
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./up-s.sh 5.10"
exit 1
fi
# 2) Download release from s390x build server
scp s:/home/linux1/wekan-$1-s390x.zip .
# 3) Upload s390x release to download server
scp wekan-$1-s390x.zip x2:/var/snap/wekan/common/releases.wekan.team/s390x/

View file

@ -1,7 +1,22 @@
#!/bin/bash
# 1) Check that there is only one parameter
# of Wekan version number
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./maintainer-make-bundle-o.sh 5.10"
exit 1
fi
# 2) Install parallel if it's not installed yet
sudo apt-get -y install parallel
# 3) Download releases from build servers and
# upload releases to download server,
# all at the same time in parallel.
{
~/repos/wekan/releases/up-a.sh $1
~/repos/wekan/releases/up-s.sh $1

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 = 509,
appVersion = 513,
# Increment this for every release.
appMarketingVersion = (defaultText = "5.09.0~2021-03-26"),
appMarketingVersion = (defaultText = "5.13.0~2021-03-28"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,

View file

@ -0,0 +1,53 @@
Meteor.methods({
moveSwimlane(swimlaneId, toBoardId) {
check(swimlaneId, String);
check(toBoardId, String);
const swimlane = Swimlanes.findOne(swimlaneId);
const fromBoard = Boards.findOne(swimlane.boardId);
const toBoard = Boards.findOne(toBoardId);
if (swimlane && toBoard) {
swimlane.lists().forEach(list => {
const toList = Lists.findOne({
boardId: toBoardId,
title: list.title,
archived: false,
});
let toListId;
if (toList) {
toListId = toList._id;
} else {
toListId = Lists.insert({
title: list.title,
boardId: toBoardId,
type: list.type,
archived: false,
wipLimit: list.wipLimit,
});
}
Cards.find({
listId: list._id,
swimlaneId,
}).forEach(card => {
card.move(toBoardId, swimlaneId, toListId);
});
});
Swimlanes.update(swimlaneId, {
$set: {
boardId: toBoardId,
},
});
// make sure there is a default swimlane
fromBoard.getDefaultSwimline();
return true;
}
return false;
},
});