X-Git-Url: http://git.plutz.net/?p=serve0;a=blobdiff_plain;f=widgets.sh;h=25ec01e9c05bcfdd78b2a0d965dfafdc7c3bbf20;hp=a4ec856e296cb6a8069bf1e3cf94f3de36710f8e;hb=b9192aa3f4cb8f563cdf233f81176e00d4a0e6fb;hpb=67ad091277e6173dca4f446de4d1cc4fd0285610 diff --git a/widgets.sh b/widgets.sh index a4ec856..25ec01e 100644 --- a/widgets.sh +++ b/widgets.sh @@ -7,6 +7,9 @@ include_widgets="$0" w_refuri="$(URL "$PATH_INFO")?$(HTML "$QUERY_STRING")" +w_str_s="$(STRING "$SEARCH")" +w_str_f="$(STRING "$FILTER")" + w_ascii=' s-0-0-g; s-1-1-g; s-2-2-g; s-3-3-g; s-4-4-g; s-5-5-g; s-6-6-g; s-7-7-g; s-8-8-g; s-9-9-g; @@ -58,23 +61,33 @@ fi [ "$ORDER" = Length ] && w_colength=checked [ "$ORDER" = Group ] && w_cogroup=checked +w_bmname= +w_bmname(){ + [ "$w_bmname" ] || w_bmname="$( + bm="$_DATA/.index/bookmarks" + name="$(grep -m1 -aF " search=${w_str_s} filter=${w_str_f}${CR}" "$bm" 2>&-)" + + if [ "$name" ]; then + printf '%s' "$name" |cut -f1 |UNSTRING |HTML + else + printf '%s\t%s' "$SEARCH" "$FILTER" \ + | sed -r '/^\t$/{ s;\t;All;; q;} + /.*\t$/{ s;\t$;;; q;} + /^\t.*/{ s;^\t;;; + :x; s;(^|[~^|])([^|^~:]+):;\1;; tx; + s;\^; and ;g; s;\|;,;g; s;~;not ;g; q;}' \ + | HTML + fi + )" + printf '%s' "$w_bmname" +} + w_bookmarks(){ - local name='' cf='' cs='' bm="$_DATA/.index/bookmarks" proposed_name='' + local bm="$_DATA/.index/bookmarks" name='' search='' filter='' [ ! -d "${bm%/*}" ] && return 0 [ ! -f "$bm" ] && touch "$bm" - [ "$SEARCH" ] && cs="$(STRING "$SEARCH")" - [ "$FILTER" ] && cf="$(STRING "$FILTER")" - - name="$(grep -m1 -aF " search=$cs filter=$cf${CR}" "$bm" |cut -f1 |UNSTRING)" - [ ! "$name" ] && proposed_name="$( - printf '%s\t%s' "$SEARCH" "$FILTER" \ - |sed -r '/^\t$/{ s;\t;All;; q;} - /.*\t$/{ s;\t$;;; q;} - /^\t.*/{ s;^\t;;; - :x; s;(^|[~^|])([^|^~:]+):;\1;; tx; - s;\^; and ;g; s;\|;,;g; s;~;not ;g; q;}' - )" + grep -qaF " search=$w_str_s filter=${w_str_f}${CR}" "$bm" && name=Update || name=Add printf '[form #bookmarks action=?a=bookmark method=POST [a href="#" x] @@ -85,22 +98,21 @@ w_bookmarks(){ [button type="submit" %s]' \ "$w_refuri" \ "$(HTML "$SEARCH")" "$(HTML "$FILTER")" \ - "$(HTML "${name:-${proposed_name}}")" \ - "${name:+Update}${proposed_name:+Add}" + "$(w_bmname)" "${name}" [ "$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" = "${cs}" -a "$filter" = "${cf}" ] && continue + [ "$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] + [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] [br]' \ "$(HTML "$name" |sed 's;,\;;&[wbr];g;')" \ "$search" "$filter" \