Site Documentation

Site Documentation

Site: http://unidaun.localhost/ Organization: Junior Uni Daun Platform: WordPress (IIS + PHP) integrated with K3 Seminar Management (Blazor backend API) Theme: u-design Database: wp_unidaun Last updated: July 2026


1. Executive Summary (for presentations)

The unidaun-wordpress site is the public web front-end for Junior Uni Daun. It lets visitors:

  • Browse and filter courses by subject area, target group, location, and date
  • View course details, trainers, and locations
  • Register and log in with a K3 participant account
  • Add courses to a shopping basket and complete booking in the K3 Blazor webshop

WordPress handles content, layout, and navigation. The K3 API is the system of record for courses, participants, and bookings. Custom plugins connect both worlds.

Key value proposition

AreaWhat the site delivers
DiscoveryCourse program, tree search, auto-generated course pages by Fachbereich/Zielgruppe
CommerceAdd-to-basket from course lists, basket merge on login, deep-link to K3 checkout
Accounts
BrandingCustom header/footer, Fachbereich color coding, floating action buttons

2. System Architecture

flowchart TB subgraph User["End user browser"] WP[WordPress pages & shortcodes] Cookies[K3 session cookies] end subgraph WPStack["WordPress (unidaun.localhost)"] Theme[u-design theme] MU[Must-use plugins: header, benutzerkonto, cache] K3Plugins[K3 custom plugins] Builders[Template builders – admin] Sync[K3 Course Sync – page generator] end subgraph K3["K3 Blazor API"] Auth[/api/loginExternal] Courses[/api/tblKursDetailsProc] Basket[/api/tblShoppingBasket] Register[/api/tblTeilnehmer] DeepLink[/Authenticate?Authkey=…] end User –> WP WP –> K3Plugins K3Plugins –> Auth K3Plugins –> Courses K3Plugins –> Basket K3Plugins –> Register K3Plugins –> DeepLink Builders –> WP Sync –> WP Theme –> WP MU –> WP

Layered plugin architecture

K3 API Konfiguration (settings) + k3Auth (service token)
        ?
Template Builders (admin UI ? wp_options templates)
        ?
Preview / Renderer plugins (shortcodes, JS/React or PHP)
        ?
Course browsing UIs (K3CourseListPage, K3Kursprogramm, TreeSearch)
        ?
Auth & commerce (login widget, register, overlay buttons)

3. Site Chrome & Global UX

3.1 Branded header and footer (k3-site-header MU-plugin)

  • Top bar: Phone +49 6592 712 8800, email info@junior-uni-daun.de, Facebook & Instagram links
  • Logo: Junior Uni Daun logo replaces default site title
  • Footer: Branded site footer

3.2 Floating overlay buttons (knechtli-overlay-buttons)

A collapsible FAB (floating action button) on all pages with quick access to:

ButtonDefault targetFunction
Login/benutzerkonto/Opens account page
SearchTheme search toggleSite-wide search
Contact/kontakt/Contact page
CartK3 webshop basket URLShows live basket item count when logged in

Configured under Settings ? Knechtli Overlay Buttons.

3.3 Login widget in navigation (k3-api-login-widget)

When logged in, the header shows:

  • User display name
  • Meine Daten ? K3 backend (BackEnd deep link)
  • Warenkorb ? K3 shopping basket (ShoppingBasket deep link)
  • Logout

4. Page Map & Functionalities

Note: Exact page titles and counts live in the WordPress database (wp_posts). The list below is derived from plugin bootstrap logic, navigation defaults, and Course Sync configuration. After deployment, verify the live menu at http://unidaun.localhost/.

4.1 Core system pages (auto-created by plugins)

URLPage titleShortcode / contentPrimary functionality
/Startseite (front page)Theme + optional [k3_login_widget]Landing page; login widget may be prepended automatically
/benutzerkonto/Benutzerkonto[k3_benutzerkonto]Tabbed Login and Register
/kursprogramm/Kursprogramm[K3Kursprogramm]Full course program with modal filters (date, Fachbereich, Zielgruppe, Kursort, search)
/trainerTrainer detail[TRAINER] or [KursleiterDetail]Trainer profile; expects ?trainerId={guid}

4.2 Demo / configuration pages (navigation defaults)

These pages are referenced in K3 Course Sync default site navigation and are typically created manually or during setup:

