This commit is contained in:
2026-01-10 17:22:49 +01:00
parent edcc1b5403
commit 674fabb715
21 changed files with 2135 additions and 489 deletions

285
README.md
View File

@@ -1,220 +1,155 @@
# HUGE Installation und Setup
# HUGE - Elias Fähnrich
## Schnellstart
---
- Voraussetzungen prüfen (siehe unten)
- Abhängigkeiten installieren
- Datenbank anlegen
- Webserver auf `public/` zeigen lassen
- Starten und testen
## Anpassung der Useranmeldung
Befehle (Beispiele):
#### Registrierung ohne Captcha und E-Mail-Verifikation
```bash
# Composer installieren (macOS über Homebrew)
brew install composer
**Beschreibung:**
Die Registrierung wurde so angepasst, dass Benutzer ohne Captcha und E-Mail-Verifikation registriert werden können. Benutzer werden nach der Registrierung automatisch aktiviert.
# Abhängigkeiten holen (im Projektordner)
composer install
**Technische Umsetzung:**
- Entfernung des Captcha-Features aus dem Registrierungsprozess
- Deaktivierung der E-Mail-Verifizierung
- Automatische Aktivierung neuer Benutzerkonten
- Vereinfachung des Registrierungsformulars
# Datenbank & Tabellen anlegen
mysql -u root -p < application/_installation/01-create-database.sql
mysql -u root -p < application/_installation/02-create-table-users.sql
mysql -u root -p < application/_installation/03-create-table-notes.sql
**Admin-Funktion:**
- Nur Administratoren können über das gleiche Formular neue Benutzer anlegen
- Sicherstellung, dass nur autorisierte Personen Benutzerkonten erstellen können
# Rechte für Avatare (je nach OS anpassen)
# Ubuntu/Debian:
sudo chown -R www-data:www-data public/avatars
sudo chmod -R 775 public/avatars
# macOS (Apache Standardnutzer _www):
sudo chown -R _www:_www public/avatars
sudo chmod -R 775 public/avatars
```
<!-- Screenshot Platzhalter -->
[📸 Screenshot: Vereinfachtes Registrierungsformular]
[📸 Screenshot: Admin-Benutzererstellung]
[📸 Screenshot: Automatisch aktivierter Benutzer]
```
---
## Voraussetzungen
## Erweiterung der Admin-Funktionen
- PHP >= 5.5 (laut composer.json)
- Composer
- Apache 2.4 mit `mod_rewrite`
- MySQL/MariaDB
- PHP-Erweiterungen: PDO + pdo_mysql, OpenSSL, mbstring
- Schreibrechte für `public/avatars/`
#### 👥 Benutzergruppen-Verwaltung
---
**Beschreibung:**
Implementierung einer erweiterten Benutzerverwaltung mit Gruppen-System. Anstelle des einfachen Typen-Feldes wurde eine vollwertige Gruppenverwaltung eingeführt.
## Projekt beziehen
**Gruppenstruktur:**
- **Admin (Typ 7)**: Voll administrative Rechte
- **Gast (Typ 1)**: Leserechte für öffentliche Inhalte
- **Normaler Benutzer (Typ 2)**: Standard-Benutzerrechte
- **Typen 3-6**: Reserviert für zukünftige Gruppenerweiterungen
- Repository klonen oder entpacken
- In den Projektordner wechseln
**Technische Umsetzung:**
- Erstellung einer neuen Tabelle `user_groups` zur Gruppendefinition
- Zuweisung von Gruppennamen zu den Typen
- Integration in die Benutzerverwaltung des Admins
---
#### Öffentliches Benutzerverzeichnis mit DataTables
## Abhängigkeiten installieren (Composer)
**Beschreibung:**
Implementierung einer öffentlichen Benutzerliste, die alle Benutzer und ihre Gruppen anzeigt. Diese Liste ist für alle zugänglich, jedoch schreibgeschützt.
- Im Projektordner ausführen:
**Technische Features:**
- Integration von DataTables/jQuery für interaktive Tabellen
- Sortier- und Filterfunktionen
- Paginierung der Benutzerliste
- Responsive Darstellung auf verschiedenen Geräten
```bash
composer install
**Zugriffsrechte:**
- **Öffentlicher Zugriff**: Nur Anzeige der Benutzerliste
- **Admin-Zugriff**: Vollständige Verwaltungsfunktionen
```
<!-- Screenshot Platzhalter -->
[📸 Screenshot: Admin-Gruppenzuweisung]
[📸 Screenshot: Öffentliches Benutzerverzeichnis mit DataTables]
[📸 Screenshot: jQuery DataTables in Aktion]
```
---
## Webserver konfigurieren (Apache)
## jQuery - Einführung und Grundlagen
- DocumentRoot auf `.../huge/public` setzen
- `AllowOverride All` aktivieren (damit `.htaccess` greift)
- `mod_rewrite` aktivieren
- Apache neu starten
#### JavaScript Basics
jQuery ist eine JavaScript-Bibliothek, die grundlegende JavaScript-Kenntnisse voraussetzt. Wichtige Grundlagen umfassen:
Minimalbeispiel VirtualHost:
- DOM-Manipulation
- Event-Handling
- Asynchrone Programmierung
- Objektorientierte Programmierung
```apacheconf
<VirtualHost *:80>
ServerName huge.local
DocumentRoot "/pfad/zu/huge/public"
#### jQuery Grundlagen
Die jQuery-Bibliothek ist zentral für die Interaktivität der Benutzeroberfläche:
<Directory "/pfad/zu/huge/public">
AllowOverride All
Require all granted
</Directory>
SetEnv APPLICATION_ENV development
ErrorLog "${APACHE_LOG_DIR}/huge_error.log"
CustomLog "${APACHE_LOG_DIR}/huge_access.log" combined
</VirtualHost>
**Einbindung:**
```html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
```
Hinweis: `.htaccess` leitet auf `public/index.php` um.
**Zentrale Elemente:**
- **Dollarzeichen ($)**: Hauptselektor für DOM-Elemente
- **Basis-Syntax**: `$("element")`
- **Document Ready**: `$(document).ready(function(){ ... })`
---
**Wichtige Selektoren:**
```javascript
// ID-Selektor (schnellste Methode)
$("#elementId")
## Datenbank anlegen
// Klassen-Selektor
$(".klassenname")
- SQL-Skripte in dieser Reihenfolge ausführen (`application/_installation/`):
- `01-create-database.sql`
- `02-create-table-users.sql`
- `03-create-table-notes.sql`
// Multi-Selektor
$("div, p, a, span")
Beispiel in der Shell:
```bash
mysql -u root -p < application/_installation/01-create-database.sql
mysql -u root -p < application/_installation/02-create-table-users.sql
mysql -u root -p < application/_installation/03-create-table-notes.sql
// Komplexe Selektoren
$("#container .item:first-child")
```
---
**DOM-Manipulation:**
```javascript
// Einzelne Eigenschaft ändern
$("#test").css("color", "#FFFFFF");
## Framework-Konfiguration (Entwicklung)
// Mehrere Eigenschaften ändern
$("#test").css({
"color": "#FFFFFF",
"height": "25px"
});
- Datei: `application/config/config.development.php`
- Wichtige Schlüssel:
- URL
- `URL` (Basis-URL, endet mit `/`; auto-detect möglich)
- Pfade
- `PATH_CONTROLLER`, `PATH_VIEW` (meist unverändert)
- Routing
- `DEFAULT_CONTROLLER`, `DEFAULT_ACTION`
- Datenbank
- `DB_TYPE`, `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASS`, `DB_CHARSET`
- Captcha
- `CAPTCHA_WIDTH`, `CAPTCHA_HEIGHT`
- Cookies & Session
- `COOKIE_RUNTIME`, `COOKIE_PATH`, `COOKIE_DOMAIN`, `COOKIE_SECURE`, `COOKIE_HTTP`
- `SESSION_RUNTIME`
- Avatare/Gravatar
- `USE_GRAVATAR`, `GRAVATAR_DEFAULT_IMAGESET`, `GRAVATAR_RATING`
- `AVATAR_SIZE`, `AVATAR_JPEG_QUALITY`, `AVATAR_DEFAULT_IMAGE`
- Ordner `public/avatars/` beschreibbar machen
- Sicherheit
- `ENCRYPTION_KEY`, `HMAC_SALT` (für eigene Installation ändern)
- E-Mail
- `EMAIL_USED_MAILER`, `EMAIL_USE_SMTP`
- `EMAIL_SMTP_HOST`, `EMAIL_SMTP_AUTH`, `EMAIL_SMTP_USERNAME`, `EMAIL_SMTP_PASSWORD`, `EMAIL_SMTP_PORT`, `EMAIL_SMTP_ENCRYPTION`
- `EMAIL_PASSWORD_RESET_*`, `EMAIL_VERIFICATION_*`
---
## Umgebungen (Environment)
- Klasse: `application/core/Environment.php`
- Ermittelt `APPLICATION_ENV` (Fallback: `development`)
- Weitere Datei möglich: `config.production.php`
- Apache-Variable setzen:
```apacheconf
SetEnv APPLICATION_ENV production
// Methodenverkettung (Chaining)
$("#test")
.css({ "color": "#FFFFFF", "height": "25px" })
.html("Neuer Text")
.show();
```
---
#### DataTables Integration
DataTables erweitert HTML-Tabellen um leistungsstarke Funktionen:
## Verzeichnisrechte
- `public/avatars/` beschreibbar
- Optional Logs/Uploads je nach Bedarf
---
## Starten
- Browser: `http://<host>/`
- Registrierung/Login testen
- Mailversand nur mit korrekt konfiguriertem SMTP
---
## Tests ausführen
- PHPUnit unter `vendor/bin/phpunit`
- Konfiguration: `tests/phpunit.xml`
```bash
vendor/bin/phpunit -c tests/phpunit.xml
```javascript
$(document).ready(function() {
$('#benutzerTabelle').DataTable({
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/German.json"
},
"pageLength": 25,
"responsive": true
});
});
```
---
## Häufige Probleme
- 404 bei allen Routen
- `mod_rewrite` aktivieren
- `AllowOverride All` setzen
- DocumentRoot auf `public/`
- Falsche Links/Assets
- `URL` in der Config prüfen
- Datenbankfehler
- `DB_*`-Werte und Rechte prüfen
- E-Mails kommen nicht an
- `EMAIL_USE_SMTP=true` und SMTP-Daten prüfen
- Avatare fehlen
- Schreibrechte für `public/avatars/`
**Features:**
- Automatische Sortierung aller Spalten
- Suchfunktion in Echtzeit
- Paginierung mit anpassbarer Seitenlänge
- Responsive Darstellung auf mobilen Geräten
- Mehrsprachige Unterstützung (Deutsch implementiert)
---
## Option: Vagrant „One-Click-Installation“
- Ordner: `_one-click-installation/`
- Voraussetzungen: Vagrant + VirtualBox
```bash
cd _one-click-installation
vagrant up
```
- Projekt über die VM nutzen (Host/Ports laut Vagrant-Ausgabe)
---
## Struktur (Kurz)
- `public/` (Webroot, `.htaccess`, `index.php`)
- `application/controller/` (Controller)
- `application/model/` (Modelle)
- `application/view/` (Views)
- `application/config/` (Konfiguration je Environment)
- `application/_installation/` (SQL-Skripte)
- `vendor/` (Composer-Abhängigkeiten)
- `tests/` (PHPUnit)
<div align="center">
<img src="./assets/footer/gray0_ctp_on_line.svg" alt="Gadze"/>
</div>