From 9717d29862c7a0823826d6116a0de17e7edea9ed Mon Sep 17 00:00:00 2001
From: Julius Knorr
Date: Thu, 22 Jan 2026 12:14:07 +0100
Subject: [PATCH 1/3] fix: Increase max width of the settings container
Signed-off-by: Julius Knorr
---
php/public/style.css | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/php/public/style.css b/php/public/style.css
index 7ac68be6..57e973d9 100644
--- a/php/public/style.css
+++ b/php/public/style.css
@@ -28,7 +28,7 @@
--border-radius-large: 12px;
--default-font-size: 13px;
--checkbox-size: 16px;
- --max-width: 500px;
+ --max-width: 580px;
--container-top-margin: 20px;
--container-bottom-margin: 20px;
--container-padding: 2px;
@@ -37,9 +37,9 @@
--main-padding: 50px;
}
-/* Breakpoint calculation: 500px (max-width) + 100px (main-padding * 2) + 200px (additional space) = 800px
+/* Breakpoint calculation: 580px (max-width) + 100px (main-padding * 2) + 200px (additional space) = 880px
Note: Unfortunately, it's not possible to calculate this dynamically using CSS variables in media queries */
-@media only screen and (max-width: 800px) {
+@media only screen and (max-width: 880px) {
:root {
--container-top-margin: 50px;
--container-bottom-margin: 0px;
From 86dbb435328b0eb92d65d2e84f3df3eaf1116ad2 Mon Sep 17 00:00:00 2001
From: Julius Knorr
Date: Thu, 22 Jan 2026 12:24:13 +0100
Subject: [PATCH 2/3] test: Adapt playwright test to new office selector
Signed-off-by: Julius Knorr
---
php/tests/tests/initial-setup.spec.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/php/tests/tests/initial-setup.spec.js b/php/tests/tests/initial-setup.spec.js
index c88cd8e3..c455e725 100644
--- a/php/tests/tests/initial-setup.spec.js
+++ b/php/tests/tests/initial-setup.spec.js
@@ -32,12 +32,12 @@ test('Initial setup', async ({ page: setupPage }) => {
await containersPage.locator('#talk').uncheck();
await containersPage.getByRole('checkbox', { name: 'Whiteboard' }).uncheck();
await containersPage.getByRole('checkbox', { name: 'Imaginary' }).uncheck();
- await containersPage.getByRole('checkbox', { name: 'Collabora' }).uncheck();
+ await containersPage.getByText('Disable office suite').click();
await containersPage.getByRole('button', { name: 'Save changes' }).click();
await expect(containersPage.locator('#talk')).not.toBeChecked()
await expect(containersPage.getByRole('checkbox', { name: 'Whiteboard' })).not.toBeChecked()
await expect(containersPage.getByRole('checkbox', { name: 'Imaginary' })).not.toBeChecked()
- await expect(containersPage.getByRole('checkbox', { name: 'Collabora' })).not.toBeChecked()
+ await expect(containersPage.locator('#office-none')).toBeChecked()
// Reject invalid time zones
await containersPage.locator('#timezone').click();
From 3e62ba0d272cfa3f251b1cc80f65eae8f6cd69bb Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Fri, 23 Jan 2026 12:07:30 +0100
Subject: [PATCH 3/3] fix some details
Signed-off-by: Simon L.
---
php/public/containers-form-submit.js | 10 ++-
php/public/disable-collabora.js | 2 +-
php/public/disable-onlyoffice.js | 6 +-
php/templates/containers.twig | 2 +-
.../includes/optional-containers.twig | 71 ++++++++++---------
php/tests/tests/initial-setup.spec.js | 2 +-
6 files changed, 50 insertions(+), 43 deletions(-)
diff --git a/php/public/containers-form-submit.js b/php/public/containers-form-submit.js
index abd3fc68..1382bced 100644
--- a/php/public/containers-form-submit.js
+++ b/php/public/containers-form-submit.js
@@ -1,7 +1,9 @@
document.addEventListener("DOMContentLoaded", function () {
// Hide submit button initially
- const optionsFormSubmit = document.getElementById("options-form-submit");
- optionsFormSubmit.style.display = 'none';
+ const optionsFormSubmit = document.querySelectorAll(".options-form-submit");
+ optionsFormSubmit.forEach(element => {
+ element.style.display = 'none';
+ });
const communityFormSubmit = document.getElementById("community-form-submit");
communityFormSubmit.style.display = 'none';
@@ -72,7 +74,9 @@ document.addEventListener("DOMContentLoaded", function () {
}
// Show or hide submit button based on changes
- optionsFormSubmit.style.display = hasChanges ? 'block' : 'none';
+ optionsFormSubmit.forEach(element => {
+ element.style.display = hasChanges ? 'block' : 'none';
+ });
}
// Function to compare current states to initial states
diff --git a/php/public/disable-collabora.js b/php/public/disable-collabora.js
index 3064ef51..762252ce 100644
--- a/php/public/disable-collabora.js
+++ b/php/public/disable-collabora.js
@@ -1,5 +1,5 @@
document.addEventListener("DOMContentLoaded", function(event) {
// Collabora
- let collabora = document.getElementById("collabora");
+ const collabora = document.getElementById("office-collabora");
collabora.disabled = true;
});
\ No newline at end of file
diff --git a/php/public/disable-onlyoffice.js b/php/public/disable-onlyoffice.js
index 83482339..c660bd9d 100644
--- a/php/public/disable-onlyoffice.js
+++ b/php/public/disable-onlyoffice.js
@@ -1,7 +1,5 @@
document.addEventListener("DOMContentLoaded", function(event) {
// OnlyOffice
- let onlyoffice = document.getElementById("onlyoffice");
- if (onlyoffice) {
- onlyoffice.disabled = true;
- }
+ const onlyoffice = document.getElementById("office-onlyoffice");
+ onlyoffice.disabled = true;
});
\ No newline at end of file
diff --git a/php/templates/containers.twig b/php/templates/containers.twig
index 2f722768..8e437bc2 100644
--- a/php/templates/containers.twig
+++ b/php/templates/containers.twig
@@ -27,7 +27,7 @@
{# js for optional containers and additional containers forms #}
-
+
{% set hasBackupLocation = borg_backup_host_location or borg_remote_repo %}
{% set isAnyRunning = false %}
diff --git a/php/templates/includes/optional-containers.twig b/php/templates/includes/optional-containers.twig
index f3739b04..883dc278 100644
--- a/php/templates/includes/optional-containers.twig
+++ b/php/templates/includes/optional-containers.twig
@@ -9,22 +9,10 @@
-
-
-
-
Office Suite
-
Choose your preferred office suite. Only one can be enabled at a time.
+ {% if isAnyRunning == false %}
+
Choose your preferred office suite. Only one can be enabled at a time.
+ {% endif %}
-
+ {% if isAnyRunning == false %}
+
+
+
+
+ {% endif %}
+
+
Additional Optional Containers
+
-
-
-
Additional Optional Containers
+
+
-
+
Minimal system requirements: When any optional container is enabled, at least 2GB RAM, a dual-core CPU and 40GB system storage are required. When enabling ClamAV, Nextcloud Talk Recording-server or Fulltextsearch, at least 3GB RAM are required. For Talk Recording-server additional 2 vCPUs are required. When enabling everything, at least 5GB RAM and a quad-core CPU are required. Recommended are at least 1GB more RAM than the minimal requirement. For further advice and recommendations see this documentation