if [ "$type" = dir ]; then
name="${meta%% *}";
display="$(HTML "$name")"; link="$(URL "$ITEM/$name")"
- printf '[a .list .dir href="%s" %s]' "${link}?${w_reflink#*?}" "$name"
+ printf '[a .list .dir href="%s" %s]' "${link}?${w_refuri#*\?}" "$name"
return 0
fi
name="$(list_fullname "$(UNSTRING "${name%${CR}}")")"
fi
if [ -f "$_DATA/$ITEM/$name" ]; then
- display="$(HTML "$name")"
link="$(URL "$ITEM/$name")"
+ name="$(HTML "$ITEM/$name")"
printf '[div .list .file
[a href="%s" [img src="%s?a=thumbnail"]][label %s]
- [span .time %i:%imin] [span .dim %ix%i] %s
+ [span .time %i:%02imin] [span .dim %ix%i] %s
[checkbox "select" "%s" id="select_%s"][label for="select_%s" +]
]' \
- "$link" "$link" "$name" \
+ "$link" "$link" "${name##*/}" \
"$((length / 60))" "$((length % 60))" \
"$width" "$height" \
- "$(UNSTRING "${tags#tags=}" |tr , '\0' |xargs -r0 printf ' [span .tag %s]')" \
- "$link" "$link" "$link"
+ "$(printf '%s\n' "${tags#tags=}" \
+ | sed -r "$UNSTRING"' s;^;,;; s;,+;,;g; s;,$;;;
+ :X s;,([^,]+)(,|$); [span .tag\n \1]\2;; tX;'
+ )" "$name" "$link" "$link"
else
printf 'Canning record for nonexist file: %s\n' "$name" >&2
- # meta_purge "$_DATA/$ITEM/$name"
+ meta_purge "$_DATA/$ITEM/$name"
fi
}
printf '%i %s %s\n' \
"$(stat -c %Y "$fn")" "${fm% *}" "$fn"
done \
- | sort -n -k1 |cut -f2- |sed 's;^;metalong\t;;'
+ | sort -rn -k1 |cut -f2- |sed 's;^;metalong\t;;'
fi
}
list_filemeta(){
- local meta base cbase fm
+ local meta base cbase fm cachename
base="$1"
meta="$_DATA/$ITEM/$base/.index/meta"
- cbase="$(STRING "$base")"
meta_dir "$_DATA/$ITEM/$base"
- grep -axE '[0-9]+ [0-9]+ [0-9]+ tags=[^ ]* comment=[^ ]* .+' "$meta" \
- | while read -r fm; do
- printf '%s %s/%s\n' "${fm% *}" "$cbase" "${fm##* }"
- done
+ cachename="$(printf '%s\n' "$mode" "$FILTER" "$SEARCH" "$ORDER" |sha1sum)"
+ cachename="$_DATA/$ITEM/.index/${cachename% -}.cache"
+
+ if [ "$cachename" -nt "$meta" ] 2>&-; then
+ cat "$cachename"
+ else
+ cbase="$(STRING "$base")"
+ grep -axE '[0-9]+ [0-9]+ [0-9]+ tags=[^ ]* comment=[^ ]* .+' "$meta" \
+ | while read -r fm; do
+ printf '%s %s/%s\n' "${fm% *}" "$cbase" "${fm##* }"
+ done \
+ | list_filter \
+ | list_order \
+ | { [ -d "${meta%meta}" ] && tee "$cachename" || cat; }
+ fi
}
list_items() {
local mode meta
mode="$(COOKIE mode |grep -m1 -axE 'index|browse' || printf browse )"
-
+
if [ "$mode" = browse ]; then
- [ "$ITEM" ] && printf '..\n'
+ [ "$ITEM" ] && printf 'dir\t..\n'
(cd "$_DATA/$ITEM";
find ./ -type d \! -name .index -mindepth 1 -maxdepth 1 \
) | cut -d/ -f2- | sort |sed 's;^;dir\t;;'
}
list_paginate() {
- local page i c n end
+ 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=*&}"
printf '[div .itemlist '
while read -r i; do
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"
+ "?p=$(( (n - 1) * LISTSIZE + 1))&${qry}" "$n"
done
printf ']'
}
printf '
[form method=POST action="?a=multitag"'
list_items \
- | list_filter \
- | list_order \
| list_paginate
- printf '
- [div #editing
- [a href="#multitag" Add Tags]'
+ [ -d "$_DATA/$ITEM/.index" ] && { printf '
+ [div #editing'
w_tagging
- w_index
- printf '
- ]
- ]
+ printf '
+ ]'; }
+ printf '
+ ]'
+ [ ! -d "$_DATA/$ITEM/.index" ] && { printf '
+ [div #editing'
+ w_index
+ printf '
+ ]'; }
+ printf '
] ]
'; } | "$_EXEC/cgilite/html-sh.sed"