extra navbar links
This commit is contained in:
@@ -41,6 +41,8 @@ flatten = false
|
|||||||
order = ""
|
order = ""
|
||||||
home_name = "Home"
|
home_name = "Home"
|
||||||
show_home_in_nav = true
|
show_home_in_nav = true
|
||||||
|
nav_links = ""
|
||||||
|
nav_extra = ""
|
||||||
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
||||||
logo = ""
|
logo = ""
|
||||||
display_logo = false
|
display_logo = false
|
||||||
@@ -57,6 +59,8 @@ favicon = ""
|
|||||||
- `order` comma separated file/directory name list to order the sidebar (alphabetical by default)
|
- `order` comma separated file/directory name list to order the sidebar (alphabetical by default)
|
||||||
- `home_name` text for the home link in navigation (default: "Home")
|
- `home_name` text for the home link in navigation (default: "Home")
|
||||||
- `show_home_in_nav` show home link in navigation (default: true)
|
- `show_home_in_nav` show home link in navigation (default: true)
|
||||||
|
- `nav_links` comma separated extra nav links, as bare URLs or Markdown links like `[Label](https://example.com)`
|
||||||
|
- `nav_extra` raw HTML appended inside the `<nav>` after the generated link list
|
||||||
- `footer` footer html/text shown at the bottom of pages
|
- `footer` footer html/text shown at the bottom of pages
|
||||||
- `logo` logo image path (used in header if enabled)
|
- `logo` logo image path (used in header if enabled)
|
||||||
- `display_logo` show logo in header
|
- `display_logo` show logo in header
|
||||||
|
|||||||
74
kewt.sh
74
kewt.sh
@@ -34,6 +34,8 @@ flatten = false
|
|||||||
order = ""
|
order = ""
|
||||||
home_name = "Home"
|
home_name = "Home"
|
||||||
show_home_in_nav = true
|
show_home_in_nav = true
|
||||||
|
nav_links = ""
|
||||||
|
nav_extra = ""
|
||||||
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
||||||
logo = ""
|
logo = ""
|
||||||
display_logo = false
|
display_logo = false
|
||||||
@@ -258,6 +260,9 @@ flatten="false"
|
|||||||
order=""
|
order=""
|
||||||
home_name="Home"
|
home_name="Home"
|
||||||
show_home_in_nav="true"
|
show_home_in_nav="true"
|
||||||
|
nav_links=""
|
||||||
|
nav_extra=""
|
||||||
|
footer="made with <a href=\"https://kewt.krzak.org\">kewt</a>"
|
||||||
logo=""
|
logo=""
|
||||||
display_logo="false"
|
display_logo="false"
|
||||||
display_title="true"
|
display_title="true"
|
||||||
@@ -292,6 +297,8 @@ load_config() {
|
|||||||
order) order="$val" ;;
|
order) order="$val" ;;
|
||||||
home_name) home_name="$val" ;;
|
home_name) home_name="$val" ;;
|
||||||
show_home_in_nav) show_home_in_nav="$val" ;;
|
show_home_in_nav) show_home_in_nav="$val" ;;
|
||||||
|
nav_links) nav_links="$val" ;;
|
||||||
|
nav_extra) nav_extra="$val" ;;
|
||||||
footer) footer="$val" ;;
|
footer) footer="$val" ;;
|
||||||
logo) logo="$val" ;;
|
logo) logo="$val" ;;
|
||||||
display_logo) display_logo="$val" ;;
|
display_logo) display_logo="$val" ;;
|
||||||
@@ -305,6 +312,64 @@ load_config() {
|
|||||||
load_config "./site.conf"
|
load_config "./site.conf"
|
||||||
load_config "$src/site.conf"
|
load_config "$src/site.conf"
|
||||||
|
|
||||||
|
escape_html_text() {
|
||||||
|
printf '%s' "$1" | sed \
|
||||||
|
-e 's/&/\&/g' \
|
||||||
|
-e 's/</\</g' \
|
||||||
|
-e 's/>/\>/g'
|
||||||
|
}
|
||||||
|
|
||||||
|
escape_html_attr() {
|
||||||
|
printf '%s' "$1" | sed \
|
||||||
|
-e 's/&/\&/g' \
|
||||||
|
-e 's/"/\"/g' \
|
||||||
|
-e 's/</\</g' \
|
||||||
|
-e 's/>/\>/g'
|
||||||
|
}
|
||||||
|
|
||||||
|
nav_links_html() {
|
||||||
|
[ -n "$nav_links" ] || return
|
||||||
|
|
||||||
|
old_ifs=$IFS
|
||||||
|
set -f
|
||||||
|
IFS=','
|
||||||
|
set -- $nav_links
|
||||||
|
IFS=$old_ifs
|
||||||
|
set +f
|
||||||
|
|
||||||
|
[ $# -gt 0 ] || return
|
||||||
|
|
||||||
|
printf '<ul class="nav-extra-links">\n'
|
||||||
|
for raw_link in "$@"; do
|
||||||
|
link=$(printf '%s' "$raw_link" | sed 's/^[[:space:]]*//; s/[[:space:]]*$//')
|
||||||
|
[ -n "$link" ] || continue
|
||||||
|
|
||||||
|
case "$link" in
|
||||||
|
\[*\]\(*\))
|
||||||
|
label=${link#\[}
|
||||||
|
label=${label%%\]*}
|
||||||
|
link_url=${link#*](}
|
||||||
|
link_url=${link_url%)}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
link_url=$link
|
||||||
|
label=$(printf '%s' "$link" | sed \
|
||||||
|
-e 's|^[A-Za-z][A-Za-z0-9+.-]*://||' \
|
||||||
|
-e 's|/$||')
|
||||||
|
[ -n "$label" ] || label="$link"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -n "$link_url" ] || continue
|
||||||
|
[ -n "$label" ] || label="$link_url"
|
||||||
|
|
||||||
|
link_attr=$(escape_html_attr "$link_url")
|
||||||
|
label_text=$(escape_html_text "$label")
|
||||||
|
printf '<li><a href="%s">%s</a></li>\n' "$link_attr" "$label_text"
|
||||||
|
done
|
||||||
|
printf '</ul>'
|
||||||
|
}
|
||||||
|
|
||||||
template="$src/template.html"
|
template="$src/template.html"
|
||||||
[ -f "$template" ] || template="./template.html"
|
[ -f "$template" ] || template="./template.html"
|
||||||
[ -f "$template" ] || die "Template '$template' not found."
|
[ -f "$template" ] || die "Template '$template' not found."
|
||||||
@@ -313,6 +378,15 @@ template="$src/template.html"
|
|||||||
mkdir -p "$out"
|
mkdir -p "$out"
|
||||||
|
|
||||||
nav=$(generate_nav "$src")
|
nav=$(generate_nav "$src")
|
||||||
|
extra_links=$(nav_links_html)
|
||||||
|
if [ -n "$extra_links" ]; then
|
||||||
|
nav="$nav
|
||||||
|
$extra_links"
|
||||||
|
fi
|
||||||
|
if [ -n "$nav_extra" ]; then
|
||||||
|
nav="$nav
|
||||||
|
$nav_extra"
|
||||||
|
fi
|
||||||
|
|
||||||
find_closest() {
|
find_closest() {
|
||||||
target="$1"
|
target="$1"
|
||||||
|
|||||||
@@ -10,3 +10,7 @@ display_title = true
|
|||||||
logo_as_favicon = true
|
logo_as_favicon = true
|
||||||
favicon = ""
|
favicon = ""
|
||||||
order = ""
|
order = ""
|
||||||
|
home_name = "Home"
|
||||||
|
show_home_in_nav = true
|
||||||
|
nav_links = ""
|
||||||
|
nav_extra = ""
|
||||||
|
|||||||
@@ -15,3 +15,5 @@ Sed dictum tortor at interdum dignissim. Nunc hendrerit sollicitudin elementum.
|
|||||||
Cras vitae sapien egestas, blandit libero et, volutpat augue. Ut augue quam, sollicitudin quis libero laoreet, bibendum imperdiet massa. Duis sed venenatis risus. Praesent a est mollis, viverra erat quis, faucibus elit. Donec at sagittis est, non posuere nisi. Integer posuere pharetra dui in aliquam. Morbi vehicula eros in hendrerit aliquam. Duis in turpis vel mauris mattis convallis in id tortor. Cras et aliquam augue.
|
Cras vitae sapien egestas, blandit libero et, volutpat augue. Ut augue quam, sollicitudin quis libero laoreet, bibendum imperdiet massa. Duis sed venenatis risus. Praesent a est mollis, viverra erat quis, faucibus elit. Donec at sagittis est, non posuere nisi. Integer posuere pharetra dui in aliquam. Morbi vehicula eros in hendrerit aliquam. Duis in turpis vel mauris mattis convallis in id tortor. Cras et aliquam augue.
|
||||||
|
|
||||||
Cras quis consectetur dolor, a sodales tortor. Vestibulum aliquam lacinia metus, sed viverra erat egestas in. Morbi interdum sapien sed bibendum maximus. Aenean accumsan pharetra libero dapibus aliquam. Etiam sodales purus posuere gravida ullamcorper. Vestibulum tincidunt, nibh a pulvinar aliquet, leo tortor pulvinar diam, ut viverra nunc elit bibendum nulla. Praesent vel pulvinar erat, eu efficitur magna. Mauris at consequat purus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce in dui quis nisi elementum aliquam. Proin eget justo sed est commodo accumsan. Suspendisse a feugiat tellus, eget gravida tellus.
|
Cras quis consectetur dolor, a sodales tortor. Vestibulum aliquam lacinia metus, sed viverra erat egestas in. Morbi interdum sapien sed bibendum maximus. Aenean accumsan pharetra libero dapibus aliquam. Etiam sodales purus posuere gravida ullamcorper. Vestibulum tincidunt, nibh a pulvinar aliquet, leo tortor pulvinar diam, ut viverra nunc elit bibendum nulla. Praesent vel pulvinar erat, eu efficitur magna. Mauris at consequat purus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce in dui quis nisi elementum aliquam. Proin eget justo sed est commodo accumsan. Suspendisse a feugiat tellus, eget gravida tellus.
|
||||||
|
|
||||||
|
![https://www.youtube.com/embed/NvQD9E5Cq8A]
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ flatten = false
|
|||||||
order = ""
|
order = ""
|
||||||
home_name = "Home"
|
home_name = "Home"
|
||||||
show_home_in_nav = true
|
show_home_in_nav = true
|
||||||
|
nav_links = ""
|
||||||
|
nav_extra = ""
|
||||||
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
||||||
logo = ""
|
logo = ""
|
||||||
display_logo = false
|
display_logo = false
|
||||||
@@ -57,6 +59,8 @@ favicon = ""
|
|||||||
- `order` comma separated file/directory name list to order the sidebar (alphabetical by default)
|
- `order` comma separated file/directory name list to order the sidebar (alphabetical by default)
|
||||||
- `home_name` text for the home link in navigation (default: "Home")
|
- `home_name` text for the home link in navigation (default: "Home")
|
||||||
- `show_home_in_nav` show home link in navigation (default: true)
|
- `show_home_in_nav` show home link in navigation (default: true)
|
||||||
|
- `nav_links` comma separated extra nav links, as bare URLs or Markdown links like `[Label](https://example.com)`
|
||||||
|
- `nav_extra` raw HTML appended inside the `<nav>` after the generated link list
|
||||||
- `footer` footer html/text shown at the bottom of pages
|
- `footer` footer html/text shown at the bottom of pages
|
||||||
- `logo` logo image path (used in header if enabled)
|
- `logo` logo image path (used in header if enabled)
|
||||||
- `display_logo` show logo in header
|
- `display_logo` show logo in header
|
||||||
|
|||||||
Reference in New Issue
Block a user