Academic StudyPlan 

Extension key

academic_study_plan

Package name

fgtclb/academic-study-plan

Version

main

Language

en

Author

FGTCLB

License

This document is published under the Creative Commons BY 4.0 license.

Rendered

Tue, 08 Sep 2026 15:24:57 +0000


TYPO3 extension for building and displaying academic study plans with semesters, modules, and categorization features.


Introduction 

What the extension does and the main concepts behind it.

Installation 

Install academic_study_plan via Composer, the Extension Manager or a TER upload.

Configuration 

Learn how to include the site set fgtclb/academic-study-plan and how to configure the content element of this extension.

Frequently Asked Questions (FAQ) 

These questions have been frequently asked.

How to get help 

Learn where to get help and how to report issues you found.

Known problems 

Known issues and information about them.

Changelog 

Learn about what has changed and which actions are required to upgrade.

What does it do? 

This extension provides record types for academic person profiles using the TYPO3 backend (list module/page layout module) to manage the profiles requiring backend user account(s).

Further, plugins are provided to display the persons in the frontend as a list view and detail view for each person.

The following profile data is available to users after installation:

  • Master data:
    • Salutation / Gender
    • title
    • First name
    • Last name
    • Middle name
    • Website + website link
    • Image
    • URL
  • Contracts:
    • Each person can receive any amount of contract data in order to be displayed in individual roles, functions or organizational units.
    • Position
    • Organizational unit / department - link to own data type
    • Contract start / end
    • Location - e.g. for campus Link to own data type
    • Room information
    • Office hours
  • Address data
  • Email addresses
  • Telephone addresses
  • Linked pages (in combination with the Contact-For-Pages extension)
  • Employment category based on system categories
  • Profile text data:
    • All textual content can be freely designed using the standard text editor.
    • Learning areas/fields of activity
    • Research areas
    • Supervised dissertations
    • Supervised doctoral theses
    • Miscellaneous information
  • Profile timeline entries
    • All timeline entries allow the chronological presentation of content, usually with a start and/or end year, a title, a short description and a link
    • Research projects
    • Academic career
    • Memberships/committee activities
    • Networks and cooperation's
    • Publications
    • Lectures
    • Press/Media Publications

Installation 

The extension has to be installed like any other TYPO3 CMS extension. You can download and install it using one of the following methods.

Install the stable release
composer require 'fgtclb/academic-study-plan':'^2'
Copied!
  1. Switch to the module Admin Tools > Extensions.
  2. Switch to Get Extensions.
  3. Search for the extension key academic_study_plan.
  4. Import the extension from the repository.
  1. Get the current version from TER by downloading the ZIP version. Alternatively, get the ZIP from the GitHub Releases page.
  2. Switch to the module Admin Tools > Extensions.
  3. Enable Upload Extension.
  4. Select or drag the extension ZIP archive and upload the file.

Configuration 

This extension ships its frontend TypoScript and its backend page TSconfig in two forms: as TYPO3 site sets, and as classic static templates plus page TSconfig files that are selected on a page. Both forms read the very same files, so they configure an installation identically.

Pick one of them per site and stay with it — see Do not combine both for what happens otherwise.

What the sets contain 

The extension ships one content element, so it ships one component set and one aggregate set that depends on it.

Set Delivers
fgtclb/academic-study-plan-content-element The Academic Study Plan content element: its TypoScript ( tt_content.academic_study_plan , the Fluid root paths and the data processor that assigns the semesters and modules to the template) and the page TSconfig that makes the content element selectable in the backend.
fgtclb/academic-study-plan Everything above. This is the set to use unless you deliberately want a subset.
fgtclb/academic-study-plan-default The name this extension published before the sets were cut per component. It delivers exactly what fgtclb/academic-study-plan delivers, and is kept so that existing site configurations keep working.

The component set depends on fgtclb/academic-base-ctype-group, the set of EXT:academic_base that labels the content element group all academic extensions sort their elements into.

The content element is hidden by default 

EXT:academic_study_plan hides its content element for the whole installation and brings it back per component. Whichever of the two mechanisms below you use, it is what makes Academic Study Plan selectable in the backend again — without one of them the content element is not offered, and existing records keep rendering.

