feat: Implement floors, locations, and racks management
- Added list, edit, and save functionalities for floors, locations, and racks. - Enhanced UI with search and filter options for better usability. - Implemented SVG upload for floor plans in the floors module. - Added validation for required fields in the save processes. - Improved navigation in the header to reflect new modules. - Styled forms and tables for a consistent look and feel across modules.
This commit is contained in:
142
NEXT_STEPS.md
Normal file
142
NEXT_STEPS.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# 📋 NÄCHSTE ARBEITSPAKETE
|
||||
|
||||
## 🎯 Für die nächsten Sessions
|
||||
|
||||
### Package 1: Fehlerbehandlung & Sessions (1-2h)
|
||||
- [ ] Session-Handling in `bootstrap.php` implementieren
|
||||
- [ ] Error-Messages in Session speichern ($SESSION['error'], $SESSION['success'])
|
||||
- [ ] Header mit Fehlermeldungen in Layout
|
||||
- [ ] Validierungsfehler anzeigen
|
||||
|
||||
### Package 2: Delete-Funktionen (1h)
|
||||
- [ ] DELETE-Endpoints für alle Module
|
||||
- [ ] AJAX-Bestätigung vor Löschen
|
||||
- [ ] Kaskadierendes Löschen prüfen (z.B. Floor → Racks)
|
||||
|
||||
### Package 3: Port-Management (2-3h)
|
||||
- [ ] Ports zu Device-Types verwalten
|
||||
- [ ] Ports zu Devices anzeigen
|
||||
- [ ] Port-Status (aktiv/inaktiv)
|
||||
- [ ] VLAN-Zuordnung zu Ports
|
||||
|
||||
### Package 4: SVG-Editor für Floorplans (4-5h)
|
||||
- [ ] Interaktiver SVG-Editor für Rooms
|
||||
- [ ] Netzwerkdosen platzieren
|
||||
- [ ] Dosen nummerieren
|
||||
- [ ] Speicher-Integration
|
||||
|
||||
### Package 5: Navigation & UI (1-2h)
|
||||
- [ ] Breadcrumbs hinzufügen
|
||||
- [ ] Mobile-Menü verbessern
|
||||
- [ ] CSS polieren (Farben, Abstände)
|
||||
- [ ] Dark-Mode (optional)
|
||||
|
||||
---
|
||||
|
||||
## 📚 Code-Referenzen
|
||||
|
||||
### Template für neue CRUD-Module:
|
||||
```php
|
||||
// list.php: Filter + Tabelle
|
||||
// edit.php: Formular
|
||||
// save.php: POST-Handler mit Validierung
|
||||
|
||||
// Immer verwenden:
|
||||
$sql->get() // SELECT mit Bind-Params
|
||||
$sql->single() // SELECT LIMIT 1
|
||||
$sql->set() // INSERT/UPDATE
|
||||
```
|
||||
|
||||
### Filter-Pattern (in allen List-Modules):
|
||||
```php
|
||||
$where = [];
|
||||
$types = '';
|
||||
$params = [];
|
||||
|
||||
if ($search !== '') {
|
||||
$where[] = "name LIKE ?";
|
||||
$types .= "s";
|
||||
$params[] = "%$search%";
|
||||
}
|
||||
|
||||
$whereSql = $where ? "WHERE " . implode(" AND ", $where) : "";
|
||||
// Dann in Query einsetzen
|
||||
```
|
||||
|
||||
### Styling-Pattern:
|
||||
- Buttons: `.button`, `.button-primary`, `.button-danger`, `.button-small`
|
||||
- Tabellen: `.*.list` Klasse mit th/td Styling
|
||||
- Forms: `.edit-form`, `.form-group`, `.form-actions`
|
||||
- States: `.empty-state`, `.filter-form`
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Bekannte TODOs im Code
|
||||
|
||||
Alle noch offenen Punkte sind mit `// TODO:` gekennzeichnet:
|
||||
|
||||
```bash
|
||||
# Alle TODOs finden:
|
||||
grep -r "TODO:" app/modules/ --include="*.php"
|
||||
```
|
||||
|
||||
Wichtigste TODOs:
|
||||
- `index.php:19` - Session starten
|
||||
- `*/save.php` - Fehlerbehandlung
|
||||
- `connections/` - Port-Verknüpfung
|
||||
- `lib/auth.php` - Auth-Logik
|
||||
|
||||
---
|
||||
|
||||
## 💾 Datenbank-Setup
|
||||
|
||||
Die Datenbank wird automatisch durch `init.sql` initialisiert.
|
||||
|
||||
Wichtige Tabellen:
|
||||
- `locations` - Standorte
|
||||
- `buildings` - Gebäude
|
||||
- `floors` - Stockwerke
|
||||
- `rooms` - Räume
|
||||
- `network_outlets` - Netzwerkdosen
|
||||
- `device_types` - Gerätetypen
|
||||
- `device_type_ports` - Port-Templates
|
||||
- `devices` - konkrete Geräte
|
||||
- `device_ports` - Gerätports
|
||||
- `racks` - Racks
|
||||
- `connections` - Verbindungen zwischen Ports
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testing-Checklist
|
||||
|
||||
Bei jeder Änderung checken:
|
||||
- [ ] Formular sendet Daten korrekt
|
||||
- [ ] Daten werden in DB gespeichert
|
||||
- [ ] Liste zeigt neue Daten
|
||||
- [ ] Edit lädt existierende Daten vor
|
||||
- [ ] Filter funktioniert
|
||||
- [ ] Validierungsfehler werden angezeigt
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Design-Richtlinien
|
||||
|
||||
### Farben:
|
||||
- Primary (Buttons): `#007bff` (Blau)
|
||||
- Success (Speichern): `#28a745` (Grün)
|
||||
- Danger (Löschen): `#dc3545` (Rot)
|
||||
- Background: `#f9f9f9` (Hell)
|
||||
- Border: `#ddd` (Hell-Grau)
|
||||
|
||||
### Spacing:
|
||||
- Padding in Forms: `15px` (fieldset), `8px` (input)
|
||||
- Gap zwischen Buttons: `10px`
|
||||
- Margin: `20px` (oben/unten), `0` (inline)
|
||||
|
||||
### Schriftarten:
|
||||
- Erben von HTML (derzeit: System)
|
||||
- Monospace für Code/IDs: `font-family: monospace`
|
||||
|
||||
---
|
||||
|
||||
**Happy Coding! 🚀**
|
||||
Reference in New Issue
Block a user