- Live homepage:
Added default Live settings in [includes/db.php](/Users/tyemeclifford/Documents/GH/mediaplayer/includes/db.php) using https://stream.place/embed/tyclifford.com. Added Admin → Settings → Live Section controls in [admin/settings.php](/Users/tyemeclifford/Documents/GH/mediaplayer/admin/settings.php): enable/disable, live title, and embed URL/iframe input. Added a homepage Videos / Live toggle in [index.php](/Users/tyemeclifford/Documents/GH/mediaplayer/index.php). Videos remains the default view, so the homepage behaves normally until Live is selected. Imgur: Added Imgur URL normalization, embed support, oEmbed/thumbnail hooks, and external view count scraping support in [includes/db.php](/Users/tyemeclifford/Documents/GH/mediaplayer/includes/db.php). Supports imgur.com, albums/galleries, and direct i.imgur.com photos/GIFs/videos by routing them through Imgur embeds. Imgur external views now flow into external_view_count, so per-item and overall site totals include readable Imgur provider counts. Updated the add-video hint and README docs.
This commit is contained in:
@@ -33,6 +33,9 @@ $public_stats = $show_page_stats ? public_page_stats() : [
|
||||
'sources' => 0,
|
||||
'views' => $total_public_views,
|
||||
];
|
||||
$live_enabled = live_enabled();
|
||||
$live_url = $live_enabled ? live_embed_url() : '';
|
||||
$live_title = live_embed_title();
|
||||
|
||||
$per_page = (int)setting('catalogue_per_page', '10');
|
||||
$page = max(1, (int)($_GET['page'] ?? 1));
|
||||
@@ -150,6 +153,24 @@ render_head('Media — TyClifford.com', '
|
||||
display:block; width:100%; height:100%;
|
||||
border:0; background:#000;
|
||||
}
|
||||
.home-mode-toggle {
|
||||
display:inline-flex; align-items:center; gap:.4rem;
|
||||
align-self:flex-start;
|
||||
padding:.25rem; border:1px solid var(--border-2); border-radius:var(--r);
|
||||
background:rgba(255,255,255,.03);
|
||||
}
|
||||
.home-mode-toggle button {
|
||||
border:0; border-radius:calc(var(--r) - 1px); cursor:pointer;
|
||||
padding:.38rem .75rem;
|
||||
font-family:"Share Tech Mono",monospace; font-size:.65rem; letter-spacing:.08em;
|
||||
color:var(--text-3); background:transparent;
|
||||
transition:color .2s, background .2s;
|
||||
}
|
||||
.home-mode-toggle button:hover { color:var(--text-2); }
|
||||
.home-mode-toggle button.active { color:var(--green); background:rgba(0,232,122,.12); }
|
||||
.home-mode-panel[hidden] { display:none; }
|
||||
.live-footer { justify-content:space-between; }
|
||||
.live-footer .stream-meta { max-width:60ch; line-height:1.5; letter-spacing:.06em; }
|
||||
|
||||
/* ── Lower grid ── */
|
||||
.lower-grid { display:grid; grid-template-columns:1fr; gap:1rem; }
|
||||
@@ -252,8 +273,30 @@ render_head('Media — TyClifford.com', '
|
||||
|
||||
<?php render_topbar('home'); ?>
|
||||
|
||||
<?php if ($live_enabled): ?>
|
||||
<div class="home-mode-toggle" role="tablist" aria-label="Homepage media mode">
|
||||
<button type="button" class="active" data-home-mode="videos" role="tab" aria-selected="true" aria-controls="home-video-panel">Videos</button>
|
||||
<button type="button" data-home-mode="live" role="tab" aria-selected="false" aria-controls="home-live-panel">Live</button>
|
||||
</div>
|
||||
|
||||
<section class="stream-card home-mode-panel" id="home-live-panel" aria-label="Live stream" hidden>
|
||||
<div class="stream-ratio">
|
||||
<iframe class="provider-embed-frame"
|
||||
src="<?= h($live_url) ?>"
|
||||
allowfullscreen
|
||||
allow="autoplay; fullscreen"
|
||||
title="<?= h($live_title) ?>"
|
||||
referrerpolicy="no-referrer-when-downgrade"></iframe>
|
||||
</div>
|
||||
<div class="stream-footer live-footer">
|
||||
<p class="eyebrow eyebrow-green"><?= h($live_title) ?></p>
|
||||
<p class="stream-meta"><span>live embed</span></p>
|
||||
</div>
|
||||
</section>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- ═══════════════════════════ PLAYER CARD ════════════════════════════════ -->
|
||||
<section class="stream-card" aria-label="Media player">
|
||||
<section class="stream-card home-mode-panel" id="home-video-panel" aria-label="Media player">
|
||||
<div class="stream-ratio">
|
||||
<?php if ($primary_player_source && ($primary_player_source['kind'] ?? '') === 'iframe'): ?>
|
||||
<iframe class="provider-embed-frame"
|
||||
@@ -502,6 +545,22 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
toggleBtn.setAttribute('aria-expanded', open ? 'true' : 'false');
|
||||
});
|
||||
}
|
||||
|
||||
var modeButtons = document.querySelectorAll('[data-home-mode]');
|
||||
var livePanel = document.getElementById('home-live-panel');
|
||||
var videoPanel = document.getElementById('home-video-panel');
|
||||
modeButtons.forEach(function(btn) {
|
||||
btn.addEventListener('click', function() {
|
||||
var mode = btn.getAttribute('data-home-mode');
|
||||
modeButtons.forEach(function(other) {
|
||||
var active = other === btn;
|
||||
other.classList.toggle('active', active);
|
||||
other.setAttribute('aria-selected', active ? 'true' : 'false');
|
||||
});
|
||||
if (livePanel) livePanel.hidden = mode !== 'live';
|
||||
if (videoPanel) videoPanel.hidden = mode === 'live';
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Copy embed code to clipboard
|
||||
|
||||
Reference in New Issue
Block a user