Compare commits

...
58 Commits
Author SHA1 Message Date
Lauri Ojansivu 10e88fccd6 v7.31 2024-02-17 18:03:09 +02:00
Lauri Ojansivu cc781c0082 Updated ChangeLog. 2024-02-16 17:16:08 +02:00
Lauri Ojansivu 5198ee997c Updated to Meteor 2.15.
Thanks to Meteor developers !
2024-02-16 17:14:34 +02:00
Lauri Ojansivu 4843d6cdc1 Updated ChangeLog. 2024-02-16 17:00:14 +02:00
Lauri Ojansivu 8ca0b2d9c3 Merge pull request #5301 from xator91/patch-4
Update api.py EDIT BOARD TITLE
2024-02-16 16:22:45 +02:00
Mirko Genovese cf589cb792 Update api.py EDIT BOARD TITLE 2024-02-16 11:29:20 +01:00
Lauri Ojansivu eda05e0157 Merge pull request #5300 from xator91/patch-3
Update boards.js - New update board title function
2024-02-16 12:01:33 +02:00
Mirko Genovese 4ae8a0308e Update boards.js - New update board title function 2024-02-16 10:50:52 +01:00
Lauri Ojansivu 88c6ce1c7e Updates. 2024-02-12 22:34:09 +02:00
Lauri Ojansivu b714e2fca0 Updated readme. 2024-02-12 22:29:53 +02:00
Lauri Ojansivu ce3a931c59 Updated ChangeLog. 2024-02-09 14:53:10 +02:00
Lauri Ojansivu 69f5d90e91 Merge pull request #5293 from xator91/patch-2
Update api.py
2024-02-09 14:45:20 +02:00
Mirko Genovese 1a6ab68752 Update api.py
Typo error on instructions
2024-02-09 08:17:59 +01:00
Lauri Ojansivu f13001e53a Updated ChangeLog. 2024-02-07 17:47:24 +02:00
Lauri Ojansivu 824b537db0 Merge pull request #5290 from xator91/patch-1
Update api.py
2024-02-07 17:44:50 +02:00
Mirko Genovese 42e4bc3105 Update api.py
Add card with label and add a label to a card
2024-02-07 16:03:03 +01:00
Lauri Ojansivu ebcedcffec Updated ChangeLog. 2024-02-07 15:56:25 +02:00
Lauri Ojansivu b8cc84261f Merge pull request #5287 from xator91/xator91-patch-2
Update api.py
2024-02-07 15:51:16 +02:00
xator91 4e2475502a Update api.py
Added getcard and cardsbyswimlane
2024-02-07 14:38:49 +01:00
Lauri Ojansivu 7dd9bcce2b Updated translations. 2024-02-07 12:15:55 +02:00
Lauri Ojansivu 620628dca3 Merge pull request #5284 from wekan/dependabot/github_actions/docker/metadata-action-5.5.1
Bump docker/metadata-action from 5.5.0 to 5.5.1
2024-02-05 22:31:17 +02:00
dependabot[bot] 5ee7d52e8c Bump docker/metadata-action from 5.5.0 to 5.5.1
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.5.0 to 5.5.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/dbef88086f6cef02e264edb7dbf63250c17cef6c...8e5442c4ef9f78752691e2d8f8d19755c6f78e81)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 20:28:06 +00:00
Lauri Ojansivu 26004b1f73 Updated ChangeLog. 2024-02-03 21:09:23 +02:00
Lauri Ojansivu 59c42bc1a3 Updated to Meteor 2.15-rc.1 and removed duplicate nodemailer package because of some errors.
Thanks to Meteor developers !
2024-02-03 21:03:34 +02:00
Lauri Ojansivu c8a7d539f3 Updated translations. 2024-02-01 13:17:45 +02:00
Lauri Ojansivu 98c86bcc0f Updated translations. 2024-01-29 21:56:38 +02:00
Lauri Ojansivu 1b138e14c3 Updated ChangeLog. 2024-01-28 14:16:20 +02:00
Lauri Ojansivu a54e52d34b Try to fix Snap.
Thanks to xet7 !
2024-01-28 14:11:38 +02:00
Lauri Ojansivu 67218fb61d Updated ChangeLog. 2024-01-28 13:39:41 +02:00
Lauri Ojansivu 4eb0085243 Release scripts: Commented out not currently in use builds of WeKan bundle.
Thanks to xet7 !
2024-01-28 13:36:50 +02:00
Lauri Ojansivu 38a8fcb69a v7.30 2024-01-28 13:33:17 +02:00
Lauri Ojansivu 64592d734c Back to MongoDB 6.
Thanks to xet7 1
2024-01-28 13:17:44 +02:00
Lauri Ojansivu abddc8a864 v7.29 2024-01-27 22:50:39 +02:00
Lauri Ojansivu 09b45aca4f Updated ChangeLog. 2024-01-27 20:44:06 +02:00
Lauri Ojansivu f624211620 Upgraded to MongoDB 7.0.5 at Snap Candidate and Docker.
Thanks to MongoDB developers !
2024-01-27 20:39:29 +02:00
Lauri Ojansivu c19cde53d6 Updated ChangeLog. 2024-01-27 20:39:07 +02:00
Lauri Ojansivu cf8694fcd1 Updated translations. 2024-01-27 20:28:44 +02:00
Lauri Ojansivu 28d640afb4 Updated to Meteor 2.14.1-beta.0 .
Thanks to Meteor developers !
2024-01-25 12:28:05 +02:00
Lauri Ojansivu 7b432078a0 Updated ChangeLog. 2024-01-23 23:36:19 +02:00
Lauri Ojansivu 19703fed31 Removed markdown-it-mathjax3.
Fixes #5117

Thanks to Dexus and xet7 !
2024-01-23 23:32:46 +02:00
Lauri Ojansivu b01e127cc3 v7.28 2024-01-23 00:51:09 +02:00
Lauri Ojansivu f0c2d81352 Updated ChangeLog. 2024-01-23 00:44:30 +02:00
Lauri Ojansivu 67896adefc Updated dependencies.
Thanks to developers of dependencies !
2024-01-23 00:42:54 +02:00
Lauri Ojansivu d1b29b6e61 Updated translations. 2024-01-23 00:36:55 +02:00
Lauri Ojansivu ef93aad659 Updated ChangeLog. 2024-01-23 00:35:31 +02:00
Lauri Ojansivu 616b433409 Updated ChangeLog. 2024-01-23 00:26:39 +02:00
Lauri Ojansivu 515d96eef0 Merge pull request #5271 from wekan/dependabot/github_actions/actions/cache-4
Bump actions/cache from 3 to 4
2024-01-23 05:46:23 +08:00
Lauri Ojansivu 85963cc58d Merge pull request #5270 from wekan/dependabot/github_actions/actions/dependency-review-action-4
Bump actions/dependency-review-action from 3 to 4
2024-01-23 05:45:56 +08:00
Lauri Ojansivu e15611a0ea Merge pull request #5265 from gustavengstrom/master
Added archive option to  of Wekan API
2024-01-23 05:45:30 +08:00
dependabot[bot] f89a2ab91d Bump actions/cache from 3 to 4
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 21:00:40 +00:00
dependabot[bot] 18d3fb75ac Bump actions/dependency-review-action from 3 to 4
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 3 to 4.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-22 21:00:32 +00:00
Gustav Engström f5bc2b08f9 Added archive option to of Wekan API 2024-01-15 12:32:24 +01:00
Lauri Ojansivu 80e5916394 Merge pull request #5263 from wekan/dependabot/github_actions/docker/metadata-action-5.5.0
Bump docker/metadata-action from 5.4.0 to 5.5.0
2024-01-08 23:50:02 +02:00
dependabot[bot] 48c47f9911 Bump docker/metadata-action from 5.4.0 to 5.5.0
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.4.0 to 5.5.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/9dc751fe249ad99385a2583ee0d084c400eee04e...dbef88086f6cef02e264edb7dbf63250c17cef6c)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-08 20:41:32 +00:00
Lauri Ojansivu c3f5849f11 Updated translations. 2024-01-02 23:02:29 +02:00
Lauri Ojansivu c73346eda0 v7.27 2024-01-02 14:59:38 +02:00
Lauri Ojansivu d976455a12 Updated ChangeLog. 2024-01-02 14:54:39 +02:00
Lauri Ojansivu f10f80f655 Fix missing maximize card.
Thanks to xet7 !
2024-01-02 14:52:13 +02:00
33 changed files with 1740 additions and 1491 deletions

No files matched your search