This is not new in version 2.4: this extension always hid its content element. What changed is the file that brings it back and the name it is registered under — see Breaking: Site sets and static templates have been restructured.

Include the site set 

Add the set to the config.yaml of the site that should offer the content element:

config/sites/my-site/config.yaml (diff)
 base: 'https://example.com/'
 rootPageId: 1
+dependencies:
+  - fgtclb/academic-study-plan
Copied!

See also TYPO3 Explained, Using a site set as dependency in a site.

Include static templates 

For an installation that still configures its frontend through sys_template records, the same files are registered as static templates and as selectable page TSconfig files.

Include static TypoScript 

Edit the sys_template record of the site root and add the entry to Include static (from extensions):

Entry Delivers
Academic Study Plan: Content element (academic_study_plan) The TypoScript of the Academic Study Plan content element.
Academic Study Plan: All components (academic_study_plan) Every component this extension ships, in one entry.

Include static page TSconfig 

Edit the page record of the site root, tab Resources, field Page TSconfig, and add the entry:

Entry Delivers
Academic Study Plan: Content element (academic_study_plan) Makes the Academic Study Plan content element selectable, and configures its entry in the new content element wizard.
Academic Study Plan: All components (academic_study_plan) Every component this extension ships, in one entry.

The setting is inherited by every page below the one it is set on.

Do not combine both 

A site that uses the site set and the static template reads the shipped files twice. The site set is applied before the sys_template record, so the second read happens after the site settings and after config/sites/<site>/constants.typoscript — and it resets every constant the extension ships a default for back to that default. For this extension those are the three Fluid root paths of the content element.

Nothing else is damaged: the Constants and Setup fields of the sys_template record, the page TSconfig of a page and the page TSconfig files selected on a page are all applied afterwards and still win. Use one mechanism per site and the question does not arise.

Known problems 

Please note that this extension is still in development. Changes to existing code may appear in upcoming versions.

If you run into a bug or a feature that would be helpful, please use the issue tracker.

Breaking: Frontend assets are built and loaded differently 

Description 

The stylesheet and the script of the study plan are now compiled from sources in the repository rather than maintained as finished files, and both changed where they live and how they are loaded.

Their paths gained a frontend/ segment:

EXT:academic_study_plan/Resources/Public/Css/academic-study-plan.css
->  EXT:academic_study_plan/Resources/Public/Css/frontend/academic-study-plan.css

EXT:academic_study_plan/Resources/Public/JavaScript/academic-study-plan.js
->  EXT:academic_study_plan/Resources/Public/JavaScript/frontend/academic-study-plan.js
Copied!

The script is now an ES module. It is registered in Configuration/JavaScriptModules.php and addressed by the bare specifier @fgtclb/academic-study-plan/frontend/academic-study-plan.js.

The TypoScript include Configuration/TypoScript/Includes/Page.typoscript has been removed. It added both files to every page of the site through page.includeCSS and page.includeJSFooter . There is no TypoScript counterpart for loading an ES module, so both assets are now loaded by the plugin template instead — which also means they are only requested on pages that actually render a study plan.

Impact 

An installation that uses the extension as shipped needs to do nothing: the template loads what it needs.

An installation that referenced either file by path, or that imported the removed TypoScript include, no longer gets the assets.

Affected installations 

Installations that override AcademicStudyPlan.html, that import Includes/Page.typoscript from their own TypoScript, or that reference either asset path from a site package.

Migration 

Remove any import of the deleted TypoScript include and drop your own includeCSS or includeJSFooter entries for these files.

In an overridden template, load them the way the shipped one does:

<f:asset.css identifier="academicStudyPlan" href="EXT:academic_study_plan/Resources/Public/Css/frontend/academic-study-plan.css" />
<f:asset.module identifier="@fgtclb/academic-study-plan/frontend/academic-study-plan.js" />
Copied!

<f:asset.script> cannot be used for the script any more — a classic script tag does not execute an ES module.

Breaking: Removed TYPO3 v12 support 

Description 

