Portal Entwicklerhandbuch
Die Portal-Applikation ist als centraQuest-App in apps/portal implementiert. Sie verwendet den DMS-Client, den Template-Manager, Sessions und konfigurierbare Portal-Objekte.
Laufzeitstruktur
Die zentrale Klasse ist PortalApp. Sie initialisiert Portal-Präfix, DMS-Client, Template-Erweiterungen, Pubsub-Listener, Request-Handler und Installationslogik.
| Modul | Aufgabe |
|---|---|
apps/portal/__init__.py | Startup, Routing, Login, Sessions, Content-Auslieferung, Admin-Endpunkte. |
apps/portal/core.py | Page Context, Boxen, Navigation, ACL-Helfer, Template-API. |
apps/portal/lib.py | Template-Erweiterungen für Upload, Edit, Suche, SQL/DQL und Hilfsfunktionen. |
apps/portal/init.py | Installation und Bootstrap von Portal-Objekten und Keywords. |
apps/portal/services.py | Legacy-Automation für templatebasierte Ordnerinitialisierung. |
Request Context
Jede Seitenanfrage erzeugt einen PageRequestContext. Templates greifen typischerweise über page darauf zu.
Wichtige Methoden sind page.zone(name), page.mainNavigation(), page.subNavigation(), page.breadCrumb(), page.includeTemplate(...), page.getProfile(...), page.userGroups() und page.hasAclAccess(...).
Routing
Wichtige Routen sind /portal/login, /portal/logout, /portal/main, /portal/page, /portal/insert, /portal/edit, /portal/view, /portal/search und /portal/admin.
Authentifizierung
Das Portal unterstützt anonyme technische Benutzer, lokales Login über den Access Manager, SSO-Weiterleitung und OpenID-Connect-Auto-Redirect.
Template-Auflösung
Portal-Templates werden über konfigurierte Sprach-, Layout-, Master-, Edit-, View-, Search- und Box-Pfade geladen. Die Parameter mt und et können Master- oder Edit-Templates auswählen und sollten nur bewusst eingesetzt werden.
Template-Erweiterungen
portal.lib.register_template_extensions() registriert portal.Upload, portal.Edit, portal.Search, portal.Query und portal.Util.
Customizing
Kundenspezifische Portal-Arbeiten sollten möglichst in Konfigurationen und kundenspezifischen Templates erfolgen, nicht direkt in apps/portal.
Empfohlene Reihenfolge:
- Konfigurationswerte
- Portal-Seiten und Boxen
- kundenspezifische Templates
- Template-Erweiterungen
- Produktcode nur, wenn das Verhalten allgemein werden soll