URL slugLabelTypical shortcodeFunctionality
/kurse/KurseParent for generated course pagesEntry point for course browsing; children populated by Course Sync
/kursliste/Kursliste[K3CourseListPage] or [KursTemplate]AJAX course list with Kursgruppe cards + detail sidebar
/kursprogramm-2/Kursprogramm (alt.)[K3Kursprogramm]Alternative program page (if duplicated during setup)
/kursgrundlagen-view/Kursgrundlagen View[KursgrundlagenTemplate]Course fundamentals / prerequisite information
/kurspool-listen/Kurspool listen[KursPoolListenTemplate]Course pool lists from /api/tblkursPool
/kontakt/KontaktTheme / Elementor contentContact (overlay button default)
/beispiel-seite/Beispiel-SeiteDemo contentExample / test page

K3 Course Sync generates a hierarchical page tree under /kurse/ based on K3 data:

Example URL pattern:

/kurse/{fachbereich-slug}/{zielgruppe-slug}/{page-slug}/

Example:

/kurse/mathematik-informatik-und-technik/7-10-jaehrige/{course-group-page}/

Each generated page contains a [KursTemplate] shortcode pre-configured with:

  • Filter for the specific Kursgruppe / CourseGroupingDetail
  • Template name from the import library
  • PHP or JS rendering mode
  • Optional search, quick filters, and sort settings

Post meta stored on generated pages:

4.4 Fachbereiche (Kursgruppen) with brand colors

Configured in k3-course-sync/config/kursgruppen-styles.json:

SlugLabelSidebar color
mathematik-informatik-und-technikMathematik, Informatik und Technik#00ADCA
naturwissenschaftenNaturwissenschaften#AFCA05
geistes-kultur-und-gesellschaftswissenschaftenGeistes-, Kultur- und Gesellschaftswissenschaften#B80076
gesundheits-ernaehrungs-und-bewegungswissenschaften#e7323e
sozialpaedagogik#EC6600
sprache-und-kommunikationSprache und Kommunikation#f3f0fb
natur-und-umweltNatur und Umwelt#eef8f0

These colors appear in the right meta sidebar on course detail pages (Fachbereich, Zielgruppe, Dozent/in, Treffpunkt).


5. User Workflows

5.1 Browse courses

flowchart LR A[Visitor lands on site] –> B{How to browse?} B –> C[/kursprogramm/] B –> D[/kurse/ tree pages] B –> E[TreeSearch shortcode] B –> F[/kursliste/] C –> G[Open filter modals] G –> H[AJAX loads course cards] D –> H E –> I[Expand Kursgruppe tree] I –> J[Click linked WP page] F –> H H –> K[View course details in template]

Kursprogramm workflow (/kursprogramm/):

1. User sees course program title and filter bar 2. Opens modals: DATUM, FILTER (Fachbereich, Zielgruppe, Kursort), SUCHBEGRIFF 3. Toggles sort: alphabetical ? by date 4. Course list loads via AJAX (/wp-json/k3kp/v1/courses) 5. Only courses with isWebPublished = true are shown

TreeSearch workflow ([treesearch]):

1. Hierarchical tree: Kursgruppe ? CourseGroupingDetail ? courses 2. Optional Zielgruppe filter and text search 3. Leaf nodes link to matching WordPress pages (matched by slug, title, or _k3cs_normalized_key)

5.2 Book a course (Warenkorb)

Steps for end users:

5.3 Login

flowchart TD A[User opens /benutzerkonto/] –> B[Enter username + password] B –> C[AJAX: k3_api_login] C –> D{K3 /api/loginExternal} D –>|Success| E[Set cookies: k3_login_id, k3_login_name, k3_Rep_Guid_User] E –> F{Temp basket exists?} F –>|Yes| G[MergeBaskets API] F –>|No| H[Load existing basket ID] G –> H H –> I[User sees Meine Daten + Warenkorb links] D –>|Failure| J[Show error message]

Login entry points:

  • Floating overlay login button
  • Login widget in main navigation
  • Redirect from course template when login required

5.4 Registration

flowchart TD A[User opens /benutzerkonto/] –> B[Tab: Account erstellen] B –> C[Enter email + password] C –> D[AJAX: k3_register_user] D –> E[K3: CreateTeilnehmer] E –>|Success| F[Create/sync WordPress user] F –> G[Auto-login via k3_login_widget] G –> H[Success modal + link to Stammdaten AdresseDaten]

After registration, the user is immediately logged into both K3 (cookies) and WordPress (auth cookies).

5.5 Account management (post-login)

ActionHowDestination
View/edit profileMeine Daten in header
Open basketWarenkorb in header or overlay
Edit address dataLink after registrationK3 AdresseDaten deep link
LogoutLogout buttonClears K3 cookies and session

5.6 Trainer & location detail

PageURL patternShortcodeData source
Trainer detail/trainer?trainerId={guid}[TRAINER] / [KursleiterDetail]/api/tblTeilnehmer/courseleaders
Location detail/standort?... (configurable)[location] / [location_location]/api/tblkursstandorte
Location mapAny page[location_map] / [locations_map]Location API + Leaflet

