CluPilotCloud/resources/views/livewire/admin
nexxo 51a97019a8 Sperren sehen und aufheben: Portalseite fuer den Inhaber, Abschnitte in der Konsole
Aufgabe 6 des Fruehwarnsystems. Der Inhaber sieht im Portal die Sperren SEINER
Instanzen und hebt sie dort auf; der Betreiber sieht in der Konsole alle, an der
Kunden- und an der Host-Detailseite, und auf der Uebersicht steht ein Hinweis,
solange irgendwo eine Sperre aktiv ist.

Aufgehoben wird ueber ein Bestaetigungs-Modal (R23), und das Modal mutiert
nichts: es wirft ein Ereignis, das die Seite auffaengt und an ihre eigene
Methode weiterreicht. Die Berechtigungspruefung bleibt damit an der einen
Stelle, an der sie schon stand — noetig, weil ein Modal ohne die Middleware der
Seite erreichbar ist (R20). Dazu die Berechtigung `instances.manage`, nach dem
Muster der bestehenden `instances.restart`-Migration; Abrechnung und Read-only
bleiben unberuehrt.

ACHTUNG, was hier sonst noch drinsteckt und NICHT zu dieser Aufgabe gehoert:
rund 150 Zeilen zum Versandtakt — das Merkmal `RidesALane`, vierzehn Mailables
und `MailLaneRoutingTest`. Die stammen aus einer PARALLEL laufenden Sitzung an
einem anderen Feature.

Wie das hineingeriet: der Implementierer dieser Aufgabe brach vor dem Commit ab
und liess seine fertige Arbeit ungespeichert im Baum. Ich habe sie dateigenau
mit `git add <dateien>` vorgemerkt, um nichts Fremdes mitzunehmen — und dabei
uebersehen, dass `git add` nur HINZUFUEGT: die andere Sitzung hatte ihre Arbeit
bereits vorgemerkt, und `git commit` schreibt den ganzen Index, nicht nur das
zuletzt Hinzugefuegte. Richtig waere `git commit -- <dateien>` gewesen.

