]> git.plutz.net Git - shellwiki/blobdiff - themes/default.sh
fancier search results with teasers and page titles
[shellwiki] / themes / default.sh
index 5979f207895e2f9586abd29947902f160a93d0b9..fefde75925b1907263214531b54b5d8ce38b6f81 100755 (executable)
@@ -83,12 +83,11 @@ theme_page(){
 }
 
 theme_editor(){
-  local page="$1" template="$2" title file att
-  title="$(HTML "${PAGE_TITLE:-"${page}"}")"
+  local page="$1" template="$2" file att
 
   [ "$template" ] && acl_read "$template" || template="$page"
 
-  theme_page - "Editor: $title" <<-EOF
+  theme_page - "$(_ Editor): ${PAGE_TITLE:-"${page}"}" <<-EOF
        <input checked type=radio class=tab name=edithelp value=edtr id=editor><label for=editor>$(_ Editor)</label>
        <input         type=radio class=tab name=edithelp value=help id=syntax><label for=syntax>$(_ Syntax)</label>
        <input         type=radio class=tab name=edithelp value=att  id=attach><label for=attach>$(_ Attachments)</label>
@@ -137,17 +136,23 @@ theme_revisions(){ theme_page "$@"; }
 
 theme_search(){
   local words="$*"
-  # STDIN: read result pages line by line
+  # STDIN: [STRING page][TAB][STRING teaser]
 
-  theme_page - <<-EOF
+  theme_page - "$(_ Search results): ${words}" <<-EOF
        <article>
          <h1>$([ "$words" ] && _ "Search results" || _ "Search" )</h1>
          <form class="search" method="GET">
            <input type="search" name="q" value="$(HTML $words)"><button class="search" type="submit">$(_ Search)</button>
          </form>
          <ol class="searchresults">
-           $( while read p; do
-             printf '<li><a href="%s">%s</a></li>' "$(URL "$p")" "$(HTML "$p")"
+           $(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)
          </ol>
        </article>
@@ -155,11 +160,10 @@ theme_search(){
 }
 
 theme_attachments(){
-  local page="$1" title
-  title="${page%/}"; title="${title##*/}"
+  local page="$1"
 
   if acl_write "$page"; then
-    theme_page - "$(_ Attachments): $title" <<-EOF
+    theme_page - "$(_ Attachments): ${PAGE_TITLE:-"${page}"}" <<-EOF
        <form class=upload method=POST enctype="multipart/form-data">
          <h2>$(_ Upload)</h2>
          <input type=hidden name=session_id value="$SESSION_ID">
@@ -204,7 +208,7 @@ theme_attachments(){
        </form>
        EOF
   else
-    theme_page - "$(_ Attachments): $title" <<-EOF
+    theme_page - "$(_ Attachments): ${PAGE_TITLE:-"${page}"}" <<-EOF
        <ul class="attachment list">
        $(for file in "$_EXEC/pages/$page/#attachments"/* "$_DATA/pages/$page/#attachments"/*; do
          [ "$file" = "$_EXEC/pages/$page/#attachments/${file##*/}" \