tazpkg rev 744

Store sidebar settings in the session cookies (browser sets, changes, and sends them automatically); use "<button>" tag instead of "<a>" and "<input type='button'>" to show buttons (it allows to translate button captions, and provides uniform look of buttons); "list" and "tag" commands shows short description about what is really listed; "tag" respects repo; "blocked" shows blocked packages; small style change; encode COPYING in UTF-8.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Jan 09 17:05:12 2015 +0200 (2015-01-09)
parents d2843d5ee9e6
children c4c2d523a719
files COPYING tazpanel/pkgs tazpanel/pkgs.cgi tazpanel/pkgs.css tazpkg
line diff
     1.1 --- a/COPYING	Sat Jan 03 17:38:17 2015 +0200
     1.2 +++ b/COPYING	Fri Jan 09 17:05:12 2015 +0200
     1.3 @@ -5,21 +5,21 @@
     1.4  Copyright (c)  2007-2014  SliTaz GNU/Linux
     1.5  
     1.6  
     1.7 -Français
     1.8 +Français
     1.9  --------
    1.10  
    1.11 -TazPkg est un logiciel libre ; vous pouvez le redistribuer et/ou le
    1.12 -modifier conformément aux dispositions de la Licence Publique Générale GNU,
    1.13 -telle que publiée par la Free Software Foundation ; version 3 de la
    1.14 -licence, ou encore (à votre choix) toute version ultérieure.
    1.15 +TazPkg est un logiciel libre ; vous pouvez le redistribuer et/ou le
    1.16 +modifier conformément aux dispositions de la Licence Publique Générale GNU,
    1.17 +telle que publiée par la Free Software Foundation ; version 3 de la
    1.18 +licence, ou encore (à votre choix) toute version ultérieure.
    1.19  
    1.20 -TazPkg est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE
    1.21 -GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou
    1.22 -D'ADAPTATION À UN OBJET PARTICULIER. Pour plus de détails, voir la Licence
    1.23 -Publique Générale GNU.
    1.24 +TazPkg est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE
    1.25 +GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou
    1.26 +D'ADAPTATION À UN OBJET PARTICULIER. Pour plus de détails, voir la Licence
    1.27 +Publique Générale GNU.
    1.28  
    1.29 -Un exemplaire de la Licence Publique Générale GNU doit être fourni avec
    1.30 -TazPkg si ce n'est pas le cas, écrivez à la Free Software Foundation
    1.31 +Un exemplaire de la Licence Publique Générale GNU doit être fourni avec
    1.32 +TazPkg si ce n'est pas le cas, écrivez à la Free Software Foundation
    1.33  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    1.34  
    1.35  
     2.1 --- a/tazpanel/pkgs	Sat Jan 03 17:38:17 2015 +0200
     2.2 +++ b/tazpanel/pkgs	Fri Jan 09 17:05:12 2015 +0200
     2.3 @@ -4,7 +4,7 @@
     2.4  cat <<EOT
     2.5  <li><a href="/pkgs.cgi">$(gettext 'Packages')</a>
     2.6  	<ul>
     2.7 -		<li><a href="/pkgs.cgi?cat=all&amp;my=my&amp;repo=Public"><img
     2.8 +		<li><a href="/pkgs.cgi?list&amp;my=my&amp;cat=all&amp;repo=Any"><img
     2.9  			src="/styles/default/images/tazpkg.png" />$(gettext 'My packages')</a></li>
    2.10  		<li><a href="/pkgs.cgi?recharge"><img
    2.11  			src="/styles/default/images/update.png" />$(gettext 'Recharge list')</a></li>
     3.1 --- a/tazpanel/pkgs.cgi	Sat Jan 03 17:38:17 2015 +0200
     3.2 +++ b/tazpanel/pkgs.cgi	Fri Jan 09 17:05:12 2015 +0200
     3.3 @@ -132,20 +132,27 @@
     3.4  		tag=)         img='';         label="$(_ 'Tags')" ;;
     3.5  		linkable)     img='tazpkg';   label="$(_ 'Linkable packages')" ;;
     3.6  		admin)        img='edit';     label="$(_ 'Administration')" ;;
     3.7 -		*Install*nf*) img='';         label="$(_ 'Install (Non Free)')" ;;
     3.8 -		*Install*)    img='';         label="$(_ 'Install')" ;;
     3.9 +		*Install*nf*) img='tazpkg-installed'; label="$(_ 'Install (Non Free)')" ;;
    3.10 +		*Install*)    img='tazpkg-installed'; label="$(_ 'Install')" ;;
    3.11  		*Remove*)     img='stop';     label="$(_ 'Remove')" ;;
    3.12 -		*Block*)      img='';         label="$(_ 'Block')" ;;
    3.13 -		*Unblock*)    img='';         label="$(_ 'Unblock')" ;;
    3.14 -		*Repack*)     img='';         label="$(_ 'Repack')" ;;
    3.15 +		*Link*)       img='tazpkg';   label="$(_ 'Link')" ;;
    3.16 +		*Block*)      img='tazpkg';   label="$(_ 'Block')" ;;
    3.17 +		*Unblock*)    img='tazpkg';   label="$(_ 'Unblock')" ;;
    3.18 +		*Repack*)     img='tazpkg';   label="$(_ 'Repack')" ;;
    3.19  		*saveconf*)   img='tazpkg';   label="$(_ 'Save configuration')" ;;
    3.20  		*listconf*)   img='edit';     label="$(_ 'List configuration files')" ;;
    3.21  		*quickcheck*) img='recharge'; label="$(_ 'Quick check')" ;;
    3.22  		*fullcheck*)  img='recharge'; label="$(_ 'Full check')" ;;
    3.23 +		*clean*)      img='stop';     label="$(_ 'Clean')" ;;
    3.24 +		*setlink*)    img='harddisk'; label="$(_ 'Set link')" ;;
    3.25 +		*removelink*) img='stop';     label="$(_ 'Remove link')" ;;
    3.26  	esac
    3.27 -	echo -n "<a class=\"button\" href=\"?$1\">"
    3.28 -	[ -n "$img" ] && echo -n "<img src=\"$IMAGES/$img.png\" />"
    3.29 -	echo "$label</a>"
    3.30 +	cat << EOT
    3.31 +	<button class="button" type="submit" name="${1%%=*}" value="${1#*=}">
    3.32 +		<img src="$IMAGES/$img.png"/>$label
    3.33 +	</button>
    3.34 +EOT
    3.35 +
    3.36  }
    3.37  
    3.38  
    3.39 @@ -176,7 +183,7 @@
    3.40  
    3.41  table_head() {
    3.42  	cat << EOT
    3.43 -<table class="zebra outbox pkglist">
    3.44 +<table class="zebra pkglist">
    3.45  	<thead>
    3.46  		<tr>
    3.47  			<td>$(_ 'Name')</td>
    3.48 @@ -191,15 +198,22 @@
    3.49  
    3.50  
    3.51  sidebar() {
    3.52 -	repo=$(GET repo); repo=${repo:-Public}
    3.53 -	my=$(GET my); my=${my:-my}
    3.54 -	cat=$(GET cat); cat=${cat:-all}
    3.55 +	repo=$(COOKIE repo); repo=${repo:-Public}; [ -n "$(GET repo)" ] && repo=$(GET repo)
    3.56 +	  my=$(COOKIE my);     my=${my:-my};       [ -n "$(GET my)" ]   &&   my=$(GET my)
    3.57 +	 cat=$(COOKIE cat);   cat=${cat:-all};     [ -n "$(GET cat)" ]  &&  cat=$(GET cat)
    3.58  
    3.59  	cat << EOT
    3.60 -<form method="get" action="">
    3.61 +<script type="text/javascript">
    3.62 +function setCookie(name) {
    3.63 +	document.cookie = name+"="+document.getElementById(name).value; }
    3.64 +function setValue(name, value) {
    3.65 +	document.getElementById(name).value=value;
    3.66 +	setCookie(name); }
    3.67 +</script>
    3.68 +<form method="post" action="?list">
    3.69  
    3.70  <div id="sidebar">
    3.71 -	<select id="my" name="my" value="$my" onchange="this.form.submit()">
    3.72 +	<select id="my" value="$my" onchange="setCookie('my'); this.form.submit()">
    3.73  		<option value="my">$(_ 'My packages')</option>
    3.74  		<option value="no">$(_ 'All packages')</option>
    3.75  	</select>
    3.76 @@ -207,7 +221,7 @@
    3.77  	<h4>$(_ 'Categories')</h4>
    3.78  
    3.79  	<div class="select_wrap">
    3.80 -	<select id="cat" name="cat" size="16" onchange="this.form.submit()">
    3.81 +	<select id="cat" size="16" onclick="setCookie('cat'); this.form.submit()">
    3.82  		<option value="base-system" >$(_ 'base-system')</option>
    3.83  		<option value="x-window"    >$(_ 'x-window')</option>
    3.84  		<option value="utilities"   >$(_ 'utilities')</option>
    3.85 @@ -226,8 +240,8 @@
    3.86  		<option value="extra"       >$(_ 'extra')</option>
    3.87  	</select>
    3.88  	<script type="text/javascript">
    3.89 -		document.getElementById('my').value="$my"
    3.90 -		document.getElementById('cat').value="$cat"
    3.91 +		setValue('my', "$my")
    3.92 +		setValue('cat', "$cat")
    3.93  	</script>
    3.94  	</div>
    3.95  EOT
    3.96 @@ -236,19 +250,19 @@
    3.97  		cat << EOT
    3.98  	<h4>$(_ 'Repository')</h4>
    3.99  
   3.100 -	<select id="repo" name="repo" onchange="this.form.submit()">
   3.101 +	<select id="repo" onchange="setCookie('repo')">
   3.102  		<option value="Public">$(_ 'Public')</option>
   3.103  		$(for i in $(ls $PKGS_DB/undigest); do
   3.104  			echo "<option value=\"$i\">$i</option>"
   3.105  		done)
   3.106  		<option value="Any">$(_ 'Any')</option>
   3.107  	</select>
   3.108 -	<script type="text/javascript">document.getElementById('repo').value="$repo"</script>
   3.109 +	<script type="text/javascript">setValue('repo', "$repo")</script>
   3.110  EOT
   3.111  	fi
   3.112  	cat << EOT
   3.113 -	<a href="?tag=&amp;my=$my&amp;repo=$repo">$(_ 'All tags...')</a>
   3.114 -	<a href="?cat=&amp;my=$my&amp;repo=$repo">$(_ 'All categories...')</a>
   3.115 +	<a href="?tags">$(_ 'All tags...')</a>
   3.116 +	<a href="?cats">$(_ 'All categories...')</a>
   3.117  </div>
   3.118  </form>
   3.119  EOT
   3.120 @@ -283,10 +297,16 @@
   3.121  }
   3.122  
   3.123  
   3.124 +header_repo_name() {
   3.125 +	[ -d $PKGS_DB/undigest ] && [ "$repo" != "Public" ] && \
   3.126 +		echo "<h3>$(_ 'Repository: %s' $(repo_name $1))</h3>"
   3.127 +}
   3.128 +
   3.129 +
   3.130  # Print links to the pages
   3.131  
   3.132  pager() {
   3.133 -	awk -F'"' -vpage="$page" -vnum_lines="$(wc -l < $1)" -vtext="$(_ 'Pages:') " -vurl="?cat=$category&amp;repo=$repo&amp;page=" '
   3.134 +	awk -F'"' -vpage="$page" -vnum_lines="$(wc -l < $1)" -vtext="$(_ 'Pages:') " -vurl="?list&amp;page=" '
   3.135  BEGIN{
   3.136  	num_pages = int(num_lines / 100) + (num_lines % 100 != 0)
   3.137  	if (num_pages != 1) printf "<p>%s", text
   3.138 @@ -312,6 +332,7 @@
   3.139  
   3.140  show_list() {
   3.141  	cached=$(mktemp)
   3.142 +	[ -n "$tag" ] && cat=''
   3.143  	{
   3.144  		for L in $LANG ${LANG%%_*}; do
   3.145  			if [ -e "$PKGS_DB/packages-desc.$L" ]; then
   3.146 @@ -320,9 +341,9 @@
   3.147  		done
   3.148  		[ -e "$i/blocked-packages.list" ] && cat $i/blocked-packages.list
   3.149  		sed 's|.*|&\ti|' $i/installed.info
   3.150 -		[ "$category" == 'extra' ] || [ $1 == 'my' ] || cat $i/packages.info
   3.151 -		[ "$category" == 'extra' ] && sed 's|.*|&\t-\textra\t-\thttp://mirror.slitaz.org/packages/get/&\t-\t-\t-|' $PKGS_DB/extra.list
   3.152 -	} | sort -t$'\t' -k1,1 | sed '/^$/d' | awk -F$'\t' -vc="${category:--}" -vt="${tag:--}" '
   3.153 +		[ "$cat" == 'extra' ] || [ $1 == 'my' ] || cat $i/packages.info
   3.154 +		[ "$cat" == 'extra' ] && sed 's|.*|&\t-\textra\t-\thttp://mirror.slitaz.org/packages/get/&\t-\t-\t-|' $PKGS_DB/extra.list
   3.155 +	} | sort -t$'\t' -k1,1 | sed '/^$/d' | awk -F$'\t' -vc="${cat:--}" -vt="${tag:--}" '
   3.156  {
   3.157  	if (PKG && PKG != $1) {
   3.158  		if (SEL) {
   3.159 @@ -344,16 +365,17 @@
   3.160  	page=$(GET page); [ -z "$page" ] && page=1
   3.161  
   3.162  	pager="$(pager $cached)"
   3.163 -	if [ "$pager" != "<p>$(_ 'Pages:') </p>" ]; then
   3.164 -		[ -d $PKGS_DB/undigest ] && [ "$repo" != "Public" ] && \
   3.165 -			echo "<h3>$(_ 'Repository: %s' $(repo_name $i))</h3>"
   3.166 -		echo "$pager"
   3.167 -
   3.168 -		table_head
   3.169 -		tail -n+$((($page-1)*100+1)) $cached | head -n100
   3.170 -		echo "</tbody></table>"
   3.171 -
   3.172 -		echo "$pager"
   3.173 +	list="$(tail -n+$((($page-1)*100+1)) $cached | head -n100)"
   3.174 +	list1=${list:1:1}
   3.175 +	if [ "$pager" != "<p>$(_ 'Pages:') </p>" ] && [ -n "$list1" ]; then
   3.176 +		cat << EOT
   3.177 +$(header_repo_name $i)
   3.178 +$pager
   3.179 +	$(table_head)
   3.180 +		$list
   3.181 +	</tbody></table>
   3.182 +$pager
   3.183 +EOT
   3.184  	fi
   3.185  	rm -f $cached
   3.186  }
   3.187 @@ -385,24 +407,16 @@
   3.188  		#
   3.189  		# List linkable packages.
   3.190  		#
   3.191 -		search_form
   3.192 -		sidebar
   3.193 -		LOADING_MSG=$(_ 'Listing linkable packages...')
   3.194 -		loading_msg
   3.195 +		search_form; sidebar
   3.196 +		LOADING_MSG=$(_ 'Listing linkable packages...'); loading_msg
   3.197 +
   3.198  		cat << EOT
   3.199  <h2>$(_ 'Linkable packages')</h2>
   3.200  
   3.201  <form method="get" action="">
   3.202 -<input type="hidden" name="do" value="Link" />
   3.203  <div id="actions">
   3.204 -	<div class="float-left">
   3.205 -		$(_ 'Selection:')
   3.206 -		<input type="submit" value="$(_ 'Link')" />
   3.207 -	</div>
   3.208 -	<div class="float-right">
   3.209 -		$(show_button recharge)
   3.210 -		$(show_button up)
   3.211 -	</div>
   3.212 +	<div class="float-left">$(_ 'Selection:') $(show_button do=Link)</div>
   3.213 +	<div class="float-right">$(show_button recharge) $(show_button up)</div>
   3.214  </div>
   3.215  EOT
   3.216  		table_head
   3.217 @@ -428,17 +442,17 @@
   3.218  		;;
   3.219  
   3.220  
   3.221 -	*\ cat\ *)
   3.222 +	*\ cats\ *)
   3.223  		#
   3.224 -		# List all packages by category.
   3.225 +		# List of all categories.
   3.226  		#
   3.227 -		my=$(GET my); category=$(GET cat); repo=$(GET repo)
   3.228 -		search_form
   3.229 -		sidebar | sed "s/a_$category/active/;s/repo_$repo/active/"
   3.230 -		if [ -z "$category" ] || [ "$category" == 'cat' ]; then
   3.231 +		search_form; sidebar
   3.232 +
   3.233 +		echo "<h2>$(_ 'Categories list')</h2>"
   3.234 +
   3.235 +		for pkgsinfo in $(repo_list /packages.info); do
   3.236 +			header_repo_name $(dirname $pkgsinfo)
   3.237  			cat << EOT
   3.238 -<h2>$(_ 'Categories list')</h2>
   3.239 -
   3.240  <table class="zebra outbox">
   3.241  	<thead>
   3.242  		<tr>
   3.243 @@ -449,9 +463,8 @@
   3.244  	</thead>
   3.245  	<tbody>
   3.246  EOT
   3.247 -			params="&amp;my=$my&amp;repo=$repo" # don't forget it unexpectedly
   3.248  			{
   3.249 -				awk -F$'\t' '{print $3}' $PKGS_DB/packages.info | sort | uniq -c
   3.250 +				awk -F$'\t' '{print $3}' $pkgsinfo | sort | uniq -c
   3.251  				awk -F$'\t' '{print $3}' $PKGS_DB/installed.info | sed 's|.*|& i|' | sort | uniq -c
   3.252  			} | sort -k2,2 | awk '
   3.253  			{
   3.254 @@ -460,34 +473,52 @@
   3.255  			}
   3.256  			END {
   3.257  				for (n in c) print n, m[n], i[n]
   3.258 -			}' | sort | awk -vp="$params" '{
   3.259 -			printf "<tr><td><a href=\"?cat=%s%s\">%s</a></td><td>%d</td><td>%d</td></tr>", $1, p, $1, $2, $3
   3.260 +			}' | sort | awk '{
   3.261 +			printf "<tr><td><a href=\"?list&amp;cat=%s\">%s</a></td><td>%d</td><td>%d</td></tr>", $1, $1, $2, $3
   3.262  			}'
   3.263  			echo '</tbody></table>'
   3.264 -		else
   3.265 -			LOADING_MSG="$(_ 'Listing packages...')"
   3.266 -			loading_msg
   3.267 -			cat << EOT
   3.268 -<h2>$(_ 'Category: %s' $category)</h2>
   3.269 +		done
   3.270 +		;;
   3.271 +
   3.272 +
   3.273 +	*\ list\ *)
   3.274 +		#
   3.275 +		# List all packages by category.
   3.276 +		#
   3.277 +		search_form; sidebar
   3.278 +		LOADING_MSG="$(_ 'Listing packages...')"; loading_msg
   3.279 +
   3.280 +		bcat="<b>$cat</b>"; brepo="<b>$repo</b>"
   3.281 +		case $repo in
   3.282 +			Any)
   3.283 +				case $my in
   3.284 +					my) title="$(_ 'Installed packages of category "%s"' "$bcat")" ;;
   3.285 +					*)  title="$(_ 'All packages of category "%s"' "$bcat")" ;;
   3.286 +				esac ;;
   3.287 +			*)
   3.288 +				case $my in
   3.289 +					my) title="$(_ 'Installed packages of category "%s" in repository "%s"' "$bcat" "$brepo")" ;;
   3.290 +					*)  title="$(_ 'All packages of category "%s" in repository "%s"' "$bcat" "$brepo")" ;;
   3.291 +				esac ;;
   3.292 +		esac
   3.293 +
   3.294 +		cat << EOT
   3.295 +<h2>$(_ 'Packages list')</h2>
   3.296 +<p>$title</p>
   3.297  
   3.298  <form method="get" action="">
   3.299  <div id="actions">
   3.300 -	<div class="float-left">
   3.301 -		$(_ 'Selection:')
   3.302 -		<input type="submit" name="do" value="Install" />
   3.303 -		<input type="submit" name="do" value="Remove" />
   3.304 +	<div class="float-left">$(_ 'Selection:')
   3.305 +		$([ "$my" != 'my' ] && show_button do=Install)
   3.306 +		$(show_button do=Remove)
   3.307  	</div>
   3.308 -	<div class="float-right">
   3.309 -		$(show_button recharge)
   3.310 -		$(show_button up)
   3.311 -	</div>
   3.312 +	<div class="float-right">$(show_button recharge; show_button up)</div>
   3.313  </div>
   3.314  EOT
   3.315 -			for i in $(repo_list ""); do
   3.316 -				show_list ${my#no}
   3.317 -			done
   3.318 -			echo '</form>'
   3.319 -		fi
   3.320 +		for i in $(repo_list ""); do
   3.321 +			show_list ${my#no}
   3.322 +		done
   3.323 +		echo '</form>'
   3.324  		;;
   3.325  
   3.326  
   3.327 @@ -497,29 +528,20 @@
   3.328  		# and so get result including packages names and descriptions
   3.329  		#
   3.330  		pkg=$(GET search); [ -z "$pkg" ] && xhtml_footer && exit
   3.331 -		repo=$(GET repo)
   3.332  		cd $PKGS_DB
   3.333 -		search_form
   3.334 -		sidebar | sed "s/repo_$repo/active/"
   3.335 -		LOADING_MSG="$(_ 'Searching packages...')"
   3.336 -		loading_msg
   3.337 +
   3.338 +		search_form; sidebar
   3.339 +		LOADING_MSG="$(_ 'Searching packages...')"; loading_msg
   3.340 +
   3.341  		cat << EOT
   3.342  <h2>$(_ 'Search packages')</h2>
   3.343  
   3.344  <form method="get" action="">
   3.345  <div id="actions">
   3.346 -	<div class="float-left">
   3.347 -		$(_ 'Selection:')
   3.348 -		<input type="submit" name="do" value="Install" />
   3.349 -		<input type="submit" name="do" value="Remove" />
   3.350 -		<a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a>
   3.351 -	</div>
   3.352 -	<div class="float-right">
   3.353 -		$(show_button recharge)
   3.354 -		$(show_button up)
   3.355 -	</div>
   3.356 +	<div class="float-left">$(_ 'Selection:'; show_button do=Install; show_button do=Remove)
   3.357 +		<a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a></div>
   3.358 +	<div class="float-right">$(show_button recharge; show_button up)</div>
   3.359  </div>
   3.360 -<input type="hidden" name="repo" value="$repo" />
   3.361  EOT
   3.362  		if [ -n "$(GET files)" ]; then
   3.363  			cat <<EOT
   3.364 @@ -560,10 +582,9 @@
   3.365  		#
   3.366  		# Lets recharge the packages list
   3.367  		#
   3.368 -		search_form
   3.369 -		sidebar
   3.370 -		LOADING_MSG="$(_ 'Recharging lists...')"
   3.371 -		loading_msg
   3.372 +		search_form; sidebar
   3.373 +		LOADING_MSG="$(_ 'Recharging lists...')"; loading_msg
   3.374 +
   3.375  		cat << EOT
   3.376  <h2>$(_ 'Recharge')</h2>
   3.377  
   3.378 @@ -572,9 +593,7 @@
   3.379  	<div class="float-left">
   3.380  		<p>$(_ 'Recharge checks for new or updated packages')</p>
   3.381  	</div>
   3.382 -	<div class="float-right">
   3.383 -		$(show_button up)
   3.384 -	</div>
   3.385 +	<div class="float-right">$(show_button up)</div>
   3.386  </div>
   3.387  <div class="wrapper">
   3.388  <pre>
   3.389 @@ -593,25 +612,17 @@
   3.390  		#
   3.391  		# Upgrade packages
   3.392  		#
   3.393 -		cd $PKGS_DB
   3.394 -		search_form
   3.395 -		sidebar
   3.396 -		LOADING_MSG="$(_ 'Checking for upgrades...')"
   3.397 -		loading_msg
   3.398 +		search_form; sidebar
   3.399 +		LOADING_MSG="$(_ 'Checking for upgrades...')"; loading_msg
   3.400 +
   3.401  		cat << EOT
   3.402  <h2>$(_ 'Up packages')</h2>
   3.403  
   3.404  <form method="get" action="">
   3.405  <div id="actions">
   3.406 -	<div class="float-left">
   3.407 -		$(_ 'Selection:')
   3.408 -		<input type="submit" name="do" value="Install" />
   3.409 -		<input type="submit" name="do" value="Remove" />
   3.410 -		<a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a>
   3.411 -	</div>
   3.412 -	<div class="float-right">
   3.413 -		$(show_button recharge)
   3.414 -	</div>
   3.415 +	<div class="float-left">$(_ 'Selection:'; show_button do=Install; show_button do=Remove)
   3.416 +		<a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a></div>
   3.417 +	<div class="float-right">$(show_button recharge)</div>
   3.418  </div>
   3.419  EOT
   3.420  		tazpkg up --check >/dev/null
   3.421 @@ -632,44 +643,25 @@
   3.422  		#
   3.423  		# Do an action on one or some packages
   3.424  		#
   3.425 +		search_form; sidebar
   3.426 +		LOADING_MSG="$(_ 'Please wait')"; loading_msg
   3.427 +
   3.428  		opt=""
   3.429 -		pkgs=""
   3.430 -		cmdline=$(echo ${QUERY_STRING#do=} | sed s'/&/ /g')
   3.431 -		cmd=$(echo ${cmdline} | awk '{print $1}')
   3.432 -		cmdline=${cmdline#*repo=* }
   3.433 -		pkgs=$(echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//)
   3.434 -		pkgs="$(httpd -d "$pkgs")"
   3.435 -		cmd=$(echo $cmd | tr [:upper:] [:lower:])
   3.436 +		cmd=$(echo $(GET do) | tr [:upper:] [:lower:])
   3.437 +		pkgs=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="pkg")print $2}')
   3.438 +		pkgs=$(httpd -d "$pkgs")
   3.439 +		bpkgs="<b>$pkgs</b>"
   3.440  		case $cmd in
   3.441 -			install)
   3.442 -				cmd=get-install opt=--forced
   3.443 -				LOADING_MSG="get-installing packages..."
   3.444 -				MSG="$(_ 'Installing: %s' "$pkgs")" ;;
   3.445 -			remove)
   3.446 -				MSG="$(_ 'Removing: %s' "$pkgs")" ;;
   3.447 -			link)
   3.448 -				opt=$(readlink $PKGS_DB/fslink)
   3.449 -				LOADING_MSG="linking packages..."
   3.450 -				MSG="$(_ 'Linking: %s' "$pkgs")" ;;
   3.451 -			block)
   3.452 -				MSG="$(_ 'Blocking: %s' "$pkgs")" ;;
   3.453 -			unblock)
   3.454 -				MSG="$(_ 'Unblocking: %s' "$pkgs")" ;;
   3.455 -			repack)
   3.456 -				MSG="$(_ 'Repacking: %s' "$pkgs")" ;;
   3.457 +			install) MSG="$(_ 'Installing: %s' "$bpkgs")"; opt=--forced; cmd=get-install ;;
   3.458 +			remove)  MSG="$(_ 'Removing: %s'   "$bpkgs")" ;;
   3.459 +			link)    MSG="$(_ 'Linking: %s'    "$bpkgs")"; opt=$(readlink $PKGS_DB/fslink) ;;
   3.460 +			block)   MSG="$(_ 'Blocking: %s'   "$bpkgs")" ;;
   3.461 +			unblock) MSG="$(_ 'Unblocking: %s' "$bpkgs")" ;;
   3.462 +			repack)  MSG="$(_ 'Repacking: %s'  "$bpkgs")" ;;
   3.463  		esac
   3.464 -		search_form
   3.465 -		sidebar
   3.466 -		loading_msg
   3.467 -		pkgs=$pkgs
   3.468  		cat << EOT
   3.469 -<h2>TazPkg: $cmd</h2>
   3.470 +<h2>TazPkg: $(GET do)</h2>
   3.471  
   3.472 -<div id="actions">
   3.473 -	<div class="float-left">
   3.474 -		<p>$(_ 'Performing tasks on packages')</p>
   3.475 -	</div>
   3.476 -</div>
   3.477  <div class="box">$MSG</div>
   3.478  EOT
   3.479  		for pkg in $pkgs; do
   3.480 @@ -684,16 +676,16 @@
   3.481  		# Packages info
   3.482  		#
   3.483  		pkg=$(GET info)
   3.484 -		search_form
   3.485 -		sidebar
   3.486 +		search_form; sidebar
   3.487 +		LOADING_MSG=$(_ 'Getting package info...'); loading_msg
   3.488 +
   3.489 +		temp="${pkg#get-}"
   3.490  		if [ -d $INSTALLED/$pkg ]; then
   3.491  			. $INSTALLED/$pkg/receipt
   3.492  			files=$(wc -l < $INSTALLED/$pkg/files.list)
   3.493  			action="Remove"
   3.494  		else
   3.495  			cd $PKGS_DB
   3.496 -			LOADING_MSG=$(_ 'Getting package info...')
   3.497 -			loading_msg
   3.498  			eval "$(awk -F$'\t' -vp=$pkg '
   3.499  			$1==p{
   3.500  				printf "PACKAGE=\"%s\"; VERSION=\"%s\"; CATEGORY=\"%s\"; ", $1, $2, $3
   3.501 @@ -704,34 +696,30 @@
   3.502  			UNPACKED_SIZE=${SIZES#* }
   3.503  
   3.504  			action="Install"
   3.505 -			temp="${pkg#get-}"
   3.506  		fi
   3.507  		cat << EOT
   3.508  <h2>$(_ 'Package %s' $PACKAGE)</h2>
   3.509  
   3.510  <form method="get" action="">
   3.511 +<input type="hidden" name="pkg" value="$temp"/>
   3.512  <div id="actions">
   3.513 -	<div class="float-left">
   3.514 -		<p>
   3.515  EOT
   3.516  		if [ "$temp" != "$pkg" -a "$action" == "Install" ]; then
   3.517 -			show_button "do=Install&amp;$temp&amp;nf"
   3.518 +			show_button "do=Install&amp;nf"
   3.519  		else
   3.520 -			show_button "do=$action&amp;$pkg"
   3.521 +			show_button "do=$action"
   3.522  		fi
   3.523  
   3.524  		if [ -d $INSTALLED/$pkg ]; then
   3.525  			if grep -qs "^$pkg$" $PKGS_DB/blocked-packages.list; then
   3.526 -				show_button "do=Unblock&amp;$pkg"
   3.527 +				show_button do=Unblock
   3.528  			else
   3.529 -				show_button "do=Block&amp;$pkg"
   3.530 +				show_button do=Block
   3.531  			fi
   3.532 -			show_button "do=Repack&amp;$pkg"
   3.533 +			show_button do=Repack
   3.534  		fi
   3.535  		i18n_desc $pkg
   3.536  		cat << EOT
   3.537 -		</p>
   3.538 -	</div>
   3.539  </div>
   3.540  <table class="zebra outbox">
   3.541  <tbody>
   3.542 @@ -775,6 +763,8 @@
   3.543  		# TazPkg configuration page
   3.544  		#
   3.545  		cmd=$(GET admin)
   3.546 +		search_form; sidebar
   3.547 +
   3.548  		case "$cmd" in
   3.549  			clean)
   3.550  				rm -rf $CACHE_DIR/* ;;
   3.551 @@ -806,33 +796,32 @@
   3.552  			rm-repo=*)
   3.553  				repository=${cmd#rm-repo=}
   3.554  				rm -rf $PKGS_DB/undigest/$repository ;;
   3.555 +			setlink)
   3.556 +				[ -d "$(GET link)/$INSTALLED" ] && ln -fs $(GET link) $PKGS_DB/fslink ;;
   3.557 +			removelink)
   3.558 +				rm -f $PKGS_DB/fslink ;;
   3.559  		esac
   3.560 -		[ "$cmd" == "$(_n 'Set link')" ] &&
   3.561 -			[ -d "$(GET link)/$INSTALLED" ] && ln -fs $(GET link) $PKGS_DB/fslink
   3.562 -		[ "$cmd" == "$(_n 'Remove link')" ] && rm -f $PKGS_DB/fslink
   3.563  
   3.564 -		cache_files=$(find $CACHE_DIR -name *.tazpkg | wc -l)
   3.565 -		cache_size=$(du -sh $CACHE_DIR | cut -f1 | sed 's|\.0||')
   3.566 -		sidebar
   3.567  		cat << EOT
   3.568  <h2>$(_ 'Administration')</h2>
   3.569  
   3.570  <form method="get" action="">
   3.571 +<input type="hidden" name="admin" />
   3.572 +
   3.573  <div>
   3.574  	<p>$(_ 'TazPkg administration and settings')</p>
   3.575  </div>
   3.576  <div id="actions">
   3.577 -	$(show_button 'admin=&amp;action=saveconf')
   3.578 -	$(show_button 'admin=&amp;action=listconf')
   3.579 -	$(show_button 'admin=&amp;action=quickcheck')
   3.580 -	$(show_button 'admin=&amp;action=fullcheck')
   3.581 +	$(show_button action=saveconf)
   3.582 +	$(show_button action=listconf)
   3.583 +	$(show_button action=quickcheck)
   3.584 +	$(show_button action=fullcheck)
   3.585  </div>
   3.586  </form>
   3.587  EOT
   3.588  		case "$(GET action)" in
   3.589  				saveconf)
   3.590 -					LOADING_MSG=$(_ 'Creating the package...')
   3.591 -					loading_msg
   3.592 +					LOADING_MSG=$(_ 'Creating the package...'); loading_msg
   3.593  					echo "<pre>"
   3.594  					cd $HOME
   3.595  					tazpkg repack-config | filter_taztools_msgs
   3.596 @@ -851,26 +840,29 @@
   3.597  					echo "</ul>"
   3.598  					;;
   3.599  				quickcheck)
   3.600 -					LOADING_MSG=$(_ 'Checking packages consistency...')
   3.601 -					loading_msg
   3.602 +					LOADING_MSG=$(_ 'Checking packages consistency...'); loading_msg
   3.603  					echo "<pre>"
   3.604  					tazpkg check
   3.605  					echo "</pre>" ;;
   3.606  				fullcheck)
   3.607 -					LOADING_MSG=$(_ 'Full packages check...')
   3.608 -					loading_msg
   3.609 +					LOADING_MSG=$(_ 'Full packages check...'); loading_msg
   3.610  					echo "<pre>"
   3.611  					tazpkg check --full
   3.612  					echo "</pre>" ;;
   3.613  				esac
   3.614 +
   3.615 +		cache_files=$(find $CACHE_DIR -name *.tazpkg | wc -l)
   3.616 +		cache_size=$(du -sh $CACHE_DIR | cut -f1 | sed 's|\.0||')
   3.617 +		[ "$cache_files" == 0 ] && cache_size="0K"
   3.618  		cat << EOT
   3.619  <h3>$(_ 'Packages cache')</h3>
   3.620  
   3.621  <div>
   3.622  	<form method="get" action="">
   3.623  		<p>$(_ 'Packages in the cache: %s (%s)' $cache_files $cache_size)
   3.624 -			<input type="hidden" name="admin" value="clean" />
   3.625 -			<input type="submit" value="$(_n 'Clean')" />
   3.626 +			$(show_button admin=clean)
   3.627 +			<!--input type="hidden" name="admin" value="clean" />
   3.628 +			<input type="submit" value="$(_n 'Clean')" /-->
   3.629  		</p>
   3.630  	</form>
   3.631  </div>
   3.632 @@ -930,8 +922,8 @@
   3.633  <form method="get" action="">
   3.634  <p>
   3.635  	<input type="text" name="link" value="$(readlink $PKGS_DB/fslink 2> /dev/null)" size="50">
   3.636 -	<input type="submit" name="admin" value="$(_ 'Set link')" />
   3.637 -	<input type="submit" name="admin" value="$(_ 'Remove link')" />
   3.638 +	$(show_button admin=setlink)
   3.639 +	$(show_button admin=removelink)
   3.640  </p>
   3.641  </form>
   3.642  EOT
   3.643 @@ -991,8 +983,8 @@
   3.644  		#
   3.645  		# Show licenses for installed packages
   3.646  		#
   3.647 -		search_form
   3.648 -		sidebar
   3.649 +		search_form; sidebar
   3.650 +
   3.651  		pkg=$(GET license)
   3.652  		case $pkg in
   3.653  			/*)
   3.654 @@ -1072,16 +1064,42 @@
   3.655  		;;
   3.656  
   3.657  
   3.658 +	*\ tags\ *)
   3.659 +		#
   3.660 +		# Show tag cloud
   3.661 +		#
   3.662 +		search_form; sidebar
   3.663 +
   3.664 +		echo "<h2>$(_ 'Tags list')</h2>"
   3.665 +		brepo="<b>$repo</b>"
   3.666 +		case $repo in
   3.667 +			Any) title="$(_ 'List of tags in all repositories')" ;;
   3.668 +			*)   title="$(_ 'List of tags in repository "%s"' "$brepo")" ;;
   3.669 +		esac
   3.670 +		echo "<p>$title</p><p>"
   3.671 +		to_read=""
   3.672 +		for i in $(repo_list ""); do
   3.673 +			if [ ! -e $i/packages.info ] && [ $repo == 'Public' ]; then
   3.674 +				list=installed; else list=packages; fi
   3.675 +			to_read="$to_read $i/$list.info"
   3.676 +		done
   3.677 +		TAGS="$(awk -F$'\t' '{if($6){print $6}}' $to_read | tr ' ' $'\n' | sort | uniq -c)"
   3.678 +		MAX="$(echo "$TAGS" | awk '{if ($1 > MAX) MAX = $1} END{print MAX}')"
   3.679 +		echo "$TAGS" | awk -vMAX="$MAX" '{
   3.680 +			printf "<a class=\"tag%s\" href=\"?tag=%s\" title=\"%s\">%s</a> ", int($1 * 7 / MAX + 1), $2, $1, $2
   3.681 +		}'
   3.682 +		echo "</p>"
   3.683 +		;;
   3.684 +
   3.685 +
   3.686  	*\ tag\ *)
   3.687  		#
   3.688 -		# Show packages with matching tag; show tag cloud
   3.689 +		# Show packages with matching tag
   3.690  		#
   3.691 -		search_form
   3.692 -		sidebar
   3.693 -		tag=$(GET tag); repo=$(GET repo); my=$(GET my)
   3.694 -		[ -z "$repo" ] && repo='Any'
   3.695 -		if [ -n "$tag" ]; then
   3.696 -			cat << EOT
   3.697 +		search_form; sidebar
   3.698 +
   3.699 +		tag=$(GET tag)
   3.700 +		cat << EOT
   3.701  <h2>$(_ 'Tag "%s"' $tag)</h2>
   3.702  
   3.703  <form method="get" action="">
   3.704 @@ -1093,23 +1111,36 @@
   3.705  	</div>
   3.706  </div>
   3.707  EOT
   3.708 -			for i in $(repo_list ""); do
   3.709 -				show_list all
   3.710 -			done
   3.711 -			echo '</form>'
   3.712 +		for i in $(repo_list ""); do
   3.713 +			show_list all
   3.714 +		done
   3.715 +		echo '</form>'
   3.716 +		;;
   3.717  
   3.718 -		else
   3.719 -			params="&amp;my=$my&amp;repo=$repo" # don't forget it unexpectedly
   3.720 -			echo "<h2>$(_ 'Tags list')</h2>"
   3.721 -			echo "<p>"
   3.722 -			if [ ! -e $PKGS_DB/packages.info ]; then list=installed; else list=packages; fi
   3.723 -			TAGS="$(awk -F$'\t' '{if($6){print $6}}' $PKGS_DB/$list.info | tr ' ' $'\n' | sort | uniq -c)"
   3.724 -			MAX="$(echo "$TAGS" | awk '{if ($1 > MAX) MAX = $1} END{print MAX}')"
   3.725 -			echo "$TAGS" | awk -vMAX="$MAX" -vp="$params" '{
   3.726 -				printf "<a class=\"tag%s\" href=\"?tag=%s%s\" title=\"%s\">%s</a> ", int($1 * 7 / MAX + 1), $2, p, $1, $2
   3.727 -			}'
   3.728 -			echo "</p>"
   3.729 -		fi
   3.730 +
   3.731 +	*\ blocked\ *)
   3.732 +		#
   3.733 +		# Show blocked packages list
   3.734 +		#
   3.735 +		search_form; sidebar
   3.736 +
   3.737 +		cat << EOT
   3.738 +<h2>$(_ 'Blocked packages list')</h2>
   3.739 +
   3.740 +<form method="get" action="">
   3.741 +<div id="actions">
   3.742 +	<div class="float-left">$(_ 'Selection:'; show_button do=Unblock)
   3.743 +	</div>
   3.744 +</div>
   3.745 +EOT
   3.746 +		table_head
   3.747 +		for i in $(cat $PKGS_DB/blocked-packages.list); do
   3.748 +			awk -F$'\t' -vp="$i" '{
   3.749 +			if ($1 == p)
   3.750 +				printf "<tr><td><input type=\"checkbox\" name=\"pkg\" value=\"%s\"><a class=\"pkgib\" href=\"?info=%s\">%s</a></td><td>%s</td><td>%s</td><td><a href=\"%s\"></a></td></tr>\n", $1, gensub(/\+/, "%2B", "g", $1), $1, $2, $4, $5
   3.751 +			}' $PKGS_DB/installed.info
   3.752 +		done
   3.753 +		echo '</tbody></table></form>'
   3.754  		;;
   3.755  
   3.756  
   3.757 @@ -1117,8 +1148,8 @@
   3.758  		#
   3.759  		# Default to summary
   3.760  		#
   3.761 -		search_form
   3.762 -		sidebar
   3.763 +		search_form; sidebar
   3.764 +
   3.765  		[ -n "$(GET block)" ] && tazpkg block $(GET block)
   3.766  		[ -n "$(GET unblock)" ] && tazpkg unblock $(GET unblock)
   3.767  		cat << EOT
   3.768 @@ -1139,12 +1170,12 @@
   3.769  <tbody>
   3.770  <tr><td>$(_ 'Last recharge:')</td><td>
   3.771  EOT
   3.772 -		recharged="$(ls -l $PKGS_DB/packages.list | awk '{print $6, $7, $8}')"
   3.773 +		recharged="$(date -r $PKGS_DB/packages.info +%c 2>/dev/null)"
   3.774  		if [ -z "$recharged" ]; then
   3.775  			_ 'never'
   3.776  		else
   3.777 -			echo $recharged
   3.778 -			if [ -n "$(find $PKGS_DB/packages.list -mtime +10)" ]; then
   3.779 +			echo "<b>$recharged</b>"
   3.780 +			if [ -n "$(find $PKGS_DB/packages.info -mtime +10)" ]; then
   3.781  				_ '(Older than 10 days)'
   3.782  			else
   3.783  				_ '(Not older than 10 days)'
   3.784 @@ -1152,16 +1183,24 @@
   3.785  		fi
   3.786  		cat << EOT
   3.787  </td></tr>
   3.788 -<tr><td>$(_ 'Installed packages:')</td>
   3.789 -	<td>$(cat $PKGS_DB/installed.info | wc -l)</td></tr>
   3.790 -<tr><td>$(_ 'Mirrored packages:')</td>
   3.791 -	<td>$(cat $PKGS_DB/packages.list | wc -l)</td></tr>
   3.792 -<tr><td>$(_ 'Upgradeable packages:')</td>
   3.793 -	<td>$(cat $PKGS_DB/packages.up | wc -l)</td></tr>
   3.794 -<tr><td>$(_ 'Installed files:')</td>
   3.795 -	<td>$(cat $INSTALLED/*/files.list | wc -l)</td></tr>
   3.796 -<tr><td>$(_ 'Blocked packages:')</td>
   3.797 -	<td>$(cat $PKGS_DB/blocked-packages.list | wc -l)</td></tr>
   3.798 +<tr>
   3.799 +	<td>$(_ 'Installed packages:')</td>
   3.800 +	<td><b>$(cat $PKGS_DB/installed.info | wc -l)</a></b>
   3.801 +		<a href="?list&amp;my=my&amp;cat=all&amp;repo=Any">$(_ '(show)')</a></td></tr>
   3.802 +<tr>
   3.803 +	<td>$(_ 'Mirrored packages:')</td>
   3.804 +	<td><b>$(cat $PKGS_DB/packages.list | wc -l)</b></td></tr>
   3.805 +<tr>
   3.806 +	<td>$(_ 'Upgradeable packages:')</td>
   3.807 +	<td><b>$(cat $PKGS_DB/packages.up | wc -l)</b>
   3.808 +		<a href="?up">$(_ '(show)')</a></td></tr>
   3.809 +<tr>
   3.810 +	<td>$(_ 'Installed files:')</td>
   3.811 +	<td><b>$(cat $INSTALLED/*/files.list | wc -l)</b></td></tr>
   3.812 +<tr>
   3.813 +	<td>$(_ 'Blocked packages:')</td>
   3.814 +	<td><b>$(cat $PKGS_DB/blocked-packages.list | wc -l)</b>
   3.815 +		<a href="?blocked">$(_ '(show)')</a></td></tr>
   3.816  </tbody>
   3.817  </table>
   3.818  
     4.1 --- a/tazpanel/pkgs.css	Sat Jan 03 17:38:17 2015 +0200
     4.2 +++ b/tazpanel/pkgs.css	Fri Jan 09 17:05:12 2015 +0200
     4.3 @@ -5,9 +5,13 @@
     4.4  
     4.5  #sidebar {
     4.6  	position: fixed;
     4.7 -	top: 76px;
     4.8 -	right: 5px;
     4.9 +	top: 60px;
    4.10 +	right: 0;
    4.11 +	padding: 5px 5px 0 0;
    4.12  	width: 132px;
    4.13 +	height: 100%;
    4.14 +	border-left: 1pt solid #AAA;
    4.15 +	background-color: #EEE;
    4.16  }
    4.17  
    4.18  #sidebar h4 {
    4.19 @@ -94,6 +98,11 @@
    4.20  	max-width: 30em;
    4.21  	}
    4.22  
    4.23 +.pkglist tr { border-bottom: 1pt solid #DDD; }
    4.24 +
    4.25 +.pkglist, .pkglist thead { border: 1.5pt solid #BBB!important; }
    4.26 +
    4.27 +
    4.28  #actions { overflow: auto; }
    4.29  
    4.30  a.pages {
    4.31 @@ -133,3 +142,13 @@
    4.32  a.tag1:hover, a.tag2:hover, a.tag3:hover, a.tag4:hover, a.tag5:hover, a.tag6:hover, a.tag7:hover, a.tag8:hover {
    4.33  	outline: 1.5pt solid #FC8; }
    4.34  
    4.35 +#actions {
    4.36 +	background-color: #EEE;
    4.37 +	margin: 0; padding: 0 0.5ex!important;
    4.38 +	border: 1pt solid #DDD;
    4.39 +	border-radius: 0.5ex;
    4.40 +}
    4.41 +.button img {
    4.42 +	padding: 0 4px 0 0;
    4.43 +}
    4.44 +
     5.1 --- a/tazpkg	Sat Jan 03 17:38:17 2015 +0200
     5.2 +++ b/tazpkg	Fri Jan 09 17:05:12 2015 +0200
     5.3 @@ -2280,13 +2280,13 @@
     5.4  			esac
     5.5  		done
     5.6  		time=$(date +%s)
     5.7 -		installed_sum=$PKGS_DB/installed.$SUM
     5.8 +
     5.9  		look_for_priority
    5.10  		for repo in $priority; do
    5.11  			pkg_list=$repo/packages.list
    5.12  			mtime=$(find $pkg_list -mtime +7)
    5.13  			if [ "$mtime" ]; then
    5.14 -				if [ "$repo" = "$PKGS_DB" ]; then
    5.15 +				if [ "$repo" == "$PKGS_DB" ]; then
    5.16  					repo_name=main
    5.17  				else
    5.18  					repo_name="${repo##*/}"
    5.19 @@ -2295,10 +2295,14 @@
    5.20  				tazpkg recharge $repo_name
    5.21  			fi
    5.22  		done
    5.23 +
    5.24  		emsg "<n>$(_ 'Package')<i 28> $(_ 'Version')<i 48> $(_ 'Status')<->"
    5.25 +
    5.26  		cd $INSTALLED
    5.27  		newline > $UP_LIST
    5.28  		blocked_count=0
    5.29 +		installed_sum=$PKGS_DB/installed.$SUM
    5.30 +
    5.31  		for pkg in *; do
    5.32  			[ ! -d $pkg ] && continue
    5.33  			unset VERSION EXTRAVERSION
    5.34 @@ -2340,7 +2344,7 @@
    5.35  		upnb=$(wc -l < $UP_LIST)
    5.36  		pkgs=$(ls | wc -l)
    5.37  		time=$(($(date +%s) - $time))
    5.38 -		if [ "$upnb" = 0 ]; then
    5.39 +		if [ "$upnb" == 0 ]; then
    5.40  			install="n"
    5.41  			_ 'System is up-to-date...'
    5.42  		fi
    5.43 @@ -2352,7 +2356,8 @@
    5.44  
    5.45  		if [ "$upnb" != 0 ]; then
    5.46  			blocked="$(_p \
    5.47 -				'%s blocked' '%s blocked' $blocked_count \
    5.48 +				'%s blocked' \
    5.49 +				'%s blocked' $blocked_count \
    5.50  				$blocked_count)"
    5.51  
    5.52  			boldify "$(_p \