diff --git a/make-pages/GalleryPage.hs b/make-pages/GalleryPage.hs index d7cfb3a..0338bc7 100644 --- a/make-pages/GalleryPage.hs +++ b/make-pages/GalleryPage.hs @@ -4,6 +4,7 @@ module GalleryPage (make) where import BuilderQQ import Date import Info +import qualified NsfwWarning import Data.Foldable import Data.Function (on, (&)) @@ -38,45 +39,50 @@ make' root (GalleryInfo {title, desc, prefix, filters, hidden}) infos = [b|@0 + $0.nsfwScript $title -
-

$title

-

- rss -

-
+ $0.nsfwDialog - - +
+ +
+ + + |] where items = map (uncurry $ makeYearItems nsfw) infosByYear @@ -106,8 +112,11 @@ make' root (GalleryInfo {title, desc, prefix, filters, hidden}) infos = [b|@0 | (_, (p0, i0) : _) : _ <- infosByYear = getThumb (takeDirectory p0) i0 | otherwise = "/style/card.png" + nsfwScript = NsfwWarning.script nsfw + nsfwDialog = NsfwWarning.dialog nsfw + makeFilter :: Text -> HashSet Text -> Text -> Int -> Builder -makeFilter prefix initial tag count = [b|@8 +makeFilter prefix initial tag count = [b|@0
  • @@ -121,17 +130,17 @@ makeYearItems :: Bool -- ^ nsfw -> Int -- ^ year -> [(FilePath, Info)] -> Builder -makeYearItems nsfw year infos = [b|@4 +makeYearItems nsfw year infos = [b|@0
  • $year' - $4.items + $0.items |] where items = map (uncurry $ makeItem nsfw) infos year' = show year & foldMap \c -> [b|$c|] makeItem :: Bool -> FilePath -> Info -> Builder -makeItem nsfw file info@(Info {title, bg}) = [b|@4 +makeItem nsfw file info@(Info {title, bg}) = [b|@0
  • diff --git a/make-pages/IndexPage.hs b/make-pages/IndexPage.hs index 55608d0..acabc27 100644 --- a/make-pages/IndexPage.hs +++ b/make-pages/IndexPage.hs @@ -27,30 +27,32 @@ make' root (IndexInfo {title, desc, galleries, links, footer}) = [b|@0 $title -
    -

    $title

    -
    +
    +
    +

    $title

    +
    -
    - $galleryList - $linkList -
    +
    + $4.galleryList + $4.linkList +
    - $footer' + $2.footer' +
    |] where - galleryList = if null galleries then "" else [b|@2 + galleryList = if null galleries then "" else [b|@0 |] where items = map makeItem galleries - linkList = if null links then "" else [b|@2 + linkList = if null links then "" else [b|@0 |] @@ -65,13 +67,13 @@ make' root (IndexInfo {title, desc, galleries, links, footer}) = [b|@0 url = [b|$root|] makeItem :: GalleryInfo -> Builder -makeItem (GalleryInfo {title, desc, prefix, filters}) = [b|@6 +makeItem (GalleryInfo {title, desc, prefix, filters}) = [b|@0 $title
  • |] where nsfw = if hasNsfw filters then [b| class=nsfw|] else "" makeLink :: Link -> Builder -makeLink (Link {title, url, nsfw}) = [b|@6 +makeLink (Link {title, url, nsfw}) = [b|@0 $title |] where nsfw' = if nsfw then [b| class=nsfw|] else "" diff --git a/make-pages/NsfwWarning.hs b/make-pages/NsfwWarning.hs new file mode 100644 index 0000000..f9b5659 --- /dev/null +++ b/make-pages/NsfwWarning.hs @@ -0,0 +1,30 @@ +{-# OPTIONS_GHC -fdefer-typed-holes #-} + +module NsfwWarning (script, dialog) where + +import BuilderQQ + +script :: Bool -> Builder +script False = "" +script True = [b||] + +dialog :: Bool -> Builder +dialog False = "" +dialog True = [b|@0 +
    +
    +

    cw: lewd

    + + + +
    + are you an adult?
    if not please don't look! +
    + +
    + + +
    +
    +
    + |] diff --git a/make-pages/SinglePage.hs b/make-pages/SinglePage.hs index c4886d2..5259b1f 100644 --- a/make-pages/SinglePage.hs +++ b/make-pages/SinglePage.hs @@ -4,6 +4,7 @@ import Date import Info import BuilderQQ import Records () +import qualified NsfwWarning import Control.Exception import qualified Data.Map.Strict as Map @@ -60,7 +61,7 @@ make' root prefix nsfw dataDir dir let makePrefetch (Image {path}) = [b||] let prefetches = map (makePrefetch . #first) $ tail images - let makeWarning w = [b|@4 + let makeWarning w = [b|@0
    $w
    @@ -82,6 +83,9 @@ make' root prefix nsfw dataDir dir let updateDate = ifJust (Map.lookupMax updates) \(formatLong -> u, _) -> [b|
    updated $u|] + let nsfwScript = NsfwWarning.script nsfw + let nsfwDialog = NsfwWarning.dialog nsfw + pure [b|@0 @@ -100,44 +104,49 @@ make' root prefix nsfw dataDir dir + $nsfwScript $bgStyle $0.prefetches $title -
    -

    $title

    - $artistTag -

    - $formattedDate $updateDate -

    -
    + $nsfwDialog - $buttonBar +
    +
    +

    $title

    + $artistTag +

    + $formattedDate $updateDate +

    +
    -
    -
    - $warning' - - - -
    + $2.buttonBar -
    - $descSection +
    +
    + $warning' + + + +
    - $tagsList +
    + $6.descSection - $linksList + $6.tagsList - $updatesList -
    -
    + $6.linksList - + $6.updatesList +
    +
    + + +