mirror of
https://github.com/wekan/wekan.git
synced 2026-01-20 16:26:09 +01:00
Merge branch 'master' of https://github.com/wekan/wekan into search
This commit is contained in:
commit
238b0f0725
99 changed files with 2611 additions and 3329 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
61
CHANGELOG.md
61
CHANGELOG.md
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ template(name="editor")
|
|||
class="{{class}}"
|
||||
id=id
|
||||
autofocus=autofocus
|
||||
data-meteor-emoji="true"
|
||||
placeholder="{{_ 'comment-placeholder'}}")
|
||||
+Template.contentBlock
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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'}}
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
4881
package-lock.json
generated
File diff suppressed because it is too large
Load diff
45
package.json
45
package.json
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
30
releases/clone-release-repos.sh
Executable 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."
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
2
releases/node-version.sh
Executable 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' -
|
||||
|
|
@ -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/
|
||||
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
47
releases/release-website.sh
Executable 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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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/
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
53
server/publications/swimlanes.js
Normal file
53
server/publications/swimlanes.js
Normal 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;
|
||||
},
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue