mirror of
https://github.com/wekan/wekan.git
synced 2026-11-06 10:45:03 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c826438328 | ||
|
|
e39390ab92 | ||
|
|
120f57894f | ||
|
|
b89a01fddf | ||
|
|
21e4a64dc7 | ||
|
|
4aeab872de | ||
|
|
a0a2c9375e | ||
|
|
d1dd9ba955 | ||
|
|
e48db7d7ea | ||
|
|
239dea793a | ||
|
|
b0ce378629 | ||
|
|
7de50c0f4b | ||
|
|
07926386ea | ||
|
|
f1c962fbbc | ||
|
|
5d79c231ed | ||
|
|
972f0481e5 | ||
|
|
49781aae17 | ||
|
|
51f22f48dc | ||
|
|
a64381153f | ||
|
|
10280966ac | ||
|
|
16ad6bf9fc | ||
|
|
1aa5c23bba | ||
|
|
9216a69c05 | ||
|
|
7b2cff4c5e | ||
|
|
bf42958059 | ||
|
|
1deccf2f4b | ||
|
|
57755ef413 | ||
|
|
c2cf850179 | ||
|
|
67838ae29e | ||
|
|
4d22477477 | ||
|
|
96b5ed1df6 | ||
|
|
b9ec43c0f7 | ||
|
|
8a0899a819 | ||
|
|
e390852a67 | ||
|
|
c4083c23d6 | ||
|
|
bdc751ac24 | ||
|
|
0e23975964 | ||
|
|
ad53414c4d | ||
|
|
23e01130e9 | ||
|
|
f779c35d0e |
No files matched your search
+6
-6
@@ -6,7 +6,7 @@
|
||||
meteor-base@1.5.1
|
||||
|
||||
# Build system
|
||||
ecmascript@0.16.5
|
||||
ecmascript@0.16.6
|
||||
standard-minifier-js@2.8.1
|
||||
mquandalle:jade
|
||||
coffeescript@2.4.1!
|
||||
@@ -21,11 +21,11 @@ cottz:publish-relations
|
||||
dburles:collection-helpers
|
||||
idmontie:migrations
|
||||
easy:search
|
||||
mongo@1.16.4
|
||||
mongo@1.16.5
|
||||
mquandalle:collection-mutations
|
||||
|
||||
# Account system
|
||||
accounts-password@2.3.3
|
||||
accounts-password@2.3.4
|
||||
useraccounts:core
|
||||
useraccounts:flow-routing
|
||||
useraccounts:unstyled
|
||||
@@ -43,8 +43,8 @@ jquery@1.11.10
|
||||
random@1.2.1
|
||||
reactive-dict@1.3.1
|
||||
session@1.2.1
|
||||
tracker@1.3.0
|
||||
underscore@1.0.11
|
||||
tracker@1.3.1
|
||||
underscore@1.0.12
|
||||
arillo:flow-router-helpers
|
||||
audit-argument-checks@1.0.7
|
||||
kadira:blaze-layout
|
||||
@@ -67,7 +67,7 @@ templates:tabs
|
||||
meteor-autosize
|
||||
rajit:bootstrap3-datepicker
|
||||
shell-server@0.5.0
|
||||
email@2.2.3
|
||||
email@2.2.4
|
||||
horka:swipebox
|
||||
dynamic-import@0.7.2
|
||||
cfs:gridfs
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@2.10.0
|
||||
METEOR@2.11.0
|
||||
+18
-18
@@ -1,6 +1,6 @@
|
||||
accounts-base@2.2.6
|
||||
accounts-base@2.2.7
|
||||
accounts-oauth@1.4.2
|
||||
accounts-password@2.3.3
|
||||
accounts-password@2.3.4
|
||||
aldeed:collection2@2.10.0
|
||||
aldeed:collection2-core@1.2.0
|
||||
aldeed:schema-deny@1.1.0
|
||||
@@ -10,7 +10,7 @@ allow-deny@1.1.1
|
||||
arillo:flow-router-helpers@0.5.2
|
||||
audit-argument-checks@1.0.7
|
||||
autoupdate@1.8.0
|
||||
babel-compiler@7.10.2
|
||||
babel-compiler@7.10.3
|
||||
babel-runtime@1.5.1
|
||||
base64@1.0.12
|
||||
binary-heap@1.0.11
|
||||
@@ -39,7 +39,7 @@ cfs:tempstore@0.1.6
|
||||
cfs:upload-http@0.0.20
|
||||
cfs:worker@0.1.5
|
||||
check@1.3.2
|
||||
coffeescript@2.4.1
|
||||
coffeescript@2.7.0
|
||||
coffeescript-compiler@2.4.1
|
||||
communitypackages:picker@1.1.0
|
||||
cottz:publish-relations@2.0.8
|
||||
@@ -56,12 +56,12 @@ easy:search@2.2.1
|
||||
easylogic:summernote@0.8.8
|
||||
easysearch:components@2.2.2
|
||||
easysearch:core@2.2.2
|
||||
ecmascript@0.16.5
|
||||
ecmascript@0.16.6
|
||||
ecmascript-runtime@0.8.0
|
||||
ecmascript-runtime-client@0.12.1
|
||||
ecmascript-runtime-server@0.11.0
|
||||
ejson@1.1.3
|
||||
email@2.2.3
|
||||
email@2.2.4
|
||||
es5-shim@4.8.0
|
||||
fetch@0.1.3
|
||||
fortawesome:fontawesome@4.7.0
|
||||
@@ -82,10 +82,10 @@ konecty:mongo-counter@0.0.5_3
|
||||
livedata@1.0.18
|
||||
lmieulet:meteor-coverage@1.1.4
|
||||
localstorage@1.2.0
|
||||
logging@1.3.1
|
||||
matb33:collection-hooks@1.2.0
|
||||
logging@1.3.2
|
||||
matb33:collection-hooks@1.2.1
|
||||
mdg:validation-error@0.5.1
|
||||
meteor@1.11.0
|
||||
meteor@1.11.1
|
||||
meteor-autosize@5.0.1
|
||||
meteor-base@1.5.1
|
||||
meteorhacks:aggregate@1.3.0
|
||||
@@ -93,17 +93,17 @@ meteorhacks:collection-utils@1.2.0
|
||||
meteorhacks:picker@1.0.3
|
||||
meteorhacks:subs-manager@1.6.4
|
||||
meteortesting:browser-tests@1.4.2
|
||||
meteortesting:mocha@2.0.4
|
||||
meteortesting:mocha@2.1.0
|
||||
meteortesting:mocha-core@8.0.1
|
||||
minifier-css@1.6.2
|
||||
minifier-js@2.7.5
|
||||
minifiers@1.1.8-faster-rebuild.0
|
||||
minimongo@1.9.1
|
||||
minimongo@1.9.2
|
||||
modern-browsers@0.1.9
|
||||
modules@0.19.0
|
||||
modules-runtime@0.13.1
|
||||
momentjs:moment@2.29.3
|
||||
mongo@1.16.4
|
||||
mongo@1.16.5
|
||||
mongo-decimal@0.1.3
|
||||
mongo-dev-server@1.1.0
|
||||
mongo-id@1.0.8
|
||||
@@ -116,8 +116,8 @@ mquandalle:jade-compiler@0.4.5
|
||||
mquandalle:jquery-textcomplete@0.8.0_1
|
||||
mquandalle:mousetrap-bindglobal@0.0.1
|
||||
msavin:usercache@1.8.0
|
||||
npm-mongo@4.12.1
|
||||
oauth@2.1.3
|
||||
npm-mongo@4.14.0
|
||||
oauth@2.2.0
|
||||
oauth2@1.3.2
|
||||
observe-sequence@1.0.20
|
||||
ongoworks:speakingurl@1.1.0
|
||||
@@ -188,7 +188,7 @@ rajit:bootstrap3-datepicker-zh-cn@1.7.1
|
||||
rajit:bootstrap3-datepicker-zh-tw@1.7.1
|
||||
random@1.2.1
|
||||
rate-limit@1.0.9
|
||||
react-fast-refresh@0.2.5
|
||||
react-fast-refresh@0.2.6
|
||||
reactive-dict@1.3.1
|
||||
reactive-var@1.0.12
|
||||
reload@1.3.1
|
||||
@@ -213,15 +213,15 @@ templating@1.4.1
|
||||
templating-compiler@1.4.1
|
||||
templating-runtime@1.5.0
|
||||
templating-tools@1.2.2
|
||||
tracker@1.3.0
|
||||
tracker@1.3.1
|
||||
twbs:bootstrap@3.3.6
|
||||
ui@1.0.13
|
||||
underscore@1.0.11
|
||||
underscore@1.0.12
|
||||
url@1.3.2
|
||||
useraccounts:core@1.16.2
|
||||
useraccounts:flow-routing@1.15.0
|
||||
useraccounts:unstyled@1.14.2
|
||||
webapp@1.13.3
|
||||
webapp@1.13.4
|
||||
webapp-hashing@1.1.1
|
||||
wekan-accounts-cas@0.1.0
|
||||
wekan-accounts-lockout@1.0.0
|
||||
|
||||
@@ -10,6 +10,82 @@ Note:
|
||||
|
||||
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
|
||||
|
||||
# v6.80 2023-03-23 WeKan ® release
|
||||
|
||||
This release adds the following improvements:
|
||||
|
||||
- [Helm Charts secretEnv: Modify secret and deployment to allow users to provide secretEnv with empty value](https://github.com/wekan/charts/pull/13).
|
||||
Thanks to jehutyy.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Custom Fields, display Grid Button only if more than 1 custom field](https://github.com/wekan/wekan/pull/4864).
|
||||
Thanks to mfilser.
|
||||
- Helm Charts: Add missing data-storage as pvc for WRITABLE_PATH.
|
||||
[Part 1](https://github.com/wekan/charts/issues/14),
|
||||
[Part 2](https://github.com/wekan/charts/pull/15),
|
||||
[Part 3](https://github.com/wekan/charts/pull/16).
|
||||
Thanks to Nightreaver, NotTheEvilOne and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v6.79 2023-03-22 WeKan ® release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Upgraded to Meteor 2.11.0](https://github.com/wekan/wekan/commit/e48db7d7ea7e70dc767576126be35927ced24ee5).
|
||||
Thanks to Meteor developers.
|
||||
- [Use MongoDB 6](https://github.com/wekan/wekan/commit/4aeab872de2c9d0365a4b8872b6b015a36666615).
|
||||
Thanks to to MongoDB.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Avatar upload was broken if no size is configured](https://github.com/wekan/wekan/pull/4857).
|
||||
Thanks to mfilser.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v6.78 2023-02-28 WeKan ® release
|
||||
|
||||
This release fixes the following CRITICAL SECURITY ISSUES:
|
||||
|
||||
- [Try to fix some security issue](https://github.com/wekan/wekan/commit/5d79c231ed3cfc09636ab678b3f62ea9f36160f2).
|
||||
Thanks to Responsible Security Disclousure contributors and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v6.77 2023-02-27 WeKan ® release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- Updated release scripts
|
||||
[Part 1](https://github.com/wekan/wekan/commit/23e01130e907f0068333046dc4b88a471b781ce7),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/ad53414c4d415b93e808ec88cc36af5a4741f681),
|
||||
[Part 3](https://github.com/wekan/wekan/commit/e390852a673be25e00cb397acf4dbdc5a7d2a1f9).
|
||||
Updated release scripts.
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fixed indentation for image size and compression in docker-compose.yml](https://github.com/wekan/wekan/pull/4846).
|
||||
Thanks to Entepotenz.
|
||||
- [Made ☰ menu buttons bigger at minicard and list, they were too hard to click when they were small](https://github.com/wekan/wekan/commit/c2cf850179ad0079d83561675b6dc2c59825cc11).
|
||||
Thanks to mohammadZahedian and xet7.
|
||||
- [Added "Move card to archive" to minicard ☰ menu](https://github.com/wekan/wekan/commit/1deccf2f4b5ba1a72bc76d5ae83858e6c50b36ae).
|
||||
Thanks to mohammadZahedian and xet7.
|
||||
- [Fix attachment migration error about avatarUrl startsWith undefined](https://github.com/wekan/wekan/commit/7b2cff4c5e7bae4971776638b680696596edc7e6).
|
||||
Thanks to xet7.
|
||||
- Try to fix attachment migrations to ostrioFiles, allow existing files to be migrated.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/9216a69c0541325be6941c07d256b07627a8ec73),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/16ad6bf9fc75b39e6e8cedb8a5a98ec963ccf14a).
|
||||
Thanks to xet7.
|
||||
- [MongoDB to 5 for beta Snap. MongoDB 5 does not seem to show some errors that only MongoDB 6 has](https://github.com/wekan/wekan/commit/a64381153fd762b67f2a752b590b2cdd196bcfe5).
|
||||
Thanks to xet7.
|
||||
- [Use MongoDB 5 at docker-compose.yml](https://github.com/wekan/wekan/commit/51f22f48dc916717ed6be9502dc767798692f07b).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v6.76 2023-02-22 WeKan ® release
|
||||
|
||||
This release adds the following updates:
|
||||
@@ -52,6 +128,8 @@ and fixes the following bugs:
|
||||
Thanks to garciadavy.
|
||||
- [Swipebox slide background gradient of black to blue, so that back SVG images are visible](https://github.com/wekan/wekan/commit/c3577aa434ac5330d664f17d0771ff9679cced86).
|
||||
Thanks to xet7.
|
||||
- [Fix typo](https://github.com/wekan/wekan/pull/4840).
|
||||
Thanks to robert-scheck.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v6.76.0"
|
||||
appVersion: "v6.80.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -266,12 +266,14 @@ template(name="cardDetails")
|
||||
i.fa.fa-list-alt
|
||||
= definition.name
|
||||
+cardCustomField
|
||||
.material-toggle-switch(title="{{_ 'change'}} {{_ 'custom-fields'}} {{_ 'layout'}}")
|
||||
if customFieldsGrid
|
||||
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton")
|
||||
label.toggle-label(for="toggleCustomFieldsGridButton")
|
||||
|
||||
if $gt customFieldsWD.length 1
|
||||
.material-toggle-switch(title="{{_ 'change'}} {{_ 'custom-fields'}} {{_ 'layout'}}")
|
||||
if customFieldsGrid
|
||||
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleCustomFieldsGridButton")
|
||||
label.toggle-label(for="toggleCustomFieldsGridButton")
|
||||
a.fa.fa-plus.js-custom-fields.card-details-item.custom-fields(title="{{_ 'custom-fields'}}")
|
||||
|
||||
if getVoteQuestion
|
||||
|
||||
@@ -45,12 +45,12 @@
|
||||
}
|
||||
.minicard-details-menu-with-handle {
|
||||
float: right;
|
||||
font-size: 14px;
|
||||
font-size: 18px;
|
||||
padding-right: 30px;
|
||||
}
|
||||
.minicard-details-menu {
|
||||
float: right;
|
||||
font-size: 14px;
|
||||
font-size: 18px;
|
||||
}
|
||||
@media print {
|
||||
.minicard-details-menu,
|
||||
|
||||
@@ -172,6 +172,12 @@ template(name="minicardDetailsActionsPopup")
|
||||
i.fa.fa-copy
|
||||
| {{_ 'copyCardPopup-title'}}
|
||||
hr
|
||||
li
|
||||
a.js-archive
|
||||
i.fa.fa-arrow-right
|
||||
i.fa.fa-archive
|
||||
| {{_ 'archive-card'}}
|
||||
hr
|
||||
li
|
||||
a.js-move-card-to-top
|
||||
i.fa.fa-arrow-up
|
||||
|
||||
@@ -168,4 +168,9 @@ Template.minicardDetailsActionsPopup.events({
|
||||
this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1);
|
||||
Popup.back();
|
||||
},
|
||||
'click .js-archive': Popup.afterConfirm('cardArchive', function () {
|
||||
Popup.close();
|
||||
this.archive();
|
||||
Utils.goBoardId(this.boardId);
|
||||
}),
|
||||
});
|
||||
@@ -112,6 +112,9 @@
|
||||
color: #4d4d4d;
|
||||
padding-left: 4px;
|
||||
}
|
||||
.js-open-list-menu {
|
||||
font-size: 18px;
|
||||
}
|
||||
.list-body {
|
||||
flex: 1 1 auto;
|
||||
flex-direction: column;
|
||||
|
||||
+2
-2
@@ -287,8 +287,8 @@ services:
|
||||
#---------------------------------------------------------------
|
||||
# ==== Allow to shrink attached/pasted image ====
|
||||
# https://github.com/wekan/wekan/pull/2544
|
||||
#-MAX_IMAGE_PIXEL=1024
|
||||
#-IMAGE_COMPRESS_RATIO=80
|
||||
#- MAX_IMAGE_PIXEL=1024
|
||||
#- IMAGE_COMPRESS_RATIO=80
|
||||
#---------------------------------------------------------------
|
||||
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
|
||||
# Number of days after a notification is read before we remove it.
|
||||
|
||||
+1203
-1203
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -134,7 +134,7 @@
|
||||
"attachmentDeletePopup-title": "Anhang löschen?",
|
||||
"attachments": "Anhänge",
|
||||
"auto-watch": "Neue Boards nach Erstellung automatisch beobachten",
|
||||
"avatar-too-big": "Das Profilbild ist zu groß (520KB max)",
|
||||
"avatar-too-big": "Das Profilbild ist zu groß (__size__ max)",
|
||||
"back": "Zurück",
|
||||
"board-change-color": "Farbe ändern",
|
||||
"show-at-all-boards-page": "Zeige auf \"Alle Boards\" Seite",
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
"attachmentDeletePopup-title": "Delete Attachment?",
|
||||
"attachments": "Attachments",
|
||||
"auto-watch": "Automatically watch boards when they are created",
|
||||
"avatar-too-big": "The avatar is too large (520KB max)",
|
||||
"avatar-too-big": "The avatar is too large (__size__ max)",
|
||||
"back": "Back",
|
||||
"board-change-color": "Change color",
|
||||
"show-at-all-boards-page" : "Show at All Boards page",
|
||||
|
||||
+7
-4
@@ -3,10 +3,13 @@ import { FilesCollection } from 'meteor/ostrio:files';
|
||||
import { formatFleURL } from 'meteor/ostrio:files/lib';
|
||||
import { isFileValid } from './fileValidation';
|
||||
import { createBucket } from './lib/grid/createBucket';
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import FileStoreStrategyFactory, { FileStoreStrategyFilesystem, FileStoreStrategyGridFs, STORAGE_NAME_FILESYSTEM } from '/models/lib/fileStoreStrategy';
|
||||
|
||||
const filesize = require('filesize');
|
||||
|
||||
let avatarsUploadExternalProgram;
|
||||
let avatarsUploadMimeTypes = [];
|
||||
let avatarsUploadSize = 72000;
|
||||
@@ -20,10 +23,10 @@ if (Meteor.isServer) {
|
||||
}
|
||||
|
||||
if (process.env.AVATARS_UPLOAD_MAX_SIZE) {
|
||||
avatarsUploadSize = parseInt(process.env.AVATARS_UPLOAD_MAX_SIZE);
|
||||
avatarsUploadSize_ = parseInt(process.env.AVATARS_UPLOAD_MAX_SIZE);
|
||||
|
||||
if (isNaN(avatarsUploadSize)) {
|
||||
avatarsUploadSize = 0
|
||||
if (_.isNumber(avatarsUploadSize_) && avatarsUploadSize_ > 0) {
|
||||
avatarsUploadSize = avatarsUploadSize_;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +87,7 @@ Avatars = new FilesCollection({
|
||||
if (file.size <= avatarsUploadSize && file.type.startsWith('image/')) {
|
||||
return true;
|
||||
}
|
||||
return 'avatar-too-big';
|
||||
return TAPi18n.__('avatar-too-big', {size: filesize(avatarsUploadSize)});
|
||||
},
|
||||
onAfterUpload(fileObj) {
|
||||
// current storage is the filesystem, update object and database
|
||||
|
||||
+34
-29
@@ -1,4 +1,5 @@
|
||||
import escapeForRegex from 'escape-string-regexp';
|
||||
import DOMPurify from 'dompurify';
|
||||
|
||||
CardComments = new Mongo.Collection('card_comments');
|
||||
|
||||
@@ -101,39 +102,43 @@ CardComments.helpers({
|
||||
},
|
||||
|
||||
toggleReaction(reactionCodepoint) {
|
||||
|
||||
const cardCommentReactions = CardCommentReactions.findOne({cardCommentId: this._id});
|
||||
const reactions = !!cardCommentReactions ? cardCommentReactions.reactions : [];
|
||||
const userId = Meteor.userId();
|
||||
const reaction = reactions.find(r => r.reactionCodepoint === reactionCodepoint);
|
||||
|
||||
// If no reaction is set for the codepoint, add this
|
||||
if (!reaction) {
|
||||
reactions.push({ reactionCodepoint, userIds: [userId] });
|
||||
if (reactionCodepoint !== DOMPurify.sanitize(reactionCodepoint)) {
|
||||
return false;
|
||||
} else {
|
||||
|
||||
// toggle user reaction upon previous reaction state
|
||||
const userHasReacted = reaction.userIds.includes(userId);
|
||||
if (userHasReacted) {
|
||||
reaction.userIds.splice(reaction.userIds.indexOf(userId), 1);
|
||||
if (reaction.userIds.length === 0) {
|
||||
reactions.splice(reactions.indexOf(reaction), 1);
|
||||
}
|
||||
const cardCommentReactions = CardCommentReactions.findOne({cardCommentId: this._id});
|
||||
const reactions = !!cardCommentReactions ? cardCommentReactions.reactions : [];
|
||||
const userId = Meteor.userId();
|
||||
const reaction = reactions.find(r => r.reactionCodepoint === reactionCodepoint);
|
||||
|
||||
// If no reaction is set for the codepoint, add this
|
||||
if (!reaction) {
|
||||
reactions.push({ reactionCodepoint, userIds: [userId] });
|
||||
} else {
|
||||
reaction.userIds.push(userId);
|
||||
}
|
||||
}
|
||||
|
||||
// If no reaction doc exists yet create otherwise update reaction set
|
||||
if (!!cardCommentReactions) {
|
||||
return CardCommentReactions.update({ _id: cardCommentReactions._id }, { $set: { reactions } });
|
||||
} else {
|
||||
return CardCommentReactions.insert({
|
||||
boardId: this.boardId,
|
||||
cardCommentId: this._id,
|
||||
cardId: this.cardId,
|
||||
reactions
|
||||
});
|
||||
// toggle user reaction upon previous reaction state
|
||||
const userHasReacted = reaction.userIds.includes(userId);
|
||||
if (userHasReacted) {
|
||||
reaction.userIds.splice(reaction.userIds.indexOf(userId), 1);
|
||||
if (reaction.userIds.length === 0) {
|
||||
reactions.splice(reactions.indexOf(reaction), 1);
|
||||
}
|
||||
} else {
|
||||
reaction.userIds.push(userId);
|
||||
}
|
||||
}
|
||||
|
||||
// If no reaction doc exists yet create otherwise update reaction set
|
||||
if (!!cardCommentReactions) {
|
||||
return CardCommentReactions.update({ _id: cardCommentReactions._id }, { $set: { reactions } });
|
||||
} else {
|
||||
return CardCommentReactions.insert({
|
||||
boardId: this.boardId,
|
||||
cardCommentId: this._id,
|
||||
cardId: this.cardId,
|
||||
reactions
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+24
-22
@@ -13,35 +13,37 @@ if (Meteor.isServer) {
|
||||
export async function isFileValid(fileObj, mimeTypesAllowed, sizeAllowed, externalCommandLine) {
|
||||
let isValid = true;
|
||||
|
||||
if (mimeTypesAllowed.length) {
|
||||
const mimeTypeResult = await FileType.fromFile(fileObj.path);
|
||||
if (Meteor.settings.public.ostrioFilesMigrationInProgress !== "true") {
|
||||
if (mimeTypesAllowed.length) {
|
||||
const mimeTypeResult = await FileType.fromFile(fileObj.path);
|
||||
|
||||
const mimeType = (mimeTypeResult ? mimeTypeResult.mime : fileObj.type);
|
||||
const baseMimeType = mimeType.split('/', 1)[0];
|
||||
const mimeType = (mimeTypeResult ? mimeTypeResult.mime : fileObj.type);
|
||||
const baseMimeType = mimeType.split('/', 1)[0];
|
||||
|
||||
isValid = mimeTypesAllowed.includes(mimeType) || mimeTypesAllowed.includes(baseMimeType + '/*') || mimeTypesAllowed.includes('*');
|
||||
isValid = mimeTypesAllowed.includes(mimeType) || mimeTypesAllowed.includes(baseMimeType + '/*') || mimeTypesAllowed.includes('*');
|
||||
|
||||
if (!isValid) {
|
||||
console.log("Validation of uploaded file failed: file " + fileObj.path + " - mimetype " + mimeType);
|
||||
if (!isValid) {
|
||||
console.log("Validation of uploaded file failed: file " + fileObj.path + " - mimetype " + mimeType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isValid && sizeAllowed && fileObj.size > sizeAllowed) {
|
||||
console.log("Validation of uploaded file failed: file " + fileObj.path + " - size " + fileObj.size);
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (isValid && externalCommandLine) {
|
||||
await asyncExec(externalCommandLine.replace("{file}", '"' + fileObj.path + '"'));
|
||||
isValid = fs.existsSync(fileObj.path);
|
||||
|
||||
if (!isValid) {
|
||||
console.log("Validation of uploaded file failed: file " + fileObj.path + " has been deleted externally");
|
||||
if (isValid && sizeAllowed && fileObj.size > sizeAllowed) {
|
||||
console.log("Validation of uploaded file failed: file " + fileObj.path + " - size " + fileObj.size);
|
||||
isValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
console.debug("Validation of uploaded file successful: file " + fileObj.path);
|
||||
if (isValid && externalCommandLine) {
|
||||
await asyncExec(externalCommandLine.replace("{file}", '"' + fileObj.path + '"'));
|
||||
isValid = fs.existsSync(fileObj.path);
|
||||
|
||||
if (!isValid) {
|
||||
console.log("Validation of uploaded file failed: file " + fileObj.path + " has been deleted externally");
|
||||
}
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
console.debug("Validation of uploaded file successful: file " + fileObj.path);
|
||||
}
|
||||
}
|
||||
|
||||
return isValid;
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v6.76.0",
|
||||
"version": "v6.80.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v6.76.0",
|
||||
"version": "v6.80.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"repository": {
|
||||
|
||||
@@ -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 v6.76</title>
|
||||
<title>Wekan REST API v6.80</title>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -1558,7 +1558,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 v6.76">Wekan REST API v6.76</a>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v6.80">Wekan REST API v6.80</a>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -2161,7 +2161,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 v6.76</h1>
|
||||
<h1 id="wekan-rest-api">Wekan REST API v6.80</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: v6.76
|
||||
version: v6.80
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ rm -rf bundle
|
||||
rm wekan-$1-arm64.zip
|
||||
#rm wekan-$1.zip
|
||||
#wget https://releases.wekan.team/wekan-$1.zip
|
||||
7z x wekan-$1.zip
|
||||
7z x wekan-$1-amd64.zip
|
||||
|
||||
(cd bundle/programs/server && chmod u+w *.json && cd node_modules/fibers && node build.js)
|
||||
#cd ../../../..
|
||||
|
||||
@@ -15,9 +15,7 @@ sudo npm -g uninstall node-pre-gyp
|
||||
sudo npm -g install @mapbox/node-pre-gyp
|
||||
rm -rf bundle
|
||||
rm wekan-$1-ppc64le.zip
|
||||
#rm wekan-$1.zip
|
||||
#wget https://releases.wekan.team/wekan-$1.zip
|
||||
7z x wekan-$1.zip
|
||||
7z x wekan-$1-amd64.zip
|
||||
|
||||
(cd bundle/programs/server && chmod u+w *.json && cd node_modules/fibers && node build.js)
|
||||
#cd ../../../..
|
||||
|
||||
@@ -29,8 +29,8 @@ rm -rf bundle
|
||||
rm wekan-$1-s390x.zip
|
||||
|
||||
#rm wekan-$1.zip
|
||||
#wget https://releases.wekan.team/wekan-$1.zip
|
||||
7za x wekan-$1.zip
|
||||
#wget https://releases.wekan.team/wekan-$1-amd64.zip
|
||||
7za x wekan-$1-amd64.zip
|
||||
|
||||
(cd bundle/programs/server && chmod u+w *.json && cd node_modules/fibers && node build.js)
|
||||
#cd ../../../..
|
||||
|
||||
@@ -6,11 +6,11 @@ ECHO 1) Deleting old bundle
|
||||
CALL DEL /F /S /Q bundle
|
||||
|
||||
ECHO 2) Downloading new WeKan.zip
|
||||
CALL DEL wekan-%1.zip
|
||||
CALL wget https://releases.wekan.team/wekan-%1.zip
|
||||
CALL DEL wekan-%1-amd64.zip
|
||||
CALL wget https://releases.wekan.team/wekan-%1-amd64.zip
|
||||
|
||||
ECHO 3) Unarchiving new WeKan
|
||||
CALL 7z x wekan-%1.zip
|
||||
CALL 7z x wekan-%1-amd64.zip
|
||||
|
||||
ECHO 4) Reinstalling bcrypt
|
||||
cmd /c "CD bundle\programs\server\npm\node_modules\meteor\accounts-password && npm remove bcrypt && npm install bcrypt"
|
||||
|
||||
+1
-1
@@ -11,4 +11,4 @@ fi
|
||||
mkdir ~/rel$1
|
||||
mv ~/repos/wekan/wekan-$1*.zip /home/wekan/rel$1/
|
||||
mv ~/Julkinen/wekan-$1*.zip /home/wekan/rel$1/
|
||||
mv /home/wekan/repos/wekan/.build/wekan-$1.zip /home/wekan/rel$1/wekan-$1-amd64.zip
|
||||
mv /home/wekan/repos/wekan/.build/wekan-$1-amd64.zip /home/wekan/rel$1/wekan-$1-amd64.zip
|
||||
@@ -3,16 +3,16 @@ sudo apt-get -y install parallel
|
||||
./releases/rebuild-release.sh
|
||||
#./releases/delete-phantomjs.sh
|
||||
cd ~/repos/wekan/.build
|
||||
zip -r wekan-$1.zip bundle
|
||||
zip -r wekan-$1-amd64.zip bundle
|
||||
|
||||
{
|
||||
scp ~/repos/wekan/releases/build-bundle-arm64.sh a:/home/wekan/
|
||||
scp ~/repos/wekan/releases/build-bundle-s390x.sh s:/home/linux1/
|
||||
#scp ~/repos/wekan/releases/build-bundle-ppc64el.sh o:/home/ubuntu/
|
||||
scp ~/repos/wekan/releases/release-x2.sh x2:/data/websites/
|
||||
scp wekan-$1.zip x2:/data/websites/releases.wekan.team/
|
||||
scp wekan-$1.zip a:/home/wekan/
|
||||
scp wekan-$1.zip s:/home/linux1/
|
||||
scp wekan-$1-amd64.zip x2:/data/websites/releases.wekan.team/
|
||||
scp wekan-$1-amd64.zip a:/home/wekan/
|
||||
scp wekan-$1-amd64.zip s:/home/linux1/
|
||||
#scp wekan-$1.zip o:/home/ubuntu/
|
||||
} | parallel -k
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ meteor-spk pack wekan-$1.spk
|
||||
spk publish wekan-$1.spk
|
||||
|
||||
# Upload spk to https://releases.wekan.team/sandstorm/
|
||||
scp wekan-$1.spk x2:/var/websites/releases.wekan.team/public/sandstorm/
|
||||
scp wekan-$1.spk x2:/data/websites/releases.wekan.team/dev/sandstorm/
|
||||
|
||||
# Delete old temporary build directory
|
||||
rm -rf ~/repos/wekan/.meteor-spk
|
||||
+8
-21
@@ -8,51 +8,38 @@ if [ $# -ne 2 ]
|
||||
fi
|
||||
|
||||
echo "Release: x64"
|
||||
cd /data/websites/releases.wekan.team/public
|
||||
cd /data/websites/releases.wekan.team
|
||||
mkdir -p /data/websites/old-releases
|
||||
mv wekan-$1.zip /data/websites/old-releases/
|
||||
#mv SHA256SUMS.txt x64-SHA256SUMS.txt
|
||||
#cat x64-SHA256SUMS.txt | grep -v wekan-$1.zip > SHA256SUMS.txt
|
||||
#rm x64-SHA256SUMS.txt
|
||||
cp wekan-$2.zip wekan-latest-x64.zip
|
||||
mv wekan-$1-amd64.zip /data/websites/old-releases/
|
||||
cp wekan-$2-amd64.zip wekan-latest-amd64.zip
|
||||
cp wekan-$2-amd64.zip wekan-$2.zip
|
||||
sha256sum wekan-*.zip > SHA256SUMS.txt
|
||||
|
||||
echo "Release: x64 windows"
|
||||
cd /data/websites/releases.wekan.team/public/windows
|
||||
cd /data/websites/releases.wekan.team/windows
|
||||
mkdir -p /data/websites/old-releases/windows
|
||||
mv wekan-$1-amd64-windows.zip /data/websites/old-releases/windows/
|
||||
#sha256sum wekan-$2-amd64-windows.zip >> SHA256SUMS.txt
|
||||
#mv SHA256SUMS.txt x64-windows-SHA256SUMS.txt
|
||||
#cat x64-windows-SHA256SUMS.txt | grep -v wekan-$1-amd64-windows.zip > SHA256SUMS.txt
|
||||
#rm x64-windows-SHA256SUMS.txt
|
||||
cp wekan-$2-amd64-windows.zip wekan-latest-amd64-windows.zip
|
||||
sha256sum wekan-*.zip > SHA256SUMS.txt
|
||||
|
||||
echo "Release: arm64"
|
||||
cd /data/websites/releases.wekan.team/public/raspi3
|
||||
cd /data/websites/releases.wekan.team/raspi3
|
||||
mkdir -p /data/websites/old-releases/raspi3/
|
||||
mv wekan-$1-arm64.zip /data/websites/old-releases/raspi3/
|
||||
#sha256sum wekan-$2-arm64.zip >> SHA256SUMS.txt
|
||||
#mv SHA256SUMS.txt arm64-SHA256SUMS.txt
|
||||
#cat arm64-SHA256SUMS.txt | grep -v wekan-$1-arm64.zip > SHA256SUMS.txt
|
||||
#rm arm64-SHA256SUMS.txt
|
||||
cp wekan-$2-arm64.zip wekan-latest-arm64.zip
|
||||
sha256sum wekan-*.zip > SHA256SUMS.txt
|
||||
|
||||
echo "Release: s390x"
|
||||
cd /data/websites/releases.wekan.team/public/s390x
|
||||
cd /data/websites/releases.wekan.team/s390x
|
||||
mkdir -p /data/websites/old-releases/s390x
|
||||
mv wekan-$1-s390x.zip /data/websites/old-releases/s390x/
|
||||
#sha256sum wekan-$2-s390x.zip >> SHA256SUMS.txt
|
||||
#mv SHA256SUMS.txt s390x-SHA256SUMS.txt
|
||||
#cat s390x-SHA256SUMS.txt | grep -v wekan-$1-s390x.zip > SHA256SUMS.txt
|
||||
#rm s390x-SHA256SUMS.txt
|
||||
cp wekan-$2-s390x.zip wekan-latest-s390x.zip
|
||||
sha256sum wekan-*.zip > SHA256SUMS.txt
|
||||
|
||||
# OpenPower MiniCloud is discontinued, no ppc64le build server
|
||||
#echo "Release: ppc64le"
|
||||
#cd /data/websites/releases.wekan.team/public/ppc64le
|
||||
#cd /data/websites/releases.wekan.team/ppc64le
|
||||
#mkdir -p /data/websites/old-releases/ppc64le
|
||||
#mv wekan-$1-ppc64le.zip /data/websites/old-releases/ppc64le/
|
||||
#sha256sum wekan-$2-ppc64le.zip >> SHA256SUMS.txt
|
||||
|
||||
+1
-1
@@ -14,4 +14,4 @@ fi
|
||||
scp a:/home/wekan/wekan-$1-arm64.zip .
|
||||
|
||||
# 3) Upload arm64 release to download server
|
||||
scp wekan-$1-arm64.zip x2:/data/websites/releases.wekan.team/public/raspi3/
|
||||
scp wekan-$1-arm64.zip x2:/data/websites/releases.wekan.team/raspi3/
|
||||
+1
-1
@@ -14,4 +14,4 @@ fi
|
||||
scp o:/home/ubuntu/wekan-$1-ppc64le.zip .
|
||||
|
||||
# 3) Upload ppc64le release to download server
|
||||
scp wekan-$1-ppc64le.zip x2:/data/websites/releases.wekan.team/public/ppc64le/
|
||||
scp wekan-$1-ppc64le.zip x2:/data/websites/releases.wekan.team/ppc64le/
|
||||
+1
-1
@@ -14,4 +14,4 @@ fi
|
||||
scp s:/home/linux1/wekan-$1-s390x.zip .
|
||||
|
||||
# 3) Upload s390x release to download server
|
||||
scp wekan-$1-s390x.zip x2:/data/websites/releases.wekan.team/public/s390x/
|
||||
scp wekan-$1-s390x.zip x2:/data/websites/releases.wekan.team/s390x/
|
||||
+1
-1
@@ -11,4 +11,4 @@ if [ $# -ne 1 ]
|
||||
fi
|
||||
|
||||
# 2) Upload windows release to download server
|
||||
scp ../../Julkinen/wekan-$1-amd64-windows.zip x2:/data/websites/releases.wekan.team/public/windows/
|
||||
scp ../../Julkinen/wekan-$1-amd64-windows.zip x2:/data/websites/releases.wekan.team/windows/
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 676,
|
||||
appVersion = 680,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "6.76.0~2023-02-22"),
|
||||
appMarketingVersion = (defaultText = "6.80.0~2023-03-23"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
+14
-8
@@ -1246,6 +1246,7 @@ Migrations.add('add-card-details-show-lists', () => {
|
||||
});
|
||||
|
||||
Migrations.add('migrate-attachments-collectionFS-to-ostrioFiles', () => {
|
||||
Meteor.settings.public.ostrioFilesMigrationInProgress = "true";
|
||||
AttachmentsOld.find().forEach(function(fileObj) {
|
||||
const newFileName = fileObj.name();
|
||||
const storagePath = Attachments.storagePath({});
|
||||
@@ -1306,9 +1307,11 @@ Migrations.add('migrate-attachments-collectionFS-to-ostrioFiles', () => {
|
||||
|
||||
readStream.pipe(writeStream);
|
||||
});
|
||||
Meteor.settings.public.ostrioFilesMigrationInProgress = "false";
|
||||
});
|
||||
|
||||
Migrations.add('migrate-avatars-collectionFS-to-ostrioFiles', () => {
|
||||
Meteor.settings.public.ostrioFilesMigrationInProgress = "true";
|
||||
AvatarsOld.find().forEach(function(fileObj) {
|
||||
const newFileName = fileObj.name();
|
||||
const storagePath = Avatars.storagePath({});
|
||||
@@ -1361,14 +1364,16 @@ Migrations.add('migrate-avatars-collectionFS-to-ostrioFiles', () => {
|
||||
'original',
|
||||
'/',
|
||||
);
|
||||
if (user.profile.avatarUrl.startsWith(old_url)) {
|
||||
// Set avatar url to new url
|
||||
Users.direct.update(
|
||||
{ _id: user._id },
|
||||
{ $set: { 'profile.avatarUrl': new_url } },
|
||||
noValidate,
|
||||
);
|
||||
console.log('User avatar updated: ', user._id, new_url);
|
||||
if (user.profile.avatarUrl !== undefined) {
|
||||
if (user.profile.avatarUrl.startsWith(old_url)) {
|
||||
// Set avatar url to new url
|
||||
Users.direct.update(
|
||||
{ _id: user._id },
|
||||
{ $set: { 'profile.avatarUrl': new_url } },
|
||||
noValidate,
|
||||
);
|
||||
console.log('User avatar updated: ', user._id, new_url);
|
||||
}
|
||||
}
|
||||
});
|
||||
fileObj.remove();
|
||||
@@ -1384,6 +1389,7 @@ Migrations.add('migrate-avatars-collectionFS-to-ostrioFiles', () => {
|
||||
|
||||
readStream.pipe(writeStream);
|
||||
});
|
||||
Meteor.settings.public.ostrioFilesMigrationInProgress = "false";
|
||||
});
|
||||
|
||||
Migrations.add('migrate-attachment-drop-index-cardId', () => {
|
||||
|
||||
+6
-6
@@ -1,5 +1,5 @@
|
||||
name: wekan
|
||||
version: '6.76'
|
||||
version: '6.80'
|
||||
base: core20
|
||||
summary: Open Source kanban
|
||||
description: |
|
||||
@@ -65,8 +65,8 @@ apps:
|
||||
|
||||
parts:
|
||||
mongodb:
|
||||
#source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-5.0.14.tgz
|
||||
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.4.tgz
|
||||
#source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-5.0.15.tgz
|
||||
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.5.tgz
|
||||
plugin: dump
|
||||
stage-packages:
|
||||
- libssl1.1
|
||||
@@ -169,9 +169,9 @@ parts:
|
||||
# Cleanup
|
||||
mkdir .build
|
||||
cd .build
|
||||
wget https://github.com/wekan/wekan/releases/download/v6.76/wekan-6.76-amd64.zip
|
||||
unzip wekan-6.76-amd64.zip
|
||||
rm wekan-6.76-amd64.zip
|
||||
wget https://github.com/wekan/wekan/releases/download/v6.80/wekan-6.80-amd64.zip
|
||||
unzip wekan-6.80-amd64.zip
|
||||
rm wekan-6.80-amd64.zip
|
||||
cd ..
|
||||
##cd .build/bundle
|
||||
##find . -type d -name '*-garbage*' | xargs rm -rf
|
||||
|
||||
Reference in new issue
Block a user