Release 2.0.5 (#3888)
- Fixed: mandatory fields / form validation for invoice template - Added: Duration as calendar title replacer (open: running records) - Fixed: HTML injection in Calendar - Fixed: Doctrine Proxies are not initialized (leads to empty customer/project) - Fixed: tag creation - Fixed: validation errors do not need to be logged in prod - Removed: Customer VCard download, as used library is outdated and not maintained - Added: supporting translations domains in many new places (menu, help_text, page_setup, report, exporter, calendar)
This commit is contained in:
@@ -227,8 +227,6 @@ export default class KimaiDateUtils extends KimaiPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO remove seconds
|
||||
*
|
||||
* @param {int} hours
|
||||
* @param {int} minutes
|
||||
* @return {string}
|
||||
|
||||
@@ -536,12 +536,22 @@ export default class KimaiCalendar {
|
||||
color = defaultColor;
|
||||
}
|
||||
|
||||
/** @type {KimaiDateUtils} DATES */
|
||||
const DATES = this.kimai.getPlugin('date');
|
||||
|
||||
let title = this.options['patterns']['title'];
|
||||
title = title.replace('{project}', apiItem.project.name);
|
||||
title = title.replace('{customer}', apiItem.project.customer.name);
|
||||
title = title.replace('{description}', apiItem.description ?? '');
|
||||
title = title.replace('{activity}', apiItem.activity.name ?? '');
|
||||
|
||||
if (apiItem.end === null) {
|
||||
// duration = 0 and end = null => is a running entry
|
||||
title = title.replace('{duration}', '');
|
||||
} else {
|
||||
title = title.replace('{duration}', DATES.formatDuration(apiItem.duration));
|
||||
}
|
||||
|
||||
if (title === '' || title === null) {
|
||||
title = apiItem.activity.name;
|
||||
}
|
||||
@@ -573,6 +583,13 @@ export default class KimaiCalendar {
|
||||
/** @type {KimaiEscape} escaper */
|
||||
const escaper = this.kimai.getPlugin('escape');
|
||||
|
||||
let tags = '';
|
||||
if (eventObj.tags !== null && eventObj.tags.length > 0) {
|
||||
for (let tag of eventObj.tags) {
|
||||
tags += '<span class="badge bg-green">' + escaper.escapeForHtml(tag) + '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
return `
|
||||
<div class="calendar-entry">
|
||||
<ul>
|
||||
@@ -581,8 +598,7 @@ export default class KimaiCalendar {
|
||||
<li>` + this.options['translations']['activity'] + `: ` + escaper.escapeForHtml(eventObj.activity) + `</li>
|
||||
</ul>` +
|
||||
(eventObj.description !== null || eventObj.tags.length > 0 ? '<hr>' : '') +
|
||||
(eventObj.description ? '<p>' + eventObj.description + '</p>' : '') +
|
||||
(eventObj.tags !== null && eventObj.tags.length > 0 ? '<span class="badge bg-green">' + eventObj.tags.join('</span> <span class="badge bg-green">') + '</span>' : '') + `
|
||||
(eventObj.description ? '<p>' + escaper.escapeForHtml(eventObj.description) + '</p>' : '') + tags + `
|
||||
</div>`;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user