event.item['author-avatar'],
event.item['author-name'],
event.item.desc,
- formatEventLocationText(event.item.location)
+ htmlToText(event.item.location)
));
break;
case "agendaDay":
event.item['author-avatar'],
event.item['author-name'],
event.item.desc,
- formatEventLocationText(event.item.location)
+ htmlToText(event.item.location)
));
break;
case "listMonth":
trigger: "hover",
placement: "auto",
template: '<div class="popover hovercard event-card"><div class="arrow"></div><div class="popover-content hovercard-content"></div></div>',
+ sanitizeFn: function (content) {
+ return DOMPurify.sanitize(content)
+ },
});
}
function eventHoverBodyTemplate() {
var template = '\
<div class="event-card-basic-content media">\
- <div class="hover-card-details">\
- <div class="hover-card-header left-align">\
- <div class="event-hover-left-date left-align">\
+ <div class="event-card-details">\
+ <div class="event-card-header">\
+ <div class="event-card-left-date">\
<span class="event-date-wrapper medium">\
- <span class="event-hover-short-month">{6}</span>\
- <span class="event-hover-short-date">{7}</span>\
+ <span class="event-card-short-month">{5}</span>\
+ <span class="event-card-short-date">{6}</span>\
</span>\
</div>\
<div class="event-card-content media-body">\
- <div class="event-hover-title">{3}</div>\
- <div class="event-property"><span class="event-hover-date">{5}</span>{4}\
- <div class="event-hover-profile-name profile-entry-name">\
- <span class="left-align1"><a href="{1}" class="userinfo">{2}</a></span>\
- </div>\
+ <div class="event-card-title">{2}</div>\
+ <div class="event-property"><span class="event-card-date">{4}</span>{3}\
+ {1}\
</div>\
</div>\
<div class="clearfix"></div>\
// The template for presenting the event location in the event hover-card
function eventHoverLocationTemplate() {
- var template = '<span class="event-hover-location"> {0}</span></div>';
+ var template = '<span role="presentation" aria-hidden="true"> ยท </span>\
+ <span class="event-card-location"> {0}</span></div>';
return template;
}
+function eventHoverProfileNameTemplate() {
+ var template = '\
+ <div class="event-card-profile-name profile-entry-name">\
+ <a href="{0}" class="userinfo">{1}</a>\
+ </div>';
+ return template;
+}
// transform the event data to html so we can use it in the event hover-card
function eventHoverHtmlContent(event) {
var eventLocation = '';
+ var eventProfileName = '';
// Get the Browser language
var locale = window.navigator.userLanguage || window.navigator.language;
var data = '';
var endTime = moment(event.item.finish).format('HH:mm');
var monthNumber;
- var formattedDate = startDate
+ var formattedDate = startDate;
// We only need the to format the end date if the event does have
// a finish date.
// Get the html template
data = eventHoverBodyTemplate();
- // Get only template data if there exist location data
- if (event.item.location != '') {
- var eventLocationText = formatEventLocationText(event.item.location);
+ // Get only template data if there exists location data
+ if (event.item.location) {
+ var eventLocationText = htmlToText(event.item.location);
// Get the the html template for formatting the location
var eventLocationTemplate = eventHoverLocationTemplate();
// Format the event location data according to the the event location
);
}
+ // Get only template data if there exists a profile name
+ if (event.item['author-name']) {
+ // Get the template
+ var eventProfileNameTemplate = eventHoverProfileNameTemplate();
+ // Insert the data into the template
+ eventProfileName = eventProfileNameTemplate.format(
+ event.item['author-link'],
+ event.item['author-name']
+ );
+ }
+
// Format the event data according to the event hover template
var formatted = data.format(
event.item['author-avatar'], // this isn't used at the present time
- event.item['author-link'],
- event.item['author-name'],
+ eventProfileName,
event.title,
eventLocation,
formattedDate,
return formatted;
}
-
-// Format event location in pure text
-function formatEventLocationText(location) {
- // Friendica can store the event location as text or as html
- // We need to check if the location is html. In this case we need
- // to transform it into clean text
- if (location.startsWith("<div")) {
- var locationHtml = $.parseHTML( location );
- var eventLocationText = locationHtml[0]['innerText'];
- } else {
- var eventLocationText = location.replace("<br>", " ");
- };
-
- return eventLocationText;
-}
\ No newline at end of file