source: Klonkt/src/views/pages/admin-videos.ejs@ daa8eb8

main
Last change on this file since daa8eb8 was daa8eb8, checked in by Robin <roboburr@…>, 3 weeks ago

Beheer: de terugknop op alle vijf dezelfde maat

Robin zag het (16-8): de knop naar /admin verschilde van grootte. Drie
pagina's kregen bij de omzetting class="ax-btn", audio en playlists
hielden de globale class="btn". Dat scheelt zichtbaar --

.btn padding 0.55rem 1rem · radius 5 · geen minimumhoogte
.ax-btn padding 0.6rem 1.1rem · radius 8 · min-height 44px

Het wordt .ax-btn: dit zijn ax-pagina's, en 44px is de maat waar een
vinger op past.

Nu een partial, voor een regel van niets, om dezelfde reden als bij de
tabbalk: een gedeeld element dat op elke pagina los staat loopt uiteen.
Dit is de tweede keer vandaag dat dat gebeurt, en de eerste keer had ik
het kunnen zien -- ik heb de tabbalk toen wel gedeeld gemaakt en de knop
ernaast niet.

scripts/render-admin-views.mjs dekt nu alle vijf de pagina's en
controleert de terugknop op zijn KLASSENAAM. Dat verschil ziet er in de
bron uit als hetzelfde, dus een controle die alleen kijkt of er een link
staat zou het niet vinden. Nagelopen dat hij kan falen: met .btn erin
meldt hij 10 stuk, hersteld nul.

Opmaak nagemeten met admin-css-gelijk.mjs: geen regel verdwenen, geen
regel veranderd, geen regel erbij op alle vijf.

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

  • Property mode set to 100644
File size: 2.4 KB
Line 
1<%# Beheer -> Media -> Video's (Robins opdracht, 30-7): de video's die via C2S
2 binnenkwamen (Shaers composer, de reddingsboei), met gebruik en opruiming.
3
4 De voorvertoning is de video zelf met preload="metadata", zodat de browser
5 het eerste beeld als miniatuur toont tot echte poster-generatie landt
6 (bead: ffmpeg ontbreekt).
7
8 Zelfde romp als de andere mediapagina's; stond hiervoor op inline styles. %>
9<%- include('../partials/admin-styles') %>
10<div class="container ax-page">
11
12 <%- include('../partials/admin-back') %>
13 <%- include('../partials/media-tabs', { active: 'videos', audioOn: audioOn }) %>
14 <header class="ax-header">
15 <div>
16 <h1><%= t('admin.t_media') %></h1>
17 <p class="ax-tagline"><%= items.length %> <%= t('admin.videos_count') %></p>
18 </div>
19 </header>
20
21 <% if (success) { %><div class="ax-flash ax-flash-ok"><%= success %></div><% } %>
22
23 <% if (!items.length) { %>
24 <div class="ax-empty">
25 <div class="ax-empty-icon">&#127916;</div>
26 <p><%= t('admin.videos_empty') %></p>
27 </div>
28 <% } else { %>
29 <div class="ax-grid" style="--ax-tile:220px;">
30 <% items.forEach(function(it){ %>
31 <div class="ax-tile media-card" data-file="<%= it.file %>">
32 <div class="ax-tile-media" style="aspect-ratio:16/10;background:#000;">
33 <video src="<%= it.url %>" preload="metadata" controls playsinline style="height:100%;object-fit:contain;"></video>
34 <% if (!it.usedCount) { %><span class="ax-tile-badge"><%= t('admin.media_unused') %></span><% } %>
35 </div>
36 <div class="ax-tile-body">
37 <div class="ax-tile-meta" style="word-break:break-all;"><%= it.file %></div>
38 <div class="ax-tile-meta"><%= it.kb %> KB &middot; <%= it.usedCount %>&times;</div>
39 <div class="ax-tile-actions">
40 <button type="button" class="ax-btn ax-btn-sm" data-copy="<%= it.url %>"><%= t('admin.media_copy') %></button>
41 <% if (!it.usedCount) { %>
42 <button type="button" class="ax-btn ax-btn-sm ax-btn-danger" data-del="<%= it.file %>">&#128465;</button>
43 <% } %>
44 </div>
45 </div>
46 </div>
47 <% }) %>
48 </div>
49 <% } %>
50</div>
51
52<%# Het script staat in assets/js/mod/admin-videos.js; de gegevens via partials/page-data.ejs (shaer-bqr). %>
53<%- include('../partials/page-data', { pageData: { copy: t('admin.media_copy'), delC: t('admin.videos_del_confirm') } }) %>
Note: See TracBrowser for help on using the repository browser.