tazpkg rev 726
pkgs.cgi: add pager to "cat"
"cat" runs fast enough, so not to cache it, but can add setting in the config file (as well as config for page length)
"cat" runs fast enough, so not to cache it, but can add setting in the config file (as well as config for page length)
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Wed Dec 24 17:29:07 2014 +0200 (2014-12-24) |
parents | 0bfdb6c09732 |
children | f32370a20712 |
files | tazpanel/pkgs.cgi tazpanel/pkgs.css |
line diff
1.1 --- a/tazpanel/pkgs.cgi Wed Dec 24 03:53:37 2014 +0200 1.2 +++ b/tazpanel/pkgs.cgi Wed Dec 24 17:29:07 2014 +0200 1.3 @@ -157,6 +157,9 @@ 1.4 list) img='tazpkg'; label="$(_ 'My packages')" ;; 1.5 linkable) img='tazpkg'; label="$(_ 'Linkable packages')" ;; 1.6 admin) img='edit'; label="$(_ 'Administration')" ;; 1.7 + *Install*nf*) img=''; label="$(_ 'Install (Non Free)')" ;; 1.8 + *Install*) img=''; label="$(_ 'Install')" ;; 1.9 + *Remove*) img='stop'; label="$(_ 'Remove')" ;; 1.10 *Block*) img=''; label="$(_ 'Block')" ;; 1.11 *Unblock*) img=''; label="$(_ 'Unblock')" ;; 1.12 *Repack*) img=''; label="$(_ 'Repack')" ;; 1.13 @@ -283,6 +286,7 @@ 1.14 esac 1.15 } 1.16 1.17 + 1.18 make_mixed_list() { 1.19 for L in $LANG ${LANG%%_*}; do 1.20 if [ -e "$PKGS_DB/packages-desc.$L" ]; then 1.21 @@ -299,6 +303,30 @@ 1.22 } 1.23 1.24 1.25 +# Print links to the pages 1.26 + 1.27 +pager() { 1.28 + awk -F'"' -vpage="$page" -vcached="$1" -vnum_lines="$(wc -l < $1)" -vtext="$(_ 'Pages:') " -vurl="cat=$category&repo=$repo&page=" ' 1.29 +BEGIN{ 1.30 + num_pages = int(num_lines / 100) + (num_lines % 100 != 0) 1.31 + if (num_pages != 1) printf "<p>%s", text 1.32 +} 1.33 +{ 1.34 + if (num_pages == 1) exit 1.35 + p = int(NR/100) + 1 1.36 + if (p != page) current = ""; else current=" current" 1.37 + 1.38 + if (NR%100 == 1) printf "<a class=\"pages%s\" href=\"?%s%s\" title=\"%s\n···\n", current, url, p, $6 1.39 + if (NR%100 == 0) printf "%s\">%s</a> ", $6, p - 1 1.40 +} 1.41 +END{ 1.42 + if (num_pages == 1) exit 1.43 + if (NR%100 != 0) printf "%s\">%s</a>", $6, p 1.44 + print "</p>" 1.45 +}' $1 1.46 +} 1.47 + 1.48 + 1.49 1.50 # 1.51 # Commands 1.52 @@ -449,12 +477,12 @@ 1.53 <h3>$(_ 'Repository: %s' $Repo_Name)</h3> 1.54 EOT 1.55 fi 1.56 - echo '<table class="zebra outbox pkglist">' 1.57 - table_head 1.58 - echo '<tbody>' 1.59 1.60 case $category in 1.61 extra) 1.62 + echo '<table class="zebra outbox pkglist">' 1.63 + table_head 1.64 + echo '<tbody>' 1.65 NA="$(_n 'n/a')" 1.66 for pkg in $(cat $i/extra.list); do 1.67 PKG="$(grep ^$pkg$'\t' $i/installed.info)" 1.68 @@ -464,8 +492,10 @@ 1.69 echo "$pkg $NA - $NA http://mirror.slitaz.org/packages/get/$pkg - - -" 1.70 fi 1.71 done | parse_packages_info 1.72 + echo "</tbody></table>" 1.73 ;; 1.74 *) 1.75 + cached="$CACHE_DIR/$repo-$category" 1.76 make_mixed_list | sort -t$'\t' -k1,1 | awk -F$'\t' -vc="$category" ' 1.77 { 1.78 if (PKG && PKG != $1) { 1.79 @@ -484,13 +514,20 @@ 1.80 if ($9 == "i") { PKG = $1; VER = $2; DSC = $4; WEB = $5; INS = "i"; next} 1.81 if (! INS) { PKG = $1; VER = $2; DSC = $4; WEB = $5 } 1.82 } 1.83 -}' 1.84 +}' > $cached 1.85 + page=$(GET page); [ -z "$page" ] && page=1 1.86 + pager="$(pager $cached)" 1.87 + 1.88 + echo "$pager" 1.89 + echo '<table class="zebra outbox pkglist">' 1.90 + table_head 1.91 + echo '<tbody>' 1.92 + tail -n+$((($page-1)*100+1)) $cached | head -n100 1.93 + echo "</tbody></table>" 1.94 + echo "$pager" 1.95 + rm -f $cached 1.96 ;; 1.97 esac 1.98 - cat << EOT 1.99 -</tbody> 1.100 -</table> 1.101 -EOT 1.102 done 1.103 echo '</form>' ;; 1.104 1.105 @@ -699,7 +736,6 @@ 1.106 . $INSTALLED/$pkg/receipt 1.107 files=$(wc -l < $INSTALLED/$pkg/files.list) 1.108 action="Remove" 1.109 - action_i18n=$(_ 'Remove') 1.110 else 1.111 cd $PKGS_DB 1.112 LOADING_MSG=$(_ 'Getting package info...') 1.113 @@ -713,7 +749,6 @@ 1.114 CATEGORY="$(echo $4)" 1.115 WEB_SITE="$(echo $5)" 1.116 action="Install" 1.117 - action_i18n=$(_ 'Install') 1.118 temp="${pkg#get-}" 1.119 fi 1.120 cat << EOT 1.121 @@ -725,9 +760,9 @@ 1.122 EOT 1.123 if [ "$temp" != "$pkg" -a "$action" == "Install" ]; then 1.124 temp="$(echo $pkg | sed 's/get-//g')" 1.125 - echo "<a class='button' href='$SCRIPT_NAME?do=Install&$temp'>$(_ 'Install (Non Free)')</a>" 1.126 + show_button "do=Install&$temp&nf" 1.127 else 1.128 - echo "<a class='button' href='$SCRIPT_NAME?do=$action&$pkg'>$action_i18n</a>" 1.129 + show_button "do=$action&$pkg" 1.130 fi 1.131 1.132 if [ -d $INSTALLED/$pkg ]; then
2.1 --- a/tazpanel/pkgs.css Wed Dec 24 03:53:37 2014 +0200 2.2 +++ b/tazpanel/pkgs.css Wed Dec 24 17:29:07 2014 +0200 2.3 @@ -49,3 +49,24 @@ 2.4 max-width: 30em; 2.5 } 2.6 2.7 +#actions { overflow: auto; } 2.8 + 2.9 +a.pages { 2.10 + padding: 0.5ex; 2.11 + margin: 0.5ex 0; 2.12 + border: 1px solid #AAA; 2.13 + width: 3ex; 2.14 + display: inline-block; 2.15 + text-align: center; 2.16 + } 2.17 +a.pages:hover { 2.18 + border: 1px solid #F94; 2.19 + background: #F94; 2.20 + color: black; 2.21 + } 2.22 +a.pages.current, a.pages.current:hover { 2.23 + font-weight: bold; 2.24 + border: 1px solid #07F; 2.25 + background: #07F; 2.26 + color: #eee; 2.27 + }