Support for TYPO3 v12 has been removed for the 3.x version line, based on the dual TYPO3 core version support per major version of the academic extensions support matrix.

This includes removing build, test and configuration parts only required for TYPO3 v12. Version specific code paths are dropped in a dedicated step.

Impact 

TYPO3 v12 or older instances can no longer install or update to the 3.x version of the academic extensions and are required to upgrade TYPO3 first.

The extension cannot be installed on TYPO3 v12 anymore but does not break otherwise.

Affected installations 

All installations using an academic extension on TYPO3 v12 that want to upgrade to the 3.x version line.

Migration 

Upgrade the TYPO3 installation to a supported version - TYPO3 v13 or v14 - beforehand or within the same upgrade step.

Important: The page TSconfig directory is now spelled TSconfig 

Description 

The extensions of this set spelled their page TSconfig directory in three different ways — TsConfig, TSconfig and TSConfig. They now all use TSconfig, which is how TYPO3 spells the term and what the core documentation uses.

In this extension the directory was Configuration/TsConfig.

Nothing was broken before, because every import matched the directory it pointed at. The reason to change it is that a filesystem is case sensitive on Linux and case insensitive on macOS and Windows, so a path copied between two of these extensions resolved on one machine and silently not on another — and a page TSconfig @import that does not resolve raises no error, the configuration is simply absent.

This extension additionally registers a selectable static page TSconfig include, through ExtensionManagementUtility::registerPageTSConfigFile() . The registration was updated with the directory — and reorganised again in the same release, which changed both its label and the value a page record stores. See Breaking: Site sets and static templates have been restructured for what to select instead.

Impact 

Every file this extension ships moved with the directory. The imports inside the extension were updated in the same change, so an installation that only installs the extension has nothing to do.

An integrator who references these paths from their own configuration has to update them, because the old path no longer exists. The files below the directory were reorganised in the same release, so the new path is not the old one with the spelling corrected — take it from the table in Breaking: Site sets and static templates have been restructured:

Page TSconfig of your own site package
# before
@import 'EXT:academic_study_plan/Configuration/TsConfig/Default.tsconfig'
# after
@import 'EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig'

# before
@import 'EXT:academic_study_plan/Configuration/TsConfig/Includes/academic-study-plan.tsconfig'
# after
@import 'EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig'
Copied!

Affected Installations 

Every installation that imports a page TSconfig file of this extension by path, or that copied such a path into its own site package. An installation that relies only on the auto-included Configuration/page.tsconfig of the extension, or on its site set, is unaffected.

Important: Record icons follow the backend colour scheme 

Description 

The three tables of this extension pointed at their icon files directly, through the TCA ctrl.iconfile option. That bypasses the icon registry altogether: the file gets the core provider, which renders the default markup as an <img> tag. An image is opaque to CSS, so the icons kept the colours of their files whatever the backend colour scheme said.

The tables now point at the identifiers academic-study-plan-category , academic-study-plan-module and academic-study-plan-semester through ctrl.typeicon_classes . Those identifiers were already registered in Configuration/Icons.php and unused; they now carry \FGTCLB\AcademicBase\Imaging\IconProvider\CurrentColorSvgIconProvider .

The three files were three-colour illustrations and are redrawn in a single colour, which is what following the text colour means. The shapes are kept: the coloured body becomes an outline, the lighter shapes on it become solid. The module and the semester icon differed in colour and in size only, so they now look alike apart from their proportions.

Impact 

The category, module and semester record icons take the text colour of the backend, so they stay legible in a dark colour scheme - and they no longer carry an orange, teal or grey of their own.

Affected Installations 

Every installation of this extension.

Important: Study plan categories are now workspace aware 

Description 

The table tx_academicstudyplan_domain_model_category was the only one of the three record tables of this extension without 'versioningWS' => true in its TCA ctrl section. It now carries the flag, like tx_academicstudyplan_domain_model_semester and tx_academicstudyplan_domain_model_module already did.

The two of them were declared workspace aware because they are inline children of the workspace aware tt_content . Categories are related to a module through the intermediate table tx_academicstudyplan_module_category_mm instead, so the same reasoning applies to them, but nothing pointed it out — neither TYPO3 nor the test suite reports a missing declaration for that relation type.

