This commit is contained in:
2026-07-11 23:05:50 +02:00
parent 37200da79e
commit 82903a3dd2
+32 -47
View File
@@ -148,73 +148,58 @@ function renderBlogEntries(entries) {
: entry.dateLabel || 'Date not provided'; : entry.dateLabel || 'Date not provided';
const createBody = () => { const body = document.createElement('div');
const body = document.createElement('div'); body.className = 'blog-body';
body.className = 'blog-body';
const paragraphs = createParagraphs(entry.body); const paragraphs = createParagraphs(entry.body);
if (!paragraphs.length) { if (!paragraphs.length) {
const empty = document.createElement('p'); const empty = document.createElement('p');
empty.textContent = 'No content yet.'; empty.textContent = 'No content yet.';
body.appendChild(empty); body.appendChild(empty);
} else { } else {
paragraphs.forEach((p) => body.appendChild(p)); paragraphs.forEach((p) => body.appendChild(p));
} }
return body;
};
let bodyContainer; let content = body;
// Collapse long posts
if (entry.body.length > BLOG_COLLAPSE_THRESHOLD) { if (entry.body.length > BLOG_COLLAPSE_THRESHOLD) {
const details = document.createElement('details'); const wrapper = document.createElement('div');
details.className = 'blog-collapse'; wrapper.className = 'blog-collapse';
const summary = document.createElement('summary'); const preview = document.createElement('p');
// Create preview
const preview = document.createElement('div');
preview.className = 'blog-preview'; preview.className = 'blog-preview';
const previewText = entry.body preview.textContent = entry.body
.split('\n') .split('\n')
.filter(line => line.trim()) .filter(line => line.trim())
.slice(0, BLOG_PREVIEW_LINES) .slice(0, BLOG_PREVIEW_LINES)
.join('\n'); .join('\n');
preview.textContent = previewText;
const button = document.createElement('button');
button.className = 'blog-expand-button';
button.textContent = 'Read more';
summary.appendChild(preview); body.style.display = 'none';
const moreText = document.createElement('span'); button.addEventListener('click', () => {
moreText.className = 'read-more-text'; const expanded = body.style.display !== 'none';
moreText.textContent = 'Read more';
summary.appendChild(moreText); body.style.display = expanded ? 'none' : 'block';
preview.style.display = expanded ? 'block' : 'none';
button.textContent = expanded ? 'Read more' : 'Show less';
details.appendChild(summary);
details.appendChild(createBody());
details.addEventListener('toggle', () => {
moreText.textContent = details.open
? 'Show less'
: 'Read more';
preview.style.display = details.open
? 'none'
: 'block';
}); });
bodyContainer = details; wrapper.appendChild(preview);
wrapper.appendChild(button);
wrapper.appendChild(body);
} else { content = wrapper;
bodyContainer = createBody();
} }
@@ -228,8 +213,8 @@ function renderBlogEntries(entries) {
entry.attachments.forEach((attachment) => { entry.attachments.forEach((attachment) => {
const item = document.createElement('li'); const item = document.createElement('li');
const link = document.createElement('a'); const link = document.createElement('a');
link.href = ATTACHMENT_DIR + encodeURI(attachment); link.href = ATTACHMENT_DIR + encodeURI(attachment);
link.target = '_blank'; link.target = '_blank';
link.rel = 'noopener noreferrer'; link.rel = 'noopener noreferrer';
@@ -246,7 +231,7 @@ function renderBlogEntries(entries) {
article.appendChild(title); article.appendChild(title);
article.appendChild(meta); article.appendChild(meta);
article.appendChild(bodyContainer); article.appendChild(content);
container.appendChild(article); container.appendChild(article);
}); });