+ )"
+ printf '%s' "$w_bmname"
+}
+
+w_bookmarks(){
+ local bm="$_DATA/.index/bookmarks" name='' search='' filter=''
+ [ ! -d "${bm%/*}" ] && return 0
+ [ ! -f "$bm" ] && touch "$bm"
+
+ grep -qaF " search=$w_str_s filter=${w_str_f}${CR}" "$bm" && name=Update || name=Add
+
+ cat <<-EOF
+ [form #bookmarks action=?a=bookmark method=POST
+ [a href="#" x]
+ [hidden "ref" "${w_refuri}"]
+ [hidden "search" "$(HTML "$SEARCH")"][hidden "filter" "$(HTML "$FILTER")"]
+ [label Name for current page:]
+ [input name="name" value="$(w_bmname)" placeholder="Name" ]
+ [button type="submit" . ${name}]
+ EOF
+ [ "$name" ] && printf ' [submit "delete" "delete" Delete]'
+
+ sort "$bm" |while read -r name search filter; do
+ search="${search#search=}" filter="${filter#filter=}" filter="${filter%${CR}}"
+ [ "$search" = "${w_str_s}" -a "$filter" = "${w_str_f}" ] && continue
+
+ name="$(UNSTRING "$name")";
+ search="$(UNSTRING "${search}" |URL)";
+ filter="$(UNSTRING "${filter}" |URL)";
+ printf '
+ [label .link . %s]
+ [a .link target=blank href="/?o=Name&s=%s&f=%s" by Name]
+ [a .link target=blank href="/?o=Date&s=%s&f=%s" by Date]
+ [a .link target=blank href="/?o=Length&s=%s&f=%s" by Length]
+ [a .link target=blank href="/?o=Group&s=%s&f=%s" by Group]
+ ' "$(HTML "$name" |sed 's;,\;;&[wbr];g;')" \
+ "$search" "$filter" "$search" "$filter" \
+ "$search" "$filter" "$search" "$filter"