+ )"
+ 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)";
+ cat <<-EOF
+ [label .link . $(HTML "$name" |sed 's;,\;;&[wbr];g;')]
+ [a .link target=blank href="/?o=Name&s=${search}&f=${filter}" by Name]
+ [a .link target=blank href="/?o=Date&s=${search}&f=${filter}" by Date]
+ [a .link target=blank href="/?o=Length&s=${search}&f=${filter}" by Length]
+ [a .link target=blank href="/?o=Group&s=${search}&f=${filter}" by Group]
+ EOF