tazpkg rev 762

tazpkg: re-make block and unblock, add chblock to change blocking of package; pkgs.cgi: remove website link from packages list, show selected packages count, add '(Un)block' button for bulk operation; pkgs.css: clean old code.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Wed Apr 01 04:29:22 2015 +0300 (2015-04-01)
parents 98c62c676216
children 5a6155d9197a
files tazpanel/pkgs.cgi tazpanel/pkgs.css tazpkg
line diff
     1.1 --- a/tazpanel/pkgs.cgi	Mon Mar 30 11:52:49 2015 +0300
     1.2 +++ b/tazpanel/pkgs.cgi	Wed Apr 01 04:29:22 2015 +0300
     1.3 @@ -55,7 +55,7 @@
     1.4  
     1.5  parse_packages_desc() {
     1.6  	IFS="|"
     1.7 -	cut -f 1,2,3,5 -d "|" | while read PACKAGE VERSION SHORT_DESC WEB_SITE
     1.8 +	cut -f 1,2,3 -d "|" | while read PACKAGE VERSION SHORT_DESC
     1.9  	do
    1.10  		class=pkg; [ -d $INSTALLED/${PACKAGE% } ] && class=pkgi
    1.11  		i18n_desc $PACKAGE
    1.12 @@ -64,7 +64,6 @@
    1.13  	<td><input type="checkbox" name="pkg" value="$PACKAGE">$(pkg_info_link $PACKAGE $class)</td>
    1.14  	<td>$VERSION</td>
    1.15  	<td>$SHORT_DESC</td>
    1.16 -	<td><a data-img="web" href="$WEB_SITE"></a></td>
    1.17  </tr>
    1.18  EOT
    1.19  	done
    1.20 @@ -82,7 +81,6 @@
    1.21  	<td><input type="checkbox" name="pkg" value="$PACKAGE">$(pkg_info_link $PACKAGE $class)</td>
    1.22  	<td>$VERSION</td>
    1.23  	<td>$SHORT_DESC</td>
    1.24 -	<td><a data-img="web" href="$WEB_SITE"></a></td>
    1.25  </tr>
    1.26  EOT
    1.27  	done
    1.28 @@ -107,6 +105,7 @@
    1.29  		*Link*)       class='link';    label="$(_ 'Link')" ;;
    1.30  		*Block*)      class='lock';    label="$(_ 'Block')" ;;
    1.31  		*Unblock*)    class='unlock';  label="$(_ 'Unblock')" ;;
    1.32 +		*Chblock*)    class='chlock';  label="$(_ '(Un)block')" ;;
    1.33  		*Repack*)     class='repack';  label="$(_ 'Repack')" ;;
    1.34  		*saveconf*)   class='save';    label="$(_ 'Save configuration')" ;;
    1.35  		*listconf*)   class='list';    label="$(_ 'List configuration files')" ;;
    1.36 @@ -117,11 +116,12 @@
    1.37  		*removelink*) class='unlink';  label="$(_ 'Remove link')" ;;
    1.38  		*add-mirror)  class='add';     label="$(_n 'Add mirror')" ;;
    1.39  		*add-repo)    class='add';     label="$(_n 'Add repository')" ;;
    1.40 +		toggle)       class='toggle';  label="$(_n 'Toggle all')" ;;
    1.41  		esac
    1.42 -		if [ -n "$class" ]; then
    1.43 +		if [ "$button" == 'toggle' ]; then
    1.44 +			echo -n "<span class=\"float-right\"><button data-icon=\"$class\" onclick=\"checkBoxes()\">$label</button></span>"
    1.45 +		else
    1.46  			echo -n "<button data-icon=\"$class\" name=\"${button%%=*}\" value=\"${button#*=}\">$label</button>"
    1.47 -		else
    1.48 -			echo -n "<button name=\"${button%%=*}\" value=\"${button#*=}\"><img src=\"$IMAGES/$img.png\"/>$label</button>"
    1.49  		fi
    1.50  	done
    1.51  }
    1.52 @@ -156,7 +156,6 @@
    1.53  			<td>$(_ 'Name')</td>
    1.54  			<td>$(_ 'Version')</td>
    1.55  			<td>$(_ 'Description')</td>
    1.56 -			<td>$(_ 'Web')</td>
    1.57  		</tr>
    1.58  	</thead>
    1.59  	<tbody>
    1.60 @@ -383,6 +382,7 @@
    1.61  		theForm.appendChild(hInput);
    1.62  	}
    1.63  }
    1.64 +document.getElementById('countSelected').innerText = pkgs.length;
    1.65  </script>
    1.66  EOT
    1.67  	fi
    1.68 @@ -516,13 +516,16 @@
    1.69  <h2>$(_ 'Packages list')</h2>
    1.70  <p>$title</p>
    1.71  
    1.72 -<div>$(_ 'Selection:';
    1.73 -	{
    1.74 -		[ "$my" != 'my' ] && show_button do=Install
    1.75 -		show_button do=Remove
    1.76 -	} | sed 's|button |button form="pkglist" |g')
    1.77 -	<button data-icon="toggle" onclick="checkBoxes(window)">$(_ 'Toggle all')</button>
    1.78 -</div>
    1.79 +<section>
    1.80 +	<div>$(_ 'Selected packages:') <span id="countSelected"></span></div>
    1.81 +	<footer>
    1.82 +		$({
    1.83 +			[ "$my" != 'my' ] && show_button do=Install
    1.84 +			show_button do=Chblock do=Remove
    1.85 +		} | sed 's|button |button form="pkglist" |g')
    1.86 +		$(show_button toggle)
    1.87 +	</footer>
    1.88 +</section>
    1.89  
    1.90  <form id="pkglist" class="wide">
    1.91  EOT
    1.92 @@ -531,7 +534,7 @@
    1.93  		done
    1.94  		cat << EOT
    1.95  </form>
    1.96 -<script type="text/javascript">window.onscroll = scrollHandler;</script>
    1.97 +<script type="text/javascript">window.onscroll = scrollHandler; setCountSelPkgs();</script>
    1.98  EOT
    1.99  		;;
   1.100  
   1.101 @@ -551,10 +554,13 @@
   1.102  		cat << EOT
   1.103  <h2>$(_ 'Search packages')</h2>
   1.104  
   1.105 -<div>$(_ 'Selection:';
   1.106 -	show_button do=Install do=Remove | sed 's|button |button form="pkglist" |g')
   1.107 -	<button data-icon="toggle" onclick="checkBoxes(window)">$(_ 'Toggle all')</button>
   1.108 -</div>
   1.109 +<section>
   1.110 +	<div>$(_ 'Selected packages:') <span id="countSelected"></span></div>
   1.111 +	<footer>
   1.112 +		$(show_button do=Install do=Chblock do=Remove | sed 's|button |button form="pkglist" |g')
   1.113 +		$(show_button toggle)
   1.114 +	</footer>
   1.115 +</section>
   1.116  
   1.117  <form id="pkglist" class="wide">
   1.118  EOT
   1.119 @@ -589,6 +595,7 @@
   1.120  	</tbody>
   1.121  	</table>
   1.122  </form>
   1.123 +<script type="text/javascript">window.onscroll = scrollHandler; setCountSelPkgs();</script>
   1.124  EOT
   1.125  		;;
   1.126  
   1.127 @@ -631,11 +638,13 @@
   1.128  		cat << EOT
   1.129  <h2>$(_ 'Up packages')</h2>
   1.130  
   1.131 -<div>$(_ 'Selection:';
   1.132 -	show_button do=Install do=Remove | sed 's|button |button form="pkglist" |g')
   1.133 -	<button data-icon="toggle" onclick="checkBoxes(window)">$(_ 'Toggle all')</button>
   1.134 -	<div class="float-right">$(show_button recharge)</div>
   1.135 -</div>
   1.136 +<section>
   1.137 +	<div>$(_ 'Selected packages:') <span id="countSelected"></span></div>
   1.138 +	<footer>
   1.139 +		$(show_button do=Install do=Chblock do=Remove | sed 's|button |button form="pkglist" |g')
   1.140 +		$(show_button toggle)
   1.141 +	</footer>
   1.142 +</section>
   1.143  
   1.144  <form id="pkglist" class="wide">
   1.145  EOT
   1.146 @@ -647,7 +656,12 @@
   1.147  			grep -hs "^$pkg	" $PKGS_DB/packages.info $PKGS_DB/undigest/*/packages.info | parse_packages_info
   1.148  		done
   1.149  
   1.150 -		echo "</tbody></table></form>"
   1.151 +		cat << EOT
   1.152 +		</tbody>
   1.153 +	</table>
   1.154 +</form>
   1.155 +<script type="text/javascript">window.onscroll = scrollHandler; setCountSelPkgs();</script>
   1.156 +EOT
   1.157  		;;
   1.158  
   1.159  
   1.160 @@ -668,12 +682,13 @@
   1.161  		# Describe the command
   1.162  		bpkgs="<b>$pkgs</b>"; opt=''
   1.163  		case $cmd in
   1.164 -			install) MSG="$(_ 'Installing: %s' "$bpkgs")"; opt=--forced; cmd=get-install ;;
   1.165 -			remove)  MSG="$(_ 'Removing: %s'   "$bpkgs")" ;;
   1.166 -			link)    MSG="$(_ 'Linking: %s'    "$bpkgs")"; opt=$(readlink $PKGS_DB/fslink) ;;
   1.167 -			block)   MSG="$(_ 'Blocking: %s'   "$bpkgs")" ;;
   1.168 -			unblock) MSG="$(_ 'Unblocking: %s' "$bpkgs")" ;;
   1.169 -			repack)  MSG="$(_ 'Repacking: %s'  "$bpkgs")" ;;
   1.170 +			install) MSG="$(_ 'Installing: %s'   "$bpkgs")"; opt=--forced; cmd=get-install ;;
   1.171 +			remove)  MSG="$(_ 'Removing: %s'     "$bpkgs")" ;;
   1.172 +			link)    MSG="$(_ 'Linking: %s'      "$bpkgs")"; opt=$(readlink $PKGS_DB/fslink) ;;
   1.173 +			block)   MSG="$(_ 'Blocking: %s'     "$bpkgs")" ;;
   1.174 +			unblock) MSG="$(_ 'Unblocking: %s'   "$bpkgs")" ;;
   1.175 +			chblock) MSG="$(_ '(Un)blocking: %s' "$bpkgs")" ;;
   1.176 +			repack)  MSG="$(_ 'Repacking: %s'    "$bpkgs")" ;;
   1.177  		esac
   1.178  
   1.179  		cat << EOT
   1.180 @@ -1159,18 +1174,23 @@
   1.181  		cat << EOT
   1.182  <h2 data-icon="tag">$(_ 'Tag "%s"' $tag)</h2>
   1.183  
   1.184 -<div>$(_ 'Selection:';
   1.185 -	show_button do=Install do=Remove | sed 's|button |button form="pkglist" |g')
   1.186 -	<button data-icon="toggle" onclick="checkBoxes(window)">$(_ 'Toggle all')</button>
   1.187 -	<div class="float-right">$(show_button tags)</div>
   1.188 -</div>
   1.189 +<section>
   1.190 +	<div>$(_ 'Selected packages:') <span id="countSelected"></span></div>
   1.191 +	<footer>
   1.192 +		$(show_button do=Install do=Chblock do=Remove | sed 's|button |button form="pkglist" |g')
   1.193 +		$(show_button toggle)
   1.194 +	</footer>
   1.195 +</section>
   1.196  
   1.197  <form id="pkglist" class="wide">
   1.198  EOT
   1.199  		for i in $(repo_list ""); do
   1.200  			show_list all
   1.201  		done
   1.202 -		echo '</form>'
   1.203 +		cat << EOT
   1.204 +</form>
   1.205 +<script type="text/javascript">window.onscroll = scrollHandler; setCountSelPkgs();</script>
   1.206 +EOT
   1.207  		;;
   1.208  
   1.209  
   1.210 @@ -1183,10 +1203,15 @@
   1.211  		cat << EOT
   1.212  <h2>$(_ 'Blocked packages list')</h2>
   1.213  
   1.214 -<form>
   1.215 -<div id="actions">
   1.216 -	$(_ 'Selection:'; show_button do=Unblock)
   1.217 -</div>
   1.218 +<section>
   1.219 +	<div>$(_ 'Selected packages:') <span id="countSelected"></span></div>
   1.220 +	<footer>
   1.221 +		$(show_button do=Unblock | sed 's|button |button form="pkglist" |g')
   1.222 +		$(show_button toggle)
   1.223 +	</footer>
   1.224 +</section>
   1.225 +
   1.226 +<form id="pkglist" class="wide">
   1.227  EOT
   1.228  		table_head
   1.229  		for i in $(cat $PKGS_DB/blocked-packages.list); do
   1.230 @@ -1195,7 +1220,12 @@
   1.231  				printf "<tr><td><input type=\"checkbox\" name=\"pkg\" value=\"%s\"><a data-icon=\"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.232  			}' $PKGS_DB/installed.info
   1.233  		done
   1.234 -		echo '</tbody></table></form>'
   1.235 +		cat << EOT
   1.236 +		</tbody>
   1.237 +	</table>
   1.238 +</form>
   1.239 +<script type="text/javascript">window.onscroll = scrollHandler; setCountSelPkgs();</script>
   1.240 +EOT
   1.241  		;;
   1.242  
   1.243  
     2.1 --- a/tazpanel/pkgs.css	Mon Mar 30 11:52:49 2015 +0300
     2.2 +++ b/tazpanel/pkgs.css	Wed Apr 01 04:29:22 2015 +0300
     2.3 @@ -1,4 +1,7 @@
     2.4 -/*body { -webkit-appearance: window; }*/
     2.5 +/**
     2.6 + * CSS style for TazPkg/TazPanel - (C) 2011-2015 SliTaz GNU/Linux
     2.7 + */
     2.8 +
     2.9  
    2.10  /**
    2.11   * Sidebar menus
    2.12 @@ -22,7 +25,16 @@
    2.13  	text-align: center;
    2.14  }
    2.15  
    2.16 +
    2.17 +
    2.18 +
    2.19 +
    2.20 +/**
    2.21 + * Sidebar category selector
    2.22 + */
    2.23 +
    2.24  /* hack to remove unwanted scrollbar from multiline selector */
    2.25 +
    2.26  .select_wrap {
    2.27  	display: inline-block;
    2.28  	vertical-align: top;
    2.29 @@ -45,65 +57,19 @@
    2.30  #sidebar a {
    2.31  	display: inline-block;
    2.32  	padding: 0 0 0 0.5em; margin: 0;
    2.33 -	color: #000;
    2.34 +	color: CaptionText;
    2.35  	font-size: small;
    2.36  	width: 100%;
    2.37  }
    2.38  
    2.39  
    2.40 +
    2.41 +
    2.42 +
    2.43  /**
    2.44   * List of packages
    2.45   */
    2.46  
    2.47 -/* links classes:
    2.48 - *   pkg   - package (not installed);
    2.49 - *   pkgi  - package (installed);
    2.50 - *   pkgib - package (installed and blocked);
    2.51 - *   w     - web site
    2.52 - *
    2.53 - * you can style links using icons and/or color
    2.54 - */
    2.55 -
    2.56 -a.pkg   { background: url(images/tp-new.png)   no-repeat left; }
    2.57 -a.pkgi  { background: url(images/tp-pkgi.png)  no-repeat left; }
    2.58 -a.pkgib { background: url(images/tp-pkgib.png) no-repeat left; color: red; }
    2.59 -a.w::before, .pkglist td:nth-child(4) a::before {
    2.60 -	font-family: TazPanel; content: 'web';
    2.61 -
    2.62 -	vertical-align: baseline;
    2.63 -	padding: 0 0.2rem 0 0;
    2.64 -	font-size: 1rem;
    2.65 -
    2.66 -	font-style: normal;
    2.67 -	font-weight: normal;
    2.68 -	font-variant: normal;
    2.69 -	text-transform: none;
    2.70 -	line-height: 1;
    2.71 -	display: inline-block;
    2.72 -	text-decoration: none;
    2.73 -	width: 1rem; text-align: center;
    2.74 -
    2.75 -	-webkit-text-rendering: optimizeLegibility;
    2.76 -	   -moz-text-rendering: optimizeLegibility;
    2.77 -	    -ms-text-rendering: optimizeLegibility;
    2.78 -	     -o-text-rendering: optimizeLegibility;
    2.79 -	        text-rendering: optimizeLegibility;
    2.80 -
    2.81 -	-webkit-font-smoothing: antialiased;
    2.82 -	   -moz-font-smoothing: antialiased;
    2.83 -	    -ms-font-smoothing: antialiased;
    2.84 -	     -o-font-smoothing: antialiased;
    2.85 -	        font-smoothing: antialiased;
    2.86 -}
    2.87 -
    2.88 -a.pkg, a.pkgi, a.pkgib, a.w, .pkglist td:nth-child(4) a {
    2.89 -	margin: 0; padding: 0 0 0 17px;
    2.90 -	min-height: 16px; min-width: 16px;
    2.91 -	display: inline-block;
    2.92 -}
    2.93 -
    2.94 -
    2.95 -
    2.96  /* not break the line */
    2.97  .pkglist td:nth-child(1),
    2.98  .filelist td:nth-child(1) { white-space: nowrap; }
    2.99 @@ -167,7 +133,7 @@
   2.100  	background: #F94;
   2.101  	color: black;
   2.102  }
   2.103 -.pages.current, a.pages.current:hover {
   2.104 +.pages.current, .pages.current:hover {
   2.105  	font-weight: bold;
   2.106  	border: 1px solid #07F;
   2.107  	background: #07F;
     3.1 --- a/tazpkg	Mon Mar 30 11:52:49 2015 +0300
     3.2 +++ b/tazpkg	Wed Apr 01 04:29:22 2015 +0300
     3.3 @@ -2532,15 +2532,16 @@
     3.4  		check_root $@
     3.5  		check_for_package_on_cmdline
     3.6  		newline
     3.7 +		if [ ! -d $INSTALLED/$PACKAGE ]; then
     3.8 +			_ 'Package "%s" is not installed.' $PACKAGE; exit
     3.9 +		fi
    3.10  		if grep -qs "^$PACKAGE" $BLOCKED; then
    3.11 -			_ 'Package "%s" is already in the blocked packages list.' $PACKAGE
    3.12 +			_ 'Package "%s" is already blocked.' $PACKAGE
    3.13  		else
    3.14 -			action 'Add package "%s" to: %s...' $PACKAGE $BLOCKED
    3.15  			echo $PACKAGE >> $BLOCKED
    3.16 -			status
    3.17  			# Log this activity
    3.18 -			. $INSTALLED/$PACKAGE/receipt
    3.19 -			log_pkg Blocked
    3.20 +			. $INSTALLED/$PACKAGE/receipt; log_pkg Blocked
    3.21 +			_ 'Package "%s" blocked.' $PACKAGE
    3.22  		fi
    3.23  		newline ;;
    3.24  
    3.25 @@ -2550,16 +2551,38 @@
    3.26  		check_root $@
    3.27  		check_for_package_on_cmdline
    3.28  		newline
    3.29 +		if [ ! -d $INSTALLED/$PACKAGE ]; then
    3.30 +			_ 'Package "%s" is not installed.' $PACKAGE; exit
    3.31 +		fi
    3.32  		if grep -qs "^$PACKAGE" $BLOCKED; then
    3.33 -			action 'Removing package "%s" from: %s...' $PACKAGE $BLOCKED
    3.34 -			sed -i s/$PACKAGE/''/ $BLOCKED
    3.35 -			sed -i '/^$/d' $BLOCKED
    3.36 -			status
    3.37 +			sed -i "/^$PACKAGE\$/d" $BLOCKED
    3.38  			# Log this activity
    3.39 -			. $INSTALLED/$PACKAGE/receipt
    3.40 -			log_pkg Unblocked
    3.41 +			. $INSTALLED/$PACKAGE/receipt; log_pkg Unblocked
    3.42 +			_ 'Package "%s" unblocked.' $PACKAGE
    3.43  		else
    3.44 -			_ 'Package "%s" is not in the blocked packages list.' $PACKAGE
    3.45 +			_ 'Package "%s" is not blocked.' $PACKAGE
    3.46 +		fi
    3.47 +		newline ;;
    3.48 +
    3.49 +
    3.50 +	chblock)
    3.51 +		# Change package's blocked status.
    3.52 +		check_root $@
    3.53 +		check_for_package_on_cmdline
    3.54 +		newline
    3.55 +		if [ ! -d $INSTALLED/$PACKAGE ]; then
    3.56 +			_ 'Package "%s" is not installed.' $PACKAGE; exit
    3.57 +		fi
    3.58 +		if grep -qs "^$PACKAGE" $BLOCKED; then
    3.59 +			sed -i "/^$PACKAGE\$/d" $BLOCKED
    3.60 +			# Log this activity
    3.61 +			. $INSTALLED/$PACKAGE/receipt; log_pkg Unblocked
    3.62 +			_ 'Package "%s" unblocked.' $PACKAGE
    3.63 +		else
    3.64 +			echo $PACKAGE >> $BLOCKED
    3.65 +			# Log this activity
    3.66 +			. $INSTALLED/$PACKAGE/receipt; log_pkg Blocked
    3.67 +			_ 'Package "%s" blocked.' $PACKAGE
    3.68  		fi
    3.69  		newline ;;
    3.70