Compare commits

...

3 commits

3 changed files with 27 additions and 6 deletions

View file

@ -15,12 +15,12 @@
</script> </script>
<div <div
class="flex items-center gap-2 p-1 text-lg font-bold {className} rounded-lg class="flex flex-nowrap items-center gap-2 p-1 text-lg font-bold {className} rounded-lg
{highlightClasses(type == 'published' ? 'bg-amber-600' : 'bg-purple-600')} {highlightClasses(type == 'published' ? 'bg-amber-600' : 'bg-purple-600')}
{highlightClasses('text-slate-50')}" {highlightClasses('text-slate-50')}"
> >
<Icon {icon} width={28} height={28} /> <Icon {icon} width={28} height={28} />
<span> <span class="text-nowrap">
{dateString {dateString
? new Date(dateString).toLocaleString(undefined, { ? new Date(dateString).toLocaleString(undefined, {
month: 'short', month: 'short',

View file

@ -36,16 +36,17 @@
</section> </section>
<section <section
class="flex shrink-0 flex-col items-center justify-center p-2 font-bold {isPublic class="flex shrink-0 flex-col flex-wrap items-center justify-center p-2 font-bold {isPublic
? 'bg-amber-50 text-slate-950' ? 'bg-amber-50 text-slate-950'
: 'bg-red-500 text-slate-50'} sm:flex-row sm:flex-nowrap sm:gap-5" : 'bg-red-500 text-slate-50'} sm:flex-row sm:gap-x-5"
> >
<DateWidget dateString={data.blogPost.date} type="published" /> <DateWidget dateString={data.blogPost.date} type="published" />
{#if data.blogPost.dateChanged} {#if data.blogPost.dateChanged}
<DateWidget dateString={data.blogPost.dateChanged} type="updated" /> <DateWidget dateString={data.blogPost.dateChanged} type="updated" />
{/if} {/if}
{#each authors as author} {#each authors as author}
<a class="flex items-center gap-2 p-1 text-lg font-bold" href="/team/{author}"> <!-- TODO: rndtrash: из-за 404 не даёт собрать сайт. href="/team/{author}" -->
<a class="flex items-center gap-2 p-1 text-lg font-bold" href="#">
<Icon icon="material-symbols:person" width={28} height={28} /> <Icon icon="material-symbols:person" width={28} height={28} />
<span class="underline"> <span class="underline">
{author} {author}

View file

@ -21,6 +21,26 @@ function makeThumbnail(post: App.BlogPost): string {
return `<br><br><img src="https://teasanctuary.ru${resolveBlogPath(post.slug, post.thumbnail)}"${alt}>`; return `<br><br><img src="https://teasanctuary.ru${resolveBlogPath(post.slug, post.thumbnail)}"${alt}>`;
} }
function makeAuthors(post: App.BlogPost): string {
const authors =
(post.authors == null
? []
: typeof post.authors === 'string'
? [post.authors]
: post.authors)
.map(a => escapeXml(a));
if (authors.length === 0) return '';
let authorsString = authors[0];
if (authors.length > 1) {
const lastAuthor = authors.pop();
authorsString = `${authors.join(', ')} и ${lastAuthor}`;
}
return `\n<author>${authorsString}</author>`;
}
export async function GET({ setHeaders }) { export async function GET({ setHeaders }) {
setHeaders({ setHeaders({
'Cache-Control': 'max-age=0, s-maxage=3600', 'Cache-Control': 'max-age=0, s-maxage=3600',
@ -36,7 +56,7 @@ export async function GET({ setHeaders }) {
<updated>${feedUpdated.toUTCString()}</updated> <updated>${feedUpdated.toUTCString()}</updated>
${posts.map((post) => `<item> ${posts.map((post) => `<item>
<title>${escapeXml(post.title)}</title> <title>${escapeXml(post.title)}</title>
<description><![CDATA[${escapeXml(post.description)}${makeThumbnail(post)}]]></description> <description><![CDATA[${escapeXml(post.description)}${makeThumbnail(post)}]]></description>${makeAuthors(post)}
<guid isPermaLink="true">https://teasanctuary.ru/blog/${post.slug}</guid> <guid isPermaLink="true">https://teasanctuary.ru/blog/${post.slug}</guid>
<link>https://teasanctuary.ru/blog/${post.slug}</link> <link>https://teasanctuary.ru/blog/${post.slug}</link>
<pubDate>${(new Date(post.date!)).toUTCString()}</pubDate> <pubDate>${(new Date(post.date!)).toUTCString()}</pubDate>