Changeset 9a00f28 in Klonkt for src/views/pages/admin-paid.ejs
- Timestamp:
- 07/22/2026 08:18:39 AM (7 weeks ago)
- Branches:
- main
- Children:
- 6b5d7da
- Parents:
- 96c714f
- git-author:
- Robin <roboburr@…> (07/22/2026 08:18:19 AM)
- git-committer:
- Robin <roboburr@…> (07/22/2026 08:18:39 AM)
- File:
-
- 1 edited
-
src/views/pages/admin-paid.ejs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/views/pages/admin-paid.ejs
r96c714f r9a00f28 1 1 <div class="container" style="max-width:640px;margin:1.5rem auto 3rem;padding:0 1rem"> 2 <h1 style="margin:0 0 .3rem"> Betaalde posts</h1>2 <h1 style="margin:0 0 .3rem"><%= t('apaid.t') %></h1> 3 3 <p style="color:var(--ink-soft,#888);margin:0 0 1.2rem"> 4 Koppel je eigen Patreon-campagne. Supporters ontgrendelen betaalde posts met een passkey, 5 zonder account en zonder cookie. Wij bewaren geen namen of e-mailadressen van supporters, 6 alleen het versleutelde token van jouw campagne. 4 <%= t('apaid.intro') %> 7 5 </p> 8 6 9 <% if (saved) { %><p style="color:var(--accent);font-weight:600"> Opgeslagen.</p><% } %>7 <% if (saved) { %><p style="color:var(--accent);font-weight:600"><%= t('apaid.saved') %></p><% } %> 10 8 <% if (error) { %><p style="color:#c0392b"><%= error %></p><% } %> 11 9 <% if (!secretReady) { %> 12 <p style="color:#c0392b"> Let op: de encryptiesleutel kon niet worden aangemaakt of gelezen (schrijfrechten op de opslagmap?). Zonder sleutel kunnen secrets niet veilig worden opgeslagen.</p>10 <p style="color:#c0392b"><%= t('apaid.nokey') %></p> 13 11 <% } %> 14 12 15 13 <p style="margin:.2rem 0 1.2rem"> 16 Status:14 <%= t('apaid.status') %> 17 15 <% if (status.connected) { %> 18 <strong style="color:var(--accent)"> verbonden</strong> (campagne<%= status.campaignId %>)16 <strong style="color:var(--accent)"><%= t('apaid.connected') %></strong> (<%= t('apaid.campaign') %> <%= status.campaignId %>) 19 17 <% } else if (status.configured) { %> 20 <strong> ingesteld, nog niet verbonden</strong> (vul een token in)18 <strong><%= t('apaid.configured') %></strong> 21 19 <% } else { %> 22 <strong> nog niet ingesteld</strong>20 <strong><%= t('apaid.notyet') %></strong> 23 21 <% } %> 24 22 </p> 25 23 26 24 <div style="border:1px solid var(--border,#333);border-radius:10px;padding:.9rem 1rem;margin:0 0 1.3rem;background:color-mix(in srgb,var(--accent,#6b8f71) 8%,transparent)"> 27 <p style="margin:0 0 .4rem;font-weight:600"> Zet deze redirect-URI in je Patreon-client</p>25 <p style="margin:0 0 .4rem;font-weight:600"><%= t('apaid.redirect_h') %></p> 28 26 <p style="margin:0 0 .6rem;color:var(--ink-soft,#888);font-size:.9rem"> 29 Bij je Patreon API-client, onder <em>Redirect URIs</em>, moet exact deze regel staan. 30 Klopt hij niet, dan geeft Patreon een foutmelding in plaats van je supporters terug te sturen. 27 <%= t('apaid.redirect_p') %> 31 28 </p> 32 29 <div style="display:flex;gap:.5rem;align-items:center"> 33 30 <input id="pd-redirect" type="text" readonly value="<%= redirectUri %>" style="flex:1;min-width:0;font-family:monospace;font-size:.9rem"> 34 <button type="button" id="pd-copy" class="btn" >Kopieer</button>31 <button type="button" id="pd-copy" class="btn" data-copied="<%= t('apaid.copied') %>"><%= t('apaid.copy') %></button> 35 32 </div> 36 33 </div> 37 34 38 35 <form method="post" action="/admin/paid" style="display:flex;flex-direction:column;gap:.9rem"> 39 <label> Patreon client id36 <label><%= t('apaid.client_id') %> 40 37 <input type="text" name="client_id" value="<%= status.clientId || '' %>" autocomplete="off" style="width:100%"> 41 38 </label> 42 <label> Patreon client secret43 <input type="password" name="client_secret" placeholder="<%= status.hasSecret ? 'blijft ongewijzigd': '' %>" autocomplete="off" style="width:100%">44 <small style="color:var(--ink-soft,#888)"> Leeg laten = huidige waarde behouden.</small>39 <label><%= t('apaid.client_secret') %> 40 <input type="password" name="client_secret" placeholder="<%= status.hasSecret ? t('apaid.unchanged') : '' %>" autocomplete="off" style="width:100%"> 41 <small style="color:var(--ink-soft,#888)"><%= t('apaid.keep') %></small> 45 42 </label> 46 <label> Campagne-id43 <label><%= t('apaid.campaign_id') %> 47 44 <input type="text" name="campaign_id" value="<%= status.campaignId || '' %>" autocomplete="off" style="width:100%"> 48 45 </label> 49 <label> Openbare Patreon-pagina46 <label><%= t('apaid.public_page') %> 50 47 <input type="url" name="patreon_url" value="<%= status.patreonUrl || '' %>" placeholder="https://www.patreon.com/jouwnaam" autocomplete="off" style="width:100%"> 51 <small style="color:var(--ink-soft,#888)"> De link waar bezoekers supporter kunnen worden. Getoond als "Word supporter" wanneer iemand nog niet doneert.</small>48 <small style="color:var(--ink-soft,#888)"><%= t('apaid.public_help') %></small> 52 49 </label> 53 <label> Creator access token54 <input type="password" name="access_token" placeholder=" blijft ongewijzigd" autocomplete="off" style="width:100%">50 <label><%= t('apaid.access') %> 51 <input type="password" name="access_token" placeholder="<%= t('apaid.unchanged') %>" autocomplete="off" style="width:100%"> 55 52 </label> 56 <label> Creator refresh token57 <input type="password" name="refresh_token" placeholder=" blijft ongewijzigd" autocomplete="off" style="width:100%">58 <small style="color:var(--ink-soft,#888)"> De access + refresh token krijg je op je Patreon API-clientpagina. Wij versleutelen ze en verversen automatisch.</small>53 <label><%= t('apaid.refresh') %> 54 <input type="password" name="refresh_token" placeholder="<%= t('apaid.unchanged') %>" autocomplete="off" style="width:100%"> 55 <small style="color:var(--ink-soft,#888)"><%= t('apaid.token_help') %></small> 59 56 </label> 60 <label> Standaard-steunbedrag voor een betaalde post (euro)57 <label><%= t('apaid.min_eur') %> 61 58 <input type="text" name="default_min_eur" value="<%= status.defaultMinCents ? (status.defaultMinCents/100).toFixed(2) : '' %>" inputmode="decimal" style="width:120px"> 62 59 </label> 63 60 <div style="display:flex;gap:.6rem;align-items:center"> 64 <button type="submit" class="btn btn-primary"> Opslaan</button>61 <button type="submit" class="btn btn-primary"><%= t('apaid.save') %></button> 65 62 </div> 66 63 </form> 67 64 68 65 <% if (status.configured || status.connected) { %> 69 <form method="post" action="/admin/paid/disconnect" data-confirm=" Patreon-koppeling verwijderen?" style="margin-top:1rem">70 <button type="submit" class="btn btn-danger"> Koppeling verwijderen</button>66 <form method="post" action="/admin/paid/disconnect" data-confirm="<%= t('apaid.disconnect_confirm') %>" style="margin-top:1rem"> 67 <button type="submit" class="btn btn-danger"><%= t('apaid.disconnect') %></button> 71 68 </form> 72 69 <% } %> 73 70 74 <p style="margin-top:1.5rem"><a href="/admin">← Terug naar Beheer</a></p>71 <p style="margin-top:1.5rem"><a href="/admin">← <%= t('admin.back') %></a></p> 75 72 </div> 76 73 … … 83 80 btn.addEventListener('click', function () { 84 81 field.select(); 85 var done = function () { var t = btn.textContent; btn.textContent = 'Gekopieerd'; setTimeout(function () { btn.textContent = t; }, 1400); };82 var done = function () { var t = btn.textContent; btn.textContent = document.getElementById('pd-copy').getAttribute('data-copied'); setTimeout(function () { btn.textContent = t; }, 1400); }; 86 83 if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(field.value).then(done, function () { try { document.execCommand('copy'); done(); } catch (e) {} }); } 87 84 else { try { document.execCommand('copy'); done(); } catch (e) {} }
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)