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>