Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions api/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,8 @@
$newConfig['collage']['placeholderpath'] = $normalizePath($newConfig['collage']['placeholderpath'] ?? null);
$newConfig['screensaver']['image_source'] = $normalizePath($newConfig['screensaver']['image_source'] ?? null);
$newConfig['screensaver']['video_source'] = $normalizePath($newConfig['screensaver']['video_source'] ?? null);
if (isset($newConfig['screensaver']['switch_minutes'])) {
$newConfig['screensaver']['switch_minutes'] = (int)$newConfig['screensaver']['switch_minutes'];
if (isset($newConfig['screensaver']['switch_seconds'])) {
$newConfig['screensaver']['switch_seconds'] = (int)$newConfig['screensaver']['switch_seconds'];
}
if (isset($newConfig['screensaver']['timeout_minutes'])) {
$newConfig['screensaver']['timeout_minutes'] = (int)$newConfig['screensaver']['timeout_minutes'];
Expand Down
2 changes: 1 addition & 1 deletion assets/js/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ const photoBooth = (function () {
screensaverMode === 'folder' ||
(screensaverMode === 'video' ? !!config.screensaver.video_source : !!config.screensaver.image_source)),
screensaverTimeoutMs = (config.screensaver.timeout_minutes || 0) * 60000,
screensaverSwitchMs = (config.screensaver.switch_minutes || 1) * 60000,
screensaverSwitchMs = (config.screensaver.switch_seconds || 60) * 1000,
urlSafe = (src) => (src ? encodeURI(src) : '');

let timeOut,
Expand Down
3 changes: 3 additions & 0 deletions assets/js/screensaver.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,8 +234,11 @@

if (mode === 'gallery') {
overlay.addClass('screensaver-overlay--gallery');
const width = config.screensaver.gallery_width || 800;
imageEl.css('width', width + 'px');
} else {
overlay.removeClass('screensaver-overlay--gallery');
imageEl.css('width', '');
}

const source = api.resolveSource();
Expand Down
2 changes: 1 addition & 1 deletion assets/sass/components/_screensaver.scss
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
width: auto;
height: auto;
max-width: 100%;
max-height: 50vh;
max-height: 100%;
object-fit: contain;
display: none;
}
Expand Down
22 changes: 16 additions & 6 deletions lib/configsetup.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -599,16 +599,26 @@
'range_step' => 1,
'unit' => 'min',
],
'screensaver_switch_minutes' => [
'screensaver_gallery_width' => [
'view' => 'basic',
'type' => 'number',
'name' => 'screensaver[switch_minutes]',
'placeholder' => $defaultConfig['screensaver']['switch_minutes'],
'value' => $config['screensaver']['switch_minutes'],
'name' => 'screensaver[gallery_width]',
'placeholder' => $defaultConfig['screensaver']['gallery_width'],
'value' => $config['screensaver']['gallery_width'],
'range_min' => 1,
'range_max' => 120,
'range_step' => 1,
'unit' => 'min',
'unit' => 'px',
],
'screensaver_switch_seconds' => [
'view' => 'basic',
'type' => 'number',
'name' => 'screensaver[switch_seconds]',
'placeholder' => $defaultConfig['screensaver']['switch_seconds'],
'value' => $config['screensaver']['switch_seconds'],
'range_min' => 1,
'range_max' => 7200,
'range_step' => 1,
'unit' => 'sec',
],
],
'pictures' => [
Expand Down
6 changes: 4 additions & 2 deletions resources/lang/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -734,9 +734,10 @@
"manual:reset:reset_remove_print_db": "Wenn aktiviert, wird die Druckdatenbank beim Zurücksetzen entfernt.",
"manual:screensaver:screensaver_enabled": "Bildschirmschoner ein- oder ausschalten.",
"manual:screensaver:screensaver_image_source": "Bild wählen, das im Modus Bild bzw. als Fallback für Galerie genutzt wird.",
"manual:screensaver:screensaver_gallery_width": "Pixelbreite für Galerie-Modus-Bilder; Höhe bleibt automatisch.",
"manual:screensaver:screensaver_mode": "Wählen, was der Bildschirmschoner zeigt: Einzelbild, Video, Bilder aus dem Ordner screensavers oder Galerie-Bilder.",
"manual:screensaver:screensaver_preview": "Öffnet in neuem Tab und startet den Bildschirmschoner sofort mit aktuellen Einstellungen.",
"manual:screensaver:screensaver_switch_minutes": "Minuten zwischen Bild-/Video-Wechseln im Bildschirmschoner.",
"manual:screensaver:screensaver_switch_seconds": "Sekunden zwischen Bild-/Video-Wechseln im Bildschirmschoner.",
"manual:screensaver:screensaver_text": "Optionaler Text im Bildschirmschoner; wechselt mit Event-Text, falls vorhanden.",
"manual:screensaver:screensaver_text_backdrop_color": "Grundfarbe hinter dem Text.",
"manual:screensaver:screensaver_text_backdrop_opacity": "Deckkraft des Text-Hintergrunds (0 = transparent, 1 = deckend).",
Expand Down Expand Up @@ -1024,7 +1025,8 @@
"screensaver:screensaver_image_source": "Bildpfad",
"screensaver:screensaver_mode": "Medientyp",
"screensaver:screensaver_preview": "Vorschau",
"screensaver:screensaver_switch_minutes": "Wechselintervall (Min.)",
"screensaver:screensaver_gallery_width": "Galerie-Bildbreite (px)",
"screensaver:screensaver_switch_seconds": "Wechselintervall (Sek.)",
"screensaver:screensaver_text": "Text",
"screensaver:screensaver_text_backdrop_color": "Texthintergrund",
"screensaver:screensaver_text_backdrop_opacity": "Hintergrund-Deckkraft",
Expand Down
6 changes: 4 additions & 2 deletions resources/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -735,10 +735,11 @@
"manual:reset:reset_remove_media": "If enabled, all captured images and videos gets removed on reset. Note: Uploaded private files (e.g. backgrounds, frames,...) won't be removed! Delete those files manually if needed.",
"manual:reset:reset_remove_print_db": "If enabled, print database gets removed on reset.",
"manual:screensaver:screensaver_enabled": "Enable or disable the screensaver.",
"manual:screensaver:screensaver_gallery_width": "Pixel width for gallery-mode images; height stays auto.",
"manual:screensaver:screensaver_image_source": "Pick the image used when screensaver mode is image or as fallback for gallery.",
"manual:screensaver:screensaver_mode": "Select what the screensaver shows: single image, single video, images from the screensavers folder, or gallery images.",
"manual:screensaver:screensaver_preview": "Open a new tab and show the screensaver immediately with the current settings.",
"manual:screensaver:screensaver_switch_minutes": "Minutes between image/video changes in the screensaver.",
"manual:screensaver:screensaver_switch_seconds": "Seconds between image/video changes in the screensaver.",
"manual:screensaver:screensaver_text": "Optional text shown on screensaver; alternates with event text if set.",
"manual:screensaver:screensaver_text_backdrop_color": "Backdrop base color behind screensaver text.",
"manual:screensaver:screensaver_text_backdrop_opacity": "Backdrop opacity (0 = transparent, 1 = solid).",
Expand Down Expand Up @@ -1023,10 +1024,11 @@
"screensaver": "Screensaver",
"screensaver_preview": "Open preview",
"screensaver:screensaver_enabled": "Screensaver on",
"screensaver:screensaver_gallery_width": "Gallery image width (px)",
"screensaver:screensaver_image_source": "Image path",
"screensaver:screensaver_mode": "Media type",
"screensaver:screensaver_preview": "Preview",
"screensaver:screensaver_switch_minutes": "Change interval (min)",
"screensaver:screensaver_switch_seconds": "Change interval (sec)",
"screensaver:screensaver_text": "Text",
"screensaver:screensaver_text_backdrop_color": "Text backdrop",
"screensaver:screensaver_text_backdrop_opacity": "Backdrop opacity",
Expand Down
2 changes: 1 addition & 1 deletion src/Configuration/Section/GalleryConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public static function getNode(): NodeDefinition
->min(1)
->beforeNormalization()
->ifString()
->then(static fn (string $value): int => intval($value))
->then(static fn (string $value): int => intval($value))
->end()
->end()
->integerNode('picture_height')
Expand Down
28 changes: 25 additions & 3 deletions src/Configuration/Section/ScreensaverConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,30 @@ public static function getNode(): NodeDefinition
->values(['top-center', 'center', 'bottom-center'])
->defaultValue('center')
->end()
->integerNode('switch_minutes')->min(1)->defaultValue(1)->end()
->integerNode('timeout_minutes')->min(0)->defaultValue(3)->end()
->end();
->integerNode('switch_seconds')
->min(1)
->defaultValue(60)
->beforeNormalization()
->ifString()
->then(static fn (string $value): int => intval($value))
->end()
->end()
->integerNode('gallery_width')
->min(1)
->defaultValue(800)
->beforeNormalization()
->ifString()
->then(static fn (string $value): int => intval($value))
->end()
->end()
->integerNode('timeout_minutes')
->min(0)
->defaultValue(3)
->beforeNormalization()
->ifString()
->then(static fn (string $value): int => intval($value))
->end()
->end()
->end();
}
}
8 changes: 8 additions & 0 deletions src/Service/ConfigurationService.php
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,14 @@ protected function processMigration(array $config): array
$config['preview']['url'] = trim(substr($config['preview']['url'], 4, -1), '"\'');
}

// Migrate screensaver switch interval from minutes to seconds
if (isset($config['screensaver'])) {
if (isset($config['screensaver']['switch_minutes']) && !isset($config['screensaver']['switch_seconds'])) {
$config['screensaver']['switch_seconds'] = (int)$config['screensaver']['switch_minutes'] * 60;
}
unset($config['screensaver']['switch_minutes']);
}

// Migrate button font color from old colors config
if (!empty($config['colors']['button_font']) && empty($config['fonts']['button_font_color'])) {
$config['fonts']['button_font_color'] = $config['colors']['button_font'];
Expand Down
Loading