# You should have received a copy of the GNU Affero General Public License
# along with Serve0 If not, see <http://www.gnu.org/licenses/>.
-cat <<EOF
- <form class="panel" id="advfilter"
- action="?action=filter" method="post" accept-charset="UTF-8">
- <input disabled type="text" name="s" value="$search" placeholder="Search">
- <label for="o2" class="order">Order by:</label>
- <select disabled class="order" size="1" name="o" id="o2">
- <option>Name</option>
- <option>Date</option>
- <option>Length</option>
+category_tabs(){
+ for cat in "$@"; do
+ cat <<EOF
+ <div class="tab">
+ <input class="tabhandle" type="radio" name="category$n" id="cat${n}_$cat" value="$cat" $([ "$cat" = "$fcat" ] && echo checked)>
+ <label class="category tabhandle" for="cat${n}_$cat">$([ "$cat" = none ] && printf %s general || printf %s "$cat")</label>
+ <select class="category tabcontent" class="input tagfilter" name="cfilter${n}_" size="12" multiple>
+ $(category_selected "$cat" "$filter")
</select>
- <input disabled type="submit" name="submit" value="Find">
-
- <a class="panel clearsearch" href="?">Clear All</a>
- <a class="panel advanced hide" href="#">Hide</a>
- <hr>
-
- <p class="help">Up to <strong>10</strong> filter boxes will appear as you start selecting tags. You can select <strong>multiple</strong> tags in each box by holding down the <strong>Ctrl</strong>-key. Click the "<strong>Filter!</strong>" button when you are ready.</p>
+ </div>
+EOF
+ done
+}
- $(for n in {0..9}; do
+filterbox(){
+ for n in "$@"; do
filter="$(printf '%s^' "$filters" |cut -d^ -f$(($n+1)))"
fneg="${filter%%[a-zA-Z]*}"
filter="${filter#!}"
fcat="${filter%%:*}"
[ "$fcat" = "$filter" ] && fcat=none
-
+
debug "fneg: $fneg fcat: $fcat filter: $filter"
cat <<-EOF
<input type="radio" name="type$n" value="pos" id="pos$n" ${fneg:-checked} ><label for="pos$n" class="conjunction">Any</label>
<input type="radio" name="type$n" value="neg" id="neg$n" ${fneg:+checked} ><label for="neg$n" class="conjunction">None</label>
<span class="help">of the items selected here:</span>
-
+
<label class="category">Category:</label>
- <div class="category tabcontainer">
- <div class="tab">
- <input class="tabhandle" type="radio" name="category$n" id="cat${n}_none" value="none" $([ "none" = "$fcat" ] && echo checked)>
- <label class="category tabhandle" for="cat${n}_none">general</label>
- <select class="category tabcontent" class="input tagfilter" name="cfilter${n}_" size="12" multiple>
- $(echo "$taglist" |grep -v : |while read item; do
- echo -E "$item" |egrep -q "^($filter)$" && \
- echo "<option selected >$item</option>" \
- || echo "<option>$item</option>"
- done)
- </select>
- </div>
- $( echo "$taglist" |sed -rn 's;^([^:]+):.*$;\1;p' |sort -u \
- |while read cat; do echo "
- <div class="tab">
- <input class="tabhandle" type="radio" name="category$n" id="cat${n}_$cat" value="$cat" $([ "$cat" = "$fcat" ] && echo checked)>
- <label class=\"category tabhandle\" for="cat${n}_$cat">$cat</label>
- <select class=\"category tabcontent\" class=\"input tagfilter\" name="cfilter${n}_" size="12" multiple>
- $(echo "$taglist" |sed -rn "s;^$cat:;;p" | while read item; do
- echo -E "${cat}:${item}" |egrep -q "^($filter)$" && \
- echo "<option selected >$item</option>" \
- || echo "<option>$item</option>"
- done)
- </select>
- </div>
- "
- done)
- </div>
+ <div class="category tabcontainer">
+ $(category_tabs $(list_categories) )
+ </div>
</div>
EOF
- done)
+ done
+}
+
+cat <<EOF
+ <form class="panel" id="advfilter"
+ action="?action=filter" method="post" accept-charset="UTF-8">
+
+ <a class="panel toggle" href="#">Hide</a>
+
+ <p class="help">Up to <strong>10</strong> filter boxes will appear as you start selecting tags. You can select <strong>multiple</strong> tags in each box by holding down the <strong>Ctrl</strong>-key. Click the "<strong>Filter!</strong>" button when you are ready.</p>
+ $(filterbox {0..9})
<p class="filter final">
<label for="o3" class="order">Order by:</label>
<select class="edit order" size="1" name="o" id="o3">
- <option $([ "$_GET[\"o\"]" = Name ] && echo selected) >Name</option>
- <option $([ "$_GET[\"o\"]" = Date ] && echo selected) >Date</option>
- <option $([ "$_GET[\"o\"]" = Length ] && echo selected) >Length</option>
+ <option $([ "${_GET[o]}" = Name ] && echo selected) >Name</option>
+ <option $([ "${_GET[o]}" = Date ] && echo selected) >Date</option>
+ <option $([ "${_GET[o]}" = Length ] && echo selected) >Length</option>
</select>
<input type="submit" value="Filter!">
</p>
<p class="quicklinks">
<label class="quicklinks">Most recent</label>
- $(output=''
- tac ${_DATA}/meta/recent |while [ "$(echo "$output" |wc -l)" -lt 10 ] && read line; do
- line="<a href="$line">$line</a>"
- echo "$output" |grep -qF "$line" || output="$output$line\n"
- done
- echo $output
- )
+ $(quicklinks)
</p>
</form>
EOF