diff --git a/messages/uniworx/de.msg b/messages/uniworx/de.msg index 945497b01..7030d0c15 100644 --- a/messages/uniworx/de.msg +++ b/messages/uniworx/de.msg @@ -235,7 +235,9 @@ MaterialEditHeading materialName@MaterialName: Material "#{materialName}" editie MaterialEditTitle materialName@MaterialName: Material "#{materialName}" editieren MaterialSaveOk tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Material "#{materialName}" erfolgreich gespeichert in Kurs #{display tid}-#{display ssh}-#{csh} MaterialNameDup tid@TermId ssh@SchoolId csh@CourseShorthand materialName@MaterialName: Es gibt bereits Material mit Namen "#{materialName}" in diesem Kurs #{display tid}-#{display ssh}-#{csh} -MaterialDeleteQuestion: Wollen Sie das unten aufgeführte Material wirklich löschen? +MaterialDeleteCaption: Wollen Sie das unten aufgeführte Material wirklich löschen? +MaterialDelHasFiles count@Int64: inklusive #{tshow count} #{pluralDE count "Datei" "Dateien"} +MaterialIsVisible: Achtung, dieses Material wurde bereits veröffentlicht. MaterialDeleted materialName@MaterialName: Material "#{materialName}" gelöscht diff --git a/src/Handler/Material.hs b/src/Handler/Material.hs index 0f84131ad..b641b8ec3 100644 --- a/src/Handler/Material.hs +++ b/src/Handler/Material.hs @@ -16,7 +16,7 @@ import Database.Esqueleto.Utils.TH import Utils.Lens import Utils.Form import Handler.Utils --- import Handler.Utils.Delete +import Handler.Utils.Delete import Handler.Utils.Table.Cells import Handler.Utils.Table.Columns @@ -309,18 +309,31 @@ handleMaterialEdit tid ssh csh cid template dbMaterial = do getMDelR, postMDelR :: TermId -> SchoolId -> CourseShorthand -> MaterialName -> Handler Html getMDelR = postMDelR postMDelR tid ssh csh mnm = do - _matEnt <- runDB $ fetchMaterial tid ssh csh mnm - error "todo" -- CONTINUE HERE - {- + matEnt <- runDB $ fetchMaterial tid ssh csh mnm deleteR DeleteRoute { drRecords = Set.singleton $ entityKey matEnt - , drGetInfo = error "todo" - , drUnjoin = error "todo" - , drRenderRecord = error "todo" - , drRecordConfirmString = error "todo" - , drCaption = SomeMessage MsgMaterialDeleteQuestion + , drGetInfo = \(material `E.InnerJoin` course) -> do + E.on $ material E.^. MaterialCourse E.==. course E.^. CourseId + let filecount = E.sub_select . E.from $ \matfile -> do + E.where_ $ matfile E.^. MaterialFileMaterial E.==. material E.^. MaterialId + return (E.countRows :: E.SqlExpr (E.Value Int64)) + return (material,course,filecount) + , drUnjoin = \(material `E.InnerJoin` _course) -> material + , drRenderRecord = \(Entity _ Material{..}, Entity _ Course{..}, E.Value fileCount) -> do + now <- liftIO getCurrentTime + let isPublished = NTop (Just now) >= NTop materialVisibleFrom + pCT = prependCourseTitle courseTerm courseSchool courseShorthand + return [whamlet| + _{SomeMessage $ pCT $ MsgMaterialHeading materialName} + $if fileCount /= 0 +  _{SomeMessage $ MsgMaterialDelHasFiles fileCount} + $if isPublished +  _{SomeMessage $ MsgMaterialIsVisible} + |] + , drRecordConfirmString = \(Entity _ Material{..}, Entity _ Course{..}, E.Value fileCount) -> + return $ [st|#{termToText (unTermKey courseTerm)}/#{unSchoolKey courseSchool}/#{courseShorthand}/#{materialName}|] <> bool mempty [st| + #{tshow fileCount} Files|] (fileCount /= 0) + , drCaption = SomeMessage MsgMaterialDeleteCaption , drSuccessMessage = SomeMessage $ MsgMaterialDeleted mnm , drSuccess = SomeRoute $ CourseR tid ssh csh MaterialListR , drAbort = SomeRoute $ CourseR tid ssh csh $ MaterialR mnm MShowR } - -}