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&my=my&repo=Public"><img 2.8 + <li><a href="/pkgs.cgi?list&my=my&cat=all&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=&my=$my&repo=$repo">$(_ 'All tags...')</a> 3.114 - <a href="?cat=&my=$my&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&repo=$repo&page=" ' 3.134 + awk -F'"' -vpage="$page" -vnum_lines="$(wc -l < $1)" -vtext="$(_ 'Pages:') " -vurl="?list&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="&my=$my&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&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&$temp&nf" 3.518 + show_button "do=Install&nf" 3.519 else 3.520 - show_button "do=$action&$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&$pkg" 3.527 + show_button do=Unblock 3.528 else 3.529 - show_button "do=Block&$pkg" 3.530 + show_button do=Block 3.531 fi 3.532 - show_button "do=Repack&$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=&action=saveconf') 3.578 - $(show_button 'admin=&action=listconf') 3.579 - $(show_button 'admin=&action=quickcheck') 3.580 - $(show_button 'admin=&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="&my=$my&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&my=my&cat=all&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 \