From cf49026f680cd835ec77c219769011780dbd989c Mon Sep 17 00:00:00 2001 From: Terranom674 Date: Tue, 18 Aug 2026 07:53:29 +0200 Subject: [PATCH] Add simple NC wizard and connection management UI --- template/nc_connector_admin.tpl | 333 +++++++++++++++----------------- 1 file changed, 161 insertions(+), 172 deletions(-) diff --git a/template/nc_connector_admin.tpl b/template/nc_connector_admin.tpl index 8ed3b98..9db926b 100644 --- a/template/nc_connector_admin.tpl +++ b/template/nc_connector_admin.tpl @@ -40,90 +40,89 @@
-

Piwigo API – bevorzugter Sync-Zugang

-

Der NC Connector versucht bei jedem produktiven Lauf zuerst die Piwigo-API. Ein erfolgreich geprüfter API-Key wird verschlüsselt gespeichert. Die produktive API-Synchronisierung ist ausdrücklich an die im Plugin freigegebene Piwigo-Version gebunden. Ist diese Version nicht freigegeben oder die API nicht nutzbar, darf nur der Benutzername/Passwort-Fallback übernehmen.

-
- -
- - - - -
-
- - -
-
+

Neue Verbindung

- {if isset($NC_CONNECTOR.piwigo_api_test) && $NC_CONNECTOR.piwigo_api_test} -
-
Prüfergebnis
-
- Benutzer{$NC_CONNECTOR.piwigo_api_test.username|escape:html} - Piwigo-Status{$NC_CONNECTOR.piwigo_api_test.status|escape:html} - Administrator/Webmaster{if $NC_CONNECTOR.piwigo_api_test.admin}Ja{else}Nein{/if} - Sichtbare API-Methoden{$NC_CONNECTOR.piwigo_api_test.method_count|escape:html} - Bratonien-Sync-API{if $NC_CONNECTOR.piwigo_api_test.sync_api_detected}Bereit{else}Nicht bereit{/if} -
-

Bewertung: {$NC_CONNECTOR.piwigo_api_test.conclusion|escape:html}

- {/if} -
- -
-

Benutzername/Passwort-Fallback

-

Dieser Zugang wird nur verwendet, wenn die bevorzugte API nicht genutzt werden kann. Zugangsdaten können einmalig für einen manuellen Fallback verwendet, verschlüsselt dauerhaft hinterlegt oder vollständig gelöscht werden.

- {if $NC_CONNECTOR.connection_count > 0} + {if $NC_CONNECTOR.wizard.step == 1} +

Der Assistent braucht zuerst nur die Nextcloud-Adresse und einen Benutzer, mit dem Nextcloud auf den Scan antworten darf.

- - - - - - + + + + + + +
+

+
+ {elseif $NC_CONNECTOR.wizard.step == 2} +

Scan erfolgreich. Erkannte Werte:

+
+ Nextcloud{$NC_CONNECTOR.wizard.base_url|escape:html} + Produkt{$NC_CONNECTOR.wizard.product|escape:html} + Version{if $NC_CONNECTOR.wizard.version}{$NC_CONNECTOR.wizard.version|escape:html}{else}nicht gemeldet{/if} + Zugriff als{$NC_CONNECTOR.wizard.username|escape:html}{if $NC_CONNECTOR.wizard.display_name} · {$NC_CONNECTOR.wizard.display_name|escape:html}{/if} +
+ +
+
Welcher Benutzer stellt die Bilder bereit?
+

Empfehlung: ein eigener Benutzer nur für die Showcase-Freigaben. So bleibt die Connector-Quelle klar und unabhängig von persönlichen Konten.

+
+ +
+ + {if $NC_CONNECTOR.wizard.can_list_users && $NC_CONNECTOR.wizard.users|@count > 0} + + {else} + + {/if}
- - - + +
{else} -

Noch keine Connector-Verbindung vorhanden.

+

Nextcloud verbunden. Showcase-Benutzer: {$NC_CONNECTOR.wizard.showcase_user|escape:html}

