For developers
This chapter documents the programmatic surface this extension ships: the events that let a project narrow what the plugins show and add to what they render, the events of the frontend user synchronisation and of the import writer, the event that announces every change of a profile, and the one that decides what is written as the metadata of a profile image. Each event has a page of its own. The topics behind them, the profile lists, the frontend user synchronisation, the import of persons, the translation synchronisation and the plugin action context, have pages of their own as well.
Which classes of this extension are public API, and what that promises, is
stated for all academic extensions on the extension points page of
academic_base.
Every event a listener may rely on is public API. A listener registers with
the attribute of TYPO3,
\TYPO3\.
Symfony's attribute of the same name registers nothing, and the listener never
runs.
Events
| Event | Dispatched | What a listener can change | Owner |
|---|---|---|---|
| ModifyProfileDemandEvent | in the list, list-and-detail and card plugins, before the profile query, the query of the letter navigation and the cache lifetime query are built from the demand | replace the demand | this extension |
| ModifyProfileQueryEvent | right before the profile query of the list, list-and-detail and card plugins, of the letter navigation and of the selected-profiles plugin is executed | add conditions | this extension |
| ModifyContractQueryEvent | right before the contract query of the selected-contracts plugin is executed | add conditions | this extension |
| ModifyProfileTitlePlaceholderReplacementEvent | in the detail view, once per placeholder of the page title format | replace the value of the placeholder | this extension |
| ModifyPluginViewEvent | in every plugin, once each time an action renders its view | assign further view variables | academic_base |
| ModifyTcaSelectFieldItemsEvent | when the backend builds the items of the shown fields of the plugins and of the contract selects | reorder, remove or add items | academic_base |
| ModifyProfileImageMetadataEvent | right before the metadata of a profile image is written, for the file and for the file reference | change or empty the fields that are written | this extension |
| AfterProfileUpdateEvent | after a profile was created or updated: by a backend save or an import, by the frontend user commands, and by the profile editing of academic_persons_edit | react to it, the event is read only | this extension |
| BeforeImportedRecordWriteEvent | in the import writer, once for every record of a person before it is written | change the values that are written, veto the record | this extension |
| ChooseProfileFactoryEvent | in the commands
academic: and
academic:, once per frontend user | choose the profile factory | this extension |
| BeforeProfileMappedFromFrontendUserEvent | in the same commands, before the data of a frontend user is mapped onto a profile | add or change values, skip the frontend user or the profile | this extension |
| AfterProfileMappedFromFrontendUserEvent | in the same commands, after the mapping and before the profile is saved | change the profile | this extension |
Modify | in the same commands, before the environment of a frontend user's site is set up | nothing a project should rely on: the event is
@internal
and experimental, like the environment handling it belongs to | this extension, internal |
Topics
- The profile lists
- Which letters of the letter navigation lead somewhere, and what the links of the pagination and the navigation carry.
- Taking part in the frontend user synchronisation
- The order in which the commands
academic:andcreateprofiles academic:dispatch their events.updateprofiles - Importing persons
- Finding what an import wrote by its identifier, and writing the persons of another source with the import writer.
- Translation synchronisation
- The synchronizer that keeps the translations of a profile in step, and how it behaves in workspaces. Experimental.
- The plugin action context
- The context the plugin events carry, and the names of the plugins.
See also
- The changelog entry Translation sync is routed through the DataHandler for the behavioural differences to versions before 3.0.
EXT:, whoseacademic_ persons_ edit profile.setting feeds the allowed language ids and whose event listener wires the pieces together.allowed Languages - The changelog entry Narrow the profiles and contracts a plugin shows for the query events, and The plugins call different repository finders for what they replace.