Upgrading from 2.3 to 2.4 

Version 2.4 delivers the configuration of academic_jobs per component, hides its content elements until a site enables them and repairs the job contacts and the jobs of the old new job form with two upgrade wizards. Work through the sections in order. Skip a step that does not apply to the installation.

Before you start 

Version 2.4 runs on TYPO3 12.4 from 12.4.22 on and on TYPO3 13.4, with PHP 8.1 or later. That is the same as for 2.3, so the TYPO3 core does not have to change for this upgrade.

academic_jobs 2.4 needs these packages. Upgrade them first or in the same deployment, in this order:

ext_emconf.php now names the system extensions rte_ckeditor and fluid_styled_content by their extension keys. A classic installation resolves its dependencies from that file, so both have to be active. See Important: Dependencies are named by their extension keys.

Update the package 

composer require -W \
    'fgtclb/academic-base':'~2.4.0' \
    'fgtclb/academic-jobs':'~2.4.0'
Copied!

A project that requires branch 2 as 2.x-dev keeps an inline alias such as 2.x-dev as 2.4.x-dev working, see Important: The development branch installs as 2.4.x-dev.

On a classic installation, install environment_state_manager 1.x from the TER in Admin Tools > Extensions first, then update academic_base and academic_jobs there, in this order. Run the commands of this page with typo3/sysext/core/bin/typo3 instead of vendor/bin/typo3 .

vendor/bin/typo3 cache:flush
Copied!

Update the database 

Apply the database changes in Admin Tools > Maintenance > Analyze Database Structure, or on the command line:

vendor/bin/typo3 extension:setup
Copied!

For this extension the comparison adds and changes:

Run the upgrade wizards 

Both wizards need the database changes of the previous section. Run them in this order, in Admin Tools > Upgrade > Upgrade Wizard or on the command line.

  1. academicJobs_contactRelation, Migrate job contact records from relation to fields directly in the job record. It copies the contact record of a job into the contact fields of the job. Up to 2.3 it left out every job that was hidden, scheduled or expired while it ran, which includes every job submitted through the frontend form and not yet approved. It now reads every job and leaves a job alone that has a contact of its own. An installation that already ran it has it recorded as done and marks it undone first. TYPO3 13 marks a wizard undone with vendor/bin/typo3 upgrade:mark:undone academicJobs_contactRelation. TYPO3 12 has no such command: open Admin Tools > Upgrade > Upgrade Wizard, find the wizard under Wizards marked as done and choose Mark undone. For a wizard that was never marked done, the TYPO3 13 command reports an error, which is harmless. Then run the wizard:

    vendor/bin/typo3 upgrade:run academicJobs_contactRelation
    Copied!

    Read Important: The job contact wizard migrates invisible jobs before running it: a job whose contact fields an editor emptied on purpose gets its old contact back.

  2. academicJobs_repairNewJobFormValues, Repair the jobs stored by the old new job form of academic jobs. It moves the start date and the application deadline the old form stored with the time of day of the submission to whole days, and lists the jobs that kept an unchosen Employment Type or Job Type for an editor. It writes the database directly, in the time zone of the process that runs it, and a wrong zone moves the dates in a way that cannot be taken back. Check the time zone its description names first. If it is not the zone the form ran in, set $GLOBALS['TYPO3_CONF_VARS']['SYS']['phpTimeZone'] , or run the wizard from the upgrade module, which runs in the web server like the form did:

    vendor/bin/typo3 upgrade:list
    vendor/bin/typo3 upgrade:run academicJobs_repairNewJobFormValues
    vendor/bin/typo3 cache:flush
    Copied!

    Keep the list of jobs it prints, it is shown once. Correct those jobs in the backend. See Important: A wizard repairs the jobs of the old new job form and Important: The new job form stores the chosen values.

Adapt the configuration 

The TypoScript and the page TSconfig are now delivered per content element, and the three content elements are hidden in the whole installation until the page TSconfig of their component is included. See Breaking: Site sets and static templates have been restructured.