+

Der nächste Assistentenschritt ist die Piwigo-API-Prüfung. Die technische Verbindungserkennung bleibt davon getrennt und wird nicht als frei editierbare Pfadmaske in den Assistenten gezogen.

+
+ + +
{/if} -
-
-

Neue lokale Verbindung

-
- -
- - - - - - - - - - - - - - -
-

-

Eine Zeile pro Storage: storage_id | source_prefix | /lokaler/mount

- -

-
+
+ Ohne Assistent anlegen +

Technische Einrichtung. Falsche Storage- oder Galeriepfade können die Synchronisierung auf den falschen Datenbestand richten.

+
+ +
+ + + + + + + + + + + + + + +
+

+

Eine Zeile pro Storage: storage_id | source_prefix | /lokaler/mount

+ +

+
+
@@ -131,100 +130,80 @@ {if $NC_CONNECTOR.connection_count > 0} - - - - - - - - - + {foreach from=$NC_CONNECTOR.connections item=connection} - + {if $connection.verification_checks|@count > 0} - - - + {/if} {if isset($connection.last_sync) && $connection.last_sync.timestamp > 0} - - - + {/if} {/foreach} @@ -234,32 +213,42 @@ {/if} -
-

Sync-Zustand

-
- Connector-Timer{if $nc_system_available && $NC_CONNECTOR.system.timer_active}Aktiv{else}Nicht aktiv{/if} - Letzter Lauf{if $nc_system_available}{$NC_CONNECTOR.system.last_run_label|escape:html}{else}Nicht verfügbar{/if} - Nächster Lauf{if $nc_system_available}{$NC_CONNECTOR.system.next_run_label|escape:html}{else}Nicht verfügbar{/if} -
- {if $nc_system_available && $NC_CONNECTOR.system.last_run_message} -

Ergebnis: {$NC_CONNECTOR.system.last_run_message|escape:html}

- {/if} - {if $nc_system_available && $NC_CONNECTOR.system.last_run_api_state == 'error'} -

API fehlgeschlagen: {$NC_CONNECTOR.system.last_run_api_message|escape:html}

- {/if} - {if $nc_system_available && $NC_CONNECTOR.system.last_run_fallback_state == 'ok'} -

Fallback: erfolgreich

- {elseif $nc_system_available && $NC_CONNECTOR.system.last_run_fallback_state == 'error'} -

Fallback fehlgeschlagen: {$NC_CONNECTOR.system.last_run_fallback_message|escape:html}

- {/if} - {if $nc_system_available && $NC_CONNECTOR.system.last_run_error_detail} -

Technischer Fehler: {$NC_CONNECTOR.system.last_run_error_detail|escape:html}

+
+

Piwigo API – bevorzugter Sync-Zugang

+

Die API-Verwaltung bleibt für bestehende Verbindungen verfügbar. Im fertigen Assistenten wird sie als eigener Prüfschritt eingebunden.

+
+ +
+ + +
+
+ + +
+ + {if isset($NC_CONNECTOR.piwigo_api_test) && $NC_CONNECTOR.piwigo_api_test} +

Bewertung: {$NC_CONNECTOR.piwigo_api_test.conclusion|escape:html}

{/if}
-
-

Neuinstallation

-

Eine frische Installation benötigt keinen Legacy-Sync. Ablauf: Verbindung anlegen → prüfen → Root-Aktivierung ausführen. Danach arbeitet ausschließlich die Plugin-Runtime.

+
+

Benutzername/Passwort-Fallback

+ {if $NC_CONNECTOR.connection_count > 0} +
+ +
+ + + +
+
+ + + +
+ + {else}

Noch keine Connector-Verbindung vorhanden.

