Breaking: Site sets and static templates have been restructured 

Description 

The TypoScript of this extension was shipped twice: the static template read Configuration/TypoScript/, and the site set fgtclb/academic-jobs shipped its own constants.typoscript and setup.typoscript, each of them a single @import of that folder. The page TSconfig was not selectable on a page at all — it existed only as the three wizard files under Configuration/TSconfig/Plugins/, glob imported into the always-included Configuration/page.tsconfig.

Both mechanisms now read one physical copy of every file, and both of them deliver the extension per component instead of as one block:

  • Configuration/TypoScript/NewJobForm/, Configuration/TypoScript/List/ and Configuration/TypoScript/Detail/ are what the static templates register and what the sets point their typoscript key at.
  • Configuration/TSconfig/NewJobForm/page.tsconfig, Configuration/TSconfig/List/page.tsconfig and Configuration/TSconfig/Detail/page.tsconfig hold the page TSconfig of a component and are what the page field Page TSconfig offers and what the sets point their pagets key at.
  • Configuration/TypoScript/Full/ and Configuration/TSconfig/Full/page.tsconfig are the aggregates for installations that do not use site sets.

All three content elements are driven by one Extbase plugin and share one plugin.tx_academicjobs block. That block did not move: it stays in Configuration/TypoScript/, which is the value every sys_template record that selected the static template of this extension already stores. Each component folder is a subfolder of it and names it in a one-line include_static_file.txt, so the block exists once and is delivered by both mechanisms alike.

The content elements are now hidden by default. The always-included Configuration/page.tsconfig removes academicjobs_newjobform , academicjobs_list and academicjobs_detail from the selectable content element types, and the page TSconfig of a component adds its own element back — so an element is offered where it is wanted instead of on every page of every installation. The wizard entry of an element moved into the same file, so it arrives with the component instead of with every installation. The TCA registration itself did not move, so the frontend renders existing records exactly as before. Editing such a record in the backend is a different matter — read the warning below before upgrading.

Four constants changed their shipped default from empty to 0 : plugin.tx_academicjobs.persistence.storagePid , plugin.tx_academicjobs.detailPid , plugin.tx_academicjobs.listPid and plugin.tx_academicjobs.saveForm.fallbackRedirectPageId . The site settings of this extension always declared them as 0 , and a site that uses both delivery mechanisms had the declared default reset to empty by the second read. Every consumer of the four reads an empty value and a 0 as "no page selected", so the change is a reconciliation, not a behaviour change.

Impact 

A sys_template record that selected the static template of this extension keeps its stored value, and that value keeps delivering the shared plugin configuration — but it delivers nothing else, and it never made a content element selectable.

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

The three content elements are no longer offered in the backend until the page TSconfig of the component is included, through the site set or through the page field Page TSconfig.

The set fgtclb/academic-jobs keeps its name and keeps delivering everything, so a site configuration that depends on it needs no change.

Affected Installations 

Installations that use one of the content elements of this extension without including its page TSconfig, and installations that import one of the shipped page TSconfig files from an own site package.

Migration 

The static template entry does not have to be replaced — but selecting one of the new entries instead documents what a site actually uses:

Old entry New entry
Academic Jobs (academic_jobs), stored as EXT:academic_jobs/Configuration/TypoScript Academic Jobs: All components (academic_jobs), stored as EXT:academic_jobs/Configuration/TypoScript/Full — or one of Academic Jobs: Jobs New, Academic Jobs: Jobs List, Academic Jobs: Jobs Detail. The old value stays registered as Academic Jobs: Shared plugin settings (academic_jobs) and keeps delivering the shared plugin block.

Add the page TSconfig entry, which did not exist before, in the page record of the site root, tab Resources, field Page TSconfig: Academic Jobs: All components (academic_jobs), stored as EXT:academic_jobs/Configuration/TSconfig/Full/page.tsconfig. Without it the content elements are not selectable any more, and existing records of them lose their CType when they are saved from the backend form.

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_jobs/Configuration/TypoScript/constants.typoscript unchanged
EXT:academic_jobs/Configuration/TypoScript/setup.typoscript unchanged
EXT:academic_jobs/Configuration/TSconfig/page.tsconfig EXT:academic_jobs/Configuration/TSconfig/Full/page.tsconfig
EXT:academic_jobs/Configuration/TSconfig/Plugins/NewJobsForm.tsconfig EXT:academic_jobs/Configuration/TSconfig/NewJobForm/page.tsconfig
EXT:academic_jobs/Configuration/TSconfig/Plugins/List.tsconfig EXT:academic_jobs/Configuration/TSconfig/List/page.tsconfig
EXT:academic_jobs/Configuration/TSconfig/Plugins/Detail.tsconfig EXT:academic_jobs/Configuration/TSconfig/Detail/page.tsconfig

A site configuration may name the new component sets instead of the aggregate:

Set Delivers
fgtclb/academic-jobs Unchanged in name, now delivers through the component sets below.
fgtclb/academic-jobs-new-job-form The Jobs New content element only.
fgtclb/academic-jobs-list The Jobs List content element only.
fgtclb/academic-jobs-detail The Jobs Detail content element only.