---
title: "Feature: Office hours and the function type on the profile page"
manual: "Academic Profiles"
version: "main"
source: "Changelog/3.0/Feature-DetailOfficeHoursAndFunctionType.rst"
rendered: "2026-10-02T20:47:49+00:00"
---

# Feature: Office hours and the function type on the profile page {#feature-detail-office-hours-and-function-type}

## Description {#description}

The contact block of the profile detail view shows the office hours of each
contract, in a row of its own after the location and room, with a clock icon
and the label "Office hours". A contract without office hours gets no row.
Paragraphs, lists, emphasis and links written in the frontend editor are
kept, and a plain text value from the backend form or an import keeps its line
breaks. The core HTML sanitizer removes event handler attributes and prints a
script element as escaped text, so it never runs. See
[Office hours in the contact block](../../Configuration/Sections/Index.html#configuration-sections-profile-office-hours).

The position line takes a new list in `Settings.yaml`,
`profile.details.position.fields`. It names what the line shows of each
contract, in order: `position`, `functionType` and
`organisationalUnit`. The function type is shown with the name for the
profile's gender where one is maintained, and with its general name
otherwise. A site package states only the list:

**EXT:my_sitepackage/Configuration/AcademicPersons/Settings.yaml**

```yaml
profile:
  details:
    position:
      fields:
        - position
        - functionType
```

See [What the position line shows](../../Configuration/Sections/Index.html#configuration-sections-profile-position-fields).

The list, list and detail, card, selected profiles and selected contracts
elements offer the function type among their fields to show. The new partial
`Profile/Contract/FunctionTypeName.html` renders its name for both the
detail view and the items, see [The name of a function type](../../Templates/Partials/Index.html#templates-function-type-name).

## Impact {#impact}

A profile page whose contracts carry office hours shows them after the
update, without any configuration. A site that does not want them there hides
`academic-persons-detail__contact-row--office-hours` in its stylesheet or
overrides `Profile/PublicProfile/Contact.html`.

Plain text office hours are read as HTML too. A `<` in them starts a tag for
the sanitizer and is lost, so such values are better written without angle
brackets.

The shipped position line still shows the position alone, but every value of
the line now sits in a `<span>` of its own inside
`academic-persons-detail__position`. A stylesheet that targets the line
keeps working. One that expects text directly inside the paragraph targets
`academic-persons-detail__position-part` instead.
