+ find ./ -path '*/.index/meta'
+ ) | while meta="$(line)"; do
+ list_filemeta "${meta%/.index/meta}"
+ done
+}
+
+list_dateorder(){
+ while read -r sn; do
+ list_fullname "$sn"
+ done \
+ | xargs -rd'\n' stat -c '%Y %n' \
+ | sort -rn |cut -d/ -f2- \
+ | sed -r 's;\.[^\.]*$;;;'
+}
+
+list_items() {
+ local mode
+ mode="$(COOKIE mode |grep -m1 -axE 'index|browse' || printf browse )"
+
+ [ "$mode" = browse -a "$ITEM" ] && printf '..\n'
+
+ if [ "$mode" = browse -a "$ORDER" = Date ]; then
+ list_directories
+ list_filemeta . |list_dateorder
+ elif [ "$mode" = index -a "$ORDER" = Date ]; then
+ list_index |list_dateorder
+ elif [ "$mode" = browse ]; then
+ list_directories
+ list_filemeta .
+ elif [ "$mode" = index ]; then
+ list_index
+ fi
+}
+
+list_paginate() {
+ local page i c n end
+ page="$(GET p |grep -axE '[0-9]+' || printf 1)"; c=1
+ end=$((page + LISTSIZE))
+
+ printf '[div .itemlist '
+ while read -r i; do
+ [ $c -ge $page -a $c -lt $end ] \
+ && list_item "$(list_fullname "$i")"
+ c=$((c + 1))
+ done
+ printf ']'
+
+ printf '[div .pagination'
+ for n in $( seq 1 $((c / LISTSIZE + 1)) ); do
+ printf '[a .page href="%s" %s]' \
+ "?p=$(( (n - 1) * LISTSIZE + 1))&$qry" "$n"
+ done
+ printf ']'