'+
'
'+escapeHtml(article.title)+'
'+
'
'+escapeHtml(article.excerpt)+'
'+
'
'+
'✍️ '+escapeHtml(article.author)+''+
'📅 '+dateStr+''+
'
'+
'
';
grid.appendChild(card);
});
more.style.display=filtered.length>displayedItems?'flex':'none';
}
function escapeHtml(text){
var map={'&':'&','<':'<','>':'>','"':'"',"'":'''};
return text.replace(/[&<>"']/g,function(m){return map[m];});
}
function updateLanguage(){
paintHead();
render();
}
// инициализация
paintHead();
render();
// обработчики
document.getElementById('mm5-search').addEventListener('input',function(e){
searchQuery=e.target.value;
displayedItems=itemsPerPage;
render();
});
document.getElementById('mm5-sort').addEventListener('change',function(e){
sortBy=e.target.value;
render();
});
document.getElementById('mm5-more').addEventListener('click',function(){
displayedItems+=itemsPerPage;
render();
});
// синхронизация языка
window.addEventListener('storage',function(e){
if(e.key==='mm-lang'&&e.newValue){
lang=e.newValue;
updateLanguage();
}
});
document.addEventListener('click',function(e){
var b=e.target.closest&&e.target.closest('.lang button[data-lang]');
if(b){
setTimeout(function(){
var l='ru';try{l=localStorage.getItem('mm-lang')||'ru';}catch(x){}
if(l!==lang){lang=l;updateLanguage();}
},30);
}
});
})();