瀏覽代碼

Merge branch 'master' of https://github.com/wekan/wekan into new-search

John R. Supplee 4 年之前
父節點
當前提交
591a8cd807

+ 18 - 0
CHANGELOG.md

@@ -1,3 +1,21 @@
+# Upcoming Wekan release
+
+This release adds the following new features:
+
+- [Option to add custom field to all cards](https://github.com/wekan/wekan/pulls/3466).
+  Thanks to jrsupplee.
+
+and fixes the following bugs:
+
+- [WIP Limit: Limited number of cards highlighting to true overbooking](https://github.com/wekan/wekan/pull/3468).
+  Thanks to bronger.
+- [Revert table-cell back to inline-block at my-cards-list-wrapper](https://github.com/wekan/wekan/commit/da12c84609674bdf5121ad6b74c97c65b9fc0164).
+  Thanks to jrsupplee and xet7.
+- [Fix for search operators with uppercase letters](https://github.com/wekan/wekan/pull/3470).
+  Thanks to jrsupplee.
+
+Thanks to above GitHub users for their contributions and translators for their translations.
+
 # v4.84 2021-01-22 Wekan release
 
 This release adds the following new features:

+ 1 - 1
client/components/lists/listHeader.jade

@@ -15,7 +15,7 @@ template(name="listHeader")
           = title
         if wipLimit.enabled
          | (
-         span(class="{{#if reachedWipLimit}}highlight{{/if}}") {{cards.count}}
+         span(class="{{#if exceededWipLimit}}highlight{{/if}}") {{cards.count}}
          |/#{wipLimit.value})
 
         if showCardsCountForList cards.count

+ 8 - 0
client/components/lists/listHeader.js

@@ -72,6 +72,14 @@ BlazeComponent.extendComponent({
     );
   },
 
+  exceededWipLimit() {
+    const list = Template.currentData();
+    return (
+      list.getWipLimit('enabled') &&
+      list.getWipLimit('value') < list.cards().count()
+    );
+  },
+
   showCardsCountForList(count) {
     const limit = this.limitToShowCardsCount();
     return limit > 0 && count > limit;

+ 25 - 20
client/components/main/globalSearch.js

@@ -193,26 +193,31 @@ BlazeComponent.extendComponent({
     const reText = /^(?<text>\S+)(\s+|$)/;
     const reQuotedText = /^(?<quote>["'])(?<text>\w+)\k<quote>(\s+|$)/;
 
+    const operators = {
+      'operator-board': 'boards',
+      'operator-board-abbrev': 'boards',
+      'operator-swimlane': 'swimlanes',
+      'operator-swimlane-abbrev': 'swimlanes',
+      'operator-list': 'lists',
+      'operator-list-abbrev': 'lists',
+      'operator-label': 'labels',
+      'operator-label-abbrev': 'labels',
+      'operator-user': 'users',
+      'operator-user-abbrev': 'users',
+      'operator-member': 'members',
+      'operator-member-abbrev': 'members',
+      'operator-assignee': 'assignees',
+      'operator-assignee-abbrev': 'assignees',
+      'operator-is': 'is',
+      'operator-due': 'dueAt',
+      'operator-created': 'createdAt',
+      'operator-modified': 'modifiedAt',
+    };
+
     const operatorMap = {};
-    operatorMap[TAPi18n.__('operator-board')] = 'boards';
-    operatorMap[TAPi18n.__('operator-board-abbrev')] = 'boards';
-    operatorMap[TAPi18n.__('operator-swimlane')] = 'swimlanes';
-    operatorMap[TAPi18n.__('operator-swimlane-abbrev')] = 'swimlanes';
-    operatorMap[TAPi18n.__('operator-list')] = 'lists';
-    operatorMap[TAPi18n.__('operator-list-abbrev')] = 'lists';
-    operatorMap[TAPi18n.__('operator-label')] = 'labels';
-    operatorMap[TAPi18n.__('operator-label-abbrev')] = 'labels';
-    operatorMap[TAPi18n.__('operator-user')] = 'users';
-    operatorMap[TAPi18n.__('operator-user-abbrev')] = 'users';
-    operatorMap[TAPi18n.__('operator-member')] = 'members';
-    operatorMap[TAPi18n.__('operator-member-abbrev')] = 'members';
-    operatorMap[TAPi18n.__('operator-assignee')] = 'assignees';
-    operatorMap[TAPi18n.__('operator-assignee-abbrev')] = 'assignees';
-    operatorMap[TAPi18n.__('operator-is')] = 'is';
-    operatorMap[TAPi18n.__('operator-due')] = 'dueAt';
-    operatorMap[TAPi18n.__('operator-created')] = 'createdAt';
-    operatorMap[TAPi18n.__('operator-modified')] = 'modifiedAt';
-    operatorMap[TAPi18n.__('operator-sort')] = 'sort';
+    Object.entries(operators).forEach(([key, value]) => {
+      operatorMap[TAPi18n.__(key).toLowerCase()] = value;
+    });
 
     // eslint-disable-next-line no-console
     console.log('operatorMap:', operatorMap);
@@ -248,7 +253,7 @@ BlazeComponent.extendComponent({
         } else {
           op = m.groups.abbrev;
         }
-        if (op in operatorMap) {
+        if (operatorMap.hasOwnProperty(op)) {
           let value = m.groups.value;
           if (operatorMap[op] === 'labels') {
             if (value in this.colorMap) {

+ 1 - 1
client/components/main/myCards.styl

@@ -43,7 +43,7 @@
   border-radius: 5px
   padding: 1.5rem
   padding-top: 0.75rem
-  display: table-cell
+  display: inline-block
   min-width: 250px
   max-width: 350px