// Gérer les interractions sur les dossiers pour afficher les non lus
if (window.rcmail) {
// Initialisation
rcmail.addEventListener('init', function(evt) {
if (rcmail.treelist) {
rcmail.treelist.addEventListener('collapse', function(node) {
if (rcmail.env.folders_display != 'unified' && node.classes.includes('boite')) {
folder_collapse(node.id);
}
else if (rcmail.env.folders_display == 'unified' && node.classes.includes('virtual') && (
node.classes.includes('inbox') || node.classes.includes('drafts') || node.classes.includes('models') ||
node.classes.includes('sent') || node.classes.includes('junk') || node.classes.includes('trash')
)) {
folder_collapse_unified(node.id);
}
});
rcmail.treelist.addEventListener('expand', folder_expand);
}
});
// MANTIS 0006400: création de dossiers de messagerie
rcmail.addEventListener('contextmenu_init', function(menu) {
// identify the folder list context menu
if (menu.menu_name == 'folderlist') {
// make sure this new shortcut is always active
menu.addEventListener('activate', function(p) {
if (p.command == 'window-edit-folder') {
if (p.source.className.indexOf('virtual') !== -1) {
// Sur un dossier virtuel par de création pour éviter les erreurs
return false;
}
}
});
}
});
// After getcount
rcmail.addEventListener('responseafter', function(evt) {
if ((evt.response.action == 'getunread'
|| evt.response.action == 'refresh'
|| evt.response.action == 'check-recent'
|| evt.response.action == 'mark'
|| evt.response.action == 'list')
&& rcmail.treelist) {
// Parcourir tous les dossiers collapsé
if (rcmail.env.folders_display == 'unified') {
$('#mailboxlist > .mailbox.virtual').each(function() {
if (!$(this).hasClass('boite') && $(this).find('> div.treetoggle').hasClass('collapsed')) {
var node_id = rcmail.html_identifier_decode($(this).attr('id').replace(/rcmli/, ''));
folder_collapse_unified(node_id);
}
else if ($(this).hasClass('inbox')) {
var node_id = rcmail.html_identifier_decode($(this).attr('id').replace(/rcmli/, ''));
folder_count_unified(node_id);
}
});
} else {
var count = 0;
$('#mailboxlist > .mailbox.boite.virtual').each(function() {
var node_id = rcmail.html_identifier_decode($(this).attr('id').replace(/rcmli/, ''));
if ($(this).find('> div.treetoggle').hasClass('collapsed')) {
res = folder_collapse(node_id);
if (res) {
count += res;
}
}
else {
res = folder_count(node_id);
if (res) {
count += res;
}
}
});
// Positionner le title
if (count) {
set_title(count);
}
}
}
});
}
/**
* Positionne le count dans le titre
*
* @param integer count
*/
function set_title(mycount) {
// set unread count to window title
reg = /^\([0-9]+\)\s+/i;
var new_title = '',
doc_title = String(document.title);
if (mycount && doc_title.match(reg))
new_title = doc_title.replace(reg, '('+mycount+') ');
else if (mycount)
new_title = '('+mycount+') '+doc_title;
else
new_title = doc_title.replace(reg, '');
rcmail.set_pagetitle(new_title);
setTimeout(() => {
rcmail.triggerEvent('set_unread_count_display.after', {set_title:true});
}, 100);
}
/**
* Fonction collapse du dossier unifiés pour traitement
* @param string node_id
*/
function folder_collapse_unified(node_id) {
const li = rcmail.get_folder_li(node_id, '', true);
var count = 0;
$(li).find(' > ul > .mailbox').each(function() {
const child_id = rcmail.html_identifier_decode($(this).attr('id').replace(/rcmli/, ''));
if (rcmail.env.unread_counts[child_id]) {
count += rcmail.env.unread_counts[child_id];
}
});
rcmail.env.unread_counts[node_id] = count;
rcmail.set_unread_count_display(node_id, node_id == 'virtualINBOX');
}
/**
* Fonction count du dossier unifiés pour traitement
* @param string node_id
*/
function folder_count_unified(node_id) {
const li = rcmail.get_folder_li(node_id, '', true);
var count = 0;
$(li).find(' > ul > .mailbox').each(function() {
const child_id = rcmail.html_identifier_decode($(this).attr('id').replace(/rcmli/, ''));
if (rcmail.env.unread_counts[child_id]) {
count += rcmail.env.unread_counts[child_id];
}
});
set_title(count);
}
/**
* Fonction collapse du dossier pour traitement
* @param string node_id
*/
function folder_collapse(node_id) {
const li = rcmail.get_folder_li(node_id, '', true);
const child_id = rcmail.html_identifier_decode(li.querySelector('.mailbox.inbox').id.replace(/rcmli/, ''));
const count = rcmail.env.unread_counts[child_id];
rcmail.env.unread_counts[node_id] = count;
rcmail.set_unread_count_display(node_id, false);
return count;
}
/**
* Fonction pour compter les non lus du dossier
* @param string node_id
*/
function folder_count(node_id) {
const li = rcmail.get_folder_li(node_id, '', true);
const child_id = rcmail.html_identifier_decode(li.querySelector('.mailbox.inbox').id.replace(/rcmli/, ''));
const count = rcmail.env.unread_counts[child_id];
return count;
}
/**
* Fonction expand du dossier pour traitement
* @param {} node
*/
function folder_expand(node) {
if (node.classes.includes('virtual')) {
rcmail.env.unread_counts[node.id] = null;
rcmail.set_unread_count_display(node.id, false);
}
}