/**
* Class fluxhtml
*
* @returns
*/
function fluxhtml(id, feedUrl) {
this.id = id;
this.feedUrl = feedUrl;
this.rssTimeouts = {};
}
/**
* Methode d'initialisation des flux html
*/
fluxhtml.prototype.init = function() {
window.clearTimeout(this.rssTimeouts[this.id]);
this.rssTimeouts[this.id] = setTimeout(() => {
fetch(this.feedUrl, {credentials: "include", cache: "no-cache"}).then((res) => {
res.text().then((xmlTxt) => {
var domParser = new DOMParser()
let doc = domParser.parseFromString(xmlTxt, 'text/html')
var querySelectorLink = rcmail.env.portail_items[this.id].querySelectorLink;
var querySelectorTitle = rcmail.env.portail_items[this.id].querySelectorTitle;
var querySelectorDescription = rcmail.env.portail_items[this.id].querySelectorDescription;
var querySelectorDate = rcmail.env.portail_items[this.id].querySelectorDate;
var maxItems = rcmail.env.portail_items[this.id].maxItems ? rcmail.env.portail_items[this.id].maxItems : 6;
var items = doc.querySelectorAll(rcmail.env.portail_items[this.id].querySelector);
if (rcmail.env.portail_items[this.id].querySelectorBis) {
var otherItems = doc.querySelectorAll(rcmail.env.portail_items[this.id].querySelectorBis);
}
if (rcmail.env.portail_items[this.id].flip) {
var referenceNode = document.querySelector('#' + this.id + ' .back ul.news > li') !== null ? document.querySelector('#' + this.id + ' .back ul.news > li:first-child') : false;
}
for (let i = 0; i < Math.min(items.length, maxItems); i++) {
let item = items[i];
// title
let title = null;
if (querySelectorTitle) {
title = item.querySelector(querySelectorTitle).textContent;
}
else {
title = item.textContent;
}
// description
let description = null;
if (querySelectorDescription) {
description = item.querySelector(querySelectorDescription).textContent;
}
else if (otherItems && otherItems[i]) {
description = otherItems[i].textContent;
}
let url = querySelectorLink ? item.querySelector(querySelectorLink).textContent : null;
if (rcmail.env.portail_items[this.id].feedOldUrl) {
url = url.replace(rcmail.env.portail_items[this.id].feedOldUrl, rcmail.env.portail_items[this.id].feedNewUrl);
}
let news = {
id: this.id + '_new_' + i,
url: url,
title: title,
description: description,
date: querySelectorDate ? (item.querySelector(querySelectorDate) ? item.querySelector(querySelectorDate).textContent : '') : null,
};
if (i === 0 && !rcmail.env.portail_items[this.id].buttons) {
portail.addNews(this.id, news, false, rcmail.env.portail_items[this.id].newtab);
if (!rcmail.env.portail_items[this.id].flip
&& !rcmail.env.portail_items[this.id].multiNews) {
break;
}
}
if (rcmail.env.portail_items[this.id].flip) {
portail.addNews(this.id, news, true, rcmail.env.portail_items[this.id].newtab, referenceNode);
}
else if (rcmail.env.portail_items[this.id].multiNews && i > 0) {
portail.addNews(this.id, news, false, rcmail.env.portail_items[this.id].newtab);
}
}
});
});
}, 500);
};
/**
* Methode de refresh des flux html
*/
fluxhtml.prototype.refresh = function() {
// Pas de refresh prévu pour l'instant, on le fait au F5
return;
};