Upgrading from 2.4 to 3.0
Version 3.0 drops TYPO3 12, makes the three record tables of the study plan workspace aware, ships no stylesheet any more, loads the script from the template as an ES module, renders speaking classes and the shared icons of academic_base, and splits the template into partials with a markup contract of data attributes. Until the database is updated, the backend list of the study plan categories and every study plan fail. 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_study_plan 3.0 declares no new dependency of its own. It 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. Version 2.4 required 1.x. Composer updates it on its own. A classic installation updates environment_state_manager before it activates academic_base 3.0.
- fgtclb/academic-base 3.0, the same release as this extension.
These changes have to ship in the same deployment as the update:
- The database update, without which the backend list of the study plan categories and every study plan fail, see Update the database.
- The rules of the site stylesheet for the study plan. From 3.0 on the site package styles the study plan, and without its rules a semester header shows both of its glyphs and the filter does not collapse, see Site stylesheet.
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/academic-study-plan':'~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 and academic_study_plan 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 tables
tx_,
tx_ and
tx_ are workspace aware now and get
the columns
t3ver_,
t3ver_,
t3ver_ and
t3ver_ with an index. Until the columns are there, the backend
list of the study plan categories and the frontend of every study plan fail
with a database error. No stored record is changed. See
Important: Study plan records are now workspace aware. The comparison also applies the changes of the
index definitions TYPO3 13.4.35 and 14.3.7 bring.
The column
credit_ of the semester and module tables is no longer
declared in ext_tables.sql. TYPO3 derives it from the TCA, a decimal
column with two decimals, as in 2.4. On MariaDB, MySQL and PostgreSQL the
comparison leaves it alone. An installation that redefined the column in an
ext_tables.sql of its own removes that definition before the
comparison, because a declared column wins over the derived one. See
Important: The credit point columns are derived from the TCA.
On SQLite two things differ:
vendor/can create the index overbin/ typo3 extension: setup t3ver_andoid t3ver_without adding the four columns, and reports success. Check afterwards that all three tables carry the four columns, and take the schema from a database built with the new state where they are missing.wsid - The database analyzer can report "table … already exists" and "no such table: __temp__…" for the semester and module tables, because both changes rebuild those tables in one run. The tables end up complete with every value kept, and a second comparison offers nothing more.
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. Run it on the staging copy right after the
package update. For this extension it reports, among others, a site that
depends on the alias set
fgtclb/, and a site
that delivers this extension through its site set and a static template at
once:
vendor/bin/typo3 academic:upgrade:check
With the extension key and a site it also lists the template overrides of the site that no longer match a file of this extension, or that are identical to the shipped file:
vendor/bin/typo3 academic:upgrade:check academic_study_plan --site=<site identifier>
Each finding, and what to do about it, is described in the upgrade check of academic_base.
Site sets
A site that depends on
fgtclb/ keeps
working. The set is an alias of
fgtclb/, which the
upgrade check reports as a notice and which goes away in version 4.0. Depend
on
fgtclb/ instead, see
What the sets contain.
Adapt templates and assets
Site stylesheet
The study plan ships no stylesheet any more. The file
EXT:
of 2.4 is removed, and the page loads no stylesheet for the element. Style it
in the site package. Three parts of the element do not work without rules of
the site:
- A semester header shows the expand and the collapse glyph at the same time. The stylesheet shows one of them.
- The collapsible filter stays on screen while it is collapsed whenever a
rule of the site gives the filter list a
display. The stylesheet needs.ace-.filter . ace- list [hidden] { display: none } - The accordion of a narrow viewport and the highlighting of a category have
no visible effect. The script only writes the classes
openandhighlighted.
The rules 2.4 shipped live on as an example, the stylesheet of the development instances of the academic extensions. Copy what the site needs, or the rules of the stylesheet the installation loaded so far, and adapt them to the theme. See Breaking: The study plan ships no stylesheet, Style the element and the example in An example.
Speaking classes
The templates carry speaking classes with the prefix ace- now, instead of
the classes of the theme they were developed with. The content element keeps
academic-, but loses container. The filter, the semesters, the
modules and the dialog carry the classes the table of
Breaking: Study plan templates carry speaking classes lists, the grid classes
row and col stay. Move the selectors of the site stylesheet to the new
classes. How the markup of the study plan is built up is described in
Styling, the class system of all academic extensions in the
Styling chapter of academic_base.
Icons
The icons of the study plan are renamed, and the three controls of the frontend are the shared action icons of academic_base now:
| 2.4 identifier | 3.0 identifier |
|---|---|
academic- | tx- |
academic- | tx- |
academic- | tx- |
academic- | tx- |
academic- | tx- |
academic- | tx- |
academic- | tx- |
Replace the previous identifiers in TCA overrides, page TSconfig, templates and
selectors such as
.icon-. A site package that
replaced a control registers its replacement under the 3.0 identifier in its
Configuration/, not in Configuration/Icons.php,
and depends on academic_base. The replacement then shows in every
academic extension that renders the icon. See
Breaking: The study plan icons are renamed and the controls are frontend icons
and The glyphs of a semester header.
The script
The script of the study plan is an ES module now, which the template of the
content element loads with
<f:, and only on a page that
renders a study plan. The TypoScript of the extension no longer adds it, or
the stylesheet, to the page. Remove own
include or
include entries for the files of 2.4 below
frontend/. A classic script tag does not run the module. See
Breaking: The study plan assets are loaded by the template, as module.
An installation that overrode the template only to leave out the script, or to
bring its own, sets
plugin. to off
instead and drops the copy, see Skip the script.
Template overrides
One template file changed in 3.0,
Resources/,
and four partials are new. A copy of the 2.4 template in a site package keeps
rendering, but misses these changes. Compare it with the 3.0 files, or better,
replace it with an override of the one partial it is really about. The paths
below are relative to Resources/:
| File | What changed | Entry |
|---|---|---|
Frontend/ | Renders the filter, the semesters, the modules and the dialogs
through the partials Study,
Study, Study and
Study, and marks every part the script
drives with a
data- attribute. | Feature: Study plan partials and a markup contract |
Frontend/ | Loads the script with
<f: inside an
<f: on
settings., and registers no
stylesheet. | Skip the script |
Frontend/ | Renders the item the script clones with the attribute
hidden
, so its placeholder text never shows. | Important: The study plan filter template item is hidden |
Frontend/,
Frontend/ | Render the controls with
<ab: of
academic_base and the 3.0 identifiers, no longer with
<core:. | The glyphs of a semester header |
Frontend/,
Frontend/,
Frontend/ | Receive
id and start the dialog id with it, so a
plan shown again through an "Insert records" element opens its own
dialogs. | Important: A study plan shown again gets dialog ids of its own |
The script still finds the parts of an override by the class names of 2.4 when it carries none of the data attributes, but that fallback is deprecated and is removed in version 4.0. Add the attributes on the elements The data attributes names. See Deprecation: The study plan class selectors.
The upgrade check with the extension key and the site lists the overrides of a site that no longer match a file of the extension, see The upgrade check.
Adapt your code
A script of your own
An installation that drives the study plan with a script of its own, with
plugin. switched off or from a copy of
the template, takes the attribute
hidden
off every filter item it
builds from the template item, as the shipped script does:
item.removeAttribute('hidden');
Without it, the filter shows no button at all. See Important: The study plan filter template item is hidden and Feature: The study plan script can be switched off.
Check the result
- The backend list of the study plan categories opens, and a translated study plan renders. Both fail while the workspace columns are missing.
- Existing study plans render with their semesters, modules and credit points. The new content element wizard offers the element as Study Plan now, with a new description, see Important: Content elements have new titles and descriptions.
- The category, semester and module records show icons in the text colour of the backend, also in a dark colour scheme, see Important: Record icons follow the backend colour scheme.
- A semester header shows one glyph, the filter highlights the modules of a
category, and a module opens its dialog. The browser loads the module
@fgtclb/only on pages with a study plan, and no stylesheet of the extension.academic- study- plan/ frontend/ academic- study- plan. js - On an installation that uses workspaces, the live site no longer shows semesters, modules or categories that only exist as a draft in a workspace, and a workspace preview shows the workspace state, see Important: The study plan frontend is now workspace aware.
- The upgrade check exits with
0, without the extension key and with it for every site that renders a study plan, see The upgrade check.