X-Git-Url: http://git.plutz.net/?p=serve0;a=blobdiff_plain;f=list.sh;h=b941aa7f246d32a3a9e5ff09c0ee509e9ebd2b30;hp=6245261026db7b75a44d5c3722c363b7b4bfd2f4;hb=HEAD;hpb=dad9cd471358d165f1de2ce8d5806703ac85f5bb diff --git a/list.sh b/list.sh index 6245261..94a9264 100755 --- a/list.sh +++ b/list.sh @@ -6,12 +6,6 @@ list_item() { local meta file link name - eval "$LOCAL_META" - meta="${1}"; - - read_meta <<-EOF - $meta - EOF if [ "${META_NAME%/}" != "${META_NAME}" ]; then printf '[a .list .dir href="%s?%s" . %s]' \ @@ -61,7 +55,7 @@ list_item() { )" list_fullname(){ - local short="$(UNSTRING "${1%${CR}}")" file + local short="$1" file file="$(printf %s\\n "$_DATA/$ITEM/$short".*)" file="${file%%${BR}*}" [ -e "$file" ] && printf %s\\n "${file#${_DATA}/${ITEM}/}" @@ -162,12 +156,20 @@ list_paginate() { local page i c n end qry page="$(GET p |grep -axE '[0-9]+' || printf 1)"; c=1 end=$((page + LISTSIZE)) - qry="${w_refuri#*\?}"; qry="${qry#p=*&}" + eval "$LOCAL_META" # localize vars from db_meta printf '[div .itemlist ' - while read -r i; do + while :; do + if [ $c -lt $page ]; then + read -r discard || break + elif [ $c -ge $end ]; then + c=$((c + $(wc -l) )) + break + else + read_meta || break + list_item + fi c=$((c + 1)) - [ $c -gt $page -a $c -le $end ] && list_item "$i" done printf ']' @@ -179,8 +181,8 @@ list_paginate() { for n in $( seq 1 $end ); do c=$(( (n - 1) * LISTSIZE + 1 )) [ $c = $page ] \ - && printf '[a .page .current href="%s" %s]' "?p=${c}&${qry}" "$n" \ - || printf '[a .page href="%s" %s]' "?p=${c}&${qry}" "$n" + && printf '[a .page .current href="?p=%i&%s" %i]' "${c}" "${QUERY_STRING#p=*&}" "$n" \ + || printf '[a .page href="?p=%i&%s" %i]' "${c}" "${QUERY_STRING#p=*&}" "$n" done printf ']' }