<?php require_once __DIR__.'/../app/bootstrap.php'; $user=require_login($pdo); if(!is_superadmin($user)){ http_response_code(403); exit('Zugriff verweigert.'); } require_once __DIR__.'/_layout.php'; page_header('Manuals'); ?>
<section class="admin-faq-hero">
  <p class="pill">Superadmin-Handbuch</p>
  <h2>Manuals</h2>
  <p class="lead">Kurzanleitungen für Superadmins: Installation, Updates, Benutzerverwaltung, Freigaben und Troubleshooting.</p>
</section>
<section class="backend-faq-list">
  <details open><summary>Wie installiere ich QRator manuell?</summary><p>Dateien auf den Webserver kopieren, Datenbank vorbereiten, <code>install.php</code> im Browser öffnen und die Installation abschliessen. Danach ist <code>install.php</code> nicht mehr nutzbar. Falls mehrere Installationen dieselbe Datenbank verwenden, muss ein eigener Tabellenpräfix gesetzt werden.</p></details>
  <details><summary>Wie funktioniert der empfohlene Release-Prozess?</summary><p>Neue ZIP-Version final erstellen, SHA-256 mit PowerShell berechnen, ZIP unverändert nach <code>https://qrator.web2use.ch/releases/</code> hochladen und anschliessend <code>update.json</code> mit Version, Download-URL, Changelog-URL und Hash aktualisieren.</p></details>
  <details><summary>Wie berechne ich den SHA-256-Hash unter Windows?</summary><p>Im Ordner der ZIP-Datei PowerShell öffnen und ausführen: <code>Get-FileHash .\qr-code-manager-v21.6.zip -Algorithm SHA256</code>. Den Wert aus der Spalte <code>Hash</code> unverändert in <code>update.json</code> eintragen.</p></details>
  <details><summary>Wie muss update.json aufgebaut sein?</summary><p>Die Datei liegt unter <code>https://qrator.web2use.ch/update.json</code>. Sie enthält mindestens <code>latest_version</code>, <code>download_url</code>, <code>changelog_url</code>, <code>sha256</code>, <code>minimum_php</code> und <code>release_date</code>. Optional können <code>notes</code> als Liste ergänzt werden.</p></details>
  <details><summary>Wie installiere ich ein Online-Update?</summary><p>Als Superadmin im Backend <code>Updates</code> öffnen. Im Tab <code>Online-Update</code> zeigt QRator die verfügbare Version an. Mit <code>Update installieren</code> wird das ZIP geladen, per SHA-256 geprüft, ein Backup erstellt und das Update installiert.</p></details>
  <details><summary>Wie installiere ich ein lokales Update?</summary><p>Im Tab <code>Lokales Update</code> ein gültiges ZIP hochladen oder ein bereits im Ordner <code>/update</code> abgelegtes Paket installieren. QRator prüft Dateiname, ZIP-Struktur und Sicherheitsregeln vor der Installation.</p></details>
  <details><summary>Wie verwalte ich Benutzer und Rollen?</summary><p>Superadmins können Benutzer verwalten und behalten Zugriff auf Systemseiten wie Updates, Changelog, FAQ, Manuals und Systemanforderungen. Normale Benutzer sehen nur die Funktionen, die sie für ihre eigenen oder freigegebenen QR-Codes benötigen.</p></details>
  <details><summary>Wie funktionieren Gruppen und Freigaben?</summary><p>QR-Codes lassen sich Gruppen zuordnen. Gruppen können mit anderen Benutzern geteilt werden. Leserechte erlauben Zugriff auf Codes und Auswertungen, Bearbeitungsrechte erlauben zusätzlich Änderungen an freigegebenen Codes.</p></details>
  <details><summary>Troubleshooting: Update-Check meldet HTTP 404</summary><p>Prüfen, ob <code>https://qrator.web2use.ch/update.json</code> im Browser direkt JSON ausgibt. Falls ja, liegt meist noch eine alte Update-URL im installierten Code oder Cache vor. Seit v21.3 wird die Manifest-URL release-seitig definiert. Nach Installation OPcache leeren oder PHP neu starten.</p></details>
  <details><summary>Troubleshooting: Backend zeigt nach Update noch die alte Version</summary><p>Prüfen, ob <code>app/bootstrap.php</code> wirklich überschrieben wurde und dort die neue <code>QRATOR_VERSION</code> steht. Falls die Datei korrekt ist, OPcache im Hosting leeren oder PHP neu starten.</p></details>
  <details><summary>Troubleshooting: SHA-256 stimmt nicht</summary><p>Der Hash muss von exakt der finalen ZIP-Datei stammen. Wird die ZIP nach der Berechnung neu gepackt, umbenannt durch ein Tool verändert oder erneut exportiert, entsteht ein neuer Hash. Dann den Hash neu berechnen und <code>update.json</code> aktualisieren.</p></details>
  <details><summary>Troubleshooting: Update kann nicht installiert werden</summary><p>ZipArchive, Schreibrechte auf <code>/update</code> und genügend Upload-/Speicherlimits prüfen. Bei One-Click-Updates muss der Server die Download-URL per HTTPS erreichen können.</p></details>
  <details><summary>Troubleshooting: Download-Link aus dem Chat funktioniert nicht</summary><p>Chat-Downloads sind temporäre Dateien. Für produktive Updates muss das finale ZIP immer zusätzlich in dein eigenes Repository unter <code>/releases/</code> hochgeladen und über <code>update.json</code> referenziert werden.</p></details>
  <details><summary>Troubleshooting: Branding oder Systemmenü fehlt nach Update</summary><p>Prüfen, ob die neue <code>admin/_layout.php</code> installiert wurde. Die Sidebar, das QRator-Menü und der dezente Versionshinweis werden zentral über diese Datei ausgegeben.</p></details>
</section>
<?php page_footer(); ?>
