summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2018-08-22 11:01:06 +0300
committerLauri Ojansivu <x@xet7.org>2018-08-22 11:01:06 +0300
commit676140f5c8887a5f710779150a55d5c68f63a8a0 (patch)
treec0f9d1d8711daf8a55dc5205b9f90cc1bacab43c
parentb186561355792c13c3315859164a0bf9cde81494 (diff)
parent20757efc7e45d95681fff62c3064620d53abdfbc (diff)
downloadwekan-676140f5c8887a5f710779150a55d5c68f63a8a0.tar.gz
wekan-676140f5c8887a5f710779150a55d5c68f63a8a0.tar.bz2
wekan-676140f5c8887a5f710779150a55d5c68f63a8a0.zip
Merge branch 'devel'
-rw-r--r--CHANGELOG.md12
-rw-r--r--client/components/cards/minicard.jade9
-rw-r--r--client/components/lists/listBody.jade2
-rw-r--r--client/components/lists/listBody.js13
-rw-r--r--client/components/main/layouts.jade1
-rw-r--r--client/components/settings/settingBody.jade34
-rw-r--r--client/components/settings/settingBody.js14
-rw-r--r--i18n/es.i18n.json14
-rw-r--r--i18n/fr.i18n.json26
-rw-r--r--models/cards.js8
-rw-r--r--package.json2
-rw-r--r--sandstorm-pkgdef.capnp6
12 files changed, 95 insertions, 46 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d0cc802c..e9f31501 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,15 @@
+# v1.34 2018-08-22 Wekan release
+
+This release fixes the following bugs:
+
+- [Restored SMTP settings at Admin Panel, and disabled showing password](https://github.com/wekan/wekan/issues/1790);
+- [Move color labels on minicard to bottom of minicard](https://github.com/wekan/wekan/issues/1842);
+- [Fix and improve linked cards](https://github.com/wekan/wekan/pull/1849);
+- [Allow Sandstorm to serve Wekan HTTP API](https://github.com/wekan/wekan/pull/1851);
+- [Add Favicon for pinned tab on Safari browser](https://github.com/wekan/wekan/issues/1795).
+
+Thanks to GitHub users andresmanelli, ocdtrekkie, therampagerado, woodyart and xet7 for their contributions.
+
# v1.33 2018-08-16 Wekan release
This release fixes the following bugs:
diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade
index 37f537db..738cb598 100644
--- a/client/components/cards/minicard.jade
+++ b/client/components/cards/minicard.jade
@@ -4,10 +4,6 @@ template(name="minicard")
class="{{#if isLinkedBoard}}linked-board{{/if}}")
if cover
.minicard-cover(style="background-image: url('{{cover.url}}');")
- if labels
- .minicard-labels
- each labels
- .minicard-label(class="card-label-{{color}}" title="{{name}}")
.minicard-title
if $eq 'prefix-with-full-path' currentBoard.presentParentTask
.parent-prefix
@@ -80,3 +76,8 @@ template(name="minicard")
.badge(class="{{#if checklistFinished}}is-finished{{/if}}")
span.badge-icon.fa.fa-check-square-o
span.badge-text.check-list-text {{checklistFinishedCount}}/{{checklistItemCount}}
+
+ if labels
+ .minicard-labels
+ each labels
+ .minicard-label(class="card-label-{{color}}" title="{{name}}")
diff --git a/client/components/lists/listBody.jade b/client/components/lists/listBody.jade
index 8069717e..f2b3e941 100644
--- a/client/components/lists/listBody.jade
+++ b/client/components/lists/listBody.jade
@@ -70,7 +70,7 @@ template(name="linkCardPopup")
label {{_ 'cards'}}:
select.js-select-cards
each cards
- option(value="{{_id}}") {{title}}
+ option(value="{{getId}}") {{getTitle}}
.edit-controls.clearfix
input.primary.confirm.js-done(type="button" value="{{_ 'link'}}")
diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js
index 83592a64..896bf178 100644
--- a/client/components/lists/listBody.js
+++ b/client/components/lists/listBody.js
@@ -333,21 +333,22 @@ BlazeComponent.extendComponent({
},
cards() {
+ const ownCardsIds = this.board.cards().map((card) => { return card.linkedId || card._id; });
return Cards.find({
boardId: this.selectedBoardId.get(),
swimlaneId: this.selectedSwimlaneId.get(),
listId: this.selectedListId.get(),
archived: false,
- linkedId: null,
- _id: {$nin: this.board.cards().map((card) => { return card.linkedId || card._id; })},
+ linkedId: {$nin: ownCardsIds},
+ _id: {$nin: ownCardsIds},
});
},
events() {
return [{
'change .js-select-boards'(evt) {
+ subManager.subscribe('board', $(evt.currentTarget).val());
this.selectedBoardId.set($(evt.currentTarget).val());
- subManager.subscribe('board', this.selectedBoardId.get());
},
'change .js-select-swimlanes'(evt) {
this.selectedSwimlaneId.set($(evt.currentTarget).val());
@@ -438,14 +439,14 @@ BlazeComponent.extendComponent({
results() {
const board = Boards.findOne(this.selectedBoardId.get());
- return board.searchCards(this.term.get(), true);
+ return board.searchCards(this.term.get(), false);
},
events() {
return [{
'change .js-select-boards'(evt) {
+ subManager.subscribe('board', $(evt.currentTarget).val());
this.selectedBoardId.set($(evt.currentTarget).val());
- subManager.subscribe('board', this.selectedBoardId.get());
},
'submit .js-search-term-form'(evt) {
evt.preventDefault();
@@ -461,7 +462,7 @@ BlazeComponent.extendComponent({
boardId: this.boardId,
sort: Lists.findOne(this.listId).cards().count(),
type: 'cardType-linkedCard',
- linkedId: card._id,
+ linkedId: card.linkedId || card._id,
});
Filter.addException(_id);
Popup.close();
diff --git a/client/components/main/layouts.jade b/client/components/main/layouts.jade
index 911f23f4..b0024b33 100644
--- a/client/components/main/layouts.jade
+++ b/client/components/main/layouts.jade
@@ -9,6 +9,7 @@ head
packages.
link(rel="shortcut icon" href="/wekan-favicon.png")
link(rel="apple-touch-icon" href="/wekan-favicon.png")
+ link(rel="mask-icon" href="/wekan-150.svg")
link(rel="manifest" href="/wekan-manifest.json")
template(name="userFormsLayout")
diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade
index 1832894c..dcf71f4d 100644
--- a/client/components/settings/settingBody.jade
+++ b/client/components/settings/settingBody.jade
@@ -55,6 +55,40 @@ template(name="general")
template(name='email')
ul#email-setting.setting-detail
+ li.smtp-form
+ .title {{_ 'smtp-host'}}
+ .description {{_ 'smtp-host-description'}}
+ .form-group
+ input.form-control#mail-server-host(type="text", placeholder="smtp.domain.com" value="{{currentSetting.mailServer.host}}")
+ li.smtp-form
+ .title {{_ 'smtp-port'}}
+ .description {{_ 'smtp-port-description'}}
+ .form-group
+ input.form-control#mail-server-port(type="text", placeholder="25" value="{{currentSetting.mailServer.port}}")
+ li.smtp-form
+ .title {{_ 'smtp-username'}}
+ .form-group
+ input.form-control#mail-server-username(type="text", placeholder="{{_ 'username'}}" value="{{currentSetting.mailServer.username}}")
+ li.smtp-form
+ .title {{_ 'smtp-password'}}
+ .form-group
+ input.form-control#mail-server-password(type="text", placeholder="{{_ 'password'}}" value="")
+ li.smtp-form
+ .title {{_ 'smtp-tls'}}
+ .form-group
+ a.flex.js-toggle-tls
+ .materialCheckBox#mail-server-tls(class="{{#if currentSetting.mailServer.enableTLS}}is-checked{{/if}}")
+
+ span {{_ 'smtp-tls-description'}}
+
+ li.smtp-form
+ .title {{_ 'send-from'}}
+ .form-group
+ input.form-control#mail-server-from(type="email", placeholder="no-reply@domain.com" value="{{currentSetting.mailServer.from}}")
+
+ li
+ button.js-save.primary {{_ 'save'}}
+
li
button.js-send-smtp-test-email.primary {{_ 'send-smtp-test'}}
diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js
index de96c100..7230d893 100644
--- a/client/components/settings/settingBody.js
+++ b/client/components/settings/settingBody.js
@@ -20,7 +20,7 @@ BlazeComponent.extendComponent({
setLoading(w) {
this.loading.set(w);
},
- /*
+
checkField(selector) {
const value = $(selector).val();
if (!value || value.trim() === '') {
@@ -30,7 +30,7 @@ BlazeComponent.extendComponent({
return value;
}
},
-*/
+
currentSetting() {
return Settings.findOne();
},
@@ -55,11 +55,9 @@ BlazeComponent.extendComponent({
$('.invite-people').slideDown();
}
},
- /*
toggleTLS() {
$('#mail-server-tls').toggleClass('is-checked');
},
-*/
switchMenu(event) {
const target = $(event.target);
if (!target.hasClass('active')) {
@@ -101,13 +99,11 @@ BlazeComponent.extendComponent({
// if (!err) {
// TODO - show more info to user
// }
-
this.setLoading(false);
});
}
},
- /*
saveMailServerInfo() {
this.setLoading(true);
$('li').removeClass('has-error');
@@ -132,7 +128,7 @@ BlazeComponent.extendComponent({
}
},
-*/
+
sendSMTPTestEmail() {
Meteor.call('sendSMTPTestEmail', (err, ret) => {
if (!err && ret) { /* eslint-disable no-console */
@@ -152,15 +148,11 @@ BlazeComponent.extendComponent({
events() {
return [{
'click a.js-toggle-registration': this.toggleRegistration,
- /*
'click a.js-toggle-tls': this.toggleTLS,
-*/
'click a.js-setting-menu': this.switchMenu,
'click a.js-toggle-board-choose': this.checkBoard,
'click button.js-email-invite': this.inviteThroughEmail,
- /*
'click button.js-save': this.saveMailServerInfo,
-*/
'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
}];
},
diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json
index d2f42ed3..6088cab2 100644
--- a/i18n/es.i18n.json
+++ b/i18n/es.i18n.json
@@ -109,7 +109,7 @@
"bucket-example": "Como “Cosas por hacer” por ejemplo",
"cancel": "Cancelar",
"card-archived": "Esta tarjeta se ha enviado a la papelera de reciclaje.",
- "board-archived": "This board is moved to Recycle Bin.",
+ "board-archived": "Este tablero se ha enviado a la papelera de reciclaje.",
"card-comments-title": "Esta tarjeta tiene %s comentarios.",
"card-delete-notice": "la eliminación es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
"card-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
@@ -136,9 +136,9 @@
"cards": "Tarjetas",
"cards-count": "Tarjetas",
"casSignIn": "Iniciar sesión con CAS",
- "cardType-card": "Card",
- "cardType-linkedCard": "Linked Card",
- "cardType-linkedBoard": "Linked Board",
+ "cardType-card": "Tarjeta",
+ "cardType-linkedCard": "Tarjeta enlazada",
+ "cardType-linkedBoard": "Tablero enlazado",
"change": "Cambiar",
"change-avatar": "Cambiar el avatar",
"change-password": "Cambiar la contraseña",
@@ -175,8 +175,8 @@
"confirm-subtask-delete-dialog": "¿Seguro que quieres eliminar la subtarea?",
"confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
- "linkCardPopup-title": "Link Card",
- "searchCardPopup-title": "Search Card",
+ "linkCardPopup-title": "Enlazar tarjeta",
+ "searchCardPopup-title": "Buscar tarjeta",
"copyCardPopup-title": "Copiar la tarjeta",
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
@@ -267,7 +267,7 @@
"headerBarCreateBoardPopup-title": "Crear tablero",
"home": "Inicio",
"import": "Importar",
- "link": "Link",
+ "link": "Enlace",
"import-board": "importar un tablero",
"import-board-c": "Importar un tablero",
"import-board-title-trello": "Importar un tablero desde Trello",
diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json
index 0468a7af..74b6034c 100644
--- a/i18n/fr.i18n.json
+++ b/i18n/fr.i18n.json
@@ -109,7 +109,7 @@
"bucket-example": "Comme « todo list » par exemple",
"cancel": "Annuler",
"card-archived": "Cette carte est déplacée vers la corbeille.",
- "board-archived": "This board is moved to Recycle Bin.",
+ "board-archived": "Ce tableau a été déplacé dans la Corbeille.",
"card-comments-title": "Cette carte a %s commentaires.",
"card-delete-notice": "La suppression est permanente. Vous perdrez toutes les actions associées à cette carte.",
"card-delete-pop": "Toutes les actions vont être supprimées du suivi d'activités et vous ne pourrez plus utiliser cette carte. Cette action est irréversible.",
@@ -136,9 +136,9 @@
"cards": "Cartes",
"cards-count": "Cartes",
"casSignIn": "Se connecter avec CAS",
- "cardType-card": "Card",
- "cardType-linkedCard": "Linked Card",
- "cardType-linkedBoard": "Linked Board",
+ "cardType-card": "Carte",
+ "cardType-linkedCard": "Carte liée",
+ "cardType-linkedBoard": "Tableau lié",
"change": "Modifier",
"change-avatar": "Modifier l'avatar",
"change-password": "Modifier le mot de passe",
@@ -175,8 +175,8 @@
"confirm-subtask-delete-dialog": "Êtes-vous sûr de vouloir supprimer la sous-tâche ?",
"confirm-checklist-delete-dialog": "Êtes-vous sûr de vouloir supprimer la checklist ?",
"copy-card-link-to-clipboard": "Copier le lien vers la carte dans le presse-papier",
- "linkCardPopup-title": "Link Card",
- "searchCardPopup-title": "Search Card",
+ "linkCardPopup-title": "Lier une Carte",
+ "searchCardPopup-title": "Chercher une Carte",
"copyCardPopup-title": "Copier la carte",
"copyChecklistToManyCardsPopup-title": "Copier le modèle de checklist vers plusieurs cartes",
"copyChecklistToManyCardsPopup-instructions": "Titres et descriptions des cartes de destination dans ce format JSON",
@@ -267,7 +267,7 @@
"headerBarCreateBoardPopup-title": "Créer un tableau",
"home": "Accueil",
"import": "Importer",
- "link": "Link",
+ "link": "Lien",
"import-board": "importer un tableau",
"import-board-c": "Importer un tableau",
"import-board-title-trello": "Importer le tableau depuis Trello",
@@ -463,7 +463,7 @@
"OS_Platform": "OS Plate-forme",
"OS_Release": "OS Version",
"OS_Totalmem": "OS Mémoire totale",
- "OS_Type": "OS Type",
+ "OS_Type": "Type d'OS",
"OS_Uptime": "OS Durée de fonctionnement",
"hours": "heures",
"minutes": "minutes",
@@ -473,7 +473,7 @@
"no": "Non",
"accounts": "Comptes",
"accounts-allowEmailChange": "Autoriser le changement d'adresse mail",
- "accounts-allowUserNameChange": "Permettre la modification de l'identifiant",
+ "accounts-allowUserNameChange": "Autoriser le changement d'identifiant",
"createdAt": "Créé le",
"verified": "Vérifié",
"active": "Actif",
@@ -485,7 +485,7 @@
"editCardEndDatePopup-title": "Changer la date de fin",
"assigned-by": "Assigné par",
"requested-by": "Demandé par",
- "board-delete-notice": "La suppression est définitive. Vous perdrez toutes vos listes, cartes et actions associées à ce tableau.",
+ "board-delete-notice": "La suppression est définitive. Vous perdrez toutes les listes, cartes et actions associées à ce tableau.",
"delete-board-confirm-popup": "Toutes les listes, cartes, étiquettes et activités seront supprimées et vous ne pourrez pas retrouver le contenu du tableau. Il n'y a pas d'annulation possible.",
"boardDeletePopup-title": "Supprimer le tableau ?",
"delete-board": "Supprimer le tableau",
@@ -497,11 +497,11 @@
"show-subtasks-field": "Les cartes peuvent avoir des sous-tâches",
"deposit-subtasks-board": "Déposer des sous-tâches dans ce tableau :",
"deposit-subtasks-list": "Liste de destination pour les sous-tâches déposées ici :",
- "show-parent-in-minicard": "Voir le parent dans la mini-carte :",
+ "show-parent-in-minicard": "Voir la carte parente dans la mini-carte :",
"prefix-with-full-path": "Préfixer avec le chemin complet",
"prefix-with-parent": "Préfixer avec le parent",
- "subtext-with-full-path": "Sous-texte avec le chemin complet",
- "subtext-with-parent": "Sous-texte avec le parent",
+ "subtext-with-full-path": "Sous-titre avec le chemin complet",
+ "subtext-with-parent": "Sous-titre avec le parent",
"change-card-parent": "Changer le parent de la carte",
"parent-card": "Carte parente",
"source-board": "Tableau source",
diff --git a/models/cards.js b/models/cards.js
index 21a7f2ad..302beddc 100644
--- a/models/cards.js
+++ b/models/cards.js
@@ -712,6 +712,14 @@ Cards.helpers({
}
},
+ getId() {
+ if (this.isLinked()) {
+ return this.linkedId;
+ } else {
+ return this._id;
+ }
+ },
+
getTitle() {
if (this.isLinkedCard()) {
const card = Cards.findOne({ _id: this.linkedId });
diff --git a/package.json b/package.json
index c3fc8d67..b39eacf6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "wekan",
- "version": "1.33.0",
+ "version": "1.34.0",
"description": "The open-source kanban",
"private": true,
"scripts": {
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index cc871287..d6a35cb5 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 = 118,
+ appVersion = 119,
# Increment this for every release.
- appMarketingVersion = (defaultText = "1.33.0~2018-08-16"),
+ appMarketingVersion = (defaultText = "1.34.0~2018-08-22"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
@@ -226,7 +226,7 @@ const pkgdef :Spk.PackageDefinition = (
verbPhrase = (defaultText = "removed from card"),
), ],
),
-
+ apiPath = "/api",
saveIdentityCaps = true,
),
);