Nichts ist verloren, und die volle Suite ist auf diesem Stand gruen (2571).
Aber diese Botschaft soll nicht behaupten, sie beschreibe alles, was hier steht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 15:53:24 +02:00
..
capacity.blade.php Ein angehefteter Host umging die Reservierung 2026-08-01 18:53:11 +02:00
check-result.blade.php Pruefergebnis als Modal statt am Seitenende 2026-07-31 21:36:43 +02:00
close-dunning-case.blade.php Mahnwesen: Einstellungen und die zwei Eingriffe von Hand 2026-07-31 22:43:52 +02:00
confirm-delete-datacenter.blade.php One definition of the navigation, and the country instead of the building 2026-07-27 16:09:39 +02:00
confirm-delete-incident.blade.php Let an incident be deleted, and start measuring whether the hosts answer 2026-07-29 15:16:48 +02:00
confirm-delete-plan-draft.blade.php feat(admin): a console for creating, pricing and scheduling plans 2026-07-26 12:41:51 +02:00
confirm-delete-vpn-peer.blade.php feat(admin): VPN access management with live peer state 2026-07-25 21:38:12 +02:00
confirm-disable-two-factor.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-end-other-sessions.blade.php Show where an account is signed in, and let it sign the other places out 2026-07-28 23:38:17 +02:00
confirm-forget-secret.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-generate-ssh-key.blade.php Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
confirm-publish-dpa.blade.php Deliver the processing agreement, and hold the proof it was accepted 2026-07-30 16:56:57 +02:00
confirm-reissue-vpn-peer.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-release-block.blade.php Sperren sehen und aufheben: Portalseite fuer den Inhaber, Abschnitte in der Konsole 2026-08-03 15:53:24 +02:00
confirm-release-reservation.blade.php Ein reservierter Host gehoert seinem Kunden 2026-08-01 16:06:14 +02:00
confirm-remove-host.blade.php One definition of the navigation, and the country instead of the building 2026-07-27 16:09:39 +02:00
confirm-restart-instance.blade.php Restart a machine, enforce the quota that was sold, end a route that ended 2026-07-29 18:28:28 +02:00
confirm-save-env.blade.php Add a raw .env editor to the Integrations page, with a net under it 2026-07-29 01:51:27 +02:00
confirm-save-secret.blade.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00
confirm-switch-mode.blade.php Put the switch where it governs, and say when it is thrown 2026-07-30 15:09:38 +02:00
confirm-sync-catalogue.blade.php Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
customer-detail.blade.php Sperren sehen und aufheben: Portalseite fuer den Inhaber, Abschnitte in der Konsole 2026-08-03 15:53:24 +02:00
customers.blade.php Ask whether they are a consumer, and let one change their mind 2026-07-29 21:06:06 +02:00
datacenters.blade.php Let a datacenter code be corrected while nothing depends on it, and say which building 2026-07-28 22:25:21 +02:00
edit-customer.blade.php Take the address by field, fix the customer type, ask why they leave 2026-07-30 16:41:32 +02:00
edit-datacenter.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-export-target.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-invoice-series.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-mail-template.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
edit-plan-family.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
extend-dunning-deadline.blade.php Mahnwesen: Einstellungen und die zwei Eingriffe von Hand 2026-07-31 22:43:52 +02:00
finance.blade.php Quote what a person pays, and tab the settings page 2026-07-29 19:18:10 +02:00
grant-plan.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
host-create.blade.php Host anlegen: die Seite beschrieb das Rettungssystem und startete die Pipeline 2026-08-02 01:38:48 +02:00
host-detail.blade.php Sperren sehen und aufheben: Portalseite fuer den Inhaber, Abschnitte in der Konsole 2026-08-03 15:53:24 +02:00
host-terminal.blade.php Wortmarke breiter, und die Hostzeile steht wieder auf einer Linie 2026-08-02 23:21:24 +02:00
hosts.blade.php Wortmarke breiter, und die Hostzeile steht wieder auf einer Linie 2026-08-02 23:21:24 +02:00
inbox.blade.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
incidents.blade.php Let an incident be deleted, and start measuring whether the hosts answer 2026-07-29 15:16:48 +02:00
instance-admin-access.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
instances.blade.php Restart a machine, enforce the quota that was sold, end a route that ended 2026-07-29 18:28:28 +02:00
integrations.blade.php Der Tunnel bekommt einen eigenen Container 2026-08-03 07:49:29 +02:00
invoices.blade.php Write an invoice for work that came off no price list 2026-07-29 20:12:26 +02:00
mail-log.blade.php Keep a register of what was sent, and answer the customer from here 2026-07-29 21:02:36 +02:00
mail-preview.blade.php Accept terms instead of a start date, and fix the sender no server accepts 2026-07-30 15:22:35 +02:00
mail-templates.blade.php Say that a click landed, and make moving one actually move it 2026-07-29 23:06:30 +02:00
mail.blade.php Wegwahl je Mailart: welche Mail aus welchem Postfach geht 2026-08-03 12:43:31 +02:00
maintenance.blade.php Show times on the operator's clock, keep storing them in UTC 2026-07-27 17:32:21 +02:00
new-invoice.blade.php Write an invoice for work that came off no price list 2026-07-29 20:12:26 +02:00
open-work.blade.php Zwei Attrappen: ein Banner ohne Hintergrund und Rechte, die ihren Schluessel statt ihrer Beschreibung zeigten 2026-08-02 16:47:15 +02:00
overview.blade.php Keep a register of what was sent, and answer the customer from here 2026-07-29 21:02:36 +02:00
payment-problems.blade.php Ein Waechter, der aufraeumt — und die vier offenen Punkte aus dem Betrieb 2026-08-03 09:43:33 +02:00
plan-versions.blade.php Schalter je Paket, ehrliche Statusanzeige, Reste der alten Leiter 2026-08-01 17:53:06 +02:00
plans.blade.php Schalter je Paket, ehrliche Statusanzeige, Reste der alten Leiter 2026-08-01 17:53:06 +02:00
processing-agreements.blade.php Store the agreement where the web process can actually read it 2026-07-30 17:19:39 +02:00
provisioning.blade.php Match the panel to the approved template, measured rather than assumed 2026-07-27 17:08:05 +02:00
proxy-hosts.blade.php Fill the hostname page from the installation, not from a blank form 2026-07-31 00:53:12 +02:00
readiness.blade.php Hetzner-Cloud-DNS, Bereitschaftsseite aus sich heraus behebbar 2026-07-31 19:50:01 +02:00
record-withdrawal.blade.php Charge the price the website shows, and hand a withdrawal back in full 2026-07-29 22:42:02 +02:00
reissue-takeover.blade.php Release v1.3.82 — Übernahme-Befehlszeile neu ausstellen 2026-08-01 01:00:53 +02:00
resolve-failed-checkout.blade.php R20: Begruendung im Modal, und der Waechter sieht jetzt auch Listenzeilen 2026-07-31 22:09:05 +02:00
revenue.blade.php Match the panel to the approved template, measured rather than assumed 2026-07-27 17:08:05 +02:00
roles.blade.php Zwei Attrappen: ein Banner ohne Hintergrund und Rechte, die ihren Schluessel statt ihrer Beschreibung zeigten 2026-08-02 16:47:15 +02:00
settings.blade.php Ein Waechter, der aufraeumt — und die vier offenen Punkte aus dem Betrieb 2026-08-03 09:43:33 +02:00
two-factor-setup.blade.php Quote what a person pays, and tab the settings page 2026-07-29 19:18:10 +02:00
vpn-config-access.blade.php R24: a modal is never taller than the screen 2026-07-29 23:33:57 +02:00
vpn.blade.php Release v1.3.84 — VPN-Zugänge nach Personen und Hosts getrennt 2026-08-01 02:34:15 +02:00