- PHP 56.7%
- JavaScript 25.5%
- CSS 14.6%
- Shell 3.2%
| assets | ||
| data | ||
| includes | ||
| templates | ||
| build.sh | ||
| CHANGELOG.md | ||
| INSTALLATION.md | ||
| pr-callbook.php | ||
| PROJEKT-ÜBERSICHT.md | ||
| QUICKSTART.md | ||
| README.md | ||
| readme.txt | ||
| TOKEN-SETUP.md | ||
| WORKFLOW-ANLEITUNG.md | ||
| WORKFLOW-KURZANLEITUNG.md | ||
| WORKFLOW-VARIANTEN.md | ||
PR-Callbook WordPress Plugin
Ein WordPress-Plugin zur Verwaltung eines Packet Radio Callbooks mit automatischen Updates von Forgejo.
Features
Für Administratoren
- Modal-basierte Bearbeitung: Komfortable Verwaltung aller Einträge über ein modernes Modal-Interface
- Suchfunktion: Schnelle Suche nach PR-Call, Name, QTH oder Locator
- Pagination: Übersichtliche Darstellung großer Datenmengen
- CRUD-Operationen: Erstellen, Lesen, Aktualisieren und Löschen von Einträgen
Für Besucher
- Responsive Tabelle: Übersichtliche Darstellung aller Callbook-Einträge
- Detail-Modal: Klick auf eine Zeile öffnet mehrspaltige Detail-Ansicht
- Suchfunktion: Filtern der Einträge in Echtzeit
- Mobile-optimiert: Vollständig responsive für alle Bildschirmgrößen
Automatische Updates
- Forgejo-Integration: Automatische Update-Erkennung von Ihrem Forgejo-Server
- Versionsverwaltung: Automatische Versionierung über Labels in Pull Requests
- Changelog: Automatisch generierter Changelog aus PR-Beschreibungen
- Ein-Klick-Updates: Updates direkt aus dem WordPress-Admin-Bereich
Installation
Voraussetzungen
- WordPress 5.8 oder höher
- PHP 7.4 oder höher
- MySQL/MariaDB Datenbank
Manuelle Installation
- Plugin-ZIP herunterladen
- In WordPress: Plugins → Installieren → Plugin hochladen
- ZIP-Datei auswählen und installieren
- Plugin aktivieren
Installation via WP-CLI
wp plugin install pr-callbook-1.0.0.zip --activate
Konfiguration
Forgejo-Repository einrichten
- Im WordPress-Admin: PR-Callbook → Updates
- Repository-URL eingeben:
https://your-forgejo-server.com/username/pr-callbook - API-URL eingeben:
https://your-forgejo-server.com/api/v1/repos/username/pr-callbook - Speichern
Frontend einbinden
Fügen Sie den Shortcode in eine Seite oder einen Beitrag ein:
[pr_callbook]
Optional mit Parameter für Einträge pro Seite:
[pr_callbook per_page="30"]
Entwicklung
Projektstruktur
pr-callbook/
├── .forgejo/
│ └── workflows/
│ └── version-and-release.yml # Automatisierungs-Workflow
├── assets/
│ ├── css/
│ │ ├── admin.css # Admin-Styles
│ │ └── frontend.css # Frontend-Styles
│ └── js/
│ ├── admin.js # Admin-JavaScript
│ └── frontend.js # Frontend-JavaScript
├── data/
│ └── callbook.sql # Initiale Daten
├── includes/
│ └── class-updater.php # Update-Checker
├── templates/
│ ├── admin-page.php # Admin-Template
│ └── frontend.php # Frontend-Template
├── pr-callbook.php # Haupt-Plugin-Datei
├── README.md # Diese Datei
└── CHANGELOG.md # Versionshistorie
Automatische Versionierung
Das Plugin verwendet einen manuellen Workflow für Releases:
Release erstellen:
-
Änderungen committen und pushen
git add . git commit -m "fix: Bug behoben" git push -
In Forgejo: Actions → Build and Release → Run workflow
-
Workflow macht automatisch:
- Patch-Version erhöhen (+0.0.1)
- Dateien aktualisieren (pr-callbook.php, readme.txt, CHANGELOG.md)
- Git-Tag erstellen
- Release mit ZIP-Datei erstellen
- WordPress erkennt Update
Beispiel-Ablauf:
# 1. Änderungen machen
vim assets/js/frontend.js
git add .
git commit -m "fix: Suchfunktion verbessert"
git push
# 2. In Forgejo Web-UI:
# Actions → Workflows → "Build and Release" → Run workflow
# 3. Nach ~2 Minuten:
# ✅ Release v1.0.1 erstellt
# ✅ WordPress zeigt Update an
Siehe WORKFLOW-ANLEITUNG.md für Details.
Changelog-Format
Das Plugin generiert automatisch einen Changelog aus:
- PR-Titel
- PR-Beschreibung
- Commit-Messages seit dem letzten Release
Beispiel CHANGELOG.md:
# Changelog
## Version 1.1.0
### Add advanced search functionality
Implementiert erweiterte Suchfunktion mit Filtern für:
- Bundesland
- Land
- Locator-Bereich
### Commits
- Add search filters to admin interface
- Implement backend search logic
- Update frontend search UI
- Add tests for search functionality
---
## Version 1.0.0
Initial release
Datenbankstruktur
CREATE TABLE wp_callbook (
id int(11) NOT NULL AUTO_INCREMENT,
prcall varchar(25) NOT NULL,
name varchar(23) DEFAULT NULL,
qth varchar(27) DEFAULT NULL,
locator varchar(13) DEFAULT NULL,
mybbs varchar(27) DEFAULT NULL,
route varchar(81) DEFAULT NULL,
email varchar(30) DEFAULT NULL,
website varchar(33) DEFAULT NULL,
prmail varchar(36) DEFAULT NULL,
bundesland varchar(22) DEFAULT NULL,
land varchar(14) DEFAULT NULL,
bemerkung varchar(112) DEFAULT NULL,
regdatum varchar(16) NOT NULL,
lastupdate datetime DEFAULT NULL,
PRIMARY KEY (id)
);
API Endpoints
Das Plugin stellt folgende AJAX-Endpoints bereit:
Admin (nur für eingeloggte Admins):
pr_callbook_get_entry- Einzelnen Eintrag ladenpr_callbook_save_entry- Eintrag speichernpr_callbook_delete_entry- Eintrag löschen
Öffentlich:
pr_callbook_get_entries- Einträge mit Pagination ladenpr_callbook_get_entry- Einzelnen Eintrag für Detail-Ansicht laden
Sicherheit
- Alle AJAX-Aufrufe sind durch WordPress-Nonces geschützt
- Admin-Funktionen nur für Benutzer mit
manage_optionsBerechtigung - Alle Eingaben werden sanitized
- SQL-Injection-Schutz durch prepared statements
- XSS-Schutz durch Escaping aller Ausgaben
Anpassungen
Styling anpassen
Überschreiben Sie die CSS-Klassen in Ihrem Theme:
/* Frontend */
.pr-callbook-frontend { }
.pr-callbook-table { }
.pr-modal { }
/* Admin */
.pr-callbook-admin { }
.pr-callbook-modal { }
JavaScript-Events
Das Plugin feuert folgende Events:
// Nach dem Laden von Einträgen
document.dispatchEvent(new CustomEvent('prCallbookEntriesLoaded', {
detail: { entries: [...] }
}));
// Nach dem Öffnen des Detail-Modals
document.dispatchEvent(new CustomEvent('prCallbookDetailOpened', {
detail: { entry: {...} }
}));
Fehlersuche
Updates werden nicht erkannt
- Prüfen Sie die Repository-URLs in PR-Callbook → Updates
- Klicken Sie auf "Cache leeren"
- Prüfen Sie die Forgejo-API-Erreichbarkeit
- Prüfen Sie die Browser-Konsole auf Fehler
Datenbank-Probleme
# WordPress-Datenbank reparieren
wp db repair
# Plugin neu installieren
wp plugin deactivate pr-callbook
wp plugin activate pr-callbook
Debugging aktivieren
In wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Logs finden Sie in wp-content/debug.log
Mitwirken
Beiträge sind willkommen! Bitte:
- Forken Sie das Repository
- Erstellen Sie einen Feature-Branch
- Committen Sie Ihre Änderungen
- Pushen Sie zum Branch
- Erstellen Sie einen Pull Request mit entsprechendem Label
Support
- Issues: Forgejo Issues
- Dokumentation: Diese README
- Community: [Ihr Community-Link]
Lizenz
GPL v2 oder später
Credits
Entwickelt für die Packet Radio Community
Changelog
Siehe CHANGELOG.md für detaillierte Versionshistorie.
Roadmap
- Export-Funktion (CSV, PDF)
- Import-Funktion
- Erweiterte Suchfilter
- Karten-Integration (Locator-Anzeige)
- QRZ.com Integration
- Multi-Language Support
- REST API
- Statistiken und Diagramme
Technische Details
Browser-Support
- Chrome/Edge (aktuelle Version)
- Firefox (aktuelle Version)
- Safari (aktuelle Version)
- Mobile Browser (iOS Safari, Chrome Mobile)
Performance
- Lazy Loading von Einträgen
- AJAX-basierte Pagination
- Gecachte API-Anfragen (12 Stunden)
- Optimierte Datenbankabfragen
Barrierefreiheit
- Semantisches HTML
- Keyboard-Navigation
- ARIA-Labels
- Responsive Design