Breaking: Icons renamed, credit points icon is a frontend icon 

Description 

The icons of this extension came from several sources, a brand mark, Illustrator exports and icon sets of different styles, and several of them did not show what they stood for: the category type "Begin of program" was a bicycle, and the drawings of "Standard period" and "Type of program" read as if they had been swapped. One identifier, academic-programs, registered from the extension icon, served the page type, and the content elements named a file path that was never a registered identifier.

Every icon of this extension is now a Font Awesome Free solid icon, drawn in currentColor and registered with \FGTCLB\AcademicBase\Imaging\IconProvider\CurrentColorSvgIconProvider , and each concept has a glyph that fits it (ACE-591). Icons that mean the same in every academic extension, degree, department, standard period and location, come from the shared icon set of academic_base. The licence and origin of every file of this extension are listed in Resources/Public/Icons/LICENSE-font-awesome.txt.

The identifiers follow the scheme tx-<extension key without underscores>-<group>-<name>. The group decides the registry: doktype and plugin icons are backend icons, registered in Configuration/Icons.php, info icons are frontend icons, registered in Configuration/FrontendIcons.php for the frontend icon registry of academic_base. Renamed identifiers keep no alias.

2.x identifier 3.0 identifier Registry Used for
academic-programs tx-academicprograms-doktype-program backend, Configuration/Icons.php the academic program page type (doktype 20): page type select and page tree
EXT:academic_programs/Resources/Public/Icons/Extension.svg (a file path, never registered) tx-academicprograms-plugin-programs backend, Configuration/Icons.php the content elements academicprograms_programlist, academicprograms_programdetails and academicprograms_programfinder: page module, record list and new content element wizard
tx-academicprograms-info-credit-points (new in 3.0) unchanged frontend, Configuration/FrontendIcons.php the credit points fact of a program
category_types.programs.<type> unchanged both, registered by category_types the twelve category types of the group programs
category_types_group.programs (new in 3.0) unchanged both, registered by category_types the category type group programs

The page type and the content elements share the file Resources/Public/Icons/plugin/programs.svg (Font Awesome book-open-reader) under two identifiers, so a project can replace either of them on its own. Resources/Public/Icons/Extension.svg stays the extension icon and is registered for nothing.

The category type and group identifiers are unchanged, the files Configuration/CategoryTypes.yaml declares for them are replaced. Paths are below Resources/Public/Icons/ of this extension unless they start with EXT::

Category type 2.x file 3.0 file
group programs CategoryGroups/Programs.svg (never shipped) category-group/programs.svg (book-open-reader)
admission_restriction CategoryTypes/AdmissionRestriction.svg category-type/admission-restriction.svg (lock)
application_period CategoryTypes/ApplicationPeriod.svg category-type/application-period.svg (hourglass-half)
begin_program CategoryTypes/BeginProgram.svg category-type/begin-program.svg (flag)
costs CategoryTypes/Costs.svg category-type/costs.svg (piggy-bank)
paying CategoryTypes/Paying.svg category-type/paying.svg (money-bill-1)
degree CategoryTypes/Degree.svg EXT:academic_base/Resources/Public/Icons/info/degree.svg (graduation-cap)
department CategoryTypes/Department.svg EXT:academic_base/Resources/Public/Icons/info/department.svg (building-columns)
standard_period CategoryTypes/StandardPeriod.svg EXT:academic_base/Resources/Public/Icons/info/time.svg (clock)
location CategoryTypes/Location.svg EXT:academic_base/Resources/Public/Icons/info/location.svg (location-dot)
program_type CategoryTypes/ProgramType.svg category-type/program-type.svg (layer-group)
teaching_language CategoryTypes/TeachingLanguage.svg category-type/teaching-language.svg (language)
topic CategoryTypes/Topic.svg category-type/topic.svg (lightbulb)

The folder Resources/Public/Icons/CategoryTypes/ is removed, with JobProfile.svg, PerformanceScope.svg and Prerequisites.svg, which nothing referenced, and so is Resources/Public/Icons/LICENSE-bootstrap-icons.txt, which covered two of the removed drawings.

