Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f96c1eda70 | ||
|
|
e9bbbb6a04 | ||
|
|
efcdbf2e3d | ||
|
|
6e12e2fa59 | ||
|
|
a31ece0974 | ||
|
|
06d85b66f1 | ||
|
|
af830812db | ||
|
|
4e21e04a48 | ||
|
|
9779f2a7e6 | ||
|
|
a98f6d8e8a | ||
|
|
d93f33d919 | ||
|
|
564ab219c6 | ||
|
|
026d8f4941 | ||
|
|
4b2193436e | ||
|
|
dfb558ae99 | ||
|
|
76731e852d | ||
|
|
b794c22ac0 | ||
|
|
b778cea34f | ||
|
|
a1582c3e65 | ||
|
|
977503fa79 | ||
|
|
a809284a14 | ||
|
|
8e3cbd2d82 | ||
|
|
f3147af2f7 | ||
|
|
86d686fe1d | ||
|
|
7d52ae16d5 | ||
|
|
c882ebe030 | ||
|
|
d80a258c8b | ||
|
|
3084f24278 | ||
|
|
efdab37f3f | ||
|
|
4f4e0a21f8 |
No files matched your search
+32
-1
@@ -1,4 +1,35 @@
|
||||
# v3.19 2019-08-15 Upcoming Wekan release
|
||||
# v3.22 2019-08-20 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Wrap minicard text labels to multiple rows](https://github.com/wekan/wekan/commit/af830812dbbf7d766a754d937308b11373c66e5a).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix: Some users cannot switch views or languages](https://github.com/wekan/wekan/issues/2630).
|
||||
Thanks to xet7 and justinr1234.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.21 2019-08-16 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [In the filter menu, 1) Turning on "show archive" will request archived lists and show them on the ListView.
|
||||
2) Turning on "hide empty lists" will hide empty lists on the ListView](https://github.com/wekan/wekan/pull/2632).
|
||||
Thanks to urakagi.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix mismatched queries](https://github.com/wekan/wekan/pull/2628).
|
||||
Thanks to justinr1234.
|
||||
- [Fix Summernote too wide when in mobile screen](https://github.com/wekan/wekan/issues/2621).
|
||||
Thanks to whowillcare.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.20 2019-08-15 Wekan release
|
||||
|
||||
This release fixes the following security issues:
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v3.19.0"
|
||||
appVersion: "v3.22.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
.minicard-labels
|
||||
float: right
|
||||
display: flex
|
||||
flex-wrap: wrap
|
||||
|
||||
.minicard-label
|
||||
width: 11px
|
||||
|
||||
@@ -180,7 +180,7 @@ Template.editor.onRendered(() => {
|
||||
fBtn.on('click', function() {
|
||||
const $this = $(this),
|
||||
isActive = $this.hasClass('active');
|
||||
$('.minicards').toggle(!isActive); // mini card is still showing when editor is in fullscreen mode, we hide here manually
|
||||
$('.minicards,#header-quick-access').toggle(!isActive); // mini card is still showing when editor is in fullscreen mode, we hide here manually
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
@@ -425,6 +425,9 @@ a
|
||||
height: 100%
|
||||
margin: 0px
|
||||
|
||||
.panel-default
|
||||
width: 83vw
|
||||
|
||||
.inline-input
|
||||
height: 37px
|
||||
margin: 8px 10px 0 0
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
archivedRequested = false;
|
||||
const subManager = new SubsManager();
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
@@ -12,6 +13,7 @@ BlazeComponent.extendComponent({
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
if (!currentBoardId) return;
|
||||
const handle = subManager.subscribe('board', currentBoardId, true);
|
||||
archivedRequested = true;
|
||||
Tracker.nonreactive(() => {
|
||||
Tracker.autorun(() => {
|
||||
this.isArchiveReady.set(handle.ready());
|
||||
|
||||
@@ -56,6 +56,22 @@ template(name="filterSidebar")
|
||||
if Filter.customFields.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.archive.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-archive-filter
|
||||
span.sidebar-list-item-description
|
||||
| {{_ 'filter-show-archive'}}
|
||||
if Filter.archive.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.hideEmpty.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-hideEmpty-filter
|
||||
span.sidebar-list-item-description
|
||||
| {{_ 'filter-hide-empty'}}
|
||||
if Filter.hideEmpty.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
span {{_ 'advanced-filter-label'}}
|
||||
input.js-field-advanced-filter(type="text")
|
||||
span {{_ 'advanced-filter-description'}}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
const subManager = new SubsManager();
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
events() {
|
||||
return [
|
||||
@@ -12,6 +14,23 @@ BlazeComponent.extendComponent({
|
||||
Filter.members.toggle(this.currentData()._id);
|
||||
Filter.resetExceptions();
|
||||
},
|
||||
'click .js-toggle-archive-filter'(evt) {
|
||||
evt.preventDefault();
|
||||
Filter.archive.toggle(this.currentData()._id);
|
||||
Filter.resetExceptions();
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
if (!currentBoardId) return;
|
||||
subManager.subscribe(
|
||||
'board',
|
||||
currentBoardId,
|
||||
Filter.archive.isSelected(),
|
||||
);
|
||||
},
|
||||
'click .js-toggle-hideEmpty-filter'(evt) {
|
||||
evt.preventDefault();
|
||||
Filter.hideEmpty.toggle(this.currentData()._id);
|
||||
Filter.resetExceptions();
|
||||
},
|
||||
'click .js-toggle-custom-fields-filter'(evt) {
|
||||
evt.preventDefault();
|
||||
Filter.customFields.toggle(this.currentData()._id);
|
||||
|
||||
@@ -33,7 +33,8 @@ template(name="listsGroup")
|
||||
+addListForm
|
||||
else
|
||||
each lists
|
||||
+list(this)
|
||||
if visible this
|
||||
+list(this)
|
||||
if currentCardIsInThisList _id null
|
||||
+cardDetails(currentCard)
|
||||
if currentUser.isBoardMember
|
||||
|
||||
@@ -246,6 +246,24 @@ BlazeComponent.extendComponent({
|
||||
currentCardIsInThisList(listId, swimlaneId) {
|
||||
return currentCardIsInThisList(listId, swimlaneId);
|
||||
},
|
||||
visible(list) {
|
||||
if (list.archived) {
|
||||
// Show archived list only when filter archive is on or archive is selected
|
||||
if (!(Filter.archive.isSelected() || archivedRequested)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (Filter.hideEmpty.isSelected()) {
|
||||
const swimlaneId = this.parentComponent()
|
||||
.parentComponent()
|
||||
.data()._id;
|
||||
const cards = list.cards(swimlaneId);
|
||||
if (cards.count() === 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
onRendered() {
|
||||
const boardComponent = this.parentComponent();
|
||||
const $listsDom = this.$('.js-lists');
|
||||
|
||||
@@ -451,10 +451,12 @@ Filter = {
|
||||
// before changing the schema.
|
||||
labelIds: new SetFilter(),
|
||||
members: new SetFilter(),
|
||||
archive: new SetFilter(),
|
||||
hideEmpty: new SetFilter(),
|
||||
customFields: new SetFilter('_id'),
|
||||
advanced: new AdvancedFilter(),
|
||||
|
||||
_fields: ['labelIds', 'members', 'customFields'],
|
||||
_fields: ['labelIds', 'members', 'archive', 'hideEmpty', 'customFields'],
|
||||
|
||||
// We don't filter cards that have been added after the last filter change. To
|
||||
// implement this we keep the id of these cards in this `_exceptions` fields
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "لا يوجد ملصق",
|
||||
"filter-no-member": "ليس هناك أي عضو",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "التصفية تشتغل",
|
||||
"filter-on-desc": "أنت بصدد تصفية بطاقات هذه اللوحة. اضغط هنا لتعديل التصفية.",
|
||||
"filter-to-selection": "تصفية بالتحديد",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "без етикет",
|
||||
"filter-no-member": "без член",
|
||||
"filter-no-custom-fields": "Няма Собствени полета",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Има приложени филтри",
|
||||
"filter-on-desc": "В момента филтрирате картите в това табло. Моля, натиснете тук, за да промените филтъра.",
|
||||
"filter-to-selection": "Филтрирай избраните",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Sense etiqueta",
|
||||
"filter-no-member": "Sense membres",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filtra per",
|
||||
"filter-on-desc": "Estau filtrant fitxes en aquest tauler. Feu clic aquí per editar el filtre.",
|
||||
"filter-to-selection": "Filtra selecció",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Žádný štítek",
|
||||
"filter-no-member": "Žádný člen",
|
||||
"filter-no-custom-fields": "Žádné vlastní pole",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filtr je zapnut",
|
||||
"filter-on-desc": "Filtrujete karty tohoto tabla. Pro úpravu filtru klikni sem.",
|
||||
"filter-to-selection": "Filtrovat výběr",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Kein Label",
|
||||
"filter-no-member": "Kein Mitglied",
|
||||
"filter-no-custom-fields": "Keine benutzerdefinierten Felder",
|
||||
"filter-show-archive": "Archivierte Listen anzeigen",
|
||||
"filter-hide-empty": "Leere Listen verstecken",
|
||||
"filter-on": "Filter ist aktiv",
|
||||
"filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken Sie, um den Filter zu bearbeiten.",
|
||||
"filter-to-selection": "Ergebnisse auswählen",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "Κανένα μέλος",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Nenia etikedo",
|
||||
"filter-no-member": "Nenia membro",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-no-member": "No es miembro",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "El filtro está activado",
|
||||
"filter-on-desc": "Estás filtrando cartas en este tablero. Clickeá acá para editar el filtro.",
|
||||
"filter-to-selection": "Filtrar en la selección",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-no-member": "Sin miembro",
|
||||
"filter-no-custom-fields": "Sin campos personalizados",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filtrado activado",
|
||||
"filter-on-desc": "Estás filtrando tarjetas en este tablero. Haz clic aquí para editar el filtro.",
|
||||
"filter-to-selection": "Filtrar la selección",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Etiketarik ez",
|
||||
"filter-no-member": "Kiderik ez",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Iragazkia gaituta dago",
|
||||
"filter-on-desc": "Arbel honetako txartela iragazten ari zara. Egin klik hemen iragazkia editatzeko.",
|
||||
"filter-to-selection": "Iragazketa aukerara",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "بدون برچسب",
|
||||
"filter-no-member": "بدون عضو",
|
||||
"filter-no-custom-fields": "هیچ فیلدشخصی ای وجود ندارد",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "صافی ـFilterـ فعال است",
|
||||
"filter-on-desc": "شما صافی ـFilterـ برای کارتهای تخته را روشن کرده اید. جهت ویرایش کلیک نمایید.",
|
||||
"filter-to-selection": "صافی ـFilterـ برای موارد انتخابی",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Ei tunnistetta",
|
||||
"filter-no-member": "Ei jäseniä",
|
||||
"filter-no-custom-fields": "Ei mukautettuja kenttiä",
|
||||
"filter-show-archive": "Näytä arkistoidut listat",
|
||||
"filter-hide-empty": "Näytä tyhjät listat",
|
||||
"filter-on": "Suodatus on päällä",
|
||||
"filter-on-desc": "Suodatat kortteja tällä taululla. Klikkaa tästä muokataksesi suodatinta.",
|
||||
"filter-to-selection": "Suodata valintaan",
|
||||
|
||||
+4
-2
@@ -73,8 +73,8 @@
|
||||
"activity-unchecked-item-card": "a décoché %s dans la checklist %s",
|
||||
"activity-checklist-completed-card": "a complété la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"activity-checklist-uncompleted-card": "a rendu incomplète la checklist %s",
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-editComment": "commentaire modifié %s",
|
||||
"activity-deleteComment": "commentaire supprimé %s",
|
||||
"add-attachment": "Ajouter une pièce jointe",
|
||||
"add-board": "Ajouter un tableau",
|
||||
"add-card": "Ajouter une carte",
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Aucune étiquette",
|
||||
"filter-no-member": "Aucun participant",
|
||||
"filter-no-custom-fields": "Pas de champs personnalisés",
|
||||
"filter-show-archive": "Montrer les listes archivées",
|
||||
"filter-hide-empty": "Cacher les listes vides",
|
||||
"filter-on": "Le filtre est actif",
|
||||
"filter-on-desc": "Vous êtes en train de filtrer les cartes sur ce tableau. Cliquez ici pour modifier les filtres.",
|
||||
"filter-to-selection": "Filtre vers la sélection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Non hai etiquetas",
|
||||
"filter-no-member": "Non hai membros",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "O filtro está activado",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "אין תווית",
|
||||
"filter-no-member": "אין חבר כזה",
|
||||
"filter-no-custom-fields": "אין שדות מותאמים אישית",
|
||||
"filter-show-archive": "הצגת רשימות שהועברו לארכיון",
|
||||
"filter-hide-empty": "הסתרת רשימות ריקות",
|
||||
"filter-on": "המסנן פועל",
|
||||
"filter-on-desc": "מסנן כרטיסים פעיל בלוח זה. יש ללחוץ כאן לעריכת המסנן.",
|
||||
"filter-to-selection": "סינון לבחירה",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No सदस्य",
|
||||
"filter-no-custom-fields": "No प्रचलन क्षेत्र",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering कार्ड इस पर बोर्ड. Click here तक संपादित करें filter.",
|
||||
"filter-to-selection": "Filter तक selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Nincs címke",
|
||||
"filter-no-member": "Nincs tag",
|
||||
"filter-no-custom-fields": "Nincsenek egyéni mezők",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Szűrő bekapcsolva",
|
||||
"filter-on-desc": "A kártyaszűrés be van kapcsolva ezen a táblán. Kattintson ide a szűrő szerkesztéséhez.",
|
||||
"filter-to-selection": "Szűrés a kijelöléshez",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Tidak ada label",
|
||||
"filter-no-member": "Tidak ada anggota",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Penyaring aktif",
|
||||
"filter-on-desc": "Anda memfilter kartu di panel ini. Klik di sini untuk menyunting filter",
|
||||
"filter-to-selection": "Saring berdasarkan yang dipilih",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Nessuna etichetta",
|
||||
"filter-no-member": "Nessun membro",
|
||||
"filter-no-custom-fields": "Nessun campo personalizzato",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Il filtro è attivo",
|
||||
"filter-on-desc": "Stai filtrando le schede su questa bacheca. Clicca qui per modificare il filtro,",
|
||||
"filter-to-selection": "Seleziona",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "ラベルなし",
|
||||
"filter-no-member": "メンバーなし",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "フィルター有効",
|
||||
"filter-on-desc": "このボードのカードをフィルターしています。フィルターを編集するにはこちらをクリックしてください。",
|
||||
"filter-to-selection": "フィルターした項目を全選択",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "ნიშანი არ გვაქვს",
|
||||
"filter-no-member": "არ არის წევრები ",
|
||||
"filter-no-custom-fields": "არა მომხმარებლის ველი",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "ფილტრი ჩართულია",
|
||||
"filter-on-desc": "თქვენ ფილტრავთ ბარათებს ამ დაფაზე. დააკლიკეთ აქ ფილტრაციის შესწორებისთვის. ",
|
||||
"filter-to-selection": "მონიშნულის გაფილტვრა",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "라벨 없음",
|
||||
"filter-no-member": "멤버 없음",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "필터 사용",
|
||||
"filter-on-desc": "보드에서 카드를 필터링합니다. 여기를 클릭하여 필터를 수정합니다.",
|
||||
"filter-to-selection": "선택 항목으로 필터링",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "без етикет",
|
||||
"filter-no-member": "без член",
|
||||
"filter-no-custom-fields": "Няма Собствени полета",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Има приложени филтри",
|
||||
"filter-on-desc": "В момента филтрирате картите в това табло. Моля, натиснете тук, за да промените филтъра.",
|
||||
"filter-to-selection": "Филтрирай избраните",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Geen label",
|
||||
"filter-no-member": "Geen lid",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter staat aan",
|
||||
"filter-on-desc": "Je bent nu kaarten aan het filteren op dit bord. Klik hier om het filter te wijzigen.",
|
||||
"filter-to-selection": "Filter zoals selectie",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Pas cap d'etiqueta",
|
||||
"filter-no-member": "Pas cap de participant",
|
||||
"filter-no-custom-fields": "Pas de camp personalizat",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Lo filtre es activat",
|
||||
"filter-on-desc": "Filtratz las cartas dins aqueste tablèu. Picar aquí per editar los filtres",
|
||||
"filter-to-selection": "Filtrar la seleccion",
|
||||
|
||||
+4
-2
@@ -73,8 +73,8 @@
|
||||
"activity-unchecked-item-card": "odznaczono %s w liście zadań %s",
|
||||
"activity-checklist-completed-card": "wykonał(a) wszystkie zadania z listy __checklist__ na karcie __card__ na liście __list__ na diagramie czynności __swimlane__ na tablicy __board__",
|
||||
"activity-checklist-uncompleted-card": "wycofano ukończenie listy zadań %s",
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-deleteComment": "deleted comment %s",
|
||||
"activity-editComment": "edytował(a) komentarz %s",
|
||||
"activity-deleteComment": "usunął/ęła komentarz %s",
|
||||
"add-attachment": "Dodaj załącznik",
|
||||
"add-board": "Dodaj tablicę",
|
||||
"add-card": "Dodaj kartę",
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Brak etykiety",
|
||||
"filter-no-member": "Brak członków",
|
||||
"filter-no-custom-fields": "Brak niestandardowych pól",
|
||||
"filter-show-archive": "Pokaż zarchiwizowane listy",
|
||||
"filter-hide-empty": "Ukryj puste listy",
|
||||
"filter-on": "Filtr jest włączony",
|
||||
"filter-on-desc": "Filtrujesz karty na tej tablicy. Kliknij tutaj by edytować filtr.",
|
||||
"filter-to-selection": "Odfiltruj zaznaczenie",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Sem etiquetas",
|
||||
"filter-no-member": "Sem membros",
|
||||
"filter-no-custom-fields": "Não há campos customizados",
|
||||
"filter-show-archive": "Mostrar listas arquivadas",
|
||||
"filter-hide-empty": "Esconder listas vazias",
|
||||
"filter-on": "Filtro está ativo",
|
||||
"filter-on-desc": "Você está filtrando cartões neste quadro. Clique aqui para editar o filtro.",
|
||||
"filter-to-selection": "Filtrar esta seleção",
|
||||
@@ -313,7 +315,7 @@
|
||||
"advanced-filter-description": "Filtros avançados permitem escrever uma \"string\" contendo os seguintes operadores: == != <= >= && || (). Um espaco é utilizado como separador entre os operadores. Você pode filtrar para todos os campos personalizados escrevendo os nomes e valores. Exemplo: Campo1 == Valor1. Nota^Se o campo ou valor tiver espaços você precisa encapsular eles em citações sozinhas. Exemplo: Campo1 == Eu\\sou. Também você pode combinar múltiplas condições. Exemplo: C1 == V1 || C1 == V2. Normalmente todos os operadores são interpretados da esquerda para direita. Você pode alterar a ordem colocando parênteses - como ma expressão matemática. Exemplo: C1 == V1 && (C2 == V2 || C2 == V3). Você tamb~em pode pesquisar campos de texto usando regex: C1 == /Tes.*/i",
|
||||
"fullname": "Nome Completo",
|
||||
"header-logo-title": "Voltar para a lista de quadros.",
|
||||
"hide-system-messages": "Esconde mensagens de sistema",
|
||||
"hide-system-messages": "Esconder mensagens de sistema",
|
||||
"headerBarCreateBoardPopup-title": "Criar Quadro",
|
||||
"home": "Início",
|
||||
"import": "Importar",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Sem etiquetas",
|
||||
"filter-no-member": "Sem membros",
|
||||
"filter-no-custom-fields": "Sem Campos Personalizados",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filtro está activo",
|
||||
"filter-on-desc": "Está a filtrar cartões neste quadro. Clique aqui para editar o filtro.",
|
||||
"filter-to-selection": "Filtrar esta selecção",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
+11
-9
@@ -5,7 +5,7 @@
|
||||
"act-deleteAttachment": "удалил вложение __attachment__ из карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
"act-addSubtask": "добавил подзадачу __subtask__ для карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
"act-addLabel": "добавил метку __label__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
"act-addedLabel": "Добавлена метка __label__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
"act-addedLabel": "добавил метку __label__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
"act-removeLabel": "Снята метка __label__ с карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
"act-removedLabel": "Снята метка __label__ с карточки __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
"act-addChecklist": "добавил контрольный список __checklist__ в карточку __card__ в списке __list__ на дорожке __swimlane__ доски __board__",
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Нет метки",
|
||||
"filter-no-member": "Нет участников",
|
||||
"filter-no-custom-fields": "Нет настраиваемых полей",
|
||||
"filter-show-archive": "Показать архивные списки",
|
||||
"filter-hide-empty": "Скрыть пустые списки",
|
||||
"filter-on": "Включен фильтр",
|
||||
"filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
@@ -710,10 +712,10 @@
|
||||
"delete-all": "Удалить все",
|
||||
"loading": "Идет загрузка, пожалуйста подождите",
|
||||
"previous_as": "в прошлый раз был",
|
||||
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
|
||||
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
|
||||
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
|
||||
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
|
||||
"act-a-dueAt": "изменил срок выполнения \nСтало: __timeValue__\nВ карточке: __card__\nранее было __timeOldValue__",
|
||||
"act-a-endAt": "изменил время завершения на __timeValue__, было (__timeOldValue__)",
|
||||
"act-a-startAt": "изменил время начала на __timeValue__, было (__timeOldValue__)",
|
||||
"act-a-receivedAt": "изменил время получения на __timeValue__, было (__timeOldValue__)",
|
||||
"a-dueAt": "изменил срок выполнения на",
|
||||
"a-endAt": "изменил время завершения на",
|
||||
"a-startAt": "изменил время начала работы на",
|
||||
@@ -721,10 +723,10 @@
|
||||
"almostdue": "текущий срок выполнения %s приближается",
|
||||
"pastdue": "текущий срок выполнения %s прошел",
|
||||
"duenow": "текущий срок выполнения %s сегодня",
|
||||
"act-withDue": "__card__ due reminders [__board__]",
|
||||
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
|
||||
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
|
||||
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
|
||||
"act-withDue": "__card__ напоминания о сроке выполнения [__board__]",
|
||||
"act-almostdue": "напомнил, что скоро завершается срок выполнения (__timeValue__) карточки __card__",
|
||||
"act-pastdue": "напомнил, что срок выполнения (__timeValue__) карточки __card__ прошел",
|
||||
"act-duenow": "напомнил, что срок выполнения (__timeValue__) карточки __card__ — это уже сейчас",
|
||||
"act-atUserComment": "Вас упомянули в [__board__] __card__",
|
||||
"delete-user-confirm-popup": "Вы уверены, что хотите удалить аккаунт? Данное действие необратимо.",
|
||||
"accounts-allowUserDelete": "Разрешить пользователям удалять собственные аккаунты",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Nema oznake",
|
||||
"filter-no-member": "Nema člana",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Ingen etikett",
|
||||
"filter-no-member": "Ingen medlem",
|
||||
"filter-no-custom-fields": "Inga anpassade fält",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter är på",
|
||||
"filter-on-desc": "Du filtrerar kort på denna anslagstavla. Klicka här för att redigera filter.",
|
||||
"filter-to-selection": "Filter till val",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "ไม่มีฉลาก",
|
||||
"filter-no-member": "ไม่มีสมาชิก",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "กรองบน",
|
||||
"filter-on-desc": "คุณกำลังกรองการ์ดในบอร์ดนี้ คลิกที่นี่เพื่อแก้ไขตัวกรอง",
|
||||
"filter-to-selection": "กรองตัวเลือก",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "Etiket yok",
|
||||
"filter-no-member": "Üye yok",
|
||||
"filter-no-custom-fields": "Hiç özel alan yok",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filtre aktif",
|
||||
"filter-on-desc": "Bu panodaki kartları filtreliyorsunuz. Fitreyi düzenlemek için tıklayın.",
|
||||
"filter-to-selection": "Seçime göre filtreleme yap",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "无标签",
|
||||
"filter-no-member": "无成员",
|
||||
"filter-no-custom-fields": "无自定义字段",
|
||||
"filter-show-archive": "显示归档的列表",
|
||||
"filter-hide-empty": "隐藏空列表",
|
||||
"filter-on": "过滤器启用",
|
||||
"filter-on-desc": "你正在过滤该看板上的卡片,点此编辑过滤。",
|
||||
"filter-to-selection": "要选择的过滤器",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "No member",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
|
||||
@@ -306,6 +306,8 @@
|
||||
"filter-no-label": "沒有標籤",
|
||||
"filter-no-member": "沒有成員",
|
||||
"filter-no-custom-fields": "沒有自訂欄位",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "篩選器已開啟",
|
||||
"filter-on-desc": "你正在篩選該看板上的卡片,點此編輯篩選條件。",
|
||||
"filter-to-selection": "選擇的篩選條件",
|
||||
|
||||
+1
-4
@@ -407,10 +407,7 @@ Boards.helpers({
|
||||
},
|
||||
|
||||
lists() {
|
||||
return Lists.find(
|
||||
{ boardId: this._id, archived: false },
|
||||
{ sort: { sort: 1 } },
|
||||
);
|
||||
return Lists.find({ boardId: this._id }, { sort: { sort: 1 } });
|
||||
},
|
||||
|
||||
nullSortLists() {
|
||||
|
||||
+33
-3
@@ -257,10 +257,40 @@ Users.attachSchema(
|
||||
}),
|
||||
);
|
||||
|
||||
Users.before.update(function(userId, fieldNames) {
|
||||
const user = Users.findOne({ _id: userId });
|
||||
if ((user && user.isAdmin) || (Meteor.user() && Meteor.user().isAdmin)) {
|
||||
return true;
|
||||
}
|
||||
if (!user) {
|
||||
return false;
|
||||
}
|
||||
if (_.contains(fieldNames, 'services')) {
|
||||
return false;
|
||||
}
|
||||
if (_.contains(fieldNames, 'heartBeat')) {
|
||||
return false;
|
||||
}
|
||||
if (_.contains(fieldNames, 'isAdmin')) {
|
||||
return false;
|
||||
}
|
||||
if (_.contains(fieldNames, 'loginDisabled')) {
|
||||
return false;
|
||||
}
|
||||
if (_.contains(fieldNames, 'authenticationMethod')) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Users.allow({
|
||||
update(userId) {
|
||||
const user = Users.findOne(userId);
|
||||
return user && Meteor.user().isAdmin; // GitHub issue #2590
|
||||
update(userId, doc) {
|
||||
const user = Users.findOne({ _id: userId });
|
||||
if ((user && user.isAdmin) || (Meteor.user() && Meteor.user().isAdmin))
|
||||
return true;
|
||||
if (!user) {
|
||||
return false;
|
||||
}
|
||||
return doc._id === userId;
|
||||
},
|
||||
remove(userId, doc) {
|
||||
const adminsNumber = Users.find({ isAdmin: true }).count();
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v3.19.0",
|
||||
"version": "v3.22.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@@ -1524,7 +1524,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 v3.18">Wekan REST API v3.18</a>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v3.21">Wekan REST API v3.21</a>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -2017,7 +2017,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 v3.18</h1>
|
||||
<h1 id="wekan-rest-api">Wekan REST API v3.21</h1>
|
||||
<blockquote>
|
||||
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
|
||||
</blockquote>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
swagger: '2.0'
|
||||
info:
|
||||
title: Wekan REST API
|
||||
version: v3.18
|
||||
version: v3.21
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 321,
|
||||
appVersion = 324,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "3.19.0~2019-08-15"),
|
||||
appMarketingVersion = (defaultText = "3.22.0~2019-08-20"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
// 1. that the user is a member of
|
||||
// 2. the user has starred
|
||||
Meteor.publish('boards', function() {
|
||||
const userId = this.userId;
|
||||
// Ensure that the user is connected. If it is not, we need to return an empty
|
||||
// array to tell the client to remove the previously published docs.
|
||||
if (!Match.test(this.userId, String)) return [];
|
||||
if (!Match.test(userId, String) || !userId) return [];
|
||||
|
||||
// Defensive programming to verify that starredBoards has the expected
|
||||
// format -- since the field is in the `profile` a user can modify it.
|
||||
const { starredBoards = [] } = Users.findOne(this.userId).profile || [];
|
||||
const { starredBoards = [] } = (Users.findOne(userId) || {}).profile || {};
|
||||
check(starredBoards, [String]);
|
||||
|
||||
return Boards.find(
|
||||
@@ -20,7 +21,7 @@ Meteor.publish('boards', function() {
|
||||
_id: { $in: starredBoards },
|
||||
permission: 'public',
|
||||
},
|
||||
{ members: { $elemMatch: { userId: this.userId, isActive: true } } },
|
||||
{ members: { $elemMatch: { userId, isActive: true } } },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -40,14 +41,15 @@ Meteor.publish('boards', function() {
|
||||
});
|
||||
|
||||
Meteor.publish('archivedBoards', function() {
|
||||
if (!Match.test(this.userId, String)) return [];
|
||||
const userId = this.userId;
|
||||
if (!Match.test(userId, String)) return [];
|
||||
|
||||
return Boards.find(
|
||||
{
|
||||
archived: true,
|
||||
members: {
|
||||
$elemMatch: {
|
||||
userId: this.userId,
|
||||
userId,
|
||||
isAdmin: true,
|
||||
},
|
||||
},
|
||||
@@ -70,6 +72,13 @@ Meteor.publishRelations('board', function(boardId, isArchived) {
|
||||
check(boardId, String);
|
||||
check(isArchived, Boolean);
|
||||
const thisUserId = this.userId;
|
||||
const $or = [{ permission: 'public' }];
|
||||
|
||||
if (thisUserId) {
|
||||
$or.push({
|
||||
members: { $elemMatch: { userId: thisUserId, isActive: true } },
|
||||
});
|
||||
}
|
||||
|
||||
this.cursor(
|
||||
Boards.find(
|
||||
@@ -78,10 +87,7 @@ Meteor.publishRelations('board', function(boardId, isArchived) {
|
||||
archived: false,
|
||||
// If the board is not public the user has to be a member of it to see
|
||||
// it.
|
||||
$or: [
|
||||
{ permission: 'public' },
|
||||
{ members: { $elemMatch: { userId: this.userId, isActive: true } } },
|
||||
],
|
||||
$or,
|
||||
// Sort required to ensure oplog usage
|
||||
},
|
||||
{ limit: 1, sort: { _id: 1 } },
|
||||
|
||||
Reference in new issue
Block a user