add source code link

This commit is contained in:
Jon Schoning 2019-03-14 11:11:12 -05:00
parent 68b8c7ac88
commit a82f0fa510
13 changed files with 36 additions and 14 deletions

View file

@ -39,3 +39,5 @@ copyright: Insert copyright statement here
ekg-host: "_env:EKG_HOST:0.0.0.0" ekg-host: "_env:EKG_HOST:0.0.0.0"
ekg-port: "_env:EKG_PORT:8000" ekg-port: "_env:EKG_PORT:8000"
source-code-uri: "https://github.com/jonschoning/espial"

View file

@ -15,7 +15,7 @@ import Effect.Class (liftEffect)
import Halogen.Aff as HA import Halogen.Aff as HA
import Halogen.VDom.Driver (runUI) import Halogen.VDom.Driver (runUI)
import Model (Bookmark, Note, AccountSettings) import Model (Bookmark, Note, AccountSettings)
import Web.DOM.Element (removeAttribute) import Web.DOM.Element (setAttribute)
import Web.DOM.ParentNode (QuerySelector(..)) import Web.DOM.ParentNode (QuerySelector(..))
import Web.Event.Event (Event, preventDefault) import Web.Event.Event (Event, preventDefault)
import Web.HTML.HTMLElement (toElement) import Web.HTML.HTMLElement (toElement)
@ -33,33 +33,36 @@ renderBookmarks renderElSelector bmarks = do
HA.runHalogenAff do HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (blist bmarks) unit el void $ runUI (blist bmarks) unit el
showFooter viewRendered
renderAddForm :: String -> Bookmark -> Effect Unit renderAddForm :: String -> Bookmark -> Effect Unit
renderAddForm renderElSelector bmark = do renderAddForm renderElSelector bmark = do
HA.runHalogenAff do HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
runUI (addbmark bmark) unit el void $ runUI (addbmark bmark) unit el
viewRendered
renderNotes :: String -> Array Note -> Effect Unit renderNotes :: String -> Array Note -> Effect Unit
renderNotes renderElSelector notes = do renderNotes renderElSelector notes = do
HA.runHalogenAff do HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (nlist notes) unit el void $ runUI (nlist notes) unit el
showFooter viewRendered
renderNote :: String -> Note -> Effect Unit renderNote :: String -> Note -> Effect Unit
renderNote renderElSelector note = do renderNote renderElSelector note = do
HA.runHalogenAff do HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (nnote note) unit el void $ runUI (nnote note) unit el
viewRendered
renderAccountSettings :: String -> AccountSettings -> Effect Unit renderAccountSettings :: String -> AccountSettings -> Effect Unit
renderAccountSettings renderElSelector accountSettings = do renderAccountSettings renderElSelector accountSettings = do
HA.runHalogenAff do HA.runHalogenAff do
HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
void $ runUI (usetting accountSettings) unit el void $ runUI (usetting accountSettings) unit el
viewRendered
showFooter :: Aff Unit viewRendered :: Aff Unit
showFooter = HA.selectElement (QuerySelector ".user_footer") >>= traverse_ \el -> viewRendered = HA.selectElement (QuerySelector "#content") >>= traverse_ \el ->
liftEffect $ removeAttribute "hidden" (toElement el) liftEffect $ setAttribute "view-rendered" "" (toElement el)

View file

@ -69,6 +69,7 @@ instance Yesod App where
muser <- (fmap.fmap) snd maybeAuthPair muser <- (fmap.fmap) snd maybeAuthPair
mcurrentRoute <- getCurrentRoute mcurrentRoute <- getCurrentRoute
void $ mapM (incrementRouteEKG req) mcurrentRoute void $ mapM (incrementRouteEKG req) mcurrentRoute
let msourceCodeUri = appSourceCodeUri (appSettings master)
pc <- widgetToPageContent $ do pc <- widgetToPageContent $ do
setTitle "Espial" setTitle "Espial"
addAppScripts addAppScripts
@ -129,6 +130,7 @@ popupLayout widget = do
master <- getYesod master <- getYesod
mmsg <- getMessage mmsg <- getMessage
musername <- maybeAuthUsername musername <- maybeAuthUsername
let msourceCodeUri = appSourceCodeUri (appSettings master)
pc <- widgetToPageContent $ do pc <- widgetToPageContent $ do
addAppScripts addAppScripts
addStylesheet (StaticR css_tachyons_min_css) addStylesheet (StaticR css_tachyons_min_css)

View file

@ -381,7 +381,7 @@ allUserBookmarks user = do
bmarks <- bquery bmarks <- bquery
tags <- tquery tags <- tquery
let tagmap = MS.fromList tags let tagmap = MS.fromList tags
pure $ fmap (\bm@(Entity bid _) -> (bm, findWithDefault mempty bid tagmap)) bmarks pure $ (\bm@(Entity bid _) -> (bm, findWithDefault mempty bid tagmap)) <$> bmarks
where where
bquery :: DB [Entity Bookmark] bquery :: DB [Entity Bookmark]
bquery = bquery =

View file

@ -60,6 +60,8 @@ data AppSettings = AppSettings
-- ^ Host/interface the ekg server should bind to. -- ^ Host/interface the ekg server should bind to.
, appEkgPort :: Maybe Int , appEkgPort :: Maybe Int
-- ^ Port to listen on -- ^ Port to listen on
, appSourceCodeUri :: Maybe Text
-- ^ Uri to app source code
} }
instance FromJSON AppSettings where instance FromJSON AppSettings where
@ -92,6 +94,7 @@ instance FromJSON AppSettings where
appEkgHost <- o .:? "ekg-host" appEkgHost <- o .:? "ekg-host"
appEkgPort <- o .:? "ekg-port" appEkgPort <- o .:? "ekg-port"
appSourceCodeUri <- o .:? "source-code-uri"
return AppSettings {..} return AppSettings {..}

View file

@ -188,3 +188,7 @@ label {
code, pre { code, pre {
font-size:13px; font-size:13px;
} }
#content:not([view-rendered]) .view-delay {
display: none !important
}

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -9,10 +9,11 @@ $newline never
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>#{pageTitle pc} <title>#{pageTitle pc}
<meta name="description" content=""> <meta name="description" content="Espial is an open-source, web-based bookmarking server.">
<meta name="author" content=""> <meta name="robots" content="noindex, nofollow, noodp, noydir">
<meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="viewport" content="width=device-width,initial-scale=1">
$maybe sourceCodeUri <- msourceCodeUri
<meta name="source" content="#{ sourceCodeUri }">
^{pageHead pc} ^{pageHead pc}

View file

@ -32,3 +32,10 @@
#{preEscapedToMarkup msg} #{preEscapedToMarkup msg}
^{widget} ^{widget}
<footer .view-delay>
<div .w-100.mw8.center>
<div .footer-links.fr.pv2.ph3.mh1.b>
$maybe sourceCodeUri <- msourceCodeUri
<a .link title="Source Code" href="#{ sourceCodeUri }" target=_blank>&lt;/&gt;

View file

@ -42,7 +42,7 @@ $maybe route <- mroute
<div .cf> <div .cf>
<div .user_footer hidden> <div .user_footer.view-delay>
^{pager} ^{pager}
$if (fromIntegral bcount >= limit) || (page > 1) $if (fromIntegral bcount >= limit) || (page > 1)