Important: #82445 - Migrate pages_language_overlay into pages
See forge#82445
Description
The functionality of "pages_language_overlay" has been migrated into "pages".
An upgrade wizard is in place to migrate all existing data into the "pages" database table.
All relations directly to "pages_language_overlay" are migrated to the newly created "pages" records as well.
Some rules for future development need to be clarified:
Definitions:
Default Language Page
- previously exclusively available in "pages"
- Holds the PID of the parent page
- MUST be in place in order to create a translated page (not possible to create a translated page without having a default page in place)
- Has always "l10n_parent" and "sys_language_uid" fields set to "0"
- The "uid" of this record is automatically the PID for all records of this page
Translated Page (previously known as "pages_language_overlay")
- Is identified as Translated Page by having a "sys_language_uid" field greater 0 and "l10n_parent" field containing the "uid" of the Default Language Page.
- The value of the "pid" field is the same "pid" as of the Default Language Page - effectively putting the Translated Page and the Default Language Page on the same root-level.
- The value of "sorting" is the same for all translated pages
- The "uid" field is not used by anything currently within the TYPO3 Core.
- The "hidden" field is set as "allowLanguageSynchronization"
The following details apply
- Any TCA-based records (= subpages, content elements) still ALWAYS contain the pid to the Original Language Page, a DataHandler restriction ensures this constraint.
- Backend: All UI elements like Element Browser, Page Browser etc. are restricted to only show the Default Language Pages to be selected (one can not link to a specific Translated Page).
- Permissions are always fetched from the "Original Language Page"
- DataHandler: Moving or deleting of a Default Language Page always moves/deletes the associated Translated Page records as well.
- DataHandler: "sorting" and "pid" parameters of translations are always kept in sync one-to-one for translated pages. Translated pages cannot be moved themselves.
- Permissions: Restricting a Backend User/Group to a language limits the access to "pages" to a specific language in page module.
- Permissions: All existing "pages_language_overlay" permissions are merged into "pages" options for all records - when a Backend User/Group is limited to only certain languages (and not the default language) this , the . If a Backend User/Group does have permission on "pages_language_overlay" but not "pages", the Backend User/Group has automatically assigned all translations (sys_language_uid) as language limitations.
- Frontend: Requesting a page can be done with ?id=originalpage&L=1 or ?id=translatedpage where "?id=translatedpage" internally resolves the "id" parameter to the uid of the Original Language Page and the "L" parameter resolved to the "sys_language_uid" corresponding in the TypoScript options.
- Frontend: All "pid" checks are always done against the Original Language Page, as all records still sit on that page.
- Frontend: Generating a link to a Default Language Page with a current Translated Page generated, will exchange the target on link creation to the targeted Translated Page automatically.