]> git.plutz.net Git - shellwiki/commitdiff
improved styling and options of search macro
authorPaul Hänsch <paul@plutz.net>
Tue, 9 Apr 2024 14:31:40 +0000 (16:31 +0200)
committerPaul Hänsch <paul@plutz.net>
Tue, 9 Apr 2024 14:31:40 +0000 (16:31 +0200)
macros/search
pages/[wiki]/search/#page.md
pages/[wiki]/search/:de/#page.md
themes/default.css

index 3951e97307115804ce13f8d6c0ea2f45791d30d8..e8207c2eb4c46b2c41702fb905ab9aa5c07efa8b 100755 (executable)
@@ -25,23 +25,33 @@ I="$_DATA/index"
 _(){ printf %s\\n "$*"; }
 [ "${LANGUAGE}" -a -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh"
 
-show_form=true show_hits='' action='' query=''
+show_form=true show_hits='' action='' query='' show_query='' hlevel='3' alt=''
 
 set -- "$@" --
 while [ $# -gt 0 ]; do case $1 in
   --no-form|--noform)
     show_form=''; shift 1;;
   --hits|--results)
+    [ ! "$show_query" ] && show_query=true
     show_hits='true'; shift 1;;
+  --query|--show-query)
+    show_query=true; shift 1;;
+  --no-query)
+    show_query=false; shift 1;;
   --action)
     action="$(HTML "$2")"; shift 2;;
   --action=*|action=*)
-    action="$(HTML "${2#*=}")"; shift 1;;
+    action="$(HTML "${1#*=}")"; shift 1;;
+  --h1|--h2|--h3|--h4|--h5|--h6)
+    hlevel="${1#--h}"; shift 1;;
+  --alt)
+    alt="$2"; shift 2;;
   --) shift 1; break;;
   *) set -- "$@" "$1"; shift 1;;
 esac; done
 
 [ $# -gt 0 ] && query="$*" || query="$(GET q)"
+[ ! "$show_query" ] && show_query=false
 
 searchteaser() {
   local file="$1" words db3_data
@@ -74,7 +84,7 @@ searchteaser() {
   }
 }
 
-if [ ! "$action" -a "$LANGUAGE_DEFAULT" ]; then
+if [ ! "$action" -a "$LANGUAGE" != "$LANGUAGE_DEFAULT" ]; then
   action="./:${LANGUAGE}/[search]"
 elif [ ! "$action" ]; then
   action="./[search]"
@@ -84,7 +94,7 @@ if [ "${show_form}" = true ]; then
   cat <<-EOF
        <form class="macro search" method="GET" action="${action}">
          <input type="search" placeholder="$(_ Search)" name="q"
-                value="$([ "$show_hits" = true ] && printf %s\\n "$query" |HTML)"
+                value="$([ "$show_query" = true ] && printf %s\\n "$query" |HTML)"
          ><button type="submit" class="search">$(_ Search)</button>
        </form>
        EOF
@@ -110,7 +120,6 @@ if [ "${show_hits}" = true ]; then
        ')
        EOF
 
-  printf '<ul class="macro search hits">'
   for w in ${words}; do
     [ ! -f "$I/$w" ] && continue
   
@@ -141,14 +150,16 @@ if [ "${show_hits}" = true ]; then
     has_tag "$page" $ntags && continue
     printf '%s %s\n' "$doc" "$(searchteaser "$(mdfile "$page")" $words)"
   done \
-  | while read -r p t; do
-    path="$(UNSTRING "$p")" pfrag="${path%/}" title=''
-    while [ "$pfrag" ]; do
-      title="$(page_title "$pfrag")/$title"
-      pfrag="${pfrag%/*}"
-    done
-    printf '<li><a href="%s">%s</a><p>%s</p></li>' \
-      "$(URL "$path")" "$(HTML "/$title")" "$(UNSTRING "$t" |HTML)"
-  done
-  printf '</ul>'
+  | { while read -r p t; do
+      [ ! "$path" ] && printf '<ul class="macro search hits">'
+      path="$(UNSTRING "$p")" title="$(page_title "$path")"
+      path="$(HTML "$path")"
+      printf '<li><h%i><a href="%s">%s</a></h%i><p class="path">%s</p><p class="teaser">%s</p></li>' \
+             "${hlevel}" "$path" "$(HTML "$title")" "${hlevel}" \
+             "$path" "$(UNSTRING "$t" |HTML)"
+      done
+    [ "$path" ] && printf '</ul>'
+    [ ! "$path" -a "$alt" -a "$query" ] \
+    && printf '<p class="macro search hits">%s</p>' "$(HTML "$alt")"
+  }
 fi
index 598bbb8daca93af1e24ab4534b7222b045120755..c6d93cd7e9f47cb8de3a1c5b7f27a0619b373b30 100644 (file)
@@ -3,4 +3,4 @@
 
 Search Results
 ==============
-<<search --action ./[search] --hits>>
+<<search --action ./[search] --hits --alt "No results">>
index 0a3ae088f0ea2877a74c077a6b739bd28bb8c9d5..49ae0bd55fb1769bf19eec93c3b913e98c448130 100644 (file)
@@ -3,4 +3,4 @@
 
 Suchergebnisse
 ==============
-<<search --action ./[search] --hits>>
+<<search --action ./[search] --hits --alt "Keine Ergebnisse">>
index c7eb6dd0e2c872a1c2e64af30c46557e33cf9d1e..a1ea010d118220f5b0f123b9bf08e6f3f4c0a9c5 100644 (file)
@@ -173,20 +173,32 @@ input.search, input[type="search"] {
   max-width: 80%;
   max-width: calc(100%  - 2.5em);
 }
+p.search.hits { text-align: center; }
 ul.search.hits, ol.search.hits {
   margin-left: auto; margin-right: auto;
   width: 100%; max-width: 540pt;
-  text-align: center;
   list-style: none;
+  padding-left: 0;
+}
+.search.hits li {
+  padding: 0 .75em;
+}
+.search.hits li:hover {
+  background-color: #F4F4F4;
 }
 .search.hits li a {
   display: block;
 }
 .search.hits li p {
-  display: inline-block;
   margin: 0 auto .5em auto;
   white-space: pre-line;
 }
+.search.hits p.path {
+  color: #444;
+  font-size: .875em;
+  margin-top: -.5em;
+  margin-left: 1.5ex;
+}
 
 table {
   min-width: 50%;