]> git.plutz.net Git - serve0/commitdiff
enabled sorting in browse page
authorpaul <paul@plutz.net>
Sat, 14 Jan 2017 13:10:19 +0000 (13:10 +0000)
committerpaul <paul@plutz.net>
Sat, 14 Jan 2017 13:10:19 +0000 (13:10 +0000)
svn path=/trunk/; revision=171

pages/browse.sh
templates/browse.html.sh

index e46023a70caf231fa22c6e6b990c272801fadebf..adde4d8f2c2f06ad579e493e08a5316a9f3eaf94 100755 (executable)
 
 . $_EXEC/pages/common.sh
 
-LF='
-'
 directory="$(invalidate "${_GET[d]}" '(.*/)?\.\.(/.*)?|' /)"
-[ -d "${treeroot}/${directory#/}/.index" ] && indexed=true || indexed=false
+[ -d "${treeroot%/}${directory%/}/.index" ] && indexed=true || indexed=false
 filters="${_GET[f]}"
 debug "FILTERS: $filters"
 
@@ -57,9 +55,9 @@ category_selected(){
 _printVideo(){
   name="$1"
 
-  video="${treeroot%/}/${directory%/}/${name}"
-  thumb="${treeroot%/}/${directory%/}/.index/${name}.jpg"
-   meta="${treeroot%/}/${directory%/}/.index/${name}.meta"
+  video="${treeroot%/}${directory%/}/${name}"
+  thumb="${treeroot%/}${directory%/}/.index/${name}.jpg"
+   meta="${treeroot%/}${directory%/}/.index/${name}.meta"
 
   [ -f "$thumb" ] || genthumb "$video" "$thumb"
   [ -f "$meta"  ] || genmeta "$video" "$meta"
@@ -92,14 +90,6 @@ _printVideo(){
 VIDEOend
 }
 
-genlist(){
-  case "$order" in
-    Date)   find "${_DATA}"/videos/ -maxdepth 1 -mindepth 1 -printf '%T@ %f\n' |sort -r |cut -d\  -f2- |egrep -i "$file_pattern";;
-    Length) sed -sn 1p "${_DATA}"/meta/*.meta |sort -n |sed -r 's;^[0-9\t]+\t;;';;
-    Name)   find "${_DATA}"/videos/ -maxdepth 1 -mindepth 1 -printf     '%f\n' |sort |egrep -i "$file_pattern";;
-  esac
-}
-
 selectionlist() {
   cachebase="?o=${order}&s=${search//\//}&f=${filter//\//}"
   cache="${_DATA}/cache/${cachebase}"
@@ -133,16 +123,56 @@ selectionlist() {
 }
 
 filelist(){
-  dir="${treeroot%/}/${directory#/}"
-
-  find -L "$dir" -mindepth 1 -maxdepth 1 -type d \! -name ".index" -printf "directory %P\n" \
-  | sort
-  find -L "$dir" -mindepth 1 -maxdepth 1 \! -type d -printf "video %P\n" \
-  | grep -iE "$file_pattern" \
-  | sort
-  find -L "$dir" -mindepth 1 -maxdepth 1 \! -type d -printf "plain %P\n" \
-  | grep -viE "$file_pattern" \
-  | sort
+  dir="${treeroot%/}${directory%/}"
+
+  case "$order" in
+    Name)
+      find -L "$dir" -mindepth 1 -maxdepth 1 -type d \! -name ".index" -print0 \
+      | sort -z \
+      | xargs -0 printf 'directory %s\n'
+
+      find -L "$dir" -mindepth 1 -maxdepth 1 \! -type d -print0 \
+      | grep -ziE "$file_pattern" \
+      | sort -z \
+      | xargs -0 printf 'video %s\n'
+
+      find -L "$dir" -mindepth 1 -maxdepth 1 \! -type d -print0 \
+      | grep -zviE "$file_pattern" \
+      | sort -z \
+      | xargs -0 printf 'plain %s\n'
+      ;;
+    Date)
+      find -L "$dir" -mindepth 1 -maxdepth 1 -type d \! -name ".index" -print0 \
+      | xargs -0 stat -c '%Z directory %n' \
+      | sort -r |cut -c12-
+
+      find -L "$dir" -mindepth 1 -maxdepth 1 \! -type d -print0 \
+      | grep -ziE "$file_pattern" \
+      | xargs -0 stat -c '%Y video %n' \
+      | sort -r |cut -c12-
+
+      find -L "$dir" -mindepth 1 -maxdepth 1 \! -type d -print0 \
+      | grep -zviE "$file_pattern" \
+      | xargs -0 stat -c '%Y plain %n' \
+      | sort -r |cut -c12-
+      ;;
+    Length)
+      find -L "$dir" -mindepth 1 -maxdepth 1 -type d \! -name ".index" -print0 \
+      | sort -z \
+      | xargs -0 printf 'directory %s\n'
+
+      head -qn1 "${dir}"/.index/*.meta \
+      | sort \
+      | cut -f4- \
+      | tr \\n \\0 \
+      | xargs -0 printf 'video %s\n'
+
+      find -L "$dir" -mindepth 1 -maxdepth 1 \! -type d -print0 \
+      | grep -zviE "$file_pattern" \
+      | sort -z \
+      | xargs -0 printf 'plain %s\n'
+      ;;
+    esac
 }
 
 thumblist(){
@@ -156,15 +186,15 @@ thumblist(){
     case $type in
       directory)
         printf '<a class="file directory" href="?p=browse&d=%s">%s</a>\n' \
-               "$(urlsafe "${directory%/}/$name")" "$(htmlsafe "$name")"
+               "$(urlsafe "${directory%/}/${name##*/}")" "$(htmlsafe "${name##*/}")"
         ;;
       video)
-        $indexed && _printVideo "$name" \
+        $indexed && _printVideo "${name##*/}" \
         || printf '<a class="file video" href="?action=watch&l=%s">%s</a>\n' \
-                  "$(urlsafe "${directory%/}/$name")" "$(htmlsafe "$name")"
+                  "$(urlsafe "${directory%/}/${name##*/}")" "$(htmlsafe "${name##*/}")"
         ;;
       plain)
-        printf '<span class="file plain">%s</span>\n' "$(htmlsafe "$name")"
+        printf '<span class="file plain">%s</span>\n' "$(htmlsafe "${name##*/}")"
         ;;
     esac
   done
index a061ed12b54c85890681d9f198abb5639c113f25..ff1944eecac25f6533489352529ed61335a68d6f 100755 (executable)
@@ -19,7 +19,8 @@ cat <<EOF
 
   <input type=radio name=topmenu id=btn_search checked><label for=btn_search>Search</label>
   <form class="panel" id="search" action="?" method="get" accept-charset="UTF-8">
-    <input type="text" name="s" value="$search" placeholder="Search">
+    <input type="hidden" name="d" value="$(attribsafe "$directory")">
+    <input type="text" name="s" value="$(attribsafe "$search")" placeholder="Search">
 
     <select class="order" size="1" name="o" id="o1">
       <option class="label" selected disabled>Order by</option>