Compare commits

..
27 Commits
Author SHA1 Message Date
Lauri Ojansivu 8ea9780140 v7.09 2023-08-21 00:44:23 +03:00
Lauri Ojansivu 925099a1ee Merge pull request #5095 from mfilser/attachments-display_images_full_width
Attachments, big images are now fully displayed
2023-08-21 00:34:57 +03:00
Martin Filser 16a2cc6ba9 Attachments, big images are now fully displayed 2023-08-20 23:30:28 +02:00
Lauri Ojansivu 94bc6d8e45 Updated ChangeLog. 2023-08-20 23:58:47 +03:00
Lauri Ojansivu da28af516d Merge pull request #5094 from mfilser/reactiveCache-full_implementation_collection_translation
ReactiveCache, full implementation of the collection "Translation"
2023-08-20 23:01:09 +03:00
Martin Filser 73b5bbfc9e ReactiveCache, full implementation of the collection "Translation" 2023-08-20 21:37:25 +02:00
Lauri Ojansivu e2dde19db2 Merge pull request #5093 from mfilser/translation_client_side
Translations are working on the client side again
2023-08-20 22:20:48 +03:00
Martin Filser f421d135a6 Translations are working on the client side again 2023-08-20 19:31:48 +02:00
Lauri Ojansivu ae4232465b Updated ChangeLog. 2023-08-20 19:28:37 +03:00
Lauri Ojansivu 112b628a99 Merge pull request #5092 from mfilser/reactiveCache-use_ejson
ReactiveCache, serialize and parse json with EJSON
2023-08-20 19:24:39 +03:00
Martin Filser bf313ca842 ReactiveCache, serialize and parse json with EJSON
- date object wasn't serialized and parsed right
- fixes #5086
2023-08-20 18:21:18 +02:00
Lauri Ojansivu a0da05c660 Merge pull request #5091 from mfilser/reactiveCache-use_default_parameters
ReactiveCache, use default parameters
2023-08-20 18:48:46 +03:00
Martin Filser 394149b2e0 ReactiveCache, use default parameters
- it's not related to any known bug (as far as I know)
- it's only a good coding style to have default parameters
2023-08-20 16:21:04 +02:00
Lauri Ojansivu 9ce51d8db2 Updated translations. 2023-08-18 17:35:14 +03:00
Lauri Ojansivu 76591632c5 Updated ChangeLog. 2023-08-18 17:19:06 +03:00
Lauri Ojansivu b03ea37944 Merge pull request #5090 from DimDz/master
Move card to other boards API
2023-08-18 17:16:18 +03:00
Lauri Ojansivu 6e490b0f8d Updated translations. 2023-08-18 16:45:20 +03:00
DimDz 32e50b869d Added moveCard to editCard API 2023-08-18 15:48:49 +03:00
Lauri Ojansivu 6a38b9fb0f Updated translations. 2023-08-18 03:25:29 +03:00
Lauri Ojansivu 1f059898ca Updated translations. 2023-08-18 02:16:11 +03:00
Lauri Ojansivu cb4ce5cddf Updated ChangeLog. 2023-08-18 02:04:56 +03:00
Lauri Ojansivu 7dfb1eb6ce Fixed building s390x release. Part 2.
Thanks to xet7 !
2023-08-18 02:03:22 +03:00
Lauri Ojansivu 9857d4a5bf Updated ChangeLog. 2023-08-18 02:01:36 +03:00
Lauri Ojansivu 73f943f89a Fixed building s390x release.
Thanks to xet7 !
2023-08-18 02:00:12 +03:00
Lauri Ojansivu d5308d2d04 Updated translations. 2023-08-18 01:39:52 +03:00
Lauri Ojansivu b62221504d Updated ChangeLog. 2023-08-18 01:38:25 +03:00
Lauri Ojansivu 9d5af24e7b Upgraded Snap Candidate MongoDB to 6.0.9
Thanks to MongoDB developers !
2023-08-18 01:36:07 +03:00
24 changed files with 503 additions and 365 deletions

No files matched your search

