Maintainers

Package info

github.com/zolthan/typo3-couple-manager

Homepage

Type:typo3-cms-extension

pkg:composer/schwarz-weiss-reutlingen/couple-manager

Transparency log

Statistics

Installs: 16

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.6.1 2026-07-01 20:27 UTC

This package is auto-updated.

Last update: 2026-07-01 20:30:14 UTC


README

TYPO3 Extbase extension to manage dance couples, competition results, and events — built for the dance sport community.

TYPO3 PHP License Version

Features

  • Couple profiles — manage dance couples and soloists with photo, starting group, class, and active status
  • Competition results — record placements, disciplines, promotion flags, and participant counts
  • Competition calendar — upcoming events with organizer, location, and date
  • Smart frontend plugins — switchable views (list, detail, results, future events) via FlexForm
  • Highlights view — automatically surfaces championships, promotions, and top-3 placements
  • Backend optimised — custom TCA labels, sorted selects, full workspace and localization support

Requirements

Component Version
TYPO3 9.5 or higher
PHP 7.2, 7.4, 8.0, 8.1, 8.2
EXT:extbase bundled with TYPO3
EXT:fluid bundled with TYPO3

Installation

Via Composer (recommended)

composer require schwarz-weiss-reutlingen/couple-manager

Via TYPO3 Extension Manager

Download the extension and install it through Admin Tools → Extensions.

Setup

1. Include Static TypoScript

In Web → Template, add the static template "Couple Manager" to your root template.

2. Configure the Storage PID

The extension defaults to storagePid = 137. Override this in your site's TypoScript constants to match the SysFolder where your records live:

plugin.tx_couplemanager.persistence.storagePid = <your-pid>

3. Create Backend Records

In the configured SysFolder, create:

  • Couples (tx_couplemanager_domain_model_couple)
  • Competition Types (tx_couplemanager_domain_model_competitiontype)
  • Organizers (tx_couplemanager_domain_model_organizer)
  • Competitions (tx_couplemanager_domain_model_competition)
  • Results (tx_couplemanager_domain_model_result)

Plugins

Couple Manager (tx_couplemanager_couple)

The main plugin. Select the action via the Mode tab in the FlexForm.

Action Description
Couple → list Grid of all couples, optionally with a link to the detail page
Couple → detail Single couple profile with past results
Competition → list List of all competitions
Result → list Paginated past results with optional date/limit filters
Result → listSuccess Highlights: championships, promotions, top-3, strong finishes
Result → listFuture Upcoming events for couples with Show Future enabled

FlexForm options

Couple List tab

Setting Description
Active couples first Sort active couples before inactive ones
Detail view page Page UID that contains the Couple Detail plugin

Result List tab

Setting Description
Template layout Erfolge (achievements) or Home Accordion
Limit Maximum number of results to display
Date from / to Fixed date range filter
Rolling window (days) Show results from the last N days

Couple Manager: Menu (schwarzweissreutlingen_couplemanager_menu)

Renders a compact couple navigation menu. Shows active couples sorted by name.

Domain Model

Couple ──< Result >── Competition
                 └── CompetitionType
Competition >── Organizer

Couple

Field Type Notes
manFirstName / manLastName string Male partner (omit for soloists)
womanFirstName / womanLastName string Female partner
startingGroup string Age/skill group
startingClassLatin / startingClassStandard string Dance class per discipline
activeCouple bool Shown/sorted as active
hideResults bool Suppress results on frontend
showFuture bool Include in upcoming-events view
image FileReference Couple photo (FAL)

getCoupleName() automatically formats the display name — handles soloists, shared surnames, and full couple names.

Result

Field Type Notes
couple Relation Couple this result belongs to
competition Relation Event
competitionType Relation e.g. Deutsche Meisterschaft
date DateTime
discipline string Latin / Standard
startingGroup / startingClass string Classification at time of result
position int Final placement (0 = future/pending)
participantCount int Field size
promotion bool Promotion achieved

Competition

Field Type
title string
dateStart / dateEnd DateTime
city, country, address string
organizer Relation (Organizer)

CompetitionType / Organizer

Lookup tables for categorising competitions and storing organizer contact data.

Result Highlights Logic (listSuccess)

The Erfolge view automatically groups results into four tiers:

Tier Criteria
Championships competitionType is Deutsche or Landesmeisterschaft, position ≤ 1
Promotions promotion = true
Top 3 position ∈ {1, 2, 3}
Strong finishes position / participantCount < 0.25 (top quarter)

Development

# Install dev dependencies
composer install

# Code style check / fix
composer cs:check
composer cs:fix

# Unit tests
composer test:unit

Changelog

1.3.0

  • Enhanced couple listing and detail templates
  • Improved type safety across domain models and simplified methods
  • Developer tooling and unit test coverage improvements

1.2.x

  • FAL image handling via native <f:image> (lazysizes removed)
  • Bootstrap 4 grid classes in templates
  • Fully-qualified ObjectStorage type annotations for TYPO3 9.5 compatibility

1.1.0

  • Initial public release

License

GPL-2.0-or-later — see LICENSE.

Author

Sebastian Wilhelm · Tanzsportclub Schwarz-Weiß Reutlingen e.V.