Changeset ca0ad44 in Klonkt for src/routes


Ignore:
Timestamp:
06/27/2026 09:14:55 AM (2 months ago)
Author:
Robin Genis <roboburr@…>
Branches:
main
Children:
5421ce1
Parents:
a3e0746
Message:

feat(news): surface embedUrl + a direct "open the player" link

  • routes/posts.js — klonktAudioEmbed now returns embedUrl (the /embed?post=… player URL); the /news builder carries it on each post as p.embedUrl.
  • views/pages/news.ejs — render a top-level "▶ Open the player" link to embedUrl, which opens the player full-page so it works even when a browser shield/CSP blocks the cross-site iframe; + CSS.
  • services/i18n.js — tl.open_player (NL/EN/DE).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/posts.js

    ra3e0746 rca0ad44  
    627627  // Drop the now-redundant "🎵 … listen on <site>" line — the embedded player below shows it.
    628628  const content = html.replace(/<p>🎵[\s\S]*?<\/p>\s*/i, '');
    629   return { origin: u.origin, content, html: `<iframe class="tl-embed-frame tl-embed-klonkt" src="${src}" title="Audio" loading="lazy" frameborder="0" allow="autoplay; encrypted-media"></iframe>` };
     629  return { origin: u.origin, embedUrl: src, content, html: `<iframe class="tl-embed-frame tl-embed-klonkt" src="${src}" title="Audio" loading="lazy" frameborder="0" allow="autoplay; encrypted-media"></iframe>` };
    630630}
    631631
     
    636636    let embedHtml = timelineEmbedHtml(p.content);
    637637    let content = p.content;
     638    let embedUrl = null;
    638639    if (!embedHtml) {
    639640      const k = klonktAudioEmbed(p.content, p.url);
    640       if (k) { embedHtml = k.html; content = k.content; cspOrigins.add(k.origin); }
     641      if (k) { embedHtml = k.html; content = k.content; embedUrl = k.embedUrl; cspOrigins.add(k.origin); }
    641642    }
    642     return { ...p, content, embedHtml };
     643    // embedUrl = the player's direct /embed?post=… URL. Surfaced so the view can offer a
     644    // top-level "open the player" link that works even when a browser shield/CSP blocks
     645    // the cross-site iframe (a full-page navigation is not a cross-site frame).
     646    return { ...p, content, embedHtml, embedUrl };
    643647  });
    644648  // Option A: allow the followed Klonkt sites' player iframes (you follow them) by
Note: See TracChangeset for help on using the changeset viewer.