36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { fail } from '@sveltejs/kit';
|
|
import type { Actions, PageServerLoad } from './$types';
|
|
import { saveImage, deleteUpload } from '$lib/server/storage';
|
|
import { addBannerImage, deleteBannerImage, listBannerImages, moveBanner } from '$lib/server/content';
|
|
|
|
export const load: PageServerLoad = () => ({
|
|
images: listBannerImages().map((i) => ({ id: i.id, url: `/uploads/${i.imagePath}` }))
|
|
});
|
|
|
|
export const actions: Actions = {
|
|
upload: async ({ request }) => {
|
|
const form = await request.formData();
|
|
const files = form
|
|
.getAll('images')
|
|
.filter((e): e is File => e instanceof File && e.size > 0);
|
|
if (files.length === 0) return fail(400, { error: 'Izberite vsaj eno sliko.' });
|
|
for (const file of files) {
|
|
addBannerImage(await saveImage('banner', file));
|
|
}
|
|
return { success: `Naloženih slik: ${files.length}.` };
|
|
},
|
|
|
|
delete: async ({ request }) => {
|
|
const form = await request.formData();
|
|
const path = deleteBannerImage(String(form.get('id') ?? ''));
|
|
if (path) deleteUpload(path);
|
|
return { success: 'Slika izbrisana.' };
|
|
},
|
|
|
|
move: async ({ request }) => {
|
|
const form = await request.formData();
|
|
moveBanner(String(form.get('id') ?? ''), form.get('dir') === 'up' ? 'up' : 'down');
|
|
return { success: null };
|
|
}
|
|
};
|