From: Paul Hänsch Date: Wed, 18 Jul 2018 07:00:39 +0000 (+0200) Subject: Merge branch 'cgilite' of git.plutz.net:serve0 into cgilite X-Git-Url: http://git.plutz.net/?p=serve0;a=commitdiff_plain;h=f34cc723fb9a552d65e40b6f4846160599eaa8b5;hp=-c Merge branch 'cgilite' of git.plutz.net:serve0 into cgilite --- f34cc723fb9a552d65e40b6f4846160599eaa8b5 diff --combined indexmeta.sh index 371c51f,2ac459f..45a3bac --- a/indexmeta.sh +++ b/indexmeta.sh @@@ -69,7 -69,7 +69,7 @@@ meta_info() if [ -d "${meta%/meta}" ]; then grep -aF " $(meta_name "$file")" "$meta" \ - | grep -m1 -xE '[0-9]+ [0-9]+ [0-9]+ tags=[^ ]* comment=[^ ]* .+' \ + | grep -m1 -axE '[0-9]+ [0-9]+ [0-9]+ tags=[^ ]* comment=[^ ]* .+' \ || meta_file "$file" else printf '0\t0\t0\ttags=\tcomment=\t\r' @@@ -84,8 -84,8 +84,8 @@@ meta_dir() if [ -d "$dir/.index" -a \! -f "$meta" ] && LOCK "$meta"; then touch "$meta" # preliminary touch to prevent concurrent generators find "$dir" -type f -mindepth 1 -maxdepth 1 \ - | grep -E "$file_pattern" \ + | grep -aE "$file_pattern" \ - | while v="$(line)"; do + | while read -r v; do meta_line "$v" done >"$meta" @@@ -93,8 -93,8 +93,8 @@@ elif [ -d "$dir/.index" -a "$dir" -nt "$meta" ] && LOCK "$meta"; then touch "$meta" find "$dir" -type f -mindepth 1 -maxdepth 1 \ - | grep -E "$file_pattern" \ + | grep -aE "$file_pattern" \ - | while v="$(line)"; do + | while read -r v; do if [ "$v" -nt "$meta" ]; then grep -qF " $(meta_name "$v")" "$meta" \ || meta_line "$v" diff --combined list.sh index 2dc1a83,a2dcd55..9e2f2f8 --- a/list.sh +++ b/list.sh @@@ -4,9 -4,10 +4,10 @@@ . "$_EXEC/widgets.sh" list_item() { - local name path length width height tags comment n + local name link path length width height tags comment n name="$(HTML "$1")" - path="$(URL "$ITEM/$1")" + link="$(URL "$ITEM/$1")" + path="$(HTML "$ITEM/$1")" qry=$(HTML "$QUERY_STRING") if [ -d "$_DATA/$ITEM/$1" ]; then @@@ -18,9 -19,9 +19,9 @@@ printf '[div .list .file [a href="%s" [img src="%s?a=thumbnail"][label %s]] [span .time %i:%imin] [span .dim %ix%i] %s - [checkbox "select" "%s" id="select_%s" form="multitag"][label for="select_%s" +] + [checkbox "select" "%s" id="select_%s"][label for="select_%s" +] ]' \ - "$path" "$path" "$name" \ + "$link" "$link" "$name" \ "$((length / 60))" "$((length % 60))" \ "$width" "$height" \ "$(UNSTRING "${tags#tags=}" |tr , '\0' |xargs -r0 printf ' [span .tag %s]')" \ @@@ -69,27 -70,30 +70,30 @@@ list_filemeta() if [ $ORDER = Name ]; then sort -k6 "$meta" elif [ $ORDER = Length ]; then - sort -n "$meta" + sort -n -k1 "$meta" else cat "$meta" fi \ | if [ "$FILTER" ]; then sed -nr "$list_fex" elif [ "${SEARCH#!}" != "${SEARCH}" ]; then - grep -viE "$(STRING "${SEARCH#!}")" + grep -aviE "$(STRING "${SEARCH#!}" |sed -r ':x s;((^|[^\\])(\\\\)*)\+;\1\\+;g; tx;')" else - grep -iE "$(STRING "${SEARCH}")" + grep -aiE "$(STRING "${SEARCH}" \ + | sed -r ':x s;((^|[^\\])(\\\\)*)\+;\1 ;g; tx; + s;((^|[^\\])(\\\\)*)\\\+;\1+;g; + s; ;\\+;g;')" fi |cut -f6 | UNSTRING \ | while read -r fn; do printf '%s\n' "${base}/${fn%${CR}}" - done + done | tee .index/debug } list_index(){ local meta (cd "$_DATA/$ITEM"; find ./ -path '*/.index/meta' - ) | while meta="$(line)"; do + ) | while read -r meta; do list_filemeta "${meta%/.index/meta}" done } @@@ -105,7 -109,7 +109,7 @@@ list_dateorder() list_items() { local mode - mode="$(COOKIE mode |grep -m1 -xE 'index|browse' || printf browse )" + mode="$(COOKIE mode |grep -m1 -axE 'index|browse' || printf browse )" [ "$mode" = browse -a "$ITEM" ] && printf '..\n' @@@ -124,7 -128,7 +128,7 @@@ list_paginate() { local page i c n end - page="$(GET p |grep -xE '[0-9]+' || printf 1)"; c=1 + page="$(GET p |grep -axE '[0-9]+' || printf 1)"; c=1 end=$((page + LISTSIZE)) printf '[div .itemlist ' diff --combined widgets.sh index ba47062,ce1813c..4a64deb --- a/widgets.sh +++ b/widgets.sh @@@ -18,29 -18,6 +18,29 @@@ w_tagcategories="$(printf %s "$w_tags" [ "$ORDER" = Date ] && w_codate=checked [ "$ORDER" = Length ] && w_colength=checked +w_bookmarks(){ + local name link bm + bm="$_DATA/.index/bookmarks" + + printf '[form #bookmarks action=?a=bookmarks method=POST + [a href="#" X] + [hidden "ref" "%s"] + ' "$w_refuri" + + name="$(grep -m1 -F " $(STRING "${REQUEST_URI}")" "$bm")" + printf '[hidden "link" "%s"][input name="name" value="%s"]' \ + "$(HTML "$link")" "$(HTML "$name")" + + sort "$bm" |while read -r name link; do + name="$(UNSTRING "$name")" + link="$(UNSTRING "$link")" + if [ "$link" != "$REQUEST_URI" ]; then + printf '[a href="%s"\n%s]' "$(HTML "$link")" "$(HTML "$name")" + fi + done + printf ']' +} + w_search(){ printf ' [form #search method=GET action=? @@@ -128,7 -105,7 +128,7 @@@ w_advsearch() $n "$category" "$t" "$lbid" "$lbid" "$category" $n printf '%s\n' "$w_tags" \ - | { [ "$category" = '*' ] && grep -vF ':' |grep -vxF '' || grep -wF "${category}"; } \ + | { [ "$category" = '*' ] && grep -avF ':' |grep -avxF '' || grep -awF "${category}"; } \ | while read -r tag; do t=''; [ ! "${f%%*|${tag}|*}" ] && t=checked printf '[option %s value="%s"\n%s]' "$t" "$tag" "${tag#*:}" @@@ -159,7 -136,7 +159,7 @@@ w_tagging() | while read -r category; do printf '[fieldset [legend %s:][select name=tag size=4 multiple' "$category" printf %s "$w_tags" \ - | { [ "$category" = 'Tags' ] && grep -vF ':' | grep -vxF '' || grep -wF "${category}"; } \ + | { [ "$category" = 'Tags' ] && grep -avF ':' | grep -avxF '' || grep -awF "${category}"; } \ | while read -r tag; do printf '[option value="%s"\n%s]' "$tag" "${tag#*:}" done