X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=widgets.sh;h=a039d97b6b486613b8e19ae2dbb71a318f3c07dd;hb=6446ddd1418c9306d6bb7944b019150a4e5414a7;hp=ff6f2ddfacc158f91daa266c67bdb368bdb5527b;hpb=bce8891e9f27d8aad29436a2771a0027a6012fd7;p=serve0 diff --git a/widgets.sh b/widgets.sh index ff6f2dd..a039d97 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,25 +98,26 @@ 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=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" \ "$search" "$filter" \ + "$search" "$filter" \ "$search" "$filter" done printf ']' @@ -111,13 +125,13 @@ w_bookmarks(){ w_search(){ printf ' - [form #search method=GET action=? + [form #search method=GET action=./? [select name=o size=1 [option disabled=disabled Order By] [option value=Name %s Name] [option value=Date %s Date] [option value=Length %s Length] - [option value=Group %s Grouplength] + [option value=Group %s Group] ] [input name=s placeholder=Search value="%s"] ] @@ -167,7 +181,7 @@ w_advsearch(){ local n lbid tag category filter f t d filter="$(HTML "${FILTER}^" |sed "$w_ascii")" - printf '[form #advsearch action=?a=advsearch method=POST + printf '[form #advsearch action=./?a=advsearch method=POST [a href="#" Hide] [p .help Select multiple tags from each category by holding down the [strong Ctrl] key on your keyboard.[br] Refine the search further by setting additional search tags using the [strong "+and"] button.]' @@ -187,7 +201,7 @@ w_advsearch(){ $n "${t:-checked}" $n $n \ $n "${t:+checked}" $n $n - f="|${f#~}|" + f="|${f#\~}|" printf '*\n%s\n' "$w_tagcategories" \ | while read -r category; do lbid="cat_${n}_${category}" @@ -223,13 +237,22 @@ w_advsearch(){ [option value=Name %s Name] [option value=Date %s Date] [option value=Length %s Length] - [option value=Group %s Grouplength] + [option value=Group %s Group] ][button type=submit Apply Filter]] ]' \ "$w_coname" "$w_codate" \ "$w_colength" "$w_cogroup" } +w_delete(){ + printf '[a href="#multitag" Add Tags / Remove Tags] + [div #multitag [input type="hidden" name="ref" value="%s"] + [a href="#" Hide][br] + [fieldset [legend New:] + [submit "op" "filedelete" Delete Files] + ]]' "$w_refuri" +} + w_tagging(){ local tag category d printf '[a href="#multitag" Add Tags / Remove Tags]