Trainer links are auto-generated in course templates, e.g. /trainer?trainerId={guid}.


6. Admin Workflows

6.1 K3 API configuration

Menu: WordPress Admin ? K3 API

SettingPurpose
API Basis URLK3 Blazor backend root
Cache-DauerAPI response cache (default 5 min)
Benutzername / KennwortService account for server-side API calls
Secret Key (Blazor)AuthKey for deep links to Meine Daten / Warenkorb
Webshop Basket URLExternal basket page URL
URL extensionsEndpoints for courses, Kursgruppen, locations, Kursgrundlagen, etc.
Trainer/Location pathsWordPress paths for detail pages

Token test: Admin can generate a sample curl command to verify API connectivity.

6.2 Template builders (visual editors)

Each builder provides a React-based grid editor in wp-admin, stores templates in wp_options, and supports JSON import/export.

Admin menuPluginFrontend shortcodeData
Kurslisten-Konfigkurslist-template-builder[KursTemplate]Course list API
Kurspoollisten-Konfigkurspoollisten-template-builder[KursPoolListenTemplate]/api/tblkursPool
Kursgrundlagen-Konfigkursgrundlagen-template-builder[KursgrundlagenTemplate]Kursgrundlagen API
Kursleiter-Listen-Konfigkursleiter-template-builder[TRAINER], [KursleiterCarousel]Course leaders API
Kursleiter Detail-Templateskursleiter-detail-template-builder[KursleiterDetail]Filtered by repguid
Location-Konfiglocation-template-builder[location_locations], [location_map]Standorte API

Typical editor workflow:

1. Open builder in admin 2. Design grid layout (fields, labels, cart button, links) 3. Preview (JS or PHP mode) 4. Save template with a unique name 5. Use template name in shortcode: [KursTemplate template="MyTemplate" filter="..."]

6.3 K3 Course Sync (page generation pipeline)

Menu: WordPress Admin ? K3 Course Sync

SubmenuPurpose
AuswahlLoad courses from K3 API; select Kursgruppen / details in tabs
Seiten-BuilderConfigure shortcode template, rendering mode, filters, menu structure
Kursgruppen-StileManage Fachbereich sidebar colors
KursgruppendetailsSettings for course grouping detail display
Import-TemplatesTemplate library for generated pages
Publish / bulk-manage generated pages

Content editor workflow:

6.4 Overlay button settings

Menu: Settings ? Knechtli Overlay Buttons

Toggle visibility of login, search, contact, and cart buttons; configure URLs and search selectors.


7. Plugin Reference

7.1 Custom K3 plugins

PluginRole
k3-KonfigCentral API settings
k3AuthShared auth library (not independently activated)
k3-api-login-widgetLogin widget, basket cookies, deep links
k3-registerParticipant registration
k3-course-list-pageAJAX course list with filters
k3-kursprogrammModal-based course program UI
k3-treesearch-shortcodeHierarchical course tree
k3-course-syncAdmin page generation from K3 data
kurslist-template-builder + kurs-template-previewCourse list templates & rendering
kurspoollisten-template-builderCourse pool templates
kursgrundlagen-template-builder + preview + blockCourse fundamentals templates
kursleiter-template-builder + detail builderTrainer list & detail templates
location-template-builderLocation list, detail, maps
knechtli-overlay-buttonsFloating action buttons

7.2 Must-use plugins (wp-content/mu-plugins)

FilePurpose
k3-api-transient-cache.phpShared API response caching
k3-localhost-ssl.phpSSL verify bypass for local K3 dev API
k3-site-header.phpJunior Uni branded header/footer
k3-benutzerkonto-page.phpAuto-creates /benutzerkonto/
k3-knechtli-overlay-buttons.phpAlways loads overlay plugin
knechtli-critical-css-visibility-fix.phpFixes theme white-page race condition

7.3 Third-party plugins (supporting role)

PluginRole on this site
u-design + u-design-coreMain theme and layout
Elementor + js_composerPage building
WooCommerceE-commerce framework (K3 basket is primary booking path)
LearnPressLMS (may be legacy or supplementary)
Contact Form 7 / WPFormsContact forms
The Events CalendarEvents
Leaflet MapMaps for location templates
Mega MenuNavigation
ACF, Meta Box, KirkiCustom fields and theme options

8. API Integration Summary

Authentication

EndpointUsed for
GET /api/Authentication/GetAntiforgeryTokenCSRF token (all server calls)
POST /api/Authentication/AuthenticateService account token
POST /api/loginExternalEnd-user login

Courses & metadata