Impact 

The flag is what \TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema derives the t3ver_oid , t3ver_wsid , t3ver_state and t3ver_stage columns and their index from, so the table needs those columns added. Run the database analyzer once after updating, in the Admin Tools > Maintenance module or with vendor/bin/typo3 extension:setup .

This is not optional and it does not wait for someone to open a workspace. A workspace aware table is queried with a WorkspaceRestriction in the live workspace too, so until the analyzer has run, both of these raise a database error about the unknown columns:

  • the backend list of study plan categories — DatabaseRecordList adds the restriction unconditionally, with the backend user's workspace, including workspace 0 ;
  • the frontend rendering of any translated study plan — the language overlay in \TYPO3\CMS\Core\Domain\Repository\PageRepository selects the overlay record with a FrontendRestrictionContainer , which carries the restriction by default.

Once the columns are there, categories can be created and changed in a workspace, and any consumer that gates on ctrl.versioningWS — the workspaces module, and third party extensions that restrict themselves to versionable tables — sees the table.

That also flips how an editor's change is stored. In a workspace with live editing enabled, a category edit previously went straight to live, because TYPO3 permits live editing only for tables that are not workspace aware. It now becomes a workspace version that has to be published.

What does not change is the frontend rendering of the study plan itself. This extension selects semesters, modules and categories with its own queries, which add no WorkspaceRestriction and perform no version overlay, and they resolve their relations through live uids. A workspace preview therefore keeps showing the live study plan. The one exception is a side effect of the language handling: the translation of a record is fetched through PageRepository , which does overlay it, so in a workspace preview a translated category can differ from its default language row. That asymmetry is not new — it applies to the semester and module tables in the same way — and it is tracked separately.

Affected Installations 

Every installation of this extension. No existing record is touched and no rendered output changes — but the database analyzer has to run, and until it does the two places named under Impact are broken. Development instances built from a committed database snapshot need the same treatment.

Important: The study plan frontend is now workspace aware 

Description 

\FGTCLB\AcademicStudyPlan\Service\StudyPlanService builds the queries for semesters, modules and categories itself. They carried no workspace constraint and no version overlay, with two consequences.

Unpublished drafts were served to the public. A workspace version is an ordinary row in the database, told apart from a live record only by t3ver_wsid . With no condition on that column every draft was selected alongside the record it is a draft of, and rendered next to it — including records created in a workspace and never published, which have no live counterpart at all.

A workspace preview was not a preview. It showed the live records and the workspace records together, rather than the workspace state.

Both are fixed by the two pieces TYPO3 provides for it: a WorkspaceRestriction on each query, which in the live workspace constrains to t3ver_wsid = 0 , and PageRepository::versionOL() on each fetched row, which replaces a record with its draft in a preview and drops it where the workspace deletes it.

Impact 

On the live site, records disappear that should never have been there. If a study plan showed duplicated or unexpected semesters, modules or categories, those were workspace drafts and they are gone now. No live record is affected.

In a workspace preview the study plan now shows the workspace state.

What still is not previewed is a relation changed in a workspace. Attaching or detaching a category from a module inside a workspace is not reflected: the overlay keeps the live uid of the module, so the categories are looked up through the live relations. The content of a record — its label, colour, note, credit points — is previewed correctly. Only the wiring between records is not.

Affected Installations 

Every installation that uses workspaces for study plan content. An installation that never created a workspace version of a semester, module or category renders exactly as before.

3.x Changes by type 

This lists all changes to the Academic Persons extension of minor versions grouped by their type.

Table of contents

Breaking Changes 

Features 

Deprecations 

Important notes 

Breaking: Site sets and static templates have been restructured 

Description 

This extension already shipped both delivery mechanisms, and it already hid its content element by default — it is the only academic extension that did. What it shipped them through were four one-line @import files around two real ones:

  • Configuration/TypoScript/Default/setup.typoscript and Configuration/Sets/AcademicStudyPlan/setup.typoscript both imported Configuration/TypoScript/Includes/ContentElement.typoscript.
  • Configuration/TSconfig/Default.tsconfig and Configuration/Sets/AcademicStudyPlan/page.tsconfig both imported Configuration/TSconfig/Includes/academic-study-plan.tsconfig.

