Breaking: Replaced the profile editing view
See also
Upgrading from 2.4 to 3.0 is the order in which the 3.0 changes have to be applied.
Description
The Profile editing content element used to be a set of Extbase forms: one page per record, a form submission per change, a redirect after every save. It is replaced by a single view that edits the profile in place and writes through JSON endpoints of the same plugin - see Profile editing for what it does and Important: Profile editing is replaced in place for why nothing has to be migrated in the page tree.
The plugin identity is unchanged: the content type stays
academicpersonsedit_, the plugin stays
Academic / Profile, the request namespace stays
tx_, the site sets keep their names and
the default action stays list. Everything below the plugin is new.
Removed controllers and actions
The six controllers are replaced by three of the same plugin, each serving one
family of endpoints: Profile the profile, its switches and its
image, Document the contracts and profile information entries,
and Contract the contacts of a contract. Their action
lists are new:
| Removed | Replacement |
|---|---|
Contract,
Profile,
Physical,
Email,
Phone, each with list, show, new,
create, edit, update, confirm, delete,
sort and partly toggle | The document/create/update/
delete/sort/toggle
JSON actions of
Document and the
contract/create/
update/delete/
sort/toggle
JSON actions of
Contract |
Profile,
edit,
edit,
add,
remove,
toggle |
index for the view, and the update,
upload, delete and update actions |
Abstract,
\Property\,
\Service\,
\Exception\ |
\Service\,
\Domain\ and
\Service\ |
\Domain\,
Contract,
Email,
Phone,
Profile | The validation set of the section a record belongs to, resolved from the settings graph - see Profile editor and validation |
\Domain\,
deprecated since 2.3 and announced for removal in 3.0 |
\Domain\ |
An installation that links to one of the removed actions - a
f: in an override, a hand written URL, a bookmark - gets a
500, not a fallback view. Extbase throws
Invalid (1313855173) for a removed controller and
Invalid (1313855175) for a removed action; the
fallback to the default action only happens where
config. is
set, and this extension does not set it.
Removed templates, layouts and partials
Every Fluid file of the form flow is removed. An override of one of them is dead: the file is no longer rendered, and the project keeps a copy of a view that no longer exists.
Resources/Private/Layouts/ProfileEdit.htmlResources/Private/Templates/Profile/Edit.html,Profile/,Edit Image. html Profile/Show. html Resources/and the same three files forPrivate/ Templates/ Contract/ {Edit,New,Show}. html Email,Address/ Phone,Number/ PhysicalandAddress/ ProfileInformation/ Resources/Private/ Partials/ Profile/ Buttons/ {Delete Cancel,Save Exit Cancel}. html Resources/Private/ Partials/ Profile/ Forms/ {Checkbox,Date Time,Errors,Field Wrapper,Select,Textarea,Textfield}. html Resources/Private/ Partials/ Profile/ List/ {Contracts,Email Addresses,Phone Numbers,Physical Addresses,Profile Information}. html Resources/Private/ Partials/ Profile/ Properties/ {Contract,Email Address,Phone Number,Physical Address,Profile,Profile Information}. html Resources/Private/ Partials/ Profile/ Show/ {Image,Personal}. html
The plugin renders without a Fluid layout since, so the TypoScript constant
plugin. and the
view. block it filled are removed as well. A site
package that still sets the constant sets something nothing reads.
The layout was also the one place that rendered the header of the content
element, behind the 2.4 constant
plugin.. The
editor renders none, and a site that switched the constant on loses the
header, see
Breaking: The profile editing plugin renders no content element header.
Resources/Private/Templates/Profile/List.html is kept and rewritten,
and Resources/Private/Templates/Profile/Index.html with the
thirty-one partials below Partials/ is the new tree: four of
them - Header., Status,
Button and Prototypes. - directly in that
directory and the rest in {Documents,Field,Image,Profile}/.
Overriding templates describes what may be overridden.
The script of the removed form flow goes with it:
Resources/ configured the
CKEditor 4 that Profile/, Contract/ and
Contract/ loaded from a CDN, and is deleted. A project template
that still includes it through
<f: points at a file that
no longer exists. Rich text is CKEditor 5 from EXT: now,
created by the editing view itself, see Profile editing.
Removed icons
The ten icon files 2.4 shipped for the form flow are deleted:
add-, add-, back-,
cancel-, delete-, edit-,
save-, sort-, sort-,
view-.
Five of the ten identifiers they were registered under go with them:
academic-, -add-, -cancel, -sort and
-to-. The other five - academic-, -view,
-delete, -save and -back - are renamed to the shared icons of
academic_base, together with the content element icon
persons_, see
Breaking: Profile editing renders the shared icon set.
The icons also resolve through a different icon provider:
\FGTCLB\
inlines the <svg> where TYPO3's own
Svg emitted an
<img>. A site package styling the editor's icons through a rule such as
.t3js- therefore stops matching, and styles the <svg> instead;
the Feature: Icon provider for icons that follow the text colour entry of
EXT: describes the provider.
The identifiers the editor renders are listed in Icon identifiers.
They are drawn in current and rendered inline, so they take the colour
of the control they sit in - see
Breaking: Profile editing renders the shared icon set.
Removed labels
Resources/Private/Language/locallang.xlf goes from 213 to 159
trans-units: 149 are removed and 95 are new. 64 survive, all of them
byte-identical. The
German de. follows one to one. That is not a list worth
printing - the authoritative one is the diff of the file for this release -
but the shape of it is:
- Everything the removed Extbase form flow needed goes with it: every
*./create. success *./update. success *./delete. success *.message, everysort. success *., everyplaceholder list.entry exceptno*Found list., which the profile overview still renders, theno Profiles Found actions./hide show/translate/save/And Exit set/To Top set/To Bottom replaceactions,back,list.,hidden. badge list., thecontract. position profile.*section headings and every*Formunit.Data.*. error.* contract.was a stale duplicate ofpublished. label contract.and is removed.publish. label contract.went later with the switch it labelled, see Breaking: The contract form has no "Publish" switch.publish. label email, which 2.4 already declared in place ofAddress. email. label email, is kept.Address. email Address. label - The year fields of a timeline entry keep their labels
profile,Information. year. label profileandInformation. year Start. label profile; theirInformation. year End. label *.companions are removed with the form flow that rendered them.placeholder - The new view brings its own vocabulary under the
profileprefix - status messages, empty states, the image editor, the document section labels and the controls of full form editing (Feature: Full form editing applies as one form).Editing.*
All of them are overridable through
locallang on TYPO3 v13,
resource on TYPO3 v14, or
_LOCAL_, so an
installation that translated or reworded one of the 149 removed units loses
that override silently: the key is simply not read any more. Compare the
overrides against the shipped file after the update.
Removed extension configuration
profile. and profile. are
removed from ext_conf_template.txt. Neither is read by any code path of
this extension. Their stored values are not lost by the removal - the extension
configuration merges the current values over the template and prunes nothing -
and they are still the source the
academic upgrade
wizard of EXT: reads to carry both settings over.
profile. is unchanged.
New page type
The JSON endpoints are reached through a
PAGE
object named
academic with
type,
delivered by the site set fgtclb/ and
by the static template. A project with a Page route enhancer, a web
application firewall or a reverse proxy in front of TYPO3 has to let that page
type and the X- header through - see
The page type of the JSON endpoints.
There was no such page type in 2.4, where the editor was an Extbase form
flow, so a site package that copied the TypoScript of this extension into its
own instead of including the site set or the static template has the editor and
not the page type. Every save is then answered with the site's error page where
the browser expects JSON, and the editor can do nothing about it. The editor
therefore looks the page type up while it renders: when no PAGE object of
this site carries
type, it writes an error naming
the cause to the TYPO3 log and tells the visitor that the profile cannot be
saved, instead of letting them find out on their first change. The object is
matched by its
type, not by its name, so a project that
declares it under a name of its own is recognised.
Impact
- Overrides of any removed Fluid file stop having an effect. The editing view renders from the shipped templates.
- Links to the removed actions are a 500 rather than a fallback view.
- Templates and PHP code referring to the five removed icon identifiers,
labels or controller classes fail: an unknown icon identifier renders
TYPO3's
default-placeholder, an unknown label renders its own key, and an unknown class is a fatal error.not- found - A form posting
profile,Information Form Data [year] contract,Form Data [...] address,Form Data [...] emailorForm Data [...] phoneto one of the removed actions is not processed. The editor posts JSON, under the property namesNumber Form Data [...] year,yearandStart year.End - The two removed extension configuration options disappear from the Settings module. A stored value is ignored.
Affected Installations
All installations using the Profile editing content element of
EXT:, and in particular every installation that
overrides one of its Fluid files or links to one of its actions.
Migration
- Remove the overrides of the deleted Fluid files, and re-apply the project specific changes on top of the new template tree where they are still wanted. Overriding templates names the files that carry the hooks the JavaScript binds to; changing those breaks the editor rather than the layout.
- Replace links to the removed actions with a link to the
indexaction and theprofileargument, or with the profile overview.Uid - Replace the removed and renamed icon identifiers with the ones of
Icon identifiers, and re-point CSS that selected the icons as
an
<img>- see Breaking: Profile editing renders the shared icon set. - Confirm that the site actually delivers page type
1733735. Include the site setfgtclb/or the static template of this extension; a site package that maintains a copy of the extension's TypoScript adds theacademic- persons- edit- profile- editing academicPersons Profile Editing Ajax PAGEobject to that copy. The editor reports a missing page type in the TYPO3 log and on the page itself, but it reports it, it cannot repair it. - Let page type
1733735and theX-header pass through route enhancers and firewalls.Requested- With - Drop
profile.andauto Create Profiles profile.from the deployment configuration - but only after thecreate Profile For User Groups academicupgrade wizard has run, because that wizard reads them.Persons_ Migrate Profile Auto Create Extensions Configuration