tazpkg rev 720
pkgs.cgi: new full-featured fast "cat", and even less HTML.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Mon Dec 22 05:07:51 2014 +0200 (2014-12-22) |
parents | 474681a166a8 |
children | 8533790f32ff |
files | tazpanel/pkgs.cgi tazpanel/pkgs.css |
line diff
1.1 --- a/tazpanel/pkgs.cgi Fri Dec 19 17:25:08 2014 +0200 1.2 +++ b/tazpanel/pkgs.cgi Mon Dec 22 05:07:51 2014 +0200 1.3 @@ -383,7 +383,7 @@ 1.4 # List all available packages by category on mirror. Listing all 1.5 # packages is too resource intensive and not useful. 1.6 # 1.7 - cd $PKGS_DB 1.8 + cd $PKGS_DB 1.9 repo=$(GET repo) 1.10 category=$(GET cat) 1.11 [ "$category" == "cat" ] && category="base-system" 1.12 @@ -456,31 +456,58 @@ 1.13 fi 1.14 ;; 1.15 *) 1.16 - # test awk speed (sorry, no i18n_desc, no blocked now) 1.17 - # http://tazpanel:82/pkgs.cgi?cat=base-system&repo=Any&awk 1.18 - if [ $(GET awk) == "awk" ]; then 1.19 - sort $i/packages.info $i/installed.info | \ 1.20 - awk -F$'\t' -vc="$category" ' 1.21 - function outrow(pkg, cls, ver, dsc, web, pkge) { 1.22 - pkge=pkg; gsub(/\+/, "%2B", pkge) 1.23 - printf "<tr><td><input type=\"checkbox\" name=\"pkg\" value=\"%s\"><a class=\"%s\" href=\"?info=%s\">%s</a></td><td>%s</td><td>%s</td><td><a class=\"w\" href=\"%s\"></a></td></tr>", pkg, cls, pkge, pkg, ver, dsc, web } 1.24 - { 1.25 - if ($3==c) { 1.26 - if ($1==PKG) { 1.27 - outrow($1, "pkgi", $2, $4, $5) 1.28 - INS=$1 1.29 - } else { 1.30 - if (PKG!=INS) { 1.31 - outrow(PKG, "pkg", VER, DSC, WEB) 1.32 - } 1.33 - } 1.34 - PKG=$1; VER=$2; DSC=$4; WEB=$5 1.35 - }}' 1.36 - else 1.37 - # old slow method 1.38 - awk -F$'\t' -vc=$category '{if ($3 == c) print $0}' \ 1.39 - $i/packages.info | parse_packages_info 1.40 - fi 1.41 + { 1.42 + for L in $LANG ${LANG%%_*}; do 1.43 + if [ -e "$PKGS_DB/packages-desc.$L" ]; then 1.44 + sed '/^#/d' $PKGS_DB/packages-desc.$L 1.45 + break 1.46 + fi 1.47 + done 1.48 + 1.49 + [ -e "$i/blocked-packages.list" ] && cat $i/blocked-packages.list 1.50 + 1.51 + sed 's|.*|&\ti|' $i/installed.info 1.52 + 1.53 + cat $i/packages.info 1.54 + } | sort -t$'\t' -k1,1 | awk -F$'\t' -vc="$category" ' 1.55 +function outrow(pkg, ins, blk, ver, dsc, web, pkge) { 1.56 + pkge=pkg; gsub(/\+/, "%2B", pkge) 1.57 + printf "<tr><td><input type=\"checkbox\" name=\"pkg\" value=\"%s\"><a class=\"pkg%s%s\" href=\"?info=%s\">%s</a></td><td>%s</td><td>%s</td><td><a href=\"%s\"></a></td></tr>\n", pkg, ins, blk, pkge, pkg, ver, dsc, web } 1.58 + 1.59 +{ 1.60 + if (PKG != "" && PKG != $1) { 1.61 + if (CAT == c) { 1.62 + if (1 in i) { 1.63 + PKG = i[1]; VER = i[2]; DSC = i[4]; WEB = i[5]; 1.64 + } else if (1 in m) { 1.65 + PKG = m[1]; VER = m[2]; DSC = m[4]; WEB = m[5]; 1.66 + } 1.67 + if (DSCL != "") { DSC = DSCL } 1.68 + 1.69 + outrow(PKG, INS, BLK, VER, DSC, WEB) 1.70 + } 1.71 + 1.72 + VER = ""; DSC = ""; WEB = "" 1.73 + delete m; delete i 1.74 + DSCL = ""; INS = ""; BLK = ""; CAT = "" 1.75 + } 1.76 + 1.77 + PKG = $1 1.78 + if (NF == 1) { 1.79 + BLK = "b" 1.80 + } else if (NF == 2) { 1.81 + DSCL = $2 1.82 + } else { 1.83 + if ($3 == c) { 1.84 + CAT = c 1.85 + if ($9 == "i") { 1.86 + i[1] = $1; i[2] = $2; i[4] = $4; i[5] = $5; INS = "i" 1.87 + } else { 1.88 + m[1] = $1; m[2] = $2; m[4] = $4; m[5] = $5 1.89 + } 1.90 + } 1.91 + } 1.92 +}' 1.93 ;; 1.94 esac 1.95 cat << EOT
2.1 --- a/tazpanel/pkgs.css Fri Dec 19 17:25:08 2014 +0200 2.2 +++ b/tazpanel/pkgs.css Mon Dec 22 05:07:51 2014 +0200 2.3 @@ -17,10 +17,10 @@ 2.4 */ 2.5 a.pkgib { 2.6 color: red; } 2.7 -a.w { 2.8 +a.w, .pkglist td:nth-child(4) a { 2.9 background: url(images/browser.png) no-repeat left; } 2.10 2.11 -a.pkg, a.pkgi, a.pkgib, a.w { 2.12 +a.pkg, a.pkgi, a.pkgib, a.w, .pkglist td:nth-child(4) a { 2.13 margin: 0; padding: 0 0 0 17px; 2.14 min-height: 16px; min-width: 16px; 2.15 display: inline-block; }