Thorsten Bus
94170857b6
feat(export): render uploaded slide images as slide content, keep background/keyvisual as background media action
...
- New SlideMediaElementBuilder converts FOREGROUND (uploaded) image media
actions into slide-content fill.media elements placed at the top of the
slide content, so uploaded information/moderation/sermon images render as
real content rather than a media-layer action.
- Service background and key-visual images remain BACKGROUND media actions on
the bottom layer; song text and name-tag stay text content elements.
- Wire the builder into ProExportService and ProBundleExportService (after
generate) and split PlaylistExportService::writeProFile into
generate -> inject -> write via ProFileWriter so the playlist path applies
the same rule.
- Parser library unchanged.
- Migrate export tests to the combined rule via a shared InspectsSlideFillMedia
support trait and add SlideMediaElementTest.
2026-07-07 22:15:12 +02:00
Thorsten Bus
42b8b5f428
fix(export): copyright/blank slides, bundle-relative media, probundle injection, song links
...
- populate COPYRIGHT (title/author/copyright/CCLI) + blank slides on every song; songHasContent ignores locked sections
- foreground info/moderation images now bundle-relative (fixes blank images)
- pre-added .probundle injection: Zip64-fix + verbatim .pro extraction (fixes empty bundle)
- nametag subtitle split (text + subtitle); smaller non-bold render
- skip songs with no content slides at export with German warning
- link service agenda songs to SongDB edit modal via #song-<id>
- allow CCLI import of metadata-only songs (no lyric sections)
- expose has_content_slides on service songs; show "Keine Inhaltsfolien"
2026-06-21 09:58:55 +02:00
Thorsten Bus
ae42b48753
feat(songs): per-song sections + section editing; fix CCLI import bugs
...
Refactor lyric storage so each song owns its sections instead of sharing
global labels. Adds song_sections (per song+label) owning song_slides;
labels stay global ProPresenter group tags (name/color/macro). Arrangements
now reference sections, so editing/importing one song no longer corrupts
others that share a label name.
- New: song_sections table + migration with safe backfill; SongSection,
SongArrangementSection models; SongSectionController (edit/add/delete
sections, immediate persistence) wired into SongEditModal.
- Refactor writers/readers: CcliImport, ProImport, SongService,
ArrangementController, SongController, ProExport, PDF, Translation
(translation reset now section-scoped), CCLI pairing.
- CCLI import fixes: parse SongSelect copy-icon format (German "Vers"
abbrev + trailing author), fill empty CTS-synced songs instead of
blocking as duplicate, distinct label colors per section kind,
import&edit/existing-song open the edit modal (no 404/405), teleport
paste dialog above assign dialog, preview shows section content,
correct SongSelect search URL, copy-icon instructions.
- Bookmarklet clicks #generalCopyLyricsButton and captures clipboard;
serves correct host from request.
- Export: embed key-visual/background under fixed bundle-relative names.
- Tests updated for the section model; new section + isolation coverage.
2026-05-31 14:45:47 +02:00