tazpkg rev 718

pkgs.cgi: new package' links (less HTML, more CSS); add pkgs.css; transition to packages.info.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Thu Dec 18 03:43:49 2014 +0200 (2014-12-18)
parents 1dea2235808c
children 474681a166a8
files Makefile tazpanel/pkgs.cgi tazpanel/pkgs.css
line diff
     1.1 --- a/Makefile	Wed Dec 17 01:59:31 2014 +0200
     1.2 +++ b/Makefile	Thu Dec 18 03:43:49 2014 +0200
     1.3 @@ -71,6 +71,8 @@
     1.4  	install -m 0755 -d      $(DESTDIR)/var/www/tazpanel/menu.d
     1.5  	cp -a tazpanel/pkgs.cgi $(DESTDIR)/var/www/tazpanel
     1.6  	cp -a tazpanel/pkgs     $(DESTDIR)/var/www/tazpanel/menu.d
     1.7 +	install -m 0755 -d      $(DESTDIR)/var/www/tazpanel/styles/default
     1.8 +	cp -a tazpanel/pkgs.css $(DESTDIR)/var/www/tazpanel/styles/default
     1.9  
    1.10  	# The i18n files
    1.11  	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/locale
     2.1 --- a/tazpanel/pkgs.cgi	Wed Dec 17 01:59:31 2014 +0200
     2.2 +++ b/tazpanel/pkgs.cgi	Thu Dec 18 03:43:49 2014 +0200
     2.3 @@ -24,15 +24,16 @@
     2.4  
     2.5  pkg_info_link()
     2.6  {
     2.7 -	echo "$SCRIPT_NAME?info=$1" | sed 's/+/%2B/g'
     2.8 +	echo "<a class=\"$2\" href=\"?info=${1//+/%2B}\">$1</a>" | sed 's| class=""||'
     2.9  }
    2.10  
    2.11  
    2.12 +# Display localized short description
    2.13 +
    2.14  i18n_desc() {
    2.15 -	# Display localized short description
    2.16  	for L in $LANG ${LANG%%_*}; do
    2.17  		if [ -e "$PKGS_DB/packages-desc.$L" ]; then
    2.18 -			LOCDESC=$(awk -F$'\t' -vp=$pkg '{if ($1 == p) print $2}' $PKGS_DB/packages-desc.$L)
    2.19 +			LOCDESC=$(awk -F$'\t' -vp=$1 '{if ($1 == p) print $2}' $PKGS_DB/packages-desc.$L)
    2.20  			if [ -n "$LOCDESC" ]; then
    2.21  				SHORT_DESC="$LOCDESC"
    2.22  				break
    2.23 @@ -48,17 +49,32 @@
    2.24  	IFS="|"
    2.25  	cut -f 1,2,3,5 -d "|" | while read PACKAGE VERSION SHORT_DESC WEB_SITE
    2.26  	do
    2.27 -		image=tazpkg-installed.png
    2.28 -		[ -d $INSTALLED/${PACKAGE% } ] || image=tazpkg.png
    2.29 -		i18n_desc
    2.30 +		class=pkg; [ -d $INSTALLED/${PACKAGE% } ] && class=pkgi
    2.31 +		i18n_desc $PACKAGE
    2.32  		cat << EOT
    2.33  <tr>
    2.34 -<td><input type="checkbox" name="pkg" value="$PACKAGE">
    2.35 -	<a href="$(pkg_info_link $PACKAGE)"><img
    2.36 -		src="$IMAGES/$image"/>$PACKAGE</a></td>
    2.37 +<td class="pkg"><input type="checkbox" name="pkg" value="$PACKAGE">$(pkg_info_link $PACKAGE $class)</td>
    2.38  <td>$VERSION</td>
    2.39  <td class="desc">$SHORT_DESC</td>
    2.40 -<td><a href="$WEB_SITE"><img src="$IMAGES/browser.png"/></a></td>
    2.41 +<td><a class="w" href="$WEB_SITE"></a></td>
    2.42 +</tr>
    2.43 +EOT
    2.44 +	done
    2.45 +	unset IFS
    2.46 +}
    2.47 +
    2.48 +
    2.49 +parse_packages_info() {
    2.50 +	IFS=$'\t'
    2.51 +	while read PACKAGE VERSION CATEGORY SHORT_DESC WEB_SITE TAGS SIZES DEPENDS; do
    2.52 +		class=pkg; [ -d $INSTALLED/${PACKAGE% } ] && class=pkgi
    2.53 +		i18n_desc $PACKAGE
    2.54 +		cat << EOT
    2.55 +<tr>
    2.56 +<td class="pkg"><input type="checkbox" name="pkg" value="$PACKAGE">$(pkg_info_link $PACKAGE $class)</td>
    2.57 +<td>$VERSION</td>
    2.58 +<td class="desc">$SHORT_DESC</td>
    2.59 +<td><a class="w" href="$WEB_SITE"></a></td>
    2.60  </tr>
    2.61  EOT
    2.62  	done
    2.63 @@ -279,8 +295,7 @@
    2.64  			<img src="$IMAGES/update.png" />$(_ 'Check upgrades')</a>
    2.65  	</div>
    2.66  </div>
    2.67 -EOT
    2.68 -		cat << EOT
    2.69 +
    2.70  <table class="zebra outbox">
    2.71  $(table_head)
    2.72  <tbody>
    2.73 @@ -290,18 +305,14 @@
    2.74  			echo '<tr>'
    2.75  			# Use default tazpkg icon since all packages displayed are
    2.76  			# installed
    2.77 -			colorpkg=$pkg
    2.78 -			grep -qs "^$pkg$" $PKGS_DB/blocked-packages.list &&
    2.79 -				colorpkg="<span style='color: red;'>$pkg</span>"
    2.80 -			i18n_desc
    2.81 +			blocked=
    2.82 +			grep -qs "^$pkg$" $PKGS_DB/blocked-packages.list && blocked="b"
    2.83 +			i18n_desc $pkg
    2.84  			cat << EOT
    2.85 -<td class="pkg">
    2.86 -	<input type="checkbox" name="pkg" value="$pkg" />
    2.87 -		<a href="$(pkg_info_link $pkg)"><img
    2.88 -			src="$IMAGES/tazpkg-installed.png"/>$colorpkg</a></td>
    2.89 +<td class="pkg"><input type="checkbox" name="pkg" value="$pkg" />$(pkg_info_link $pkg pkgi$blocked)</td>
    2.90  <td>$VERSION</td>
    2.91  <td class="desc">$SHORT_DESC</td>
    2.92 -<td><a href="$WEB_SITE"><img src="$IMAGES/browser.png"/></a></td>
    2.93 +<td><a class="w" href="$WEB_SITE"></a></td>
    2.94  </tr>
    2.95  EOT
    2.96  		done
    2.97 @@ -349,17 +360,13 @@
    2.98  		for pkg in $(ls $target/$INSTALLED); do
    2.99  			[ -s $pkg/receipt ] && continue
   2.100  			. $target/$INSTALLED/$pkg/receipt
   2.101 -			i18n_desc
   2.102 +			i18n_desc $pkg
   2.103  			cat << EOT
   2.104  <tr>
   2.105 -	<td class="pkg">
   2.106 -		<input type="checkbox" name="pkg" value="$pkg" />
   2.107 -			<a href="$(pkg_info_link $pkg)"><img
   2.108 -				src="$IMAGES/tazpkg.png"/>$pkg</a>
   2.109 -	</td>
   2.110 +	<td class="pkg"><input type="checkbox" name="pkg" value="$pkg" />$(pkg_info_link $pkg pkg)</td>
   2.111  	<td>$VERSION</td>
   2.112  	<td class="desc">$SHORT_DESC</td>
   2.113 -	<td><a href="$WEB_SITE"><img src="$IMAGES/browser.png"/></a></td>
   2.114 +	<td><a class="w" href="$WEB_SITE"></a></td>
   2.115  </tr>
   2.116  EOT
   2.117  		done
   2.118 @@ -380,8 +387,8 @@
   2.119  		repo=$(GET repo)
   2.120  		category=$(GET cat)
   2.121  		[ "$category" == "cat" ] && category="base-system"
   2.122 -		grep_category=$category
   2.123 -		[ "$grep_category" == "all" ] && grep_category=".*"
   2.124 +		#grep_category=$category
   2.125 +		#[ "$grep_category" == "all" ] && grep_category="*"
   2.126  		search_form
   2.127  		sidebar | sed "s/active_$category/active/;s/repo_$repo/active/"
   2.128  		LOADING_MSG="$(_ 'Listing packages...')"
   2.129 @@ -414,16 +421,23 @@
   2.130  <h3>$(_ 'Repository: %s' $Repo_Name)</h3>
   2.131  EOT
   2.132  			fi
   2.133 -			cat << EOT
   2.134 -<table class="zebra outbox">
   2.135 -$(table_head)
   2.136 -<tbody>
   2.137 -EOT
   2.138 -			if [ "$category" == "extra" ]; then
   2.139 -				sed 's,.*,&|--|--|--|http://mirror.slitaz.org/packages/get/&,' $i/extra.list
   2.140 -			else
   2.141 -				grep "| $grep_category |" $i/packages.desc
   2.142 -			fi | parse_packages_desc
   2.143 +			echo '<table class="zebra outbox">'
   2.144 +			table_head
   2.145 +			echo '<tbody>'
   2.146 +
   2.147 +			case $category in
   2.148 +				extra)
   2.149 +					sed 's|.*|&	--	-	--	http://mirror.slitaz.org/packages/get/&	-	-	-|' \
   2.150 +					$i/extra.list | parse_packages_info
   2.151 +					;;
   2.152 +				all)
   2.153 +					parse_packages_info < $i/packages.info
   2.154 +					;;
   2.155 +				*)
   2.156 +					awk -F$'\t' -vc=$category '{if ($3 == c) print $0}' \
   2.157 +					$i/packages.info | parse_packages_info
   2.158 +					;;
   2.159 +			esac
   2.160  			cat << EOT
   2.161  </tbody>
   2.162  </table>
   2.163 @@ -439,7 +453,7 @@
   2.164  		#
   2.165  		pkg=$(GET search)
   2.166  		repo=$(GET repo)
   2.167 -		cd  $PKGS_DB
   2.168 +		cd $PKGS_DB
   2.169  		search_form
   2.170  		sidebar | sed "s/repo_$repo/active/"
   2.171  		LOADING_MSG="$(_ 'Searching packages...')"
   2.172 @@ -477,27 +491,22 @@
   2.173  	<thead>
   2.174  	<tbody>
   2.175  EOT
   2.176 -			unlzma -c $(repo_list /files.list.lzma) \
   2.177 -				| grep -Ei ": .*$(GET search)" | \
   2.178 -				while read PACKAGE FILE; do
   2.179 -					PACKAGE=${PACKAGE%:}
   2.180 -					image=tazpkg-installed.png
   2.181 -					[ -d $INSTALLED/$PACKAGE ] || image=tazpkg.png
   2.182 -					cat << EOT
   2.183 +			lzcat $(repo_list /files.list.lzma) | grep -Ei ": .*$(GET search)" | \
   2.184 +			while read PACKAGE FILE; do
   2.185 +				PACKAGE=${PACKAGE%:}
   2.186 +				class=pkg; [ -d $INSTALLED/$PACKAGE ] && class=pkgi
   2.187 +				cat << EOT
   2.188  <tr>
   2.189 -	<td><input type="checkbox" name="pkg" value="$PACKAGE">
   2.190 -		<a href="$(pkg_info_link $PACKAGE)"><img src="$IMAGES/$image" />$PACKAGE</a></td>
   2.191 +	<td class="pkg"><input type="checkbox" name="pkg" value="$PACKAGE">$(pkg_info_link $PACKAGE $class)</td>
   2.192  	<td>$FILE</td>
   2.193  </tr>
   2.194  EOT
   2.195 -				done
   2.196 +			done
   2.197  		else
   2.198 -			cat << EOT
   2.199 -$(table_head)
   2.200 -	<tbody>
   2.201 -EOT
   2.202 -			grep -ih $pkg $(repo_list /packages.desc) | \
   2.203 -				parse_packages_desc
   2.204 +			table_head
   2.205 +			echo "	<tbody>"
   2.206 +			awk -F$'\t' 'BEGIN{IGNORECASE = 1}
   2.207 +			$1 $4 ~ /'$pkg'/{print $0}' $(repo_list /packages.info) | parse_packages_info
   2.208  		fi
   2.209  		cat << EOT
   2.210  	</tbody>
   2.211 @@ -651,11 +660,11 @@
   2.212  		sidebar
   2.213  		if [ -d $INSTALLED/$pkg ]; then
   2.214  			. $INSTALLED/$pkg/receipt
   2.215 -			files=$(cat $INSTALLED/$pkg/files.list | wc -l)
   2.216 +			files=$(wc -l < $INSTALLED/$pkg/files.list)
   2.217  			action="Remove"
   2.218  			action_i18n=$(_ 'Remove')
   2.219  		else
   2.220 -			cd  $PKGS_DB
   2.221 +			cd $PKGS_DB
   2.222  			LOADING_MSG=$(_ 'Getting package info...')
   2.223  			loading_msg
   2.224  			IFS='|'
   2.225 @@ -668,7 +677,7 @@
   2.226  			WEB_SITE="$(echo $5)"
   2.227  			action="Install"
   2.228  			action_i18n=$(_ 'Install')
   2.229 -			temp="$(echo $pkg | sed 's/get-//g')"
   2.230 +			temp="${pkg#get-}"
   2.231  		fi
   2.232  		cat << EOT
   2.233  <h2>$(_ 'Package %s' $PACKAGE)</h2>
   2.234 @@ -698,7 +707,7 @@
   2.235  			<a class="button" href='$SCRIPT_NAME?do=Repack&$pkg'>$(_ 'Repack')</a>
   2.236  EOT
   2.237  		fi
   2.238 -		i18n_desc
   2.239 +		i18n_desc $pkg
   2.240  		cat << EOT
   2.241  		</p>
   2.242  	</div>
   2.243 @@ -725,14 +734,14 @@
   2.244  			if [ -n "$DEPENDS" ]; then
   2.245  				echo "<tr><td><b>$(_ 'Depends')</b></td><td>"
   2.246  				for i in $DEPENDS; do
   2.247 -					echo -n "<a href="$(pkg_info_link $i)">$i</a> "
   2.248 +					pkg_info_link $i
   2.249  				done
   2.250  				echo "</td></tr>"
   2.251  			fi
   2.252  			if [ -n "$SUGGESTED" ]; then
   2.253  				echo "<tr><td><b>$(_ 'Suggested')</b></td><td>"
   2.254  				for i in $SUGGESTED; do
   2.255 -					echo -n "<a href="$(pkg_info_link $i)">$i</a> "
   2.256 +					pkg_info_link $i
   2.257  				done
   2.258  				echo "</td></tr>"
   2.259  			fi
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/tazpanel/pkgs.css	Thu Dec 18 03:43:49 2014 +0200
     3.3 @@ -0,0 +1,30 @@
     3.4 +/* links classes:
     3.5 + *   pkg   - package (not installed);
     3.6 + *   pkgi  - package (installed);
     3.7 + *   pkgib - package (installed and blocked);
     3.8 + *   w     - web site
     3.9 + *
    3.10 + * you can style links using icons and/or color
    3.11 + */
    3.12 +
    3.13 +a.pkg {
    3.14 +	background: url(images/tazpkg.png) no-repeat left; }
    3.15 +a.pkgi, a.pkgib {
    3.16 +	background: url(images/tazpkg-installed.png) no-repeat left; }
    3.17 +/*
    3.18 +a.pkgi {
    3.19 +	color: green; }
    3.20 +*/
    3.21 +a.pkgib {
    3.22 +	color: red; }
    3.23 +a.w {
    3.24 +	background: url(images/browser.png) no-repeat left; }
    3.25 +
    3.26 +a.pkg, a.pkgi, a.pkgib, a.w {
    3.27 +	margin: 0; padding: 0 0 0 17px;
    3.28 +	min-height: 16px; min-width: 16px;
    3.29 +	display: inline-block; }
    3.30 +
    3.31 +
    3.32 +td.pkg {
    3.33 +	white-space: nowrap; }