Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision 1d76e0e533a2fe46c00fba8193b72c7be6685346)
+++ src/routes/posts.js	(revision 4f19322d1a9fd1277644ad1f489f4fb18f9cba6c)
@@ -6,4 +6,5 @@
 import ejs from 'ejs';
 import db from '../config/database.js';
+import { POST_TYPES, KEUZE_TYPES } from '../config/post-types.js';
 import { requireAuth, requireSiteManager, isViewer } from '../middleware/auth.js';
 import { renderPage } from '../middleware/render.js';
@@ -265,4 +266,5 @@
     },
     isNew: true,
+    keuzeTypes: KEUZE_TYPES,
     pageTitle: 'New post',
     bodyClass: 'on-special',
@@ -359,6 +361,5 @@
   finalSlug = uniqueSlug(site.id, finalSlug);
 
-  const validTypes = new Set(['post', 'foto', 'video', 'audio']);
-  const finalType = validTypes.has(type) ? type : 'post';
+  const finalType = POST_TYPES.has(type) ? type : 'post';
   const pollJson = parsePollForm(req.body);   // AS2 Question definition, or null
   const postId = uuid();
@@ -454,4 +455,5 @@
     post,
     isNew: false,
+    keuzeTypes: KEUZE_TYPES,
     pollLocked,
     fediOpenAudio: postAudioFediOpen(site.id, post.content),
@@ -486,6 +488,5 @@
   const newSlug = req.body.slug;
   const action = req.body.action || 'save';
-  const validTypes = new Set(['post', 'foto', 'video', 'audio']);
-  const finalType = validTypes.has(type) ? type : (post.type || 'post');
+  const finalType = POST_TYPES.has(type) ? type : (post.type || 'post');
 
   // A poll that has already received votes is frozen (you can still edit the surrounding
