Upgrading from 2.4 to 3.0
Version 3.0 of academic_programs runs on TYPO3 13 and 14 only. The program page renders inside the layout of the site, the content load set of 2.4 is gone, and the facts of a program replace the categories partial. The templates carry speaking classes in place of the classes of a theme, the icons are renamed, the controllers are final, and the extension registers the content element Course Finder itself. Work through the sections in order. Skip a step that does not apply to the installation.
Before you start
Version 3.0 runs on TYPO3 13.4 from 13.4.35 on and on TYPO3 14.3 from 14.3.7 on, with PHP 8.2 or later.
academic_programs 3.0 needs these packages. Upgrade them first or in the same deployment, in this order:
- fgtclb/environment-state-manager 2.x, which academic_base 3.0 requires in place of 1.x. Composer updates it on its own. A classic installation updates environment_state_manager before it updates academic_base.
- fgtclb/academic-base 3.0, the same release as this extension.
- fgtclb/category-types 3.0, the same release as this extension.
These changes have to ship in the same deployment as the update, because a site or a request fails until they are made:
- A site that depends on
fgtclb/answers every page with HTTP 500, see Remove the content load set.academic- programs- content- load - A subclass or an XCLASS of one of the two program controllers stops with a
fatal error. A registration of the content type
academicprograms_in the site package collides with the one of this extension. Code that names the removed classesprogramfinder FileorReference Collection \Backend\fails. See Adapt your code.Tca\ Labels
The module paths on this page are those of TYPO3 13, where the upgrade runs.
Update TYPO3 first
Update TYPO3 to 13.4.35 or later while the site still runs 2.4, which supports TYPO3 13.4. Version 3.0 no longer installs on TYPO3 12, and Composer and the Extension Manager refuse it next to an older patch release of TYPO3 13.
Stay on TYPO3 13 until the upgrade is complete when the installation also has
academic_jobs, academic_persons,
academic_persons_edit or academic_projects. Their
content element wizards read the column
tt_, which
TYPO3 14 removes, so they only run on TYPO3 13. Move to TYPO3 14.3.7 or later
once they have run.
See Breaking: Removed TYPO3 v12 support and Important: TYPO3 13.4.35 or 14.3.7 is required.
Update the package
composer require -W \
'fgtclb/academic-base':'~3.0.0' \
'fgtclb/category-types':'~3.0.0' \
'fgtclb/academic-programs':'~3.0.0'
On a classic installation, update environment_state_manager to 2.x
from the TER in Admin Tools > Extensions first, then update
academic_base, category_types and
academic_programs there, in this order. Run the commands of this
page with
typo3/ instead of
vendor/.
vendor/bin/typo3 cache:flush
Update the database
vendor/bin/typo3 extension:setup
Or apply the changes in Admin Tools > Maintenance > Analyze Database Structure.
The command creates and changes tables and columns and drops nothing. For this extension it adds two columns, which TYPO3 derives from the TCA:
| Column | Change |
|---|---|
pages.,
pages. | Added. The link to an application and its label, on the tab Program of a program page. A page shows no button until an editor sets a link. See Feature: Program pages link to an application. |
An installation that added a column
application_ of its own removes
its TCA and its ext_tables.sql line for it, the data stays and the
program page renders it. One that kept the link in a column of another name
copies it into the new column once, the changelog entry has the query.
The comparison also applies the changes of the index definitions TYPO3 13.4.35 and 14.3.7 bring.
Adapt the configuration
The upgrade check
The console command
academic: of academic_base
reads the stored configuration of the installation and reports what no longer
reaches the academic extensions. For this extension it reports a dependency on
the removed content load set and an XCLASS of a controller, but neither a
subclass that is registered another way nor a registration of the finder. Run
it on the staging copy right after the package update, and fix what it
reports before the deployment:
vendor/bin/typo3 academic:upgrade:check
With the extension key and a site it also compares the override folders of the
site with the shipped files and reports an override of a file the extension no
longer ships, Program/ among them:
vendor/bin/typo3 academic:upgrade:check academic_programs --site=<site identifier>
Each finding, and what to do about it, is described in the upgrade check of academic_base.
Remove the content load set
The program page renders its content from the variable
program of its own page object since 2.4. The set
fgtclb/, which kept defining
styles. for every page of the site, its static
template Academic Programs: Content load override
(academic_programs) and the file
Configuration/TypoScript/ContentLoad/setup.typoscript are removed. No
academic extension defines
styles. any more.
See Breaking: The content load component of programs is removed.
- Remove
fgtclb/from theacademic- programs- content- load dependenciesof every site configuration and of every set of the site package, in the same deployment as the update. A site that depends on the aggregatefgtclb/needs no change.academic- programs - Remove the static template Academic Programs: Content load
override (academic_programs) from every
sys_record, and antemplate @importof the removed file from the site package. -
A template of the site package that renders
styles.defines the object itself:content. get Content styles.content.getContent < styles.content.get styles.content.getContent.select.where = {#colPos}=0Copied!An override of
Pages/that still renders it rendersAcademic Program. html {programinstead.Content -> f: format. raw ()}
academic: reports a site that depends on the removed set as
unavailable-, the removed static template as
static- and an import of the removed file as
typoscript-.
Offer the course finder
The new content element Course Finder, content type
academicprograms_, opens a program list with a selection
applied, see Feature: A program finder content element and What the finder renders. A site that
depends on the aggregate set fgtclb/, or selects the static
template and the page TSconfig Academic Programs: All components
(academic_programs), offers it after the update. A site that names component
sets or entries adds fgtclb/, or the static
template and the page TSconfig Academic Programs: Program Finder
(academic_programs), where its editors should have it.
A site that registered a finder of its own under that content type removes the registration first, see Adapt your code.
Import the moved route enhancer
The route enhancer of the Course List moved from
Configuration/ to
Configuration/, and maps the category filter into the
path as well. The former file imports the new one, so a site that imports it
keeps working. Import the new file instead:
imports:
- resource: 'EXT:academic_programs/Configuration/Routes/List.yaml'
The sorting values follow the language of the site now, so the English values a
German page published before, /title/ for instance, answer with a
404. Redirect them where they are linked from elsewhere. See
Important: The route enhancer moved and translates its values and Feature: The route enhancer maps the filter.
The list answers a filter submission with a redirect to a URL that carries the
selection. A route enhancer the site wrote for the program list itself must not
declare
defaults
for the sorting, see Important: The route enhancer declares no default sorting and
Feature: Program filter selections have a URL.
Adapt templates and assets
Style the new markup
The templates of this extension carry speaking classes now, such as ace-,
ace-, ace-, ace- and ace-, in place of the card,
list group and utility classes of a theme. The extension ships no styles for
them. Move the selectors of the site stylesheet from the old classes to the new
ones, the changelog entry lists them side by side, see
Breaking: Program templates carry speaking classes. Styling shows the
markup of every view and links the stylesheet partial the development instances
of the academic extensions use, An example.
The images of the program list and the program page render as a
<picture>
through the image partial of academic_base. CSS
that selects the image as a direct child of its container adjusts to the
wrapper. A plugin view whose partial root paths the site replaced completely
needs the path of academic_base below its own:
plugin.tx_academicprograms.view.partialRootPaths {
-1 = EXT:academic_base/Resources/Private/Partials/
}
Replace the renamed icons
The icons of this extension are new drawings, registered in a way that follows the colour scheme of the backend and the colour of the text in the frontend.
- The identifier
academic-is gone. Replace it withprograms tx-where the page type is meant and withacademicprograms- doktype- program tx-where a content element is meant, in TCA, page TSconfig, templates and CSS selectors.academicprograms- plugin- programs - The credit points icon is a frontend icon of
Configuration/. A replacement of it is registered in theFrontend Icons. php Configuration/of the site package.Frontend Icons. php - A path to a file below
Resources/points at the new file of the changelog entry.Public/ Icons/ Category Types/
See Breaking: Icons renamed, credit points icon is a frontend icon. The
category type icons in the facts render as an inline
<svg>
now, so CSS
that addressed an
<img>
addresses the
<svg>
, see
Breaking: Record and category icons follow the colour scheme.
Render program pages in the site layout
The page template of the program page type renders the section
Main
of
the layout Default of the site package, through the partials below
Program/. A program page shows the header, the navigation and the
footer of the site now. See
Breaking: Program pages render inside the site layout.
- A site package whose layout for program pages has another name sets
plugin., see The layout of a program page.tx_ academicprograms. page. layout plugin.names the page the link back to the program list leads to. Without it the page shows no link.tx_ academicprograms. page. list Pid - An override of
Pages/made to change one part moves that change to the matching partial belowAcademic Program. html Program/, see The parts of a program page, and the override goes. An override that stays renders no application link, which the partialPage/ Program/renders.Page/ Call To Action. html - A path the site set at the key
100inside the condition on the program page type moves to50, or to a key above it to win over the extension.
Render the facts
The partial Program/ is removed. The program page, the
Course Data content element and the card of the Course
List render their facts through Program/ and
Program/, from the field lists
plugin. and
card.. See
Breaking: The partial Program/Categories.html has been removed and The facts of a program.
- Move a change of one fact to an override of
Program/, and a change of the whole list to an override ofFacts/ Item. html Program/.Facts. html - Set the field lists where the override changed which facts are shown or their order.
- An override of a template that renders
<f:fails. Renderrender partial="Program/ Categories" ... /> Program/there, and remove the override ofFacts Program/.Categories. html
Compare template overrides
Version 3.0 changes these templates and partials. A copy of one of them in a
site package keeps rendering the copy, so compare each copy with the shipped
file and take over the changes. The paths below are relative to
Resources/:
| File | What changed | Entry |
|---|---|---|
Pages/ | Renders the layout of the site and the partials below
Program/, among them the facts and the application
link. | Render program pages in the site layout, Feature: Program pages link to an application |
Templates/,
Partials/ | Render the facts through Program/. The item
renders the image through Academic/ of
academic_base, and can show the most specific category
of a type. | Render the facts, Style the new markup, Feature: Program facts can show the most specific category |
Templates/,
Partials/,
Partials/,
Partials/ | Carry the wrapper, the region, the submit button and the marks the
module of the list reads to update the list in place, and load
the module unless
settings. switches it off.
The selects have no
onchange
handler any more, and the
extension allows none in the Content Security Policy. A copy that
keeps the handler needs its hash in the csp. of the
site. | Important: Overrides of the program list templates, Important: The filter form works under a security policy, Feature: The scripts of the program list and finder can be switched off |
Templates/,
Templates/ | Render the header of the content element while
render is switched on. | Feature: The plugins can render the content element header |
Partials/ | Renders the new partials Program/ and
Program/. | Feature: Active filter tags, a reset link and a result count |
Partials/ | Offers the filter types of the content element or of the site, and labels an own category type by its title. | Feature: Integrators choose the filters of the program list, Feature: Own category types are named by their title |
Partials/ | Takes the class of the heading as
class
in place of
position. | Style the new markup |
Every file above, and Partials/ | Speaking classes in place of the classes of a theme. | Style the new markup |
Partials/ | Removed. | Render the facts |
The upgrade check with the extension key and a site reports an override of a
file the extension no longer ships, Program/ among them,
see The upgrade check.
Adapt your code
ProgramandController Detailsare final. A subclass, and an XCLASS of one of them, stop with a fatal error. Remove them, and theController configurecall or the XCLASS registration that points at them, in the same deployment as the update. Move what they did to a listener of the program events or of the plugin view event, see Breaking: The program controllers are final and For developers.Plugin () - This extension registers the content type
academicprograms_with the pluginprogramfinder Programnow. A site package or project extension that registered a finder under these names removes its type item, its FlexForm, itsFinder configurecall, its controller code and its page TSconfig, in the same deployment as the update. Stored finder records keep their type and render with the finder of this extension. See Breaking: The content type academicprograms_programfinder is taken.Plugin () \FGTCLB\, deprecated in 2.4, is removed. Read the file references throughAcademic Programs\ Collection\ File Reference Collection \TYPO3\, see Breaking: The file reference collection is removed.CMS\ Core\ Resource\ File Repository:: find By Relation () \FGTCLB\is removed. Remove aAcademic Programs\ Backend\ Tca\ Labels label_that names it, it never changed a label, see Breaking: The unused TCA label class has been removed.user Func \FGTCLB\takes the facts builder, the data factory and the event dispatcher as constructor arguments. A subclass passes them on and is registered as a public service, or is replaced by a listener ofAcademic Programs\ Data Processing\ Program Data Processor Modify. See Feature: Change the program list, finder and page by event.Program Data Event - The FlexForm data structure of the Course List is one file now,
Configuration/. The files belowFlex Forms/ Program List Settings. xml Configuration/andFlex Forms/ Core12/ Core13/are gone. Code of the site that names one of them by path names the new file. The field names are unchanged. See Important: The FlexForm data structure moved.
Check the result
- The upgrade check exits with
0, without and with the extension key, see The upgrade check. Run it again after each configuration step, and in the deployment pipeline. - The content elements are offered as Course List, Course Data and Course Finder now, see Important: Content elements have new titles and descriptions.
- Every page of a site answers, none with HTTP 500.
- A program page renders inside the layout of the site, with its content and its facts.
- The program list, the details and the finder look as the site intends, with the speaking classes, and the list updates in place when a filter changes.
- A list element with a hidden sorting select keeps the default sorting of the element when it is filtered now, see Important: The program list keeps its sorting when a filter carries none.
- A list keeps its default categories of the category types a finder or its own filter does not offer, see Important: The program list keeps default categories of other types.