+1
View File
@@ -173,3 +173,4 @@ minifier-css@1.6.4
blaze
kadira:blaze-layout
peerlibrary:blaze-components
ejson
+28
View File
@@ -20,6 +20,34 @@ Note:
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
# v7.09 2023-08-21 WeKan ® release
This release adds the following new features:
- [Move card to other boards API](https://github.com/wekan/wekan/pull/5090).
Thanks to DimDz.
and adds the following updates:
- [Upgraded Snap Candidate MongoDB to 6.0.9](https://github.com/wekan/wekan/commit/9d5af24e7b656c2bf6ad32bc8360bb80374408d6).
Thanks to MongoDB developers.
- Fixed building s390x release.
[Part 1](https://github.com/wekan/wekan/commit/73f943f89a89374a83cdfb31f0bfbfdfe4d6f52e),
[Part 2](https://github.com/wekan/wekan/commit/7dfb1eb6ce00166a6263f98b9bf975b8a84d1143).
Thanks to xet7.
- [ReactiveCache, use default parameters](https://github.com/wekan/wekan/pull/5091).
Thanks to mfilser.
- [ReactiveCache, serialize and parse json with EJSON](https://github.com/wekan/wekan/pull/5092).
Thanks to mfilser.
- [Translations are working on the client side again](https://github.com/wekan/wekan/pull/5093).
Thanks to mfilser.
- [ReactiveCache, full implementation of the collection "Translation"](https://github.com/wekan/wekan/pull/5094).
Thanks to mfilser.
- [Attachments, big images are now fully displayed](https://github.com/wekan/wekan/pull/5095).
Thanks to mfilser.
Thanks to above GitHub users for their contributions and translators for their translations.
# v7.08 2023-08-17 WeKan ® release
This release adds the following new features:
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v7.08.0"
appVersion: "v7.09.0"
files:
userUploads:
- README.md
+1
View File
@@ -121,6 +121,7 @@
repeating-conic-gradient(#808080 0% 25%, transparent 0% 50%)
50% / 20px 20px; /* Checkerboard background for transparent images */
max-width: 100%;
max-height: 100%;
}
#pdf-viewer {
width: 40vw;
+7 -7
View File
@@ -1230,12 +1230,12 @@
"invalid-file": "Wenn der Dateiname ungültig ist, wird das Hochladen oder Umbenennen abgebrochen.",
"preview-pdf-not-supported": "Dein Gerät unterstützt keine PDF Vorschau. Versuche sie stattdessen herunterzuladen.",
"drag-board": "Das Board ziehen nach",
"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",
"translation-number": "Die Anzahl benutzerdefinierter String-Übersetzungen ist:",
"delete-translation-confirm-popup": "Möchten Sie diese benutzerdefinierte String-Übersetzung wirklich löschen? Die Aktion kann nicht rückgängig gemacht werden.",
"newTranslationPopup-title": "Neue benutzerdefinierte String-Übersetzung",
"editTranslationPopup-title": "Bearbeite die benutzerdefinierte String-Übersetzung",
"settingsTranslationPopup-title": "Soll die benutzerdefinierte String-Übersetzung gelöscht werden?",
"translation": "Übersetzung",
"text": "Text",
"translation-text": "Translation text"
"translation-text": "Übersetzungstext"
}
+7 -7
View File
@@ -1230,12 +1230,12 @@
"invalid-file": "Fitxategi-izena baliogabea bada, karga edo izena aldaketa bertan behera geratuko da.",
"preview-pdf-not-supported": "Zure gailuak ez du onartzen PDF aurrebistarik. Saiatu deskargatzen.",
"drag-board": "Arrastatu taula",
"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",
"translation-number": "Itzulpen-kate pertsonalizatuen kopurua hau da:",
"delete-translation-confirm-popup": "Ziur itzulpen-kate pertsonalizatu hau ezabatu nahi duzula? Ezin da desegin.",
"newTranslationPopup-title": "Itzulpen-kate pertsonalizatu berria",
"editTranslationPopup-title": "Editatu itzulpen-kate pertsonalizatua",
"settingsTranslationPopup-title": "Itzulpen-kate pertsonalizatu hau ezabatu nahi duzu?",
"translation": "Itzulpena",
"text": "Testua",
"translation-text": "Translation text"
"translation-text": "itzulpenaren testua"
}
+31 -31
View File
@@ -85,14 +85,14 @@
"add-card": "Ajouter une carte",
"add-card-to-top-of-list": "Ajouter la carte en haut de la liste",
"add-card-to-bottom-of-list": "Ajouter la carte en bas de la liste",
"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": "Définir la largeur de la liste",
"set-list-width": "Définir la largeur de la liste",
"set-list-width-value": "Largeur de la liste (pixels)",
"list-width-error-message": "La largeur de la liste doit être un entier positif",
"setSwimlaneHeightPopup-title": "Définir la hauteur du couloir",
"set-swimlane-height": "Définir la hauteur du couloir",
"set-swimlane-height-value": "Hauteur du couloir (pixels)",
"swimlane-height-error-message": "La hauteur du couloir doit être un entier positif",
"add-swimlane": "Ajouter un couloir",
"add-subtask": "Ajouter une sous-tâche",
"add-checklist": "Ajouter une checklist",
@@ -100,10 +100,10 @@
"close-add-checklist-item": "Fermer ajouter un élément du formulaire checklist",
"close-edit-checklist-item": "Fermer éditer un élément du formulaire checklist",
"convertChecklistItemToCardPopup-title": "Convertir en carte",
"add-cover": "Add cover image to minicard",
"add-cover": "Ajouter la vignette sur la mini-carte",
"add-label": "Ajouter une étiquette",
"add-list": "Ajouter une liste",
"add-after-list": "Add After List",
"add-after-list": "Ajouter après la liste",
"add-members": "Assigner des participants",
"added": "Ajouté le",
"addMemberPopup-title": "Participants",
@@ -146,10 +146,10 @@
"avatar-too-big": "La taille du fichier de l'avatar est trop importante (__size__ au maximum)",
"back": "Retour",
"board-change-color": "Changer la couleur",
"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": "Changer l'image de fond",
"board-background-image-url": "URL de l'image de fond",
"add-background-image": "Ajouter une image de fond",
"remove-background-image": "Supprimer l'image de fond",
"show-at-all-boards-page" : "Afficher sur la page de tous les tableaux",
"board-info-on-my-boards" : "Paramètres de tous les tableaux",
"boardInfoOnMyBoardsPopup-title" : "Paramètres de tous les tableaux",
@@ -162,9 +162,9 @@
"board-public-info": "Ce tableau sera <strong>public</strong>.",
"board-drag-drop-reorder-or-click-open": "Glisser-déposer les icônes de tableau pour les réordonner. Cliquer sur l'icône du tableau pour l'ouvrir.",
"boardChangeColorPopup-title": "Change la couleur de fond du tableau",
"boardChangeBackgroundImagePopup-title": "Change Background Image",
"boardChangeBackgroundImagePopup-title": "Changer l'image de fond",
"allBoardsChangeColorPopup-title": "Changer la couleur",
"allBoardsChangeBackgroundImagePopup-title": "Change Background Image",
"allBoardsChangeBackgroundImagePopup-title": "Changer l'image de fond",
"boardChangeTitlePopup-title": "Renommer le tableau",
"boardChangeVisibilityPopup-title": "Changer la visibilité",
"boardChangeWatchPopup-title": "Modifier le suivi",
@@ -440,7 +440,7 @@
"filter-to-selection": "Filtre vers la sélection",
"other-filters-label": "Autres filtres",
"advanced-filter-label": "Filtre avancé",
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' = 'valeur 1'. Pour échapper un caractère de contrôle (' \\\\/), vous pouvez utiliser \\\\. Par exemple : champ1 = I\\\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : f1 == v1 and (f2 == v2 || f2 == v3). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' == 'valeur 1'. Pour échapper un caractère de contrôle (' \\/), vous pouvez utiliser \\. Par exemple : champ1 == I\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : F1 == V1 && ( F2 == V2 || F2 == V3 ). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
"fullname": "Nom complet",
"header-logo-title": "Retourner à la page des tableaux",
"hide-system-messages": "Masquer les messages système",
@@ -550,7 +550,7 @@
"public": "Public",
"public-desc": "Ce tableau est public. Il est accessible par toutes les personnes disposant du lien et apparaîtra dans les résultats des moteurs de recherche tels que Google. Seuls les membres peuvent le modifier.",
"quick-access-description": "Ajouter un tableau à vos favoris pour créer un raccourci dans cette barre.",
"remove-cover": "Remove cover image from minicard",
"remove-cover": "Supprimer la vignette de la mini-carte",
"remove-from-board": "Retirer du tableau",
"remove-label": "Retirer l'étiquette",
"listDeletePopup-title": "Supprimer la liste ?",
@@ -738,9 +738,9 @@
"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 :",
"description-on-minicard": "Description sur la mini-carte",
"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": "Vignette sur la mini-carte",
"badge-attachment-on-minicard": "Compteur de pièces jointes sur la mini-carte",
"card-sorting-by-number-on-minicard": "Tri numérique des cartes sur la mini-carte",
"prefix-with-full-path": "Préfixer avec le chemin complet",
"prefix-with-parent": "Préfixer avec le parent",
"subtext-with-full-path": "Sous-titre avec le chemin complet",
@@ -1097,7 +1097,7 @@
"label-names": "Noms d'étiquette",
"archived-at": "archivée le",
"sort-cards": "Trier les cartes",
"sort-is-on": "Sort is on",
"sort-is-on": "Le tri est activé",
"cardsSortPopup-title": "Trier les cartes",
"due-date": "Date d'échéance",
"server-error": "Erreur serveur",
@@ -1228,14 +1228,14 @@
"max-avatar-filesize": "Taille maximum du fichier de l'avatar en octets :",
"allowed-avatar-filetypes": "Types de fichier autorisés pour l'avatar :",
"invalid-file": "Si le nom de fichier est invalide, le téléchargement ou le renommage sera annulé.",
"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",
"preview-pdf-not-supported": "Votre périphérique ne supporte pas la prévisualisation de PDF. Essayer plutôt le téléchargement.",
"drag-board": "Glisser le tableau",
"translation-number": "Le nombre de traductions personnalisées est de :",
"delete-translation-confirm-popup": "Êtes-vous sûr de vouloir supprimer cette traduction personnalisée ? Cela est irréversible.",
"newTranslationPopup-title": "Nouvelle traduction personnalisée",
"editTranslationPopup-title": "Éditer la traduction personnalisée",
"settingsTranslationPopup-title": "Supprimer cette traduction personnalisée ?",
"translation": "Traduction",
"text": "Texte",
"translation-text": "Translation text"
"translation-text": "Texte traduit"
}
+8 -8
View File
@@ -440,7 +440,7 @@
"filter-to-selection": "Filtre vers la sélection",
"other-filters-label": "Autres filtres",
"advanced-filter-label": "Filtre avancé",
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' = 'valeur 1'. Pour échapper un caractère de contrôle (' \\\\/), vous pouvez utiliser \\\\. Par exemple : champ1 = I\\\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : f1 == v1 and (f2 == v2 || f2 == v3). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' == 'valeur 1'. Pour échapper un caractère de contrôle (' \\/), vous pouvez utiliser \\. Par exemple : champ1 == I\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : F1 == V1 && ( F2 == V2 || F2 == V3 ). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
"fullname": "Nom complet",
"header-logo-title": "Retourner à la page des tableaux",
"hide-system-messages": "Masquer les messages système",
@@ -1230,12 +1230,12 @@
"invalid-file": "Si le nom de fichier est invalide, le téléchargement ou le renommage sera annulé.",
"preview-pdf-not-supported": "Votre périphérique ne supporte pas la prévisualisation de PDF. Essayer plutôt le téléchargement.",
"drag-board": "Glisser le tableau",
"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",
"translation-number": "Le nombre de traductions personnalisées est de :",
"delete-translation-confirm-popup": "Êtes-vous sûr de vouloir supprimer cette traduction personnalisée ? Cela est irréversible.",
"newTranslationPopup-title": "Nouvelle traduction personnalisée",
"editTranslationPopup-title": "Éditer la traduction personnalisée",
"settingsTranslationPopup-title": "Supprimer cette traduction personnalisée ?",
"translation": "Traduction",
"text": "Texte",
"translation-text": "Translation text"
"translation-text": "Texte traduit"
}
+8 -8
View File
@@ -1229,13 +1229,13 @@
"allowed-avatar-filetypes": "허용된 아바타 파일유형:",
"invalid-file": "파일명이 잘못됐으면, 업로드 또는 이름바꾸기가 취소됩니다.",
"preview-pdf-not-supported": "장치에서 PDF 미리보기를 지원하지 않습니다. 대신 다운로드를 해보세요.",
"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",
"drag-board": "드래그 보드",
"translation-number": "사용자정의 번역 문자열의 갯수는:",
"delete-translation-confirm-popup": "이 사용자정의 번역 문자열을 삭제하시겠습니까? 되돌릴 수 없습니다.",
"newTranslationPopup-title": "새 사용자정의 번역 문자열",
"editTranslationPopup-title": "사용자정의 번역 문자열 수정",
"settingsTranslationPopup-title": "이 사용자정의 번역 문자열을 삭제합니까?",
"translation": "번역",
"text": "Text",
"translation-text": "Translation text"
"translation-text": "번역 문구"
}
+8 -8
View File
@@ -1229,13 +1229,13 @@
"allowed-avatar-filetypes": "허용된 아바타 파일유형:",
"invalid-file": "파일명이 잘못됐다면, 업로드 또는 이름 바꾸기가 취소됩니다.",
"preview-pdf-not-supported": "장치가 PDF 미리보기를 지원하지 않습니다. 대신 내려받기를 시도하세요.",
"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",
"drag-board": "드래그 보드",
"translation-number": "사용자정의 번역 문자열의 갯수는:",
"delete-translation-confirm-popup": "이 사용자정의 번역 문자열을 삭제하시겠습니까? 되돌릴 수 없습니다.",
"newTranslationPopup-title": "새 사용자정의 번역 문자열",
"editTranslationPopup-title": "사용자정의 번역 문자열 수정",
"settingsTranslationPopup-title": "이 사용자정의 번역 문자열을 삭제합니까?",
"translation": "번역",
"text": "텍스트",
"translation-text": "Translation text"
"translation-text": "번역 문구"
}
+7 -7
View File
@@ -1230,12 +1230,12 @@
"invalid-file": "Als de bestandsnaam ongeldig is wordt de upload of het hernoemen geannuleerd.",
"preview-pdf-not-supported": "Dit apparaat ondersteund geen voorbeeld PDF. Probeer het daarom te downloaden. ",
"drag-board": "Sleep bord",
"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",
"translation-number": "Het aantal maatwerkvertalingen is:",
"delete-translation-confirm-popup": "Weet je zeker dat je deze maatwerkvertaling wilt verwijderen? Er is geen herstelmogelijkheid.",
"newTranslationPopup-title": "Nieuwe maatwerkvertaling",
"editTranslationPopup-title": "Wijzig maatwerkvertaling",
"settingsTranslationPopup-title": "De maatwerkvertaling verwijderen?",
"translation": "Vertaling",
"text": "Tekst",
"translation-text": "Translation text"
"translation-text": "Te vertalen tekst"
}
+4 -4
View File
@@ -1230,10 +1230,10 @@
"invalid-file": "Om filnamnet är ogiltigt avbryts uppladdningen eller omdöps filen.",
"preview-pdf-not-supported": "Din enhet stöder inte förhandsgranskning av PDF. Försök istället att ladda ner.",
"drag-board": "Dra tavla",
"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",
"translation-number": "Antalet översatta fraser är:",
"delete-translation-confirm-popup": "Är du säker att du vill radera denna översatta fras? Det går inte att ångra.",
"newTranslationPopup-title": "Ny anspassad översättning",
"editTranslationPopup-title": "Ändra översatt fras",
"settingsTranslationPopup-title": "Delete this custom translation string?",
"translation": "Translation",
"text": "Text",
+18 -3
View File
@@ -1,3 +1,4 @@
import { ReactiveCache } from '/imports/reactiveCache';
import { Meteor } from 'meteor/meteor';
import { ReactiveVar } from 'meteor/reactive-var';
import Translation from '/models/translation';
@@ -44,14 +45,28 @@ export const TAPi18n = {
getLanguage() {
return this.current.get();
},
loadTranslation(language) {
return new Promise((resolve, reject) => {
if (Meteor.isClient) {
const translationSubscription = Meteor.subscribe('translation', {language: language}, 0, {
onReady() {
resolve(translationSubscription);
},
onError(error) {
reject(error);
}
});
} else {
resolve();
}
});
},
async loadLanguage(language) {
if (language in languages && 'load' in languages[language]) {
let data = await languages[language].load();
let custom_translations = [];
if (Meteor.isClient) {
await Meteor.subscribe('translation', {language: language}, 0);
}
await this.loadTranslation(language);
custom_translations = ReactiveCache.getTranslations({language: language}, {fields: { text: true, translationText: true }});
if (custom_translations && custom_translations.length > 0) {
-30
View File
@@ -1,30 +0,0 @@
Jsons = {
stringify(value) {
const ret = JSON.stringify(value, this.replacer, 2);
return ret;
},
parse(value) {
const ret = JSON.parse(value, this.reviver);
return ret;
},
// https://stackoverflow.com/questions/12075927/serialization-of-regexp/33416684#33416684
replacer(key, value) {
if (value instanceof RegExp)
return ("___REGEXP___ " + value.toString());
else
return value;
},
// https://stackoverflow.com/questions/12075927/serialization-of-regexp/33416684#33416684
reviver(key, value) {
if (value?.toString()?.indexOf("___REGEXP___ ") == 0) {
const m = value.split("___REGEXP___ ")[1].match(/\/(.*)\/(.*)?/);
return new RegExp(m[1], m[2] || "");
} else
return value;
}
}
export { Jsons }
+277 -230
View File
File diff suppressed because it is too large. Load diff
+31
View File
@@ -3499,6 +3499,9 @@ JsonRoutes.add('GET', '/api/boards/:boardId/cards_count', function(
const paramBoardId = req.params.boardId;
const paramCardId = req.params.cardId;
const paramListId = req.params.listId;
const newBoardId = req.body.newBoardId;
const newSwimlaneId = req.body.newSwimlaneId;
const newListId = req.body.newListId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
if (req.body.title) {
@@ -3827,6 +3830,34 @@ JsonRoutes.add('GET', '/api/boards/:boardId/cards_count', function(
paramListId,
);
}
if (newBoardId && newSwimlaneId && newListId) {
// Move the card to the new board, swimlane, and list
Cards.direct.update(
{
_id: paramCardId,
listId: paramListId,
boardId: paramBoardId,
archived: false,
},
{
$set: {
boardId: newBoardId,
swimlaneId: newSwimlaneId,
listId: newListId,
},
},
);
const card = ReactiveCache.getCard(paramCardId);
cardMove(
req.userId,
card,
['boardId', 'swimlaneId', 'listId'],
newListId,
newSwimlaneId,
newBoardId,
);
}
JsonRoutes.sendResult(res, {
code: 200,
data: {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v7.08.0",
"version": "v7.09.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v7.08.0",
"version": "v7.09.0",
"description": "Open-Source kanban",
"private": true,
"repository": {
+35 -5
View File
@@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Wekan REST API v7.08</title>
<title>Wekan REST API v7.09</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.08">Wekan REST API v7.08</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v7.09">Wekan REST API v7.09</a>
</li>
@@ -2057,7 +2057,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.08</h1>
<h1 id="wekan-rest-api">Wekan REST API v7.09</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>
@@ -9645,6 +9645,9 @@ Accept: application/json
</span></code></pre>
<pre class="highlight tab tab-javascript"><code><span class="hljs-keyword">const</span> inputBody = <span class="hljs-string">&#x27;{
&quot;newBoardId&quot;: &quot;string&quot;,
&quot;newSwimlaneId&quot;: &quot;string&quot;,
&quot;newListId&quot;: &quot;string&quot;,
&quot;title&quot;: &quot;string&quot;,
&quot;sort&quot;: &quot;string&quot;,
&quot;parentId&quot;: &quot;string&quot;,
@@ -9689,6 +9692,9 @@ fetch(<span class="hljs-string">&#x27;/api/boards/{board}/lists/{list}/cards/{ca
</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;newBoardId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;newSwimlaneId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;newListId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;title&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;sort&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;parentId&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
@@ -9838,7 +9844,10 @@ System.out.println(response.toString());
<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>
<pre class="highlight tab tab-yaml"><code><span class="hljs-attr">newBoardId:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">newSwimlaneId:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">newListId:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">title:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">sort:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">parentId:</span> <span class="hljs-string">string</span>
<span class="hljs-attr">description:</span> <span class="hljs-string">string</span>
@@ -9899,10 +9908,31 @@ System.out.println(response.toString());
<td>body</td>
<td>body</td>
<td>object</td>
<td>false</td>
<td>true</td>
<td>none</td>
</tr>
<tr>
<td>» newBoardId</td>
<td>body</td>
<td>string</td>
<td>true</td>
<td>the newBoardId value</td>
</tr>
<tr>
<td>» newSwimlaneId</td>
<td>body</td>
<td>string</td>
<td>true</td>
<td>the newSwimlaneId value</td>
</tr>
<tr>
<td>» newListId</td>
<td>body</td>
<td>string</td>
<td>true</td>
<td>the newListId value</td>
</tr>
<tr>
<td>» title</td>
<td>body</td>
<td>string</td>
+16 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v7.08
version: v7.09
description: |
The REST API allows you to control and extend Wekan with ease.
@@ -1930,6 +1930,21 @@ paths:
- multipart/form-data
- application/json
parameters:
- name: newBoardId
in: formData
description: the newBoardId value
type: string
required: true
- name: newSwimlaneId
in: formData
description: the newSwimlaneId value
type: string
required: true
- name: newListId
in: formData
description: the newListId value
type: string
required: true
- name: title
in: formData
description: |
+5 -5
View File
@@ -31,11 +31,11 @@ cp wekan-$2-arm64.zip wekan-latest-arm64.zip
sha256sum wekan-*.zip > SHA256SUMS.txt
#echo "Release: s390x"
#cd /data/websites/releases.wekan.team/s390x
#mkdir -p /data/websites/old-releases/s390x
#mv wekan-$1-s390x.zip /data/websites/old-releases/s390x/
#cp wekan-$2-s390x.zip wekan-latest-s390x.zip
#sha256sum wekan-*.zip > SHA256SUMS.txt
cd /data/websites/releases.wekan.team/s390x
mkdir -p /data/websites/old-releases/s390x
mv wekan-$1-s390x.zip /data/websites/old-releases/s390x/
cp wekan-$2-s390x.zip wekan-latest-s390x.zip
sha256sum wekan-*.zip > SHA256SUMS.txt
# OpenPower MiniCloud is discontinued, no ppc64le build server
#echo "Release: ppc64le"
+1 -1
View File
@@ -19,7 +19,7 @@ sudo apt-get -y install parallel
{
~/repos/wekan/releases/up-a.sh $1
#~/repos/wekan/releases/up-s.sh $1
~/repos/wekan/releases/up-s.sh $1
#~/repos/wekan/releases/up-o.sh $1
~/repos/wekan/releases/up-w.sh $1
} | parallel -k
+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 = 708,
appVersion = 709,
# Increment this for every release.
appMarketingVersion = (defaultText = "7.08.0~2023-08-17"),
appMarketingVersion = (defaultText = "7.09.0~2023-08-21"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+5 -5
View File
@@ -1,5 +1,5 @@
name: wekan
version: '7.08'
version: '7.09'
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.8.tgz
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.9.tgz
plugin: dump
stage-packages:
- libssl1.1
@@ -170,9 +170,9 @@ parts:
# Cleanup
mkdir .build
cd .build
wget https://github.com/wekan/wekan/releases/download/v7.08/wekan-7.08-amd64.zip
unzip wekan-7.08-amd64.zip
rm wekan-7.08-amd64.zip
wget https://github.com/wekan/wekan/releases/download/v7.09/wekan-7.09-amd64.zip
unzip wekan-7.09-amd64.zip
rm wekan-7.09-amd64.zip
cd ..
##cd .build/bundle
##find . -type d -name '*-garbage*' | xargs rm -rf