diff --git a/messages/uniworx/de-de-formal.msg b/messages/uniworx/de-de-formal.msg index 1ee0b58ec..b21e7400c 100644 --- a/messages/uniworx/de-de-formal.msg +++ b/messages/uniworx/de-de-formal.msg @@ -2779,3 +2779,20 @@ WorkflowInstanceScopeKindTerm: Pro Semester WorkflowInstanceScopeKindSchool: Pro Institut WorkflowInstanceScopeKindTermSchool: Pro Institut & Semester WorkflowInstanceScopeKindCourse: Pro Veranstaltung +WorkflowDefinitionScope: Bereich +WorkflowDefinitionName: Name +WorkflowDefinitionDescriptions: Beschreibung +WorkflowDefinitionDescriptionsLanguageExists: Eine Beschreibung in dieser Sprache existiert bereits +WorkflowDefinitionDescriptionLanguage: Sprach-Code (RFC1766) +WorkflowDefinitionDescriptionTitle: Titel +WorkflowDefinitionDescription: Beschreibung +WorkflowDefinitionGraph: Spezifikation +WorkflowDefinitionKeyDoesNotExist renderedCryptoID@Text: Referenziert ID existiert nicht: #{renderedCryptoID} +WorkflowDefinitionFiles: Dateien +WorkflowDefinitionFileIdentDoesNotExist fileIdent@Text: Referenzierte Datei existiert nicht: #{fileIdent} +WorkflowDefinitionFileIdentExists: Eine Datei mit dieser ID existiert bereits +WorkflowDefinitionFileIdent: Dateireferenz +WorkflowDefinitionFile: Datei +WorkflowDefinitionCreated: Workflow-Definition angelegt +WorkflowDefinitionCollision: Es existiert bereits eine Workflow-Definition mit diesem Namen +WorkflowDefinitionNewTitle: Workflow-Definition anlegen \ No newline at end of file diff --git a/src/Handler/Utils/Form.hs b/src/Handler/Utils/Form.hs index 4be16133b..a91210f10 100644 --- a/src/Handler/Utils/Form.hs +++ b/src/Handler/Utils/Form.hs @@ -60,6 +60,11 @@ import Handler.Utils.Form.MassInput import qualified Data.Binary as Binary import qualified Data.ByteString.Base64.URL as Base64 +import Data.Time.Clock.System (systemEpochDay) + +import Data.Aeson.Encode.Pretty (encodePrettyToTextBuilder) +import qualified Data.Text.Lazy.Builder as Builder + {-# ANN module ("HLint: ignore Use const" :: String) #-} @@ -1279,31 +1284,47 @@ utcTimeField = checkMMap (return . localTimeToUTC') utcToLocalTime localTimeFiel langField :: Bool -- ^ Only allow values from `appLanguages` -> Field Handler Lang -langField False = checkBool langCheck MsgInvalidLangFormat $ textField & addDatalist appLanguagesOpts +langField False = checkBool langCheck MsgInvalidLangFormat $ textField & addDatalist appLanguagesOpts & cfStrip where langCheck (T.splitOn "-" -> lParts) = all ((&&) <$> not . null <*> T.all Char.isAlpha) lParts && not (null lParts) langField True = selectField appLanguagesOpts +data JsonFieldKind + = JsonFieldNormal + | JsonFieldLarge + | JsonFieldHidden + deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic, Typeable) + deriving anyclass (Universe, Finite) + jsonField :: ( ToJSON a, FromJSON a , MonadHandler m , RenderMessage (HandlerSite m) UniWorXMessage , RenderMessage (HandlerSite m) FormMessage ) - => Bool {-^ Hidden? -} + => JsonFieldKind -> Field m a -jsonField hide = Field{..} +jsonField fieldKind = Field{..} where inputType :: Text - inputType - | hide = "hidden" - | otherwise = "text" + inputType = case fieldKind of + JsonFieldHidden -> "hidden" + _other -> "text" fieldParse [encodeUtf8 -> v] [] = return . bimap (SomeMessage . MsgJSONFieldDecodeFailure) Just $ eitherDecodeStrict' v <|> eitherDecodeStrict' (urlDecode True v) fieldParse [] [] = return $ Right Nothing fieldParse _ _ = return . Left $ SomeMessage MsgValueRequired - fieldView theId name attrs val isReq = liftWidget [whamlet| - - |] + fieldView theId name attrs val isReq = case fieldKind of + JsonFieldLarge -> liftWidget + [whamlet| + $newline never +