Compare commits

...
8 Commits
Author SHA1 Message Date
Lauri Ojansivu 62ba8ed8d8 v4.91 2021-01-29 15:16:35 +02:00
Lauri Ojansivu 6eeef96886 Updated ChangeLog. 2021-01-29 15:11:02 +02:00
Lauri Ojansivu 4acf852650 Fixed typos in docker-compose.yml.
Thanks to farfoodyou and xet7 !

Fixes #3506
2021-01-29 15:09:11 +02:00
Lauri Ojansivu 9b3f1562a5 Updated translations. 2021-01-29 14:59:37 +02:00
Lauri Ojansivu 49774e46a3 Updated ChangeLog. 2021-01-29 14:57:02 +02:00
Lauri Ojansivu ae2447393d Merge pull request #3505 from jrsupplee/new-search
Use `new RegExp(...)` to define a regex
2021-01-29 13:55:01 +02:00
John R. Supplee 3435192640 only use new RegExp(...) to define regex (not slashes) 2021-01-29 13:15:53 +02:00
John R. Supplee 6ba4da9711 Remove added backticks from regex 2021-01-28 23:42:47 +02:00
12 changed files with 54 additions and 30 deletions

No files matched your search

+11
View File
@@ -1,3 +1,14 @@
# v4.91 2021-01-29 Wekan release
This release fixes the following bugs:
- [Use `new RegExp(...)` to define a regex](https://github.com/wekan/wekan/pull/3505).
Thanks to jrsupplee.
- [Fixed typos in docker-compose.yml](https://github.com/wekan/wekan/commit/4acf8526509ffe852e6e48e3503560448239d8cd).
Thanks to farfoodyou and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v4.90 2021-01-28 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: "v4.90.0"
appVersion: "v4.91.0"
files:
userUploads:
- README.md
+13 -4
View File
@@ -190,10 +190,19 @@ BlazeComponent.extendComponent({
this.searching.set(true);
const reOperator1 = `/^((?<operator>[\p{Letter}\p{Mark}]+):|(?<abbrev>[#@]))(?<value>[\p{Letter}\p{Mark}]+)(\s+|$)/iu`;
const reOperator2 = `/^((?<operator>[\p{Letter}\p{Mark}]+):|(?<abbrev>[#@]))(?<quote>["']*)(?<value>.*?)\k<quote>(\s+|$)/iu`;
const reText = `/^(?<text>\S+)(\s+|$)/u`;
const reQuotedText = `/^(?<quote>["'])(?<text>[\w\p{L}]+)\k<quote>(\s+|$)/u`;
const reOperator1 = new RegExp(
'^((?<operator>[\\p{Letter}\\p{Mark}]+):|(?<abbrev>[#@]))(?<value>[\\p{Letter}\\p{Mark}]+)(\\s+|$)',
'iu',
);
const reOperator2 = new RegExp(
'^((?<operator>[\\p{Letter}\\p{Mark}]+):|(?<abbrev>[#@]))(?<quote>["\']*)(?<value>.*?)\\k<quote>(\\s+|$)',
'iu',
);
const reText = new RegExp('^(?<text>\\S+)(\\s+|$)', 'u');
const reQuotedText = new RegExp(
'^(?<quote>["\'])(?<text>.*?)\\k<quote>(\\s+|$)',
'u',
);
const operators = {
'operator-board': 'boards',
+5 -5
View File
@@ -95,9 +95,9 @@ services:
# 2020-12-03:
# - Mongo image copied from Docker Hub mongo:4.4.2-bionic to Quay
# to avoid Docker Hub rate limits.
# Quay image
# Quay image does work:
# image: quay.io/wekan/mongo:4.4.2-bionic
# Docker Hub MongoDB image works:
# Docker Hub MongoDB image does work:
image: mongo:4.4
#-------------------------------------------------------------------------------------
container_name: wekan-db
@@ -117,12 +117,12 @@ services:
wekan:
#-------------------------------------------------------------------------------------
# ==== MONGODB AND METEOR VERSION ====
# a) Quay automatic builds do not currently work, https://quay.io/wekan/wekan
# a) Quay automatic builds do work work, https://quay.io/wekan/wekan
# image: quay.io/wekan/wekan
# b) Using specific version tag:
# image: quay.io/wekan/wekan:v4.52
c) Docker Hub builds do work https://hub.docker.com/r/wekanteam/wekan
# image: wekanteam/wekan
# c) Docker Hub builds do work https://hub.docker.com/r/wekanteam/wekan
image: wekanteam/wekan
#-------------------------------------------------------------------------------------
container_name: wekan-app
restart: always
+2 -2
View File
@@ -916,8 +916,8 @@
"operator-number-expected": "סימון הפעולה __operator__ ציפה למספר, קיבל ‚__value__’",
"operator-sort-invalid": "sort of '%s' is invalid",
"operator-status-invalid": "'%s' is not a valid status",
"next-page": "Next Page",
"previous-page": "Previous Page",
"next-page": "העמוד הבא",
"previous-page": "העמוד הקודם",
"heading-notes": "הערות",
"globalSearch-instructions-heading": "הנחיות לחיפוש",
"globalSearch-instructions-description": "חיפושים יכולים לכלול סימוני פעולה כדי לחדד את החיפוש. ניתן לציין סימוני פעולה על ידי כתיבת שם הפעולה והערך מופרדים בנקודתיים. למשל, ציון סימון פעולה של `list:חסומים` יגביל את החיפוש לכרטיסים שבתוך רשימה בשם *חסומים*. אם הערך מכיל רווחים או תווים מיוחדים יש לתחום אותו בסימני ציטוט (למשל: `__operator_list__:\"לסקירה\"`).",
+9 -9
View File
@@ -925,23 +925,23 @@
"globalSearch-instructions-operator-board": "`__operator_board__:title` - карточки на досках с названием соответствующим \"title\"",
"globalSearch-instructions-operator-list": "`__operator_list__:title` - карточки в списках соответствующих \"title\"",
"globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:title` - карточки в дорожках соответствующих заданному \"title\"",
"globalSearch-instructions-operator-comment": "`__operator_comment__:text` - cards with with a comment containing *text*.",
"globalSearch-instructions-operator-comment": "`__operator_comment__:text` - карточки с комментарием содержащим текст *text*.",
"globalSearch-instructions-operator-label": "`__operator_label__:color` `__operator_label__:name` - карточки, которые имеют метки соответствующие заданным \"color\" или \"name\"",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__label` - сокращенный вариант `__operator_label__:label`",
"globalSearch-instructions-operator-user": "`__operator_user__:username` - карточки, где указанный пользователь является участником или исполнителем",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - сокращенный вариант `user:username`",
"globalSearch-instructions-operator-member": "`__operator_member__:username` - карточки, где указанный пользователь является участником",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:username` - карточка назначенная указанному пользователю",
"globalSearch-instructions-operator-due": "`__operator_due__:n` - cards which are due *n* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.",
"globalSearch-instructions-operator-created": "`__operator_created__:n` - cards which which were created *n* days ago",
"globalSearch-instructions-operator-modified": "`__operator_modified__:n` - cards which which were modified *n* days ago",
"globalSearch-instructions-status-archived": "`__operator_status__:__predicate_archived__` - cards that are archived.",
"globalSearch-instructions-status-all": "`__operator_status__:__predicate_all__` - all archived and unarchived cards.",
"globalSearch-instructions-status-ended": "`__operator_status__:__predicate_ended__` - cards with an end date.",
"globalSearch-instructions-operator-due": "`__operator_due__:n` - карточки с датой завершения *n* дней от текущей даты. `__operator_due__:__predicate_overdue__ выводит все карточки с просроченной датой завершения.",
"globalSearch-instructions-operator-created": "`__operator_created__:n` - карточки, которые были созданы *n* дней назад",
"globalSearch-instructions-operator-modified": "`__operator_modified__:n` - карточки, которые были изменены *n* дней назад",
"globalSearch-instructions-status-archived": "`__operator_status__:__predicate_archived__` - карточки, которые были архивированы.",
"globalSearch-instructions-status-all": "`__operator_status__:__predicate_all__` - все карточки, включая архивированные.",
"globalSearch-instructions-status-ended": "`__operator_status__:__predicate_ended__` - карточки с датой завершения.",
"globalSearch-instructions-notes-1": "Может быть задано несколько операторов.",
"globalSearch-instructions-notes-2": "Одинаковые операторы объединяются логическим \"ИЛИ\", например:\n`__operator_list__:Available __operator_list__:Blocked` вернет карточки, которые содержатся в списке *Blocked* или *Available*.",
"globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
"globalSearch-instructions-notes-3-2": "Days can be specified as an integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__`",
"globalSearch-instructions-notes-3": "Разные операторы объединяются логическим \"И\". Возвращаются только объекты удовлетворяющие всем заданным условиям.`__operator_list__:Available __operator_label__:red` вернет карточки, которые содержатся в списке *Available* и имеют метку *red*.",
"globalSearch-instructions-notes-3-2": "Длительность может быть задана числом в днях или используя `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` или `__predicate_year__`",
"globalSearch-instructions-notes-4": "Текстовый поиск нечувствителен к регистру символов.",
"globalSearch-instructions-notes-5": "В архивированных карточках поиск не производится.",
"link-to-search": "Ссылка на этот поиск",
+6 -2
View File
@@ -1263,12 +1263,16 @@ function boardRemover(userId, doc) {
}
Boards.uniqueTitle = title => {
const m = title.match(`/^(?<title>.*?)\s*(\[(?<num>\d+)]\s*$|\s*$)/`);
const m = title.match(
new RegExp('^(?<title>.*?)\\s*(\\[(?<num>\\d+)]\\s*$|\\s*$)'),
);
const base = escapeForRegex(m.groups.title);
let num = 0;
Boards.find({ title: new RegExp(`^${base}\\s*\\[\\d+]\\s*$`) }).forEach(
board => {
const m = board.title.match(`/^(?<title>.*?)\s*\[(?<num>\d+)]\s*$/`);
const m = board.title.match(
new RegExp('^(?<title>.*?)\\s*\\[(?<num>\\d+)]\\s*$'),
);
if (m) {
const n = parseInt(m.groups.num, 10);
num = num < n ? n : num;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v4.90.0",
"version": "v4.91.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v4.90.0",
"version": "v4.91.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 v4.90">Wekan REST API v4.90</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v4.91">Wekan REST API v4.91</a>
</li>
@@ -2037,7 +2037,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 v4.90</h1>
<h1 id="wekan-rest-api">Wekan REST API v4.91</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: v4.90
version: v4.91
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 = 490,
appVersion = 491,
# Increment this for every release.
appMarketingVersion = (defaultText = "4.90.0~2021-01-28"),
appMarketingVersion = (defaultText = "4.91.0~2021-01-29"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,