.. index:: Configuration; Sections .. _configuration-sections: ================ Profile sections ================ :file:`Configuration/AcademicPersons/Settings.yaml` describes a profile in four top-level maps. It ships with :guilabel:`academic_persons`, which owns the records and their TCA, and it is the one file the backend record editor, the public detail view and the editing frontend of `EXT:academic_persons_edit `__ read. .. list-table:: :header-rows: 1 * - Map - Describes * - :yaml:`profile` - The public detail layout (:yaml:`structure` and :yaml:`details`), and every directly editable profile property with its section, control and validators. * - :yaml:`special` - The components of the editing frontend that are not one property: the composed display name, the image and the synchronisation switch. * - :yaml:`contracts` - The contract fields, and the address, email and phone sections a contract owns. * - :yaml:`documentSections` - The sortable lists attached to a profile: the seven timeline entry types and the contracts. The order of every map and list is preserved and is what the editing frontend renders. The :ref:`validator flags ` are documented on their own page. .. attention:: The syntax of this file is still considered experimental and may change in a future release. .. _configuration-sections-profile: The profile map =============== Two keys describe the public layout, everything else is a field: .. code-block:: yaml profile: structure: left: - menuSections right: - headline - position - profileImage - contact - subline - profileEntries - menuSectionsDatas details: headline: - title - firstName - middleName - lastName subline: 'LLL:EXT:academic_persons/Resources/Private/Language/locallang.xlf:detail.subline' gender: section: information fieldType: select renderType: select validators: - required firstName: section: information fieldType: input renderType: text validators: - readonly - disabled helptext: 'LLL:EXT:academic_persons/Resources/Private/Language/locallang.xlf:helptext.firstName' miscellaneous: section: aboutme fieldType: textarea renderType: ckeditor characterLimit: 1000 validators: - html :yaml:`structure` The layout columns and the ordered elements in each column. The shipped detail template renders ``left`` as the desktop navigation and ``right`` as the main content; on mobile, the ``left`` elements are inserted again directly before ``subline``. :yaml:`details` Per element, the ordered profile properties, the relation map, the label reference or the special renderer it renders. Supported elements are :yaml:`menuSections`, :yaml:`headline`, :yaml:`position`, :yaml:`profileImage`, :yaml:`contact`, :yaml:`subline`, :yaml:`profileEntries` and :yaml:`menuSectionsDatas`; an unknown element renders nothing. :yaml:`position` and :yaml:`contact` take the special renderer :yaml:`special: datasFromContracts`. :yaml:`menuSections` lists stable navigation identifiers and :yaml:`menuSectionsDatas` maps each of them to the profile relation it shows. .. _configuration-sections-profile-rendering: How the layout is rendered -------------------------- The shipped :file:`Resources/Private/Templates/Profile/Detail.html` receives the two keys as ``publicProfile`` and dispatches every identifier of :yaml:`structure` to a partial of the same name below :file:`Resources/Private/Partials/Profile/PublicProfile/`: .. list-table:: :header-rows: 1 * - Element - :yaml:`details` entry - Renders * - :yaml:`menuSections` - Ordered navigation identifiers - One link per identifier whose relation has records * - :yaml:`headline` - Ordered profile properties - The non-empty ones as the parts of the heading * - :yaml:`position` - :yaml:`special: datasFromContracts` - The position of every contract * - :yaml:`profileImage` - Ordered image properties - Every non-empty one, as a figure * - :yaml:`contact` - :yaml:`special: datasFromContracts` - Email addresses, phone numbers, postal addresses and location with room of every contract * - :yaml:`subline` - A label reference - The translated heading, and the point before which the :yaml:`left` elements are repeated below the large breakpoint * - :yaml:`profileEntries` - Ordered rich text properties - The non-empty ones as fold-out entries * - :yaml:`links` - Ordered link properties - The non-empty ones, each with its companion title property (:yaml:`website` with ``websiteTitle``) as the link text * - :yaml:`menuSectionsDatas` - Navigation identifier to relation map - One timeline section per identifier whose relation has records Overriding a partial changes how an element renders, overriding :yaml:`profile` changes what renders and where. The years of a timeline entry are printed as they are stored - a single year, a range, or an open range prefixed with a "since" or "till" label - and nothing about them is locale dependent. Below the large breakpoint the elements of the :yaml:`left` column are rendered a second time, directly before the :yaml:`subline` element of the :yaml:`right` column. A layout without :yaml:`subline` in :yaml:`right` therefore has no mobile navigation. The view is a content element and renders no ``
``, no ``