The credit points fact of a program, new in 3.0, shows the icon tx-academicprograms-info-credit-points. Only the frontend shows it, on the program page, in the program details content element and on the program card. It is registered in Configuration/FrontendIcons.php, for the frontend icon registry of academic_base, and not in Configuration/Icons.php. The partial Partials/Program/Facts/Item.html, new in 3.0 as well, renders the icons of all facts with the ab:icon ViewHelper of academic_base (ACE-814).

The icons of the category type facts, category_types.programs.<type>, come from the frontend icon registry now as well. category_types registers them in both registries, so they need no move. A category type that declares a frontendIcon in Configuration/CategoryTypes.yaml shows that file in the facts.

Impact 

The identifier academic-programs is no longer registered. Wherever a project names it, a template calling core:icon, TCA, or the page TSconfig of a wizard entry of its own, TYPO3 renders its not-found placeholder. A project that replaced the page type icon by registering academic-programs in its own Configuration/Icons.php registers an identifier nothing asks for any more, so the shipped drawing is shown. Site or backend CSS that selects the icon by its identifier class, .icon-academic-programs, no longer matches.

A project that referenced one of the removed files by path, for example to reuse a category type drawing in its own CategoryTypes.yaml, gets a missing file.

Every category type icon has a new drawing, in the backend and in the facts of a program, under its unchanged identifier. How the provider and the markup of these icons changed is described in Breaking: Record and category icons follow the colour scheme.

The credit points icon is not known to the icon registry of the backend. A replacement registered in the Configuration/Icons.php of a site package is not read for it, and PHP or backend code that asks the IconFactory of TYPO3 for tx-academicprograms-info-credit-points gets the not-found icon.

The fact icons render as the inlined drawing in the wrapper <span class="t3js-icon icon" data-identifier="…"> . A category type declared without an icon file made Program/Categories.html of 2.x fail with exception 1440754980 of the bitmap icon provider of TYPO3, which the backend icon registry picks for an empty source. The facts show TYPO3's not-found placeholder for it instead.

Affected Installations 

Installations that name academic-programs anywhere, select .icon-academic-programs in CSS, override that identifier, or reference a file below Resources/Public/Icons/CategoryTypes/ of this extension.

Installations whose site package wants another drawing for the credit points icon.

Migration 

  1. Replace academic-programs with tx-academicprograms-doktype-program where the page type is meant, and with tx-academicprograms-plugin-programs where a content element is meant, in TCA, page TSconfig, templates and CSS selectors on the identifier class.
  2. Register a project specific drawing of a backend icon under its new identifier in the Configuration/Icons.php of the site package:

    EXT:mysitepackage/Configuration/Icons.php
    <?php
    
    use FGTCLB\AcademicBase\Imaging\IconProvider\CurrentColorSvgIconProvider;
    
    return [
        'tx-academicprograms-plugin-programs' => [
            'provider' => CurrentColorSvgIconProvider::class,
            'source' => 'EXT:mysitepackage/Resources/Public/Icons/Programs.svg',
        ],
    ];
    Copied!

    A drawing registered with that provider has to be drawn in currentColor without colours of its own. Use the core \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider for a drawing with fixed colours.

  3. Register a replacement of the credit points icon in the Configuration/FrontendIcons.php of the site package, not in its Configuration/Icons.php. The file has the format of Icons.php. The site package has to depend on academic_programs, so its entry is read after the shipped one:

    EXT:mysitepackage/Configuration/FrontendIcons.php
    <?php
    
    use FGTCLB\AcademicBase\Imaging\IconProvider\CurrentColorSvgIconProvider;
    
    return [
        'tx-academicprograms-info-credit-points' => [
            'provider' => CurrentColorSvgIconProvider::class,
            'source' => 'EXT:mysitepackage/Resources/Public/Icons/CreditPoints.svg',
        ],
    ];
    Copied!
  4. Replace a path to a removed category type file with the new file from the table above.
  5. Flush the TYPO3 caches, so the icon registries and the Fluid template cache are rebuilt.

A site package that registers an identifier of its own for its own override, and renders it with core:icon, is not affected.