Merge branch 'feature/RA-21-news-mark-unread-news-and-add-pagi' into develop
This commit is contained in:
@@ -10,9 +10,15 @@
|
|||||||
|
|
||||||
$sp['output'] .= $tpl->load('card', [$content]);
|
$sp['output'] .= $tpl->load('card', [$content]);
|
||||||
|
|
||||||
|
$sp['output'] .= '<div id="news-entries"></div>';
|
||||||
|
|
||||||
|
// Pagination
|
||||||
|
$sp['output'] .= $tpl->load('pagination', ['html-id' => 'pagination']);
|
||||||
|
|
||||||
// Menu
|
// Menu
|
||||||
$sp['menus'] .= $tpl->load('menu/modal', ['html-id' => 'menu-news', 'title' => 'Details']);
|
$sp['menus'] .= $tpl->load('menu/modal', ['html-id' => 'menu-news', 'title' => 'Details']);
|
||||||
|
|
||||||
|
$sp['scripts'] .= $scripts->load('pagination', ['pageChange', 'page', 'pageCount', 'pagination']);
|
||||||
$cardTemplate = $tpl->load('card', ['%CONTENT%', 'html-id' => '%ID%', 'css-class' => 'card-news']);
|
$cardTemplate = $tpl->load('card', ['%CONTENT%', 'html-id' => '%ID%', 'css-class' => 'card-news']);
|
||||||
$cardTemplate = str_replace("\n", '', $cardTemplate);
|
$cardTemplate = str_replace("\n", '', $cardTemplate);
|
||||||
$cardTemplate = str_replace("\r", '', $cardTemplate);
|
$cardTemplate = str_replace("\r", '', $cardTemplate);
|
||||||
|
|||||||
@@ -1,3 +1,9 @@
|
|||||||
|
var firstCall = true;
|
||||||
|
var rows = [];
|
||||||
|
var page = 1;
|
||||||
|
var pageCount = 0;
|
||||||
|
const showCount = 10;
|
||||||
|
|
||||||
async function onNewsClicked(id) {
|
async function onNewsClicked(id) {
|
||||||
var newsEntry = await dbGetData('news', id);
|
var newsEntry = await dbGetData('news', id);
|
||||||
if (newsEntry == null) return;
|
if (newsEntry == null) return;
|
||||||
@@ -11,23 +17,50 @@ async function onNewsClicked(id) {
|
|||||||
$('#menu-news').showMenu();
|
$('#menu-news').showMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function pageChange() {
|
||||||
|
$('h1')[0].scrollIntoView({ behavior: "smooth" });
|
||||||
|
drawList();
|
||||||
|
}
|
||||||
|
|
||||||
function addCard(newsEntry) {
|
function addCard(newsEntry) {
|
||||||
var content = '<h2>' + newsEntry.title + '</h2>';
|
var badge = '';
|
||||||
|
if (newsEntry.unread) {
|
||||||
|
badge += '<span class="badge bg-highlight color-white p-1">NEW</span> ';
|
||||||
|
}
|
||||||
|
var content = '<h2>' + badge + newsEntry.title + '</h2>';
|
||||||
content += '<p class="mb-2"><i>' + formatDate('d.m.Y', newsEntry.date) + '</i></p>';
|
content += '<p class="mb-2"><i>' + formatDate('d.m.Y', newsEntry.date) + '</i></p>';
|
||||||
content += '<p class="mb-0">' + newsEntry.description.replace('\n', '<br>') + '</p>';
|
content += '<p class="mb-0">' + newsEntry.description.replace('\n', '<br>') + '</p>';
|
||||||
if (newsEntry.html != '') {
|
if (newsEntry.html != '') {
|
||||||
content += '<a class="btn btn-full rounded-s text-uppercase font-900 shadow-m bg-highlight mt-3" href="#" onclick="onNewsClicked(' + newsEntry.id + '); return false;">Mehr lesen</a>';
|
content += '<a class="btn btn-full rounded-s text-uppercase font-900 shadow-m bg-highlight mt-3" href="#" onclick="onNewsClicked(' + newsEntry.id + '); return false;">Mehr lesen</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.page-content').append(cardTemplate.replace('%ID%', 'card-news-' + newsEntry.id).replace('%CONTENT%', content));
|
$('#news-entries').append(cardTemplate.replace('%ID%', 'card-news-' + newsEntry.id).replace('%CONTENT%', content));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function drawList() {
|
||||||
|
$('.card-news').remove();
|
||||||
|
if (rows.length > 0) {
|
||||||
|
var offset = (page - 1) * showCount;
|
||||||
|
var count = (page == pageCount ? (rows.length % showCount) : showCount);
|
||||||
|
if (count == 0) count = showCount;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i ++) {
|
||||||
|
addCard(rows[i + offset]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var siteScript = async function() {
|
var siteScript = async function() {
|
||||||
$('.card-news').remove();
|
if (firstCall) {
|
||||||
|
firstCall = false;
|
||||||
|
initPagination();
|
||||||
|
}
|
||||||
|
rows = [];
|
||||||
var news = await dbGetData('news');
|
var news = await dbGetData('news');
|
||||||
news.sort(function (a,b) {
|
news.sort(function (a,b) {
|
||||||
return b.date.localeCompare(a.date);
|
return b.date.localeCompare(a.date);
|
||||||
});
|
});
|
||||||
|
var newsRead = await dbSettingsGet('news_read_' + BOATCLASS);
|
||||||
var now = new Date();
|
var now = new Date();
|
||||||
var lastYear = new Date();
|
var lastYear = new Date();
|
||||||
lastYear.setFullYear(lastYear.getFullYear() - 1);
|
lastYear.setFullYear(lastYear.getFullYear() - 1);
|
||||||
@@ -36,8 +69,19 @@ var siteScript = async function() {
|
|||||||
newsEntry.date = new Date(Date.parse(newsEntry.date));
|
newsEntry.date = new Date(Date.parse(newsEntry.date));
|
||||||
if (newsEntry.date > now) continue;
|
if (newsEntry.date > now) continue;
|
||||||
if (newsEntry.date < lastYear) break;
|
if (newsEntry.date < lastYear) break;
|
||||||
addCard(newsEntry);
|
newsEntry.unread = (newsEntry.date > newsRead);
|
||||||
|
rows.push(newsEntry);
|
||||||
}
|
}
|
||||||
|
pageCount = Math.ceil(rows.length / showCount);
|
||||||
|
if ((page < 1) || (page > pageCount)) {
|
||||||
|
if (page < 1) {
|
||||||
|
page = 1;
|
||||||
|
} else {
|
||||||
|
page = pageCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
drawPagination();
|
||||||
|
drawList();
|
||||||
dbSettingsSet('news_read_' + BOATCLASS, now);
|
dbSettingsSet('news_read_' + BOATCLASS, now);
|
||||||
updateNewsBadge();
|
updateNewsBadge();
|
||||||
hideLoader();
|
hideLoader();
|
||||||
|
|||||||
Reference in New Issue
Block a user