Term editing required third route :(

This commit is contained in:
SJost 2017-10-06 18:38:18 +02:00
parent a871725d9c
commit d9c6380807
6 changed files with 37 additions and 25 deletions

3
.gitignore vendored
View File

@ -21,4 +21,5 @@ cabal.sandbox.config
uniworx.cabal uniworx.cabal
uniworx.nix uniworx.nix
.gup/ .gup/
.dbsettings.yml .dbsettings.yml
*.kate-swp

6
routes
View File

@ -10,5 +10,7 @@
/assist/newcourse NewCourseR GET POST /assist/newcourse NewCourseR GET POST
/assist/newterm NewTermR GET POST /assist/showterms ShowTermsR GET
/assist/showterm ShowTermR GET /assist/newterm NewTermR GET
/assist/editterm EditTermR GET POST
/assist/editterm/#TermIdentifier EditTermExistR GET

View File

@ -3,6 +3,7 @@
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-orphans #-} {-# OPTIONS_GHC -fno-warn-orphans #-}
module Application module Application

View File

@ -167,9 +167,11 @@ instance Yesod UniWorX where
isAuthorized ProfileR _ = isAuthenticated isAuthorized ProfileR _ = isAuthenticated
-- TODO: change to Assistants -- TODO: change to Assistants
isAuthorized NewCourseR _ = return Authorized isAuthorized NewCourseR _ = return Authorized
isAuthorized NewTermR _ = return Authorized isAuthorized NewTermR _ = return Authorized
isAuthorized ShowTermR _ = return Authorized isAuthorized EditTermR _ = return Authorized
isAuthorized (EditTermExistR _) _ = return Authorized
isAuthorized ShowTermsR _ = return Authorized
-- This function creates static content files in the static folder -- This function creates static content files in the static folder
-- and names them based on a hash of their content. This allows -- and names them based on a hash of their content. This allows

View File

@ -121,8 +121,8 @@ postNewCourseR = do
-} -}
getShowTermR :: Handler Html getShowTermsR :: Handler Html
getShowTermR = do getShowTermsR = do
terms <- runDB $ selectList [] [Desc TermStart] terms <- runDB $ selectList [] [Desc TermStart]
defaultLayout $ do defaultLayout $ do
setTitle "Freigeschaltete Semester" setTitle "Freigeschaltete Semester"
@ -137,7 +137,7 @@ getShowTermR = do
<ul> <ul>
$forall Entity _ term <- terms $forall Entity _ term <- terms
<li> <li>
<a href=@{NewTermR}> <a href=@{EditTermExistR $ termName term}>
#{termToText $ termName term} #{termToText $ termName term}
from #{formatTime defaultTimeLocale "%d.%m.%Y" $ termStart term} from #{formatTime defaultTimeLocale "%d.%m.%Y" $ termStart term}
to: #{formatTime defaultTimeLocale "%d.%m.%Y" $ termEnd term} to: #{formatTime defaultTimeLocale "%d.%m.%Y" $ termEnd term}
@ -148,19 +148,28 @@ getShowTermR = do
getNewTermR :: Handler Html getNewTermR :: Handler Html
getNewTermR = do getNewTermR = do
-- TODO: Defaults für Semester hier ermitteln und übergeben -- TODO: Defaults für Semester hier ermitteln und übergeben
getNewTermDefR Nothing getEditTermMaybeR Nothing
getEditTermR :: Handler Html
getEditTermR = do
-- TODO: Defaults für Semester hier ermitteln und übergeben
getEditTermMaybeR Nothing
getEditTermExistR :: TermIdentifier -> Handler Html
getEditTermExistR tid = do
term <- runDB $ get $ TermKey tid
getEditTermMaybeR term
getEditTermMaybeR :: Maybe Term -> Handler Html
getNewTermDefR :: Maybe Term -> Handler Html getEditTermMaybeR mbTerm= do
getNewTermDefR mbTerm= do
aid <- requireAuthId aid <- requireAuthId
(formWidget, formEnctype) <- generateFormPost $ newTermForm mbTerm (formWidget, formEnctype) <- generateFormPost $ newTermForm mbTerm
defaultLayout $ do defaultLayout $ do
setTitle "Neues Semester anlegen" setTitle "Semester editieren/anlegen"
$(widgetFile "newTerm") $(widgetFile "editTerm")
postNewTermR :: Handler Html postEditTermR :: Handler Html
postNewTermR = do postEditTermR = do
aid <- requireAuthId aid <- requireAuthId
((result, formWidget), formEnctype) <- runFormPost $ newTermForm Nothing ((result, formWidget), formEnctype) <- runFormPost $ newTermForm Nothing
case result of case result of
@ -171,17 +180,17 @@ postNewTermR = do
let msg = "Semester " `T.append` tid `T.append` " wurde angelegt!" let msg = "Semester " `T.append` tid `T.append` " wurde angelegt!"
-- setMessage $ toHtml msg -- FIXME -- setMessage $ toHtml msg -- FIXME
setMessage "Semester wurde angelegt" setMessage "Semester wurde angelegt"
redirect ShowTermR redirect ShowTermsR
FormMissing -> defaultLayout $ do FormMissing -> defaultLayout $ do
setMessage "Keine Formulardaten erhalten." setMessage "Keine Formulardaten erhalten."
$(widgetFile "newTerm") $(widgetFile "editTerm")
FormFailure errorMsgs -> defaultLayout $ do FormFailure errorMsgs -> defaultLayout $ do
setMessage [shamlet| <span .error>Fehler: setMessage [shamlet| <span .error>Fehler:
<ul> <ul>
$forall errmsg <- errorMsgs $forall errmsg <- errorMsgs
<li> #{errmsg} <li> #{errmsg}
|] |]
$(widgetFile "newTerm") $(widgetFile "editTerm")
newTermForm :: Maybe Term -> Form Term newTermForm :: Maybe Term -> Form Term
newTermForm template = newTermForm template =

View File

@ -3,15 +3,12 @@
<div .row> <div .row>
<div .col-lg-12> <div .col-lg-12>
<div .page-header> <div .page-header>
<h1 #forms>Neues Semester anlegen: <h1 #forms>Semester editieren/anlegen:
<p>
Bitte alles ausfüllen!
<div .row> <div .row>
<div .col-lg-6> <div .col-lg-6>
<div .bs-callout bs-callout-info well> <div .bs-callout bs-callout-info well>
<form .form-horizontal method=post action=@{NewTermR}#forms enctype=#{formEnctype}> <form .form-horizontal method=post action=@{EditTermR}#forms enctype=#{formEnctype}>
^{formWidget} ^{formWidget}
<button .btn.btn-primary type="submit"> <button .btn.btn-primary type="submit">