Include the components 

  • Site set, TYPO3 13 only. A site that depends on the set fgtclb/academic-jobs needs no change. The set keeps its name and now brings the page TSconfig of all three content elements along.
  • Static template. The stored entry of 2.3 keeps working as Academic Jobs: Shared plugin settings (academic_jobs). Replace it with Academic Jobs: All components (academic_jobs), or with the entries of the content elements the site uses, in the field Include TypoScript sets on the tab Advanced Options of the template record.
  • Page TSconfig. A site without the site set, which is every site on TYPO3 12, adds Academic Jobs: All components (academic_jobs) in the field Include static Page TSconfig (from extensions) on the tab Resources of its root page, see Include static page TSconfig. Without it the content elements are not offered for new content.
  • Use one of the two mechanisms per site, see Do not combine both.

Until a component is included, an existing content element of it keeps rendering and keeps its type: academic_base 2.4 shows the stored type in the field Type followed by (not enabled on this page), and saving keeps it. The warning of the changelog entry that saving such a record rewrites its type describes the state before that fix. A content element that an older version or a page TSconfig of your own already turned into another type is not repaired. Correct it by hand from its record history.

Adjust your own configuration 

Adapt templates and assets 

The editor script of the new job form moved:

Old path New path
EXT:academic_jobs/Resources/Public/JavaScript/CKEditor.js EXT:academic_jobs/Resources/Public/JavaScript/frontend/ckeditor.js

An override of Templates/Job/New.html, or a site package that loads the script itself, takes over the new path. Otherwise the rich text fields fall back to plain text areas. See Breaking: The editor configuration moved.

Version 2.4 changes these templates and partials. A copy of one of them in a site package keeps rendering the copy, so compare each copy with the shipped file and take over the changes. The paths below are relative to Resources/Private/:

File What changed Entry
Templates/Job/List.html, Templates/Job/Show.html, Templates/Job/New.html The header renders only with settings.renderContentElementHeader . Important: The job plugins leave the content element header to the layout
Templates/Job/Show.html The contact box renders only for a job with contact data. Important: The job headings and the contact box are corrected
Templates/Job/New.html Loads the moved editor script. Breaking: The editor configuration moved
Templates/Job/New.html Renders the confirmation for a visitor who returns to the form, with <f:flashMessages queueIdentifier="academic_jobs.new_job_form.confirmation" /> . A copy without this line shows no confirmation. Important: The job form returns to its page with the confirmation
Partials/Job/Item.html The heading level is corrected, the flags and the link row are new, and a hidden job is not linked. Important: The job headings and the contact box are corrected, Important: Job views label flags and render the link, Important: The job detail answers "not found" without a job
Partials/Job/Information.html The flags and the link row are new. Important: Job views label flags and render the link
Partials/Job/Contact.html The heading level is corrected, and the phone link is dialable. Important: The job headings and the contact box are corrected, Important: The job contact phone link is dialable
Partials/Job/Properties/Job.html richtext: 1 for TYPO3 12, and a Please choose option for the two selects. Important: The rich text fields now start on TYPO3 v12, Important: New job form offers an unchosen option
Partials/Job/Forms/*.html Rejected fields carry is-invalid and their message, rendered by the new partial Partials/Job/Forms/ErrorMessage.html. A stylesheet that styles f3-form-error styles is-invalid instead. Important: The new job form marks rejected fields

Every template and partial also passes the extension name AcademicJobs to its translations now, see Important: Label overrides are read from the documented path.

Adapt your code 

Check the result 

  • The content elements Jobs New, Jobs List and Jobs Detail are offered for new content on the pages that should have them, and existing ones keep their type.
  • Jobs that were hidden, scheduled or expired when the contact wizard first ran show their contact.
  • The jobs the repair wizard listed carry a chosen employment type and job type.
  • The header of the job content elements appears once.
  • A job submitted through a form without a redirect page returns the visitor to the form, which shows the confirmation.
  • On a site with more than one language, the redirect page of every form exists in every language of the form. A redirect page the form cannot link returns the visitor to the form and logs a warning, see Important: The job form returns to its page when the redirect page cannot be linked.
  • A job submitted through the form reaches the editors. A notification mail that cannot be sent is logged now instead of failing the form, so check the log after a change of the mail configuration, see Important: A notification mail that cannot be sent no longer fails the form.
  • Jobs submitted before the update may share one logo file. The query in Important: An uploaded job logo no longer replaces an existing file finds them.