Merge branch 'devel'

This commit is contained in:
Lauri Ojansivu 2018-08-22 11:01:06 +03:00
commit 676140f5c8
12 changed files with 95 additions and 46 deletions

View file

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

View file

@ -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}}")

View file

@ -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'}}")

View file

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

View file

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

View file

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

View file

@ -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,
}];
},

View file

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

View file

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

View file

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

View file

@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "1.33.0",
"version": "1.34.0",
"description": "The open-source kanban",
"private": true,
"scripts": {

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 = 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,
),
);