Compare commits

...
7 Commits
Author SHA1 Message Date
Lauri Ojansivu f96c1eda70 v3.22 2019-08-20 19:25:37 +03:00
Lauri Ojansivu e9bbbb6a04 Update translations. 2019-08-20 19:21:39 +03:00
Lauri Ojansivu efcdbf2e3d Update ChangeLog. 2019-08-20 19:20:06 +03:00
Lauri Ojansivu 6e12e2fa59 [Fix: Some users cannot switch views or languages](https://github.com/wekan/wekan/issues/2630).
Thanks to xet7 and justinr1234.
2019-08-20 19:16:44 +03:00
Lauri Ojansivu a31ece0974 Update translations. 2019-08-19 12:59:27 +03:00
Lauri Ojansivu 06d85b66f1 Update ChangeLog. 2019-08-19 12:52:20 +03:00
Lauri Ojansivu af830812db Wrap minicard text labels to multiple rows.
Thanks to xet7 !
2019-08-19 12:47:02 +03:00
14 changed files with 80 additions and 35 deletions

No files matched your search

+14
View File
@@ -1,3 +1,17 @@
# 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:
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v3.21.0"
appVersion: "v3.22.0"
files:
userUploads:
- README.md
+1
View File
@@ -81,6 +81,7 @@
.minicard-labels
float: right
display: flex
flex-wrap: wrap
.minicard-label
width: 11px
+2 -2
View File
@@ -306,8 +306,8 @@
"filter-no-label": "Kein Label",
"filter-no-member": "Kein Mitglied",
"filter-no-custom-fields": "Keine benutzerdefinierten Felder",
"filter-show-archive": "Show archived lists",
"filter-hide-empty": "Hide empty lists",
"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",
+4 -4
View File
@@ -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,8 +306,8 @@
"filter-no-label": "Aucune étiquette",
"filter-no-member": "Aucun participant",
"filter-no-custom-fields": "Pas de champs personnalisés",
"filter-show-archive": "Show archived lists",
"filter-hide-empty": "Hide empty lists",
"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",
+2 -2
View File
@@ -306,8 +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-show-archive": "הצגת רשימות שהועברו לארכיון",
"filter-hide-empty": "הסתרת רשימות ריקות",
"filter-on": "המסנן פועל",
"filter-on-desc": "מסנן כרטיסים פעיל בלוח זה. יש ללחוץ כאן לעריכת המסנן.",
"filter-to-selection": "סינון לבחירה",
+4 -4
View File
@@ -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,8 +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": "Show archived lists",
"filter-hide-empty": "Hide empty lists",
"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",
+11 -11
View File
@@ -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,8 +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-show-archive": "Показать архивные списки",
"filter-hide-empty": "Скрыть пустые списки",
"filter-on": "Включен фильтр",
"filter-on-desc": "Показываются карточки, соответствующие настройкам фильтра. Нажмите для редактирования.",
"filter-to-selection": "Filter to selection",
@@ -712,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": "изменил время начала работы на",
@@ -723,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": "Разрешить пользователям удалять собственные аккаунты",
+2 -2
View File
@@ -306,8 +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-show-archive": "显示归档的列表",
"filter-hide-empty": "隐藏空列表",
"filter-on": "过滤器启用",
"filter-on-desc": "你正在过滤该看板上的卡片,点此编辑过滤。",
"filter-to-selection": "要选择的过滤器",
+33 -3
View File
@@ -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
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.21.0",
"version": "v3.22.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+2 -2
View File
@@ -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.20">Wekan REST API v3.20</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.20</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 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v3.20
version: v3.21
description: |
The REST API allows you to control and extend Wekan with ease.
+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 = 323,
appVersion = 324,
# Increment this for every release.
appMarketingVersion = (defaultText = "3.21.0~2019-08-16"),
appMarketingVersion = (defaultText = "3.22.0~2019-08-20"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,