mirror of
https://github.com/wekan/wekan.git
synced 2026-11-05 15:45:01 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ee2156399 | ||
|
|
90cd26e78e | ||
|
|
4c9d10f7a7 | ||
|
|
a686a18809 | ||
|
|
c7ab0403a6 | ||
|
|
f90fb28483 | ||
|
|
fecb9cdb66 | ||
|
|
66df3cc2ee | ||
|
|
d9adce7b67 | ||
|
|
dfd5acea97 | ||
|
|
5411113544 | ||
|
|
d1eb6f2355 | ||
|
|
aed1e71094 | ||
|
|
46f6d1e989 | ||
|
|
e9c1b2b2c4 | ||
|
|
94f8fb2393 | ||
|
|
2055d916e9 | ||
|
|
70dbd1518d | ||
|
|
3db3a5bad9 | ||
|
|
c8b8fb83dc |
No files matched your search
@@ -1,5 +1,35 @@
|
||||
[Mac ChangeLog](https://github.com/wekan/wekan/wiki/Mac)
|
||||
|
||||
# v5.69 2021-10-28 WeKan ® release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Updated Docker base image to Ubuntu 21.10 Impish](https://github.com/wekan/wekan/commit/5411113544f040cab2df86234745e4846029660f).
|
||||
Thanks to Ubuntu developers.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix Docs: Only MAIL_URL and MAIL_FROM for email settings. Not Admin Panel anymore](https://github.com/wekan/wekan/commit/d9adce7b676b705da786eb44cd2c2c4dba120d30).
|
||||
Thanks to niklasdahlheimer.
|
||||
- [Popup fixes: Archive cards, upload attachements etc](https://github.com/wekan/wekan/pull/4101).
|
||||
Thanks to mfilser.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.68 2021-10-27 WeKan ® release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Labels are now drag/drop/sortable](https://github.com/wekan/wekan/pull/4084).
|
||||
Thanks to mfilser.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix labels desktop view add and delete](https://github.com/wekan/wekan/pull/4087).
|
||||
Thanks to mfilser.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.67 2021-10-27 WeKan ® release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM quay.io/wekan/ubuntu:hirsute-20210825
|
||||
FROM quay.io/wekan/ubuntu:impish-20211015
|
||||
LABEL maintainer="wekan"
|
||||
|
||||
# 2021-09-18:
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v5.67.0"
|
||||
appVersion: "v5.69.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -692,7 +692,7 @@ Template.cardDetailsActionsPopup.events({
|
||||
this.move(this.boardId, this.swimlaneId, this.listId, maxOrder + 1);
|
||||
},
|
||||
'click .js-archive': Popup.afterConfirm('cardArchive', function () {
|
||||
Popup.back();
|
||||
Popup.close();
|
||||
this.archive();
|
||||
Utils.goBoardId(this.boardId);
|
||||
}),
|
||||
@@ -701,7 +701,7 @@ Template.cardDetailsActionsPopup.events({
|
||||
const currentCard = this;
|
||||
const level = currentCard.findWatcher(Meteor.userId()) ? null : 'watching';
|
||||
Meteor.call('watch', 'card', currentCard._id, level, (err, ret) => {
|
||||
if (!err && ret) Popup.back();
|
||||
if (!err && ret) Popup.close();
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -1007,7 +1007,7 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
'click .js-submit'() {
|
||||
this.currentCard.setColor(this.currentColor.get());
|
||||
Popup.back();
|
||||
Popup.close();
|
||||
},
|
||||
'click .js-remove-color'() {
|
||||
this.currentCard.setColor(null);
|
||||
|
||||
@@ -27,9 +27,11 @@ template(name="deleteLabelPopup")
|
||||
template(name="cardLabelsPopup")
|
||||
ul.edit-labels-pop-over
|
||||
each board.labels
|
||||
li
|
||||
li.js-card-label-item
|
||||
a.card-label-edit-button.fa.fa-pencil.js-edit-label
|
||||
span.card-label.card-label-selectable.js-select-label(class="card-label-{{color}}"
|
||||
if isMiniScreenOrShowDesktopDragHandles
|
||||
span.fa.label-handle(class="fa-arrows" title="{{_ 'dragLabel'}}")
|
||||
span.card-label.card-label-selectable.js-select-label.card-label-wrapper(class="card-label-{{color}}"
|
||||
class="{{# if isLabelSelected ../_id }}active{{/if}}")
|
||||
+viewer
|
||||
= name
|
||||
|
||||
@@ -39,15 +39,58 @@ Template.createLabelPopup.helpers({
|
||||
},
|
||||
});
|
||||
|
||||
Template.cardLabelsPopup.events({
|
||||
'click .js-select-label'(event) {
|
||||
const card = Utils.getCurrentCard();
|
||||
const labelId = this._id;
|
||||
card.toggleLabel(labelId);
|
||||
event.preventDefault();
|
||||
BlazeComponent.extendComponent({
|
||||
onRendered() {
|
||||
const itemsSelector = 'li.js-card-label-item:not(.placeholder)';
|
||||
const $labels = this.$('.edit-labels-pop-over');
|
||||
|
||||
$labels.sortable({
|
||||
connectWith: '.edit-labels-pop-over',
|
||||
tolerance: 'pointer',
|
||||
appendTo: '.edit-labels-pop-over',
|
||||
helper: 'clone',
|
||||
distance: 7,
|
||||
items: itemsSelector,
|
||||
placeholder: 'card-label-wrapper placeholder',
|
||||
start(evt, ui) {
|
||||
ui.helper.css('z-index', 1000);
|
||||
ui.placeholder.height(ui.helper.height());
|
||||
EscapeActions.clickExecute(evt.target, 'inlinedForm');
|
||||
},
|
||||
stop(evt, ui) {
|
||||
const newLabelOrderOnlyIds = ui.item.parent().children().toArray().map(_element => Blaze.getData(_element)._id)
|
||||
const card = Blaze.getData(this);
|
||||
card.board().setNewLabelOrder(newLabelOrderOnlyIds);
|
||||
},
|
||||
});
|
||||
Utils.enableClickOnTouch(itemsSelector);
|
||||
|
||||
// Disable drag-dropping if the current user is not a board member or is comment only
|
||||
this.autorun(() => {
|
||||
if (Utils.isMiniScreenOrShowDesktopDragHandles()) {
|
||||
$labels.sortable({
|
||||
handle: '.label-handle',
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
'click .js-edit-label': Popup.open('editLabel'),
|
||||
'click .js-add-label': Popup.open('createLabel'),
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click .js-select-label'(event) {
|
||||
const card = Utils.getCurrentCard();
|
||||
const labelId = this.currentData()._id;
|
||||
card.toggleLabel(labelId);
|
||||
event.preventDefault();
|
||||
},
|
||||
'click .js-edit-label': Popup.open('editLabel'),
|
||||
'click .js-add-label': Popup.open('createLabel'),
|
||||
}
|
||||
];
|
||||
}
|
||||
}).register('cardLabelsPopup');
|
||||
|
||||
Template.cardLabelsPopup.events({
|
||||
});
|
||||
|
||||
Template.formLabel.events({
|
||||
|
||||
@@ -222,3 +222,9 @@
|
||||
&:hover
|
||||
background: #dbdbdb
|
||||
|
||||
ul.edit-labels-pop-over
|
||||
span.fa.label-handle
|
||||
padding-right: 10px;
|
||||
|
||||
span.fa.label-handle + .card-label
|
||||
max-width: 180px
|
||||
@@ -55,7 +55,7 @@ BlazeComponent.extendComponent({
|
||||
*/
|
||||
cardLabelsPopup(event) {
|
||||
if (this.find('.js-card-label:hover')) {
|
||||
Popup.open("cardLabels")(event, this.currentData());
|
||||
Popup.open("cardLabels")(event, {dataContextIfCurrentDataIsUndefined: this.currentData()});
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
+3
-3
@@ -32,9 +32,9 @@ window.Popup = new (class {
|
||||
}
|
||||
/** opens the popup
|
||||
* @param evt the current event
|
||||
* @param dataContextIfCurrentDataIsUndefined use this dataContext if this.currentData() is undefined
|
||||
* @param options options (dataContextIfCurrentDataIsUndefined use this dataContext if this.currentData() is undefined)
|
||||
*/
|
||||
return function(evt, dataContextIfCurrentDataIsUndefined) {
|
||||
return function(evt, options) {
|
||||
// If a popup is already opened, clicking again on the opener element
|
||||
// should close it -- and interrupt the current `open` function.
|
||||
if (self.isOpen()) {
|
||||
@@ -71,7 +71,7 @@ window.Popup = new (class {
|
||||
title: self._getTitle(popupName),
|
||||
depth: self._stack.length,
|
||||
offset: self._getOffset(openerElement),
|
||||
dataContext: (this && this.currentData && this.currentData()) || dataContextIfCurrentDataIsUndefined || this,
|
||||
dataContext: (this && this.currentData && this.currentData()) || (options && options.dataContextIfCurrentDataIsUndefined) || this,
|
||||
});
|
||||
|
||||
// If there are no popup currently opened we use the Blaze API to render
|
||||
|
||||
+3
-1
@@ -160,7 +160,8 @@ services:
|
||||
- ROOT_URL=http://localhost # <=== using only at same laptop/desktop where Wekan is installed
|
||||
#---------------------------------------------------------------
|
||||
# ==== EMAIL SETTINGS ====
|
||||
# Email settings are required in both MAIL_URL and Admin Panel,
|
||||
# Email settings are only at MAIL_URL and MAIL_FROM.
|
||||
# Admin Panel has test button, but it's not used for settings.
|
||||
# see https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
# For SSL in email, change smtp:// to smtps://
|
||||
# NOTE: Special characters need to be url-encoded in MAIL_URL.
|
||||
@@ -168,6 +169,7 @@ services:
|
||||
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
|
||||
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
|
||||
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
|
||||
# Currently MAIL_SERVICE is not in use.
|
||||
#- MAIL_SERVICE=Outlook365
|
||||
#- MAIL_SERVICE_USER=firstname.lastname@hotmail.com
|
||||
#- MAIL_SERVICE_PASSWORD=SecretPassword
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
apiVersion: v2
|
||||
appVersion: "5.67"
|
||||
appVersion: "5.69"
|
||||
dependencies:
|
||||
- condition: mongodb.enabled
|
||||
name: mongodb
|
||||
|
||||
@@ -14,7 +14,7 @@ serviceAccounts:
|
||||
##
|
||||
image:
|
||||
repository: quay.io/wekan/wekan
|
||||
tag: v5.67
|
||||
tag: v5.69
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
## Configuration for wekan component
|
||||
|
||||
@@ -901,6 +901,20 @@ Boards.helpers({
|
||||
return _id;
|
||||
},
|
||||
|
||||
/** sets the new label order
|
||||
* @param newLabelOrderOnlyIds new order array of _id, e.g. Array(4) [ "FvtD34", "PAEgDP", "LjRBxH", "YJ8sZz" ]
|
||||
*/
|
||||
setNewLabelOrder(newLabelOrderOnlyIds) {
|
||||
if (this.labels.length == newLabelOrderOnlyIds.length) {
|
||||
if (this.labels.every(_label => newLabelOrderOnlyIds.indexOf(_label._id) >= 0)) {
|
||||
const newLabels = _.sortBy(this.labels, _label => newLabelOrderOnlyIds.indexOf(_label._id));
|
||||
if (this.labels.length == newLabels.length) {
|
||||
Boards.direct.update(this._id, {$set: {labels: newLabels}});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
searchBoards(term) {
|
||||
check(term, Match.OneOf(String, null, undefined));
|
||||
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v5.67.0",
|
||||
"version": "v5.69.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v5.67.0",
|
||||
"version": "v5.69.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"repository": {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>Wekan REST API v5.67</title>
|
||||
<title>Wekan REST API v5.69</title>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -1555,7 +1555,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
<ul class="toc-list-h1">
|
||||
|
||||
<li>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.67">Wekan REST API v5.67</a>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.69">Wekan REST API v5.69</a>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -2128,7 +2128,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
<div class="page-wrapper">
|
||||
<div class="dark-box"></div>
|
||||
<div class="content">
|
||||
<h1 id="wekan-rest-api">Wekan REST API v5.67</h1>
|
||||
<h1 id="wekan-rest-api">Wekan REST API v5.69</h1>
|
||||
<blockquote>
|
||||
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
|
||||
</blockquote>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
swagger: '2.0'
|
||||
info:
|
||||
title: Wekan REST API
|
||||
version: v5.67
|
||||
version: v5.69
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 567,
|
||||
appVersion = 569,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "5.67.0~2021-10-27"),
|
||||
appMarketingVersion = (defaultText = "5.69.0~2021-10-28"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
@@ -54,7 +54,7 @@ echo -e "mail-url:"
|
||||
echo -e "\t$ snap set $SNAP_NAME mail-url='smtp://username:password@email-smtp.eu-west-1.amazonaws.com:587?tls={ciphers:\"SSLv3\"}&secureConnection=false'"
|
||||
echo -e "mail-from:"
|
||||
echo -e "\t$ snap set $SNAP_NAME mail-from='Boards Support <support@example.com>'"
|
||||
echo -e "mail-service:"
|
||||
echo -e "mail-service (CURRENTLY NOT IN USE):"
|
||||
echo -e "\t$ snap set $SNAP_NAME mail-service='Outlook365'"
|
||||
echo -e "mail-service-user:"
|
||||
echo -e "\t$ snap set $SNAP_NAME mail-service-user='firstname.lastname@hotmail.com'"
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
name: wekan
|
||||
version: '5.67'
|
||||
version: '5.69'
|
||||
summary: Open Source kanban
|
||||
description: |
|
||||
WeKan ® is an Open Source and collaborative kanban board application.
|
||||
|
||||
@@ -14,6 +14,7 @@ SET MONGO_URL=mongodb://127.0.0.1:27017/wekan
|
||||
REM # https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
REM SET MAIL_URL=smtps://username:password@email-smtp.eu-west-1.amazonaws.com:587/
|
||||
REM SET MAIL_FROM="Wekan Boards <info@example.com>"
|
||||
REM # Currently MAIL_SERVICE is not in use.
|
||||
REM SET MAIL_SERVICE=Outlook365
|
||||
REM SET MAIL_SERVICE_USER=firstname.lastname@hotmail.com
|
||||
REM SET MAIL_SERVICE_PASSWORD=SecretPassword
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
# https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
|
||||
export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
|
||||
export MAIL_FROM='Wekan Boards <info@example.com>'
|
||||
# Currently MAIL_SERVICE is not in use.
|
||||
#export MAIL_SERVICE=Outlook365
|
||||
#export MAIL_SERVICE_USER=firstname.lastname@hotmail.com
|
||||
#export MAIL_SERVICE_PASSWORD=SecretPassword
|
||||
|
||||
@@ -163,13 +163,15 @@ services:
|
||||
# - http://192.168.1.100 <=== using at local LAN
|
||||
- ROOT_URL=http://localhost # <=== using only at same laptop/desktop where Wekan is installed
|
||||
# ==== EMAIL SETTINGS ====
|
||||
# Email settings are required in both MAIL_URL and Admin Panel,
|
||||
# Email settings are only at MAIL_URL and MAIL_FROM.
|
||||
# Admin Panel has test button, but it's not used for settings.
|
||||
# see https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
# For SSL in email, change smtp:// to smtps://
|
||||
# NOTE: Special characters need to be url-encoded in MAIL_URL.
|
||||
# You can encode those characters for example at: https://www.urlencoder.org
|
||||
- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
|
||||
- MAIL_FROM='Example Wekan Support <support@example.com>'
|
||||
# Currently MAIL_SERVICE is not in use.
|
||||
#- MAIL_SERVICE=Outlook365
|
||||
#- MAIL_SERVICE_USER=firstname.lastname@hotmail.com
|
||||
#- MAIL_SERVICE_PASSWORD=SecretPassword
|
||||
|
||||
Reference in new issue
Block a user