Changeset 37edecd in Klonkt for src/views/pages


Ignore:
Timestamp:
06/19/2026 03:46:42 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
1794fac
Parents:
91094a4
Message:

Link-in-bio + click stats (premium feature #6)

Linktree-style page from the existing sites.profile_links (JSON [{platform,url}])
+ PLATFORMS icons. Clicks counted per url.

  • DB: link_clicks (site_id, url, clicks), PK (site_id,url).
  • routes/linkbio.js (premium-gated): GET /links (page with profile_links as buttons), GET /links/go/:i (counts click per url + 302 redirect). Open-redirect safe: only redirects to a url in the site's own profile_links; http(s)/mailto only.
  • view pages/linkbio.ejs (photo/name/bio + brand-coloured buttons with SVG icons).
  • admin-stats: link-clicks section (top 50, per url) for the current site.
  • admin dashboard: 🔗 Link-in-bio link (premium, non-hub).

node --check passed.

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

Location:
src/views/pages
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/admin-stats.ejs

    r91094a4 r37edecd  
    6565    </section>
    6666  </div>
     67
     68  <% if (typeof linkClicks !== 'undefined' && linkClicks.length) { %>
     69    <section class="stats-top" style="margin-top:1.2rem">
     70      <h2>🔗 Link-in-bio klikken</h2>
     71      <ol>
     72        <% linkClicks.forEach(function(l){ %>
     73          <li><a href="<%= l.url %>" target="_blank" rel="noopener"><%= l.url.replace(/^https?:\/\//,'').slice(0,48) %></a><span class="stats-count"><%= l.clicks %></span></li>
     74        <% }); %>
     75      </ol>
     76    </section>
     77  <% } %>
    6778</div>
    6879
  • src/views/pages/admin.ejs

    r91094a4 r37edecd  
    3636      <% if (tenancy !== 'hub' && primarySite) { %><a href="/pers" class="btn" target="_blank">📰 Perskit</a><% } %>
    3737      <% if (tenancy !== 'hub' && primarySite) { %><a href="/downloads" class="btn" target="_blank">⬇ Downloads</a><% } %>
     38      <% if (tenancy !== 'hub' && primarySite) { %><a href="/links" class="btn" target="_blank">🔗 Link-in-bio</a><% } %>
    3839    <% } %>
    3940    <a href="/admin/updates" class="btn">🔄 Updates</a>
Note: See TracChangeset for help on using the changeset viewer.