diff --git a/NEWS b/NEWS
index 44e593aac..5e6aef746 100644
--- a/NEWS
+++ b/NEWS
@@ -16,6 +16,7 @@ Enhancements
- [web] expose user's defaults and settings inline
- [web] can now discard incoming mails during vacation
- [web] support both backspace and delete keys in Mail and Contacts modules
+ - [web] improved display of appointment/task comments and card notes
Bug fixes
- [web] respect SOGoLanguage and SOGoSupportedLanguages (#4169)
diff --git a/UI/Templates/ContactsUI/UIxContactViewTemplate.wox b/UI/Templates/ContactsUI/UIxContactViewTemplate.wox
index b144d0a6b..de76f05b9 100644
--- a/UI/Templates/ContactsUI/UIxContactViewTemplate.wox
+++ b/UI/Templates/ContactsUI/UIxContactViewTemplate.wox
@@ -177,7 +177,7 @@
diff --git a/UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox b/UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox
index 0b5a81024..8ddb10254 100644
--- a/UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox
+++ b/UI/Templates/SchedulerUI/UIxAppointmentEditorTemplate.wox
@@ -312,7 +312,7 @@
-
+
close
diff --git a/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox b/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox
index 80b642af7..9e38f1b02 100644
--- a/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox
+++ b/UI/Templates/SchedulerUI/UIxAppointmentViewTemplate.wox
@@ -128,9 +128,9 @@
{{url.value}}
-
+
mode_comment
- {{::editor.component.comment}}
+
diff --git a/UI/Templates/SchedulerUI/UIxCalMainView.wox b/UI/Templates/SchedulerUI/UIxCalMainView.wox
index 37d2c4fed..75d22f33a 100644
--- a/UI/Templates/SchedulerUI/UIxCalMainView.wox
+++ b/UI/Templates/SchedulerUI/UIxCalMainView.wox
@@ -772,7 +772,7 @@
{{ ::'Warning' | loc }}
-
+
person {{$AttendeeConflictDialogController.conflictError.attendee_name}} ({{$AttendeeConflictDialogController.conflictError.attendee_email}})
diff --git a/UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox b/UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox
index eb63bbccd..677576c45 100644
--- a/UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox
+++ b/UI/Templates/SchedulerUI/UIxTaskViewTemplate.wox
@@ -96,9 +96,9 @@
{{url.value}}
-
+
mode_comment
- {{::editor.component.comment}}
+
diff --git a/UI/WebServerResources/js/Common/ln2br.filter.js b/UI/WebServerResources/js/Common/ln2br.filter.js
deleted file mode 100644
index 1ffaba288..000000000
--- a/UI/WebServerResources/js/Common/ln2br.filter.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-
-/**
- * ln2br - A filter to convert line feeds and carriage returns to html line breaks
- * @memberof SOGo.Common
- */
-(function () {
- 'use strict';
-
- /**
- * @ngInject
- */
- function ln2br() {
- return function(text) {
- return text ? String(text).replace(/\r?\n/gm, '
') : undefined;
- };
- }
-
- angular.module('SOGo.Common')
- .filter('ln2br', ln2br);
-})();
diff --git a/UI/WebServerResources/js/Common/txt2html.filter.js b/UI/WebServerResources/js/Common/txt2html.filter.js
new file mode 100644
index 000000000..d84715e42
--- /dev/null
+++ b/UI/WebServerResources/js/Common/txt2html.filter.js
@@ -0,0 +1,23 @@
+/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+
+/**
+ * txt2html - A filter to convert line feeds and carriage returns to html line breaks
+ * @memberof SOGo.Common
+ */
+(function () {
+ 'use strict';
+
+ /**
+ * @ngInject
+ */
+ txt2html.$inject = ['linkyFilter'];
+ function txt2html(linkyFilter) {
+ return function(text) {
+ // Linky will first sanitize the text; linefeeds are therefore encoded.
+ return text ? String(linkyFilter(text, ' _blank')).replace(/
/gm, '
') : undefined;
+ };
+ }
+
+ angular.module('SOGo.Common')
+ .filter('txt2html', txt2html);
+})();