$newline never
$# #{summary} $of (_, Just summary) $if not isVisible
#{courseNewsContent} $of (Nothing, Nothing) $if not isVisible
#{courseNewsContent} $if showNewsFiles files
#{iconFileZip}
\ _{MsgCourseNewsFiles}
_{MsgCourseNewsLastEdited lastEditText}
$if mayEditNews || mayDelete
$maybe visFrom <- courseVisibleFrom
^{formatTimeRangeW SelFormatDateTime visFrom courseVisibleTo}
$if NTop (Just now) < NTop courseVisibleFrom
$if hasAllocationRegistrationOpen
_{MsgCourseInvisibleOverridenByAllocation}
$else
_{MsgCourseInvisible}
$maybe (Allocation{allocationName, allocationRegisterByCourse}, url) <- mAllocation'
^{formatTimeRangeW SelFormatDateTime regFrom'' (courseRegisterTo course)}
$maybe dereg <- mDereg
_{MsgCourseDeregisterUntil dereg}
$nothing
$maybe regFrom <- courseRegisterFrom course
^{formatTimeRangeW SelFormatDateTime regFrom (courseRegisterTo course)}
$maybe dereg <- mDereg
_{MsgCourseDeregisterUntil dereg}
$maybe aInst <- courseApplicationsInstructions course
#{iconRegisterTemplate} #
$if courseApplicationsRequired course
_{MsgCourseApplicationTemplateApplication}
$else
_{MsgCourseApplicationTemplateRegistration}
$nothing
$if hasApplicationTemplate
_{MsgCourseApplicationDeleteToEdit}
$else
$if isJust registration
_{MsgCourseRegistrationDeleteToEdit}
$if mayEditNews
$forall lect <- lecturers
$forall assi <- assistants
$forall tutor <- tutors
$forall corrector <- correctors
$forall (cID, CourseEvent{courseEventType, courseEventTime, courseEventRoom, courseEventNote}) <- events
_{MsgCourseEventType}
_{MsgCourseEventTime}
_{MsgCourseEventRoom}
_{MsgCourseEventNote}
$if mayCreateEvents
_{MsgCourseEventActions}
\ #{iconInvisible}
toPathPiece cID}>