EndpointUsed for
/api/tblKursDetailsProc/currentPublished course lists
/api/tblkursgruppenFachbereich filter data
/api/tblcourseGroupingDetailZielgruppe / grouping filters
/api/tblkursstandorteLocation data
/api/tblkursPoolCourse pool lists
/api/tblTeilnehmer/courseleadersTrainer data

Shopping basket

EndpointUsed for
GetUserBasketID/{userId}Read existing basket
NewBasket/{userId}Create basket
AddBookingItem/{orderID}/{itemId}Add course
MergeBaskets/{userId}/{tempBasketId}Merge anonymous basket on login
GetBookingDataCount/{orderID}/{repGuid}Cart badge count

Deep links (Blazor)

Payload: `UserID={repGuid}&SecretKey={k3_secret_key_logon}&DP={BackEndShoppingBasketAdresseDaten}`

URL: {base}/Authenticate?Authkey={base64(payload)}


9. Shortcode Quick Reference

ShortcodePage / contextDescription
[k3_benutzerkonto]/benutzerkonto/Tabbed login + register
[k3_login_widget]Header, account pageLogin form + logged-in nav
[k3_register_form]Account page (register tab)Registration form
[K3Kursprogramm]/kursprogramm/Course program with modals
[K3CourseListPage]Course list pagesFull AJAX list with sidebar filters
[KursTemplate template="..." filter="..."]Generated & manual pagesRenders course cards from template
[treesearch]Any pageHierarchical course tree
[TRAINER]/trainerTrainer detail
[KursleiterDetail]Trainer pagesAlternative trainer detail
[KursgrundlagenTemplate]Kursgrundlagen pagesCourse fundamentals
[KursPoolListenTemplate]Kurspool pagesCourse pool display
[location_locations]Location overviewAll locations
[location] / [location_location]Location detailSingle location
[location_map]Any pageSingle location map

10. Presentation Outline (slide suggestions)

Use this outline for a stakeholder presentation:

  • Challenge: Present K3 seminar data on a modern, branded public website
  • Solution: WordPress front-end + K3 API back-end + custom bridge plugins

Use the mermaid diagram from Section 2.

1. Land on homepage 2. Browse Kursprogramm or Fachbereich pages 3. Add courses to Warenkorb 4. Register / login 5. Complete booking in K3 webshop

  • Modal filters (date, Fachbereich, Zielgruppe, Ort, search)
  • TreeSearch navigation
  • Auto-generated pages per course grouping
  • Fachbereich color coding

  • K3 API settings (one central config)
  • Visual template builders (no code needed for layout changes)
  • K3 Course Sync (bulk page generation from K3 data)

  • Custom header/footer (contact, social)
  • Floating action buttons (login, search, contact, cart)
  • Responsive u-design theme

  • WordPress on IIS (web.config rewrite to index.php)
  • Database: wp_unidaun
  • API cache: configurable (default 5 min)
  • Related project: fba_wordpress syncs K3 plugins from this repo

  • Live demo
  • Content publishing workflow training
  • Production domain cutover checklist

11. Environment & Deployment Notes

ItemValue
Local URLhttp://unidaun.localhost
Document rootC:\inetpub\unidaun-wordpress
Web serverIIS with PHP FastCGI
DB namewp_unidaun
Table prefixwp_
Related sync scriptfba_wordpress/scripts/sync-k3-from-unidaun.ps1

Local development requirements

1. IIS site bound to unidaun.localhost (hosts file entry) 2. MySQL reachable with wp_unidaun database 3. K3 API base URL configured in K3 API admin (local Blazor instance or remote) 4. k3-localhost-ssl.php relaxes SSL verification for local K3 dev servers


12. Related documentation in this repository

FileContent
Kurslisten-Warenkorb-Joomla-Bedienungsanleitung.mdBasket/login flow (Joomla variant; same K3 API concepts)
wp-content/plugins/docs/Plugin change log and component notes
wp-content/plugins/docs/classes/K3_API_Login_Widget.mdLogin widget behavior
wp-content/plugins/docs/components/k3-registeruser.mdRegistration auto-login
wp-content/plugins/docs/components/kurs-template-preview.mdCart modal & source propagation

13. Glossary

TermMeaning
K3Seminar management system (Blazor API + webshop)
KursgruppeSubject area / Fachbereich (top-level course grouping)
CourseGroupingDetailSub-grouping, often Zielgruppe (target age group)
WarenkorbShopping basket in K3 webshop
Meine DatenUser profile area in K3 backend
repGuid / repGuidUserK3 participant identifier
orderIDShopping basket ID
isWebPublishedFlag: course visible on public website
wp_refSource URL appended to external K3 links for referrer tracking

*This document was generated from codebase analysis. For an exact live page inventory, run wp post list --post_type=page --post_status=publish against a running instance, or inspect Pages in wp-admin.*