Merge remote-tracking branch 'upstream/master'

This commit is contained in:
helioguardabaxo 2021-01-22 22:12:22 -03:00
commit 545c72fca3
74 changed files with 55248 additions and 55042 deletions

View file

@ -1,3 +1,28 @@
# 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 adds the following updates:
- Updated dependencies.
[Part 1](https://github.com/wekan/wekan/commit/7a66cb46a0ec334f4e95a73322641ba029f770ad),
[Part 2](https://github.com/wekan/wekan/commit/953cfd6ecd291196ce2ad1d4a5eac19ca21a20d9).
Thanks to developers of dependencies.
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:

View file

@ -239,7 +239,7 @@ BlazeComponent.extendComponent({
.customFields()
.fetch(),
function(field) {
if (field.automaticallyOnCard)
if (field.automaticallyOnCard || field.alwaysOnCard)
arr.push({ _id: field._id, value: null });
},
);

View file

@ -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

View file

@ -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;

View file

@ -193,25 +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';
for (const op in operators) {
operatorMap[TAPi18n.__(op).toLowerCase()] = operators[op];
}
// eslint-disable-next-line no-console
console.log('operatorMap:', operatorMap);
@ -247,7 +253,7 @@ BlazeComponent.extendComponent({
} else {
op = m.groups.abbrev;
}
if (op !== "__proto__") {
if (op !== '__proto__') {
if (op in operatorMap) {
let value = m.groups.value;
if (operatorMap[op] === 'labels') {
@ -259,7 +265,9 @@ BlazeComponent.extendComponent({
) {
const days = parseInt(value, 10);
if (isNaN(days)) {
if (['day', 'week', 'month', 'quarter', 'year'].includes(value)) {
if (
['day', 'week', 'month', 'quarter', 'year'].includes(value)
) {
value = moment()
.subtract(1, value)
.format();

View file

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

View file

@ -59,6 +59,10 @@ template(name="createCustomFieldPopup")
span {{_ 'automatically-field-on-card'}}
a.flex.js-field-always-on-card(class="{{#if alwaysOnCard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if alwaysOnCard}}is-checked{{/if}}")
span {{_ 'always-field-on-card'}}
a.flex.js-field-showLabel-on-card(class="{{#if showLabelOnMiniCard}}is-checked{{/if}}")
.materialCheckBox(class="{{#if showLabelOnMiniCard}}is-checked{{/if}}")

View file

@ -174,6 +174,14 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
$target.find('.materialCheckBox').toggleClass('is-checked');
$target.toggleClass('is-checked');
},
'click .js-field-always-on-card'(evt) {
let $target = $(evt.target);
if (!$target.hasClass('js-field-always-on-card')) {
$target = $target.parent();
}
$target.find('.materialCheckBox').toggleClass('is-checked');
$target.toggleClass('is-checked');
},
'click .js-field-showLabel-on-card'(evt) {
let $target = $(evt.target);
if (!$target.hasClass('js-field-showLabel-on-card')) {
@ -194,6 +202,8 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
this.find('.js-field-showLabel-on-card.is-checked') !== null,
automaticallyOnCard:
this.find('.js-field-automatically-on-card.is-checked') !== null,
alwaysOnCard:
this.find('.js-field-always-on-card.is-checked') !== null,
};
// insert or update

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "الدقائق",
"seconds": "الثواني",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "نعم",
"no": "لا",

View file

@ -601,7 +601,8 @@
"minutes": "минути",
"seconds": "секунди",
"show-field-on-card": "Покажи това поле в картата",
"automatically-field-on-card": "Създай автоматично поле към всички карти",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Покажи име на поле на мини-картата",
"yes": "Да",
"no": "Не",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minuts",
"seconds": "segons",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Si",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minut",
"seconds": "sekund",
"show-field-on-card": "Ukázat toto pole na kartě",
"automatically-field-on-card": "Automaticky vytvořit pole na všech kartách",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Ukázat štítek pole na minikartě",
"yes": "Ano",
"no": "Ne",

View file

@ -601,7 +601,8 @@
"minutes": "minutter",
"seconds": "sekunder",
"show-field-on-card": "Vis dette felt på kortet",
"automatically-field-on-card": "Auto-opret felter på alle kort",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Vis feltetikette på minikort",
"yes": "Ja",
"no": "Nej",

View file

@ -601,7 +601,8 @@
"minutes": "Minuten",
"seconds": "Sekunden",
"show-field-on-card": "Zeige dieses Feld auf der Karte",
"automatically-field-on-card": "Automatisch Label für alle Karten erzeugen",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Feldbezeichnung auf Minikarte anzeigen",
"yes": "Ja",
"no": "Nein",

View file

@ -601,7 +601,8 @@
"minutes": "λεπτά",
"seconds": "δευτερόλεπτα",
"show-field-on-card": "Προβολή αυτού του πεδίου στην κάρτα",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Ναι",
"no": "Όχι",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Jes",
"no": "Ne",

View file

@ -601,7 +601,8 @@
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Si",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Mostrar este campo en la tarjeta",
"automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
"yes": "Sí",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Mostrar este campo en la tarjeta",
"automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
"yes": "Sí",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Mostrar este campo en la tarjeta",
"automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
"yes": "Sí",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutu",
"seconds": "segundo",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Bai",
"no": "Ez",

View file

@ -601,7 +601,8 @@
"minutes": "دقیقه",
"seconds": "ثانیه",
"show-field-on-card": "این فیلد را در کارت نمایش بده",
"automatically-field-on-card": "این فیلد را اتوماتیک در همهٔ کارت‌ها اضافه کن",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "نمایش لیبل فیلد در کارت‌های کوچک",
"yes": "بله",
"no": "خیر",

View file

@ -601,7 +601,8 @@
"minutes": "minuuttia",
"seconds": "sekuntia",
"show-field-on-card": "Näytä tämä kenttä kortilla",
"automatically-field-on-card": "Luo kenttä automaattisesti kaikille korteille",
"automatically-field-on-card": "Lisää kenttä uusille korteille",
"always-field-on-card": "Lisää kenttä kaikille korteille",
"showLabel-field-on-card": "Näytä kentän nimilappu minikortilla",
"yes": "Kyllä",
"no": "Ei",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "secondes",
"show-field-on-card": "Afficher ce champ sur la carte",
"automatically-field-on-card": "Créer automatiquement le champ sur toutes les cartes",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Indiquer l'étiquette du champ sur la mini-carte",
"yes": "Oui",
"no": "Non",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "דקות",
"seconds": "שניות",
"show-field-on-card": "הצגת שדה זה בכרטיס",
"automatically-field-on-card": "הוספת שדה לכל הכרטיסים",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "הצגת תווית של השדה בכרטיס מוקטן",
"yes": "כן",
"no": "לא",
@ -895,31 +896,31 @@
"operator-assignee-abbrev": "א",
"operator-is": "הוא",
"operator-due": "תפוגה",
"operator-created": "created",
"operator-modified": "modified",
"operator-unknown-error": "%s is not an operator",
"operator-number-expected": "operator __operator__ expected a number, got '__value__'",
"operator-created": "נוצר",
"operator-modified": "נערך",
"operator-unknown-error": "%s אינו סימון פעולה",
"operator-number-expected": "סימון הפעולה __operator__ ציפה למספר, קיבל __value__",
"heading-notes": "הערות",
"globalSearch-instructions-heading": "Search Instructions",
"globalSearch-instructions-description": "Searches can include operators to refine the search. Operators are specified by writing the operator name and value separated by a colon. For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*. If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).",
"globalSearch-instructions-operators": "Available operators:",
"globalSearch-instructions-operator-board": "`__operator_board__:title` - cards in boards matching the specified title",
"globalSearch-instructions-operator-list": "`__operator_list__:title` - cards in lists matching the specified title",
"globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:title` - cards in swimlanes matching the specified title",
"globalSearch-instructions-operator-label": "`__operator_label__:color` `__operator_label__:name` - cards that have a label matching the given color or name",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__label` - shorthand for `__operator_label__:label`",
"globalSearch-instructions-operator-user": "`__operator_user__:username` - cards where the specified user is a *member* or *assignee*",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:username`",
"globalSearch-instructions-operator-member": "`__operator_member__:username` - cards where the specified user is a *member*",
"globalSearch-instructions-heading": "הנחיות לחיפוש",
"globalSearch-instructions-description": "חיפושים יכולים לכלול סימוני פעולה כדי לחדד את החיפוש. ניתן לציין סימוני פעולה על ידי כתיבת שם הפעולה והערך מופרדים בנקודתיים. למשל, ציון סימון פעולה של `list:חסומים` יגביל את החיפוש לכרטיסים שבתוך רשימה בשם *חסומים*. אם הערך מכיל רווחים או תווים מיוחדים יש לתחום אותו בסימני ציטוט (למשל: `__operator_list__:\"לסקירה\"`).",
"globalSearch-instructions-operators": "סימוני פעולה זמינים:",
"globalSearch-instructions-operator-board": "`__operator_board__:כותרת` - כרטיסים בלוחות שתואמים לכותרת שצוינה",
"globalSearch-instructions-operator-list": "`__operator_list__:כותרת` - כרטיסים ברשימות שתואמים לכותרת שצוינה",
"globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:כותרת` - כרטיסים במסלולים שתואמים לכותרת שצוינה",
"globalSearch-instructions-operator-label": "`__operator_label__:צבע` `__operator_label__:שם` - כרטיסים עם תוויות שתואמות לצבע או לשם שצוינו",
"globalSearch-instructions-operator-hash": "`__operator_label_abbrev__label` - קיצור של `__operator_label__:תווית`",
"globalSearch-instructions-operator-user": "`__operator_user__:שם_משתמש` - כרטיסים ש*הוקצו* למשתמש או שהוא *חבר* בהם",
"globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - קיצור של `user:שם_משתמש`",
"globalSearch-instructions-operator-member": "`__operator_member__:שם_משתמש` - כרטיסים שהמשתמש המצוין *חבר* בהם",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:username` - כרטיסים אליהם *הוקצה* המשתמש הנבחר",
"globalSearch-instructions-notes-1": "Multiple operators may be specified.",
"globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
"globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned.\n`__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
"globalSearch-instructions-notes-1": "אפשר לציין מגוון סימוני פעולה.",
"globalSearch-instructions-notes-2": "על פעולות דומות חל שער לוגי *או* (*OR*). כרטיסים שתואמים אי אילו מהכללים יוחזרו.\n`__operator_list__:זמינים __operator_list__:חסומים` תחזרנה כרטיסים שמופיעים ברשימות עם השמות *חסומים* או *זמינים*.",
"globalSearch-instructions-notes-3": "על פעולות שונות חל שער לוגי *וגם* (*AND*). רק כרטיסים שתואמים את שתי הפעולות השונות יוחזרו.\n`__operator_list__:זמינים __operator_label__:אדום` תחזיר רק כרטיסים מהרשימה *זמינים* עם תווית בצבע *אדום*.",
"globalSearch-instructions-notes-4": "חיפושי טקסט הם תלויי רישיות.",
"globalSearch-instructions-notes-5": "לא מתבצע חיפוש על הכרטיסיות שכרגע בארכיון.",
"link-to-search": "קישור לחיפוש הזה",
"excel-font": "Arial",
"number": "מספר",
"label-colors": "Label Colors",
"label-names": "Label Names"
"label-colors": "צבעי תוויות",
"label-names": "שמות תוויות"
}

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show यह field on कार्ड",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minute",
"seconds": "sekunde",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Da",
"no": "Ne",

View file

@ -601,7 +601,8 @@
"minutes": "perc",
"seconds": "másodperc",
"show-field-on-card": "A mező megjelenítése a kártyán",
"automatically-field-on-card": "Automatikusan hozzon létre mezőt minden Kártyához",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Mutassa a mező nevét a mini-kártyákon is",
"yes": "Igen",
"no": "Nem",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "menit",
"seconds": "detik",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Ya",
"no": "Tidak",

View file

@ -601,7 +601,8 @@
"minutes": "nkeji",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Ee",
"no": "Mba",

View file

@ -601,7 +601,8 @@
"minutes": "minuti",
"seconds": "secondi",
"show-field-on-card": "Visualizza questo campo sulla scheda",
"automatically-field-on-card": "Crea automaticamente i campi per tutte le schede",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Mostra l'etichetta di campo su minischeda",
"yes": "Sì",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "分",
"seconds": "秒",
"show-field-on-card": "このフィールドをカードに表示",
"automatically-field-on-card": "全カードにフィールドを自動作成",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "ミニカード上のフィールドラベル表示",
"yes": "はい",
"no": "いいえ",

View file

@ -601,7 +601,8 @@
"minutes": "წუთები",
"seconds": "წამები",
"show-field-on-card": "აჩვენეთ ეს ველი ბარათზე",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "დიახ",
"no": "არა",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minūtes",
"seconds": "sekundes",
"show-field-on-card": "Rādīt šo lauku kartiņā",
"automatically-field-on-card": "Automātiski izveidot lauku visām kartiņām",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Rādīt lauku nosaukumus mini kartiņā",
"yes": "Jā",
"no": "Nē",

View file

@ -601,7 +601,8 @@
"minutes": "минути",
"seconds": "секунди",
"show-field-on-card": "Покажи това поле в картата",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Да",
"no": "Не",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minuten",
"seconds": "seconden",
"show-field-on-card": "Toon dit veld op kaart",
"automatically-field-on-card": "Maak veld automatisch aan op alle kaarten",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Toon veldnaam op minikaart",
"yes": "Ja",
"no": "Nee",

View file

@ -601,7 +601,8 @@
"minutes": "minutas",
"seconds": "segondas",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Òc",
"no": "Non",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minut",
"seconds": "sekund",
"show-field-on-card": "Pokaż te pole na karcie",
"automatically-field-on-card": "Automatycznie stwórz pole dla wszystkich kart",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Pokaż pole etykiety w minikarcie",
"yes": "Tak",
"no": "Nie",

View file

@ -601,7 +601,8 @@
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Mostrar este campo no cartão",
"automatically-field-on-card": "Criar campo automaticamente para todos os cartões",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Mostrar etiqueta do campo no minicartão",
"yes": "Sim",
"no": "Não",
@ -895,10 +896,10 @@
"operator-assignee-abbrev": "a",
"operator-is": "é",
"operator-due": "prazo final",
"operator-created": "created",
"operator-modified": "modified",
"operator-created": "criado",
"operator-modified": "modificado",
"operator-unknown-error": "%s não é um operador",
"operator-number-expected": "operator __operator__ expected a number, got '__value__'",
"operator-number-expected": "operador __operator__ esperava um número, obteve '__value__'",
"heading-notes": "Notas",
"globalSearch-instructions-heading": "Buscar instruções",
"globalSearch-instructions-description": "Buscas podem incluir operadores para otimizar a consulta. Operadores são especificados para serem escritos com o nome do operador e o seu valor separados por sinal de dois pontos. Por exemplo, uma especificação de operador para `list:Blocked` poderia limitar a busca a cartões que estão em uma lista chamada *Blocked*. Se o valor contém espaços ou caracteres especiais deverá ser colocado entre aspas (por exemplo, `__operator_list__:\"To Review\"`).",
@ -920,6 +921,6 @@
"link-to-search": "Link para esta busca",
"excel-font": "Arial",
"number": "Número",
"label-colors": "Label Colors",
"label-names": "Label Names"
"label-colors": "Cores de etiqueta",
"label-names": "Nomes de etiqueta"
}

View file

@ -601,7 +601,8 @@
"minutes": "minutos",
"seconds": "segundos",
"show-field-on-card": "Mostrar este campo no cartão",
"automatically-field-on-card": "Criar campo automaticamente para todos os cartões",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Mostrar etiqueta do campo no mini-cartão",
"yes": "Sim",
"no": "Não",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "минуты",
"seconds": "секунды",
"show-field-on-card": "Показать это поле на карточке",
"automatically-field-on-card": "Cоздавать поле во всех новых карточках",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Показать имя поля на карточке",
"yes": "Да",
"no": "Нет",
@ -895,10 +896,10 @@
"operator-assignee-abbrev": "a",
"operator-is": " ",
"operator-due": "выполнить к",
"operator-created": "created",
"operator-modified": "modified",
"operator-created": "создано",
"operator-modified": "изменено",
"operator-unknown-error": "%1 не оператор",
"operator-number-expected": "operator __operator__ expected a number, got '__value__'",
"operator-number-expected": "оператор __operator__ используется с числом, задано '__value__'",
"heading-notes": "Заметки",
"globalSearch-instructions-heading": "Инструкция по поиску",
"globalSearch-instructions-description": "Поисковая строка может содержать операторы для уточнения запроса. Оператор задается именем оператора и значением разделенными двоеточием. Например, оператор 'list:Blocked' ограничит результат запроса карточками состоящими в списке 'Blocked'. Если значение содержит пробелы или специальные символы, то оно должно быть заключено в кавычки(__operator_list__:\"To Review\").",
@ -911,15 +912,15 @@
"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` - cards where the specified user is an *assignee*",
"globalSearch-instructions-operator-assignee": "`__operator_assignee__:username` - карточка назначенная указанному пользователю",
"globalSearch-instructions-notes-1": "Может быть задано несколько операторов.",
"globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.",
"globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned.\n`__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.",
"globalSearch-instructions-notes-4": "Text searches are case insensitive.",
"globalSearch-instructions-notes-5": "Currently archived cards are not searched.",
"link-to-search": "Link to this search",
"globalSearch-instructions-notes-2": "Одинаковые операторы объединяются логическим \"ИЛИ\", например:\n`__operator_list__:Available __operator_list__:Blocked` вернет карточки, которые содержатся в списке *Blocked* или *Available*.",
"globalSearch-instructions-notes-3": "Разные операторы объединяются логическим \"И\". Возвращаются только объекты удовлетворяющие всем заданным условиям.\n`__operator_list__:Available __operator_label__:red` вернет карточки, которые содержатся в списке *Available* и имеют метку *red*.",
"globalSearch-instructions-notes-4": "Текстовый поиск нечувствителен к регистру символов.",
"globalSearch-instructions-notes-5": "В архивированных карточках поиск не производится.",
"link-to-search": "Ссылка на этот поиск",
"excel-font": "Arial",
"number": "Номер",
"label-colors": "Label Colors",
"label-names": "Label Names"
"label-colors": "Цвета меток",
"label-names": "Названия меток"
}

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minute",
"seconds": "sekunde",
"show-field-on-card": "Prikaži to polje na kartici",
"automatically-field-on-card": "Samodejno dodaj polja na vse kartice",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Prikaži oznako polja na mini kartici",
"yes": "Da",
"no": "Ne",

View file

@ -601,7 +601,8 @@
"minutes": "minuta",
"seconds": "sekundi",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Da",
"no": "Ne",

View file

@ -601,7 +601,8 @@
"minutes": "minuter",
"seconds": "sekunder",
"show-field-on-card": "Visa detta fält på kort",
"automatically-field-on-card": "Skapa automatiskt fält till alla kort",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Visa fältetikett på minikort",
"yes": "Ja",
"no": "Nej",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "dakika",
"seconds": "saniye",
"show-field-on-card": "Bu alanı kartta göster",
"automatically-field-on-card": "Tüm kartlara otomatik alan oluştur",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Minikard üzerindeki alan etiketini göster",
"yes": "Evet",
"no": "Hayır",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "分钟",
"seconds": "秒",
"show-field-on-card": "在卡片上显示此字段",
"automatically-field-on-card": "自动创建所有卡片的字段",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "在迷你卡片上显示字段标签",
"yes": "是",
"no": "否",

View file

@ -601,7 +601,8 @@
"minutes": "minutes",
"seconds": "seconds",
"show-field-on-card": "Show this field on card",
"automatically-field-on-card": "Auto create field to all cards",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "Show field label on minicard",
"yes": "Yes",
"no": "No",

View file

@ -601,7 +601,8 @@
"minutes": "分鐘",
"seconds": "秒",
"show-field-on-card": "在卡片上顯示這個欄位",
"automatically-field-on-card": "自動在所有卡片建立欄位",
"automatically-field-on-card": "Add field to new cards",
"always-field-on-card": "Add field to all cards",
"showLabel-field-on-card": "在迷你卡片中顯示欄位標籤",
"yes": "是",
"no": "否",

View file

@ -147,6 +147,7 @@ export class CsvCreator {
settings,
showOnCard: false,
automaticallyOnCard: false,
alwaysOnCard: false,
showLabelOnMiniCard: false,
boardIds: [boardId],
});

View file

@ -76,6 +76,12 @@ CustomFields.attachSchema(
*/
type: Boolean,
},
alwaysOnCard: {
/**
* should the custom field be automatically added to all cards?
*/
type: Boolean,
},
showLabelOnMiniCard: {
/**
* should the label of the custom field be shown on minicards?
@ -111,6 +117,19 @@ CustomFields.attachSchema(
}),
);
CustomFields.addToAllCards = cf => {
Cards.update(
{
boardId: { $in: cf.boardIds },
customFields: { $not: { $elemMatch: { _id: cf._id } } },
},
{
$push: { customFields: { _id: cf._id, value: null } },
},
{ multi: true },
);
};
CustomFields.mutations({
addBoard(boardId) {
if (boardId) {
@ -198,6 +217,10 @@ if (Meteor.isServer) {
CustomFields.after.insert((userId, doc) => {
customFieldCreation(userId, doc);
if (doc.alwaysOnCard) {
CustomFields.addToAllCards(doc);
}
});
CustomFields.before.update((userId, doc, fieldNames, modifier) => {
@ -224,6 +247,11 @@ if (Meteor.isServer) {
}
});
CustomFields.after.update((userId, doc) => {
if (doc.alwaysOnCard) {
CustomFields.addToAllCards(doc);
}
});
CustomFields.before.remove((userId, doc) => {
customFieldDeletion(userId, doc);
Activities.remove({

View file

@ -243,6 +243,7 @@ export class TrelloCreator {
showOnCard: field.display.cardFront,
showLabelOnMiniCard: field.display.cardFront,
automaticallyOnCard: true,
alwaysOnCard: false,
type: field.type,
boardIds: [boardId],
settings: {},

View file

@ -537,6 +537,7 @@ export class WekanCreator {
showOnCard: field.showOnCard,
showLabelOnMiniCard: field.showLabelOnMiniCard,
automaticallyOnCard: field.automaticallyOnCard,
alwaysOnCard: field.alwaysOnCard,
//use date "now" if now created at date is provided (e.g. for very old boards)
createdAt: this._now(this.createdAt.customFields[field._id]),
modifiedAt: field.modifiedAt,

1034
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -45,38 +45,38 @@
"eslint-config-meteor": "0.0.9",
"eslint-config-prettier": "^3.6.0",
"eslint-import-resolver-meteor": "^0.4.0",
"eslint-plugin-import": "^2.20.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-meteor": "^5.1.0",
"eslint-plugin-prettier": "^3.1.2",
"eslint-plugin-prettier": "^3.3.1",
"lint-staged": "^7.3.0",
"pre-commit": "^1.2.2",
"prettier": "^1.19.1",
"prettier-eslint": "^9.0.2"
},
"dependencies": {
"@babel/core": "^7.9.6",
"@babel/runtime": "^7.9.6",
"@root/request": "^1.6.1",
"ajv": "^6.12.4",
"@babel/core": "^7.12.10",
"@babel/runtime": "^7.12.5",
"@root/request": "^1.7.0",
"ajv": "^7.0.3",
"babel-runtime": "^6.26.0",
"bcrypt": "^5.0.0",
"bson": "^4.0.3",
"bunyan": "^1.8.12",
"bson": "^4.2.2",
"bunyan": "^1.8.15",
"es6-promise": "^4.2.4",
"exceljs": "^4.2.0",
"fibers": "^5.0.0",
"flatted": "^3.0.4",
"flatted": "^3.1.1",
"gridfs-stream": "https://github.com/wekan/gridfs-stream/tarball/master",
"jszip": "^3.4.0",
"ldapjs": "^2.1.1",
"markdown-it": "^12.0.2",
"jszip": "^3.5.0",
"ldapjs": "^2.2.3",
"markdown-it": "^12.0.4",
"markdown-it-emoji": "^2.0.0",
"meteor-node-stubs": "^1.0.1",
"mongodb": "^3.6.2",
"mongodb": "^3.6.3",
"os": "^0.1.1",
"page": "^1.11.5",
"papaparse": "^5.2.0",
"qs": "^6.9.4",
"papaparse": "^5.3.0",
"qs": "^6.9.6",
"source-map-support": "^0.5.19",
"xss": "^1.0.8"
}