SHARE
TWEET

Untitled

a guest Dec 16th, 2018 84 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. splices :: Monad m => View Text -> Splices (Splice m)
  2. splices v = do
  3.     "dfInputText" ## dfInputText v
  4.     "dfSubView" ## dfSubView splices v
  5.     "dfInputList" ## dfInputList splices v
  6.  
  7. dfInputList :: MonadIO m => (View Text -> Splices (Splice m)) -> View Text -> Splice m
  8. dfInputList userSplices view = do
  9.     (ref, _) <- getRefAttributes Nothing
  10.     let listRef = absoluteRef ref view
  11.         listAttrs =
  12.             [ ("id", listRef)
  13.             , ("class", "inputList")
  14.             ]
  15.         addControl _ = return $ disableOnclick ref view
  16.             [ ("onclick", T.concat [ "addInputListItem(this, '"
  17.                                    , listRef
  18.                                    , "'); return false;"] ) ]
  19.         removeControl _ = return $ disableOnclick ref view
  20.             [ ("onclick", T.concat [ "removeInputListItem(this, '"
  21.                                    , listRef
  22.                                    , "'); return false;"] ) ]
  23.         itemAttrs v _ = return
  24.             [ ("id", T.concat [listRef, ".", last $ "0" : viewContext v])
  25.             , ("class", T.append listRef ".inputListItem")
  26.             ]
  27.         templateAttrs v _ = return
  28.             [ ("id", T.concat [listRef, ".", last $ "-1" : viewContext v])
  29.             , ("class", T.append listRef ".inputListTemplate")
  30.             , ("style", "display: none;")
  31.             ]
  32.         items = listSubViews ref view
  33.         f attrs v = localHS (bindAttributeSplices ("itemAttrs" ## attrs v) .
  34.                        bindDigestiveSplices v) runChildren
  35.         dfListItem = do
  36.             template <- f templateAttrs (makeListSubView ref (-1) view)
  37.             res <- mapSplices (f itemAttrs) items
  38.             return $ template ++ res
  39.         attrSplices = do
  40.             "addControl"    ## addControl
  41.             "removeControl" ## removeControl
  42.     nodes <- localHS (bindSplices (("dfListItem" ## dfListItem) <> userSplices view) .
  43.                       bindAttributeSplices attrSplices) runChildren
  44.     let indices = [X.Element "input"
  45.                     [ ("type", "hidden")
  46.                     , ("name", T.intercalate "." [listRef, indicesRef])
  47.                     , ("value", T.intercalate "," $ map
  48.                         (last . ("0":) . viewContext) items)
  49.                     ] []
  50.                   ]
  51.     return [X.Element "div" listAttrs (indices ++ nodes)]
  52.  
  53. splices' :: Monad m => View Text -> Splices (Splice m)
  54. splices' v = do
  55.     "dfInputText" ## dfInputText v
  56.     "dfSubView" ## dfSubView splices v
  57.     "dfInputList" ## dfInputList splices v
  58.     "foo" ## undefined
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top