Configuration
This extension ships its frontend TypoScript and its backend page TSconfig in two forms: as TYPO3 site sets, and as classic static templates plus page TSconfig files that are selected on a page. Both forms read the very same files, so they configure an installation identically.
Pick one of them per site and stay with it — see Do not combine both for what happens otherwise.
What the sets contain
The extension ships one content element, so it ships one component set and one aggregate set that depends on it.
| Set | Delivers |
|---|---|
fgtclb/ | The Study Plan content element: its TypoScript
(
tt_, the Fluid root paths
and the data processor that assigns the semesters and modules to the
template) and the page TSconfig that makes the content element
selectable in the backend. |
fgtclb/ | Everything above. This is the set to use unless you deliberately want a subset. |
fgtclb/ | The name this extension published before the sets were cut per
component. It delivers exactly what fgtclb/
delivers, and is kept so that existing site configurations keep
working. |
The component set depends on fgtclb/, the set of
EXT:academic_base that labels the content element group all academic
extensions sort their elements into.
Include the site set
Add the set to the config. of the site that should offer the content
element:
base: 'https://example.com/'
rootPageId: 1
+dependencies:
+ - fgtclb/academic-study-plan
See also TYPO3 Explained, Using a site set as dependency in a site.
Include static templates
For an installation that still configures its frontend through
sys_ records, the same files are registered as static templates
and as selectable page TSconfig files.
Tip
On TYPO3 v13 and v14 we recommend the site set — and if you use it, do not
press the backend button Create a root TypoScript record on that
site. The
sys_ record it creates carries the flag
Clear for constants and setup, and that flag discards everything
the site sets contributed. An installation that is already in that state
gets its configuration back by selecting the static templates below in that
very record.
Include static TypoScript
Edit the
sys_ record of the site root and add the entry to
Include static (from extensions):
| Entry | Delivers |
|---|---|
| Academic Study Plan: Content element (academic_study_plan) | The TypoScript of the Study Plan content element. |
| Academic Study Plan: All components (academic_study_plan) | Every component this extension ships, in one entry. |
| Academic Study Plan: Path up to 2.3 (deprecated, use All components) (academic_study_plan) | The same as All components, for a record that still stores the path of version 2.3. Deprecated, removed in version 4.0, see Deprecation: The static template path of version 2.3. |
Include static page TSconfig
Edit the page record of the site root, tab Resources, field Page TSconfig, and add the entry:
| Entry | Delivers |
|---|---|
| Academic Study Plan: Content element (academic_study_plan) | Makes the Study Plan content element selectable, and configures its entry in the new content element wizard. |
| Academic Study Plan: All components (academic_study_plan) | Every component this extension ships, in one entry. |
The setting is inherited by every page below the one it is set on.
Style the element
The extension ships no stylesheet. The content element renders the classes and data attributes Templates documents, and the stylesheet of the site package styles them. How the markup is built up, class by class, is described in Styling.
The mono repository the extension is developed in carries an example to start from, the stylesheet of its development instances: _academic-study-plan.scss of EXT:academics_dev_site. It is never shipped with an extension, copy what the site needs.
Three parts of the element depend on rules of that stylesheet, beyond its appearance:
- A semester header renders an expand and a collapse glyph, and the stylesheet shows one of them, see The glyphs of a semester header.
- The collapsed filter needs
.ace-, see Collapse the category filter.filter . ace- list [hidden] { display: none } - The accordion of a narrow viewport and the highlighting of a category are
classes the script writes and the stylesheet gives an effect:
openandhighlighted.
The shipped icons carry a size of their own, 1em. The example sizes every
icon of the element to 1., which is also what keeps a replacement
drawing without a width and a height of its own visible, see
The glyphs of a semester header.
The label of a dialog trigger is only read out. It carries Bootstrap's
visually-, which a site that brings Bootstrap hides already.
Before version 3.0 the extension shipped this stylesheet itself. The setting
plugin. that switched it off during the
development of 3.0 is gone with it, see
Breaking: The study plan ships no stylesheet.
Skip the script
The content element brings one asset to every page that carries it: the ES
module
@fgtclb/. A
page without the element does not load it.
It can be switched off per site, for an installation that brings its own script:
| Setting | Default | Off means |
|---|---|---|
plugin. |
true
| The page does not load the script. |
With the site set, it is a site setting: edit it in the backend, in the settings editor of that site, or write it by hand. The editor is the same one on both TYPO3 versions and only sits elsewhere — Site Management > Settings on TYPO3 v13, and Sites > Setup on TYPO3 v14, which merged it into the module that edits the site itself.
plugin.tx_academicstudyplan.assets.js: false
With the static template, it is a TypoScript constant of the same name,
Constants of the root
sys_ record:
plugin.tx_academicstudyplan.assets.js = 0
Warning
Switching the script off leaves the markup exactly as it is. The category filter, the semester accordion and the module dialogs do nothing without a script — bring your own, addressing the same markup.
The one part of the markup that is not inert is handled: the single
<li>
of the filter list is the template the script clones, and it
is rendered
hidden
so that its placeholder text never reaches the
screen. A script of your own has to take that attribute off the items it
builds from it — otherwise the filter stays empty.
What stays behind either way is the
<nav>
around that list: a
labelled navigation landmark with nothing in it until a script fills it.
It is part of the markup contract, so it is yours to fill or to hide.
Templates documents every part the shipped script drives, which is the list a script of your own has to address.
Collapse the category filter
The category filter is a row of buttons, one per category the modules of the plan carry. On a plan with many categories it takes up the first screen before a visitor has seen a single semester.
Switched on, the filter renders collapsed behind a toggle button that states whether it is expanded and works by keyboard:
| Setting | Default | On means |
|---|---|---|
plugin. |
false
| The filter is hidden until the visitor expands it. |
With plugin.tx_academicstudyplan.filter.collapsible switched on, the filter waits behind its toggle.
plugin.tx_academicstudyplan.filter.collapsible: true
plugin.tx_academicstudyplan.filter.collapsible = 1
The toggle is built by the script rather than rendered by the template, for the same reason the filter buttons are: a plan whose modules carry no category at all ends up with an empty filter, and a control that expands nothing would be worse than none. Two consequences follow:
- Switching
plugin.off and bringing your own script means bringing the toggle as well. The template renderstx_ academicstudyplan. assets. js data-on the filter list and nothing else.study- plan- filter- collapsible - The label of the toggle is the one the container carries as
data-, which is the translation offilter- label filter.. An override that drops that attribute gets no toggle at all rather than an unnamed button, and the filter stays expanded.label - The collapsed state is the
hiddenattribute, and the stylesheet of the site has to give it an effect (.ace-) - the browser's own rule for it loses to any author rule that gives the list afilter . ace- list [hidden] { display: none } display. See Style the element.
Do not combine both
A site that uses the site set and the static template reads the shipped
files twice. The site set is applied before the
sys_ record, so
the second read happens after the site settings and after
config/ — and it resets every constant
the extension ships a default for back to that default. For this extension those
are the three Fluid root paths of the content element, the switch of
Skip the script and the switch of
Collapse the category filter.
Nothing else is damaged: the Constants and Setup fields
of the
sys_ record, the page TSconfig of a page and the page
TSconfig files selected on a page are all applied afterwards and still win. Use
one mechanism per site and the question does not arise.