The indirection is gone. Both mechanisms now read one physical copy of every file, and both of them deliver the extension per component:

  • Configuration/TypoScript/ContentElement/ holds the TypoScript of the Academic Study Plan content element and is what the static template registers and what the set points its typoscript key at.
  • Configuration/TSconfig/ContentElement/page.tsconfig holds its page TSconfig and is what the page field Page TSconfig offers and what the set points its pagets key at.
  • Configuration/TypoScript/Full/ and Configuration/TSconfig/Full/page.tsconfig are the aggregates for installations that do not use site sets.

Three things changed beyond the paths:

  • The three Fluid root paths of the content element are constants now, plugin.tx_academicstudyplan.view.templateRootPath , …partialRootPath and …layoutRootPath . They were assigned in the setup directly and could only be changed by overriding the content element object. The shipped values are unchanged, and the new constants.typoscript is delivered by both mechanisms together with the setup.
  • The wizard entry of the content element is registered unconditionally. It used to sit in a [typo3.branch == "12.4"] condition, which never matched on a version this release supports.
  • The published set fgtclb/academic-study-plan-default is an alias without payload now. It depends on the new aggregate fgtclb/academic-study-plan , which depends on the component set fgtclb/academic-study-plan-content-element .

Impact 

A sys_template record that selected the old static template keeps its stored value, and that value now points at a folder holding no constants.typoscript and no setup.typoscript. It is not an error — the frontend simply loses the content element configuration, and the element renders as an empty content element.

A page record that selected the old page TSconfig file keeps its stored value too, and that value now points at a file that does not exist. An unresolved page TSconfig include is silent, so the content element stops being selectable on that page tree without any message.

A site package that imported one of the shipped files by path fails to resolve it. @import of a missing file is silent, so this also shows up as missing configuration rather than as an error message.

Affected Installations 

Installations that select the static template or the page TSconfig file of this extension, that depend on its site set, or that import one of the shipped files from an own site package.

Migration 

Replace the static template entry in the sys_template record:

Old entry New entry
Academic StudyPlan (Default) (academic_study_plan), stored as EXT:academic_study_plan/Configuration/TypoScript/Default Academic Study Plan: All components (academic_study_plan), stored as EXT:academic_study_plan/Configuration/TypoScript/Full — or Academic Study Plan: Content element (academic_study_plan), stored as EXT:academic_study_plan/Configuration/TypoScript/ContentElement

Replace the page TSconfig entry in the page record of the site root, tab Resources, field Page TSconfig:

Old entry New entry
Academic StudyPlan (Default) (academic_study_plan), stored as EXT:academic_study_plan/Configuration/TSconfig/Default.tsconfig Academic Study Plan: All components (academic_study_plan), stored as EXT:academic_study_plan/Configuration/TSconfig/Full/page.tsconfig — or Academic Study Plan: Content element (academic_study_plan), stored as EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig

Sites that use the site set instead need no migration — but they must not use both mechanisms at once, see the Configuration chapter.

Adjust every @import in an own site package:

Old path New path
EXT:academic_study_plan/Configuration/TypoScript/Default/setup.typoscript EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript
EXT:academic_study_plan/Configuration/TypoScript/Includes/ContentElement.typoscript EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript, together with EXT:academic_study_plan/Configuration/TypoScript/ContentElement/constants.typoscript in the constants of the same template
EXT:academic_study_plan/Configuration/TSconfig/Default.tsconfig EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig
EXT:academic_study_plan/Configuration/TSconfig/Includes/academic-study-plan.tsconfig EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig

A site configuration may name the new sets instead of the published one:

Set Delivers
fgtclb/academic-study-plan-default Unchanged in name and in what it delivers, now an alias of the aggregate below.
fgtclb/academic-study-plan Everything this extension ships.
fgtclb/academic-study-plan-content-element The Academic Study Plan content element only.

Sitemap