source: Klonkt/src/views/pages/admin-help.ejs@ 91c0a39

main
Last change on this file since 91c0a39 was d0f4c10, checked in by roboburr <roboburr@…>, 3 months ago

feat(admin): searchable Manual in Admin

New page /admin/handleiding with explanations of all features (posts, audio,
calendar, downloads, press kit, circles, statistics, premium, etc.) + a search
field that filters live by topic/instruction. Link added to the admin dashboard.

Co-Authored-By: Claude <noreply@…>

  • Property mode set to 100644
File size: 10.4 KB
Line 
1<div class="container admin-page hb">
2 <p><a href="/admin" class="btn">&larr; Beheer</a></p>
3 <h1>Handleiding</h1>
4 <p class="hb-intro">Uitleg van alle functies. Typ hieronder om te zoeken op een onderwerp of instructie.</p>
5
6 <div class="hb-search">
7 <input type="search" id="hb-q" placeholder="Zoek… (bv. 'agenda', 'foto', 'cirkel', 'downloads')" autocomplete="off" aria-label="Zoek in de handleiding">
8 </div>
9 <p class="hb-count" id="hb-count" aria-live="polite"></p>
10
11 <div class="hb-list">
12
13 <section class="hb-item">
14 <h2>✍️ Nieuwe post schrijven</h2>
15 <p>Beheer → <strong>Nieuwe post</strong>. Geef een titel en schrijf je inhoud. Onderaan kies je de status: <em>concept</em> (niet zichtbaar) of <em>gepubliceerd</em>. Concepten staan bovenaan in je Beheer-overzicht zodat je ze terugvindt.</p>
16 </section>
17
18 <section class="hb-item">
19 <h2>📝 Samenvatting &amp; Cirkel Preview</h2>
20 <p>Het veld <strong>Samenvatting &amp; Cirkel Preview</strong> (de excerpt) is de korte previewtekst onder een post in lijsten, én de samenvatting die andere sites tonen als ze je post via een <strong>Cirkel</strong> overnemen. Laat je 'm leeg, dan wordt automatisch het begin van de post gebruikt.</p>
21 </section>
22
23 <section class="hb-item">
24 <h2>📌 Post pinnen / volgorde</h2>
25 <p>In de post-editor kun je een post <strong>pinnen</strong> met een rang (1 = bovenaan). Gepinde posts staan vooraan in de tijdlijn/grid, op volgorde van hun rang. Rang leeg of 0 = niet gepind.</p>
26 </section>
27
28 <section class="hb-item">
29 <h2>🗓️ Publiceren plannen &amp; alleen voor fans <small>(premium)</small></h2>
30 <p>In de editor kun je een <strong>publicatiedatum</strong> in de toekomst zetten — de post verschijnt dan automatisch op dat moment. Met <strong>Alleen voor fans</strong> zien niet-ingelogde bezoekers alleen een teaser + login-uitnodiging; ingelogde fans zien alles.</p>
31 </section>
32
33 <section class="hb-item">
34 <h2>🖼️ Afbeeldingen in posts</h2>
35 <p>Afbeeldingen in de tekst en de cover-afbeelding worden altijd <strong>volledig</strong> getoond op de volledige breedte (niet bijgesneden), met hun natuurlijke hoogte.</p>
36 </section>
37
38 <section class="hb-item">
39 <h2>🎵 Audio &amp; nummers toevoegen</h2>
40 <p>Beheer → <strong>Audio</strong>. Upload een bestand of voeg een <em>link-only</em> nummer toe (zonder upload, alleen "open in"-links). Per nummer vul je titel, artiest, cover, en optioneel album/positie in. In een post toon je een nummer met de shortcode <code>[[track:id]]</code>, een album met <code>[[album:Naam]]</code>, een playlist met <code>[[playlist:id]]</code>.</p>
41 </section>
42
43 <section class="hb-item">
44 <h2>© Credit, licentie &amp; "open in"</h2>
45 <p>Per nummer kun je een <strong>eigenaar/credit</strong> (met © -knop) en een <strong>licentie</strong> instellen — die worden ook in de mp3-metadata geschreven. Met de <strong>open-in</strong>-velden (Spotify / YouTube / SoundCloud) verschijnen knoppen om het nummer op die platforms te openen.</p>
46 </section>
47
48 <section class="hb-item">
49 <h2>⬇ Downloads <small>(premium)</small></h2>
50 <p>Markeer een nummer als <strong>downloadbaar</strong> in Beheer → Audio (⬇-knop). Bezoekers vinden ze op de <strong>/downloads</strong>-pagina en laten hun e-mail achter om het bestand te krijgen (komt op je mailinglijst). Wil je downloads prominent in de feed? Maak een gewone post met slug <code>downloads</code> en pin 'm.</p>
51 </section>
52
53 <section class="hb-item">
54 <h2>📃 Albums &amp; playlists</h2>
55 <p>Geef nummers hetzelfde <strong>album</strong> + een <strong>positie</strong> om een album te vormen. Playlists maak je in Beheer → <strong>Playlists</strong>. Beide toon je in een post met <code>[[album:Naam]]</code> of <code>[[playlist:id]]</code>.</p>
56 </section>
57
58 <section class="hb-item">
59 <h2>📅 Agenda / evenementen <small>(premium)</small></h2>
60 <p>Beheer → <strong>Agenda</strong>. Zet bovenaan <strong>"Agenda tonen op de site"</strong> aan — dan verschijnt de Agenda-knop in de balk en is de agendapagina bereikbaar. Voeg evenementen toe (datum, plaats, locatie, tickets). Bezoekers kunnen zich (los van de nieuwsbrief) aanmelden voor een seintje bij een nieuw evenement.</p>
61 </section>
62
63 <section class="hb-item">
64 <h2>📰 Perskit <small>(premium)</small></h2>
65 <p>Een deelbare perspagina op <strong>/pers</strong>. Bewerk 'm via de <strong>✎ Bewerken</strong>-knop op die pagina zelf (alleen jij ziet die). Stel een korte pers-bio + contact in, en kies <strong>tot 5 nummers</strong> die getoond worden (of laat leeg = automatisch de top-5 meest beluisterd).</p>
66 </section>
67
68 <section class="hb-item">
69 <h2>🔗 Cirkels (federatie)</h2>
70 <p>In Beheer → Instellingen zet je je site op <strong>Cirkel</strong>-modus. Daarna voeg je in Beheer → <strong>Cirkel</strong> andere Klonkt-sites toe; hun publieke posts verschijnen dan in je <strong>/cirkel</strong>-feed. Wat anderen van jóu zien is de titel + de "Samenvatting &amp; Cirkel Preview". Hubs doen niet mee aan cirkels (alleen solo-sites).</p>
71 </section>
72
73 <section class="hb-item">
74 <h2>📊 Statistieken <small>(premium)</small></h2>
75 <p>Beheer → <strong>Statistieken</strong>. Cookievrij gemeten. <strong>Bezoeker-dagen</strong> = unieke bezoekers per dag, opgeteld (géén aantal personen). <strong>Weergaven</strong> = home/feed- en post-loads. Beheerder-bezoeken en bots tellen niet mee. Goed voor trends; absolute aantallen met een korrel zout.</p>
76 </section>
77
78 <section class="hb-item">
79 <h2>✉️ Nieuwsbrief <small>(premium)</small></h2>
80 <p>Beheer → <strong>Nieuwsbrief</strong>: stel een bericht op en stuur het naar je bevestigde abonnees. Bezoekers melden zich aan via de footer of <strong>/nieuwsbrief</strong>. Versturen vereist dat e-mail (SMTP) is ingesteld.</p>
81 </section>
82
83 <section class="hb-item">
84 <h2>🔗 Link-in-bio <small>(premium)</small></h2>
85 <p>Een Linktree-achtige pagina op <strong>/links</strong> met je profiel-links. De kliks per link zie je terug in Statistieken.</p>
86 </section>
87
88 <section class="hb-item">
89 <h2>▶️ Embedbare speler <small>(premium)</small></h2>
90 <p>Beheer → Audio toont een kopieerbare <code>&lt;iframe&gt;</code>-code (<strong>/embed</strong>) waarmee je je speler op een andere website kunt insluiten.</p>
91 </section>
92
93 <section class="hb-item">
94 <h2>🎨 Uiterlijk (thema, foto, accent)</h2>
95 <p>Beheer → <strong>Uiterlijk</strong>: stel je sitenaam, tagline, profielfoto, accentkleur en kleurpalet in, en de standaard feed-weergave (Tijdlijn of Grid).</p>
96 </section>
97
98 <section class="hb-item">
99 <h2>👥 Solo- / Hub-modus</h2>
100 <p>Beheer → <strong>Instellingen</strong>: <em>Solo</em> = één site (jij). <em>Hub</em> = een bedrijfs-/labelsite met meerdere makers, elk een eigen Klonkt onder <code>/user/&lt;naam&gt;</code>. <em>Cirkel</em> = solo + federatie met andere sites.</p>
101 </section>
102
103 <section class="hb-item">
104 <h2>⭐ Premium / Patreon</h2>
105 <p>Premium-functies (Hub, Statistieken, Agenda, Downloads, Perskit, Nieuwsbrief, Link-in-bio, Embed, fan-login) ontgrendel je in Beheer → Instellingen door Patreon te koppelen ($10 lifetime). Updates en de kernapp blijven altijd gratis.</p>
106 </section>
107
108 <section class="hb-item">
109 <h2>🔑 Google-login (bezoekers)</h2>
110 <p>Beheer → Instellingen → <strong>Google</strong>. Optioneel: laat bezoekers/fans met Google inloggen om te reageren. Jij beheert met je wachtwoord — Google geeft nooit beheerrechten. Vul je eigen Google-client-gegevens in (per site).</p>
111 </section>
112
113 <section class="hb-item">
114 <h2>🔄 Updates</h2>
115 <p>Beheer → <strong>Updates</strong> (alleen god) toont de huidige versie en of er een nieuwere is. Met "Nu bijwerken" haal je de laatste versie binnen.</p>
116 </section>
117
118 </div>
119
120 <p class="hb-empty" id="hb-empty" hidden>Geen onderwerpen gevonden voor je zoekopdracht.</p>
121</div>
122
123<style>
124 .hb { max-width: 760px; }
125 .hb h1 { margin-bottom: .25rem; }
126 .hb-intro { color: var(--ink-muted, var(--ink-soft)); margin: 0 0 1rem; }
127 .hb-search input {
128 width: 100%; box-sizing: border-box;
129 padding: 0.7rem 0.9rem; font-size: 1rem;
130 border: 1px solid var(--rule); border-radius: 999px;
131 background: var(--paper); color: var(--ink);
132 -webkit-appearance: none; appearance: none;
133 }
134 .hb-search input:focus { outline: 2px solid var(--accent); outline-offset: -1px; border-color: var(--accent); }
135 .hb-count { color: var(--ink-muted, var(--ink-soft)); font-size: .82rem; margin: .5rem 0 1rem; min-height: 1em; }
136 .hb-list { display: flex; flex-direction: column; gap: .75rem; }
137 .hb-item { background: var(--paper-2); border: 1px solid var(--rule); border-radius: 12px; padding: 1rem 1.1rem; }
138 .hb-item h2 { font-family: var(--font-display, serif); font-size: 1.15rem; margin: 0 0 .4rem; }
139 .hb-item h2 small { font-weight: 400; font-size: .72rem; color: var(--accent); border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent); border-radius: 999px; padding: .05rem .45rem; margin-left: .35rem; vertical-align: middle; }
140 .hb-item p { margin: 0; line-height: 1.55; color: var(--ink); }
141 .hb-item code { background: var(--paper); padding: .08rem .35rem; border-radius: 4px; font-size: .88em; }
142 .hb-item.hb-hidden { display: none; }
143 .hb-item mark { background: color-mix(in srgb, var(--accent) 35%, transparent); color: inherit; border-radius: 2px; }
144 .hb-empty { color: var(--ink-muted, var(--ink-soft)); padding: 1rem; text-align: center; }
145</style>
146<script>
147(function () {
148 var q = document.getElementById('hb-q');
149 var items = [].slice.call(document.querySelectorAll('.hb-item'));
150 var empty = document.getElementById('hb-empty');
151 var count = document.getElementById('hb-count');
152 if (!q) return;
153 // Bewaar de originele tekst per item (voor highlight-reset).
154 items.forEach(function (it) { it._txt = it.textContent.toLowerCase(); });
155 function run() {
156 var term = q.value.trim().toLowerCase();
157 var shown = 0;
158 items.forEach(function (it) {
159 var hit = !term || it._txt.indexOf(term) >= 0;
160 it.classList.toggle('hb-hidden', !hit);
161 if (hit) shown++;
162 });
163 empty.hidden = shown !== 0;
164 count.textContent = term ? (shown + ' onderwerp' + (shown === 1 ? '' : 'en') + ' gevonden') : '';
165 }
166 q.addEventListener('input', run);
167})();
168</script>
Note: See TracBrowser for help on using the repository browser.