summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/WWWStaticusPlugins.hs37
1 files changed, 32 insertions, 5 deletions
diff --git a/src/WWWStaticusPlugins.hs b/src/WWWStaticusPlugins.hs
index 790a694..6718977 100644
--- a/src/WWWStaticusPlugins.hs
+++ b/src/WWWStaticusPlugins.hs
@@ -6,6 +6,7 @@ module WWWStaticusPlugins
,staticusPluginPandoc
,staticusPluginFill
,staticusPluginWrite
+ ,staticusPluginCards
) where
import WWWStaticus
@@ -20,6 +21,7 @@ import Data.List.Split
import Data.List.Utils
import Data.Tuple.Extra
import Text.Pandoc
+import Text.Regex
--
-- PLUGIN IDEAS
@@ -30,17 +32,17 @@ import Text.Pandoc
-- super `gallery and everythin` plugin, just throw images,videos,
-- zips,tars,source files,mds etc inside a folder-> gen page!
--
--- flexible layout, main pic, secondary pics
+-- flexible layout, main pic, secondary pics, multiple templates 1 2 3
--
-- scale images
--
--- asciinema, git, videos
+-- asciinema, git, videos (generate both from single one)
--
-- contact form? (use nginx log? save post request??)
--
-- pdf plugin
--
--- autotranslate plugin :P
+-- autotranslate/ multilang
--
-- |little helper to get values out of a map easily
@@ -60,7 +62,8 @@ par' k m = case M.lookup k m of
staticusPluginsDefault::[StaticusPlugin]
staticusPluginsDefault=[ staticusPluginInit
,staticusPluginCfg
- ,staticusPluginCopy [".jpg",".png",".zip",".css",".js",".ico",".mp4",".ogv"]
+ ,staticusPluginCopy [".jpg",".png",".zip",".css",".js",".ico",".mp4",".ogv",".hs",".glade"]
+ ,staticusPluginCards
,staticusPluginPandoc
,staticusPluginFill
,staticusPluginWrite
@@ -88,7 +91,7 @@ staticusPluginInit = StaticusPlugin "init" id runIO
,("template.html",tmpl)
,("menutop",menutop)
,("submenu",submenu)
- ,("breadcrumbs",breadcrumbs)
+ ,("breadcrumbs",if isHome then "" else breadcrumbs)
,("title",if null brc then "Home" else cln $ last brc)
]) m
@@ -149,3 +152,27 @@ staticusPluginWrite = StaticusPlugin "writer" id runIO
writeFile ((par "outdir" m)++"/index.html") (par "final" m)
return m
+-- |simple bootstrap cards
+staticusPluginCards::StaticusPlugin
+staticusPluginCards = StaticusPlugin "bootstrap cards" run return
+ where run m = M.union (M.fromList[("index.md",makeCards $ par "index.md" m)]) m
+ makeCards x = concat $ evr2 $ splitRegex (mkRegex "^\\{BEGIN:CARD\\}.*$|^\\{END:CARD\\}.*$") x
+ evr2 (x:y:xs) = x:createCard y:evr2 xs
+ evr2 x = x
+ createCard v = let (_:x:y:z:_:xs)=lines v in replace "###IMG###" x
+ $ replace "###TITLE###" y
+ $ replace "###FOOTER###" z -- (z++"<br />"++a)
+ $ replace "###TEXT###" (unlines $ map spans xs) tmpl
+ tmpl ="<div class ='col-sm-6 col-md-4 col-xl-3 mb-4'>"
+ ++"<div class='card h-100'>"
+ ++"<img class='border-bottom card-img-top' src='###IMG###' >"
+ ++"<div class='card-body'>"
+ ++"<h5 class='card-title'>###TITLE###</h5>"
+ ++"<p class='card-text'>"
+ ++"###TEXT###"
+ ++"</p>"
+ ++"</div>"
+ ++"<div class='text-center card-footer text-muted'>###FOOTER###</div>"
+ ++"</div></div>"
+ spans ('-':vv)=let (x:xs)=words vv in "<span class='badge "++x++"'>"++unwords xs++"</span>"
+ spans xx = xx