Upgrading from 2.3 to 3.0
This page takes an installation of academic_study_plan 2.3 straight
to 3.0, without the step to 2.4. Version 2.4 delivers the page TSconfig per
component, moves the configuration files, stores decimal credit points and
reads the label overrides from the documented path. Version 3.0 drops TYPO3 12,
makes the record tables of the study plan workspace aware, ships no stylesheet,
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. The page leaves out two
states of 2.4 that 3.0 replaces: the asset paths below frontend/, see
Breaking: The frontend assets are built and moved, and the control icon identifiers of
2.4, see Important: The study plan controls are visible. 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, new since 2.4, which academic_base 3.0 requires. Composer installs it on its own. A classic installation installs 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 page TSconfig of the content element, on every site that selects the page TSconfig of version 2.3. The content element is not offered to editors until it is done, see Page TSconfig of the content element.
- The rules of the site stylesheet for the study plan. Without them 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.3, 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, install environment_state_manager 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
An installation that redefined
credit_ in an
ext_tables.sql of its own removes that definition first, because a
declared column wins over the derived one. A TCA override that only adds
'format' => 'decimal'
to the field can go. Then update the database:
vendor/bin/typo3 extension:setup
Or apply the changes in Admin Tools > Maintenance > Analyze Database Structure.
Two changes reach the tables of the study plan, and no stored record is changed:
- The column
credit_of the tablespoints tx_andacademicstudyplan_ domain_ model_ semester tx_changes fromacademicstudyplan_ domain_ model_ module intto a decimal column with two decimals. TYPO3 derives it from the TCA now. The change keeps every stored value, and editors can enter a value such as 2.5 afterwards, which the integer column cannot hold on MariaDB, MySQL and PostgreSQL. See Important: Study plan credit points take decimals and Important: The credit point columns are derived from the TCA.(11) - The tables
tx_,academicstudyplan_ domain_ model_ category tx_andacademicstudyplan_ domain_ model_ semester tx_are workspace aware and get the columnsacademicstudyplan_ domain_ model_ module t3ver_,oid t3ver_,wsid t3ver_andstate t3ver_with an index. Until they are there, the backend list of the study plan categories and the frontend of every study plan fail with a database error. See Important: Study plan records are now workspace aware.stage
The comparison also applies the changes of the index definitions TYPO3 13.4.35 and 14.3.7 bring.
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 structure of the configuration is described in Breaking: Site sets and static templates have been restructured. The deprecated static template path is described in Deprecation: The static template path of version 2.3.
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 page that still
selects the page TSconfig file of 2.3, an import of a file that moved, 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.
Page TSconfig of the content element
The content element is hidden for the whole installation, as it was in 2.3, and the page TSconfig of its component brings it back. The file version 2.3 registered for the page field Include static Page TSconfig (from extensions) is gone, and the value a page record stored for it is not rewritten. It simply stops resolving, without a message, and the content element is no longer offered on that page tree.
For a site that does not depend on the site set of this extension, edit the page record of every site root that selected Academic StudyPlan (Default) (academic_study_plan), tab Resources, field Include static Page TSconfig (from extensions). Remove the old entry and select Academic Study Plan: All components (academic_study_plan) instead. This query lists the page records that still store the old value:
SELECT uid, pid, title FROM pages
WHERE tsconfig_includes LIKE '%academic_study_plan/Configuration/TsConfig/Default.tsconfig%';
See Important: The page TSconfig directory is now spelled TSconfig as well.
Until a component is included, an existing content element of it keeps rendering and keeps its type: academic_base shows the stored type in the field Type followed by (not enabled on this page), and saving keeps it. The warning of the 2.4 changelog entry that saving such a record rewrites its type describes the state before a fix that academic_base 2.4 carries as well, see its changelog entry. A content element that a page TSconfig of your own already turned into another type is not repaired. Correct it by hand from its record history.
Static template
A
sys_ record that selected Academic StudyPlan
(Default) in its field Include TypoScript sets on the tab
Advanced Options keeps delivering the content element. The entry
is listed as Academic Study Plan: Path up to 2.3 (deprecated, use
All components) (academic_study_plan) now and is removed in version 4.0.
Replace it with Academic Study Plan: All components
(academic_study_plan).
Site sets
A site that depends on
fgtclb/ keeps
working. The set is an alias of the aggregate
fgtclb/
now, 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.
A site uses the site set or the static template, not both. With both, the static template sets the constants of the extension back to their defaults after the site settings, see Do not combine both.
Imports in a site package
An
@import
of a file that moved loads nothing and reports no
error. Replace the old paths:
| Old path | New path |
|---|---|
EXT: | EXT: |
EXT: | EXT: |
EXT: | EXT: |
EXT: | EXT: |
EXT: | EXT: |
Remove an import of
EXT:
without a replacement. It added the stylesheet and the script to every page.
In 3.0 there is no stylesheet, and the template loads the script itself.
The file Configuration/TypoScript/Default/setup.typoscript still exists.
It is deprecated, keeps delivering the content element and is removed in
version 4.0. Replace an import of it with
EXT:.
The setup reads constants now. Import
EXT:
into the constants of the same template, or the content element cannot find its
template. That also applies to a site package that keeps importing the
deprecated Configuration/TypoScript/Default/setup.typoscript: it imports
the constants. of that folder as well.
Template paths
The Fluid root paths of the content element are constants now:
plugin.,
partial and
layout. An override of
tt_ keeps working.
Setting the constants is the shorter way.
Label overrides
Label overrides are read from
plugin., no
longer from
plugin.. Move them:
# Before
plugin.tx_academic_study_plan._LOCAL_LANG.default.credits = ECTS
# After
plugin.tx_academicstudyplan._LOCAL_LANG.default.credits = ECTS
See Important: Label overrides are read from the documented path and the list of labels in Labels.
Adapt templates and assets
Site stylesheet
The study plan ships no stylesheet any more. The file
EXT:
of 2.3 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 stylesheet of the development instances of the academic extensions carries the rules the extension shipped, adapted to the 3.0 markup. Copy what the site needs and adapt it to the theme. See Breaking: The study plan ships no stylesheet, Style the element and the example in An example.
Speaking classes and the layout
- The templates carry speaking classes with the prefix
ace-now, instead of the classes of the theme they were developed with. The content element keepsacademic-, but losesstudy- plan 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 classesrowandcolstay. 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. - The content element renders through the
Defaultlayout of fluid_styled_content. Its header sits above the.academic-wrapper, inside the frame of the layout. A selector such asstudy- plan .academic-becomesstudy- plan header .frame-, see Important: The study plan renders through the Default layout.type- academic_ study_ plan header - A category title is rendered as text. A site that put markup into a category title to style its filter button styles the button of the filter instead, see Important: A study plan category title is text, not markup.
Icons
The record icons of the study plan are renamed, and the three controls of the frontend are the shared action icons of academic_base:
| 2.3 identifier | 3.0 identifier |
|---|---|
academic- | tx- |
academic- | tx- |
academic- | tx- |
academic- | tx- |
plus | tx- |
minus | tx- |
close- | tx- |
The identifiers plus, minus and close- of 2.3 were registered by
neither TYPO3 nor this extension, so 2.3 rendered the placeholder of a missing
icon in their place. A site package that registered icons under these names for
this element can drop them. Replace the other previous identifiers in TCA
overrides, page TSconfig, templates and selectors such as
.icon-. A
site package that wants another drawing for a control registers it 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. Remove own
include or
include entries for
EXT:
and EXT:.
The frontend/ paths 2.4 used in between are gone as well, so there is
nothing to move them to. 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
The template
Resources/
changed in 2.4 and in 3.0, and four partials are new in 3.0. A copy of the 2.3
template in a site package keeps rendering, but misses all of these changes.
Replace it with an override of the one partial it is really about, or start the
copy again from the 3.0 files. The paths below are relative to
Resources/:
| File | What changed | Entry |
|---|---|---|
Frontend/ | Renders through
<f: and wraps its
markup in
<f:. It no longer renders the
partial Header/, because the layout renders the header. | Important: The study plan renders through the Default layout |
Frontend/ and its
partials | Translate the labels with
extension, which is what makes the
label overrides of the previous step apply. | Important: Label overrides are read from the documented path |
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 |
Frontend/ | The hidden text of the module button names the note and the credit points of a semester only when the semester has them. | Important: Module buttons announce only what a semester has |
The script still finds the parts of an override by the class names of 2.3 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 new content element wizard offers the element as Study Plan on every site that should offer it, with a new description, see Important: Content elements have new titles and descriptions.
- 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 credit points unchanged. A semester or module accepts a credit point value such as 2.5 in the backend.
- The study plan renders inside the frame of the
Defaultlayout. The settings of the tab Appearance take effect now, and on an installation whose editors used that tab long ago, spacing, frames and the Link to top link may appear where they were chosen. - 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.