mirror of
https://github.com/wekan/wekan.git
synced 2026-11-08 21:44:59 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ea9780140 | ||
|
|
925099a1ee | ||
|
|
16a2cc6ba9 | ||
|
|
94bc6d8e45 | ||
|
|
da28af516d | ||
|
|
73b5bbfc9e | ||
|
|
e2dde19db2 | ||
|
|
f421d135a6 | ||
|
|
ae4232465b | ||
|
|
112b628a99 | ||
|
|
bf313ca842 | ||
|
|
a0da05c660 | ||
|
|
394149b2e0 | ||
|
|
9ce51d8db2 | ||
|
|
76591632c5 | ||
|
|
b03ea37944 | ||
|
|
6e490b0f8d | ||
|
|
32e50b869d | ||
|
|
6a38b9fb0f | ||
|
|
1f059898ca | ||
|
|
cb4ce5cddf | ||
|
|
7dfb1eb6ce | ||
|
|
9857d4a5bf | ||
|
|
73f943f89a | ||
|
|
d5308d2d04 | ||
|
|
b62221504d | ||
|
|
9d5af24e7b |
No files matched your search
@@ -173,3 +173,4 @@ minifier-css@1.6.4
|
||||
blaze
|
||||
kadira:blaze-layout
|
||||
peerlibrary:blaze-components
|
||||
ejson
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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": "번역 문구"
|
||||
}
|
||||
@@ -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": "번역 문구"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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
File diff suppressed because it is too large.
Load diff
@@ -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: {
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v7.08.0",
|
||||
"version": "v7.09.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v7.08.0",
|
||||
"version": "v7.09.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"repository": {
|
||||
|
||||
+35
-5
@@ -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">'{
|
||||
"newBoardId": "string",
|
||||
"newSwimlaneId": "string",
|
||||
"newListId": "string",
|
||||
"title": "string",
|
||||
"sort": "string",
|
||||
"parentId": "string",
|
||||
@@ -9689,6 +9692,9 @@ fetch(<span class="hljs-string">'/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">'node-fetch'</span>);
|
||||
<span class="hljs-keyword">const</span> inputBody = {
|
||||
<span class="hljs-string">"newBoardId"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-string">"newSwimlaneId"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-string">"newListId"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-string">"title"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-string">"sort"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-string">"parentId"</span>: <span class="hljs-string">"string"</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
@@ -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: |
|
||||
|
||||
@@ -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
@@ -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
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in new issue
Block a user