# HG changeset patch # User Aleksej Bobylev # Date 1419434947 -7200 # Node ID f9554d3c23b7670d49e890aa2c01e58c62140f77 # Parent 0bfdb6c09732ceaefde03b0bf27664d3920c96e1 pkgs.cgi: add pager to "cat" "cat" runs fast enough, so not to cache it, but can add setting in the config file (as well as config for page length) diff -r 0bfdb6c09732 -r f9554d3c23b7 tazpanel/pkgs.cgi --- a/tazpanel/pkgs.cgi Wed Dec 24 03:53:37 2014 +0200 +++ b/tazpanel/pkgs.cgi Wed Dec 24 17:29:07 2014 +0200 @@ -157,6 +157,9 @@ list) img='tazpkg'; label="$(_ 'My packages')" ;; linkable) img='tazpkg'; label="$(_ 'Linkable packages')" ;; admin) img='edit'; label="$(_ 'Administration')" ;; + *Install*nf*) img=''; label="$(_ 'Install (Non Free)')" ;; + *Install*) img=''; label="$(_ 'Install')" ;; + *Remove*) img='stop'; label="$(_ 'Remove')" ;; *Block*) img=''; label="$(_ 'Block')" ;; *Unblock*) img=''; label="$(_ 'Unblock')" ;; *Repack*) img=''; label="$(_ 'Repack')" ;; @@ -283,6 +286,7 @@ esac } + make_mixed_list() { for L in $LANG ${LANG%%_*}; do if [ -e "$PKGS_DB/packages-desc.$L" ]; then @@ -299,6 +303,30 @@ } +# Print links to the pages + +pager() { + awk -F'"' -vpage="$page" -vcached="$1" -vnum_lines="$(wc -l < $1)" -vtext="$(_ 'Pages:') " -vurl="cat=$category&repo=$repo&page=" ' +BEGIN{ + num_pages = int(num_lines / 100) + (num_lines % 100 != 0) + if (num_pages != 1) printf "

%s", text +} +{ + if (num_pages == 1) exit + p = int(NR/100) + 1 + if (p != page) current = ""; else current=" current" + + if (NR%100 == 1) printf "%s ", $6, p - 1 +} +END{ + if (num_pages == 1) exit + if (NR%100 != 0) printf "%s\">%s", $6, p + print "

" +}' $1 +} + + # # Commands @@ -449,12 +477,12 @@

$(_ 'Repository: %s' $Repo_Name)

EOT fi - echo '' - table_head - echo '' case $category in extra) + echo '
' + table_head + echo '' NA="$(_n 'n/a')" for pkg in $(cat $i/extra.list); do PKG="$(grep ^$pkg$'\t' $i/installed.info)" @@ -464,8 +492,10 @@ echo "$pkg $NA - $NA http://mirror.slitaz.org/packages/get/$pkg - - -" fi done | parse_packages_info + echo "
" ;; *) + cached="$CACHE_DIR/$repo-$category" make_mixed_list | sort -t$'\t' -k1,1 | awk -F$'\t' -vc="$category" ' { if (PKG && PKG != $1) { @@ -484,13 +514,20 @@ if ($9 == "i") { PKG = $1; VER = $2; DSC = $4; WEB = $5; INS = "i"; next} if (! INS) { PKG = $1; VER = $2; DSC = $4; WEB = $5 } } -}' +}' > $cached + page=$(GET page); [ -z "$page" ] && page=1 + pager="$(pager $cached)" + + echo "$pager" + echo '' + table_head + echo '' + tail -n+$((($page-1)*100+1)) $cached | head -n100 + echo "
" + echo "$pager" + rm -f $cached ;; esac - cat << EOT - - -EOT done echo '' ;; @@ -699,7 +736,6 @@ . $INSTALLED/$pkg/receipt files=$(wc -l < $INSTALLED/$pkg/files.list) action="Remove" - action_i18n=$(_ 'Remove') else cd $PKGS_DB LOADING_MSG=$(_ 'Getting package info...') @@ -713,7 +749,6 @@ CATEGORY="$(echo $4)" WEB_SITE="$(echo $5)" action="Install" - action_i18n=$(_ 'Install') temp="${pkg#get-}" fi cat << EOT @@ -725,9 +760,9 @@ EOT if [ "$temp" != "$pkg" -a "$action" == "Install" ]; then temp="$(echo $pkg | sed 's/get-//g')" - echo "$(_ 'Install (Non Free)')" + show_button "do=Install&$temp&nf" else - echo "$action_i18n" + show_button "do=$action&$pkg" fi if [ -d $INSTALLED/$pkg ]; then diff -r 0bfdb6c09732 -r f9554d3c23b7 tazpanel/pkgs.css --- a/tazpanel/pkgs.css Wed Dec 24 03:53:37 2014 +0200 +++ b/tazpanel/pkgs.css Wed Dec 24 17:29:07 2014 +0200 @@ -49,3 +49,24 @@ max-width: 30em; } +#actions { overflow: auto; } + +a.pages { + padding: 0.5ex; + margin: 0.5ex 0; + border: 1px solid #AAA; + width: 3ex; + display: inline-block; + text-align: center; + } +a.pages:hover { + border: 1px solid #F94; + background: #F94; + color: black; + } +a.pages.current, a.pages.current:hover { + font-weight: bold; + border: 1px solid #07F; + background: #07F; + color: #eee; + }