tazpkg rev 867
pkgs.cgi: show virtual package info
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Nov 22 11:15:48 2015 +0100 (2015-11-22) |
parents | af67b2269d1f |
children | 4a01b2d7bfd9 |
files | tazpanel/pkgs.cgi |
line diff
1.1 --- a/tazpanel/pkgs.cgi Thu Nov 19 04:07:05 2015 +0200 1.2 +++ b/tazpanel/pkgs.cgi Sun Nov 22 11:15:48 2015 +0100 1.3 @@ -227,16 +227,23 @@ 1.4 } 1.5 1.6 1.7 +select_package_icon() { 1.8 + if [ -d "$INSTALLED/$1" ]; then 1.9 + if grep -q "^$1$" "$BLOCKED" 1.10 + then echo "pkgib" 1.11 + else echo "pkgi" 1.12 + fi 1.13 + else echo "pkg" 1.14 + fi 1.15 +} 1.16 + 1.17 + 1.18 # We need packages information for list and search 1.19 1.20 parse_packages_info() { 1.21 IFS=$'\t' 1.22 while read PACKAGE VERSION CATEGORY SHORT_DESC WEB_SITE TAGS SIZES DEPENDS; do 1.23 - data_icon="pkg" 1.24 - if grep -q "^$PACKAGE"$'\t' "$PKGS_DB/installed.info"; then 1.25 - data_icon="pkgi" 1.26 - grep -q "^$PACKAGE$" "$BLOCKED" && data_icon="pkgib" 1.27 - fi 1.28 + data_icon="$(select_package_icon "$PACKAGE")" 1.29 i18n_desc "$PACKAGE" 1.30 cat <<EOT 1.31 <tr> 1.32 @@ -477,6 +484,14 @@ 1.33 } 1.34 1.35 1.36 +# Show a single package link 1.37 + 1.38 +show_package_link() { 1.39 + echo -n "<span><a data-icon=\"$(select_package_icon "$1")\" " 1.40 + echo "href=\"?info=${1//+/%2B}\">$1</a></span> " 1.41 +} 1.42 + 1.43 + 1.44 # Show links for "info" page 1.45 1.46 show_info_links() { 1.47 @@ -803,11 +818,7 @@ 1.48 lzcat $(repo_list /files.list.lzma) | grep -Ei ": .*$(GET search)" | \ 1.49 while read PACKAGE FILE; do 1.50 PACKAGE=${PACKAGE%:} 1.51 - data_icon="pkg" 1.52 - if [ -d $INSTALLED/$PACKAGE ]; then 1.53 - data_icon="pkgi" 1.54 - grep -q "^$PACKAGE$" "$BLOCKED" && data_icon="pkgib" 1.55 - fi 1.56 + data_icon="$(select_package_icon "$PACKAGE")" 1.57 cat <<EOT 1.58 <tr> 1.59 <td><input type="checkbox" name="pkg" value="$PACKAGE">$(pkg_info_link "$PACKAGE" "$data_icon")</td> 1.60 @@ -943,19 +954,30 @@ 1.61 elif [ -e "$PKGS_DB/packages.info" -a \ 1.62 -n "$(awk -F$'\t' -vp="$pkg" '$1==p{print $1}' "$PKGS_DB/packages.info")" ]; then 1.63 STATE="$(_ 'mirrored package')" 1.64 + elif grep -qs "^$pkg=" $PKGS_DB/packages.equiv; then 1.65 + cat <<EOT 1.66 +<section> 1.67 + <header> 1.68 + <span data-icon="pkg">$(_ 'Packages providing %s' "$pkg")</span> 1.69 + </header> 1.70 +EOT 1.71 + for pkg in $(sed "/^$pkg=/!d;s/^$pkg=//" $PKGS_DB/packages.equiv); do 1.72 + name=${pkg#*:} 1.73 + echo "<p>" 1.74 + show_package_link "$name" 1.75 + condition=${pkg%:*} 1.76 + [ "$name" == "$condition" ] || 1.77 + echo "($(_ "if") $(show_package_link "$condition")$(_ "is installed")) " 1.78 + echo "</p>" 1.79 + done 1.80 + xhtml_footer; exit 0 1.81 else 1.82 msg err "$(_ 'Package "%s" not available.' "$pkg")" 1.83 xhtml_footer; exit 0 1.84 fi 1.85 1.86 # Symbolic icon 1.87 - if [ -d "$INSTALLED/$pkg" ]; then 1.88 - if grep -q "^$pkg$" "$BLOCKED" 1.89 - then data_icon="pkgib" 1.90 - else data_icon="pkgi" 1.91 - fi 1.92 - else data_icon="pkg" 1.93 - fi 1.94 + data_icon="$(select_package_icon "$pkg")" 1.95 1.96 cat <<EOT 1.97 <section>