}
w_tagging(){
- local tag category d
+ local tctag oldcat category tag
cat <<-EOF
[a href="#multitag" Add Tags / Remove Tags]
[a href="#" X]
EOF
- printf 'Tags\n%s\n' "$w_tagcategories" \
- | while read -r category; do
- [ "$category" ] || continue
- printf '[fieldset [legend %s:][div .tagselect\n' "$category"
- printf %s "$w_tags" \
- | { [ "$category" = 'Tags' ] && grep -avF ':' || grep -awF "${category}"; } \
- | while read -r tag; do
- [ "$tag" ] || continue
- d="${tag#-}"; d="${d#*:}"
- printf '[label [checkbox "tag" "%s"] %s]\n' "$tag" "$d"
- done
- printf ']]'
+ oldcat="Tags"
+ printf '[fieldset [legend %s:][div .tagselect\n' "Tags"
+ printf '%s\n' "$w_tags" \
+ | while read tctag; do
+ [ "$tctag" ] || continue
+ category="${tctag#-}"; category="${category%%:*}"
+ tag="${tctag#-}"; tag="${tag#*:}"
+
+ [ "${tag}" = "${tctag#-}" ] \
+ && category="Tags"
+
+ if [ "$category" != "$oldcat" ]; then
+ printf ']]'
+ printf '[fieldset [legend %s:][div .tagselect\n' "$category"
+ fi
+ printf '[label [checkbox "tag" "%s"] %s]\n' "$tctag" "$tag"
+
+ oldcat="$category"
done
+ printf ']]'
cat <<-EOF
[fieldset [legend New:][textarea name=newtag\n]