Breaking: The content type academicprograms_programfinder is taken 

Description 

This extension now registers the content element Course Finder itself, as the content type academicprograms_programfinder with the Extbase plugin ProgramFinder of the extension AcademicPrograms, and the FlexForm field settings.listPid for its target page. See What the finder renders.

Those are the names projects used when they registered a finder of their own in the plugin namespace of this extension.

Impact 

A project that registers academicprograms_programfinder itself, usually in an extension loaded after this one, collides with this registration. What the editor and the visitor get depends on how the project registered it:

  • A type item added with ExtensionManagementUtility::addPlugin() or ExtensionUtility::registerPlugin() replaces the one of this extension. One added with addTcaSelectItem() , or written into the items array directly, is added a second time, and the type select offers the element twice.
  • A FlexForm data structure the project assigns replaces the one of this extension, so the backend shows the fields of the project finder and not Filter types and Preselected categories.
  • A configurePlugin() call for ProgramFinder that names the ProgramController of this extension replaces the actions of the finder, and its list of uncached actions with them: the project action keeps rendering the element, cached unless the project lists it as uncached.
  • One that names a controller of its own only adds it: the controller of this extension stays the default, and the finder of this extension renders the element with its own options. A template of the project is used only when it is the Program/Finder.html of the last bullet.
  • A subclass or an XCLASS of ProgramController no longer loads at all, because the controller is final in 3.0, see Breaking: The program controllers are final. A class the project registers in its place as a service alias, and that declares a finderAction() of its own, now renders the finder instead of the action of this extension.
  • A template Program/Finder.html of the project in the template root path of plugin.tx_academicprograms is now rendered by the action of this extension, with its variables.

Stored finder records keep their content type and their settings.listPid, and render with the finder of this extension once the project registration is gone.

Affected Installations 

Installations that register the content type academicprograms_programfinder, configure the plugin ProgramFinder of the extension AcademicPrograms, or declare a finderAction() in a class that extends or replaces ProgramController , in a site package or project extension.

Installations with a finder under a content type of their own are not affected; they can migrate to this element, see below.

Migration 

Remove from the project:

  • the type item of academicprograms_programfinder in the TCA of tt_content ( ExtensionManagementUtility::addPlugin() , addTcaSelectItem() or a direct write), and the pi_flexform data structure assigned to it;
  • the ExtensionUtility::configurePlugin() call for ProgramFinder;
  • the FlexForm file of the finder;
  • the controller code of the finder - a finderAction() in a class that extends or replaces ProgramController , or a branch on the content type in an overridden Program/List.html;
  • the page TSconfig that enables the type and adds its wizard entry.

Then enable the finder set fgtclb/academic-programs-program-finder, or depend on the aggregate set fgtclb/academic-programs.

A hard-coded preselected category becomes the field Preselected categories. A project template Program/Finder.html already is an override of the template of this extension: adapt it to the variables {filterTypes} , {categories} , {preselection} , {listUri} and {data} , or delete it.

The upgrade check academic:upgrade:check of EXT:academic_base reports an XCLASS of the controller as an error. It does not report a project registration of the content type.

A finder under a content type of its own migrates by changing the content type of its records to academicprograms_programfinder and storing its target page as settings.listPid in pi_flexform .