From 7a9eb1baa670431b21276ba7e9b01c49293c8fe6 Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Wed, 19 Aug 2026 14:42:28 +0200 Subject: [PATCH 1/3] 0.9.6.15 separate legacy storage from WebDAV source selection --- js/nc_connector_source_ui.js | 90 ++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 js/nc_connector_source_ui.js diff --git a/js/nc_connector_source_ui.js b/js/nc_connector_source_ui.js new file mode 100644 index 0000000..d69b108 --- /dev/null +++ b/js/nc_connector_source_ui.js @@ -0,0 +1,90 @@ +(function () { + 'use strict'; + + function enhanceMigrationButtons(root) { + [].slice.call(root.querySelectorAll('button[value="nc_connector_migrate_start"]')).forEach(function (button) { + button.textContent = 'Nextcloud-Ordner auswählen & migrieren'; + button.title = 'Die WebDAV-Quelle wird im Nextcloud-Ordnerbrowser ausgewählt. Der bestehende SMB-/Legacy-Speicher wird nicht als WebDAV-Quelle übernommen.'; + }); + } + + function enhanceEditor(root) { + var form = root.querySelector('[data-edit-v2-form]'); + if (!form || form.dataset.sourceUiEnhanced === '1') return; + form.dataset.sourceUiEnhanced = '1'; + + var headings = [].slice.call(form.querySelectorAll('h5')); + var legacyHeading = headings.find(function (node) { + return (node.textContent || '').trim() === 'Bestehender Legacy-Weg'; + }); + var storageHeading = headings.find(function (node) { + return (node.textContent || '').trim() === 'Speicherorte'; + }); + var storageList = form.querySelector('[data-storage-list]'); + var addStorage = form.querySelector('[data-add-storage]'); + + if (legacyHeading && !form.querySelector('[data-webdav-source-note]')) { + var note = document.createElement('p'); + note.dataset.webdavSourceNote = '1'; + note.className = 'bratonien-main-cache__warning'; + note.innerHTML = 'Wichtig: Der folgende SMB-/lokale Speicher gehört ausschließlich zum bisherigen Legacy-Fallback. Er wird nicht als WebDAV-Quelle übernommen. Die WebDAV-Quellordner werden beim Start der Migration direkt aus Nextcloud angezeigt und ausgewählt.'; + legacyHeading.insertAdjacentElement('beforebegin', note); + } + + if (storageHeading && storageList && addStorage) { + storageHeading.textContent = 'Legacy-Speicher (nur Fallback)'; + + var details = document.createElement('details'); + details.dataset.legacyStorageTechnical = '1'; + details.style.marginTop = '.75rem'; + var summary = document.createElement('summary'); + summary.textContent = 'Technische Legacy-Speicherzuordnung bearbeiten'; + details.appendChild(summary); + + var info = document.createElement('p'); + info.className = 'bratonien-base-note'; + info.textContent = 'Diese Felder betreffen nur den alten Fallback-Weg. Für WebDAV werden keine SMB-Adressen oder lokalen Mount-Pfade eingegeben.'; + details.appendChild(info); + + storageHeading.insertAdjacentElement('beforebegin', details); + details.appendChild(storageHeading); + details.appendChild(storageList); + details.appendChild(addStorage); + + addStorage.textContent = 'Legacy-Speicher manuell hinzufügen'; + addStorage.title = 'Nur für den alten Legacy-Fallback. WebDAV-Ordner werden im Nextcloud-Ordnerbrowser ausgewählt.'; + } + } + + function enhance(root) { + if (!root || root.nodeType !== 1) return; + enhanceMigrationButtons(root); + if (root.matches && root.matches('#bratonien-nc-connection-edit-v2')) enhanceEditor(root); + var dialog = root.querySelector ? root.querySelector('#bratonien-nc-connection-edit-v2') : null; + if (dialog) enhanceEditor(dialog); + } + + function start() { + var section = document.getElementById('nc-connector'); + if (!section) return; + + enhance(section); + enhanceMigrationButtons(document); + + var observer = new MutationObserver(function (mutations) { + mutations.forEach(function (mutation) { + [].slice.call(mutation.addedNodes || []).forEach(function (node) { + if (node && node.nodeType === 1) enhance(node); + }); + }); + var dialog = document.getElementById('bratonien-nc-connection-edit-v2'); + if (dialog) enhanceEditor(dialog); + enhanceMigrationButtons(document); + }); + + observer.observe(document.body, {childList:true, subtree:true}); + } + + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start); + else start(); +})(); From e2e82162c6d191d4c797bba09ca450e1feea7cb9 Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Wed, 19 Aug 2026 14:42:54 +0200 Subject: [PATCH 2/3] 0.9.6.15 load source selection clarification UI --- include/tool_registry.inc.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/tool_registry.inc.php b/include/tool_registry.inc.php index a267193..6918d59 100644 --- a/include/tool_registry.inc.php +++ b/include/tool_registry.inc.php @@ -6,11 +6,18 @@ if (!defined('PHPWG_ROOT_PATH')) if (isset($GLOBALS['template']) && is_object($GLOBALS['template']) && method_exists($GLOBALS['template'], 'func_combine_script')) { + $script_version = function_exists('bratonien_tools_current_version') ? bratonien_tools_current_version() : '0.9.6.15'; $GLOBALS['template']->func_combine_script(array( 'id'=>'bratonien_nc_connector_edit_v2', 'path'=>BRATONIEN_TOOLS_PATH.'js/nc_connector_edit_v2.js', 'load'=>'footer', - 'version'=>function_exists('bratonien_tools_current_version') ? bratonien_tools_current_version() : '0.9.6.10', + 'version'=>$script_version, + )); + $GLOBALS['template']->func_combine_script(array( + 'id'=>'bratonien_nc_connector_source_ui', + 'path'=>BRATONIEN_TOOLS_PATH.'js/nc_connector_source_ui.js', + 'load'=>'footer', + 'version'=>$script_version, )); } From 76de2b037cbd7fcaa924608e62702a973a114007 Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Wed, 19 Aug 2026 14:43:23 +0200 Subject: [PATCH 3/3] 0.9.6.15 bump version --- main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.inc.php b/main.inc.php index 99fc7fe..c1fc095 100644 --- a/main.inc.php +++ b/main.inc.php @@ -1,7 +1,7 @@