$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}
^{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
$maybe templateUrl <- mApplicationTemplate
_{MsgCourseApplicationDeleteToEdit}
$if mayViewAnySheet
_{MsgCourseSheetsFoundHere}: #
_{MsgMenuSheetList}
$else
_{MsgCourseSheetsNoneVisible}
$if mayViewMaterials
$if mayViewAnyMaterial
_{MsgCourseMaterialsFoundHere}: #
_{MsgMenuMaterialList}
$else
_{MsgCourseMaterialsNoneVisible}
$if courseMaterialFree course
_{MsgCourseMaterialFree}
$else
_{MsgCourseMaterialNotFree}
$if hasExams
$if mayEditNews
$forall lect <- lecturers
$forall assi <- assistants
$forall tutor <- tutors
$forall corrector <- correctors
$if NTop (Just now) < NTop courseVisibleFrom
$if hasAllocationRegistrationOpen
_{MsgCourseInvisibleOverridenByAllocation}
$else
_{MsgCourseInvisible}
$maybe (Allocation{allocationName, allocationRegisterByCourse}, url) <- mAllocation'
$forall (cID, CourseEvent{courseEventType, courseEventTime, courseEventRoom, courseEventNote}, showRoom, courseEventCurrentOpt, mEventScheduleOpt) <- events
_{MsgCourseEventType}
_{MsgCourseEventTime}
_{MsgCourseEventRoom}
_{MsgCourseEventNote}
$# TODO: merge with actions column
$if is _Just mbAuth
_{MsgScheduleOptActions}
$if mayCreateEvents
_{MsgCourseEventActions}
\ #{iconInvisible}
toPathPiece cID}>
$if showRoom