Skip to content

Commit 17f186c

Browse files
authored
screensaver configurable image widt, change switch timer to seconds
1 parent e6abed4 commit 17f186c

File tree

10 files changed

+65
-18
lines changed

10 files changed

+65
-18
lines changed

api/admin.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@
155155
$newConfig['collage']['placeholderpath'] = $normalizePath($newConfig['collage']['placeholderpath'] ?? null);
156156
$newConfig['screensaver']['image_source'] = $normalizePath($newConfig['screensaver']['image_source'] ?? null);
157157
$newConfig['screensaver']['video_source'] = $normalizePath($newConfig['screensaver']['video_source'] ?? null);
158-
if (isset($newConfig['screensaver']['switch_minutes'])) {
159-
$newConfig['screensaver']['switch_minutes'] = (int)$newConfig['screensaver']['switch_minutes'];
158+
if (isset($newConfig['screensaver']['switch_seconds'])) {
159+
$newConfig['screensaver']['switch_seconds'] = (int)$newConfig['screensaver']['switch_seconds'];
160160
}
161161
if (isset($newConfig['screensaver']['timeout_minutes'])) {
162162
$newConfig['screensaver']['timeout_minutes'] = (int)$newConfig['screensaver']['timeout_minutes'];

assets/js/core.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ const photoBooth = (function () {
7777
screensaverMode === 'folder' ||
7878
(screensaverMode === 'video' ? !!config.screensaver.video_source : !!config.screensaver.image_source)),
7979
screensaverTimeoutMs = (config.screensaver.timeout_minutes || 0) * 60000,
80-
screensaverSwitchMs = (config.screensaver.switch_minutes || 1) * 60000,
80+
screensaverSwitchMs = (config.screensaver.switch_seconds || 60) * 1000,
8181
urlSafe = (src) => (src ? encodeURI(src) : '');
8282

8383
let timeOut,

assets/js/screensaver.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,11 @@
234234

235235
if (mode === 'gallery') {
236236
overlay.addClass('screensaver-overlay--gallery');
237+
const width = config.screensaver.gallery_width || 800;
238+
imageEl.css('width', width + 'px');
237239
} else {
238240
overlay.removeClass('screensaver-overlay--gallery');
241+
imageEl.css('width', '');
239242
}
240243

241244
const source = api.resolveSource();

assets/sass/components/_screensaver.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
width: auto;
7474
height: auto;
7575
max-width: 100%;
76-
max-height: 50vh;
76+
max-height: 100%;
7777
object-fit: contain;
7878
display: none;
7979
}

lib/configsetup.inc.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -599,16 +599,26 @@
599599
'range_step' => 1,
600600
'unit' => 'min',
601601
],
602-
'screensaver_switch_minutes' => [
602+
'screensaver_gallery_width' => [
603603
'view' => 'basic',
604604
'type' => 'number',
605-
'name' => 'screensaver[switch_minutes]',
606-
'placeholder' => $defaultConfig['screensaver']['switch_minutes'],
607-
'value' => $config['screensaver']['switch_minutes'],
605+
'name' => 'screensaver[gallery_width]',
606+
'placeholder' => $defaultConfig['screensaver']['gallery_width'],
607+
'value' => $config['screensaver']['gallery_width'],
608608
'range_min' => 1,
609-
'range_max' => 120,
610609
'range_step' => 1,
611-
'unit' => 'min',
610+
'unit' => 'px',
611+
],
612+
'screensaver_switch_seconds' => [
613+
'view' => 'basic',
614+
'type' => 'number',
615+
'name' => 'screensaver[switch_seconds]',
616+
'placeholder' => $defaultConfig['screensaver']['switch_seconds'],
617+
'value' => $config['screensaver']['switch_seconds'],
618+
'range_min' => 1,
619+
'range_max' => 7200,
620+
'range_step' => 1,
621+
'unit' => 'sec',
612622
],
613623
],
614624
'pictures' => [

resources/lang/de.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,9 +734,10 @@
734734
"manual:reset:reset_remove_print_db": "Wenn aktiviert, wird die Druckdatenbank beim Zurücksetzen entfernt.",
735735
"manual:screensaver:screensaver_enabled": "Bildschirmschoner ein- oder ausschalten.",
736736
"manual:screensaver:screensaver_image_source": "Bild wählen, das im Modus Bild bzw. als Fallback für Galerie genutzt wird.",
737+
"manual:screensaver:screensaver_gallery_width": "Pixelbreite für Galerie-Modus-Bilder; Höhe bleibt automatisch.",
737738
"manual:screensaver:screensaver_mode": "Wählen, was der Bildschirmschoner zeigt: Einzelbild, Video, Bilder aus dem Ordner screensavers oder Galerie-Bilder.",
738739
"manual:screensaver:screensaver_preview": "Öffnet in neuem Tab und startet den Bildschirmschoner sofort mit aktuellen Einstellungen.",
739-
"manual:screensaver:screensaver_switch_minutes": "Minuten zwischen Bild-/Video-Wechseln im Bildschirmschoner.",
740+
"manual:screensaver:screensaver_switch_seconds": "Sekunden zwischen Bild-/Video-Wechseln im Bildschirmschoner.",
740741
"manual:screensaver:screensaver_text": "Optionaler Text im Bildschirmschoner; wechselt mit Event-Text, falls vorhanden.",
741742
"manual:screensaver:screensaver_text_backdrop_color": "Grundfarbe hinter dem Text.",
742743
"manual:screensaver:screensaver_text_backdrop_opacity": "Deckkraft des Text-Hintergrunds (0 = transparent, 1 = deckend).",
@@ -1024,7 +1025,8 @@
10241025
"screensaver:screensaver_image_source": "Bildpfad",
10251026
"screensaver:screensaver_mode": "Medientyp",
10261027
"screensaver:screensaver_preview": "Vorschau",
1027-
"screensaver:screensaver_switch_minutes": "Wechselintervall (Min.)",
1028+
"screensaver:screensaver_gallery_width": "Galerie-Bildbreite (px)",
1029+
"screensaver:screensaver_switch_seconds": "Wechselintervall (Sek.)",
10281030
"screensaver:screensaver_text": "Text",
10291031
"screensaver:screensaver_text_backdrop_color": "Texthintergrund",
10301032
"screensaver:screensaver_text_backdrop_opacity": "Hintergrund-Deckkraft",

resources/lang/en.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -735,10 +735,11 @@
735735
"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.",
736736
"manual:reset:reset_remove_print_db": "If enabled, print database gets removed on reset.",
737737
"manual:screensaver:screensaver_enabled": "Enable or disable the screensaver.",
738+
"manual:screensaver:screensaver_gallery_width": "Pixel width for gallery-mode images; height stays auto.",
738739
"manual:screensaver:screensaver_image_source": "Pick the image used when screensaver mode is image or as fallback for gallery.",
739740
"manual:screensaver:screensaver_mode": "Select what the screensaver shows: single image, single video, images from the screensavers folder, or gallery images.",
740741
"manual:screensaver:screensaver_preview": "Open a new tab and show the screensaver immediately with the current settings.",
741-
"manual:screensaver:screensaver_switch_minutes": "Minutes between image/video changes in the screensaver.",
742+
"manual:screensaver:screensaver_switch_seconds": "Seconds between image/video changes in the screensaver.",
742743
"manual:screensaver:screensaver_text": "Optional text shown on screensaver; alternates with event text if set.",
743744
"manual:screensaver:screensaver_text_backdrop_color": "Backdrop base color behind screensaver text.",
744745
"manual:screensaver:screensaver_text_backdrop_opacity": "Backdrop opacity (0 = transparent, 1 = solid).",
@@ -1023,10 +1024,11 @@
10231024
"screensaver": "Screensaver",
10241025
"screensaver_preview": "Open preview",
10251026
"screensaver:screensaver_enabled": "Screensaver on",
1027+
"screensaver:screensaver_gallery_width": "Gallery image width (px)",
10261028
"screensaver:screensaver_image_source": "Image path",
10271029
"screensaver:screensaver_mode": "Media type",
10281030
"screensaver:screensaver_preview": "Preview",
1029-
"screensaver:screensaver_switch_minutes": "Change interval (min)",
1031+
"screensaver:screensaver_switch_seconds": "Change interval (sec)",
10301032
"screensaver:screensaver_text": "Text",
10311033
"screensaver:screensaver_text_backdrop_color": "Text backdrop",
10321034
"screensaver:screensaver_text_backdrop_opacity": "Backdrop opacity",

src/Configuration/Section/GalleryConfiguration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public static function getNode(): NodeDefinition
2121
->min(1)
2222
->beforeNormalization()
2323
->ifString()
24-
->then(static fn (string $value): int => intval($value))
24+
->then(static fn (string $value): int => intval($value))
2525
->end()
2626
->end()
2727
->integerNode('picture_height')

src/Configuration/Section/ScreensaverConfiguration.php

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,30 @@ public static function getNode(): NodeDefinition
2626
->values(['top-center', 'center', 'bottom-center'])
2727
->defaultValue('center')
2828
->end()
29-
->integerNode('switch_minutes')->min(1)->defaultValue(1)->end()
30-
->integerNode('timeout_minutes')->min(0)->defaultValue(3)->end()
31-
->end();
29+
->integerNode('switch_seconds')
30+
->min(1)
31+
->defaultValue(60)
32+
->beforeNormalization()
33+
->ifString()
34+
->then(static fn (string $value): int => intval($value))
35+
->end()
36+
->end()
37+
->integerNode('gallery_width')
38+
->min(1)
39+
->defaultValue(800)
40+
->beforeNormalization()
41+
->ifString()
42+
->then(static fn (string $value): int => intval($value))
43+
->end()
44+
->end()
45+
->integerNode('timeout_minutes')
46+
->min(0)
47+
->defaultValue(3)
48+
->beforeNormalization()
49+
->ifString()
50+
->then(static fn (string $value): int => intval($value))
51+
->end()
52+
->end()
53+
->end();
3254
}
3355
}

src/Service/ConfigurationService.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,14 @@ protected function processMigration(array $config): array
217217
$config['preview']['url'] = trim(substr($config['preview']['url'], 4, -1), '"\'');
218218
}
219219

220+
// Migrate screensaver switch interval from minutes to seconds
221+
if (isset($config['screensaver'])) {
222+
if (isset($config['screensaver']['switch_minutes']) && !isset($config['screensaver']['switch_seconds'])) {
223+
$config['screensaver']['switch_seconds'] = (int)$config['screensaver']['switch_minutes'] * 60;
224+
}
225+
unset($config['screensaver']['switch_minutes']);
226+
}
227+
220228
// Migrate button font color from old colors config
221229
if (!empty($config['colors']['button_font']) && empty($config['fonts']['button_font_color'])) {
222230
$config['fonts']['button_font_color'] = $config['colors']['button_font'];

0 commit comments

Comments
 (0)