$newline never
<section>
  $# <h2>
  $#   _{MsgAllocationData}
  <dl .deflist>
    $maybe desc <- allocationDescription
      <dt .deflist__dt>
        _{MsgAllocationDescription}
      <dd .deflist__dd>
        #{desc}
    $maybe fromT <- allocationStaffRegisterFrom
      <dt .deflist__dt>
        $maybe _ <- allocationStaffRegisterTo
          _{MsgAllocationStaffRegister}
        $nothing
          _{MsgAllocationStaffRegisterFrom}
      <dd .deflist__dd>
        ^{formatTimeRangeW SelFormatDateTime fromT allocationStaffRegisterTo}
    $maybe fromT <- allocationRegisterFrom
      <dt .deflist__dt>
        $maybe _ <- allocationRegisterTo
          _{MsgAllocationRegister}
        $nothing
          _{MsgAllocationRegisterFrom}
      <dd .deflist__dd>
        ^{formatTimeRangeW SelFormatDateTime fromT allocationRegisterTo}
    $maybe fromT <- allocationStaffAllocationFrom
      <dt .deflist__dt>
        $maybe _ <- allocationStaffAllocationTo
          _{MsgAllocationStaffAllocation}
        $nothing
          _{MsgAllocationStaffAllocationFrom}
      <dd .deflist__dd>
        ^{formatTimeRangeW SelFormatDateTime fromT allocationStaffAllocationTo}

    $# TODO show datetime of automatic allocation
    $#
    $#  <dt .deflist__dt>
    $#    _{MsgAllocationProcess}
    $#  <dd .deflist__dd>
    $#    ^{formatTimeRangeW SelFormatDateTime fromT allocationProcess}
    $#

<section id=allocation-participation>
  <h2>
    _{MsgAllocationParticipation}
  $if is _Nothing muid
    <p>
       _{MsgAllocationParticipationLoginFirst}
  $elseif mayRegister
    $# existing registrations may also be edited in this case
    ^{registerForm'}
  $elseif is _Just registration
    $# show existing registration even if it cannot be changed now
    $maybe Entity _ AllocationUser{allocationUserTotalCourses} <- registration
      <dl .deflist>
        <dt .deflist__dt>
          _{MsgAllocationTotalCourses}
        <dd .deflist__dd>
          #{allocationUserTotalCourses}
  $else
    $# Provide helpful information for confused students who cannot register now
    $maybe daysToOpen <- daysToRegistrationStart
      <p>
        _{MsgAllocationRegisterOpensIn (formatDiffDays daysToOpen)}
    $nothing
      <p>
        _{MsgAllocationRegisterClosed}
    <p>
      $# This redundant links prevents useless help requests from frantic users
      ^{allocationInfoModal}

$if not (null courseWidgets)
  <section .allocation>
    <h2>
      _{MsgAllocationCourses}
    <div .allocation__explanation .allocation__label>
      <p>_{MsgAllocationPriorityTip}
      <p>_{MsgAllocationPriorityRelative}
      <p>_{MsgApplicationEditTip}
    <div .allocation__courses>
      $forall courseWgt <- courseWidgets
        ^{courseWgt}
