Compare commits

...
7 Commits
Author SHA1 Message Date
Lauri Ojansivu 84acc65d04 v3.79 2020-02-13 15:16:07 +02:00
Lauri Ojansivu 2b1727c6e1 Update translations. 2020-02-13 15:12:46 +02:00
Lauri Ojansivu 178f376e21 Fix Card Opened Webhook can not be disabled.
Thanks to mvanvoorden and xet7 !

Closes #2932,
closes #2889,
closes #2666
2020-02-13 14:58:19 +02:00
Lauri Ojansivu 92538a6ac3 Update translations. 2020-02-13 14:34:53 +02:00
Lauri Ojansivu 3fcde252f7 v3.78 2020-02-12 02:23:26 +02:00
Lauri Ojansivu e89965f642 Remove card element grouping to create compact card layout.
Card Settings / Show on Card: Description Title and Description Text.

Thanks to e-stoniauk, 2020product and xet7 !

Fixes https://github.com/wekan/wekan/pull/2922
2020-02-12 02:08:29 +02:00
Lauri Ojansivu b4e5583065 Update translations. 2020-02-12 02:06:26 +02:00
18 changed files with 242 additions and 72 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.77.0",
"version": "v3.79.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.77.0",
"version": "v3.79.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+23
View File
@@ -1,3 +1,26 @@
# v3.79 2020-02-13 Wekan release
This release fixes the following bugs:
- [Fix Card Opened Webhook can not be disabled](https://github.com/wekan/wekan/commit/178f376e2138b5522c2e92ddfd2babb113df8d9f).
Thanks to mvanvoorden and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.78 2020-02-12 Wekan release
This release adds the following features:
- [Card Settings / Show on Card: Description Title and Description Text](https://github.com/wekan/wekan/commit/e89965f6422fd95b4ad2112ae407b1dde4853510).
Thanks to e-stoniauk, 2020product and xet7.
and fixes the following bugs:
- [Remove card element grouping to create compact card layout](https://github.com/wekan/wekan/commit/e89965f6422fd95b4ad2112ae407b1dde4853510).
Thanks to e-stoniauk, 2020product and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.77 2020-02-10 Wekan release
This release removes the following features:
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v3.77.0"
appVersion: "v3.79.0"
files:
userUploads:
- README.md
+4 -2
View File
@@ -53,5 +53,7 @@ template(name="attachmentsGalery")
if currentUser.isBoardMember
unless currentUser.isCommentOnly
unless currentUser.isWorker
li.attachment-item.add-attachment
a.js-add-attachment {{_ 'add-attachment' }}
//li.attachment-item.add-attachment
a.js-add-attachment
i.fa.fa-paperclip
| {{_ 'add-attachment' }}
+39 -34
View File
@@ -95,7 +95,7 @@ template(name="cardDetails")
a.card-label.add-label.js-end-date
i.fa.fa-plus
.card-details-items
//.card-details-items
if currentBoard.allowsMembers
.card-details-item.card-details-item-members
h3
@@ -141,7 +141,7 @@ template(name="cardDetails")
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
i.fa.fa-plus
.card-details-items
//.card-details-items
each customFieldsWD
.card-details-item.card-details-item-customfield
h3.card-details-item-title
@@ -149,7 +149,7 @@ template(name="cardDetails")
= definition.name
+cardCustomField
.card-details-items
//.card-details-items
if getSpentTime
.card-details-item.card-details-item-spent
if getIsOvertime
@@ -158,37 +158,7 @@ template(name="cardDetails")
h3.card-details-item-title {{_ 'spent-time-hours'}}
+cardSpentTime
//- XXX We should use "editable" to avoid repetiting ourselves
if canModifyCard
unless currentUser.isWorker
h3
i.fa.fa-align-left
card-details-item-title {{_ 'description'}}
+inlinedCardDescription(classNames="card-description js-card-description")
+editor(autofocus=true)
| {{getUnsavedValue 'cardDescription' _id getDescription}}
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
a.js-open-inlined-form
if getDescription
+viewer
= getDescription
else
| {{_ 'edit'}}
if (hasUnsavedValue 'cardDescription' _id)
p.quiet
| {{_ 'unsaved-description'}}
a.js-open-inlined-form {{_ 'view-it'}}
= ' - '
a.js-close-inlined-form {{_ 'discard'}}
else if getDescription
h3.card-details-item-title {{_ 'description'}}
+viewer
= getDescription
.card-details-items
//.card-details-items
if currentBoard.allowsRequestedBy
.card-details-item.card-details-item-name
h3
@@ -229,6 +199,41 @@ template(name="cardDetails")
+viewer
= getAssignedBy
//- XXX We should use "editable" to avoid repetiting ourselves
if canModifyCard
unless currentUser.isWorker
if currentBoard.allowsDescriptionTitle
h3
i.fa.fa-align-left
card-details-item-title {{_ 'description'}}
if currentBoard.allowsDescriptionText
+inlinedCardDescription(classNames="card-description js-card-description")
+editor(autofocus=true)
| {{getUnsavedValue 'cardDescription' _id getDescription}}
.edit-controls.clearfix
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
if currentBoard.allowsDescriptionText
a.js-open-inlined-form
if getDescription
+viewer
= getDescription
else
| {{_ 'edit'}}
if (hasUnsavedValue 'cardDescription' _id)
p.quiet
| {{_ 'unsaved-description'}}
a.js-open-inlined-form {{_ 'view-it'}}
= ' - '
a.js-close-inlined-form {{_ 'discard'}}
else if getDescription
if currentBoard.allowsDescriptionTitle
h3.card-details-item-title {{_ 'description'}}
if currentBoard.allowsDescriptionText
+viewer
= getDescription
.card-checklist-attachmentGalerys
.card-checklist-attachmentGalery.card-checklists
if currentBoard.allowsChecklists
+14
View File
@@ -129,6 +129,20 @@ template(name="boardCardSettingsPopup")
span
i.fa.fa-tags
| {{_ 'labels'}}
div.check-div
a.flex.js-field-has-description-title(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsDescriptionTitle}}is-checked{{/if}}")
span
i.fa.fa-align-left
| {{_ 'description'}}
| {{_ 'title'}}
div.check-div
a.flex.js-field-has-description-text(class="{{#if allowsDescriptionText}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsDescriptionText}}is-checked{{/if}}")
span
i.fa.fa-align-left
| {{_ 'description'}}
| {{_ 'custom-field-text'}}
div.check-div
a.flex.js-field-has-checklists(class="{{#if allowsChecklists}}is-checked{{/if}}")
.materialCheckBox(class="{{#if allowsChecklists}}is-checked{{/if}}")
+40
View File
@@ -647,6 +647,14 @@ BlazeComponent.extendComponent({
return this.currentBoard.allowsComments;
},
allowsDescriptionTitle() {
return this.currentBoard.allowsDescriptionTitle;
},
allowsDescriptionText() {
return this.currentBoard.allowsDescriptionText;
},
isBoardSelected() {
return this.currentBoard.dateSettingsDefaultBoardID;
},
@@ -837,6 +845,38 @@ BlazeComponent.extendComponent({
this.currentBoard.allowsLabels,
);
},
'click .js-field-has-description-title'(evt) {
evt.preventDefault();
this.currentBoard.allowsDescriptionTitle = !this.currentBoard
.allowsDescriptionTitle;
this.currentBoard.setAllowsDescriptionTitle(
this.currentBoard.allowsDescriptionTitle,
);
$(`.js-field-has-description-title ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionTitle,
);
$('.js-field-has-description-title').toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionTitle,
);
},
'click .js-field-has-description-text'(evt) {
evt.preventDefault();
this.currentBoard.allowsDescriptionText = !this.currentBoard
.allowsDescriptionText;
this.currentBoard.setAllowsDescriptionText(
this.currentBoard.allowsDescriptionText,
);
$(`.js-field-has-description-text ${MCB}`).toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionText,
);
$('.js-field-has-description-text').toggleClass(
CKCLS,
this.currentBoard.allowsDescriptionText,
);
},
'click .js-field-has-checklists'(evt) {
evt.preventDefault();
this.currentBoard.allowsChecklists = !this.currentBoard
+21 -21
View File
@@ -66,7 +66,7 @@
"activity-checklist-removed": "チェックリストを %s から削除しました",
"activity-checklist-completed": "チェックリスト __checklist__ ボード __board__, スイムレーン __swimlane__, リスト __list__, カード __card__ が完了しました",
"activity-checklist-uncompleted": "チェックリスト %s / %s が未完了になりました",
"activity-checklist-item-added": "added checklist item to '%s' in %s",
"activity-checklist-item-added": "チェックリスト項目を '%s' / %s に追加しました",
"activity-checklist-item-removed": "'%s' の チェックリスト %s の項目を削除しました",
"add": "追加",
"activity-checked-item-card": "チェックされました %s チェックリスト %s",
@@ -304,12 +304,12 @@
"error-username-taken": "このユーザ名は既に使用されています",
"error-email-taken": "メールは既に受け取られています",
"export-board": "ボードのエクスポート",
"sort": "Sort",
"sort": "並べ替え",
"sort-desc": "クリックでリストをソート",
"list-sort-by": "Sort the List By:",
"list-label-modifiedAt": "Last Access Time",
"list-sort-by": "次によりリストを並べ替え:",
"list-label-modifiedAt": "最終アクセス日時",
"list-label-title": "リストの名前",
"list-label-sort": "Your Manual Order",
"list-label-sort": "手動による並べ替え",
"list-label-short-modifiedAt": "(L)",
"list-label-short-title": "(N)",
"list-label-short-sort": "(M)",
@@ -344,12 +344,12 @@
"from-wekan": "以前のエクスポートから",
"import-board-instruction-trello": "Trelloボードの、 'Menu' → 'More' → 'Print and Export' → 'Export JSON'を選択し、テキストをコピーしてください。",
"import-board-instruction-wekan": "ボードの、 'メニュー' → 'ボードのエクスポート'を選択し、ダウンロードされたファイルの中のテキストをコピーしてください。",
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
"import-board-instruction-about-errors": "ボードのインポート中にエラーが発生した場合、インポートがまだ進行中のまま、全てのボードページに表示されている場合があります。",
"import-json-placeholder": "JSONデータをここに貼り付けする",
"import-map-members": "メンバーを紐付け",
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
"import-members-map": "インポートしたボードにはいくつかのメンバーが含まれています。インポートしたいメンバーをユーザーにマッピングしてください",
"import-show-user-mapping": "メンバー紐付けの確認",
"import-user-select": "Pick your existing user you want to use as this member",
"import-user-select": "このメンバーとして使用したいユーザーを選択してください",
"importMapMembersAddPopup-title": "メンバーを選択",
"info": "バージョン",
"initials": "イニシャル",
@@ -468,8 +468,8 @@
"spent-time-hours": "作業時間(時)",
"overtime-hours": "超過時間(時)",
"overtime": "超過時間",
"has-overtime-cards": "Has overtime cards",
"has-spenttime-cards": "Has spent time cards",
"has-overtime-cards": "超過時間ありのカード",
"has-spenttime-cards": "作業時間ありのカード",
"time": "時間",
"title": "タイトル",
"tracking": "トラッキング",
@@ -519,8 +519,8 @@
"send-smtp-test": "テストメールを自分に送信",
"invitation-code": "招待コード",
"email-invite-register-subject": "__inviter__さんがあなたを招待しています",
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
"email-smtp-test-subject": "SMTP Test Email",
"email-invite-register-text": "__user__ 様\n\n__inviter__ によりカンバンへ招待されています。\n\n以下のリンクへ移動し、招待コード __icode__ を入力してください。\n__url__",
"email-smtp-test-subject": "SMTP経由でテストメールを送信",
"email-smtp-test-text": "メールを送信しました",
"error-invitation-code-not-exist": "招待コードが存在しません",
"error-notAuthorized": "このページを参照する権限がありません。",
@@ -718,9 +718,9 @@
"custom-product-name": "カスタム製品名",
"layout": "レイアウト",
"hide-logo": "ロゴを隠す",
"add-custom-html-after-body-start": "Add Custom HTML after <body> start",
"add-custom-html-before-body-end": "Add Custom HTML before </body> end",
"error-undefined": "Something went wrong",
"add-custom-html-after-body-start": "<body> の開始直後にカスタムHTMLを追加する",
"add-custom-html-before-body-end": "</body> の終了直前にカスタムHTMLを追加する",
"error-undefined": "何らかの問題が発生しています",
"error-ldap-login": "ログイン中にエラーが発生しました",
"display-authentication-method": "認証方式を表示",
"default-authentication-method": "デフォルトの認証方式",
@@ -731,7 +731,7 @@
"restore-all": "全てをリストアする",
"delete-all": "全てを削除する",
"loading": "ローディング中です、しばらくお待ちください。",
"previous_as": "last time was",
"previous_as": "最終日時",
"act-a-dueAt": "期限の時刻が変更されました\n変更後:__timeValue__\n場所:__card__\n変更前の期限の時刻は __timeOldValue__ でした",
"act-a-endAt": "終了を (__timeOldValue__)から __timeValue__ に変更しました",
"act-a-startAt": "開始を (__timeOldValue__)から __timeValue__ に変更しました",
@@ -743,11 +743,11 @@
"almostdue": "期限 %s が近づいています",
"pastdue": "期限 %s が過ぎています",
"duenow": "期限 %s は本日です",
"act-newDue": "__list__/__card__ has 1st due reminder [__board__]",
"act-withDue": "__list__/__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now",
"act-newDue": "__list __ / __ card__に1回目の有効期限アラートがあります [__board__]",
"act-withDue": "__list __ / __ card__ の有効期限のアラート [__board__]",
"act-almostdue": "__card__ の期限日時 (__timeValue__) が近づいています",
"act-pastdue": "__card__ の期限日時 (__timeValue__) が過ぎています",
"act-duenow": "__card__ の期限日時 (__timeValue__) になりました",
"act-atUserComment": "あなたが [__board__] __list__/__card__ に追記しました",
"delete-user-confirm-popup": "本当にこのアカウントを削除しますか?この操作は取り消しできません。",
"accounts-allowUserDelete": "ユーザー自身のアカウント削除を許可",
+4 -4
View File
@@ -583,9 +583,9 @@
"default": "По умолчанию",
"queue": "Очередь",
"subtask-settings": "Настройки подзадач",
"card-settings": "Card Settings",
"card-settings": "Настройки карточки",
"boardSubtaskSettingsPopup-title": "Настройки подзадач для доски",
"boardCardSettingsPopup-title": "Card Settings",
"boardCardSettingsPopup-title": "Настройки карточки",
"deposit-subtasks-board": "Отправлять подзадачи на доску:",
"deposit-subtasks-list": "Размещать подзадачи, отправленные на эту доску, в списке:",
"show-parent-in-minicard": "Указывать исходную карточку:",
@@ -755,6 +755,6 @@
"show-desktop-drag-handles": "Show desktop drag handles",
"assignee": "Исполнитель",
"cardAssigneesPopup-title": "Исполнитель",
"addmore-detail": "Add a more detailed description",
"show-on-card": "Show on Card"
"addmore-detail": "Добавить более детальное описание",
"show-on-card": "Показать на карточке"
}
+24
View File
@@ -332,6 +332,22 @@ Boards.attachSchema(
defaultValue: true,
},
allowsDescriptionTitle: {
/**
* Does the board allows description title?
*/
type: Boolean,
defaultValue: true,
},
allowsDescriptionText: {
/**
* Does the board allows description text?
*/
type: Boolean,
defaultValue: true,
},
allowsActivities: {
/**
* Does the board allows comments?
@@ -1127,6 +1143,14 @@ Boards.mutations({
return { $set: { allowsComments } };
},
setAllowsDescriptionTitle(allowsDescriptionTitle) {
return { $set: { allowsDescriptionTitle } };
},
setAllowsDescriptionText(allowsDescriptionText) {
return { $set: { allowsDescriptionText } };
},
setAllowsActivities(allowsActivities) {
return { $set: { allowsActivities } };
},
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.77.0",
"version": "v3.79.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.77.0",
"version": "v3.79.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+20 -2
View File
@@ -1524,7 +1524,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 v3.77">Wekan REST API v3.77</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v3.79">Wekan REST API v3.79</a>
</li>
@@ -2017,7 +2017,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 v3.77</h1>
<h1 id="wekan-rest-api">Wekan REST API v3.79</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>
@@ -3293,6 +3293,8 @@ System.out.println(response.toString());
<span class="hljs-attr">"allowsAttachments"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsChecklists"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsComments"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsDescriptionTitle"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsDescriptionText"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsActivities"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsLabels"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsAssignee"</span>: <span class="hljs-literal">true</span>,
@@ -13657,6 +13659,8 @@ UserSecurity
<span class="hljs-attr">"allowsAttachments"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsChecklists"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsComments"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsDescriptionTitle"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsDescriptionText"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsActivities"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsLabels"</span>: <span class="hljs-literal">true</span>,
<span class="hljs-attr">"allowsAssignee"</span>: <span class="hljs-literal">true</span>,
@@ -13824,6 +13828,20 @@ UserSecurity
<td>Does the board allows comments?</td>
</tr>
<tr>
<td>allowsDescriptionTitle</td>
<td>boolean</td>
<td>true</td>
<td>none</td>
<td>Does the board allows description title?</td>
</tr>
<tr>
<td>allowsDescriptionText</td>
<td>boolean</td>
<td>true</td>
<td>none</td>
<td>Does the board allows description text?</td>
</tr>
<tr>
<td>allowsActivities</td>
<td>boolean</td>
<td>true</td>
+11 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v3.77
version: v3.79
description: |
The REST API allows you to control and extend Wekan with ease.
@@ -2115,6 +2115,14 @@ definitions:
description: |
Does the board allows comments?
type: boolean
allowsDescriptionTitle:
description: |
Does the board allows description title?
type: boolean
allowsDescriptionText:
description: |
Does the board allows description text?
type: boolean
allowsActivities:
description: |
Does the board allows comments?
@@ -2215,6 +2223,8 @@ definitions:
- allowsAttachments
- allowsChecklists
- allowsComments
- allowsDescriptionTitle
- allowsDescriptionText
- allowsActivities
- allowsLabels
- allowsAssignee
+2 -2
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 = 377,
appVersion = 379,
# Increment this for every release.
appMarketingVersion = (defaultText = "3.77.0~2020-02-10"),
appMarketingVersion = (defaultText = "3.79.0~2020-02-13"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+3 -1
View File
@@ -1,5 +1,7 @@
Meteor.startup(() => {
if (process.env.CARD_OPENED_WEBHOOK_ENABLED) {
if (process.env.CARD_OPENED_WEBHOOK_ENABLED === 'true') {
Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED = true;
} else {
Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED = false;
}
});
+32
View File
@@ -1001,3 +1001,35 @@ Migrations.add('add-activities-allowed', () => {
noValidateMulti,
);
});
Migrations.add('add-description-title-allowed', () => {
Boards.update(
{
allowsDescriptionTitle: {
$exists: false,
},
},
{
$set: {
allowsDescriptionTitle: true,
},
},
noValidateMulti,
);
});
Migrations.add('add-description-text-allowed', () => {
Boards.update(
{
allowsDescriptionText: {
$exists: false,
},
},
{
$set: {
allowsDescriptionText: true,
},
},
noValidateMulti,
);
});