]> git.plutz.net Git - serve0/blobdiff - pages/common.sh
styling for pagination links
[serve0] / pages / common.sh
index 0d33ee4e5336f20d2d2f4e5142ec3d72de50bfe3..75320556d326e92366c5a86515f067b8d0978be9 100755 (executable)
@@ -24,8 +24,8 @@ page="${_GET[pn]}" #validated
 pagesize="${_COOKIE[pagesize]}" #validated
 pagecount=0
 
-page_link=''
-[ -n "$info" ]   && page_link="i=$(urlsafe "$info")&"
+#page_link=''
+[ -n "$info" ]   && page_link="${page_link}i=$(urlsafe "$info")&"
 [ -n "$order" ]  && page_link="${page_link}o=${order}&"
 [ -n "$search" ] && page_link="${page_link}s=${search}&"
 [ -n "$filter" ] && page_link="${page_link}f=${filter}&"
@@ -33,44 +33,71 @@ page_link=''
 page_next="${page_link}pn=$(($page + $pagesize))"
 page_this="${page_link}pn=$page"
 
-taglist=$(
-if [ -r ${_DATA}/cache/taglist ]; then
-  cat ${_DATA}/cache/taglist
-else
-  truncate -s0 ${_DATA}/cache/taglist
-  truncate -s0 ${_DATA}/cache/tagnorm
-  (for each in ${_DATA}/meta/*.meta; do
-    sed -n '2s:|:\n:gp' "$each"
-  done \
-  | sort 
-  printf \\n 
-  ) | (while read tag; do
-    if [ "$tag" = "$lasttag" ]; then
-      tagcount=$(( ${tagcount:-0} + 1 ))
-    else
-      [ -n "$lasttag" ] && printf %s\\t%s\\n "$tagcount" "$lasttag"
-      tagcount=1
-    fi
-    lasttag="$tag"
-  done \
-  | sort -rn 
-  printf \\n
-  ) | while read x tag; do
-    topcnt=$(grep "${tag%%:*}" ${_DATA}/cache/taglist |wc -l)
-    [ $topcnt -lt 10 ] \
-    && printf %s\\n "$tag" >>${_DATA}/cache/taglist \
-    || printf %s\\n "$tag" >>${_DATA}/cache/tagnorm
-  done
-  cat ${_DATA}/cache/taglist
-  sort ${_DATA}/cache/tagnorm \
-  | tee -a ${_DATA}/cache/taglist
-  rm ${_DATA}/cache/tagnorm
-fi
+taglist_set=$(
+  if [ -r ${_DATA}/cache/taglist_set ]; then
+    cat ${_DATA}/cache/taglist_set
+  else
+    truncate -s0 ${_DATA}/cache/taglist_set
+    truncate -s0 ${_DATA}/cache/tagnorm
+  
+    ( sed -sn '2s;|;\n;gp' "${_DATA}/meta/"*.meta \
+      | sort 
+      printf \\n
+    ) | while read tag; do
+      if [ "$tag" = "$lasttag" ]; then
+        tagcount=$(( ${tagcount:-0} + 1 ))
+      else
+        [ -n "$lasttag" ] && printf '%s\t%s\n' "$tagcount" "$lasttag"
+        tagcount=1
+      fi
+      lasttag="$tag"
+    done \
+    | sort -rn \
+    | while read x tag; do
+      topcnt=$(grep -c "${tag%%:*}" ${_DATA}/cache/taglist_set)
+      [ $topcnt -lt 10 ] \
+      && printf %s\\n "$tag" >>${_DATA}/cache/taglist_set \
+      || printf %s\\n "$tag" >>${_DATA}/cache/tagnorm
+    done
+
+    cat ${_DATA}/cache/taglist_set
+    sort ${_DATA}/cache/tagnorm \
+    | tee -a ${_DATA}/cache/taglist_set
+    rm ${_DATA}/cache/tagnorm
+  fi
+)
+
+taglist_filter=$(
+  if [ -r ${_DATA}/cache/taglist_filter ]; then
+    cat ${_DATA}/cache/taglist_filter
+  else
+    truncate -s0 ${_DATA}/cache/taglist_filter
+    truncate -s0 ${_DATA}/cache/tagnorm
+  
+    sed -sn '2s;|;\n;gp' "${_DATA}/meta/"*.meta \
+    | sort -u \
+    | while read tag; do
+      cnt="$(grep -cF "$tag" ${_DATA}/meta/recent)"
+      printf '%s\t%s\n' "$cnt" "$tag"
+    done \
+    | sort -rn \
+    | while read x tag; do
+      topcnt=$(grep -c "${tag%%:*}" ${_DATA}/cache/taglist_filter)
+      [ $topcnt -lt 10 ] \
+      && printf %s\\n "$tag" >>${_DATA}/cache/taglist_filter \
+      || printf %s\\n "$tag" >>${_DATA}/cache/tagnorm
+    done
+
+    cat ${_DATA}/cache/taglist_filter
+    sort ${_DATA}/cache/tagnorm \
+    | tee -a ${_DATA}/cache/taglist_filter
+    rm ${_DATA}/cache/tagnorm
+  fi
 )
 
 list_categories(){
   printf none\\n
-  printf %s "$taglist" |sed -rn 's;^([^:]+):.*$;\1;p' |sort -u
+  printf %s "$taglist_filter" |sed -rn 's;^([^:]+):.*$;\1;p' |sort -u
 }
 
 genthumb(){