mirror of
https://github.com/wekan/wekan.git
synced 2026-11-08 21:44:59 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
843ff8eaaa | ||
|
|
c5143e2c54 | ||
|
|
0596f5e864 | ||
|
|
8ca1b25daf | ||
|
|
1f76159bfe | ||
|
|
39ece35f52 | ||
|
|
63c1bb9e17 | ||
|
|
354622c5ad | ||
|
|
df7fd8c900 | ||
|
|
7957690fca | ||
|
|
63d19447a0 | ||
|
|
018a84ec59 | ||
|
|
e5c0e623a0 | ||
|
|
9a2d3e15e8 | ||
|
|
c07e262e68 | ||
|
|
cacb2b91ee | ||
|
|
6f269d598f | ||
|
|
57ea254bff | ||
|
|
7e183c838f | ||
|
|
3ffdfd9736 | ||
|
|
621c701bef | ||
|
|
3c24c9966c | ||
|
|
995de525d9 | ||
|
|
ae30b1220a | ||
|
|
e380ad26c2 | ||
|
|
9bb31d2380 | ||
|
|
8ec1e4f3fa | ||
|
|
9f0f6841b0 |
No files matched your search
@@ -1,3 +1,42 @@
|
||||
# v5.26 2021-04-28 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Feature/mini card subtask count](https://github.com/wekan/wekan/pull/3765).
|
||||
Thanks to ryanMushy.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Bring back Almost-Due for Start Date](https://github.com/wekan/wekan/commit/8ca1b25daf3be60c2dc64f03830dea8437bbd8ad).
|
||||
Thanks to darren-teo.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.25 2021-04-27 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Swimlane in Export to Excel](https://github.com/wekan/wekan/pull/3764).
|
||||
Thanks to Keelan and ryanMushy.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Updated release scripts](https://github.com/wekan/wekan/commit/9f0f6841b01b88f5559724b047d5e245617a02c8).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Added missing PostgreSQL password to ToroDB](https://github.com/wekan/wekan/commit/995de525d96946702536f0cdcb98ef281b9df94e).
|
||||
Thanks to xet7.
|
||||
- [Fixed language name of Deutsch (Schweiz)](https://github.com/wekan/wekan/commit/621c701bef1d09d4ddfc93be411cfad98869f0ae).
|
||||
Thanks to urmel1960.
|
||||
- [Bugfix/Summernote on paste](https://github.com/wekan/wekan/pull/3761).
|
||||
Thanks to ryanMushy.
|
||||
- [OpenAPI: Better handle nested schemas](https://github.com/wekan/wekan/pull/3762).
|
||||
Thanks to bentiss.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v5.24 2021-04-24 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v5.24.0"
|
||||
appVersion: "v5.26.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -187,6 +187,7 @@ class CardStartDate extends CardDate {
|
||||
// if dueAt or endAt exist & are > startAt, startAt doesn't need to be flagged
|
||||
if ((endAt && theDate.isAfter(endAt)) || (dueAt && theDate.isAfter(dueAt)))
|
||||
classes += 'long-overdue';
|
||||
else if (theDate.isBefore(now, 'minute')) classes += 'almost-due';
|
||||
else classes += 'current';
|
||||
return classes;
|
||||
}
|
||||
|
||||
@@ -129,3 +129,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 allSubtasks.count
|
||||
.badge
|
||||
span.badge-icon.fa.fa-sitemap
|
||||
span.badge-text.check-list-text {{subtasksFinishedCount}}/{{allSubtasksCount}}
|
||||
//{{subtasksFinishedCount}}/{{subtasksCount}} does not work because when a subtaks is archived, the count goes down
|
||||
@@ -145,6 +145,7 @@ Template.editor.onRendered(() => {
|
||||
const MAX_IMAGE_PIXEL = Utils.MAX_IMAGE_PIXEL;
|
||||
const COMPRESS_RATIO = Utils.IMAGE_COMPRESS_RATIO;
|
||||
const insertImage = src => {
|
||||
// process all image upload types to the description/comment window
|
||||
const img = document.createElement('img');
|
||||
img.src = src;
|
||||
img.setAttribute('width', '100%');
|
||||
@@ -210,7 +211,16 @@ Template.editor.onRendered(() => {
|
||||
}
|
||||
}
|
||||
},
|
||||
onPaste() {
|
||||
onPaste(e) {
|
||||
var clipboardData = e.clipboardData;
|
||||
var pastedData = clipboardData.getData('Text');
|
||||
|
||||
//if pasted data is an image, exit
|
||||
if( !pastedData.length ){
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
// clear up unwanted tag info when user pasted in text
|
||||
const thisNote = this;
|
||||
const updatePastedText = function(object) {
|
||||
@@ -219,7 +229,7 @@ Template.editor.onRendered(() => {
|
||||
// (and multiplies by pasting more) by changing paste "p" to "br".
|
||||
// Fixes https://github.com/wekan/wekan/2890 .
|
||||
// == Fix Start ==
|
||||
someNote.execCommand('defaultParagraphSeparator', false, 'br');
|
||||
//someNote.execCommand('defaultParagraphSeparator', false, 'br');
|
||||
// == Fix End ==
|
||||
const original = someNote.summernote('code');
|
||||
const cleaned = cleanPastedHTML(original); //this is where to call whatever clean function you want. I have mine in a different file, called CleanPastedHTML.
|
||||
@@ -231,19 +241,16 @@ Template.editor.onRendered(() => {
|
||||
//the function is called before the text is really pasted.
|
||||
updatePastedText(thisNote);
|
||||
}, 10);
|
||||
},
|
||||
}
|
||||
},
|
||||
dialogsInBody: true,
|
||||
spellCheck: true,
|
||||
disableGrammar: false,
|
||||
disableDragAndDrop: true,
|
||||
disableDragAndDrop: false,
|
||||
toolbar,
|
||||
popover: {
|
||||
image: [
|
||||
[
|
||||
'image',
|
||||
['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone'],
|
||||
],
|
||||
['imagesize', ['imageSize100', 'imageSize50', 'imageSize25']],
|
||||
['float', ['floatLeft', 'floatRight', 'floatNone']],
|
||||
['remove', ['removeMedia']],
|
||||
],
|
||||
|
||||
@@ -78,7 +78,7 @@ Template.userFormsLayout.helpers({
|
||||
// ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo)
|
||||
name = 'مَصرى';
|
||||
} else if (lang.name === 'de-CH') {
|
||||
name = 'Schwiizerdütsch';
|
||||
name = 'Deutsch (Schweiz)';
|
||||
} else if (lang.name === 'fa-IR') {
|
||||
// fa-IR = Persian (Iran)
|
||||
name = 'فارسی/پارسی (ایران)';
|
||||
|
||||
@@ -175,7 +175,7 @@ Template.changeLanguagePopup.helpers({
|
||||
// fa-IR = Persian (Iran)
|
||||
name = 'فارسی/پارسی (ایران)';
|
||||
} else if (lang.name === 'de-CH') {
|
||||
name = 'Schwiizerdütsch';
|
||||
name = 'Deutsch (Schweiz)';
|
||||
} else if (lang.name === 'fr-BE') {
|
||||
name = 'Français (Belgique)';
|
||||
} else if (lang.name === 'fr-CA') {
|
||||
|
||||
+1009
-1009
File diff suppressed because it is too large.
Load diff
+21
-26
@@ -641,37 +641,32 @@ Cards.helpers({
|
||||
);
|
||||
},
|
||||
|
||||
allSubtasks() {
|
||||
return Cards.find(
|
||||
{
|
||||
parentId: this._id,
|
||||
archived: false,
|
||||
},
|
||||
{
|
||||
sort: {
|
||||
sort: 1,
|
||||
},
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
subtasksCount() {
|
||||
return Cards.find({
|
||||
parentId: this._id,
|
||||
archived: false,
|
||||
}).count();
|
||||
},
|
||||
|
||||
subtasksFinishedCount() {
|
||||
subtasksFinished() {
|
||||
return Cards.find({
|
||||
parentId: this._id,
|
||||
archived: true,
|
||||
}).count();
|
||||
});
|
||||
},
|
||||
|
||||
subtasksFinished() {
|
||||
const finishCount = this.subtasksFinishedCount();
|
||||
return finishCount > 0 && this.subtasksCount() === finishCount;
|
||||
allSubtasks() {
|
||||
return Cards.find({
|
||||
parentId: this._id
|
||||
});
|
||||
},
|
||||
|
||||
subtasksCount() {
|
||||
const subtasks = this.subtasks();
|
||||
return subtasks.count();
|
||||
},
|
||||
|
||||
subtasksFinishedCount() {
|
||||
const subtasksArchived = this.subtasksFinished();
|
||||
return subtasksArchived.count();
|
||||
},
|
||||
|
||||
allSubtasksCount() {
|
||||
const allSubtasks = this.allSubtasks();
|
||||
return allSubtasks.count();
|
||||
},
|
||||
|
||||
allowsSubtasks() {
|
||||
|
||||
+27
-4
@@ -239,7 +239,7 @@ export class ExporterExcel {
|
||||
},
|
||||
{
|
||||
key: 'c',
|
||||
width: 20,
|
||||
width: 60,
|
||||
},
|
||||
{
|
||||
key: 'd',
|
||||
@@ -342,6 +342,10 @@ export class ExporterExcel {
|
||||
key: 'p',
|
||||
width: 20,
|
||||
},
|
||||
{
|
||||
key: 'q',
|
||||
width: 20,
|
||||
},
|
||||
];
|
||||
|
||||
//add title line
|
||||
@@ -378,10 +382,23 @@ export class ExporterExcel {
|
||||
for (const klist in result.lists) {
|
||||
jlist[result.lists[klist]._id] = result.lists[klist].title;
|
||||
}
|
||||
//get kanban swimlanes info
|
||||
const jswimlane = {};
|
||||
for (const kswimlane in result.swimlanes) {
|
||||
jswimlane[result.swimlanes[kswimlane]._id] = result.swimlanes[kswimlane].title;
|
||||
}
|
||||
//get kanban label info
|
||||
const jlabel = {};
|
||||
for (const klabel in result.labels) {
|
||||
jlabel[result.labels[klabel]._id] = result.labels[klabel].name;
|
||||
var isFirst = 1;
|
||||
for (const klabel in result.labels){
|
||||
console.log(klabel);
|
||||
if (isFirst == 0){
|
||||
jlabel[result.labels[klabel]._id] = `,${result.labels[klabel].name}`;
|
||||
}
|
||||
else{
|
||||
isFirst = 0;
|
||||
jlabel[result.labels[klabel]._id] = result.labels[klabel].name;
|
||||
}
|
||||
}
|
||||
//add data +8 hours
|
||||
function addTZhours(jdate) {
|
||||
@@ -413,7 +430,7 @@ export class ExporterExcel {
|
||||
size: 10,
|
||||
bold: true,
|
||||
};
|
||||
ws.mergeCells('F3:P3');
|
||||
ws.mergeCells('F3:Q3');
|
||||
ws.getCell('B3').style = {
|
||||
font: {
|
||||
name: TAPi18n.__('excel-font'),
|
||||
@@ -487,6 +504,7 @@ export class ExporterExcel {
|
||||
];
|
||||
//add card title
|
||||
//ws.addRow().values = ['编号', '标题', '创建人', '创建时间', '更新时间', '列表', '成员', '描述', '标签'];
|
||||
//this is where order in which the excel file generates
|
||||
ws.addRow().values = [
|
||||
TAPi18n.__('number'),
|
||||
TAPi18n.__('title'),
|
||||
@@ -499,6 +517,7 @@ export class ExporterExcel {
|
||||
TAPi18n.__('card-due'),
|
||||
TAPi18n.__('card-end'),
|
||||
TAPi18n.__('list'),
|
||||
TAPi18n.__('swimlane'),
|
||||
TAPi18n.__('assignee'),
|
||||
TAPi18n.__('members'),
|
||||
TAPi18n.__('labels'),
|
||||
@@ -522,6 +541,7 @@ export class ExporterExcel {
|
||||
allBorder('N5');
|
||||
allBorder('O5');
|
||||
allBorder('P5');
|
||||
allBorder('Q5');
|
||||
cellCenter('A5');
|
||||
cellCenter('B5');
|
||||
cellCenter('C5');
|
||||
@@ -538,6 +558,7 @@ export class ExporterExcel {
|
||||
cellCenter('N5');
|
||||
cellCenter('O5');
|
||||
cellCenter('P5');
|
||||
cellCenter('Q5');
|
||||
ws.getRow(5).font = {
|
||||
name: TAPi18n.__('excel-font'),
|
||||
size: 12,
|
||||
@@ -580,6 +601,7 @@ export class ExporterExcel {
|
||||
addTZhours(jcard.dueAt),
|
||||
addTZhours(jcard.endAt),
|
||||
jlist[jcard.listId],
|
||||
jswimlane[jcard.swimlaneId],
|
||||
jcassig,
|
||||
jcmem,
|
||||
jclabel,
|
||||
@@ -604,6 +626,7 @@ export class ExporterExcel {
|
||||
allBorder(`N${y}`);
|
||||
allBorder(`O${y}`);
|
||||
allBorder(`P${y}`);
|
||||
allBorder(`Q${y}`);
|
||||
cellCenter(`A${y}`);
|
||||
ws.getCell(`B${y}`).alignment = {
|
||||
wrapText: true,
|
||||
|
||||
@@ -607,6 +607,9 @@ class SchemaProperty(object):
|
||||
|
||||
# deal with subschemas
|
||||
if '.' in name:
|
||||
subschema = name.split('.')[0]
|
||||
subschema = subschema.capitalize()
|
||||
|
||||
if name.endswith('$'):
|
||||
# reference in reference
|
||||
subschema = ''.join([n.capitalize() for n in self.name.split('.')[:-1]])
|
||||
@@ -621,9 +624,12 @@ class SchemaProperty(object):
|
||||
print(''' {}:
|
||||
type: object'''.format(subschema))
|
||||
return current_schema
|
||||
elif '$' in name:
|
||||
# In the form of 'profile.notifications.$.activity'
|
||||
subschema = name[:name.index('$') - 1] # 'profile.notifications'
|
||||
subschema = ''.join([s.capitalize() for s in subschema.split('.')])
|
||||
|
||||
subschema = name.split('.')[0]
|
||||
schema_name = self.schema.name + subschema.capitalize()
|
||||
schema_name = self.schema.name + subschema
|
||||
name = name.split('.')[-1]
|
||||
|
||||
if current_schema != schema_name:
|
||||
@@ -755,7 +761,7 @@ class Schemas(object):
|
||||
# then print the references
|
||||
current = None
|
||||
required_properties = []
|
||||
properties = [f for f in self.fields if '.' in f.name and not f.name.endswith('$')]
|
||||
properties = [f for f in self.fields if '.' in f.name and not '$' in f.name]
|
||||
for prop in properties:
|
||||
current = prop.print_openapi(6, current, required_properties)
|
||||
|
||||
@@ -766,7 +772,7 @@ class Schemas(object):
|
||||
|
||||
required_properties = []
|
||||
# then print the references in the references
|
||||
for prop in [f for f in self.fields if '.' in f.name and f.name.endswith('$')]:
|
||||
for prop in [f for f in self.fields if '.' in f.name and '$' in f.name]:
|
||||
current = prop.print_openapi(6, current, required_properties)
|
||||
|
||||
if required_properties:
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v5.24.0",
|
||||
"version": "v5.26.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v5.24.0",
|
||||
"version": "v5.26.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
+119
-75
@@ -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.24</title>
|
||||
<title>Wekan REST API v5.26</title>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -1486,6 +1486,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
</head>
|
||||
|
||||
@@ -1549,7 +1550,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.24">Wekan REST API v5.24</a>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.26">Wekan REST API v5.26</a>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -2062,11 +2063,6 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#tocs_usersemails" class="toc-h2 toc-link" data-title="">UsersEmails</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#tocs_usersprofile" class="toc-h2 toc-link" data-title="">UsersProfile</a>
|
||||
|
||||
@@ -2077,6 +2073,16 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#tocs_usersemails" class="toc-h2 toc-link" data-title="">UsersEmails</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#tocs_usersprofilenotifications" class="toc-h2 toc-link" data-title="">UsersProfileNotifications</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
@@ -2092,7 +2098,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.24</h1>
|
||||
<h1 id="wekan-rest-api">Wekan REST API v5.26</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>
|
||||
@@ -15915,9 +15921,12 @@ System.out.println(response.toString());
|
||||
<span class="hljs-string">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</span>: [
|
||||
@@ -16653,9 +16662,12 @@ System.out.println(response.toString());
|
||||
<span class="hljs-string">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</span>: [
|
||||
@@ -20434,9 +20446,12 @@ UserSecurity
|
||||
<span class="hljs-string">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</span>: [
|
||||
@@ -20572,45 +20587,6 @@ UserSecurity
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="tocs_usersemails">UsersEmails</h2>
|
||||
<p><a id="schemausersemails"></a>
|
||||
<a id="schema_UsersEmails"></a>
|
||||
<a id="tocSusersemails"></a>
|
||||
<a id="tocsusersemails"></a></p>
|
||||
<pre class="highlight tab tab-json"><code>{
|
||||
<span class="hljs-attr">"address"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"verified"</span>: <span class="hljs-literal">true</span>
|
||||
}
|
||||
|
||||
</code></pre>
|
||||
<h3 id="properties-18">Properties</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Required</th>
|
||||
<th>Restrictions</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>address</td>
|
||||
<td>string</td>
|
||||
<td>true</td>
|
||||
<td>none</td>
|
||||
<td>The email address</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>verified</td>
|
||||
<td>boolean</td>
|
||||
<td>true</td>
|
||||
<td>none</td>
|
||||
<td>Has the email been verified</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="tocs_usersprofile">UsersProfile</h2>
|
||||
<p><a id="schemausersprofile"></a>
|
||||
<a id="schema_UsersProfile"></a>
|
||||
@@ -20631,9 +20607,12 @@ UserSecurity
|
||||
<span class="hljs-string">"string"</span>
|
||||
],
|
||||
<span class="hljs-attr">"language"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [],
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"notifications"</span>: [
|
||||
{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"showCardsCountAt"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"startDayOfWeek"</span>: <span class="hljs-number">0</span>,
|
||||
<span class="hljs-attr">"starredBoards"</span>: [
|
||||
@@ -20649,7 +20628,7 @@ UserSecurity
|
||||
}
|
||||
|
||||
</code></pre>
|
||||
<h3 id="properties-19">Properties</h3>
|
||||
<h3 id="properties-18">Properties</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -20739,20 +20718,6 @@ UserSecurity
|
||||
<td>enabled notifications for the user</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>activity</td>
|
||||
<td>string</td>
|
||||
<td>true</td>
|
||||
<td>none</td>
|
||||
<td>The id of the activity this notification references</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>read</td>
|
||||
<td>string</td>
|
||||
<td>false</td>
|
||||
<td>none</td>
|
||||
<td>the date on which this notification was read</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>showCardsCountAt</td>
|
||||
<td>number</td>
|
||||
<td>false</td>
|
||||
@@ -20882,7 +20847,7 @@ UserSecurity
|
||||
}
|
||||
|
||||
</code></pre>
|
||||
<h3 id="properties-20">Properties</h3>
|
||||
<h3 id="properties-19">Properties</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -20910,6 +20875,84 @@ UserSecurity
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="tocs_usersemails">UsersEmails</h2>
|
||||
<p><a id="schemausersemails"></a>
|
||||
<a id="schema_UsersEmails"></a>
|
||||
<a id="tocSusersemails"></a>
|
||||
<a id="tocsusersemails"></a></p>
|
||||
<pre class="highlight tab tab-json"><code>{
|
||||
<span class="hljs-attr">"address"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"verified"</span>: <span class="hljs-literal">true</span>
|
||||
}
|
||||
|
||||
</code></pre>
|
||||
<h3 id="properties-20">Properties</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Required</th>
|
||||
<th>Restrictions</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>address</td>
|
||||
<td>string</td>
|
||||
<td>true</td>
|
||||
<td>none</td>
|
||||
<td>The email address</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>verified</td>
|
||||
<td>boolean</td>
|
||||
<td>true</td>
|
||||
<td>none</td>
|
||||
<td>Has the email been verified</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="tocs_usersprofilenotifications">UsersProfileNotifications</h2>
|
||||
<p><a id="schemausersprofilenotifications"></a>
|
||||
<a id="schema_UsersProfileNotifications"></a>
|
||||
<a id="tocSusersprofilenotifications"></a>
|
||||
<a id="tocsusersprofilenotifications"></a></p>
|
||||
<pre class="highlight tab tab-json"><code>{
|
||||
<span class="hljs-attr">"activity"</span>: <span class="hljs-string">"string"</span>,
|
||||
<span class="hljs-attr">"read"</span>: <span class="hljs-string">"string"</span>
|
||||
}
|
||||
|
||||
</code></pre>
|
||||
<h3 id="properties-21">Properties</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Required</th>
|
||||
<th>Restrictions</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>activity</td>
|
||||
<td>string</td>
|
||||
<td>true</td>
|
||||
<td>none</td>
|
||||
<td>The id of the activity this notification references</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>read</td>
|
||||
<td>string</td>
|
||||
<td>false</td>
|
||||
<td>none</td>
|
||||
<td>the date on which this notification was read</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Renderer: Shins v2.6.0 -->
|
||||
<!-- Generator: Widdershins v4.0.1 -->
|
||||
<!-- backwards compatibility -->
|
||||
@@ -20931,6 +20974,7 @@ UserSecurity
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
<!-- backwards compatibility -->
|
||||
</div>
|
||||
<div class="dark-box">
|
||||
|
||||
+28
-24
@@ -1,7 +1,7 @@
|
||||
swagger: '2.0'
|
||||
info:
|
||||
title: Wekan REST API
|
||||
version: v5.24
|
||||
version: v5.26
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
@@ -3681,20 +3681,6 @@ definitions:
|
||||
- createdAt
|
||||
- modifiedAt
|
||||
- authenticationMethod
|
||||
UsersEmails:
|
||||
type: object
|
||||
properties:
|
||||
address:
|
||||
description: |
|
||||
The email address
|
||||
type: string
|
||||
verified:
|
||||
description: |
|
||||
Has the email been verified
|
||||
type: boolean
|
||||
required:
|
||||
- address
|
||||
- verified
|
||||
UsersProfile:
|
||||
type: object
|
||||
properties:
|
||||
@@ -3750,14 +3736,6 @@ definitions:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/definitions/UsersProfileNotifications"
|
||||
activity:
|
||||
description: |
|
||||
The id of the activity this notification references
|
||||
type: string
|
||||
read:
|
||||
description: |
|
||||
the date on which this notification was read
|
||||
type: string
|
||||
showCardsCountAt:
|
||||
description: |
|
||||
showCardCountAt field of the user
|
||||
@@ -3813,7 +3791,6 @@ definitions:
|
||||
Reference to the board templates swimlane Id
|
||||
type: string
|
||||
required:
|
||||
- activity
|
||||
- templatesBoardId
|
||||
- cardTemplatesSwimlaneId
|
||||
- listTemplatesSwimlaneId
|
||||
@@ -3829,3 +3806,30 @@ definitions:
|
||||
description: |
|
||||
last hit that was returned
|
||||
type: number
|
||||
UsersEmails:
|
||||
type: object
|
||||
properties:
|
||||
address:
|
||||
description: |
|
||||
The email address
|
||||
type: string
|
||||
verified:
|
||||
description: |
|
||||
Has the email been verified
|
||||
type: boolean
|
||||
required:
|
||||
- address
|
||||
- verified
|
||||
UsersProfileNotifications:
|
||||
type: object
|
||||
properties:
|
||||
activity:
|
||||
description: |
|
||||
The id of the activity this notification references
|
||||
type: string
|
||||
read:
|
||||
description: |
|
||||
the date on which this notification was read
|
||||
type: string
|
||||
required:
|
||||
- activity
|
||||
@@ -30,5 +30,8 @@ meteor-spk pack wekan-$1.spk
|
||||
# Publish Sandstorm Wekan to exprimental App Market
|
||||
spk publish wekan-$1.spk
|
||||
|
||||
# Upload spk to https://releases.wekan.team/sandstorm/
|
||||
scp wekan-$1.spk x2:/var/snap/wekan/common/releases.wekan.team/sandstorm/
|
||||
|
||||
# Delete old temporary build directory
|
||||
rm -rf ~/repos/wekan/.meteor-spk
|
||||
@@ -63,7 +63,7 @@ tx pull -f -l ka
|
||||
echo "German:"
|
||||
tx pull -f -l de
|
||||
|
||||
echo "German (Switzerland):"
|
||||
echo "German (Switzerland) => Deutsch (Schweiz):"
|
||||
tx pull -f -l de_CH
|
||||
|
||||
echo "Greek:"
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 524,
|
||||
appVersion = 526,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "5.24.0~2021-04-24"),
|
||||
appMarketingVersion = (defaultText = "5.26.0~2021-04-28"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
name: wekan
|
||||
version: '5.24'
|
||||
version: '5.26'
|
||||
summary: The open-source kanban
|
||||
description: |
|
||||
Wekan is an open-source and collaborative kanban board application.
|
||||
|
||||
@@ -99,7 +99,7 @@ services:
|
||||
- postgres
|
||||
- mongodb
|
||||
environment:
|
||||
- POSTGRES_PASSWORD
|
||||
- POSTGRES_PASSWORD=wekan
|
||||
- TORODB_SETUP=true
|
||||
- TORODB_SYNC_SOURCE=mongodb:27017
|
||||
- TORODB_BACKEND_HOST=postgres
|
||||
@@ -113,7 +113,7 @@ services:
|
||||
networks:
|
||||
- wekan-tier
|
||||
environment:
|
||||
- POSTGRES_PASSWORD
|
||||
- POSTGRES_PASSWORD=wekan
|
||||
ports:
|
||||
- "5432:5432"
|
||||
mongodb:
|
||||
|
||||
Reference in new issue
Block a user