Skip to content

Commit b4bdd80

Browse files
committed
feature(tools): generated index menu is page aware
1 parent 636197d commit b4bdd80

File tree

1 file changed

+17
-12
lines changed
  • code/hsec-tools/src/Security/Advisories/Generate

1 file changed

+17
-12
lines changed

code/hsec-tools/src/Security/Advisories/Generate/HTML.hs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@ import System.Directory (createDirectoryIfMissing)
2727
import System.Directory.Extra (listFilesRecursive)
2828
import System.FilePath (takeFileName, (</>))
2929

30-
{-
31-
TODO
32-
\* Select head menu
33-
-}
34-
3530
-- * Actions
3631

3732
renderAdvisoriesIndex :: FilePath -> FilePath -> IO ()
@@ -65,7 +60,7 @@ renderAdvisoriesIndex src dst = do
6560
createDirectoryIfMissing False advisoriesDir
6661
forM_ advisories $ \advisory ->
6762
renderToFile' (advisoriesDir </> T.unpack (advisoryHtmlFilename advisory.advisoryId)) $
68-
inPage $
63+
inPage PageAdvisory $
6964
div_ [class_ "pure-u-1"] $
7065
toHtmlRaw advisory.advisoryHtml
7166
return ()
@@ -90,7 +85,7 @@ data AffectedPackageR = AffectedPackageR
9085

9186
listByDates :: [AdvisoryR] -> Html ()
9287
listByDates advisories =
93-
inPage $
88+
inPage PageListByDates $
9489
div_ [class_ "pure-u-1"] $ do
9590
div_ [class_ "advisories"] $ do
9691
table_ [class_ "pure-table pure-table-horizontal"] $ do
@@ -113,7 +108,7 @@ listByDates advisories =
113108

114109
listByPackages :: [AdvisoryR] -> Html ()
115110
listByPackages advisories =
116-
inPage $ do
111+
inPage PageListByPackages $
117112
div_ [class_ "pure-u-1"] $ do
118113
let byPackage :: Map.Map Text [(AdvisoryR, AffectedPackageR)]
119114
byPackage =
@@ -149,8 +144,14 @@ listByPackages advisories =
149144

150145
-- * Utils
151146

152-
inPage :: Html () -> Html ()
153-
inPage content =
147+
data NavigationPage
148+
= PageListByDates
149+
| PageListByPackages
150+
| PageAdvisory
151+
deriving stock (Eq, Show)
152+
153+
inPage :: NavigationPage -> Html () -> Html ()
154+
inPage page content =
154155
doctypehtml_ $
155156
html_ $ do
156157
head_ $ do
@@ -178,11 +179,15 @@ inPage content =
178179
body_ $ do
179180
div_ [class_ "pure-u-1"] $ do
180181
div_ [class_ "pure-menu pure-menu-horizontal"] $ do
182+
let selectedOn p cls =
183+
if page == p
184+
then cls <> " pure-menu-selected"
185+
else cls
181186
span_ [class_ "pure-menu-heading pure-menu-link"] "Advisories list"
182187
ul_ [class_ "pure-menu-list"] $ do
183-
li_ [class_ "pure-menu-item"] $
188+
li_ [class_ $ selectedOn PageListByDates "pure-menu-item"] $
184189
a_ [href_ "/by-dates.html", class_ "pure-menu-link"] "by date"
185-
li_ [class_ "pure-menu-item"] $
190+
li_ [class_ $ selectedOn PageListByPackages "pure-menu-item"] $
186191
a_ [href_ "/by-packages.html", class_ "pure-menu-link"] "by package"
187192
div_ [class_ "content"] content
188193

0 commit comments

Comments
 (0)