+1 -1
View File
@@ -11,4 +11,4 @@ jobs:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v3
uses: actions/dependency-review-action@v4
+1 -1
View File
@@ -48,7 +48,7 @@ jobs:
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@9dc751fe249ad99385a2583ee0d084c400eee04e
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+3 -3
View File
@@ -95,7 +95,7 @@ jobs:
# CACHING
- name: Install Meteor
id: cache-meteor-install
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.meteor
key: v1-meteor-${{ hashFiles('.meteor/versions') }}
@@ -104,7 +104,7 @@ jobs:
- name: Cache NPM dependencies
id: cache-meteor-npm
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.npm
key: v1-npm-${{ hashFiles('package-lock.json') }}
@@ -113,7 +113,7 @@ jobs:
- name: Cache Meteor build
id: cache-meteor-build
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
.meteor/local/resolver-result-cache.json
+2 -2
View File
@@ -43,7 +43,7 @@ random@1.2.1
reactive-dict@1.3.1
session@1.2.1
tracker@1.3.3
underscore@1.0.13
underscore@1.6.0
arillo:flow-router-helpers
audit-argument-checks@1.0.7
kadira:dochead
@@ -83,7 +83,7 @@ matb33:collection-hooks
simple:json-routes
kadira:flow-router
spacebars
service-configuration@1.3.2
service-configuration@1.3.3
communitypackages:picker
minifier-css@1.6.4
blaze
+1 -1
View File
@@ -1 +1 @@
METEOR@2.14
METEOR@2.15
+5 -5
View File
@@ -1,4 +1,4 @@
accounts-base@2.2.9
accounts-base@2.2.10
accounts-oauth@1.4.3
accounts-password@2.4.0
aldeed:collection2@2.10.0
@@ -63,7 +63,7 @@ localstorage@1.2.0
logging@1.3.3
matb33:collection-hooks@1.3.0
mdg:validation-error@0.5.1
meteor@1.11.4
meteor@1.11.5
meteor-autosize@5.0.1
meteor-base@1.5.1
meteorhacks:aggregate@1.3.0
@@ -123,7 +123,7 @@ reactive-var@1.0.12
reload@1.3.1
retry@1.1.0
routepolicy@1.1.1
service-configuration@1.3.2
service-configuration@1.3.3
session@1.2.1
sha@1.0.9
shell-server@0.5.0
@@ -144,12 +144,12 @@ templating-tools@1.2.2
tracker@1.3.3
typescript@4.9.5
ui@1.0.13
underscore@1.0.13
underscore@1.6.0
url@1.3.2
useraccounts:core@1.16.2
useraccounts:flow-routing@1.15.0
useraccounts:unstyled@1.14.2
webapp@1.13.6
webapp@1.13.8
webapp-hashing@1.1.1
wekan-accounts-cas@0.1.0
wekan-accounts-lockout@1.0.0
+79
View File
@@ -15,6 +15,85 @@ Fixing other platforms In Progress.
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
# v7.31 2024-02-17 WeKan ® release
This release adds the following new features:
- [api.py: Added getcard and cardsbyswimlane](https://github.com/wekan/wekan/pull/5287).
Thanks to xator91.
- [api.py: Add card with label and add a label to a card](https://github.com/wekan/wekan/pull/5290).
Thanks to xator91.
- [api.py: Fix BoardID to SwimlaneID in cardsbyswimlane](https://github.com/wekan/wekan/pull/5290).
Thanks to xator91.
- [boards.js: New update board title function for API](https://github.com/wekan/wekan/pull/5300).
Thanks to xator91.
- [api.py: EDIT BOARD TITLE](https://github.com/wekan/wekan/pull/5301).
Thanks to xator91.
and adds the following updates:
- [Release scripts: Commented out not currently in use builds of WeKan bundle](https://github.com/wekan/wekan/commit/4eb0085243672071a392dc32f77dba3103c592ab).
Thanks to xet7.
- [Try to fix Snap](https://github.com/wekan/wekan/commit/a54e52d34bdab02befda7eefad46d16814d2c46e).
Thanks to xet7.
- [Updated to Meteor 2.15-rc.1 and removed duplicate nodemailer package because of some errors](https://github.com/wekan/wekan/commit/59c42bc1a3a1792a50379be2f9251fce9b45c1a3).
Thanks to Meteor developers.
- [Updated to Meteor 2.15](https://github.com/wekan/wekan/commit/5198ee997cb43b503fcb2edaf781b0521d8096cd).
Thanks to Meteor developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.30 2024-01-28 WeKan ® release
This release adds the following updates:
- [Back to MongoDB 6.0.13](https://github.com/wekan/wekan/commit/64592d734cfdbe10b48c3aa3ea74e0ba35903976).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.29 2024-01-27 WeKan ® release
This release removes the following features:
- [Removed markdown-it-mathjax3](https://github.com/wekan/wekan/commit/19703fed311c894b61e9269cc0b973d0b0275a6a).
Thanks to Dexus and xet7.
and adds the following updates:
- [Updated to Meteor 2.14.1-beta.0](https://github.com/wekan/wekan/commit/28d640afb40f4d7c9070fa514c910fbf7065a724).
Thanks to Meteor developers.
- [Updated to MongoDB 7.0.5 at Snap Candidate and Docker](https://github.com/wekan/wekan/commit/f624211620c5e42ccdd6f931ba473be62437a62c).
Thanks to MongoDB developers.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.28 2024-01-23 WeKan ® release
This release adds the following new features:
- [Added archive option to of Wekan API](https://github.com/wekan/wekan/pull/5265).
Thanks to gustavengstrom.
and adds the following updates:
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/pull/5270),
[Part 2](https://github.com/wekan/wekan/pull/5271),
[Part 3](https://github.com/wekan/wekan/commit/67896adefc4a12a93fed7575f621f8aa924a2ab8).
Thanks to developers of dependencies.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.27 2024-01-02 WeKan ® release
This release fixes the following bugs:
- [Fix missing maximize card](https://github.com/wekan/wekan/commit/f10f80f6559a6cdee020d5ca34fd5991e07617cf).
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.26 2024-01-02 WeKan ® release
This release fixes the following bugs:
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v7.26.0"
appVersion: "v7.31.0"
files:
userUploads:
- README.md
+137
View File
@@ -39,6 +39,11 @@ If *nix: chmod +x api.py => ./api.py users
python3 api.py addcustomfieldtoboard AUTHORID BOARDID NAME TYPE SETTINGS SHOWONCARD AUTOMATICALLYONCARD SHOWLABELONMINICARD SHOWSUMATTOPOFLIST # Add Custom Field to Board
python3 api.py editcustomfield BOARDID LISTID CARDID CUSTOMFIELDID NEWCUSTOMFIELDVALUE
python3 api.py listattachments BOARDID # List attachments
python3 api.py cardsbyswimlane SWIMLANEID LISTID
python3 api.py getcard BOARDID LISTID CARDID
python3 api.py addlabel BOARDID LISTID CARDID LABELID
python3 api.py addcardwithlabel AUTHORID BOARDID SWIMLANEID LISTID CARDTITLE CARDDESCRIPTION LABELIDS
python3 api.py editboardtitle BOARDID NEWBOARDTITLE
Admin API:
python3 api.py users # All users
@@ -179,6 +184,52 @@ if arguments == 10:
print(body.text)
# ------- ADD CUSTOM FIELD TO BOARD END -----------
if arguments == 8:
if sys.argv[1] == 'addcardwithlabel':
# ------- ADD CARD WITH LABEL START -----------
authorid = sys.argv[2]
boardid = sys.argv[3]
swimlaneid = sys.argv[4]
listid = sys.argv[5]
cardtitle = sys.argv[6]
carddescription = sys.argv[7]
labelIds = sys.argv[8] # Aggiunto labelIds
cardtolist = wekanurl + apiboards + boardid + s + l + s + listid + s + cs
# Add card
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
post_data = {
'authorId': '{}'.format(authorid),
'title': '{}'.format(cardtitle),
'description': '{}'.format(carddescription),
'swimlaneId': '{}'.format(swimlaneid),
'labelIds': labelIds
}
body = requests.post(cardtolist, data=post_data, headers=headers)
print(body.text)
# If ok id card
if body.status_code == 200:
card_data = body.json()
new_card_id = card_data.get('_id')
# Updating card
if new_card_id:
edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + new_card_id
put_data = {'labelIds': labelIds}
body = requests.put(edcard, data=put_data, headers=headers)
print("=== EDIT CARD ===\n")
body = requests.get(edcard, headers=headers)
data2 = body.text.replace('}', "}\n")
print(data2)
else:
print("Error obraining ID.")
else:
print("Error adding card.")
# ------- ADD CARD WITH LABEL END -----------
if arguments == 7:
if sys.argv[1] == 'addcard':
@@ -237,6 +288,26 @@ if arguments == 6:
print(data2)
# ------- EDIT CUSTOMFIELD END -----------
if arguments == 5:
if sys.argv[1] == 'addlabel':
# ------- EDIT CARD ADD LABEL START -----------
boardid = sys.argv[2]
listid = sys.argv[3]
cardid = sys.argv[4]
labelIds = sys.argv[5]
edcard = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid
print(edcard)
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
put_data = {'labelIds': labelIds}
body = requests.put(edcard, data=put_data, headers=headers)
print("=== ADD LABEL ===\n")
body = requests.get(edcard, headers=headers)
data2 = body.text.replace('}',"}\n")
print(data2)
# ------- EDIT CARD ADD LABEL END -----------
if arguments == 4:
if sys.argv[1] == 'newuser':
@@ -251,9 +322,58 @@ if arguments == 4:
print("=== CREATE NEW USER ===\n")
print(body.text)
# ------- CREATE NEW USER END -----------
if sys.argv[1] == 'getcard':
# ------- LIST OF CARD START -----------
boardid = sys.argv[2]
listid = sys.argv[3]
cardid = sys.argv[4]
listone = wekanurl + apiboards + boardid + s + l + s + listid + s + cs + s + cardid
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
print("=== INFO OF ONE LIST ===\n")
print("URL:", listone) # Stampa l'URL per debug
try:
response = requests.get(listone, headers=headers)
print("=== RESPONSE ===\n")
print("Status Code:", response.status_code) # Stampa il codice di stato per debug
if response.status_code == 200:
data2 = response.text.replace('}', "}\n")
print(data2)
else:
print(f"Error: {response.status_code}")
print(f"Response: {response.text}")
except Exception as e:
print(f"Error in the GET request: {e}")
# ------- LISTS OF CARD END -----------
if arguments == 3:
if sys.argv[1] == 'editboardtitle':
# ------- EDIT BOARD TITLE START -----------
boardid = sys.argv[2]
boardtitle = sys.argv[3]
edboardtitle = wekanurl + apiboards + boardid + s + 'title'
print(edboardtitle)
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
post_data = {'title': boardtitle}
body = requests.put(edboardtitle, json=post_data, headers=headers)
print("=== EDIT BOARD TITLE ===\n")
#body = requests.get(edboardtitle, headers=headers)
data2 = body.text.replace('}',"}\n")
print(data2)
if body.status_code == 200:
print("Succesfull!")
else:
print(f"Error: {body.status_code}")
print(body.text)
# ------- EDIT BOARD TITLE END -----------
if sys.argv[1] == 'createlist':
# ------- CREATE LIST START -----------
@@ -293,6 +413,23 @@ if arguments == 3:
print(data2)
# ------- INFO OF CUSTOM FIELD END -----------
if sys.argv[1] == 'cardsbyswimlane':
# ------- RETRIEVE CARDS BY SWIMLANE ID START -----------
boardid = sys.argv[2]
swimlaneid = sys.argv[3]
cardsbyswimlane = wekanurl + apiboards + boardid + s + sws + s + swimlaneid + s + cs
headers = {'Accept': 'application/json', 'Authorization': 'Bearer {}'.format(apikey)}
print("=== CARDS BY SWIMLANE ID ===\n")
print("URL:", cardsbyswimlane) # Debug
try:
body = requests.get(cardsbyswimlane, headers=headers)
print("Status Code:", body.status_code) # Debug
data = body.text.replace('}', "}\n")
print("Data:", data)
except Exception as e:
print("Error GET:", e)
# ------- RETRIEVE CARDS BY SWIMLANE ID END -----------
if arguments == 2:
# ------- BOARDS LIST START -----------
+1 -5
View File
@@ -51,11 +51,7 @@ template(name="attachmentGallery")
.attachment-gallery
if currentUser.isAdmin
a.attachment-item.add-attachment.js-add-attachment
i.fa.fa-plus.icon
if currentUser.isNormal
if canModifyCard
a.attachment-item.add-attachment.js-add-attachment
i.fa.fa-plus.icon
+3 -18
View File
@@ -13,27 +13,12 @@ template(name="cardDetails")
unless isMiniScreen
unless isPopup
a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
if isAdmin
if canModifyCard
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
else
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if isNormal
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
else
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if isWorker
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
else
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if isNoComments
if cardMaximized
a.fa.fa-window-minimize.minimize-card-details.js-minimize-card-details(title="{{_ 'minimize-card'}}")
else
a.fa.fa-window-maximize.maximize-card-details.js-maximize-card-details(title="{{_ 'maximize-card'}}")
if currentUser.isBoardMember
if canModifyCard
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
a.fa.fa-link.card-copy-button.js-copy-link(
id="cardURL_copy"
@@ -45,7 +30,7 @@ template(name="cardDetails")
else
unless isPopup
a.fa.fa-times-thin.close-card-details.js-close-card-details(title="{{_ 'close-card'}}")
if currentUser.isBoardMember
if canModifyCard
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
a.fa.fa-link.card-copy-mobile-button.js-copy-link(
id="cardURL_copy"
+3 -11
View File
@@ -3,14 +3,7 @@ template(name="minicard")
class="{{#if isLinkedCard}}linked-card{{/if}}"
class="{{#if isLinkedBoard}}linked-board{{/if}}"
class="{{#if colorClass}}minicard-{{colorClass}}{{/if}}")
if currentUser.isAdmin
if isTouchScreenOrShowDesktopDragHandles
a.fa.fa-navicon.minicard-details-menu-with-handle.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
.handle
.fa.fa-arrows
else
a.fa.fa-navicon.minicard-details-menu.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
if currentUser.isNormal
if canModifyCard
if isTouchScreenOrShowDesktopDragHandles
a.fa.fa-navicon.minicard-details-menu-with-handle.js-open-minicard-details-menu(title="{{_ 'cardDetailsActionsPopup-title'}}")
.handle
@@ -142,7 +135,7 @@ template(name="minicard")
+userAvatar(userId=this.userId noRemove=true)
.badges
unless currentUser.isNoComments
if canModifyCard
if comments.length
.badge(title="{{_ 'card-comments-title' comments.length }}")
span.badge-icon.fa.fa-comment-o.badge-comment.badge-text
@@ -197,12 +190,11 @@ template(name="editCardSortOrderPopup")
template(name="minicardDetailsActionsPopup")
ul.pop-over-list
if currentUser.isBoardAdmin
if canModifyCard
li
a.js-move-card
i.fa.fa-arrow-right
| {{_ 'moveCardPopup-title'}}
unless currentUser.isWorker
li
a.js-copy-card
i.fa.fa-copy
+24 -24
View File
@@ -85,14 +85,14 @@
"add-card": "Tilføj kort",
"add-card-to-top-of-list": "Add Card to Top of List",
"add-card-to-bottom-of-list": "Add Card to Bottom of List",
"setListWidthPopup-title": "Set List Width",
"set-list-width": "Set List Width",
"set-list-width-value": "List Width (pixels)",
"list-width-error-message": "List width must be a positive integer",
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
"set-swimlane-height": "Set Swimlane Height",
"set-swimlane-height-value": "Swimlane Height (pixels)",
"swimlane-height-error-message": "Swimlane height must be a positive integer",
"setListWidthPopup-title": "Angiv bredde på lister",
"set-list-width": "Angiv bredde på lister",
"set-list-width-value": "Bredde på lister (pixels)",
"list-width-error-message": "Listens bredde skal være et positivt heltal",
"setSwimlaneHeightPopup-title": "Angiv højde på svømmebane",
"set-swimlane-height": "Angiv højde på svømmebane",
"set-swimlane-height-value": "Svømmebanes bredde (pixels)",
"swimlane-height-error-message": "Svømmebreddes højde skal være et positivt heltal",
"add-swimlane": "Tilføj svømmebane",
"add-subtask": "Tilføj delopgave",
"add-checklist": "Tilføj tjekliste",
@@ -100,10 +100,10 @@
"close-add-checklist-item": "Close add an item to checklist form",
"close-edit-checklist-item": "Close edit an item to checklist form",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"add-cover": "Add cover image to minicard",
"add-cover": "Tilføj coverbillede til minikort",
"add-label": "Tilføj etikette",
"add-list": "Tilføj liste",
"add-after-list": "Add After List",
"add-after-list": "Tilføj efter liste",
"add-members": "Tilføj medlemmer",
"added": "Tilføjet",
"addMemberPopup-title": "Medlemmer",
@@ -143,10 +143,10 @@
"attachmentDeletePopup-title": "Slet vedhæftning?",
"attachments": "Vedhæftninger",
"auto-watch": "Følg automatisk tavler når de oprettes",
"avatar-too-big": "The avatar is too large (__size__ max)",
"avatar-too-big": "Avataren er for stor (__size__ max)",
"back": "Tilbage",
"board-change-color": "Skift farve",
"board-change-background-image": "Change Background Image",
"board-change-background-image": "Skift baggrundsbillede",
"board-background-image-url": "Background Image URL",
"add-background-image": "Add Background Image",
"remove-background-image": "Remove Background Image",
@@ -162,9 +162,9 @@
"board-public-info": "Denne tavle vil være <strong>offentlig</strong>.",
"board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.",
"boardChangeColorPopup-title": "Skift tavlens baggrund",
"boardChangeBackgroundImagePopup-title": "Change Background Image",
"boardChangeBackgroundImagePopup-title": "Skift baggrundsbillede",
"allBoardsChangeColorPopup-title": "Skift farve",
"allBoardsChangeBackgroundImagePopup-title": "Change Background Image",
"allBoardsChangeBackgroundImagePopup-title": "Skift baggrundsbillede",
"boardChangeTitlePopup-title": "Omdøb tavle",
"boardChangeVisibilityPopup-title": "Tilpas synlighed",
"boardChangeWatchPopup-title": "Tilpas følgefunktion",
@@ -819,7 +819,7 @@
"r-item": "element",
"r-of-checklist": "fra tjekliste",
"r-send-email": "Send en e-mail",
"r-to": "to",
"r-to": "til",
"r-of": "af",
"r-subject": "emne",
"r-rule-details": "Detaljer for regel",
@@ -828,7 +828,7 @@
"r-d-move-to-bottom-gen": "Flyt kortet til bunden af dens liste",
"r-d-move-to-bottom-spec": "Flyt kortet til bunden af listen",
"r-d-send-email": "Send e-mail",
"r-d-send-email-to": "to",
"r-d-send-email-to": "til",
"r-d-send-email-subject": "emne",
"r-d-send-email-message": "besked",
"r-d-archive": "Flyt kortet til arkiv",
@@ -854,7 +854,7 @@
"r-items-list": "element1,element2,element3",
"r-add-swimlane": "Tilføj svømmebane",
"r-swimlane-name": "navn på svømmebane",
"r-board-note": "Note: leave a field empty to match every possible value. ",
"r-board-note": "Bemærk: lad et felt stå tomt for at matche alle værdier.",
"r-checklist-note": "Bemærk: tjeklistens elementer skal skrives som en kommaadskilte værdier.",
"r-when-a-card-is-moved": "Når et kort flyttes til en anden liste.",
"r-set": "Angiv",
@@ -1099,7 +1099,7 @@
"label-names": "Label Names",
"archived-at": "archived at",
"sort-cards": "Sort Cards",
"sort-is-on": "Sort is on",
"sort-is-on": "Sortering er slået til",
"cardsSortPopup-title": "Sort Cards",
"due-date": "Due Date",
"server-error": "Server Error",
@@ -1238,11 +1238,11 @@
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"translation": "Oversæt",
"text": "Tekst",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
"translation-text": "Oversættelsestekst",
"show-at-minicard": "Vis et minikort",
"show-checklist-at-minicard": "Vis tjekliste på minikort",
"show-subtasks-field": "Vis felt med underopgaver",
"convert-to-markdown": "Konvertér til markdown"
}
+2 -2
View File
@@ -962,7 +962,7 @@
"teams": "Teams",
"displayName": "Anzeigename",
"shortName": "Kurzname",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"autoAddUsersWithDomainName": "Automatisch Benutzer über den Domainnamen hinzufügen",
"website": "Webseite",
"person": "Person",
"my-cards": "Meine Karten",
@@ -1117,7 +1117,7 @@
"custom-field-stringtemplate-separator": "Trenner (verwende &#32; oder &nbsp; für einen Leerschritt)",
"custom-field-stringtemplate-item-placeholder": "Drücke die Eingabetaste, um weitere Einträge hinzuzufügen",
"creator": "Ersteller",
"creator-on-minicard": "Creator on minicard",
"creator-on-minicard": "Ersteller auf Minikarte",
"filesReportTitle": "Dateien-Bericht",
"reports": "Berichte",
"rulesReportTitle": "Regeln-Bericht",
File diff suppressed because it is too large. Load diff
+18 -18
View File
@@ -1,5 +1,5 @@
{
"accept": "Accept",
"accept": "پذیرفتن",
"act-activity-notify": "اعلان فعالیت",
"act-addAttachment": "ضمیمه __attachment__ به کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ اضافه شده",
"act-deleteAttachment": "ضمیمه __attachment__ از کارت __card__ در لیست __list__ در مسیر __swimlane__ در برد __board__ حذف شده",
@@ -113,7 +113,7 @@
"admin-announcement": "اعلان",
"admin-announcement-active": "فعال کردن اعلان‌های سمت سیستم",
"admin-announcement-title": "اعلان از سوی مدیر",
"all-boards": "All Boards",
"all-boards": "همه بردها",
"and-n-other-card": "و __count__ کارت دیگر",
"and-n-other-card_plural": "و __count__ کارت دیگر",
"apply": "اعمال",
@@ -146,10 +146,10 @@
"avatar-too-big": "The avatar is too large (__size__ max)",
"back": "بازگشت",
"board-change-color": "تغییر رنگ",
"board-change-background-image": "Change Background Image",
"board-background-image-url": "Background Image URL",
"add-background-image": "Add Background Image",
"remove-background-image": "Remove Background Image",
"board-change-background-image": "تغییر تصویر پس زمینه",
"board-background-image-url": "لینک تصویر پس زمینه",
"add-background-image": "اضافه کردن تصویر پس زمینه",
"remove-background-image": "حذف تصویر پس زمینه",
"show-at-all-boards-page" : "Show at All Boards page",
"board-info-on-my-boards" : "All Boards Settings",
"boardInfoOnMyBoardsPopup-title" : "All Boards Settings",
@@ -157,15 +157,15 @@
"show-card-counter-per-list": "Show card count per list",
"show-board_members-avatar": "Show Board members avatars",
"board-nb-stars": "%s ستاره",
"board-not-found": "Board not found",
"board-not-found": "برد پیدا نشد",
"board-private-info": "This board will be <strong>private</strong>.",
"board-public-info": "This board will be <strong>public</strong>.",
"board-drag-drop-reorder-or-click-open": "Drag and drop to reorder board icons. Click board icon to open board.",
"boardChangeColorPopup-title": "Change Board Background",
"boardChangeBackgroundImagePopup-title": "Change Background Image",
"boardChangeColorPopup-title": "تغییر پس زمینه برد",
"boardChangeBackgroundImagePopup-title": "تغییر تصویر پس زمینه",
"allBoardsChangeColorPopup-title": "تغییر رنگ",
"allBoardsChangeBackgroundImagePopup-title": "Change Background Image",
"boardChangeTitlePopup-title": "Rename Board",
"allBoardsChangeBackgroundImagePopup-title": "تغییر تصویر پس زمینه",
"boardChangeTitlePopup-title": "تغییر نام برد",
"boardChangeVisibilityPopup-title": "تغییر وضعیت نمایش",
"boardChangeWatchPopup-title": "تغییر دیده‌بانی",
"boardMenuPopup-title": "تنظیمات برد",
@@ -421,7 +421,7 @@
"filter-overdue": "منقضی شده",
"filter-due-today": "مقتضی امروز",
"filter-due-this-week": "مقتضی این هفته",
"filter-due-next-week": "Due next week",
"filter-due-next-week": "مقتضی هفته بعد",
"filter-due-tomorrow": "مقتضی فردا",
"list-filter-label": "فیلتر لیست بر اساس عنوان",
"filter-clear": "حذف فیلتر",
@@ -550,7 +550,7 @@
"public": "عمومی",
"public-desc": "این برد عمومی است. برای هر کسی با آدرس و یا جستجو در موتورها مانند گوگل قابل مشاهده است. فقط افرادی که به برد اضافه شده‌اند امکان ویرایش دارند.",
"quick-access-description": "جهت افزودن یک برد به اینجا، آن را ستاره دار نمایید.",
"remove-cover": "Remove cover image from minicard",
"remove-cover": "حذف تصویر کاور از مینی کارت",
"remove-from-board": "حذف از برد",
"remove-label": "حذف لیبل",
"listDeletePopup-title": "حذف فهرست؟",
@@ -559,7 +559,7 @@
"remove-member-pop": "آیا __name__ (__username__) را از __boardTitle__ حذف می‌کنید؟ کاربر از تمام کارت‌ها در این برد حذف خواهد شد. آنها از این اقدام مطلع خواهند شد.",
"removeMemberPopup-title": "آیا می خواهید کاربر را حذف کنید؟",
"rename": "تغیر نام",
"rename-board": "Rename Board",
"rename-board": "تغییر نام برد",
"restore": "بازیابی",
"rescue-card-description": "Show rescue dialogue before closing for unsaved card descriptions",
"rescue-card-description-dialogue": "Overwrite current card description with your changes?",
@@ -994,7 +994,7 @@
"comment-not-found": "Card with comment containing text '%s' not found.",
"org-name-not-found": "Organization '%s' not found.",
"team-name-not-found": "Team '%s' not found.",
"globalSearch-title": "Search All Boards",
"globalSearch-title": "جست و جو در همه برد ها",
"no-cards-found": "هیچ کارتی یافت نشد",
"one-card-found": "یک کارت یافت شد",
"n-cards-found": "%s Cards Found",
@@ -1099,7 +1099,7 @@
"label-names": "اسامی لیبل",
"archived-at": "بایگانی شده در",
"sort-cards": "مرتب‌سازی کارت‌ها",
"sort-is-on": "Sort is on",
"sort-is-on": "مرتب سازی فعال است",
"cardsSortPopup-title": "مرتب‌سازی کارت‌ها",
"due-date": "تاریخ اجرا",
"server-error": "خطای سرور",
@@ -1229,8 +1229,8 @@
"max-upload-filesize": "Max upload filesize in bytes:",
"allowed-upload-filetypes": "Allowed upload filetypes:",
"max-avatar-filesize": "Max avatar filesize in bytes:",
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"allowed-avatar-filetypes": "نوع فایل های مجاز",
"invalid-file": "اگر نام فایل معتبر نباشد، آپلود یا تغییر نام لغو خواهد شد",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
+2 -2
View File
@@ -962,7 +962,7 @@
"teams": "Équipes",
"displayName": "Nom d'Affichage",
"shortName": "Nom Court",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"autoAddUsersWithDomainName": "Ajouter automatiquement les utilisateurs avec le nom de domaine",
"website": "Site Web",
"person": "Personne",
"my-cards": "Mes Cartes",
@@ -1117,7 +1117,7 @@
"custom-field-stringtemplate-separator": "Séparateur (utiliser &#32; ou &nbsp; pour un espace)",
"custom-field-stringtemplate-item-placeholder": "Appuyez sur Entrée pour ajouter plus d'éléments",
"creator": "Créateur",
"creator-on-minicard": "Creator on minicard",
"creator-on-minicard": "Créateur sur la mini-carte",
"filesReportTitle": "Rapports sur les fichiers",
"reports": "Rapports",
"rulesReportTitle": "Rapports sur les règles",
+5 -5
View File
@@ -731,10 +731,10 @@
"queue": "Queue",
"subtask-settings": "Paramètres des sous-tâches",
"card-settings": "Paramètres de la carte",
"minicard-settings": "Paramètres de la minicarte",
"minicard-settings": "Paramètres de la mini-carte",
"boardSubtaskSettingsPopup-title": "Paramètres des sous-tâches du tableau",
"boardCardSettingsPopup-title": "Paramètres de la carte",
"boardMinicardSettingsPopup-title": "Paramètres de la minicarte",
"boardMinicardSettingsPopup-title": "Paramètres de la mini-carte",
"deposit-subtasks-board": "Déposer des sous-tâches dans ce tableau :",
"deposit-subtasks-list": "Liste de destination pour les sous-tâches déposées ici :",
"show-parent-in-minicard": "Voir la carte parente dans la mini-carte :",
@@ -921,7 +921,7 @@
"cardAssigneesPopup-title": "Personne assignée",
"addmore-detail": "Ajouter une description plus détaillée",
"show-on-card": "Afficher sur la carte",
"show-on-minicard": "Afficher sur la minicarte",
"show-on-minicard": "Afficher sur la mini-carte",
"new": "Nouveau",
"editOrgPopup-title": "Éditer l'organisation",
"newOrgPopup-title": "Nouvelle organisation",
@@ -962,7 +962,7 @@
"teams": "Équipes",
"displayName": "Nom d'Affichage",
"shortName": "Nom Court",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"autoAddUsersWithDomainName": "Ajouter automatiquement les utilisateurs avec le nom de domaine",
"website": "Site Web",
"person": "Personne",
"my-cards": "Mes Cartes",
@@ -1117,7 +1117,7 @@
"custom-field-stringtemplate-separator": "Séparateur (utiliser &#32; ou &nbsp; pour un espace)",
"custom-field-stringtemplate-item-placeholder": "Appuyez sur Entrée pour ajouter plus d'éléments",
"creator": "Créateur",
"creator-on-minicard": "Creator on minicard",
"creator-on-minicard": "Créateur sur la mini-carte",
"filesReportTitle": "Rapports sur les fichiers",
"reports": "Rapports",
"rulesReportTitle": "Rapports sur les règles",
+45 -45
View File
@@ -1,7 +1,7 @@
{
"accept": "接受",
"act-activity-notify": "活動通知",
"act-addAttachment": "附件 __attachment__ 已新增到卡片 __card__ 位於清單 __list__  泳道  __swimlane__ 看板 __board__",
"act-addAttachment": "附件 __attachment__ 已新增到卡片 __card__ 位於清單 __list__ 泳道 __swimlane__ 看板 __board__",
"act-deleteAttachment": "已刪除的附件__附件__卡片上__卡片__在清單__清單__at swimlane__swimlane__在看板__看板__",
"act-addSubtask": "新增子任務 __子任務 __ to card __卡片__ at list_清單__ at swimlane __分隔線__ at board __看板__",
"act-addLabel": "新增標籤 __label__ 到看板 __board__ 中的泳道 __swimlane__ 中的清單 __list__ 中的卡片 __card__ 中",
@@ -85,14 +85,14 @@
"add-card": "新增卡片",
"add-card-to-top-of-list": "新增卡片至清單頂部",
"add-card-to-bottom-of-list": "新增卡片至清單底部",
"setListWidthPopup-title": "Set List Width",
"set-list-width": "Set List Width",
"set-list-width-value": "List Width (pixels)",
"list-width-error-message": "List width must be a positive integer",
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
"set-swimlane-height": "Set Swimlane Height",
"set-swimlane-height-value": "Swimlane Height (pixels)",
"swimlane-height-error-message": "Swimlane height must be a positive integer",
"setListWidthPopup-title": "設定清單寬度",
"set-list-width": "設定清單寬度",
"set-list-width-value": "清單寬度(畫素)",
"list-width-error-message": "清單寬度必須為正整數",
"setSwimlaneHeightPopup-title": "設定泳道高度",
"set-swimlane-height": "設定泳道高度",
"set-swimlane-height-value": "泳道高度(畫素)",
"swimlane-height-error-message": "泳道高度必須為正整數",
"add-swimlane": "新增泳道",
"add-subtask": "新增子任務",
"add-checklist": "新增待辦清單",
@@ -100,10 +100,10 @@
"close-add-checklist-item": "Close add an item to checklist form",
"close-edit-checklist-item": "Close edit an item to checklist form",
"convertChecklistItemToCardPopup-title": "轉換為卡片",
"add-cover": "Add cover image to minicard",
"add-cover": "新增封面圖片至小卡片",
"add-label": "新增標籤",
"add-list": "新增清單",
"add-after-list": "Add After List",
"add-after-list": "在清單後新增",
"add-members": "新增成員",
"added": "已新增",
"addMemberPopup-title": "成員",
@@ -113,7 +113,7 @@
"admin-announcement": "通知",
"admin-announcement-active": "啟用系統公告",
"admin-announcement-title": "來自管理員的公告訊息",
"all-boards": "All Boards",
"all-boards": "所有看板",
"and-n-other-card": "和其他 __count__ 個卡片",
"and-n-other-card_plural": "和其他 __count__ 個卡片",
"apply": "應用",
@@ -143,13 +143,13 @@
"attachmentDeletePopup-title": "刪除附件?",
"attachments": "附件",
"auto-watch": "自動訂閱新建立的看板",
"avatar-too-big": "The avatar is too large (__size__ max)",
"avatar-too-big": "大頭照太大了(最大 __size__)",
"back": "返回",
"board-change-color": "變更顏色",
"board-change-background-image": "Change Background Image",
"board-background-image-url": "Background Image URL",
"add-background-image": "Add Background Image",
"remove-background-image": "Remove Background Image",
"board-change-background-image": "變更背景圖片",
"board-background-image-url": "背景圖片 URL",
"add-background-image": "新增背景圖片",
"remove-background-image": "移除背景圖片",
"show-at-all-boards-page" : "Show at All Boards page",
"board-info-on-my-boards" : "All Boards Settings",
"boardInfoOnMyBoardsPopup-title" : "All Boards Settings",
@@ -162,9 +162,9 @@
"board-public-info": "此看板將被設為<strong>公開</strong>。",
"board-drag-drop-reorder-or-click-open": "拖放以重新排序看板圖示。點擊看板圖示開啟看板。",
"boardChangeColorPopup-title": "變更看板背景",
"boardChangeBackgroundImagePopup-title": "Change Background Image",
"boardChangeBackgroundImagePopup-title": "變更背景圖片",
"allBoardsChangeColorPopup-title": "變更顏色",
"allBoardsChangeBackgroundImagePopup-title": "Change Background Image",
"allBoardsChangeBackgroundImagePopup-title": "變更背景圖片",
"boardChangeTitlePopup-title": "重新命名看板",
"boardChangeVisibilityPopup-title": "更改可見度",
"boardChangeWatchPopup-title": "更改訂閱狀態",
@@ -421,7 +421,7 @@
"filter-overdue": "逾期",
"filter-due-today": "今天到期",
"filter-due-this-week": "本週到期",
"filter-due-next-week": "Due next week",
"filter-due-next-week": "下週到期",
"filter-due-tomorrow": "明天到期",
"list-filter-label": "篩選清單依據標題",
"filter-clear": "清除篩選條件",
@@ -550,7 +550,7 @@
"public": "公開",
"public-desc": "該看板將被公開。任何人均可透過連結檢視,並且將對Google和其他搜尋引擎開放。只有加入至該看板的成員才可進行編輯。",
"quick-access-description": "加入我的最愛的看板將會在此導覽列中新增捷徑",
"remove-cover": "Remove cover image from minicard",
"remove-cover": "從小卡片移除封面圖片",
"remove-from-board": "從看板中刪除",
"remove-label": "移除標籤",
"listDeletePopup-title": "刪除標籤",
@@ -739,9 +739,9 @@
"deposit-subtasks-list": "將子任務放入以下清單:",
"show-parent-in-minicard": "顯示上一級卡片:",
"description-on-minicard": "Description on minicard",
"cover-attachment-on-minicard": "Cover image on minicard",
"badge-attachment-on-minicard": "Count of attachments on minicard",
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
"cover-attachment-on-minicard": "小卡片的封面圖片",
"badge-attachment-on-minicard": "小卡片的附件數量",
"card-sorting-by-number-on-minicard": "卡片按小卡片數量排序",
"prefix-with-full-path": "完整路徑前綴",
"prefix-with-parent": "父層前綴",
"subtext-with-full-path": "子標題顯示完整路徑",
@@ -962,7 +962,7 @@
"teams": "團隊",
"displayName": "顯示用名稱",
"shortName": "排序用名稱",
"autoAddUsersWithDomainName": "Automatically add users with the domain name",
"autoAddUsersWithDomainName": "自動使用網域名稱新增使用者",
"website": "網站",
"person": "人物",
"my-cards": "我的卡片",
@@ -1099,7 +1099,7 @@
"label-names": "標籤名稱",
"archived-at": "封存於",
"sort-cards": "排序卡片",
"sort-is-on": "Sort is on",
"sort-is-on": "開啟排序",
"cardsSortPopup-title": "排序卡片",
"due-date": "到期日",
"server-error": "伺服器錯誤",
@@ -1117,7 +1117,7 @@
"custom-field-stringtemplate-separator": "Separator (use &#32; or &nbsp; for a space)",
"custom-field-stringtemplate-item-placeholder": "Press enter to add more items",
"creator": "創建者",
"creator-on-minicard": "Creator on minicard",
"creator-on-minicard": "小卡片建立者",
"filesReportTitle": "檔案報告",
"reports": "報告",
"rulesReportTitle": "規則報告",
@@ -1226,23 +1226,23 @@
"minicardDetailsActionsPopup-title": "卡片內容",
"Mongo_sessions_count": "Mongo sessions count",
"change-visibility": "更改可見度",
"max-upload-filesize": "Max upload filesize in bytes:",
"allowed-upload-filetypes": "Allowed upload filetypes:",
"max-avatar-filesize": "Max avatar filesize in bytes:",
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
"drag-board": "Drag board",
"translation-number": "The number of custom translation strings is:",
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
"newTranslationPopup-title": "New custom translation string",
"editTranslationPopup-title": "Edit custom translation string",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"max-upload-filesize": "最大上傳大小,以位元組為單位:",
"allowed-upload-filetypes": "允許上傳的檔案類型:",
"max-avatar-filesize": "最大大頭照大小,以位元組為單位:",
"allowed-avatar-filetypes": "允許的大頭照檔案類型:",
"invalid-file": "若檔案名稱無效,則取消上傳或重新命名。",
"preview-pdf-not-supported": "您的裝置不支援預覽 PDF。請嘗試下載。",
"drag-board": "拖曳看板",
"translation-number": "自訂翻譯字串的數量為:",
"delete-translation-confirm-popup": "您確定您想要刪除此自訂翻譯字串嗎?此動作無法復原。",
"newTranslationPopup-title": "新的自訂翻譯字串",
"editTranslationPopup-title": "編輯自訂翻譯字串",
"settingsTranslationPopup-title": "刪除此自訂翻譯字串?",
"translation": "翻譯",
"text": "文字",
"translation-text": "Translation text",
"show-at-minicard": "Show at minicard",
"show-checklist-at-minicard": "Show checklist at minicard",
"show-subtasks-field": "Show subtasks field",
"convert-to-markdown": "Convert to markdown"
"translation-text": "翻譯文字",
"show-at-minicard": "在小卡片上顯示",
"show-checklist-at-minicard": "在小卡片上顯示檢查清單",
"show-subtasks-field": "顯示子工作項目欄位",
"convert-to-markdown": "轉換為 Markdown"
}
+30
View File
@@ -2165,6 +2165,36 @@ if (Meteor.isServer) {
}
});
/**
* @operation update_board_title
* @summary Update the title of a board
*
* @param {string} boardId the ID of the board to update
* @param {string} title the new title for the board
*/
JsonRoutes.add('PUT', '/api/boards/:boardId/title', function(req, res) {
try {
Authentication.checkUserId(req.userId);
const boardId = req.params.boardId;
const title = req.body.title;
Boards.direct.update({ _id: boardId }, { $set: { title } });
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: boardId,
title,
},
});
} catch (error) {
JsonRoutes.sendResult(res, {
code: 200,
data: error,
});
}
});
/**
* @operation add_board_label
* @summary Add a label to a board
+19
View File
@@ -3860,6 +3860,25 @@ JsonRoutes.add('GET', '/api/boards/:boardId/cards_count', function(
newBoardId,
);
}
if (req.body.archive) {
function isTrue(data) {
return String(data).toLowerCase() === 'true';
}
var archive = isTrue(req.body.archive);
Cards.direct.update(
{
_id: paramCardId,
listId: paramListId,
boardId: paramBoardId,
archived: !archive,
},
{
$set: {
archived: archive,
},
},
);
}
JsonRoutes.sendResult(res, {
code: 200,
data: {
+5 -271
View File
@@ -1,13 +1,13 @@
{
"name": "wekan",
"version": "v7.26.0",
"version": "v7.31.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/runtime": {
"version": "7.23.7",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz",
"integrity": "sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==",
"version": "7.23.9",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
"integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
"requires": {
"regenerator-runtime": "^0.14.0"
}
@@ -164,11 +164,6 @@
"uri-js": "^4.2.2"
}
},
"ansi-colors": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="
},
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -336,11 +331,6 @@
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
"integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
},
"boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -410,32 +400,6 @@
"traverse": ">=0.3.0 <0.4"
}
},
"cheerio": {
"version": "1.0.0-rc.10",
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
"integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
"requires": {
"cheerio-select": "^1.5.0",
"dom-serializer": "^1.3.2",
"domhandler": "^4.2.0",
"htmlparser2": "^6.1.0",
"parse5": "^6.0.1",
"parse5-htmlparser2-tree-adapter": "^6.0.1",
"tslib": "^2.2.0"
}
},
"cheerio-select": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz",
"integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==",
"requires": {
"css-select": "^4.3.0",
"css-what": "^6.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.3.1",
"domutils": "^2.8.0"
}
},
"chownr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
@@ -451,11 +415,6 @@
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
},
"commander": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="
},
"compress-commons": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz",
@@ -496,23 +455,6 @@
"readable-stream": "^3.4.0"
}
},
"css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
"integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
"requires": {
"boolbase": "^1.0.0",
"css-what": "^6.0.1",
"domhandler": "^4.3.1",
"domutils": "^2.8.0",
"nth-check": "^2.0.1"
}
},
"css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
},
"dayjs": {
"version": "1.11.10",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
@@ -557,44 +499,11 @@
"integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
"dev": true
},
"dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"requires": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
"entities": "^2.0.0"
}
},
"domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
},
"domhandler": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"requires": {
"domelementtype": "^2.2.0"
}
},
"dompurify": {
"version": "2.4.7",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz",
"integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ=="
},
"domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"requires": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0"
}
},
"duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
@@ -655,23 +564,13 @@
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
},
"escape-goat": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz",
"integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw=="
},
"escape-string-regexp": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
},
"esm": {
"version": "3.2.25",
"resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
},
"exceljs": {
"version": "git+https://github.com/exceljs/exceljs.git#ddab279a882aba8f18fc5127c6d59e3aa9f596c7",
"version": "git+https://github.com/exceljs/exceljs.git#5bed18b45e824f409b08456b59b87430ded023ab",
"from": "git+https://github.com/exceljs/exceljs.git",
"requires": {
"archiver": "^5.0.0",
@@ -926,17 +825,6 @@
"function-bind": "^1.1.2"
}
},
"htmlparser2": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
"requires": {
"domelementtype": "^2.0.1",
"domhandler": "^4.0.0",
"domutils": "^2.5.2",
"entities": "^2.0.0"
}
},
"https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
@@ -1091,18 +979,6 @@
}
}
},
"juice": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/juice/-/juice-8.1.0.tgz",
"integrity": "sha512-FLzurJrx5Iv1e7CfBSZH68dC04EEvXvvVvPYB7Vx1WAuhCp1ZPIMtqxc+WTWxVkpTIC2Ach/GAv0rQbtGf6YMA==",
"requires": {
"cheerio": "1.0.0-rc.10",
"commander": "^6.1.0",
"mensch": "^0.3.4",
"slick": "^1.12.2",
"web-resource-inliner": "^6.0.1"
}
},
"just-extend": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
@@ -1328,36 +1204,11 @@
"resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz",
"integrity": "sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ=="
},
"markdown-it-mathjax3": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz",
"integrity": "sha512-TX3GW5NjmupgFtMJGRauioMbbkGsOXAAt1DZ/rzzYmTHqzkO1rNAdiMD4NiruurToPApn2kYy76x02QN26qr2w==",
"requires": {
"juice": "^8.0.0",
"mathjax-full": "^3.2.0"
}
},
"mathjax-full": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz",
"integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==",
"requires": {
"esm": "^3.2.25",
"mhchemparser": "^4.1.0",
"mj-context-menu": "^0.6.1",
"speech-rule-engine": "^4.0.6"
}
},
"mdurl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
},
"mensch": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz",
"integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g=="
},
"message-box": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/message-box/-/message-box-0.2.7.tgz",
@@ -2148,16 +1999,6 @@
}
}
},
"mhchemparser": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz",
"integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ=="
},
"mime": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
},
"mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -2229,11 +2070,6 @@
}
}
},
"mj-context-menu": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
"integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA=="
},
"mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -2321,11 +2157,6 @@
"whatwg-url": "^5.0.0"
}
},
"nodemailer": {
"version": "6.9.7",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.7.tgz",
"integrity": "sha512-rUtR77ksqex/eZRLmQ21LKVH5nAAsVicAtAYudK7JgwenEDZ0UIQ1adUGqErz7sMkWYxWTTU1aeP2Jga6WQyJw=="
},
"nopt": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
@@ -2350,14 +2181,6 @@
"set-blocking": "^2.0.0"
}
},
"nth-check": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"requires": {
"boolbase": "^1.0.0"
}
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -2404,19 +2227,6 @@
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
"integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA=="
},
"parse5": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
},
"parse5-htmlparser2-tree-adapter": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
"integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
"requires": {
"parse5": "^6.0.1"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -2632,11 +2442,6 @@
"supports-color": "^7.2.0"
}
},
"slick": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz",
"integrity": "sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A=="
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -2651,23 +2456,6 @@
"source-map": "^0.6.0"
}
},
"speech-rule-engine": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz",
"integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==",
"requires": {
"commander": "9.2.0",
"wicked-good-xpath": "1.3.0",
"xmldom-sre": "0.1.31"
},
"dependencies": {
"commander": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz",
"integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w=="
}
}
},
"split-on-first": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
@@ -2787,11 +2575,6 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
"integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="
},
"tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
"type-detect": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
@@ -2879,11 +2662,6 @@
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
},
"valid-data-url": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-3.0.1.tgz",
"integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA=="
},
"vasync": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz",
@@ -2935,40 +2713,6 @@
"util": "^0.12.3"
}
},
"web-resource-inliner": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz",
"integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==",
"requires": {
"ansi-colors": "^4.1.1",
"escape-goat": "^3.0.0",
"htmlparser2": "^5.0.0",
"mime": "^2.4.6",
"node-fetch": "^2.6.0",
"valid-data-url": "^3.0.0"
},
"dependencies": {
"domhandler": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
"integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
"requires": {
"domelementtype": "^2.0.1"
}
},
"htmlparser2": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz",
"integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==",
"requires": {
"domelementtype": "^2.0.1",
"domhandler": "^3.3.0",
"domutils": "^2.4.2",
"entities": "^2.0.0"
}
}
}
},
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -2995,11 +2739,6 @@
"has-tostringtag": "^1.0.0"
}
},
"wicked-good-xpath": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
"integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw=="
},
"wide-align": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
@@ -3037,11 +2776,6 @@
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
},
"xmldom-sre": {
"version": "0.1.31",
"resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz",
"integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw=="
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+2 -4
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v7.26.0",
"version": "v7.31.0",
"description": "Open-Source kanban",
"private": true,
"repository": {
@@ -17,7 +17,7 @@
"sinon": "^13.0.2"
},
"dependencies": {
"@babel/runtime": "^7.23.6",
"@babel/runtime": "^7.23.9",
"@mapbox/node-pre-gyp": "^1.0.10",
"@rwap/jquery-ui-touch-punch": "^1.0.11",
"@wekanteam/html-to-markdown": "^1.0.2",
@@ -41,12 +41,10 @@
"ldapjs": "^2.3.3",
"markdown-it": "^12.3.2",
"markdown-it-emoji": "^2.0.0",
"markdown-it-mathjax3": "^4.3.1",
"meteor-accounts-t9n": "^2.6.0",
"meteor-node-stubs": "^1.2.7",
"minio": "^7.1.3",
"moment": "^2.29.4",
"nodemailer": "^6.6.3",
"os": "^0.1.2",
"page": "^1.11.6",
"papaparse": "^5.3.1",
@@ -36,9 +36,10 @@ for(var i=0; i<urlschemes.length;i++){
}
var emoji = require('markdown-it-emoji');
var mathjax = require('markdown-it-mathjax3');
Markdown.use(emoji);
Markdown.use(mathjax);
//var mathjax = require('markdown-it-mathjax3');
//Markdown.use(mathjax);
// Try to fix Mermaid Diagram error: Maximum call stack size exceeded.
// Added bigger text size for Diagram.
+278 -46
View File
@@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Wekan REST API v7.26</title>
<title>Wekan REST API v7.31</title>
<style>
</style>
@@ -1548,7 +1548,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 v7.26">Wekan REST API v7.26</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v7.31">Wekan REST API v7.31</a>
</li>
@@ -1626,6 +1626,11 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
</li>
<li>
<a href="#update_board_title" class="toc-h2 toc-link" data-title="">update_board_title</a>
</li>
<li>
<a href="#get_boards_count" class="toc-h2 toc-link" data-title="">get_boards_count</a>
@@ -2057,7 +2062,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 v7.26</h1>
<h1 id="wekan-rest-api">Wekan REST API v7.31</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>
@@ -4692,6 +4697,223 @@ System.out.println(response.toString());
To perform this operation, you must be authenticated by means of one of the following methods:
UserSecurity
</aside>
<h2 id="update_board_title">update_board_title</h2>
<p><a id="opIdupdate_board_title"></a></p>
<blockquote>
<p>Code samples</p>
</blockquote>
<pre class="highlight tab tab-shell"><code><span class="hljs-comment"># You can also use wget</span>
curl -X PUT /api/boards/{board}/title \
-H <span class="hljs-string">&#x27;Content-Type: multipart/form-data&#x27;</span> \
-H <span class="hljs-string">&#x27;Authorization: API_KEY&#x27;</span>
</code></pre>
<pre class="highlight tab tab-http"><code><span class="hljs-keyword">PUT</span> <span class="hljs-string">/api/boards/{board}/title</span> <span class="hljs-meta">HTTP/1.1</span>
<span class="fortran">Content-<span class="hljs-keyword">Type</span>: multipart/<span class="hljs-keyword">form</span>-<span class="hljs-keyword">data</span>
</span></code></pre>
<pre class="highlight tab tab-javascript"><code><span class="hljs-keyword">const</span> inputBody = <span class="hljs-string">&#x27;{
&quot;title&quot;: &quot;string&quot;
}&#x27;</span>;
<span class="hljs-keyword">const</span> headers = {
<span class="hljs-string">&#x27;Content-Type&#x27;</span>:<span class="hljs-string">&#x27;multipart/form-data&#x27;</span>,
<span class="hljs-string">&#x27;Authorization&#x27;</span>:<span class="hljs-string">&#x27;API_KEY&#x27;</span>
};
fetch(<span class="hljs-string">&#x27;/api/boards/{board}/title&#x27;</span>,
{
<span class="hljs-attr">method</span>: <span class="hljs-string">&#x27;PUT&#x27;</span>,
<span class="hljs-attr">body</span>: inputBody,
<span class="hljs-attr">headers</span>: headers
})
.then(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">res</span>) </span>{
<span class="hljs-keyword">return</span> res.json();
}).then(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">body</span>) </span>{
<span class="hljs-built_in">console</span>.log(body);
});
</code></pre>
<pre class="highlight tab tab-javascript--nodejs"><code><span class="hljs-keyword">const</span> fetch = <span class="hljs-built_in">require</span>(<span class="hljs-string">&#x27;node-fetch&#x27;</span>);
<span class="hljs-keyword">const</span> inputBody = {
<span class="hljs-string">&quot;title&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
};
<span class="hljs-keyword">const</span> headers = {
<span class="hljs-string">&#x27;Content-Type&#x27;</span>:<span class="hljs-string">&#x27;multipart/form-data&#x27;</span>,
<span class="hljs-string">&#x27;Authorization&#x27;</span>:<span class="hljs-string">&#x27;API_KEY&#x27;</span>
};
fetch(<span class="hljs-string">&#x27;/api/boards/{board}/title&#x27;</span>,
{
<span class="hljs-attr">method</span>: <span class="hljs-string">&#x27;PUT&#x27;</span>,
<span class="hljs-attr">body</span>: <span class="hljs-built_in">JSON</span>.stringify(inputBody),
<span class="hljs-attr">headers</span>: headers
})
.then(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">res</span>) </span>{
<span class="hljs-keyword">return</span> res.json();
}).then(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">body</span>) </span>{
<span class="hljs-built_in">console</span>.log(body);
});
</code></pre>
<pre class="highlight tab tab-ruby"><code><span class="hljs-keyword">require</span> <span class="hljs-string">&#x27;rest-client&#x27;</span>
<span class="hljs-keyword">require</span> <span class="hljs-string">&#x27;json&#x27;</span>
headers = {
<span class="hljs-string">&#x27;Content-Type&#x27;</span> =&gt; <span class="hljs-string">&#x27;multipart/form-data&#x27;</span>,
<span class="hljs-string">&#x27;Authorization&#x27;</span> =&gt; <span class="hljs-string">&#x27;API_KEY&#x27;</span>
}
result = RestClient.put <span class="hljs-string">&#x27;/api/boards/{board}/title&#x27;</span>,
<span class="hljs-symbol">params:</span> {
}, <span class="hljs-symbol">headers:</span> headers
p JSON.parse(result)
</code></pre>
<pre class="highlight tab tab-python"><code><span class="hljs-keyword">import</span> requests
headers = {
<span class="hljs-string">&#x27;Content-Type&#x27;</span>: <span class="hljs-string">&#x27;multipart/form-data&#x27;</span>,
<span class="hljs-string">&#x27;Authorization&#x27;</span>: <span class="hljs-string">&#x27;API_KEY&#x27;</span>
}
r = requests.put(<span class="hljs-string">&#x27;/api/boards/{board}/title&#x27;</span>, headers = headers)
<span class="hljs-built_in">print</span>(r.json())
</code></pre>
<pre class="highlight tab tab-java"><code>URL obj = <span class="hljs-keyword">new</span> URL(<span class="hljs-string">&quot;/api/boards/{board}/title&quot;</span>);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod(<span class="hljs-string">&quot;PUT&quot;</span>);
<span class="hljs-keyword">int</span> responseCode = con.getResponseCode();
BufferedReader in = <span class="hljs-keyword">new</span> BufferedReader(
<span class="hljs-keyword">new</span> InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = <span class="hljs-keyword">new</span> StringBuffer();
<span class="hljs-keyword">while</span> ((inputLine = in.readLine()) != <span class="hljs-keyword">null</span>) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
</code></pre>
<pre class="highlight tab tab-go"><code><span class="hljs-keyword">package</span> main
<span class="hljs-keyword">import</span> (
<span class="hljs-string">&quot;bytes&quot;</span>
<span class="hljs-string">&quot;net/http&quot;</span>
)
<span class="hljs-function"><span class="hljs-keyword">func</span> <span class="hljs-title">main</span><span class="hljs-params">()</span></span> {
headers := <span class="hljs-keyword">map</span>[<span class="hljs-keyword">string</span>][]<span class="hljs-keyword">string</span>{
<span class="hljs-string">&quot;Content-Type&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;multipart/form-data&quot;</span>},
<span class="hljs-string">&quot;Authorization&quot;</span>: []<span class="hljs-keyword">string</span>{<span class="hljs-string">&quot;API_KEY&quot;</span>},
}
data := bytes.NewBuffer([]<span class="hljs-keyword">byte</span>{jsonReq})
req, err := http.NewRequest(<span class="hljs-string">&quot;PUT&quot;</span>, <span class="hljs-string">&quot;/api/boards/{board}/title&quot;</span>, data)
req.Header = headers
client := &amp;http.Client{}
resp, err := client.Do(req)
<span class="hljs-comment">// ...</span>
}
</code></pre>
<pre class="highlight tab tab-php"><code> <span class="hljs-string">&#x27;multipart/form-data&#x27;</span>,
<span class="hljs-string">&#x27;Authorization&#x27;</span> =&gt; <span class="hljs-string">&#x27;API_KEY&#x27;</span>,
);
<span class="hljs-variable">$client</span> = <span class="hljs-keyword">new</span> \GuzzleHttp\Client();
<span class="hljs-comment">// Define array of request body.</span>
<span class="hljs-variable">$request_body</span> = <span class="hljs-keyword">array</span>();
<span class="hljs-keyword">try</span> {
<span class="hljs-variable">$response</span> = <span class="hljs-variable">$client</span>-&gt;request(<span class="hljs-string">&#x27;PUT&#x27;</span>,<span class="hljs-string">&#x27;/api/boards/{board}/title&#x27;</span>, <span class="hljs-keyword">array</span>(
<span class="hljs-string">&#x27;headers&#x27;</span> =&gt; <span class="hljs-variable">$headers</span>,
<span class="hljs-string">&#x27;json&#x27;</span> =&gt; <span class="hljs-variable">$request_body</span>,
)
);
print_r(<span class="hljs-variable">$response</span>-&gt;getBody()-&gt;getContents());
}
<span class="hljs-keyword">catch</span> (\GuzzleHttp\<span class="hljs-built_in">Exception</span>\BadResponseException <span class="hljs-variable">$e</span>) {
<span class="hljs-comment">// handle exception or api errors.</span>
print_r(<span class="hljs-variable">$e</span>-&gt;getMessage());
}
<span class="hljs-comment">// ...</span>
</code></pre>
<p><code>PUT /api/boards/{board}/title</code></p>
<p><em>Update the title of a board</em></p>
<blockquote>
<p>Body parameter</p>
</blockquote>
<pre class="highlight tab tab-yaml"><code><span class="hljs-attr">title:</span> <span class="hljs-string">string</span>
</code></pre>
<h3 id="update_board_title-parameters">Parameters</h3>
<table>
<thead>
<tr>
<th>Name</th>
<th>In</th>
<th>Type</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>board</td>
<td>path</td>
<td>string</td>
<td>true</td>
<td>the ID of the board to update</td>
</tr>
<tr>
<td>body</td>
<td>body</td>
<td>object</td>
<td>true</td>
<td>none</td>
</tr>
<tr>
<td>» title</td>
<td>body</td>
<td>string</td>
<td>true</td>
<td>the new title for the board</td>
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-8">Detailed descriptions</h4>
<p><strong>board</strong>: the ID of the board to update</p>
<h3 id="update_board_title-responses">Responses</h3>
<table>
<thead>
<tr>
<th>Status</th>
<th>Meaning</th>
<th>Description</th>
<th>Schema</th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td><a href="https://tools.ietf.org/html/rfc7231#section-6.3.1">OK</a></td>
<td>200 response</td>
<td>None</td>
</tr>
</tbody>
</table>
<aside class="warning">
To perform this operation, you must be authenticated by means of one of the following methods:
UserSecurity
</aside>
<h2 id="get_boards_count">get_boards_count</h2>
<p><a id="opIdget_boards_count"></a></p>
<blockquote>
@@ -5070,7 +5292,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-8">Detailed descriptions</h4>
<h4 id="detailed-descriptions-9">Detailed descriptions</h4>
<p><strong>user</strong>: the ID of the user to retrieve the data</p>
<blockquote>
<p>Example responses</p>
@@ -5313,7 +5535,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-9">Detailed descriptions</h4>
<h4 id="detailed-descriptions-10">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<blockquote>
@@ -5598,7 +5820,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-10">Detailed descriptions</h4>
<h4 id="detailed-descriptions-11">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<blockquote>
@@ -5838,7 +6060,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-11">Detailed descriptions</h4>
<h4 id="detailed-descriptions-12">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<p><strong>checklist</strong>: the ID of the checklist</p>
@@ -6147,7 +6369,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-12">Detailed descriptions</h4>
<h4 id="detailed-descriptions-13">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<p><strong>checklist</strong>: the ID of the checklist to remove</p>
@@ -6421,7 +6643,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-13">Detailed descriptions</h4>
<h4 id="detailed-descriptions-14">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<p><strong>checklist</strong>: the ID of the checklist</p>
@@ -6669,7 +6891,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-14">Detailed descriptions</h4>
<h4 id="detailed-descriptions-15">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<p><strong>checklist</strong>: the checklist ID</p>
@@ -6944,7 +7166,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-15">Detailed descriptions</h4>
<h4 id="detailed-descriptions-16">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<p><strong>checklist</strong>: the checklist ID</p>
@@ -7194,7 +7416,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-16">Detailed descriptions</h4>
<h4 id="detailed-descriptions-17">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>card</strong>: the card ID</p>
<p><strong>checklist</strong>: the checklist ID</p>
@@ -7430,7 +7652,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-17">Detailed descriptions</h4>
<h4 id="detailed-descriptions-18">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the card</p>
<p><strong>card</strong>: the ID of the card</p>
<blockquote>
@@ -7723,7 +7945,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-18">Detailed descriptions</h4>
<h4 id="detailed-descriptions-19">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the card</p>
<p><strong>card</strong>: the ID of the card</p>
<blockquote>
@@ -7963,7 +8185,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-19">Detailed descriptions</h4>
<h4 id="detailed-descriptions-20">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the card</p>
<p><strong>card</strong>: the ID of the card</p>
<p><strong>comment</strong>: the ID of the comment to retrieve</p>
@@ -8187,7 +8409,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-20">Detailed descriptions</h4>
<h4 id="detailed-descriptions-21">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the card</p>
<p><strong>card</strong>: the ID of the card</p>
<p><strong>comment</strong>: the ID of the comment to delete</p>
@@ -8429,7 +8651,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-21">Detailed descriptions</h4>
<h4 id="detailed-descriptions-22">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>customField</strong>: the list ID</p>
<p><strong>customFieldValue</strong>: the value to look for</p>
@@ -8690,7 +8912,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-22">Detailed descriptions</h4>
<h4 id="detailed-descriptions-23">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<blockquote>
<p>Example responses</p>
@@ -8922,7 +9144,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-23">Detailed descriptions</h4>
<h4 id="detailed-descriptions-24">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>list</strong>: the list ID</p>
<blockquote>
@@ -9255,7 +9477,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-24">Detailed descriptions</h4>
<h4 id="detailed-descriptions-25">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the new card</p>
<p><strong>list</strong>: the list ID of the new card</p>
<blockquote>
@@ -9495,7 +9717,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-25">Detailed descriptions</h4>
<h4 id="detailed-descriptions-26">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>list</strong>: the list ID of the card</p>
<p><strong>card</strong>: the card ID</p>
@@ -9670,7 +9892,8 @@ Accept: application/json
&quot;assignees&quot;: &quot;string&quot;,
&quot;swimlaneId&quot;: &quot;string&quot;,
&quot;listId&quot;: &quot;string&quot;,
&quot;authorId&quot;: &quot;string&quot;
&quot;authorId&quot;: &quot;string&quot;,
&quot;archive&quot;: &quot;string&quot;
}&#x27;</span>;
<span class="hljs-keyword">const</span> headers = {
<span class="hljs-string">&#x27;Content-Type&#x27;</span>:<span class="hljs-string">&#x27;multipart/form-data&#x27;</span>,
@@ -9717,7 +9940,8 @@ fetch(<span class="hljs-string">&#x27;/api/boards/{board}/lists/{list}/cards/{ca
<span class="hljs-string">&quot;assignees&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;swimlaneId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;listId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;authorId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
<span class="hljs-string">&quot;authorId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;archive&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>
};
<span class="hljs-keyword">const</span> headers = {
<span class="hljs-string">&#x27;Content-Type&#x27;</span>:<span class="hljs-string">&#x27;multipart/form-data&#x27;</span>,
@@ -9870,6 +10094,7 @@ System.out.println(response.toString());
<span class="hljs-attr">swimlaneId:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">listId:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">authorId:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">archive:</span> <span class="hljs-string">string</span>
</code></pre>
<h3 id="edit_card-parameters">Parameters</h3>
@@ -10087,9 +10312,16 @@ System.out.println(response.toString());
<td>false</td>
<td>change the owner of the card</td>
</tr>
<tr>
<td>» archive</td>
<td>body</td>
<td>string</td>
<td>true</td>
<td>the archive value</td>
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-26">Detailed descriptions</h4>
<h4 id="detailed-descriptions-27">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the card</p>
<p><strong>list</strong>: the list ID of the card</p>
<p><strong>card</strong>: the ID of the card</p>
@@ -10332,7 +10564,7 @@ is not put in the recycle bin.</p>
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-27">Detailed descriptions</h4>
<h4 id="detailed-descriptions-28">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the card</p>
<p><strong>list</strong>: the list ID of the card</p>
<p><strong>card</strong>: the ID of the card</p>
@@ -10613,7 +10845,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-28">Detailed descriptions</h4>
<h4 id="detailed-descriptions-29">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID of the card</p>
<p><strong>list</strong>: the list ID of the card</p>
<p><strong>card</strong>: the ID of the card</p>
@@ -10856,7 +11088,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-29">Detailed descriptions</h4>
<h4 id="detailed-descriptions-30">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>list</strong>: the List ID</p>
<blockquote>
@@ -11089,7 +11321,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-30">Detailed descriptions</h4>
<h4 id="detailed-descriptions-31">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>swimlane</strong>: the swimlane ID</p>
<blockquote>
@@ -11915,7 +12147,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-31">Detailed descriptions</h4>
<h4 id="detailed-descriptions-32">Detailed descriptions</h4>
<p><strong>customField</strong>: the ID of the custom field</p>
<blockquote>
<p>Example responses</p>
@@ -12490,7 +12722,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-32">Detailed descriptions</h4>
<h4 id="detailed-descriptions-33">Detailed descriptions</h4>
<p><strong>customField</strong>: the ID of the custom field</p>
<blockquote>
<p>Example responses</p>
@@ -13484,7 +13716,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-33">Detailed descriptions</h4>
<h4 id="detailed-descriptions-34">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<blockquote>
<p>Example responses</p>
@@ -13824,7 +14056,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-34">Detailed descriptions</h4>
<h4 id="detailed-descriptions-35">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<blockquote>
<p>Example responses</p>
@@ -14056,7 +14288,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-35">Detailed descriptions</h4>
<h4 id="detailed-descriptions-36">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>int</strong>: the integration ID</p>
<blockquote>
@@ -14350,7 +14582,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-36">Detailed descriptions</h4>
<h4 id="detailed-descriptions-37">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>int</strong>: the integration ID</p>
<blockquote>
@@ -14583,7 +14815,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-37">Detailed descriptions</h4>
<h4 id="detailed-descriptions-38">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>int</strong>: the integration ID</p>
<blockquote>
@@ -14816,7 +15048,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-38">Detailed descriptions</h4>
<h4 id="detailed-descriptions-39">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>int</strong>: the integration ID</p>
<blockquote>
@@ -15070,7 +15302,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-39">Detailed descriptions</h4>
<h4 id="detailed-descriptions-40">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>int</strong>: the integration ID</p>
<blockquote>
@@ -15286,7 +15518,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-40">Detailed descriptions</h4>
<h4 id="detailed-descriptions-41">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<blockquote>
<p>Example responses</p>
@@ -15553,7 +15785,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-41">Detailed descriptions</h4>
<h4 id="detailed-descriptions-42">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<blockquote>
<p>Example responses</p>
@@ -15785,7 +16017,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-42">Detailed descriptions</h4>
<h4 id="detailed-descriptions-43">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>list</strong>: the List ID</p>
<blockquote>
@@ -16014,7 +16246,7 @@ The list is not put in the recycle bin.</p>
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-43">Detailed descriptions</h4>
<h4 id="detailed-descriptions-44">Detailed descriptions</h4>
<p><strong>board</strong>: the board ID</p>
<p><strong>list</strong>: the ID of the list to remove</p>
<blockquote>
@@ -16241,7 +16473,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-44">Detailed descriptions</h4>
<h4 id="detailed-descriptions-45">Detailed descriptions</h4>
<p><strong>board</strong>: the ID of the board</p>
<blockquote>
<p>Example responses</p>
@@ -16508,7 +16740,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-45">Detailed descriptions</h4>
<h4 id="detailed-descriptions-46">Detailed descriptions</h4>
<p><strong>board</strong>: the ID of the board</p>
<blockquote>
<p>Example responses</p>
@@ -16740,7 +16972,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-46">Detailed descriptions</h4>
<h4 id="detailed-descriptions-47">Detailed descriptions</h4>
<p><strong>board</strong>: the ID of the board</p>
<p><strong>swimlane</strong>: the ID of the swimlane</p>
<blockquote>
@@ -16992,7 +17224,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-47">Detailed descriptions</h4>
<h4 id="detailed-descriptions-48">Detailed descriptions</h4>
<p><strong>board</strong>: the ID of the board</p>
<p><strong>swimlane</strong>: the ID of the swimlane to edit</p>
<blockquote>
@@ -17226,7 +17458,7 @@ System.out.println(response.toString());
</tr>
</tbody>
</table>
<h4 id="detailed-descriptions-48">Detailed descriptions</h4>
<h4 id="detailed-descriptions-49">Detailed descriptions</h4>
<p><strong>board</strong>: the ID of the board</p>
<p><strong>swimlane</strong>: the ID of the swimlane</p>
<blockquote>
+36 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v7.26
version: v7.31
description: |
The REST API allows you to control and extend Wekan with ease.
@@ -2077,6 +2077,11 @@ paths:
change the owner of the card
type: string
required: false
- name: archive
in: formData
description: the archive value
type: string
required: true
- name: board
in: path
description: |
@@ -2498,6 +2503,36 @@ paths:
type: string
listId:
type: string
/api/boards/{board}/title:
put:
operationId: update_board_title
summary: Update the title of a board
tags:
- Boards
consumes:
- multipart/form-data
- application/json
parameters:
- name: title
in: formData
description: |
the new title for the board
type: string
required: true
- name: board
in: path
description: |
the ID of the board to update
type: string
required: true
produces:
- application/json
security:
- UserSecurity: []
responses:
'200':
description: |-
200 response
/api/boards_count:
get:
operationId: get_boards_count
+6 -5
View File
@@ -6,16 +6,17 @@ cd ~/repos/wekan/.build
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-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-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-amd64.zip a:/home/wekan/
#scp wekan-$1-amd64.zip s:/home/linux1/
#scp wekan-$1.zip o:/home/ubuntu/
} | parallel -k
cd ..
echo "x64 bundle and arm64/s390x build scripts uploaded to x2/a/s."
#echo "x64 bundle and arm64/s390x build scripts uploaded to x2/a/s."
echo "x64 bundle and arm64/s390x build scripts uploaded to x2."
+2 -2
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 726,
appVersion = 731,
# Increment this for every release.
appMarketingVersion = (defaultText = "7.26.0~2024-01-02"),
appMarketingVersion = (defaultText = "7.31.0~2024-02-17"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+2 -1
View File
@@ -9,7 +9,8 @@ if [ -z "$LANG" ]; then
fi
export LC_ALL=C
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/snap/wekan/current/lib/x86_64-linux-gnu
export PATH=/snap/${SNAP_NAME}/current/usr/bin:/snap/${SNAP_NAME}/current/bin:$PATH
export LD_LIBRARY_PATH=/snap/${SNAP_NAME}/current/lib:/snap/${SNAP_NAME}/current/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
if [ -z $1 ]; then
DATE=`/bin/date +%Y%m%dT%H%M%S`
+64 -64
View File
@@ -15,54 +15,55 @@ if [ -z "$LANG" ]; then
fi
export LC_ALL=C
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/snap/${SNAP_NAME}/current/lib/x86_64-linux-gnu
export PATH=/snap/${SNAP_NAME}/current/usr/bin:/snap/${SNAP_NAME}/current/bin:$PATH
export LD_LIBRARY_PATH=/snap/${SNAP_NAME}/current/lib:/snap/${SNAP_NAME}/current/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
if test -f "$SNAP_COMMON/01-migrate-mongo3-to-mongo5.txt"; then
touch "$SNAP_COMMON/01-migrate-mongo3-to-mongo5.txt"
# Stop MongoDB
touch "$SNAP_COMMON/02-disable-mongo.txt"
snapctl stop --disable ${SNAP_NAME}.mongodb
touch "$SNAP_COMMON/03-eval-stop-mongo.txt"
mongo wekan --eval "db.getSiblingDB('admin').shutdownServer()" $BIND_OPTIONS
# Start MongoDB 4.4
touch "$SNAP_COMMON/04-start-mongo44.txt"
$SNAP/mongo44bin/mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/02_mongodb_log_while_migrate.txt --logappend --journal $MONGO_URL --quiet
# Wait MongoDB 4.4 to start
touch "$SNAP_COMMON/05-wait-2s-mongo44-start.txt"
sleep 2s
# Dump Old MongoDB 3.x database
touch "$SNAP_COMMON/06-dump-database.txt"
(cd $SNAP_COMMON && mongodump --port ${MONGODB_PORT})
# Stop MongoDB 4.4
touch "$SNAP_COMMON/07-stop-mongo44.txt"
$SNAP/mongo44bin/mongo wekan --eval "db.getSiblingDB('admin').shutdownServer()" $BIND_OPTIONS
# Wait MongoDB 4.4 to stop
touch "$SNAP_COMMON/08-wait-2s-mongo44-stop.txt"
sleep 2s
# Start MongoDB 5
touch "$SNAP_COMMON/09-start-mongo5.txt"
mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/10_mongodb_log_while_migrate.txt --logappend --journal $MONGO_URL --quiet
# Restore database
touch "$SNAP_COMMON/11-mongorestore-to-mongo5.txt"
(cd $SNAP_COMMON && mongorestore --port ${MONGODB_PORT})
# Wait 5s
touch "$SNAP_COMMON/12-wait-5s-after-restore.txt"
sleep 5s
# Shutdown mongodb
touch "$SNAP_COMMON/13-shutdown-mongodb.txt"
mongo wekan --eval "db.getSiblingDB('admin').shutdownServer()" $BIND_OPTIONS
touch "$SNAP_COMMON/14-wait-5s-after-mongo5-shutdown.txt"
sleep 5s
# Enable MongoDB 5
touch "$SNAP_COMMON/15-enable-mongo-5.txt"
snapctl start --enable ${SNAP_NAME}.mongodb
fi
#if test -f "$SNAP_COMMON/01-migrate-mongo3-to-mongo5.txt"; then
# touch "$SNAP_COMMON/01-migrate-mongo3-to-mongo5.txt"
# # Stop MongoDB
# touch "$SNAP_COMMON/02-disable-mongo.txt"
# snapctl stop --disable ${SNAP_NAME}.mongodb
# touch "$SNAP_COMMON/03-eval-stop-mongo.txt"
# mongo wekan --eval "db.getSiblingDB('admin').shutdownServer()" $BIND_OPTIONS
# # Start MongoDB 4.4
# touch "$SNAP_COMMON/04-start-mongo44.txt"
# $SNAP/mongo44bin/mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/02_mongodb_log_while_migrate.txt --logappend --journal $MONGO_URL --quiet
# # Wait MongoDB 4.4 to start
# touch "$SNAP_COMMON/05-wait-2s-mongo44-start.txt"
# sleep 2s
# # Dump Old MongoDB 3.x database
# touch "$SNAP_COMMON/06-dump-database.txt"
# (cd $SNAP_COMMON && mongodump --port ${MONGODB_PORT})
# # Stop MongoDB 4.4
# touch "$SNAP_COMMON/07-stop-mongo44.txt"
# $SNAP/mongo44bin/mongo wekan --eval "db.getSiblingDB('admin').shutdownServer()" $BIND_OPTIONS
# # Wait MongoDB 4.4 to stop
# touch "$SNAP_COMMON/08-wait-2s-mongo44-stop.txt"
# sleep 2s
# # Start MongoDB 5
# touch "$SNAP_COMMON/09-start-mongo5.txt"
# mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/10_mongodb_log_while_migrate.txt --logappend --journal $MONGO_URL --quiet
# # Restore database
# touch "$SNAP_COMMON/11-mongorestore-to-mongo5.txt"
# (cd $SNAP_COMMON && mongorestore --port ${MONGODB_PORT})
# # Wait 5s
# touch "$SNAP_COMMON/12-wait-5s-after-restore.txt"
# sleep 5s
# # Shutdown mongodb
# touch "$SNAP_COMMON/13-shutdown-mongodb.txt"
# mongo wekan --eval "db.getSiblingDB('admin').shutdownServer()" $BIND_OPTIONS
# touch "$SNAP_COMMON/14-wait-5s-after-mongo5-shutdown.txt"
# sleep 5s
# # Enable MongoDB 5
# touch "$SNAP_COMMON/15-enable-mongo-5.txt"
# snapctl start --enable ${SNAP_NAME}.mongodb
#fi
# When starting MongoDB, if logfile exist, delete it, because now uses syslog instead of logfile,
# because syslog usually already has log rotation.
# https://github.com/wekan/wekan-snap/issues/92
if test -f "$SNAP_COMMON/mongodb.log"; then
rm -f "$SNAP_COMMON/mongodb.log"
fi
#if test -f "$SNAP_COMMON/mongodb.log"; then
# rm -f "$SNAP_COMMON/mongodb.log"
#fi
# Alternative: When starting MongoDB, and using logfile, truncate log to last 1000 lines of text.
# 1) If file exists:
@@ -77,13 +78,6 @@ fi
if [ -z "$MONGO_URL" ]; then
# Disable MongoDB telemetry and free monitoring
mongo --eval "disableTelemetry()"
mongo --eval "db.disableFreeMonitoring()"
# Snap: Disable apparmor="DENIED" at syslog
# https://github.com/wekan/wekan/issues/4855
mongo wekan --eval 'db.adminCommand({ setParameter: 1, diagnosticDataCollectionEnabled: false});' $BIND_OPTIONS
# start mongo deamon
BIND_OPTIONS=""
if [ "nill" != "$MONGODB_BIND_UNIX_SOCKET" ] && [ "x" != "x${MONGODB_BIND_UNIX_SOCKET}" ]; then
@@ -113,20 +107,20 @@ if [ -z "$MONGO_URL" ]; then
mongod --dbpath $SNAP_COMMON --logpath /dev/null --journal $BIND_OPTIONS --quiet
fi
# Drop indexes on database upgrade, when starting MongoDB
#mongo wekan --eval "db.getCollectionNames().forEach(function(col_name) { var coll = db.getCollection(col_name); coll.dropIndexes(); });" $BIND_OPTIONS
mongo wekan --eval 'db.adminCommand({ setFeatureCompatibilityVersion: "4.4" });' $BIND_OPTIONS
# Delete incomplete uploads so that they would not prevent starting WeKan
mongo wekan --eval 'db.getCollection("cfs.attachments.filerecord").find( { "uploadedAt": { "$exists": true }, "copies.attachments" : null,"failures.copies.attachments.doneTrying" : {"$ne" : true}});' $BIND_OPTIONS
else
# Disable MongoDB telemetry and free monitoring
mongo --eval "disableTelemetry()"
mongo --eval "db.disableFreeMonitoring()"
mongosh wekan --eval 'disableTelemetry();' $BIND_OPTIONS
mongosh wekan --eval 'db.disableFreeMonitoring();' $BIND_OPTIONS
# Snap: Disable apparmor="DENIED" at syslog
# https://github.com/wekan/wekan/issues/4855
mongo wekan --eval 'db.adminCommand({ setParameter: 1, diagnosticDataCollectionEnabled: false});' $BIND_OPTIONS
mongosh wekan --eval 'db.adminCommand({ setParameter: 1, diagnosticDataCollectionEnabled: false});' $BIND_OPTIONS
# Drop indexes on database upgrade, when starting MongoDB
#mongosh wekan --eval "db.getCollectionNames().forEach(function(col_name) { var coll = db.getCollection(col_name); coll.dropIndexes(); });" $BIND_OPTIONS
mongosh wekan --eval 'db.adminCommand({ setFeatureCompatibilityVersion: "4.4" });' $BIND_OPTIONS
# Delete incomplete uploads so that they would not prevent starting WeKan
mongosh wekan --eval 'db.getCollection("cfs.attachments.filerecord").find( { "uploadedAt": { "$exists": true }, "copies.attachments" : null,"failures.copies.attachments.doneTrying" : {"$ne" : true}});' $BIND_OPTIONS
else
if [ "syslog" == "${MONGO_LOG_DESTINATION}" ]; then
echo "Sending mongodb logs to syslog"
@@ -143,10 +137,16 @@ else
mongod --dbpath $SNAP_COMMON --logpath /dev/null --journal $MONGO_URL --quiet
fi
# Disable MongoDB telemetry and free monitoring
mongosh wekan --eval 'disableTelemetry();' $BIND_OPTIONS
mongosh wekan --eval 'db.disableFreeMonitoring();' $BIND_OPTIONS
# Snap: Disable apparmor="DENIED" at syslog
# https://github.com/wekan/wekan/issues/4855
mongosh wekan --eval 'db.adminCommand({ setParameter: 1, diagnosticDataCollectionEnabled: false});' $BIND_OPTIONS
# Drop indexes on database upgrade, when starting MongoDB
#mongo wekan --eval "db.getCollectionNames().forEach(function(col_name) { var coll = db.getCollection(col_name); coll.dropIndexes(); });" $BIND_OPTIONS
mongo wekan --eval 'db.adminCommand({ setFeatureCompatibilityVersion: "4.2" });' $BIND_OPTIONS
#mongosh wekan --eval "db.getCollectionNames().forEach(function(col_name) { var coll = db.getCollection(col_name); coll.dropIndexes(); });" $BIND_OPTIONS
mongosh wekan --eval 'db.adminCommand({ setFeatureCompatibilityVersion: "4.2" });' $BIND_OPTIONS
# Delete incomplete uploads so that they would not prevent starting WeKan
mongo wekan --eval 'db.getCollection("cfs.attachments.filerecord").find( { "uploadedAt": { "$exists": true }, "copies.attachments" : null,"failures.copies.attachments.doneTrying" : {"$ne" : true}});' $BIND_OPTIONS
mongosh wekan --eval 'db.getCollection("cfs.attachments.filerecord").find( { "uploadedAt": { "$exists": true }, "copies.attachments" : null,"failures.copies.attachments.doneTrying" : {"$ne" : true}});' $BIND_OPTIONS
fi
+2 -1
View File
@@ -9,7 +9,8 @@ if [ -z "$LANG" ]; then
fi
export LC_ALL=C
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/snap/wekan/current/lib/x86_64-linux-gnu
export PATH=/snap/${SNAP_NAME}/current/usr/bin:/snap/${SNAP_NAME}/current/bin:$PATH
export LD_LIBRARY_PATH=/snap/${SNAP_NAME}/current/lib:/snap/${SNAP_NAME}/current/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
# start mongodb backup
[ "x" == "x${MONGODB_BIND_IP}" ] && MONGODB_BIND_IP="127.0.0.1"
+11 -11
View File
@@ -1,5 +1,5 @@
name: wekan
version: '7.26'
version: '7.31'
base: core20
summary: Open Source kanban
description: |
@@ -65,7 +65,7 @@ apps:
parts:
mongodb:
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.12.tgz
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.13.tgz
plugin: dump
stage-packages:
- libssl1.1
@@ -90,13 +90,13 @@ parts:
prime:
- $mongo
# mongosh:
# source: https://downloads.mongodb.com/compass/mongodb-mongosh_1.6.2_amd64.deb
# plugin: dump
mongosh:
source: https://downloads.mongodb.com/compass/mongodb-mongosh_2.1.1_amd64.deb
plugin: dump
# mongotools:
# source: https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2004-x86_64-100.6.1.tgz
# plugin: dump
mongotools:
source: https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2004-x86_64-100.9.4.tgz
plugin: dump
# mongodb44:
# source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-4.4.18.tgz
@@ -170,9 +170,9 @@ parts:
# Cleanup
mkdir .build
cd .build
wget https://github.com/wekan/wekan/releases/download/v7.26/wekan-7.26-amd64.zip
unzip wekan-7.26-amd64.zip
rm wekan-7.26-amd64.zip
wget https://github.com/wekan/wekan/releases/download/v7.31/wekan-7.31-amd64.zip
unzip wekan-7.31-amd64.zip
rm wekan-7.31-amd64.zip
cd ..
##cd .build/bundle
##find . -type d -name '*-garbage*' | xargs rm -rf
+10 -2
View File
@@ -1,3 +1,11 @@
# Try FerretDB instead
https://github.com/wekan/wekan/wiki/PostgreSQL
ToroDB is not developed anymore.
ToroDB is compatible with MongoDB 3.0. WeKan 7.x is compatible with MongoDB 6.x.
# Docker: Wekan to PostgreSQL read-only mirroring
* [Wekan kanban board, made with Meteor.js framework, running on
@@ -19,8 +27,8 @@
2) Clone this repo.
```bash
git clone https://github.com/wekan/wekan-postgresql.git
cd wekan-postgresql
git clone https://github.com/wekan/wekan
cd torodb-postgresql
```
3) IMPORTANT: In docker-compose.yml, to use Wekan on local network, change ROOT_URL=http://localhost to http://IPADRESS like http://192.168.10.100 or http://example.com