Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
22ae3a68d6 | ||
|
|
dfa236390d | ||
|
|
b2467b87f5 |
No files matched your search
@@ -237,3 +237,72 @@
|
|||||||
- vollständige Unit- und E2E-Matrix nicht erneut ausgeführt, weil dieser Release
|
- vollständige Unit- und E2E-Matrix nicht erneut ausgeführt, weil dieser Release
|
||||||
ausschließlich Darstellung und redaktionelle Kurztexte verändert
|
ausschließlich Darstellung und redaktionelle Kurztexte verändert
|
||||||
- `git diff --check`: erfolgreich
|
- `git diff --check`: erfolgreich
|
||||||
|
|
||||||
|
## Oberflächenkorrektur 0.5.5
|
||||||
|
|
||||||
|
| Kriterium | Nachweis | Stand |
|
||||||
|
| ------------------------------------- | ------------------------------------------------------------------------------------------- | --------------------- |
|
||||||
|
| Nachtblau und Glaswirkung erkennbar | berechnete Transparenz/Unschärfe und Desktop-/Mobilaufnahmen in Darkmode geprüft | erfüllt am 22.10.2026 |
|
||||||
|
| Schreibfelder im Ruhezustand sichtbar | deckende Feldfarbe, feine Kontur, Innenabstand und Textcursor im Piece-Editor geprüft | erfüllt am 22.10.2026 |
|
||||||
|
| Goldener Tastaturfokus | berechnete Fokusfarbe und Fokus-Schatten am Titelfeld geprüft; Cyanrahmen nicht mehr aktiv | erfüllt am 22.10.2026 |
|
||||||
|
| Inhaltsgerechte Feldhöhen | kurze Einleitung ist niedriger als ausführliche Moderationsfläche; beide bleiben skalierbar | erfüllt am 22.10.2026 |
|
||||||
|
| Lightmode und Smartphone erhalten | fünf Arbeitsansichten bei 1440 × 1000 und 390 × 844 Pixeln ohne Seitenüberlauf geprüft | erfüllt am 22.10.2026 |
|
||||||
|
|
||||||
|
## Ausgeführte Prüfungen Oberflächenkorrektur 0.5.5
|
||||||
|
|
||||||
|
- `npm run check`: 0 Fehler und 0 Warnungen
|
||||||
|
- `npm run build`: erfolgreich mit `@sveltejs/adapter-node`
|
||||||
|
- gezielter Chromium-Lauf in Light/Dark und Desktop/Mobil ohne Konsolenfehler
|
||||||
|
oder horizontalen Seitenüberlauf; Glas-, Feld- und Fokuswerte zusätzlich
|
||||||
|
programmatisch geprüft
|
||||||
|
- vollständige Unit- und E2E-Matrix gemäß Auftrag nicht erneut ausgeführt
|
||||||
|
- `git diff --check`: erfolgreich
|
||||||
|
|
||||||
|
## Oberflächenkorrektur 0.5.6
|
||||||
|
|
||||||
|
| Kriterium | Nachweis | Stand |
|
||||||
|
| --------------------------------------------- | ------------------------------------------------------------------------------------------------- | --------------------- |
|
||||||
|
| Gold-/Violettlicht und Glasflächen sichtbar | Fundus und Editor in Light/Dark auf Desktop und Mobil visuell sowie über berechnete Werte geprüft | erfüllt am 22.10.2026 |
|
||||||
|
| Schreibflächen ruhig und eindeutig abgegrenzt | deckende Feldfarbe, Kontur und goldener Fokus im geöffneten Piece-Editor geprüft | erfüllt am 22.10.2026 |
|
||||||
|
| Neuanlage und Suche unmittelbar erreichbar | sichtbare Fundusaktionen sowie geöffnete Vorlagenauswahl auf Desktop und Mobil geprüft | erfüllt am 22.10.2026 |
|
||||||
|
| Zusatzfilter und Zeilenaktionen zugänglich | native Aufklappelemente für Filter und Aktionen per Browserinteraktion geprüft | erfüllt am 22.10.2026 |
|
||||||
|
| Funduszeilen per Tastatur zu öffnen | erster Titeleintrag fokussiert, mit Eingabetaste geöffnet und Editoraufruf geprüft | erfüllt am 22.10.2026 |
|
||||||
|
| Lightmode und Smartphone ohne Seitenüberlauf | Chromium-Messung bei 1440 × 1000 und 390 × 844 Pixeln in beiden Themes | erfüllt am 22.10.2026 |
|
||||||
|
|
||||||
|
## Ausgeführte Prüfungen Oberflächenkorrektur 0.5.6
|
||||||
|
|
||||||
|
- `npm run check`: 0 Fehler und 0 Warnungen
|
||||||
|
- gezielter Chromium-Lauf für Fundus und geöffneten Piece-Editor bei
|
||||||
|
1440 × 1000 und 390 × 844 Pixeln in Light/Dark ohne Konsolenfehler oder
|
||||||
|
horizontalen Seitenüberlauf
|
||||||
|
- Neuanlage, Zusatzfilter, Aktionsmenü, Tastaturöffnung, Glaswerte und goldener
|
||||||
|
Fokus automatisiert kontrolliert; alle erzeugten Desktop-/Mobilaufnahmen
|
||||||
|
visuell geprüft
|
||||||
|
- Produktionsbuild sowie vollständige Unit- und E2E-Matrix gemäß Auftrag nicht
|
||||||
|
ausgeführt
|
||||||
|
- `git diff --check`: erfolgreich
|
||||||
|
|
||||||
|
## Materialkorrektur 0.5.7
|
||||||
|
|
||||||
|
| Kriterium | Nachweis | Stand |
|
||||||
|
| -------------------------------------------- | ------------------------------------------------------------------------------------------------ | --------------------- |
|
||||||
|
| Hintergrundlicht im Arbeitsbereich sichtbar | Fundus und Sendungsplanung ohne Popup in Dark/Light auf Desktop und Mobil visuell geprüft | erfüllt am 23.10.2026 |
|
||||||
|
| Popup erhält die Lichtstimmung | Editor mit leichtem `46%`-Backdrop und `6px` Blur gegen Ansicht ohne Popup verglichen | erfüllt am 23.10.2026 |
|
||||||
|
| Verschachtelte Ablaufkarten werden dunkler | berechnete RGBA-Werte von Außenglas, Abschnitt, Piece und Aktionsgruppe kontrolliert | erfüllt am 23.10.2026 |
|
||||||
|
| Graue Sonderflächen entfernt | aktive Tabs, private Recherche, Quellen-/Materialflächen und Aktionsgruppen visuell geprüft | erfüllt am 23.10.2026 |
|
||||||
|
| Schreibfelder bleiben ruhig und klar | deckende Feldfüllung, feine Kontur und unveränderter Goldfokus in beiden Editorbereichen geprüft | erfüllt am 23.10.2026 |
|
||||||
|
| Lightmode und Smartphone ohne Seitenüberlauf | Chromium-Messung bei 1440 × 1000 und 390 × 844 Pixeln in beiden Themes | erfüllt am 23.10.2026 |
|
||||||
|
|
||||||
|
## Ausgeführte Prüfungen Materialkorrektur 0.5.7
|
||||||
|
|
||||||
|
- `npm run check`: 0 Fehler und 0 Warnungen
|
||||||
|
- `npm run build`: erfolgreich mit `@sveltejs/adapter-node`
|
||||||
|
- berechnete Styles vor und nach der Korrektur für App-Hintergrund, Navigation,
|
||||||
|
Ablauf-Panel, Abschnitte, Pieces, Aktionsgruppen, Dialog, Backdrop, Tabs,
|
||||||
|
Rechercheflächen und Schreibfelder kontrolliert
|
||||||
|
- gezielter Chromium-Lauf für Sendungsplanung sowie Piece-Editor mit
|
||||||
|
„Sendungstext“ und „Recherche & Quellen“ bei 1440 × 1000 und 390 × 844 Pixeln
|
||||||
|
in Light/Dark ohne Konsolenfehler oder horizontalen Seitenüberlauf
|
||||||
|
- Desktop-/Mobilaufnahmen mit und ohne Popup visuell verglichen
|
||||||
|
- vollständige Funktionstests gemäß Auftrag nicht ausgeführt
|
||||||
|
- `git diff --check`: erfolgreich
|
||||||
@@ -7,6 +7,63 @@ Anmeldung, Rollen, persistente Inhaltsbearbeitung, Sendungsplanung,
|
|||||||
Live-Steuerung, Präsentationsausgabe und lokaler Betriebsweg sind dokumentiert.
|
Live-Steuerung, Präsentationsausgabe und lokaler Betriebsweg sind dokumentiert.
|
||||||
Etappe 6 wurde nicht begonnen.
|
Etappe 6 wurde nicht begonnen.
|
||||||
|
|
||||||
|
## Materialkorrektur 0.5.7
|
||||||
|
|
||||||
|
- statische Gold-/Blauviolettlichter so positioniert und verstärkt, dass sie im
|
||||||
|
eigentlichen Arbeitsbereich statt fast ausschließlich hinter der Navigation
|
||||||
|
sichtbar werden
|
||||||
|
- gemeinsame Materialtokens auf Außenglas, dunkle Innenfläche und tiefe
|
||||||
|
Ablaufkarte reduziert; verschachtelte Abschnitte, Pieces und Aktionsgruppen
|
||||||
|
werden nach innen dunkler statt heller und blaugrau
|
||||||
|
- aktive Editortabs transparent goldgetönt und private Recherche sowie
|
||||||
|
Quellen-/Materialbereiche auf transparente Nachtblauflächen zurückgeführt
|
||||||
|
- Dialog-Backdrop von starker Abdunklung und Unschärfe auf eine leichtere
|
||||||
|
Trennung reduziert, sodass die Lichtstimmung bei geöffnetem Editor erhalten
|
||||||
|
bleibt
|
||||||
|
- deckende Schreibfelder, Goldfokus, Lightmode, Mobilansicht und lesbare
|
||||||
|
Komponentenfüllungen ohne verfügbaren Blur bleiben erhalten
|
||||||
|
|
||||||
|
Die berechneten Hintergründe, Transparenzen, Filter und Begrenzungseigenschaften
|
||||||
|
wurden vor und nach der Korrektur in Chromium kontrolliert. Sendungsplanung,
|
||||||
|
Sendungstext und Recherche wurden bei 1440 × 1000 und 390 × 844 Pixeln in beiden
|
||||||
|
Themes visuell geprüft.
|
||||||
|
|
||||||
|
## Oberflächenkorrektur 0.5.6
|
||||||
|
|
||||||
|
- sichtbare statische Gold- und Blauviolettlichter hinter den halbtransparenten
|
||||||
|
Navigations- und Editorflächen
|
||||||
|
- klarere Glaswirkung in Navigation sowie Kopf, Tabs und Fuß des Piece-Editors;
|
||||||
|
Schreibflächen bleiben deckend, ruhig und goldfokussiert
|
||||||
|
- Fundus mit dauerhaft sichtbarer Suche und Neuanlage, aufklappbaren Zusatzfiltern
|
||||||
|
und inhaltsorientierten, vollständig anklickbaren Zeilen
|
||||||
|
- vorhandene Vorschaubilder beziehungsweise kleine Symbolplatzhalter sowie
|
||||||
|
gebündelte Menüs für Duplizieren und Archivieren
|
||||||
|
- bestehende Server-Actions, Filterlogik und Editor-Bereiche unverändert
|
||||||
|
|
||||||
|
Geprüft wurden `npm run check` sowie Fundus und geöffneter Piece-Editor in
|
||||||
|
Chromium bei 1440 × 1000 und 390 × 844 Pixeln in Light/Dark. Die gezielte
|
||||||
|
Kontrolle umfasste Tastaturöffnung, Menüs, Fokus, Glaswerte, Seitenüberlauf und
|
||||||
|
visuell geprüfte Screenshots. Produktionsbuild und vollständige Testmatrix wurden
|
||||||
|
gemäß Auftrag nicht ausgeführt.
|
||||||
|
|
||||||
|
## Oberflächenkorrektur 0.5.5
|
||||||
|
|
||||||
|
- dunkle Grundfläche mit sehr zurückhaltenden Gold-/Cyan-Lichtfeldern innerhalb
|
||||||
|
der Anwendung statt gleichmäßig deckender Blauflächen
|
||||||
|
- Navigation, große Arbeitsflächen und Piece-Dialog als dunkles beziehungsweise
|
||||||
|
helles Glas mit feiner Lichtkante, Unschärfe und ruhigem Schatten
|
||||||
|
- Gold für Dialogkontur, Fokus, aktive Zustände und Hauptaktionen; Cyan nur noch
|
||||||
|
für ergänzende redaktionelle Hinweise und Links
|
||||||
|
- klar abgegrenzte, weitgehend deckende Schreibfelder mit Goldfokus, Platzhaltern
|
||||||
|
und nach Textrolle abgestuften Höhen
|
||||||
|
- bestehende nachträgliche CSS-Override-Schicht entfernt und die Gestaltung in
|
||||||
|
gemeinsame Tokens und ursprüngliche Komponentenregeln zurückgeführt
|
||||||
|
|
||||||
|
Geprüft wurden Typen, Produktionsbuild sowie gezielte Chromium-Ansichten von
|
||||||
|
Eingang, Fundus, Piece-Editor, Sendungsplanung und Live-Steuerung bei 1440 × 1000
|
||||||
|
und 390 × 844 Pixeln in beiden Themes. Die vollständige Unit- und E2E-Matrix
|
||||||
|
bleibt wie beauftragt Schritt 3 vorbehalten.
|
||||||
|
|
||||||
## Oberflächenrelease 0.5.4
|
## Oberflächenrelease 0.5.4
|
||||||
|
|
||||||
- gemeinsame Light-/Dark-Tokens für ruhige Arbeitsflächen, Cyan als
|
- gemeinsame Light-/Dark-Tokens für ruhige Arbeitsflächen, Cyan als
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "sendewerk",
|
"name": "sendewerk",
|
||||||
"version": "0.5.4",
|
"version": "0.5.7",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "sendewerk",
|
"name": "sendewerk",
|
||||||
"version": "0.5.4",
|
"version": "0.5.7",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@node-rs/argon2": "^2.2.2",
|
"@node-rs/argon2": "^2.2.2",
|
||||||
"better-sqlite3": "^13.0.3",
|
"better-sqlite3": "^13.0.3",
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "sendewerk",
|
"name": "sendewerk",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.5.4",
|
"version": "0.5.7",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=22.17 <25"
|
"node": ">=22.17 <25"
|
||||||
|
|||||||
+559
-603
File diff suppressed because it is too large.
Load diff
@@ -5,7 +5,7 @@
|
|||||||
name,
|
name,
|
||||||
label,
|
label,
|
||||||
value = $bindable(),
|
value = $bindable(),
|
||||||
rows = 7,
|
rows = 4,
|
||||||
placeholder = '',
|
placeholder = '',
|
||||||
privateField = false,
|
privateField = false,
|
||||||
form
|
form
|
||||||
|
|||||||
@@ -228,6 +228,7 @@
|
|||||||
>Titel<input
|
>Titel<input
|
||||||
name="presentationTitle"
|
name="presentationTitle"
|
||||||
maxlength="300"
|
maxlength="300"
|
||||||
|
placeholder="Optionaler Anzeigetitel"
|
||||||
bind:value={draft.presentationTitle}
|
bind:value={draft.presentationTitle}
|
||||||
/></label
|
/></label
|
||||||
>
|
>
|
||||||
@@ -236,6 +237,7 @@
|
|||||||
name="presentationImageUrl"
|
name="presentationImageUrl"
|
||||||
type="url"
|
type="url"
|
||||||
maxlength="2000"
|
maxlength="2000"
|
||||||
|
placeholder="https://…"
|
||||||
bind:value={draft.presentationImageUrl}
|
bind:value={draft.presentationImageUrl}
|
||||||
/></label
|
/></label
|
||||||
>
|
>
|
||||||
@@ -244,6 +246,7 @@
|
|||||||
name="presentationDescription"
|
name="presentationDescription"
|
||||||
rows="3"
|
rows="3"
|
||||||
maxlength="1000"
|
maxlength="1000"
|
||||||
|
placeholder="Kurzer Text zur Vorschau"
|
||||||
bind:value={draft.presentationDescription}></textarea></label
|
bind:value={draft.presentationDescription}></textarea></label
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -59,15 +59,12 @@
|
|||||||
<h1>Fundus</h1>
|
<h1>Fundus</h1>
|
||||||
<p class="page-intro">Vorbereitete Inhalte für kommende Sendungen.</p>
|
<p class="page-intro">Vorbereitete Inhalte für kommende Sendungen.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="fundus-heading-actions">
|
||||||
<div class="heading-stat" aria-label={`${visiblePieces.length} gefundene Inhalte`}>
|
<div class="heading-stat" aria-label={`${visiblePieces.length} gefundene Inhalte`}>
|
||||||
<strong>{visiblePieces.length}</strong><span>Inhalte</span>
|
<strong>{visiblePieces.length}</strong><span>Inhalte</span>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
|
||||||
{#if form?.error}<div class="form-message error" role="alert">{form.error}</div>{/if}
|
|
||||||
{#if form?.success}<div class="form-message success" role="status">{form.success}</div>{/if}
|
|
||||||
|
|
||||||
<details class="template-picker">
|
<details class="template-picker">
|
||||||
<summary>Neues Piece anlegen</summary>
|
<summary><span aria-hidden="true">+</span> Neues Piece</summary>
|
||||||
<div class="template-grid">
|
<div class="template-grid">
|
||||||
{#each data.templates as template (template.id)}
|
{#each data.templates as template (template.id)}
|
||||||
<form method="POST" action="?/create">
|
<form method="POST" action="?/create">
|
||||||
@@ -79,6 +76,10 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
{#if form?.error}<div class="form-message error" role="alert">{form.error}</div>{/if}
|
||||||
|
{#if form?.success}<div class="form-message success" role="status">{form.success}</div>{/if}
|
||||||
|
|
||||||
<form
|
<form
|
||||||
id="library-filters"
|
id="library-filters"
|
||||||
@@ -86,6 +87,7 @@
|
|||||||
method="GET"
|
method="GET"
|
||||||
aria-label="Fundus durchsuchen und filtern"
|
aria-label="Fundus durchsuchen und filtern"
|
||||||
>
|
>
|
||||||
|
<div class="fundus-search-row">
|
||||||
<label class="search-field"
|
<label class="search-field"
|
||||||
><span aria-hidden="true">⌕</span><span class="sr-only">Fundus durchsuchen</span><input
|
><span aria-hidden="true">⌕</span><span class="sr-only">Fundus durchsuchen</span><input
|
||||||
name="q"
|
name="q"
|
||||||
@@ -94,12 +96,17 @@
|
|||||||
placeholder="Titel, Quelle oder Thema suchen"
|
placeholder="Titel, Quelle oder Thema suchen"
|
||||||
/></label
|
/></label
|
||||||
>
|
>
|
||||||
|
<button class="secondary-button" type="submit">Suchen</button>
|
||||||
|
<details class="filter-picker">
|
||||||
|
<summary><span aria-hidden="true">≡</span> Weitere Filter</summary>
|
||||||
|
<div class="filter-panel">
|
||||||
<label
|
<label
|
||||||
><span>Status</span><select name="status"
|
><span>Status</span><select name="status"
|
||||||
><option value="">Alle</option><option
|
><option value="">Alle</option><option
|
||||||
value="ready"
|
value="ready"
|
||||||
selected={data.filters.status === 'ready'}>Sendefertig</option
|
selected={data.filters.status === 'ready'}>Sendefertig</option
|
||||||
><option value="preparing" selected={data.filters.status === 'preparing'}>In Arbeit</option
|
><option value="preparing" selected={data.filters.status === 'preparing'}
|
||||||
|
>In Arbeit</option
|
||||||
></select
|
></select
|
||||||
></label
|
></label
|
||||||
>
|
>
|
||||||
@@ -121,22 +128,19 @@
|
|||||||
>
|
>
|
||||||
<label
|
<label
|
||||||
><span>Abschnitt</span><select name="category"
|
><span>Abschnitt</span><select name="category"
|
||||||
><option value="">Alle</option>{#each data.taxonomy.categories as item (item.id)}<option
|
><option value="">Alle</option
|
||||||
|
>{#each data.taxonomy.categories as item (item.id)}<option
|
||||||
value={item.id}
|
value={item.id}
|
||||||
selected={data.filters.categoryId === item.id}>{item.name}</option
|
selected={data.filters.categoryId === item.id}>{item.name}</option
|
||||||
>{/each}</select
|
>{/each}</select
|
||||||
></label
|
></label
|
||||||
>
|
>
|
||||||
<button class="secondary-button" type="submit">Anwenden</button>
|
|
||||||
<button class="text-button" type="button" onclick={resetFilters}>Zurücksetzen</button>
|
|
||||||
</form>
|
|
||||||
<div class="library-filter-options" aria-label="Fundusauswahl erweitern">
|
<div class="library-filter-options" aria-label="Fundusauswahl erweitern">
|
||||||
<label class="filter-checkbox">
|
<label class="filter-checkbox">
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="includeUsed"
|
name="includeUsed"
|
||||||
value="1"
|
value="1"
|
||||||
form="library-filters"
|
|
||||||
checked={showUsedPieces}
|
checked={showUsedPieces}
|
||||||
onchange={(event) => setSourceFilter('includeUsed', event.currentTarget.checked)}
|
onchange={(event) => setSourceFilter('includeUsed', event.currentTarget.checked)}
|
||||||
/>
|
/>
|
||||||
@@ -147,13 +151,20 @@
|
|||||||
type="checkbox"
|
type="checkbox"
|
||||||
name="includePlanned"
|
name="includePlanned"
|
||||||
value="1"
|
value="1"
|
||||||
form="library-filters"
|
|
||||||
checked={showPlannedPieces}
|
checked={showPlannedPieces}
|
||||||
onchange={(event) => setSourceFilter('includePlanned', event.currentTarget.checked)}
|
onchange={(event) => setSourceFilter('includePlanned', event.currentTarget.checked)}
|
||||||
/>
|
/>
|
||||||
<span>Auch eingeplante Inhalte zeigen</span>
|
<span>Auch eingeplante Inhalte zeigen</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="filter-actions">
|
||||||
|
<button class="secondary-button" type="submit">Filter anwenden</button>
|
||||||
|
<button class="text-button" type="button" onclick={resetFilters}>Zurücksetzen</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
{#if visiblePieces.length}
|
{#if visiblePieces.length}
|
||||||
<div class="piece-grid">
|
<div class="piece-grid">
|
||||||
@@ -166,9 +177,12 @@
|
|||||||
class="piece-thumbnail"
|
class="piece-thumbnail"
|
||||||
src={`/media/${piece.mediaId}`}
|
src={`/media/${piece.mediaId}`}
|
||||||
alt=""
|
alt=""
|
||||||
/>{:else}<span class="piece-thumbnail piece-thumbnail-placeholder" aria-hidden="true"
|
/>{:else}<span class="piece-thumbnail piece-thumbnail-placeholder" aria-hidden="true">
|
||||||
>S</span
|
<svg viewBox="0 0 24 24" fill="none">
|
||||||
>{/if}
|
<path d="M4.5 6.5h15v11h-15zM7.5 14l3-3 2.2 2.2 1.8-1.7 2.5 2.5" />
|
||||||
|
<circle cx="15.8" cy="9.2" r="1.2" />
|
||||||
|
</svg>
|
||||||
|
</span>{/if}
|
||||||
<div class="piece-primary">
|
<div class="piece-primary">
|
||||||
<h2><a href={resolve('/fundus/[id]', { id: piece.id })}>{piece.title}</a></h2>
|
<h2><a href={resolve('/fundus/[id]', { id: piece.id })}>{piece.title}</a></h2>
|
||||||
<p>{piece.summary || 'Noch keine Kurzbeschreibung.'}</p>
|
<p>{piece.summary || 'Noch keine Kurzbeschreibung.'}</p>
|
||||||
@@ -193,8 +207,11 @@
|
|||||||
></span
|
></span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="piece-actions">
|
<details class="piece-actions">
|
||||||
<a class="text-link" href={resolve('/fundus/[id]', { id: piece.id })}>Bearbeiten</a>
|
<summary aria-label={`Aktionen für ${piece.title}`}
|
||||||
|
><span aria-hidden="true">•••</span></summary
|
||||||
|
>
|
||||||
|
<div class="piece-actions-popover">
|
||||||
<form method="POST" action="?/duplicate">
|
<form method="POST" action="?/duplicate">
|
||||||
<input type="hidden" name="pieceId" value={piece.id} /><button
|
<input type="hidden" name="pieceId" value={piece.id} /><button
|
||||||
class="text-button"
|
class="text-button"
|
||||||
@@ -209,6 +226,7 @@
|
|||||||
/><button class="text-button danger-text" type="submit">Archivieren</button>
|
/><button class="text-button danger-text" type="submit">Archivieren</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
</details>
|
||||||
</article>
|
</article>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -303,6 +303,7 @@
|
|||||||
name="summary"
|
name="summary"
|
||||||
rows="3"
|
rows="3"
|
||||||
maxlength="2000"
|
maxlength="2000"
|
||||||
|
placeholder="Worum geht es in wenigen Sätzen?"
|
||||||
bind:value={draft.summary}></textarea></label
|
bind:value={draft.summary}></textarea></label
|
||||||
>
|
>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
@@ -367,6 +368,7 @@
|
|||||||
>Name<input
|
>Name<input
|
||||||
name="sourceLabel"
|
name="sourceLabel"
|
||||||
maxlength="200"
|
maxlength="200"
|
||||||
|
placeholder="Name der Quelle"
|
||||||
bind:value={source.label}
|
bind:value={source.label}
|
||||||
/></label
|
/></label
|
||||||
><label
|
><label
|
||||||
@@ -374,6 +376,7 @@
|
|||||||
name="sourceUrl"
|
name="sourceUrl"
|
||||||
type="url"
|
type="url"
|
||||||
maxlength="2000"
|
maxlength="2000"
|
||||||
|
placeholder="https://…"
|
||||||
bind:value={source.url}
|
bind:value={source.url}
|
||||||
/></label
|
/></label
|
||||||
><label
|
><label
|
||||||
@@ -382,6 +385,7 @@
|
|||||||
type="number"
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
max="86400"
|
max="86400"
|
||||||
|
placeholder="Optional"
|
||||||
bind:value={source.timecodeSeconds}
|
bind:value={source.timecodeSeconds}
|
||||||
/></label
|
/></label
|
||||||
><button
|
><button
|
||||||
@@ -442,6 +446,7 @@
|
|||||||
>Titel<input
|
>Titel<input
|
||||||
name="presentationTitle"
|
name="presentationTitle"
|
||||||
maxlength="300"
|
maxlength="300"
|
||||||
|
placeholder="Optionaler Anzeigetitel"
|
||||||
bind:value={draft.presentationTitle}
|
bind:value={draft.presentationTitle}
|
||||||
oninput={() => (draft.presentationTitleManual = true)}
|
oninput={() => (draft.presentationTitleManual = true)}
|
||||||
/></label
|
/></label
|
||||||
@@ -451,6 +456,7 @@
|
|||||||
name="presentationImageUrl"
|
name="presentationImageUrl"
|
||||||
type="url"
|
type="url"
|
||||||
maxlength="2000"
|
maxlength="2000"
|
||||||
|
placeholder="https://…"
|
||||||
bind:value={draft.presentationImageUrl}
|
bind:value={draft.presentationImageUrl}
|
||||||
oninput={() => (draft.presentationImageManual = true)}
|
oninput={() => (draft.presentationImageManual = true)}
|
||||||
/></label
|
/></label
|
||||||
@@ -460,6 +466,7 @@
|
|||||||
name="presentationDescription"
|
name="presentationDescription"
|
||||||
rows="3"
|
rows="3"
|
||||||
maxlength="1000"
|
maxlength="1000"
|
||||||
|
placeholder="Kurzer Text zur Vorschau"
|
||||||
bind:value={draft.presentationDescription}
|
bind:value={draft.presentationDescription}
|
||||||
oninput={() => (draft.presentationDescriptionManual = true)}></textarea></label
|
oninput={() => (draft.presentationDescriptionManual = true)}></textarea></label
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in new issue
Block a user