tazpkg diff tazpanel/pkgs.cgi @ 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 |
line diff
1.1 --- a/tazpanel/pkgs.cgi Sat Jan 03 17:38:17 2015 +0200 1.2 +++ b/tazpanel/pkgs.cgi Fri Jan 09 17:05:12 2015 +0200 1.3 @@ -132,20 +132,27 @@ 1.4 tag=) img=''; label="$(_ 'Tags')" ;; 1.5 linkable) img='tazpkg'; label="$(_ 'Linkable packages')" ;; 1.6 admin) img='edit'; label="$(_ 'Administration')" ;; 1.7 - *Install*nf*) img=''; label="$(_ 'Install (Non Free)')" ;; 1.8 - *Install*) img=''; label="$(_ 'Install')" ;; 1.9 + *Install*nf*) img='tazpkg-installed'; label="$(_ 'Install (Non Free)')" ;; 1.10 + *Install*) img='tazpkg-installed'; label="$(_ 'Install')" ;; 1.11 *Remove*) img='stop'; label="$(_ 'Remove')" ;; 1.12 - *Block*) img=''; label="$(_ 'Block')" ;; 1.13 - *Unblock*) img=''; label="$(_ 'Unblock')" ;; 1.14 - *Repack*) img=''; label="$(_ 'Repack')" ;; 1.15 + *Link*) img='tazpkg'; label="$(_ 'Link')" ;; 1.16 + *Block*) img='tazpkg'; label="$(_ 'Block')" ;; 1.17 + *Unblock*) img='tazpkg'; label="$(_ 'Unblock')" ;; 1.18 + *Repack*) img='tazpkg'; label="$(_ 'Repack')" ;; 1.19 *saveconf*) img='tazpkg'; label="$(_ 'Save configuration')" ;; 1.20 *listconf*) img='edit'; label="$(_ 'List configuration files')" ;; 1.21 *quickcheck*) img='recharge'; label="$(_ 'Quick check')" ;; 1.22 *fullcheck*) img='recharge'; label="$(_ 'Full check')" ;; 1.23 + *clean*) img='stop'; label="$(_ 'Clean')" ;; 1.24 + *setlink*) img='harddisk'; label="$(_ 'Set link')" ;; 1.25 + *removelink*) img='stop'; label="$(_ 'Remove link')" ;; 1.26 esac 1.27 - echo -n "<a class=\"button\" href=\"?$1\">" 1.28 - [ -n "$img" ] && echo -n "<img src=\"$IMAGES/$img.png\" />" 1.29 - echo "$label</a>" 1.30 + cat << EOT 1.31 + <button class="button" type="submit" name="${1%%=*}" value="${1#*=}"> 1.32 + <img src="$IMAGES/$img.png"/>$label 1.33 + </button> 1.34 +EOT 1.35 + 1.36 } 1.37 1.38 1.39 @@ -176,7 +183,7 @@ 1.40 1.41 table_head() { 1.42 cat << EOT 1.43 -<table class="zebra outbox pkglist"> 1.44 +<table class="zebra pkglist"> 1.45 <thead> 1.46 <tr> 1.47 <td>$(_ 'Name')</td> 1.48 @@ -191,15 +198,22 @@ 1.49 1.50 1.51 sidebar() { 1.52 - repo=$(GET repo); repo=${repo:-Public} 1.53 - my=$(GET my); my=${my:-my} 1.54 - cat=$(GET cat); cat=${cat:-all} 1.55 + repo=$(COOKIE repo); repo=${repo:-Public}; [ -n "$(GET repo)" ] && repo=$(GET repo) 1.56 + my=$(COOKIE my); my=${my:-my}; [ -n "$(GET my)" ] && my=$(GET my) 1.57 + cat=$(COOKIE cat); cat=${cat:-all}; [ -n "$(GET cat)" ] && cat=$(GET cat) 1.58 1.59 cat << EOT 1.60 -<form method="get" action=""> 1.61 +<script type="text/javascript"> 1.62 +function setCookie(name) { 1.63 + document.cookie = name+"="+document.getElementById(name).value; } 1.64 +function setValue(name, value) { 1.65 + document.getElementById(name).value=value; 1.66 + setCookie(name); } 1.67 +</script> 1.68 +<form method="post" action="?list"> 1.69 1.70 <div id="sidebar"> 1.71 - <select id="my" name="my" value="$my" onchange="this.form.submit()"> 1.72 + <select id="my" value="$my" onchange="setCookie('my'); this.form.submit()"> 1.73 <option value="my">$(_ 'My packages')</option> 1.74 <option value="no">$(_ 'All packages')</option> 1.75 </select> 1.76 @@ -207,7 +221,7 @@ 1.77 <h4>$(_ 'Categories')</h4> 1.78 1.79 <div class="select_wrap"> 1.80 - <select id="cat" name="cat" size="16" onchange="this.form.submit()"> 1.81 + <select id="cat" size="16" onclick="setCookie('cat'); this.form.submit()"> 1.82 <option value="base-system" >$(_ 'base-system')</option> 1.83 <option value="x-window" >$(_ 'x-window')</option> 1.84 <option value="utilities" >$(_ 'utilities')</option> 1.85 @@ -226,8 +240,8 @@ 1.86 <option value="extra" >$(_ 'extra')</option> 1.87 </select> 1.88 <script type="text/javascript"> 1.89 - document.getElementById('my').value="$my" 1.90 - document.getElementById('cat').value="$cat" 1.91 + setValue('my', "$my") 1.92 + setValue('cat', "$cat") 1.93 </script> 1.94 </div> 1.95 EOT 1.96 @@ -236,19 +250,19 @@ 1.97 cat << EOT 1.98 <h4>$(_ 'Repository')</h4> 1.99 1.100 - <select id="repo" name="repo" onchange="this.form.submit()"> 1.101 + <select id="repo" onchange="setCookie('repo')"> 1.102 <option value="Public">$(_ 'Public')</option> 1.103 $(for i in $(ls $PKGS_DB/undigest); do 1.104 echo "<option value=\"$i\">$i</option>" 1.105 done) 1.106 <option value="Any">$(_ 'Any')</option> 1.107 </select> 1.108 - <script type="text/javascript">document.getElementById('repo').value="$repo"</script> 1.109 + <script type="text/javascript">setValue('repo', "$repo")</script> 1.110 EOT 1.111 fi 1.112 cat << EOT 1.113 - <a href="?tag=&my=$my&repo=$repo">$(_ 'All tags...')</a> 1.114 - <a href="?cat=&my=$my&repo=$repo">$(_ 'All categories...')</a> 1.115 + <a href="?tags">$(_ 'All tags...')</a> 1.116 + <a href="?cats">$(_ 'All categories...')</a> 1.117 </div> 1.118 </form> 1.119 EOT 1.120 @@ -283,10 +297,16 @@ 1.121 } 1.122 1.123 1.124 +header_repo_name() { 1.125 + [ -d $PKGS_DB/undigest ] && [ "$repo" != "Public" ] && \ 1.126 + echo "<h3>$(_ 'Repository: %s' $(repo_name $1))</h3>" 1.127 +} 1.128 + 1.129 + 1.130 # Print links to the pages 1.131 1.132 pager() { 1.133 - awk -F'"' -vpage="$page" -vnum_lines="$(wc -l < $1)" -vtext="$(_ 'Pages:') " -vurl="?cat=$category&repo=$repo&page=" ' 1.134 + awk -F'"' -vpage="$page" -vnum_lines="$(wc -l < $1)" -vtext="$(_ 'Pages:') " -vurl="?list&page=" ' 1.135 BEGIN{ 1.136 num_pages = int(num_lines / 100) + (num_lines % 100 != 0) 1.137 if (num_pages != 1) printf "<p>%s", text 1.138 @@ -312,6 +332,7 @@ 1.139 1.140 show_list() { 1.141 cached=$(mktemp) 1.142 + [ -n "$tag" ] && cat='' 1.143 { 1.144 for L in $LANG ${LANG%%_*}; do 1.145 if [ -e "$PKGS_DB/packages-desc.$L" ]; then 1.146 @@ -320,9 +341,9 @@ 1.147 done 1.148 [ -e "$i/blocked-packages.list" ] && cat $i/blocked-packages.list 1.149 sed 's|.*|&\ti|' $i/installed.info 1.150 - [ "$category" == 'extra' ] || [ $1 == 'my' ] || cat $i/packages.info 1.151 - [ "$category" == 'extra' ] && sed 's|.*|&\t-\textra\t-\thttp://mirror.slitaz.org/packages/get/&\t-\t-\t-|' $PKGS_DB/extra.list 1.152 - } | sort -t$'\t' -k1,1 | sed '/^$/d' | awk -F$'\t' -vc="${category:--}" -vt="${tag:--}" ' 1.153 + [ "$cat" == 'extra' ] || [ $1 == 'my' ] || cat $i/packages.info 1.154 + [ "$cat" == 'extra' ] && sed 's|.*|&\t-\textra\t-\thttp://mirror.slitaz.org/packages/get/&\t-\t-\t-|' $PKGS_DB/extra.list 1.155 + } | sort -t$'\t' -k1,1 | sed '/^$/d' | awk -F$'\t' -vc="${cat:--}" -vt="${tag:--}" ' 1.156 { 1.157 if (PKG && PKG != $1) { 1.158 if (SEL) { 1.159 @@ -344,16 +365,17 @@ 1.160 page=$(GET page); [ -z "$page" ] && page=1 1.161 1.162 pager="$(pager $cached)" 1.163 - if [ "$pager" != "<p>$(_ 'Pages:') </p>" ]; then 1.164 - [ -d $PKGS_DB/undigest ] && [ "$repo" != "Public" ] && \ 1.165 - echo "<h3>$(_ 'Repository: %s' $(repo_name $i))</h3>" 1.166 - echo "$pager" 1.167 - 1.168 - table_head 1.169 - tail -n+$((($page-1)*100+1)) $cached | head -n100 1.170 - echo "</tbody></table>" 1.171 - 1.172 - echo "$pager" 1.173 + list="$(tail -n+$((($page-1)*100+1)) $cached | head -n100)" 1.174 + list1=${list:1:1} 1.175 + if [ "$pager" != "<p>$(_ 'Pages:') </p>" ] && [ -n "$list1" ]; then 1.176 + cat << EOT 1.177 +$(header_repo_name $i) 1.178 +$pager 1.179 + $(table_head) 1.180 + $list 1.181 + </tbody></table> 1.182 +$pager 1.183 +EOT 1.184 fi 1.185 rm -f $cached 1.186 } 1.187 @@ -385,24 +407,16 @@ 1.188 # 1.189 # List linkable packages. 1.190 # 1.191 - search_form 1.192 - sidebar 1.193 - LOADING_MSG=$(_ 'Listing linkable packages...') 1.194 - loading_msg 1.195 + search_form; sidebar 1.196 + LOADING_MSG=$(_ 'Listing linkable packages...'); loading_msg 1.197 + 1.198 cat << EOT 1.199 <h2>$(_ 'Linkable packages')</h2> 1.200 1.201 <form method="get" action=""> 1.202 -<input type="hidden" name="do" value="Link" /> 1.203 <div id="actions"> 1.204 - <div class="float-left"> 1.205 - $(_ 'Selection:') 1.206 - <input type="submit" value="$(_ 'Link')" /> 1.207 - </div> 1.208 - <div class="float-right"> 1.209 - $(show_button recharge) 1.210 - $(show_button up) 1.211 - </div> 1.212 + <div class="float-left">$(_ 'Selection:') $(show_button do=Link)</div> 1.213 + <div class="float-right">$(show_button recharge) $(show_button up)</div> 1.214 </div> 1.215 EOT 1.216 table_head 1.217 @@ -428,17 +442,17 @@ 1.218 ;; 1.219 1.220 1.221 - *\ cat\ *) 1.222 + *\ cats\ *) 1.223 # 1.224 - # List all packages by category. 1.225 + # List of all categories. 1.226 # 1.227 - my=$(GET my); category=$(GET cat); repo=$(GET repo) 1.228 - search_form 1.229 - sidebar | sed "s/a_$category/active/;s/repo_$repo/active/" 1.230 - if [ -z "$category" ] || [ "$category" == 'cat' ]; then 1.231 + search_form; sidebar 1.232 + 1.233 + echo "<h2>$(_ 'Categories list')</h2>" 1.234 + 1.235 + for pkgsinfo in $(repo_list /packages.info); do 1.236 + header_repo_name $(dirname $pkgsinfo) 1.237 cat << EOT 1.238 -<h2>$(_ 'Categories list')</h2> 1.239 - 1.240 <table class="zebra outbox"> 1.241 <thead> 1.242 <tr> 1.243 @@ -449,9 +463,8 @@ 1.244 </thead> 1.245 <tbody> 1.246 EOT 1.247 - params="&my=$my&repo=$repo" # don't forget it unexpectedly 1.248 { 1.249 - awk -F$'\t' '{print $3}' $PKGS_DB/packages.info | sort | uniq -c 1.250 + awk -F$'\t' '{print $3}' $pkgsinfo | sort | uniq -c 1.251 awk -F$'\t' '{print $3}' $PKGS_DB/installed.info | sed 's|.*|& i|' | sort | uniq -c 1.252 } | sort -k2,2 | awk ' 1.253 { 1.254 @@ -460,34 +473,52 @@ 1.255 } 1.256 END { 1.257 for (n in c) print n, m[n], i[n] 1.258 - }' | sort | awk -vp="$params" '{ 1.259 - printf "<tr><td><a href=\"?cat=%s%s\">%s</a></td><td>%d</td><td>%d</td></tr>", $1, p, $1, $2, $3 1.260 + }' | sort | awk '{ 1.261 + printf "<tr><td><a href=\"?list&cat=%s\">%s</a></td><td>%d</td><td>%d</td></tr>", $1, $1, $2, $3 1.262 }' 1.263 echo '</tbody></table>' 1.264 - else 1.265 - LOADING_MSG="$(_ 'Listing packages...')" 1.266 - loading_msg 1.267 - cat << EOT 1.268 -<h2>$(_ 'Category: %s' $category)</h2> 1.269 + done 1.270 + ;; 1.271 + 1.272 + 1.273 + *\ list\ *) 1.274 + # 1.275 + # List all packages by category. 1.276 + # 1.277 + search_form; sidebar 1.278 + LOADING_MSG="$(_ 'Listing packages...')"; loading_msg 1.279 + 1.280 + bcat="<b>$cat</b>"; brepo="<b>$repo</b>" 1.281 + case $repo in 1.282 + Any) 1.283 + case $my in 1.284 + my) title="$(_ 'Installed packages of category "%s"' "$bcat")" ;; 1.285 + *) title="$(_ 'All packages of category "%s"' "$bcat")" ;; 1.286 + esac ;; 1.287 + *) 1.288 + case $my in 1.289 + my) title="$(_ 'Installed packages of category "%s" in repository "%s"' "$bcat" "$brepo")" ;; 1.290 + *) title="$(_ 'All packages of category "%s" in repository "%s"' "$bcat" "$brepo")" ;; 1.291 + esac ;; 1.292 + esac 1.293 + 1.294 + cat << EOT 1.295 +<h2>$(_ 'Packages list')</h2> 1.296 +<p>$title</p> 1.297 1.298 <form method="get" action=""> 1.299 <div id="actions"> 1.300 - <div class="float-left"> 1.301 - $(_ 'Selection:') 1.302 - <input type="submit" name="do" value="Install" /> 1.303 - <input type="submit" name="do" value="Remove" /> 1.304 + <div class="float-left">$(_ 'Selection:') 1.305 + $([ "$my" != 'my' ] && show_button do=Install) 1.306 + $(show_button do=Remove) 1.307 </div> 1.308 - <div class="float-right"> 1.309 - $(show_button recharge) 1.310 - $(show_button up) 1.311 - </div> 1.312 + <div class="float-right">$(show_button recharge; show_button up)</div> 1.313 </div> 1.314 EOT 1.315 - for i in $(repo_list ""); do 1.316 - show_list ${my#no} 1.317 - done 1.318 - echo '</form>' 1.319 - fi 1.320 + for i in $(repo_list ""); do 1.321 + show_list ${my#no} 1.322 + done 1.323 + echo '</form>' 1.324 ;; 1.325 1.326 1.327 @@ -497,29 +528,20 @@ 1.328 # and so get result including packages names and descriptions 1.329 # 1.330 pkg=$(GET search); [ -z "$pkg" ] && xhtml_footer && exit 1.331 - repo=$(GET repo) 1.332 cd $PKGS_DB 1.333 - search_form 1.334 - sidebar | sed "s/repo_$repo/active/" 1.335 - LOADING_MSG="$(_ 'Searching packages...')" 1.336 - loading_msg 1.337 + 1.338 + search_form; sidebar 1.339 + LOADING_MSG="$(_ 'Searching packages...')"; loading_msg 1.340 + 1.341 cat << EOT 1.342 <h2>$(_ 'Search packages')</h2> 1.343 1.344 <form method="get" action=""> 1.345 <div id="actions"> 1.346 - <div class="float-left"> 1.347 - $(_ 'Selection:') 1.348 - <input type="submit" name="do" value="Install" /> 1.349 - <input type="submit" name="do" value="Remove" /> 1.350 - <a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a> 1.351 - </div> 1.352 - <div class="float-right"> 1.353 - $(show_button recharge) 1.354 - $(show_button up) 1.355 - </div> 1.356 + <div class="float-left">$(_ 'Selection:'; show_button do=Install; show_button do=Remove) 1.357 + <a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a></div> 1.358 + <div class="float-right">$(show_button recharge; show_button up)</div> 1.359 </div> 1.360 -<input type="hidden" name="repo" value="$repo" /> 1.361 EOT 1.362 if [ -n "$(GET files)" ]; then 1.363 cat <<EOT 1.364 @@ -560,10 +582,9 @@ 1.365 # 1.366 # Lets recharge the packages list 1.367 # 1.368 - search_form 1.369 - sidebar 1.370 - LOADING_MSG="$(_ 'Recharging lists...')" 1.371 - loading_msg 1.372 + search_form; sidebar 1.373 + LOADING_MSG="$(_ 'Recharging lists...')"; loading_msg 1.374 + 1.375 cat << EOT 1.376 <h2>$(_ 'Recharge')</h2> 1.377 1.378 @@ -572,9 +593,7 @@ 1.379 <div class="float-left"> 1.380 <p>$(_ 'Recharge checks for new or updated packages')</p> 1.381 </div> 1.382 - <div class="float-right"> 1.383 - $(show_button up) 1.384 - </div> 1.385 + <div class="float-right">$(show_button up)</div> 1.386 </div> 1.387 <div class="wrapper"> 1.388 <pre> 1.389 @@ -593,25 +612,17 @@ 1.390 # 1.391 # Upgrade packages 1.392 # 1.393 - cd $PKGS_DB 1.394 - search_form 1.395 - sidebar 1.396 - LOADING_MSG="$(_ 'Checking for upgrades...')" 1.397 - loading_msg 1.398 + search_form; sidebar 1.399 + LOADING_MSG="$(_ 'Checking for upgrades...')"; loading_msg 1.400 + 1.401 cat << EOT 1.402 <h2>$(_ 'Up packages')</h2> 1.403 1.404 <form method="get" action=""> 1.405 <div id="actions"> 1.406 - <div class="float-left"> 1.407 - $(_ 'Selection:') 1.408 - <input type="submit" name="do" value="Install" /> 1.409 - <input type="submit" name="do" value="Remove" /> 1.410 - <a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a> 1.411 - </div> 1.412 - <div class="float-right"> 1.413 - $(show_button recharge) 1.414 - </div> 1.415 + <div class="float-left">$(_ 'Selection:'; show_button do=Install; show_button do=Remove) 1.416 + <a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a></div> 1.417 + <div class="float-right">$(show_button recharge)</div> 1.418 </div> 1.419 EOT 1.420 tazpkg up --check >/dev/null 1.421 @@ -632,44 +643,25 @@ 1.422 # 1.423 # Do an action on one or some packages 1.424 # 1.425 + search_form; sidebar 1.426 + LOADING_MSG="$(_ 'Please wait')"; loading_msg 1.427 + 1.428 opt="" 1.429 - pkgs="" 1.430 - cmdline=$(echo ${QUERY_STRING#do=} | sed s'/&/ /g') 1.431 - cmd=$(echo ${cmdline} | awk '{print $1}') 1.432 - cmdline=${cmdline#*repo=* } 1.433 - pkgs=$(echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//) 1.434 - pkgs="$(httpd -d "$pkgs")" 1.435 - cmd=$(echo $cmd | tr [:upper:] [:lower:]) 1.436 + cmd=$(echo $(GET do) | tr [:upper:] [:lower:]) 1.437 + pkgs=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="pkg")print $2}') 1.438 + pkgs=$(httpd -d "$pkgs") 1.439 + bpkgs="<b>$pkgs</b>" 1.440 case $cmd in 1.441 - install) 1.442 - cmd=get-install opt=--forced 1.443 - LOADING_MSG="get-installing packages..." 1.444 - MSG="$(_ 'Installing: %s' "$pkgs")" ;; 1.445 - remove) 1.446 - MSG="$(_ 'Removing: %s' "$pkgs")" ;; 1.447 - link) 1.448 - opt=$(readlink $PKGS_DB/fslink) 1.449 - LOADING_MSG="linking packages..." 1.450 - MSG="$(_ 'Linking: %s' "$pkgs")" ;; 1.451 - block) 1.452 - MSG="$(_ 'Blocking: %s' "$pkgs")" ;; 1.453 - unblock) 1.454 - MSG="$(_ 'Unblocking: %s' "$pkgs")" ;; 1.455 - repack) 1.456 - MSG="$(_ 'Repacking: %s' "$pkgs")" ;; 1.457 + install) MSG="$(_ 'Installing: %s' "$bpkgs")"; opt=--forced; cmd=get-install ;; 1.458 + remove) MSG="$(_ 'Removing: %s' "$bpkgs")" ;; 1.459 + link) MSG="$(_ 'Linking: %s' "$bpkgs")"; opt=$(readlink $PKGS_DB/fslink) ;; 1.460 + block) MSG="$(_ 'Blocking: %s' "$bpkgs")" ;; 1.461 + unblock) MSG="$(_ 'Unblocking: %s' "$bpkgs")" ;; 1.462 + repack) MSG="$(_ 'Repacking: %s' "$bpkgs")" ;; 1.463 esac 1.464 - search_form 1.465 - sidebar 1.466 - loading_msg 1.467 - pkgs=$pkgs 1.468 cat << EOT 1.469 -<h2>TazPkg: $cmd</h2> 1.470 +<h2>TazPkg: $(GET do)</h2> 1.471 1.472 -<div id="actions"> 1.473 - <div class="float-left"> 1.474 - <p>$(_ 'Performing tasks on packages')</p> 1.475 - </div> 1.476 -</div> 1.477 <div class="box">$MSG</div> 1.478 EOT 1.479 for pkg in $pkgs; do 1.480 @@ -684,16 +676,16 @@ 1.481 # Packages info 1.482 # 1.483 pkg=$(GET info) 1.484 - search_form 1.485 - sidebar 1.486 + search_form; sidebar 1.487 + LOADING_MSG=$(_ 'Getting package info...'); loading_msg 1.488 + 1.489 + temp="${pkg#get-}" 1.490 if [ -d $INSTALLED/$pkg ]; then 1.491 . $INSTALLED/$pkg/receipt 1.492 files=$(wc -l < $INSTALLED/$pkg/files.list) 1.493 action="Remove" 1.494 else 1.495 cd $PKGS_DB 1.496 - LOADING_MSG=$(_ 'Getting package info...') 1.497 - loading_msg 1.498 eval "$(awk -F$'\t' -vp=$pkg ' 1.499 $1==p{ 1.500 printf "PACKAGE=\"%s\"; VERSION=\"%s\"; CATEGORY=\"%s\"; ", $1, $2, $3 1.501 @@ -704,34 +696,30 @@ 1.502 UNPACKED_SIZE=${SIZES#* } 1.503 1.504 action="Install" 1.505 - temp="${pkg#get-}" 1.506 fi 1.507 cat << EOT 1.508 <h2>$(_ 'Package %s' $PACKAGE)</h2> 1.509 1.510 <form method="get" action=""> 1.511 +<input type="hidden" name="pkg" value="$temp"/> 1.512 <div id="actions"> 1.513 - <div class="float-left"> 1.514 - <p> 1.515 EOT 1.516 if [ "$temp" != "$pkg" -a "$action" == "Install" ]; then 1.517 - show_button "do=Install&$temp&nf" 1.518 + show_button "do=Install&nf" 1.519 else 1.520 - show_button "do=$action&$pkg" 1.521 + show_button "do=$action" 1.522 fi 1.523 1.524 if [ -d $INSTALLED/$pkg ]; then 1.525 if grep -qs "^$pkg$" $PKGS_DB/blocked-packages.list; then 1.526 - show_button "do=Unblock&$pkg" 1.527 + show_button do=Unblock 1.528 else 1.529 - show_button "do=Block&$pkg" 1.530 + show_button do=Block 1.531 fi 1.532 - show_button "do=Repack&$pkg" 1.533 + show_button do=Repack 1.534 fi 1.535 i18n_desc $pkg 1.536 cat << EOT 1.537 - </p> 1.538 - </div> 1.539 </div> 1.540 <table class="zebra outbox"> 1.541 <tbody> 1.542 @@ -775,6 +763,8 @@ 1.543 # TazPkg configuration page 1.544 # 1.545 cmd=$(GET admin) 1.546 + search_form; sidebar 1.547 + 1.548 case "$cmd" in 1.549 clean) 1.550 rm -rf $CACHE_DIR/* ;; 1.551 @@ -806,33 +796,32 @@ 1.552 rm-repo=*) 1.553 repository=${cmd#rm-repo=} 1.554 rm -rf $PKGS_DB/undigest/$repository ;; 1.555 + setlink) 1.556 + [ -d "$(GET link)/$INSTALLED" ] && ln -fs $(GET link) $PKGS_DB/fslink ;; 1.557 + removelink) 1.558 + rm -f $PKGS_DB/fslink ;; 1.559 esac 1.560 - [ "$cmd" == "$(_n 'Set link')" ] && 1.561 - [ -d "$(GET link)/$INSTALLED" ] && ln -fs $(GET link) $PKGS_DB/fslink 1.562 - [ "$cmd" == "$(_n 'Remove link')" ] && rm -f $PKGS_DB/fslink 1.563 1.564 - cache_files=$(find $CACHE_DIR -name *.tazpkg | wc -l) 1.565 - cache_size=$(du -sh $CACHE_DIR | cut -f1 | sed 's|\.0||') 1.566 - sidebar 1.567 cat << EOT 1.568 <h2>$(_ 'Administration')</h2> 1.569 1.570 <form method="get" action=""> 1.571 +<input type="hidden" name="admin" /> 1.572 + 1.573 <div> 1.574 <p>$(_ 'TazPkg administration and settings')</p> 1.575 </div> 1.576 <div id="actions"> 1.577 - $(show_button 'admin=&action=saveconf') 1.578 - $(show_button 'admin=&action=listconf') 1.579 - $(show_button 'admin=&action=quickcheck') 1.580 - $(show_button 'admin=&action=fullcheck') 1.581 + $(show_button action=saveconf) 1.582 + $(show_button action=listconf) 1.583 + $(show_button action=quickcheck) 1.584 + $(show_button action=fullcheck) 1.585 </div> 1.586 </form> 1.587 EOT 1.588 case "$(GET action)" in 1.589 saveconf) 1.590 - LOADING_MSG=$(_ 'Creating the package...') 1.591 - loading_msg 1.592 + LOADING_MSG=$(_ 'Creating the package...'); loading_msg 1.593 echo "<pre>" 1.594 cd $HOME 1.595 tazpkg repack-config | filter_taztools_msgs 1.596 @@ -851,26 +840,29 @@ 1.597 echo "</ul>" 1.598 ;; 1.599 quickcheck) 1.600 - LOADING_MSG=$(_ 'Checking packages consistency...') 1.601 - loading_msg 1.602 + LOADING_MSG=$(_ 'Checking packages consistency...'); loading_msg 1.603 echo "<pre>" 1.604 tazpkg check 1.605 echo "</pre>" ;; 1.606 fullcheck) 1.607 - LOADING_MSG=$(_ 'Full packages check...') 1.608 - loading_msg 1.609 + LOADING_MSG=$(_ 'Full packages check...'); loading_msg 1.610 echo "<pre>" 1.611 tazpkg check --full 1.612 echo "</pre>" ;; 1.613 esac 1.614 + 1.615 + cache_files=$(find $CACHE_DIR -name *.tazpkg | wc -l) 1.616 + cache_size=$(du -sh $CACHE_DIR | cut -f1 | sed 's|\.0||') 1.617 + [ "$cache_files" == 0 ] && cache_size="0K" 1.618 cat << EOT 1.619 <h3>$(_ 'Packages cache')</h3> 1.620 1.621 <div> 1.622 <form method="get" action=""> 1.623 <p>$(_ 'Packages in the cache: %s (%s)' $cache_files $cache_size) 1.624 - <input type="hidden" name="admin" value="clean" /> 1.625 - <input type="submit" value="$(_n 'Clean')" /> 1.626 + $(show_button admin=clean) 1.627 + <!--input type="hidden" name="admin" value="clean" /> 1.628 + <input type="submit" value="$(_n 'Clean')" /--> 1.629 </p> 1.630 </form> 1.631 </div> 1.632 @@ -930,8 +922,8 @@ 1.633 <form method="get" action=""> 1.634 <p> 1.635 <input type="text" name="link" value="$(readlink $PKGS_DB/fslink 2> /dev/null)" size="50"> 1.636 - <input type="submit" name="admin" value="$(_ 'Set link')" /> 1.637 - <input type="submit" name="admin" value="$(_ 'Remove link')" /> 1.638 + $(show_button admin=setlink) 1.639 + $(show_button admin=removelink) 1.640 </p> 1.641 </form> 1.642 EOT 1.643 @@ -991,8 +983,8 @@ 1.644 # 1.645 # Show licenses for installed packages 1.646 # 1.647 - search_form 1.648 - sidebar 1.649 + search_form; sidebar 1.650 + 1.651 pkg=$(GET license) 1.652 case $pkg in 1.653 /*) 1.654 @@ -1072,16 +1064,42 @@ 1.655 ;; 1.656 1.657 1.658 + *\ tags\ *) 1.659 + # 1.660 + # Show tag cloud 1.661 + # 1.662 + search_form; sidebar 1.663 + 1.664 + echo "<h2>$(_ 'Tags list')</h2>" 1.665 + brepo="<b>$repo</b>" 1.666 + case $repo in 1.667 + Any) title="$(_ 'List of tags in all repositories')" ;; 1.668 + *) title="$(_ 'List of tags in repository "%s"' "$brepo")" ;; 1.669 + esac 1.670 + echo "<p>$title</p><p>" 1.671 + to_read="" 1.672 + for i in $(repo_list ""); do 1.673 + if [ ! -e $i/packages.info ] && [ $repo == 'Public' ]; then 1.674 + list=installed; else list=packages; fi 1.675 + to_read="$to_read $i/$list.info" 1.676 + done 1.677 + TAGS="$(awk -F$'\t' '{if($6){print $6}}' $to_read | tr ' ' $'\n' | sort | uniq -c)" 1.678 + MAX="$(echo "$TAGS" | awk '{if ($1 > MAX) MAX = $1} END{print MAX}')" 1.679 + echo "$TAGS" | awk -vMAX="$MAX" '{ 1.680 + printf "<a class=\"tag%s\" href=\"?tag=%s\" title=\"%s\">%s</a> ", int($1 * 7 / MAX + 1), $2, $1, $2 1.681 + }' 1.682 + echo "</p>" 1.683 + ;; 1.684 + 1.685 + 1.686 *\ tag\ *) 1.687 # 1.688 - # Show packages with matching tag; show tag cloud 1.689 + # Show packages with matching tag 1.690 # 1.691 - search_form 1.692 - sidebar 1.693 - tag=$(GET tag); repo=$(GET repo); my=$(GET my) 1.694 - [ -z "$repo" ] && repo='Any' 1.695 - if [ -n "$tag" ]; then 1.696 - cat << EOT 1.697 + search_form; sidebar 1.698 + 1.699 + tag=$(GET tag) 1.700 + cat << EOT 1.701 <h2>$(_ 'Tag "%s"' $tag)</h2> 1.702 1.703 <form method="get" action=""> 1.704 @@ -1093,23 +1111,36 @@ 1.705 </div> 1.706 </div> 1.707 EOT 1.708 - for i in $(repo_list ""); do 1.709 - show_list all 1.710 - done 1.711 - echo '</form>' 1.712 + for i in $(repo_list ""); do 1.713 + show_list all 1.714 + done 1.715 + echo '</form>' 1.716 + ;; 1.717 1.718 - else 1.719 - params="&my=$my&repo=$repo" # don't forget it unexpectedly 1.720 - echo "<h2>$(_ 'Tags list')</h2>" 1.721 - echo "<p>" 1.722 - if [ ! -e $PKGS_DB/packages.info ]; then list=installed; else list=packages; fi 1.723 - TAGS="$(awk -F$'\t' '{if($6){print $6}}' $PKGS_DB/$list.info | tr ' ' $'\n' | sort | uniq -c)" 1.724 - MAX="$(echo "$TAGS" | awk '{if ($1 > MAX) MAX = $1} END{print MAX}')" 1.725 - echo "$TAGS" | awk -vMAX="$MAX" -vp="$params" '{ 1.726 - printf "<a class=\"tag%s\" href=\"?tag=%s%s\" title=\"%s\">%s</a> ", int($1 * 7 / MAX + 1), $2, p, $1, $2 1.727 - }' 1.728 - echo "</p>" 1.729 - fi 1.730 + 1.731 + *\ blocked\ *) 1.732 + # 1.733 + # Show blocked packages list 1.734 + # 1.735 + search_form; sidebar 1.736 + 1.737 + cat << EOT 1.738 +<h2>$(_ 'Blocked packages list')</h2> 1.739 + 1.740 +<form method="get" action=""> 1.741 +<div id="actions"> 1.742 + <div class="float-left">$(_ 'Selection:'; show_button do=Unblock) 1.743 + </div> 1.744 +</div> 1.745 +EOT 1.746 + table_head 1.747 + for i in $(cat $PKGS_DB/blocked-packages.list); do 1.748 + awk -F$'\t' -vp="$i" '{ 1.749 + if ($1 == p) 1.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 1.751 + }' $PKGS_DB/installed.info 1.752 + done 1.753 + echo '</tbody></table></form>' 1.754 ;; 1.755 1.756 1.757 @@ -1117,8 +1148,8 @@ 1.758 # 1.759 # Default to summary 1.760 # 1.761 - search_form 1.762 - sidebar 1.763 + search_form; sidebar 1.764 + 1.765 [ -n "$(GET block)" ] && tazpkg block $(GET block) 1.766 [ -n "$(GET unblock)" ] && tazpkg unblock $(GET unblock) 1.767 cat << EOT 1.768 @@ -1139,12 +1170,12 @@ 1.769 <tbody> 1.770 <tr><td>$(_ 'Last recharge:')</td><td> 1.771 EOT 1.772 - recharged="$(ls -l $PKGS_DB/packages.list | awk '{print $6, $7, $8}')" 1.773 + recharged="$(date -r $PKGS_DB/packages.info +%c 2>/dev/null)" 1.774 if [ -z "$recharged" ]; then 1.775 _ 'never' 1.776 else 1.777 - echo $recharged 1.778 - if [ -n "$(find $PKGS_DB/packages.list -mtime +10)" ]; then 1.779 + echo "<b>$recharged</b>" 1.780 + if [ -n "$(find $PKGS_DB/packages.info -mtime +10)" ]; then 1.781 _ '(Older than 10 days)' 1.782 else 1.783 _ '(Not older than 10 days)' 1.784 @@ -1152,16 +1183,24 @@ 1.785 fi 1.786 cat << EOT 1.787 </td></tr> 1.788 -<tr><td>$(_ 'Installed packages:')</td> 1.789 - <td>$(cat $PKGS_DB/installed.info | wc -l)</td></tr> 1.790 -<tr><td>$(_ 'Mirrored packages:')</td> 1.791 - <td>$(cat $PKGS_DB/packages.list | wc -l)</td></tr> 1.792 -<tr><td>$(_ 'Upgradeable packages:')</td> 1.793 - <td>$(cat $PKGS_DB/packages.up | wc -l)</td></tr> 1.794 -<tr><td>$(_ 'Installed files:')</td> 1.795 - <td>$(cat $INSTALLED/*/files.list | wc -l)</td></tr> 1.796 -<tr><td>$(_ 'Blocked packages:')</td> 1.797 - <td>$(cat $PKGS_DB/blocked-packages.list | wc -l)</td></tr> 1.798 +<tr> 1.799 + <td>$(_ 'Installed packages:')</td> 1.800 + <td><b>$(cat $PKGS_DB/installed.info | wc -l)</a></b> 1.801 + <a href="?list&my=my&cat=all&repo=Any">$(_ '(show)')</a></td></tr> 1.802 +<tr> 1.803 + <td>$(_ 'Mirrored packages:')</td> 1.804 + <td><b>$(cat $PKGS_DB/packages.list | wc -l)</b></td></tr> 1.805 +<tr> 1.806 + <td>$(_ 'Upgradeable packages:')</td> 1.807 + <td><b>$(cat $PKGS_DB/packages.up | wc -l)</b> 1.808 + <a href="?up">$(_ '(show)')</a></td></tr> 1.809 +<tr> 1.810 + <td>$(_ 'Installed files:')</td> 1.811 + <td><b>$(cat $INSTALLED/*/files.list | wc -l)</b></td></tr> 1.812 +<tr> 1.813 + <td>$(_ 'Blocked packages:')</td> 1.814 + <td><b>$(cat $PKGS_DB/blocked-packages.list | wc -l)</b> 1.815 + <a href="?blocked">$(_ '(show)')</a></td></tr> 1.816 </tbody> 1.817 </table> 1.818