{/if}
\ No newline at end of file
NameAdapterHostQuelleStoragesStatusAktion
NameAdapterHostQuelleStoragesStatusAktion
{$connection.name|escape:html}{$connection.display_name|escape:html} {$connection.adapter|escape:html} {if $connection.host}{$connection.host|escape:html}{else}—{/if} {if $connection.source_view}{$connection.source_view|escape:html}{else}—{/if} {$connection.storage_count|escape:html} {$connection.takeover_state|escape:html}{if $connection.enabled} · aktiv{/if} - {if $connection.takeover_state == 'active'} - php /var/www/piwigo/plugins/bratonien_tools/nc-connector-disable.php {$connection.id|escape:html} - {elseif $connection.takeover_state == 'verified' && isset($connection.config.origin) && $connection.config.origin == 'native'} - php /var/www/piwigo/plugins/bratonien_tools/nc-connector-install.php {$connection.id|escape:html} -
+
+ Verwalten + - + + - {elseif $connection.takeover_state == 'ready'} -
- - - -
- {elseif $connection.takeover_state == 'verified' && !$connection.enabled} -
- - - -
- {elseif $connection.adapter == 'local' && !$connection.enabled} -
- - - -
-
- - - -
- {else} - — - {/if} + +
+ {if $connection.adapter == 'local' && !$connection.enabled} +
+ + + +
+ {/if} + {if !$connection.enabled && $connection.takeover_state != 'active'} +
+ + + +
+ {/if} +
+ +
+ Technische Einstellungen + {if $connection.enabled || $connection.takeover_state == 'active'} +

Eine aktive Verbindung muss vor technischen Änderungen deaktiviert werden.

+ {else} +

Nur ändern, wenn die technische Zuordnung bekannt ist. Storage- und Galeriepfade sind sicherheitskritisch.

+
+ + +
+ + + + + + + + + + + +
+

Storage-Zuordnungen

+ +

+
+ {/if} +
+
- Letzte Verifikation{if $connection.verified_at} · {$connection.verified_at|escape:html}{/if} -
    - {foreach from=$connection.verification_checks item=check} -
  • {if $check.ok}✓{else}✗{/if} {$check.name|escape:html}: {$check.detail|escape:html}
  • - {/foreach} -
- {if $connection.takeover_state == 'active'} -

Connector aktiv. State: {$connection.config.state_dir|escape:html}

- {elseif $connection.takeover_state == 'verified' && isset($connection.config.origin) && $connection.config.origin == 'native'} -

Verifiziert. Der angezeigte Root-Befehl richtet Runtime-Konfiguration, State-Verzeichnis und gemeinsamen systemd-Timer ein und führt vor der Aktivierung einen Testlauf aus.

- {/if} -
Letzte Verifikation{if $connection.verified_at} · {$connection.verified_at|escape:html}{/if}
    {foreach from=$connection.verification_checks item=check}
  • {if $check.ok}✓{else}✗{/if} {$check.name|escape:html}: {$check.detail|escape:html}
  • {/foreach}
- Letzter Sync · {$connection.last_sync.label|escape:html} -

Ergebnis: {$connection.last_sync.message|escape:html}

- {if $connection.last_sync.api_state == 'ok'} -

API: erfolgreich

- {elseif $connection.last_sync.api_state == 'error'} -

API fehlgeschlagen: {$connection.last_sync.api_message|escape:html}

- {/if} - {if $connection.last_sync.fallback_state == 'ok'} -

Fallback: erfolgreich

- {elseif $connection.last_sync.fallback_state == 'error'} -

Fallback fehlgeschlagen: {$connection.last_sync.fallback_message|escape:html}

- {/if} - {if $connection.last_sync.error_detail} -

Technischer Fehler: {$connection.last_sync.error_detail|escape:html}

- {/if} -
Letzter Sync · {$connection.last_sync.label|escape:html}

Ergebnis: {$connection.last_sync.message|escape:html}

{if $connection.last_sync.api_state == 'error'}

API fehlgeschlagen: {$connection.last_sync.api_message|escape:html}

{/if}{if $connection.last_sync.fallback_state == 'error'}

Fallback fehlgeschlagen: {$connection.last_sync.fallback_message|escape:html}

{/if}{if $connection.last_sync.error_detail}

Technischer Fehler: {$connection.last_sync.error_detail|escape:html}

{/if}