diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-05-23 22:55:29 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-05-23 22:55:29 +0300 |
commit | 05020241aa564cb42f6ddf619a34455087cc6ee7 (patch) | |
tree | 9558f6a094685a7ff362fdf61e738761ab764398 | |
parent | e8c24aeaf951f7a8b1f12c3e088e2c2553dcee6a (diff) | |
parent | b9c63a8c8f6524477d42816a54fe108f1efccd1d (diff) | |
download | wekan-05020241aa564cb42f6ddf619a34455087cc6ee7.tar.gz wekan-05020241aa564cb42f6ddf619a34455087cc6ee7.tar.bz2 wekan-05020241aa564cb42f6ddf619a34455087cc6ee7.zip |
Merge branch 'devel'
-rw-r--r-- | CHANGELOG.md | 8 | ||||
-rw-r--r-- | client/lib/filter.js | 169 | ||||
-rw-r--r-- | i18n/de.i18n.json | 8 | ||||
-rw-r--r-- | i18n/pt-BR.i18n.json | 126 | ||||
-rw-r--r-- | models/cards.js | 1 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | sandstorm-pkgdef.capnp | 4 |
7 files changed, 151 insertions, 167 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index c581c60a..6698a16a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# v1.01 2018-05-23 Wekan release + +This release possibly fixes the following bugs, please test: + +* [Possible quickfix for all customFields Import errors, please test](https://github.com/wekan/wekan/pull/1653). + +Thanks to GitHub users feuerball11 and xet7 for their contributions. + # v1.00 2018-05-21 Wekan release This release fixes the following bugs: diff --git a/client/lib/filter.js b/client/lib/filter.js index c5f8fe7e..fa139cfe 100644 --- a/client/lib/filter.js +++ b/client/lib/filter.js @@ -86,18 +86,17 @@ class AdvancedFilter { constructor() { this._dep = new Tracker.Dependency(); this._filter = ''; - this._lastValide={}; + this._lastValide = {}; } - set(str) - { + set(str) { this._filter = str; this._dep.changed(); } reset() { this._filter = ''; - this._lastValide={}; + this._lastValide = {}; this._dep.changed(); } @@ -106,75 +105,63 @@ class AdvancedFilter { return this._filter !== ''; } - _filterToCommands(){ + _filterToCommands() { const commands = []; let current = ''; let string = false; let wasString = false; let ignore = false; - for (let i = 0; i < this._filter.length; i++) - { + for (let i = 0; i < this._filter.length; i++) { const char = this._filter.charAt(i); - if (ignore) - { + if (ignore) { ignore = false; continue; } - if (char === '\'') - { + if (char === '\'') { string = !string; if (string) wasString = true; continue; } - if (char === '\\') - { + if (char === '\\') { ignore = true; continue; } - if (char === ' ' && !string) - { - commands.push({'cmd':current, 'string':wasString}); + if (char === ' ' && !string) { + commands.push({ 'cmd': current, 'string': wasString }); wasString = false; current = ''; continue; } current += char; } - if (current !== '') - { - commands.push({'cmd':current, 'string':wasString}); + if (current !== '') { + commands.push({ 'cmd': current, 'string': wasString }); } return commands; } - _fieldNameToId(field) - { - const found = CustomFields.findOne({'name':field}); + _fieldNameToId(field) { + const found = CustomFields.findOne({ 'name': field }); return found._id; } - _arrayToSelector(commands) - { + _arrayToSelector(commands) { try { //let changed = false; this._processSubCommands(commands); } - catch (e){return this._lastValide;} - this._lastValide = {$or: commands}; - return {$or: commands}; + catch (e) { return this._lastValide; } + this._lastValide = { $or: commands }; + return { $or: commands }; } - _processSubCommands(commands) - { + _processSubCommands(commands) { const subcommands = []; let level = 0; let start = -1; - for (let i = 0; i < commands.length; i++) - { - if (commands[i].cmd) - { - switch (commands[i].cmd) - { + for (let i = 0; i < commands.length; i++) { + if (commands[i].cmd) { + switch (commands[i].cmd) { case '(': { level++; @@ -190,8 +177,7 @@ class AdvancedFilter { } default: { - if (level > 0) - { + if (level > 0) { subcommands.push(commands[i]); commands.splice(i, 1); i--; @@ -201,8 +187,7 @@ class AdvancedFilter { } } } - if (start !== -1) - { + if (start !== -1) { this._processSubCommands(subcommands); if (subcommands.length === 1) commands.splice(start, 0, subcommands[0]); @@ -213,22 +198,18 @@ class AdvancedFilter { this._processLogicalOperators(commands); } - _processConditions(commands) - { - for (let i = 0; i < commands.length; i++) - { - if (!commands[i].string && commands[i].cmd) - { - switch (commands[i].cmd) - { + _processConditions(commands) { + for (let i = 0; i < commands.length; i++) { + if (!commands[i].string && commands[i].cmd) { + switch (commands[i].cmd) { case '=': case '==': case '===': { - const field = commands[i-1].cmd; - const str = commands[i+1].cmd; - commands[i] = {'customFields._id':this._fieldNameToId(field), 'customFields.value':str}; - commands.splice(i-1, 1); + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': str }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -237,10 +218,10 @@ class AdvancedFilter { case '!=': case '!==': { - const field = commands[i-1].cmd; - const str = commands[i+1].cmd; - commands[i] = {'customFields._id':this._fieldNameToId(field), 'customFields.value': { $not: str }}; - commands.splice(i-1, 1); + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $not: str } }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -251,10 +232,10 @@ class AdvancedFilter { case 'Gt': case 'GT': { - const field = commands[i-1].cmd; - const str = commands[i+1].cmd; - commands[i] = {'customFields._id':this._fieldNameToId(field), 'customFields.value': { $gt: str } }; - commands.splice(i-1, 1); + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gt: str } }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -266,10 +247,10 @@ class AdvancedFilter { case 'Gte': case 'GTE': { - const field = commands[i-1].cmd; - const str = commands[i+1].cmd; - commands[i] = {'customFields._id':this._fieldNameToId(field), 'customFields.value': { $gte: str } }; - commands.splice(i-1, 1); + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gte: str } }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -280,10 +261,10 @@ class AdvancedFilter { case 'Lt': case 'LT': { - const field = commands[i-1].cmd; - const str = commands[i+1].cmd; - commands[i] = {'customFields._id':this._fieldNameToId(field), 'customFields.value': { $lt: str } }; - commands.splice(i-1, 1); + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lt: str } }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -295,10 +276,10 @@ class AdvancedFilter { case 'Lte': case 'LTE': { - const field = commands[i-1].cmd; - const str = commands[i+1].cmd; - commands[i] = {'customFields._id':this._fieldNameToId(field), 'customFields.value': { $lte: str } }; - commands.splice(i-1, 1); + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lte: str } }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -310,24 +291,20 @@ class AdvancedFilter { } } - _processLogicalOperators(commands) - { - for (let i = 0; i < commands.length; i++) - { - if (!commands[i].string && commands[i].cmd) - { - switch (commands[i].cmd) - { + _processLogicalOperators(commands) { + for (let i = 0; i < commands.length; i++) { + if (!commands[i].string && commands[i].cmd) { + switch (commands[i].cmd) { case 'or': case 'Or': case 'OR': case '|': case '||': { - const op1 = commands[i-1]; - const op2 = commands[i+1]; - commands[i] = {$or: [op1, op2]}; - commands.splice(i-1, 1); + const op1 = commands[i - 1]; + const op2 = commands[i + 1]; + commands[i] = { $or: [op1, op2] }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -339,10 +316,10 @@ class AdvancedFilter { case '&': case '&&': { - const op1 = commands[i-1]; - const op2 = commands[i+1]; - commands[i] = {$and: [op1, op2]}; - commands.splice(i-1, 1); + const op1 = commands[i - 1]; + const op2 = commands[i + 1]; + commands[i] = { $and: [op1, op2] }; + commands.splice(i - 1, 1); commands.splice(i, 1); //changed = true; i--; @@ -354,9 +331,9 @@ class AdvancedFilter { case 'NOT': case '!': { - const op1 = commands[i+1]; - commands[i] = {$not: op1}; - commands.splice(i+1, 1); + const op1 = commands[i + 1]; + commands[i] = { $not: op1 }; + commands.splice(i + 1, 1); //changed = true; i--; break; @@ -412,12 +389,10 @@ Filter = { this._fields.forEach((fieldName) => { const filter = this[fieldName]; if (filter._isActive()) { - if (filter.subField !== '') - { + if (filter.subField !== '') { filterSelector[`${fieldName}.${filter.subField}`] = filter._getMongoSelector(); } - else - { + else { filterSelector[fieldName] = filter._getMongoSelector(); } emptySelector[fieldName] = filter._getEmptySelector(); @@ -427,7 +402,7 @@ Filter = { } }); - const exceptionsSelector = {_id: {$in: this._exceptions}}; + const exceptionsSelector = { _id: { $in: this._exceptions } }; this._exceptionsDep.depend(); const selectors = [exceptionsSelector]; @@ -438,7 +413,7 @@ Filter = { if (includeEmptySelectors) selectors.push(emptySelector); if (this.advanced._isActive()) selectors.push(this.advanced._getMongoSelector()); - return {$or: selectors}; + return { $or: selectors }; }, mongoSelector(additionalSelector) { @@ -446,7 +421,7 @@ Filter = { if (_.isUndefined(additionalSelector)) return filterSelector; else - return {$and: [filterSelector, additionalSelector]}; + return { $and: [filterSelector, additionalSelector] }; }, reset() { diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index df284bdb..9af3544e 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -28,10 +28,10 @@ "activities": "Aktivitäten", "activity": "Aktivität", "activity-added": "hat %s zu %s hinzugefügt", - "activity-archived": "%s in den Papierkorb verschoben", + "activity-archived": "hat %s in den Papierkorb verschoben", "activity-attached": "hat %s an %s angehängt", "activity-created": "hat %s erstellt", - "activity-customfield-created": "Benutzerdefiniertes Feld erstellen %s", + "activity-customfield-created": "hat das benutzerdefinierte Feld %s erstellt", "activity-excluded": "hat %s von %s ausgeschlossen", "activity-imported": "hat %s in %s von %s importiert", "activity-imported-board": "hat %s von %s importiert", @@ -184,7 +184,7 @@ "custom-field-dropdown-options-placeholder": "Drücken Sie die Eingabetaste, um weitere Optionen hinzuzufügen", "custom-field-dropdown-unknown": "(unbekannt)", "custom-field-number": "Zahl", - "custom-field-text": "Test", + "custom-field-text": "Text", "custom-fields": "Benutzerdefinierte Felder", "date": "Datum", "decline": "Ablehnen", @@ -378,7 +378,7 @@ "starred-boards-description": "Markierte Boards erscheinen oben in ihrer Boardliste.", "subscribe": "Abonnieren", "team": "Team", - "this-board": "dieses Board", + "this-board": "diesem Board", "this-card": "diese Karte", "spent-time-hours": "Aufgewendete Zeit (Stunden)", "overtime-hours": "Mehrarbeit (Stunden)", diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index 41d3e81e..989be015 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -3,17 +3,17 @@ "act-activity-notify": "[Wekan] Notificação de Atividade", "act-addAttachment": "anexo __attachment__ de __card__", "act-addChecklist": "added checklist __checklist__ no __card__", - "act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__", + "act-addChecklistItem": "adicionado __checklistitem__ para a lista de checagem __checklist__ em __card__", "act-addComment": "comentou em __card__: __comment__", "act-createBoard": "criou __board__", "act-createCard": "__card__ adicionado à __list__", - "act-createCustomField": "created custom field __customField__", + "act-createCustomField": "criado campo customizado __customField__", "act-createList": "__list__ adicionada à __board__", "act-addBoardMember": "__member__ adicionado à __board__", - "act-archivedBoard": "__board__ moved to Recycle Bin", - "act-archivedCard": "__card__ moved to Recycle Bin", - "act-archivedList": "__list__ moved to Recycle Bin", - "act-archivedSwimlane": "__swimlane__ moved to Recycle Bin", + "act-archivedBoard": "__board__ movido para a lixeira", + "act-archivedCard": "__card__ movido para a lixeira", + "act-archivedList": "__list__ movido para a lixeira", + "act-archivedSwimlane": "__swimlane__ movido para a lixeira", "act-importBoard": "__board__ importado", "act-importCard": "__card__ importado", "act-importList": "__list__ importada", @@ -28,10 +28,10 @@ "activities": "Atividades", "activity": "Atividade", "activity-added": "adicionou %s a %s", - "activity-archived": "%s moved to Recycle Bin", + "activity-archived": "%s movido para a lixeira", "activity-attached": "anexou %s a %s", "activity-created": "criou %s", - "activity-customfield-created": "created custom field %s", + "activity-customfield-created": "criado campo customizado %s", "activity-excluded": "excluiu %s de %s", "activity-imported": "importado %s em %s de %s", "activity-imported-board": "importado %s de %s", @@ -47,7 +47,7 @@ "add-attachment": "Adicionar Anexos", "add-board": "Adicionar Quadro", "add-card": "Adicionar Cartão", - "add-swimlane": "Add Swimlane", + "add-swimlane": "Adicionar Swimlane", "add-checklist": "Adicionar Checklist", "add-checklist-item": "Adicionar um item à lista de verificação", "add-cover": "Adicionar Capa", @@ -66,19 +66,19 @@ "and-n-other-card_plural": "E __count__ outros cartões", "apply": "Aplicar", "app-is-offline": "O Wekan está carregando, por favor espere. Recarregar a página irá causar perda de dado. Se o Wekan não carregar por favor verifique se o servidor Wekan não está parado.", - "archive": "Move to Recycle Bin", - "archive-all": "Move All to Recycle Bin", - "archive-board": "Move Board to Recycle Bin", - "archive-card": "Move Card to Recycle Bin", - "archive-list": "Move List to Recycle Bin", - "archive-swimlane": "Move Swimlane to Recycle Bin", - "archive-selection": "Move selection to Recycle Bin", - "archiveBoardPopup-title": "Move Board to Recycle Bin?", - "archived-items": "Recycle Bin", - "archived-boards": "Boards in Recycle Bin", + "archive": "Mover para a lixeira", + "archive-all": "Mover tudo para a lixeira", + "archive-board": "Mover quadro para a lixeira", + "archive-card": "Mover cartão para a lixeira", + "archive-list": "Mover lista para a lixeira", + "archive-swimlane": "Mover Swimlane para a lixeira", + "archive-selection": "Mover seleção para a lixeira", + "archiveBoardPopup-title": "Mover o quadro para a lixeira?", + "archived-items": "Lixeira", + "archived-boards": "Quadros na lixeira", "restore-board": "Restaurar Quadro", - "no-archived-boards": "No Boards in Recycle Bin.", - "archives": "Recycle Bin", + "no-archived-boards": "Não há quadros na lixeira", + "archives": "Lixeira", "assign-member": "Atribuir Membro", "attached": "anexado", "attachment": "Anexo", @@ -104,16 +104,16 @@ "board-view-lists": "Listas", "bucket-example": "\"Bucket List\", por exemplo", "cancel": "Cancelar", - "card-archived": "This card is moved to Recycle Bin.", + "card-archived": "Este cartão foi movido para a lixeira", "card-comments-title": "Este cartão possui %s comentários.", "card-delete-notice": "A exclusão será permanente. Você perderá todas as ações associadas a este cartão.", "card-delete-pop": "Todas as ações serão removidas da lista de Atividades e vocês não poderá re-abrir o cartão. Não há como desfazer.", - "card-delete-suggest-archive": "You can move a card Recycle Bin to remove it from the board and preserve the activity.", + "card-delete-suggest-archive": "Você pode mover um cartão para fora da lixeira e movê-lo para o quadro e preservar a atividade.", "card-due": "Data fim", "card-due-on": "Finaliza em", "card-spent": "Tempo Gasto", "card-edit-attachments": "Editar anexos", - "card-edit-custom-fields": "Edit custom fields", + "card-edit-custom-fields": "Editar campos customizados", "card-edit-labels": "Editar etiquetas", "card-edit-members": "Editar membros", "card-labels-title": "Alterar etiquetas do cartão.", @@ -121,8 +121,8 @@ "card-start": "Data início", "card-start-on": "Começa em", "cardAttachmentsPopup-title": "Anexar a partir de", - "cardCustomField-datePopup-title": "Change date", - "cardCustomFieldsPopup-title": "Edit custom fields", + "cardCustomField-datePopup-title": "Mudar data", + "cardCustomFieldsPopup-title": "Editar campos customizados", "cardDeletePopup-title": "Excluir Cartão?", "cardDetailsActionsPopup-title": "Ações do cartão", "cardLabelsPopup-title": "Etiquetas", @@ -146,7 +146,7 @@ "clipboard": "Área de Transferência ou arraste e solte", "close": "Fechar", "close-board": "Fechar Quadro", - "close-board-pop": "You will be able to restore the board by clicking the “Recycle Bin” button from the home header.", + "close-board-pop": "Você poderá restaurar o quadro clicando no botão lixeira no cabeçalho da página inicial", "color-black": "preto", "color-blue": "azul", "color-green": "verde", @@ -172,25 +172,25 @@ "createBoardPopup-title": "Criar Quadro", "chooseBoardSourcePopup-title": "Importar quadro", "createLabelPopup-title": "Criar Etiqueta", - "createCustomField": "Create Field", - "createCustomFieldPopup-title": "Create Field", + "createCustomField": "Criar campo", + "createCustomFieldPopup-title": "Criar campo", "current": "atual", - "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.", - "custom-field-checkbox": "Checkbox", + "custom-field-delete-pop": "Não existe desfazer. Isso irá remover o campo customizado de todos os cartões e destruir seu histórico", + "custom-field-checkbox": "Caixa de seleção", "custom-field-date": "Data", - "custom-field-dropdown": "Dropdown List", - "custom-field-dropdown-none": "(none)", - "custom-field-dropdown-options": "List Options", - "custom-field-dropdown-options-placeholder": "Press enter to add more options", - "custom-field-dropdown-unknown": "(unknown)", - "custom-field-number": "Number", - "custom-field-text": "Text", - "custom-fields": "Custom Fields", + "custom-field-dropdown": "Lista suspensa", + "custom-field-dropdown-none": "(nada)", + "custom-field-dropdown-options": "Lista de opções", + "custom-field-dropdown-options-placeholder": "Pressione enter para adicionar mais opções", + "custom-field-dropdown-unknown": "(desconhecido)", + "custom-field-number": "Número", + "custom-field-text": "Texto", + "custom-fields": "Campos customizados", "date": "Data", "decline": "Rejeitar", "default-avatar": "Avatar padrão", "delete": "Excluir", - "deleteCustomFieldPopup-title": "Delete Custom Field?", + "deleteCustomFieldPopup-title": "Deletar campo customizado?", "deleteLabelPopup-title": "Excluir Etiqueta?", "description": "Descrição", "disambiguateMultiLabelPopup-title": "Desambiguar ações de etiquetas", @@ -205,7 +205,7 @@ "soft-wip-limit": "Limite de WIP", "editCardStartDatePopup-title": "Altera data de início", "editCardDueDatePopup-title": "Altera data fim", - "editCustomFieldPopup-title": "Edit Field", + "editCustomFieldPopup-title": "Editar campo", "editCardSpentTimePopup-title": "Editar tempo gasto", "editLabelPopup-title": "Alterar Etiqueta", "editNotificationPopup-title": "Editar Notificações", @@ -242,12 +242,12 @@ "filter-clear": "Limpar filtro", "filter-no-label": "Sem labels", "filter-no-member": "Sem membros", - "filter-no-custom-fields": "No Custom Fields", + "filter-no-custom-fields": "Não há campos customizados", "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", - "advanced-filter-label": "Advanced Filter", - "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. Also you can combine multiple conditions. For Example: F1 == V1 || F1 = V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 and ( F2 == V2 || F2 == V3 )", + "advanced-filter-label": "Filtro avançado", + "advanced-filter-description": "Um Filtro Avançado permite escrever uma string contendo os seguintes operadores: == != <= >= && || () Um espaço é utilizado como separador entre os operadores. Você pode filtrar todos os campos customizados digitando seus nomes e valores. Por exemplo: campo1 == valor1. Nota: se campos ou valores contém espaços, você precisa encapsular eles em aspas simples. Por exemplo: 'campo 1' == 'valor 1'. Você também pode combinar múltiplas condições. Por exemplo: F1 == V1 || F1 == V2. Normalmente todos os operadores são interpretados da esquerda para a direita. Você pode mudar a ordem ao incluir parênteses. Por exemplo: F1 == V1 e (F2 == V2 || F2 == V3)", "fullname": "Nome Completo", "header-logo-title": "Voltar para a lista de quadros.", "hide-system-messages": "Esconde mensagens de sistema", @@ -287,17 +287,17 @@ "leave-board-pop": "Tem a certeza de que pretende sair de __boardTitle__? Você será removido de todos os cartões neste quadro.", "leaveBoardPopup-title": "Sair do Quadro ?", "link-card": "Vincular a este cartão", - "list-archive-cards": "Move all cards in this list to Recycle Bin", - "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Recycle Bin and bring them back to the board, click “Menu” > “Recycle Bin”.", + "list-archive-cards": "Mover todos os cartões nesta lista para a lixeira", + "list-archive-cards-pop": "Isso irá remover todos os cartões nesta lista do quadro. Para visualizar cartões na lixeira e trazê-los de volta ao quadro, clique em \"Menu\" > \"Lixeira\".", "list-move-cards": "Mover todos os cartões desta lista", "list-select-cards": "Selecionar todos os cartões nesta lista", "listActionPopup-title": "Listar Ações", - "swimlaneActionPopup-title": "Swimlane Actions", + "swimlaneActionPopup-title": "Ações de Swimlane", "listImportCardPopup-title": "Importe um cartão do Trello", "listMorePopup-title": "Mais", "link-list": "Vincular a esta lista", "list-delete-pop": "Todas as ações serão removidas da lista de atividades e você não poderá recuperar a lista. Não há como desfazer.", - "list-delete-suggest-archive": "You can move a list to Recycle Bin to remove it from the board and preserve the activity.", + "list-delete-suggest-archive": "Você pode mover a lista para a lixeira para removê-la do quadro e preservar a atividade.", "lists": "Listas", "swimlanes": "Swimlanes", "log-out": "Sair", @@ -317,9 +317,9 @@ "muted-info": "Você nunca receberá qualquer notificação desse board", "my-boards": "Meus Quadros", "name": "Nome", - "no-archived-cards": "No cards in Recycle Bin.", - "no-archived-lists": "No lists in Recycle Bin.", - "no-archived-swimlanes": "No swimlanes in Recycle Bin.", + "no-archived-cards": "Não há cartões na lixeira", + "no-archived-lists": "Não há listas na lixeira", + "no-archived-swimlanes": "Não há swimlanes na lixeira", "no-results": "Nenhum resultado.", "normal": "Normal", "normal-desc": "Pode ver e editar cartões. Não pode alterar configurações.", @@ -384,12 +384,12 @@ "overtime-hours": "Tempo extras (Horas)", "overtime": "Tempo extras", "has-overtime-cards": "Tem cartões de horas extras", - "has-spenttime-cards": "Has spent time cards", + "has-spenttime-cards": "Gastou cartões de tempo", "time": "Tempo", "title": "Título", "tracking": "Tracking", "tracking-info": "Você será notificado se houver qualquer alteração em cards em que você é o criador ou membro", - "type": "Type", + "type": "Tipo", "unassign-member": "Membro não associado", "unsaved-description": "Você possui uma descrição não salva", "unwatch": "Deixar de observar", @@ -398,12 +398,12 @@ "uploaded-avatar": "Avatar carregado", "username": "Nome de usuário", "view-it": "Visualizar", - "warn-list-archived": "warning: this card is in an list at Recycle Bin", + "warn-list-archived": "Aviso: este cartão está em uma lista na lixeira", "watch": "Observar", "watching": "Observando", "watching-info": "Você será notificado em qualquer alteração desse board", "welcome-board": "Board de Boas Vindas", - "welcome-swimlane": "Milestone 1", + "welcome-swimlane": "Marco 1", "welcome-list1": "Básico", "welcome-list2": "Avançado", "what-to-do": "O que você gostaria de fazer?", @@ -454,19 +454,19 @@ "hours": "horas", "minutes": "minutos", "seconds": "segundos", - "show-field-on-card": "Show this field on card", + "show-field-on-card": "Mostrar este campo no cartão", "yes": "Sim", "no": "Não", "accounts": "Contas", "accounts-allowEmailChange": "Permitir Mudança de Email", - "accounts-allowUserNameChange": "Allow Username Change", + "accounts-allowUserNameChange": "Permitir alteração de nome de usuário", "createdAt": "Criado em", "verified": "Verificado", "active": "Ativo", - "card-received": "Received", - "card-received-on": "Received on", - "card-end": "End", - "card-end-on": "Ends on", - "editCardReceivedDatePopup-title": "Change received date", - "editCardEndDatePopup-title": "Change end date" + "card-received": "Recebido", + "card-received-on": "Recebido em", + "card-end": "Fim", + "card-end-on": "Termina em", + "editCardReceivedDatePopup-title": "Modificar data de recebimento", + "editCardEndDatePopup-title": "Mudar data de fim" }
\ No newline at end of file diff --git a/models/cards.js b/models/cards.js index c77cd682..6a33fa1a 100644 --- a/models/cards.js +++ b/models/cards.js @@ -220,6 +220,7 @@ Cards.helpers({ }).fetch(); // match right definition to each field + if (!this.customFields) return []; return this.customFields.map((customField) => { return { _id: customField._id, diff --git a/package.json b/package.json index 26283257..06b831da 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "1.00.0", + "version": "1.01.0", "description": "The open-source Trello-like kanban", "private": true, "scripts": { diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index edbb3d2a..eeba4409 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = ( appTitle = (defaultText = "Wekan"), # The name of the app as it is displayed to the user. - appVersion = 85, + appVersion = 86, # Increment this for every release. - appMarketingVersion = (defaultText = "1.00.0~2018-05-21"), + appMarketingVersion = (defaultText = "1.01.0~2018-05-23"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0, |