Changeset bbf9d1a in Klonkt for src/views/pages/admin-site-edit.ejs
- Timestamp:
- 06/21/2026 02:32:39 PM (3 months ago)
- Branches:
- main
- Children:
- 4885eab
- Parents:
- 929d98d
- File:
-
- 1 edited
-
src/views/pages/admin-site-edit.ejs (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/views/pages/admin-site-edit.ejs
r929d98d rbbf9d1a 1 1 <div class="container admin-site-edit-page"> 2 <p><a href="/admin" class="btn">← Beheer</a></p>3 <h1><%= isNew ? 'Nieuwe site' : 'Uiterlijk: ' + site.title %></h1>2 <p><a href="/admin" class="btn">← <%= t('asite.back_admin') %></a></p> 3 <h1><%= isNew ? t('asite.title_new') : t('asite.title_edit') + ': ' + site.title %></h1> 4 4 5 5 <% if (typeof success !== 'undefined' && success) { %><div class="audio-flash audio-flash--ok"><%= success %></div><% } %> … … 9 9 10 10 <fieldset> 11 <legend> Identiteit</legend>12 <label> 13 <span> Slug (URL) <% if (!isNew) { %><em>(vast)</em><% } %></span>11 <legend><%= t('asite.identity') %></legend> 12 <label> 13 <span><%= t('asite.slug') %> <% if (!isNew) { %><em><%= t('asite.slug_fixed') %></em><% } %></span> 14 14 <span class="slug-url"> 15 15 <span class="slug-url-host" id="slug-host" 16 16 data-prefix="<%= (typeof tenancy !== 'undefined' && tenancy === 'hub') ? '/user/' : '/' %>">website.com/</span><input 17 17 type="text" name="slug" id="slug-input" class="slug-url-input" value="<%= site.slug %>" required <% if (!isNew) { %>readonly<% } %> 18 pattern="[a-z0-9_-]{2,40}" placeholder=" jouwslug"18 pattern="[a-z0-9_-]{2,40}" placeholder="<%= t('asite.slug_placeholder') %>" 19 19 autocapitalize="none" autocorrect="off" spellcheck="false"> 20 20 </span> 21 21 </label> 22 22 <label> 23 <span> Titel <small class="form-hint-inline">— getoond in de kop en als weergavenaam</small></span>23 <span><%= t('asite.field_title') %> <small class="form-hint-inline"><%= t('asite.field_title_hint') %></small></span> 24 24 <input type="text" name="title" value="<%= site.title || '' %>" required maxlength="200"> 25 25 </label> … … 28 28 <% if (user && user.role === 'god') { %> 29 29 <label> 30 <span>Eigenaar <small class="form-hint-inline">— wie deze Klonkt zelf mag beheren</small></span> 30 <span><%= t('asite.owner') %> <small class="form-hint-inline"><%= t('asite.owner_hint') %></small></span> 31 <% var _godSuffix = t('asite.owner_god_suffix'); %> 31 32 <select name="owner_id"> 32 33 <% (typeof users !== 'undefined' ? users : []).forEach(function(u){ %> 33 <option value="<%= u.id %>" <%= (site.owner_id === u.id) ? 'selected' : '' %>><%= u.username %><%= u.role === 'god' ? ' (god)': '' %></option>34 <option value="<%= u.id %>" <%= (site.owner_id === u.id) ? 'selected' : '' %>><%= u.username %><%= u.role === 'god' ? _godSuffix : '' %></option> 34 35 <% }); %> 35 36 </select> … … 37 38 <% } %> 38 39 <label> 39 <span> Tagline <small class="form-hint-inline">— korte oneliner</small></span>40 <span><%= t('asite.tagline') %> <small class="form-hint-inline"><%= t('asite.tagline_hint') %></small></span> 40 41 <input type="text" name="tagline" value="<%= site.tagline || '' %>" maxlength="200"> 41 42 </label> 42 43 <label> 43 <span> Bio / omschrijving <small class="form-hint-inline">— getoond in de profielkop en gebruikt voor SEO</small></span>44 <span><%= t('asite.bio') %> <small class="form-hint-inline"><%= t('asite.bio_hint') %></small></span> 44 45 <textarea name="description" rows="3" maxlength="500"><%= site.description || '' %></textarea> 45 46 </label> 46 47 <label> 47 <span> Profielfoto</span>48 <span><%= t('asite.profile_photo') %></span> 48 49 <div class="photo-picker" id="photo-picker"> 49 50 <div class="photo-thumb" id="photo-thumb" <%= site.profile_photo ? '' : 'data-empty' %>> … … 54 55 </div> 55 56 <div class="photo-controls"> 56 <input type="text" name="profile_photo" id="photo-url" value="<%= site.profile_photo || '' %>" placeholder=" /media/avatars/foo.jpg of https://…">57 <input type="text" name="profile_photo" id="photo-url" value="<%= site.profile_photo || '' %>" placeholder="<%= t('asite.photo_url_placeholder') %>"> 57 58 <div class="photo-actions"> 58 <button type="button" class="btn" id="photo-upload-trigger"> 📷 Uploaden</button>59 <button type="button" class="btn" id="photo-clear" <%= site.profile_photo ? '' : 'hidden' %>> Verwijder</button>59 <button type="button" class="btn" id="photo-upload-trigger"><%= t('asite.photo_upload') %></button> 60 <button type="button" class="btn" id="photo-clear" <%= site.profile_photo ? '' : 'hidden' %>><%= t('asite.photo_clear') %></button> 60 61 <small id="photo-status" class="form-hint photo-status"></small> 61 62 </div> … … 65 66 </label> 66 67 <label> 67 <span> Taal (ISO-code)</span>68 <span><%= t('asite.language') %></span> 68 69 <input type="text" name="language" value="<%= site.language || 'nl' %>" maxlength="8"> 69 70 </label> 70 71 <label class="cb"> 71 72 <input type="checkbox" name="profile_enabled" value="1" <%= site.profile_enabled ? 'checked' : '' %>> 72 <span> Profielkop tonen onder de navigatie</span>73 <span><%= t('asite.profile_enabled') %></span> 73 74 </label> 74 75 </fieldset> 75 76 76 77 <fieldset> 77 <legend> Vormgeving</legend>78 <legend><%= t('asite.appearance') %></legend> 78 79 79 80 <%# ── Curated accent picker ─────────────────────────────────────── … … 82 83 still what's stored in the DB — we just constrain WHICH hex. %> 83 84 <fieldset class="accent-grid"> 84 <legend> Accentkleur</legend>85 <legend><%= t('asite.accent_color') %></legend> 85 86 <% const _curAccent = (site.accent || '#c2410c').toLowerCase(); %> 86 87 <% accents.forEach(function(a) { %> … … 99 100 visitors with a localStorage override, still win over this default. %> 100 101 <fieldset class="theme-default"> 101 <legend> Standaardthema voor nieuwe bezoekers</legend>102 <legend><%= t('asite.theme_default') %></legend> 102 103 <% const td = site.theme_override || ''; %> 103 104 <label class="cb"> 104 105 <input type="radio" name="theme_override" value="" <%= td === '' ? 'checked' : '' %>> 105 <span> Auto (volg device-voorkeur)</span>106 <span><%= t('asite.theme_auto') %></span> 106 107 </label> 107 108 <label class="cb"> 108 109 <input type="radio" name="theme_override" value="light" <%= td === 'light' ? 'checked' : '' %>> 109 <span> Licht</span>110 <span><%= t('asite.theme_light') %></span> 110 111 </label> 111 112 <label class="cb"> 112 113 <input type="radio" name="theme_override" value="dark" <%= td === 'dark' ? 'checked' : '' %>> 113 <span> Donker</span>114 <span><%= t('asite.theme_dark') %></span> 114 115 </label> 115 116 </fieldset> 116 117 117 118 <fieldset class="palette-grid"> 118 <legend> Palet</legend>119 <legend><%= t('asite.palette') %></legend> 119 120 <% palettes.forEach(function(p) { %> 120 121 <label class="palette-swatch"> … … 137 138 138 139 <fieldset> 139 <legend> Gedrag</legend>140 <legend><%= t('asite.behavior') %></legend> 140 141 <label class="cb"> 141 142 <input type="checkbox" name="is_public" value="1" <%= site.is_public ? 'checked' : '' %>> 142 <span> Publieke site (uitvinken voor een besloten kring)</span>143 <span><%= t('asite.is_public') %></span> 143 144 </label> 144 145 <label class="cb"> 145 146 <input type="checkbox" name="robots_index" value="1" <%= site.robots_index ? 'checked' : '' %>> 146 <span> Zoekmachines mogen indexeren (sitemap.xml is verborgen indien uit)</span>147 <span><%= t('asite.robots_index') %></span> 147 148 </label> 148 149 <label class="cb"> 149 150 <input type="checkbox" name="require_login_to_comment" value="1" <%= site.require_login_to_comment ? 'checked' : '' %>> 150 <span> Inloggen vereist om te reageren</span>151 </label> 152 <label> 153 <span> Reactie-moderatie</span>151 <span><%= t('asite.require_login_comment') %></span> 152 </label> 153 <label> 154 <span><%= t('asite.comment_moderation') %></span> 154 155 <select name="comments_moderation_mode"> 155 <option value="trust" <%= (site.comments_moderation_mode || 'trust') === 'trust' ? 'selected' : '' %>> Vertrouwen (automatisch goedkeuren)</option>156 <option value="moderate" <%= site.comments_moderation_mode === 'moderate' ? 'selected' : '' %>> Modereren (eerst in de wachtrij)</option>156 <option value="trust" <%= (site.comments_moderation_mode || 'trust') === 'trust' ? 'selected' : '' %>><%= t('asite.moderation_trust') %></option> 157 <option value="moderate" <%= site.comments_moderation_mode === 'moderate' ? 'selected' : '' %>><%= t('asite.moderation_moderate') %></option> 157 158 </select> 158 159 </label> 159 160 <label class="cb"> 160 161 <input type="checkbox" name="enable_audio_player" value="1" <%= site.enable_audio_player ? 'checked' : '' %>> 161 <span> Audiospeler + embeds inschakelen</span>162 <span><%= t('asite.enable_audio') %></span> 162 163 </label> 163 164 <%# Prutter is een Hub-only premium-functie — toggle alleen tonen in Hub-modus. %> … … 165 166 <label class="cb"> 166 167 <input type="checkbox" name="enable_prutter" value="1" <%= site.enable_prutter ? 'checked' : '' %>> 167 <span> Prutter (DM’s tussen leden) inschakelen <small class="form-hint-inline">— Hub-functie, premium</small></span>168 <span><%= t('asite.enable_prutter') %> <small class="form-hint-inline"><%= t('asite.enable_prutter_hint') %></small></span> 168 169 </label> 169 170 <% } %> … … 171 172 172 173 <fieldset class="profile-links-fieldset"> 173 <legend> Social / streaming-links</legend>174 <p class="form-hint"> Getoond als merk-iconen op de profielkop. Voeg er zoveel toe als je wilt.</p>174 <legend><%= t('asite.links') %></legend> 175 <p class="form-hint"><%= t('asite.links_hint') %></p> 175 176 176 177 <div id="profile-links-rows"> … … 200 201 </template> 201 202 202 <button type="button" id="profile-link-add" class="btn"> + Link toevoegen</button>203 <button type="button" id="profile-link-add" class="btn"><%= t('asite.link_add') %></button> 203 204 </fieldset> 204 205 205 206 <fieldset> 206 <legend> Feed-weergave</legend>207 <label> 208 <span> Standaardweergave voor de homepage</span>207 <legend><%= t('asite.feed_view') %></legend> 208 <label> 209 <span><%= t('asite.feed_default') %></span> 209 210 <select name="feed_view_default"> 210 <option value="timeline" <%= (site.feed_view_default || 'timeline') === 'timeline' ? 'selected' : '' %>> Tijdlijn (chronologische lijst)</option>211 <option value="grid" <%= site.feed_view_default === 'grid' ? 'selected' : '' %>> Grid (kaarten)</option>211 <option value="timeline" <%= (site.feed_view_default || 'timeline') === 'timeline' ? 'selected' : '' %>><%= t('asite.feed_timeline') %></option> 212 <option value="grid" <%= site.feed_view_default === 'grid' ? 'selected' : '' %>><%= t('asite.feed_grid') %></option> 212 213 </select> 213 214 </label> 214 215 <label class="cb"> 215 216 <input type="checkbox" name="feed_view_switch" value="1" <%= site.feed_view_switch ? 'checked' : '' %>> 216 <span> Tijdlijn ↔ grid-schakelaar boven de feed tonen</span>217 <span><%= t('asite.feed_switch') %></span> 217 218 </label> 218 219 <label class="cb"> 219 220 <input type="checkbox" name="show_search" value="1" <%= site.show_search ? 'checked' : '' %>> 220 <span> Zoekknop in de navigatie tonen</span>221 <span><%= t('asite.show_search') %></span> 221 222 </label> 222 223 <label class="cb"> 223 224 <input type="checkbox" name="show_archive_link" value="1" <%= site.show_archive_link ? 'checked' : '' %>> 224 <span> Archief-link in de navigatie tonen</span>225 <span><%= t('asite.show_archive') %></span> 225 226 </label> 226 227 </fieldset> 227 228 228 229 <fieldset class="seo-pointer"> 229 <legend>SEO & social</legend> 230 <p>Titel-sjabloon, canonical, deel-afbeelding, verificatie-metas en meer staan 231 nu op een eigen pagina: <a href="/admin/seo">🔎 SEO & vindbaarheid</a>.</p> 230 <legend><%= t('asite.seo') %></legend> 231 <p><%= t('asite.seo_pointer') %> <a href="/admin/seo"><%= t('asite.seo_link') %></a>.</p> 232 232 </fieldset> 233 233 234 234 <fieldset> 235 <legend> Eigen CSS & HTML <em>(optioneel)</em></legend>236 <label> 237 <span> Eigen CSS (geïnjecteerd als <style> in <head>)</span>235 <legend><%= t('asite.custom_legend') %> <em><%= t('asite.optional') %></em></legend> 236 <label> 237 <span><%= t('asite.custom_css') %></span> 238 238 <textarea name="custom_css" rows="3" placeholder=".foo { color: red; }"><%= site.custom_css || '' %></textarea> 239 239 </label> 240 240 <label> 241 <span> Eigen <head>-HTML (analytics, extra meta’s)</span>241 <span><%= t('asite.custom_head') %></span> 242 242 <textarea name="custom_head_html" rows="3" placeholder="<meta name="...">"><%= site.custom_head_html || '' %></textarea> 243 243 </label> 244 244 <label> 245 <span> Eigen footer-HTML</span>245 <span><%= t('asite.custom_foot') %></span> 246 246 <textarea name="custom_foot_html" rows="3"><%= site.custom_foot_html || '' %></textarea> 247 247 </label> 248 248 </fieldset> 249 249 250 <button type="submit" class="btn btn-primary"><%= isNew ? 'Site aanmaken' : 'Wijzigingen opslaan'%></button>250 <button type="submit" class="btn btn-primary"><%= isNew ? t('asite.submit_create') : t('asite.submit_save') %></button> 251 251 </form> 252 252 </div>
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)