pakfire.cgi: Convert icons to buttons.

Message ID 20250327053443.2764833-1-stephen@firemypi.org
State Staged
Commit 22e7fefc22d23a033c32ffed035995892a895ad7
Headers
Series pakfire.cgi: Convert icons to buttons. |

Commit Message

Stephen Cuka March 27, 2025, 5:34 a.m. UTC
  - Convert icons to buttons on main and confirmation pages.

 - Disable Upgrade button if no core or add-on updates available.

 - Disable Install and Remove buttons until an add-on is selected
   to install or remove.

 - Change 'abort' to 'cancel'.

 - Change 'uninstall' to 'remove'.

 - Set fixed height on select boxes to keep the size the same if
   there are no options for the select.

 - Change translation for install/remove description text, the previous
   text referred to the icons.
     'pakfire install description' -> 'Please select one or more add-ons to install.'
     'pakfire uninstall description' -> 'Please select one or more add-ons to remove.'

Signed-off-by: Stephen Cuka <stephen@firemypi.org>
---
 doc/language_issues.de   |   2 +
 doc/language_issues.en   |   6 +-
 doc/language_issues.es   |   2 +
 doc/language_issues.fr   |   2 +
 doc/language_issues.it   |   2 +
 doc/language_issues.nl   |   2 +
 doc/language_issues.pl   |   2 +
 doc/language_issues.ru   |   2 +
 doc/language_issues.tr   |   2 +
 html/cgi-bin/pakfire.cgi | 212 +++++++++++++++++++++++----------------
 langs/de/cgi-bin/de.pl   |   4 +-
 langs/en/cgi-bin/en.pl   |   4 +-
 langs/es/cgi-bin/es.pl   |   4 +-
 langs/fr/cgi-bin/fr.pl   |   4 +-
 langs/it/cgi-bin/it.pl   |   4 +-
 langs/nl/cgi-bin/nl.pl   |   4 +-
 langs/pl/cgi-bin/pl.pl   |   4 +-
 langs/ru/cgi-bin/ru.pl   |   4 +-
 langs/tr/cgi-bin/tr.pl   |   4 +-
 19 files changed, 160 insertions(+), 110 deletions(-)
  

Comments

Michael Tremer March 28, 2025, 12:12 p.m. UTC | #1
Hello Stephen,

Thank you for your patches.

I don’t know what I can say to this. It just works :) Well done!

I have merged this into Core Update 194.

Best,
-Michael

> On 27 Mar 2025, at 05:34, Stephen Cuka <stephen@firemypi.org> wrote:
> 
> - Convert icons to buttons on main and confirmation pages.
> 
> - Disable Upgrade button if no core or add-on updates available.
> 
> - Disable Install and Remove buttons until an add-on is selected
>   to install or remove.
> 
> - Change 'abort' to 'cancel'.
> 
> - Change 'uninstall' to 'remove'.
> 
> - Set fixed height on select boxes to keep the size the same if
>   there are no options for the select.
> 
> - Change translation for install/remove description text, the previous
>   text referred to the icons.
>     'pakfire install description' -> 'Please select one or more add-ons to install.'
>     'pakfire uninstall description' -> 'Please select one or more add-ons to remove.'
> 
> Signed-off-by: Stephen Cuka <stephen@firemypi.org>
> ---
> doc/language_issues.de   |   2 +
> doc/language_issues.en   |   6 +-
> doc/language_issues.es   |   2 +
> doc/language_issues.fr   |   2 +
> doc/language_issues.it   |   2 +
> doc/language_issues.nl   |   2 +
> doc/language_issues.pl   |   2 +
> doc/language_issues.ru   |   2 +
> doc/language_issues.tr   |   2 +
> html/cgi-bin/pakfire.cgi | 212 +++++++++++++++++++++++----------------
> langs/de/cgi-bin/de.pl   |   4 +-
> langs/en/cgi-bin/en.pl   |   4 +-
> langs/es/cgi-bin/es.pl   |   4 +-
> langs/fr/cgi-bin/fr.pl   |   4 +-
> langs/it/cgi-bin/it.pl   |   4 +-
> langs/nl/cgi-bin/nl.pl   |   4 +-
> langs/pl/cgi-bin/pl.pl   |   4 +-
> langs/ru/cgi-bin/ru.pl   |   4 +-
> langs/tr/cgi-bin/tr.pl   |   4 +-
> 19 files changed, 160 insertions(+), 110 deletions(-)
> 
> diff --git a/doc/language_issues.de b/doc/language_issues.de
> index aeb37ccf7..c5db3dc64 100644
> --- a/doc/language_issues.de
> +++ b/doc/language_issues.de
> @@ -42,6 +42,7 @@ WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> WARNING: translation string unused: Weekly
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -831,6 +832,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/doc/language_issues.en b/doc/language_issues.en
> index 288aeda6e..5e4221153 100644
> --- a/doc/language_issues.en
> +++ b/doc/language_issues.en
> @@ -82,7 +82,6 @@ WARNING: untranslated string: WakeOnLan = Wake On Lan
> WARNING: untranslated string: a ca certificate with this name already exists = A CA certificate with this name already exists.
> WARNING: untranslated string: a connection with this common name already exists = A connection with this common name already exists.
> WARNING: untranslated string: a connection with this name already exists = A connection with this name already exists.
> -WARNING: untranslated string: abort = abort
> WARNING: untranslated string: access point name = Access Point Name
> WARNING: untranslated string: access point name is invalid = Access Point Name is invalid
> WARNING: untranslated string: access point name is required = Access Point Name is required
> @@ -1457,7 +1456,7 @@ WARNING: untranslated string: pakfire core update level = Core-Update-Level
> WARNING: untranslated string: pakfire finished = Pakfire has finished! Returning...
> WARNING: untranslated string: pakfire finished error = Pakfire has finished! Errors occurred, please check the log output before proceeding.
> WARNING: untranslated string: pakfire install = Install
> -WARNING: untranslated string: pakfire install description = Please choose one or more items from the list below and click the plus to install.
> +WARNING: untranslated string: pakfire install description = Please select one or more add-ons to install.
> WARNING: untranslated string: pakfire install package = You want to install the following packages: 
> WARNING: untranslated string: pakfire installed addons = Installed Add-ons:
> WARNING: untranslated string: pakfire invalid tree = Invalid repository selected
> @@ -1474,7 +1473,7 @@ WARNING: untranslated string: pakfire tree stable = Stable
> WARNING: untranslated string: pakfire tree testing = Testing
> WARNING: untranslated string: pakfire tree unstable = Unstable
> WARNING: untranslated string: pakfire uninstall all = Do you want to uninstall the following packages?
> -WARNING: untranslated string: pakfire uninstall description = Please choose one or more items from the list below and click the minus to uninstall.
> +WARNING: untranslated string: pakfire uninstall description = Please select one or more add-ons to remove.
> WARNING: untranslated string: pakfire uninstall package = You want to uninstall the following packages: 
> WARNING: untranslated string: pakfire updates = Available Updates
> WARNING: untranslated string: pakfire upgrade = Upgrade
> @@ -1804,7 +1803,6 @@ WARNING: untranslated string: unable to contact = Unable to contact
> WARNING: untranslated string: unblock = Unblock
> WARNING: untranslated string: unblock all = Unblock all
> WARNING: untranslated string: uncheck all = Uncheck all
> -WARNING: untranslated string: uninstall = Uninstall
> WARNING: untranslated string: unknown = UNKNOWN
> WARNING: untranslated string: unlimited = Unlimited
> WARNING: untranslated string: unnamed = Unnamed
> diff --git a/doc/language_issues.es b/doc/language_issues.es
> index c68e79292..de7a79bc4 100644
> --- a/doc/language_issues.es
> +++ b/doc/language_issues.es
> @@ -43,6 +43,7 @@ WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> WARNING: translation string unused: Weekly
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -896,6 +897,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/doc/language_issues.fr b/doc/language_issues.fr
> index e0d8cb1f4..41cda1988 100644
> --- a/doc/language_issues.fr
> +++ b/doc/language_issues.fr
> @@ -46,6 +46,7 @@ WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> WARNING: translation string unused: Weekly
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -869,6 +870,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/doc/language_issues.it b/doc/language_issues.it
> index e00d5c5c1..80ef72027 100644
> --- a/doc/language_issues.it
> +++ b/doc/language_issues.it
> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
> WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -822,6 +823,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/doc/language_issues.nl b/doc/language_issues.nl
> index 42fb6088d..43b16a94f 100644
> --- a/doc/language_issues.nl
> +++ b/doc/language_issues.nl
> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
> WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -822,6 +823,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/doc/language_issues.pl b/doc/language_issues.pl
> index e7ffefd71..e59af3996 100644
> --- a/doc/language_issues.pl
> +++ b/doc/language_issues.pl
> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
> WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -738,6 +739,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/doc/language_issues.ru b/doc/language_issues.ru
> index 6ce1a3516..371f38fa7 100644
> --- a/doc/language_issues.ru
> +++ b/doc/language_issues.ru
> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
> WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -733,6 +734,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/doc/language_issues.tr b/doc/language_issues.tr
> index 5cf3953ad..fd624e9d6 100644
> --- a/doc/language_issues.tr
> +++ b/doc/language_issues.tr
> @@ -39,6 +39,7 @@ WARNING: translation string unused: Subclass
> WARNING: translation string unused: TOS Bits
> WARNING: translation string unused: Utilization on
> WARNING: translation string unused: Verbose
> +WARNING: translation string unused: abort
> WARNING: translation string unused: access allowed
> WARNING: translation string unused: access refused with this oinkcode
> WARNING: translation string unused: accounting
> @@ -851,6 +852,7 @@ WARNING: translation string unused: tripwirewarningpolicy
> WARNING: translation string unused: umount
> WARNING: translation string unused: umount removable media before to unplug
> WARNING: translation string unused: unencrypted
> +WARNING: translation string unused: uninstall
> WARNING: translation string unused: unix charset
> WARNING: translation string unused: unix group
> WARNING: translation string unused: unix password sync
> diff --git a/html/cgi-bin/pakfire.cgi b/html/cgi-bin/pakfire.cgi
> index 80aaf9a1c..1cd39e411 100644
> --- a/html/cgi-bin/pakfire.cgi
> +++ b/html/cgi-bin/pakfire.cgi
> @@ -120,18 +120,18 @@ if(($cgiparams{'ACTION'} ne '') && ($pagemode eq $PM_DEFAULT)) {
> if(&_is_pakfire_busy()) {
> $errormessage = $Lang::tr{'pakfire already busy'};
> $pagemode = $PM_LOGREAD; # Running Pakfire instance found, switch to log viewer mode
> - } elsif(($cgiparams{'ACTION'} eq 'install') && ($cgiparams{'FORCE'} eq 'on')) {
> + } elsif(($cgiparams{'ACTION'} eq $Lang::tr{'pakfire install'}) && ($cgiparams{'FORCE'} eq 'on')) {
> my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
> &General::system_background("/usr/local/bin/pakfire", "install", "--non-interactive", "--no-colors", @pkgs);
> &_http_pagemode_redirect($PM_LOGREAD, 1);
> - } elsif(($cgiparams{'ACTION'} eq 'remove') && ($cgiparams{'FORCE'} eq 'on')) {
> + } elsif(($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) && ($cgiparams{'FORCE'} eq 'on')) {
> my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
> &General::system_background("/usr/local/bin/pakfire", "remove", "--non-interactive", "--no-colors", @pkgs);
> &_http_pagemode_redirect($PM_LOGREAD, 1);
> - } elsif($cgiparams{'ACTION'} eq 'update') {
> + } elsif($cgiparams{'ACTION'} eq $Lang::tr{'pakfire refresh list'}) {
> &General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
> &_http_pagemode_redirect($PM_LOGREAD, 1);
> - } elsif($cgiparams{'ACTION'} eq 'upgrade') {
> + } elsif($cgiparams{'ACTION'} eq $Lang::tr{'pakfire upgrade'}) {
> &General::system_background("/usr/local/bin/pakfire", "upgrade", "-y", "--no-colors");
> &_http_pagemode_redirect($PM_LOGREAD, 1);
> } elsif($cgiparams{'ACTION'} eq $Lang::tr{'save'}) {
> @@ -161,16 +161,11 @@ my $extraHead = <<END
> /* Main screen */
> table#pfmain {
> width: 100%;
> - border-style: hidden;
> table-layout: fixed;
> - }
> -
> - #pfmain td {
> - padding: 5px 20px 0;
> text-align: center;
> }
> - #pfmain tr:not(:last-child) > td {
> - padding-bottom: 1.5em;
> + #pfmain td {
> + padding: 0px 20px;
> }
> #pfmain tr > td.heading {
> padding: 0;
> @@ -207,7 +202,6 @@ my $extraHead = <<END
> margin-top: 0.7em;
> padding-top: 0.7em;
> border-top: 0.5px solid $Header::bordercolour;
> -
> text-align: left;
> min-height: 15em;
> overflow-x: auto;
> @@ -280,36 +274,40 @@ END
> 
> # Show Pakfire install/remove dependencies and confirm form
> # (_is_pakfire_busy status was checked before and can be omitted)
> -if (($cgiparams{'ACTION'} eq 'install') && ($pagemode eq $PM_DEFAULT)) {
> +if (($cgiparams{'ACTION'} eq $Lang::tr{'pakfire install'}) && ($pagemode eq $PM_DEFAULT)) {
> &Header::openbox("100%", "center", $Lang::tr{'request'});
> 
> my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
> my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
> print <<END;
> - <table style="width: 100%"><tr><td colspan='2'><p>$Lang::tr{'pakfire install package'} <strong>@{pkgs}</strong><br>
> - $Lang::tr{'pakfire possible dependency'}</p>
> - <pre>
> + <table style="width: 100%">
> + <tr>
> + <td>
> + <p>$Lang::tr{'pakfire install package'} <strong>@{pkgs}</strong><br>$Lang::tr{'pakfire possible dependency'}</p>
> + <pre>
> END
> foreach (@output) {
> $_ =~ s/\\[[0-1]\;[0-9]+m//g;
> print "$_\n";
> }
> print <<END;
> - </pre></td></tr>
> - <tr><td colspan='2'>$Lang::tr{'pakfire accept all'}</td></tr>
> - <tr><td colspan='2'>&nbsp;</td></tr>
> - <tr><td align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <input type='hidden' name='INSPAKS' value='$cgiparams{'INSPAKS'}' />
> - <input type='hidden' name='FORCE' value='on' />
> - <input type='hidden' name='ACTION' value='install' />
> - <input type='image' alt='$Lang::tr{'pakfire install'}' title='$Lang::tr{'pakfire install'}' src='/images/go-next.png' />
> - </form>
> + </pre>
> </td>
> - <td align='left'>
> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <input type='hidden' name='ACTION' value='' />
> - <input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
> - </form>
> + </tr>
> + <tr>
> + <td>$Lang::tr{'pakfire accept all'}</td>
> + </tr>
> + <tr>
> + <td>&nbsp;</td>
> + </tr>
> + <tr>
> + <td align='center'>
> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> + <input type='hidden' name='INSPAKS' value='$cgiparams{'INSPAKS'}' />
> + <input type='hidden' name='FORCE' value='on' />
> + <input type='submit' name='ACTION' value='$Lang::tr{'pakfire install'}'/>
> + <input type='submit' name='ACTION' value='$Lang::tr{'cancel'}'/>
> + </form>
> </td>
> </tr>
> </table>
> @@ -319,36 +317,40 @@ END
> &Header::closepage();
> exit;
> 
> -} elsif (($cgiparams{'ACTION'} eq 'remove') && ($pagemode eq $PM_DEFAULT)) {
> +} elsif (($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) && ($pagemode eq $PM_DEFAULT)) {
> &Header::openbox("100%", "center", $Lang::tr{'request'});
> 
> my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
> my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
> print <<END;
> - <table style="width: 100%"><tr><td colspan='2'><p>$Lang::tr{'pakfire uninstall package'} <strong>@{pkgs}</strong><br>
> - $Lang::tr{'pakfire possible dependency'}</p>
> - <pre>
> + <table style="width: 100%">
> + <tr>
> + <td colspan='2'>
> + <p>$Lang::tr{'pakfire uninstall package'} <strong>@{pkgs}</strong><br>$Lang::tr{'pakfire possible dependency'}</p>
> + <pre>
> END
> foreach (@output) {
> $_ =~ s/\\[[0-1]\;[0-9]+m//g;
> print "$_\n";
> }
> print <<END;
> - </pre></td></tr>
> - <tr><td colspan='2'>$Lang::tr{'pakfire uninstall all'}</td></tr>
> - <tr><td colspan='2'>&nbsp;</td></tr>
> - <tr><td align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <input type='hidden' name='DELPAKS' value='$cgiparams{'DELPAKS'}' />
> - <input type='hidden' name='FORCE' value='on' />
> - <input type='hidden' name='ACTION' value='remove' />
> - <input type='image' alt='$Lang::tr{'uninstall'}' title='$Lang::tr{'uninstall'}' src='/images/go-next.png' />
> - </form>
> + </pre>
> </td>
> - <td align='left'>
> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <input type='hidden' name='ACTION' value='' />
> - <input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
> - </form>
> + </tr>
> + <tr>
> + <td colspan='2'>$Lang::tr{'pakfire uninstall all'}</td>
> + </tr>
> + <tr>
> + <td colspan='2'>&nbsp;</td>
> + </tr>
> + <tr>
> + <td align='center'>
> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> + <input type='hidden' name='DELPAKS' value='$cgiparams{'DELPAKS'}' />
> + <input type='hidden' name='FORCE' value='on' />
> + <input type='submit' name='ACTION' value='$Lang::tr{'remove'}'/>
> + <input type='submit' name='ACTION' value='$Lang::tr{'cancel'}'/>
> + </form>
> </td>
> </tr>
> </table>
> @@ -374,30 +376,36 @@ $selected{"TREE"}{$pakfiresettings{"TREE"}} = "selected";
> print <<END;
> <table id="pfmain">
> END
> -if ("$pakfire_status{'RebootRequired'}" eq "yes") {
> - print "\t\t<tr><td colspan='2'><a href='/cgi-bin/shutdown.cgi'>$Lang::tr{'needreboot'}!</a></td></tr>\n";
> +if ($pakfire_status{'RebootRequired'} eq "yes")
> +{
> + print <<END;
> + <tr>
> + <td colspan='2' style='padding-bottom:20px'>
> + <a href='/cgi-bin/shutdown.cgi'>$Lang::tr{'needreboot'}!</a>
> + </td>
> + </tr>
> +END
> }
> 
> print <<END;
> - <tr><td class="heading">$Lang::tr{'pakfire system state'}:</td>
> - <td class="heading">$Lang::tr{'pakfire updates'}:</td></tr>
> -
> - <tr><td><strong>$Lang::tr{'pakfire core update level'}: $pakfire_status{'Release'}</strong>
> - <hr>
> - <div class="pflist">
> - $Lang::tr{'pakfire last update'} $pakfire_status{'LastUpdate'} $Lang::tr{'pakfire ago'}<br>
> - $Lang::tr{'pakfire last serverlist update'} $pakfire_status{'LastServerListUpdate'} $Lang::tr{'pakfire ago'}<br>
> - $Lang::tr{'pakfire last core list update'} $pakfire_status{'LastCoreListUpdate'} $Lang::tr{'pakfire ago'}<br>
> - $Lang::tr{'pakfire last package update'} $pakfire_status{'LastPakListUpdate'} $Lang::tr{'pakfire ago'}
> - </div>
> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <input type='hidden' name='ACTION' value='update' />
> - <input type='submit' value='$Lang::tr{'pakfire refresh list'}' />
> - </form>
> + <tr>
> + <td class="heading">$Lang::tr{'pakfire system state'}:</td>
> + <td class="heading">$Lang::tr{'pakfire updates'}:</td>
> + </tr>
> +
> + <tr>
> + <td style='padding-top: 15px'>
> + <strong>$Lang::tr{'pakfire core update level'}: $pakfire_status{'Release'}</strong>
> + <hr>
> + <div class="pflist">
> + $Lang::tr{'pakfire last update'} $pakfire_status{'LastUpdate'} $Lang::tr{'pakfire ago'}<br>
> + $Lang::tr{'pakfire last serverlist update'} $pakfire_status{'LastServerListUpdate'} $Lang::tr{'pakfire ago'}<br>
> + $Lang::tr{'pakfire last core list update'} $pakfire_status{'LastCoreListUpdate'} $Lang::tr{'pakfire ago'}<br>
> + $Lang::tr{'pakfire last package update'} $pakfire_status{'LastPakListUpdate'} $Lang::tr{'pakfire ago'}
> + </div>
> </td>
> - <td>
> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <select name="UPDPAKS" class="pflist" size="5" disabled>
> + <td style='padding-top: 15px'>
> + <select class="pflist" style="height: 103px" size="5" disabled>
> END
> 
> if ("$pakfire_status{'CoreUpdateAvailable'}" eq "yes") {
> @@ -412,18 +420,44 @@ END
> }
> 
> print <<END;
> - </select>
> - <input type='hidden' name='ACTION' value='upgrade' />
> - <input type='image' alt='$Lang::tr{'pakfire upgrade'}' title='$Lang::tr{'pakfire upgrade'}' src='/images/document-save.png' />
> - </form>
> + </select>
> </td>
> </tr>
> - <tr><td class="heading">$Lang::tr{'pakfire available addons'}</td>
> - <td class="heading">$Lang::tr{'pakfire installed addons'}</td></tr>
> + <tr>
> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> + <td style='padding-bottom: 15px'>
> + <input type='submit' name='ACTION' value='$Lang::tr{'pakfire refresh list'}' />
> + </td>
> + <td style='padding-bottom: 15px'>
> +END
> 
> - <tr><td style="padding:5px 10px 20px 20px" align="center"><p>$Lang::tr{'pakfire install description'}</p>
> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <select name="INSPAKS" class="pflist" size="10" multiple>
> +        if (($pakfire_status{'CoreUpdateAvailable'} eq "yes") || ($pakfire_status{'PakUpdatesAvailable'} > 0))
> +        {
> +                print "<input type='submit' name='ACTION' value='$Lang::tr{'pakfire upgrade'}'/>\n";
> +        } else {
> +                print "<input disabled type='submit' name='ACTION' value='$Lang::tr{'pakfire upgrade'}'/>\n";
> +        }
> +
> + print <<END;
> + </td>
> + </form>
> + </tr>
> + <tr>
> + <td class="heading">$Lang::tr{'pakfire available addons'}</td>
> + <td class="heading">$Lang::tr{'pakfire installed addons'}</td>
> + </tr>
> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> + <tr>
> + <td style='padding-top: 15px; padding-bottom: 5px'>
> + $Lang::tr{'pakfire install description'}
> + </td>
> + <td style='padding-top: 15px; padding-bottom: 5px'>
> + $Lang::tr{'pakfire uninstall description'}
> + </td>
> + </tr>
> + <tr>
> + <td>
> + <select name="INSPAKS" class="pflist" style="height:206px" size="10" multiple onchange="document.getElementById('installbutton').disabled=false">
> END
> 
> my %notinstalledlist = &Pakfire::dblist("notinstalled");
> @@ -432,14 +466,10 @@ END
> }
> 
> print <<END;
> - </select>
> - <input type='hidden' name='ACTION' value='install' />
> - <input type='image' alt='$Lang::tr{'pakfire install'}' title='$Lang::tr{'pakfire install'}' src='/images/list-add.png' />
> - </form>
> + </select>
> </td>
> - <td style="padding:5px 10px 20px 20px" align="center"><p>$Lang::tr{'pakfire uninstall description'}</p>
> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
> - <select name="DELPAKS" class="pflist" size="10" multiple>
> + <td>
> + <select name="DELPAKS" class="pflist" style="height:206px" size="10" multiple onchange="document.getElementById('removebutton').disabled=false">
> END
> 
> my %installedlist = &Pakfire::dblist("installed");
> @@ -448,12 +478,18 @@ END
> }
> 
> print <<END;
> - </select>
> - <input type='hidden' name='ACTION' value='remove' />
> - <input type='image' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' src='/images/list-remove.png' />
> - </form>
> + </select>
> + </td>
> + </tr>
> + <tr>
> + <td style='padding-bottom: 5px'>
> + <input disabled type='submit' id='installbutton' name='ACTION' value='$Lang::tr{'pakfire install'}'/>
> + </td>
> + <td style='padding-bottom: 5px'>
> + <input disabled type='submit' id='removebutton' name='ACTION' value='$Lang::tr{'remove'}'/>
> </td>
> </tr>
> + </form>
> </table>
> END
> 
> diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
> index 9a7d093ff..bb0c51f03 100644
> --- a/langs/de/cgi-bin/de.pl
> +++ b/langs/de/cgi-bin/de.pl
> @@ -2019,7 +2019,7 @@
> 'pakfire finished error' => 'Pakfire ist fertig! Fehler sind aufgetreten, bitte überprüfen Sie die Log-Ausgabe, bevor Sie fortfahren.',
> 'pakfire health check' => 'Mirrors auf Erreichbarkeit prüfen (Ping):',
> 'pakfire install' => 'Installieren',
> -'pakfire install description' => 'Wählen Sie ein oder mehrere Pakete zur Installation aus und drücken Sie auf das plus-Symbol.',
> +'pakfire install description' => 'Bitte wählen Sie ein oder mehrere Add-Ons zur Installation aus.',
> 'pakfire install package' => 'Sie möchten folgende Pakete installieren: ',
> 'pakfire installed addons' => 'Installierte Add-ons:',
> 'pakfire invalid tree' => '',
> @@ -2039,7 +2039,7 @@
> 'pakfire tree testing' => 'Vorabversionen (testing)',
> 'pakfire tree unstable' => 'Experimentelle Versionen (unstable)',
> 'pakfire uninstall all' => 'Möchten Sie die folgenden Pakete deinstallieren?',
> -'pakfire uninstall description' => 'Wählen Sie ein oder mehrere Pakete zur Deinstallation aus und drücken Sie auf das minus-Symbol.',
> +'pakfire uninstall description' => 'Bitte wählen Sie ein oder mehrere Add-Ons zum Entfernen aus.',
> 'pakfire uninstall package' => 'Sie möchten folgende Pakete deinstallieren: ',
> 'pakfire update daily' => 'Täglich nach Updates suchen:',
> 'pakfire updates' => 'Verfügbare Updates',
> diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
> index 06db0cab1..9dccabf09 100644
> --- a/langs/en/cgi-bin/en.pl
> +++ b/langs/en/cgi-bin/en.pl
> @@ -2085,7 +2085,7 @@
> 'pakfire finished error' => 'Pakfire has finished! Errors occurred, please check the log output before proceeding.',
> 'pakfire health check' => 'Check if mirror is reachable (ping):',
> 'pakfire install' => 'Install',
> -'pakfire install description' => 'Please choose one or more items from the list below and click the plus to install.',
> +'pakfire install description' => 'Please select one or more add-ons to install.',
> 'pakfire install package' => 'You want to install the following packages: ',
> 'pakfire installed addons' => 'Installed Add-ons:',
> 'pakfire invalid tree' => 'Invalid repository selected',
> @@ -2105,7 +2105,7 @@
> 'pakfire tree testing' => 'Testing',
> 'pakfire tree unstable' => 'Unstable',
> 'pakfire uninstall all' => 'Do you want to uninstall the following packages?',
> -'pakfire uninstall description' => 'Please choose one or more items from the list below and click the minus to uninstall.',
> +'pakfire uninstall description' => 'Please select one or more add-ons to remove.',
> 'pakfire uninstall package' => 'You want to uninstall the following packages: ',
> 'pakfire update daily' => 'Search for updates daily:',
> 'pakfire updates' => 'Available Updates',
> diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl
> index d1bd54d88..4da08b480 100644
> --- a/langs/es/cgi-bin/es.pl
> +++ b/langs/es/cgi-bin/es.pl
> @@ -2082,7 +2082,7 @@
> 'pakfire finished error' => '¡Pakfire ha terminado! Ocurrieron errores, verifique la salida del registro antes de continuar.',
> 'pakfire health check' => 'Verificar disponibilidad del espejo (ping):',
> 'pakfire install' => 'Instalar',
> -'pakfire install description' => 'Por favor elija uno o más elementos de la siguiente lista y haga click en el signo + para instalar',
> +'pakfire install description' => 'Seleccione uno o más complementos para instalar.',
> 'pakfire install package' => 'Ud. desea instalar los siguientes paquetes:',
> 'pakfire installed addons' => 'Complementos instalados:',
> 'pakfire invalid tree' => 'Repositorio no válido seleccionado',
> @@ -2102,7 +2102,7 @@
> 'pakfire tree testing' => 'Pruebas',
> 'pakfire tree unstable' => 'Inestable',
> 'pakfire uninstall all' => '¿Desea desinstalar los siguientes paquetes?',
> -'pakfire uninstall description' => 'Por favor elija uno o más elementos de la siguiente lista y haga click en el signo - para desinstalar',
> +'pakfire uninstall description' => 'Seleccione uno o más complementos para eliminar.',
> 'pakfire uninstall package' => 'Desea desinstalar los siguientes paquetes:',
> 'pakfire update daily' => 'Buscar actualizaciones diariamente:',
> 'pakfire updates' => 'Actualizaciones Disponibles',
> diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl
> index 0513d1395..9e457acd0 100644
> --- a/langs/fr/cgi-bin/fr.pl
> +++ b/langs/fr/cgi-bin/fr.pl
> @@ -2080,7 +2080,7 @@
> 'pakfire finished error' => 'Pakfire a fini ! Des erreurs se sont produites, veuillez vérifier les rapports système des journaux avant de continuer.',
> 'pakfire health check' => 'Vérifier si le miroir est accessible (ping) :',
> 'pakfire install' => 'Installer',
> -'pakfire install description' => 'Veuillez choisir un ou plusieurs modules dans la liste ci-dessous<br>et cliquer sur le signe PLUS pour le(s) installer.',
> +'pakfire install description' => 'Veuillez sélectionner un ou plusieurs modules complémentaires à installer.',
> 'pakfire install package' => 'Vous souhaitez installer le(s) module(s) suivant(s) : ',
> 'pakfire installed addons' => 'Modules installés :',
> 'pakfire invalid tree' => 'Dépôt choisi invalide',
> @@ -2100,7 +2100,7 @@
> 'pakfire tree testing' => 'En test',
> 'pakfire tree unstable' => 'Instable',
> 'pakfire uninstall all' => 'Voulez-vous désinstaller ce(s) paquet(s) ?',
> -'pakfire uninstall description' => 'Veuillez choisir un ou plusieurs modules dans la liste ci-dessous<br>et cliquer sur le signe MOINS pour le(s) désinstaller.',
> +'pakfire uninstall description' => 'Veuillez sélectionner un ou plusieurs modules complémentaires à supprimer.',
> 'pakfire uninstall package' => 'Vous souhaitez désinstaller le(s) module(s) suivant(s) : ',
> 'pakfire update daily' => 'Rechercher des mises à jour quotidiennes :',
> 'pakfire updates' => 'Mises à jour Disponibles',
> diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl
> index 18fe1703e..b13c3b85c 100644
> --- a/langs/it/cgi-bin/it.pl
> +++ b/langs/it/cgi-bin/it.pl
> @@ -1718,7 +1718,7 @@
> 'pakfire dependencies found' => 'Dipendenze trovate:',
> 'pakfire health check' => 'Controllare se il mirror è raggiungibile (ping):',
> 'pakfire install' => 'Installare',
> -'pakfire install description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e fai clic sul segno più per installare.',
> +'pakfire install description' => 'Selezionare uno o più componenti aggiuntivi da installare.',
> 'pakfire install package' => 'You want to install the following packages: ',
> 'pakfire installed addons' => 'Addons installati:',
> 'pakfire last core list update' => 'Ultimo aggiornamento della lista di sistema',
> @@ -1732,7 +1732,7 @@
> 'pakfire resolvedeps wait' => 'Controllo delle dipendenze, attendere prego...',
> 'pakfire system state' => 'Stato del Sistema',
> 'pakfire uninstall all' => 'Vuoi disinstallare i seguenti pacchetti?',
> -'pakfire uninstall description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e fare clic sul meno per disinstallare..',
> +'pakfire uninstall description' => 'Seleziona uno o più componenti aggiuntivi da rimuovere.',
> 'pakfire uninstall package' => 'You want to uninstall the following packages: ',
> 'pakfire update daily' => 'Ricerca gli aggiornamenti una volta al giorno:',
> 'pakfire updates' => 'Aggiornamenti Disponibili',
> diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl
> index c844c9613..439f24249 100644
> --- a/langs/nl/cgi-bin/nl.pl
> +++ b/langs/nl/cgi-bin/nl.pl
> @@ -1693,7 +1693,7 @@
> 'pakfire dependencies found' => 'Afhankelijkheden gevonden:',
> 'pakfire health check' => 'Controleer of de mirror bereikbaar is  (ping):',
> 'pakfire install' => 'Installeren',
> -'pakfire install description' => 'Kies een of meer items uit de lijst hieronder en klik op de plus om te installeren.',
> +'pakfire install description' => 'Selecteer een of meer add-ons om te installeren.',
> 'pakfire install package' => 'U wilt de volgende pakketten installeren: ',
> 'pakfire installed addons' => 'Geïnstalleerde add-ons:',
> 'pakfire last core list update' => 'Laatste core-lijst update gemaakt',
> @@ -1707,7 +1707,7 @@
> 'pakfire resolvedeps wait' => 'Controleren op afhankelijkheden, even geduld...',
> 'pakfire system state' => 'Systeemstatus',
> 'pakfire uninstall all' => 'Wilt u de volgende pakketten verwijderen?',
> -'pakfire uninstall description' => 'Kies een of meer items uit de lijst hieronder en klik op de min om te deinstalleren.',
> +'pakfire uninstall description' => 'Selecteer een of meer add-ons om te verwijderen.',
> 'pakfire uninstall package' => 'U wilt de volgende pakketten deinstalleren: ',
> 'pakfire update daily' => 'Zoek dagelijks naar updates:',
> 'pakfire updates' => 'Beschikbare Updates',
> diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl
> index 8e3ca59cb..c5198b6f1 100644
> --- a/langs/pl/cgi-bin/pl.pl
> +++ b/langs/pl/cgi-bin/pl.pl
> @@ -1358,7 +1358,7 @@
> 'pakfire dependencies found' => 'Znaleziono zależności:',
> 'pakfire health check' => 'Sprawdź czy mirror jest dostępny (ping):',
> 'pakfire install' => 'Instaluj',
> -'pakfire install description' => 'Proszę wybrać jedną lub kilka pozycji z poniższej listy, a następnie kliknąć plus aby zainstalować.',
> +'pakfire install description' => 'Wybierz jeden lub więcej dodatków do zainstalowania.',
> 'pakfire install package' => 'Zamierzasz zainstalować następujące pakiety: ',
> 'pakfire installed addons' => 'Zainstalowane dodatki:',
> 'pakfire last core list update' => 'Sprawdzenie aktualizacja jądra:',
> @@ -1372,7 +1372,7 @@
> 'pakfire resolvedeps wait' => 'Sprawdzanie zależności, proszę czekać...',
> 'pakfire system state' => 'Status systemu',
> 'pakfire uninstall all' => 'Czy chcesz odinstalować następujące pakiety?',
> -'pakfire uninstall description' => 'Proszę wybrać jedną lub kilka pozycji z poniższej listy, a następnie kliknąć minus aby odinstalować.',
> +'pakfire uninstall description' => 'Wybierz jeden lub więcej dodatków do usunięcia.',
> 'pakfire uninstall package' => 'Zamierzasz odinstalować następujące pakiety: ',
> 'pakfire update daily' => 'Szukaj aktualizacje codziennie:',
> 'pakfire updates' => 'Dostępne Aktualizacje',
> diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl
> index 2695954dd..1a3ac2230 100644
> --- a/langs/ru/cgi-bin/ru.pl
> +++ b/langs/ru/cgi-bin/ru.pl
> @@ -1353,7 +1353,7 @@
> 'pakfire dependencies found' => 'Зависимости найдены:',
> 'pakfire health check' => 'Пинговать зеркало на доступность:',
> 'pakfire install' => 'Установить',
> -'pakfire install description' => 'Пожалуйста, укажите один или несколько элементов в списке ниже и нажмите плюсик для установки.',
> +'pakfire install description' => 'Пожалуйста, выберите одно или несколько дополнений для установки.',
> 'pakfire install package' => 'Вы собираетесь установить следующие пакеты: ',
> 'pakfire installed addons' => 'Установленные Аддоны:',
> 'pakfire last core list update' => 'Обновление core-списков',
> @@ -1367,7 +1367,7 @@
> 'pakfire resolvedeps wait' => 'Проверка зависимостей, пожалуйста, подождите...',
> 'pakfire system state' => 'Статус системы',
> 'pakfire uninstall all' => 'Вы хотите удалить следующие пакеты?',
> -'pakfire uninstall description' => 'Пожалуйста, укажите один или несколько элементов в списке ниже и нажмите минус для удаления.',
> +'pakfire uninstall description' => 'Пожалуйста, выберите одно или несколько дополнений для удаления.',
> 'pakfire uninstall package' => 'Вы собираетесь удалить следующие пакеты: ',
> 'pakfire update daily' => 'Ежедневный поиск обновлений:',
> 'pakfire updates' => 'Доступное Обновление',
> diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl
> index 85dc94f91..7dd46f584 100644
> --- a/langs/tr/cgi-bin/tr.pl
> +++ b/langs/tr/cgi-bin/tr.pl
> @@ -1862,7 +1862,7 @@
> 'pakfire dependencies found' => 'Bağımlılıklar bulundu:',
> 'pakfire health check' => 'Yansımanın ulaşılabilir olup olmadığını kontrol et (ping):',
> 'pakfire install' => 'Yükle',
> -'pakfire install description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra eklemek için artı simgesine tıklayınız.',
> +'pakfire install description' => 'Lütfen yüklemek için bir veya daha fazla eklenti seçin.',
> 'pakfire install package' => 'Aşağıdaki paketleri yüklemek istediniz: ',
> 'pakfire installed addons' => 'Kurulu eklentiler:',
> 'pakfire last core list update' => 'Son çekirdek listesi güncellemesi',
> @@ -1876,7 +1876,7 @@
> 'pakfire resolvedeps wait' => 'Bağımlılıklar kontrol ediliyor, lütfen bekleyin...',
> 'pakfire system state' => 'Sistem durumu',
> 'pakfire uninstall all' => 'Aşağıdaki paketleri kaldırmak istiyor musunuz?',
> -'pakfire uninstall description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra kaldırmak için eksi simgesine tıklayınız.',
> +'pakfire uninstall description' => 'Lütfen kaldırmak için bir veya daha fazla eklenti seçin.',
> 'pakfire uninstall package' => 'Aşağıdaki paketleri kaldırmak istiyorum: ',
> 'pakfire update daily' => 'Günlük güncellemeleri ara:',
> 'pakfire updates' => 'Mevcut Güncellemeler',
> -- 
> 2.43.0
> 
>
  
Stephen Cuka March 28, 2025, 5:59 p.m. UTC | #2
Hello Michael,

Thanks!

I still have the confirmation page changes to do.  Those patches will be 
coming shortly.

Regards,
Stephen


On 3/28/25 06:12, Michael Tremer wrote:
> Hello Stephen,
>
> Thank you for your patches.
>
> I don’t know what I can say to this. It just works :) Well done!
>
> I have merged this into Core Update 194.
>
> Best,
> -Michael
>
>> On 27 Mar 2025, at 05:34, Stephen Cuka <stephen@firemypi.org> wrote:
>>
>> - Convert icons to buttons on main and confirmation pages.
>>
>> - Disable Upgrade button if no core or add-on updates available.
>>
>> - Disable Install and Remove buttons until an add-on is selected
>>    to install or remove.
>>
>> - Change 'abort' to 'cancel'.
>>
>> - Change 'uninstall' to 'remove'.
>>
>> - Set fixed height on select boxes to keep the size the same if
>>    there are no options for the select.
>>
>> - Change translation for install/remove description text, the previous
>>    text referred to the icons.
>>      'pakfire install description' -> 'Please select one or more add-ons to install.'
>>      'pakfire uninstall description' -> 'Please select one or more add-ons to remove.'
>>
>> Signed-off-by: Stephen Cuka <stephen@firemypi.org>
>> ---
>> doc/language_issues.de   |   2 +
>> doc/language_issues.en   |   6 +-
>> doc/language_issues.es   |   2 +
>> doc/language_issues.fr   |   2 +
>> doc/language_issues.it   |   2 +
>> doc/language_issues.nl   |   2 +
>> doc/language_issues.pl   |   2 +
>> doc/language_issues.ru   |   2 +
>> doc/language_issues.tr   |   2 +
>> html/cgi-bin/pakfire.cgi | 212 +++++++++++++++++++++++----------------
>> langs/de/cgi-bin/de.pl   |   4 +-
>> langs/en/cgi-bin/en.pl   |   4 +-
>> langs/es/cgi-bin/es.pl   |   4 +-
>> langs/fr/cgi-bin/fr.pl   |   4 +-
>> langs/it/cgi-bin/it.pl   |   4 +-
>> langs/nl/cgi-bin/nl.pl   |   4 +-
>> langs/pl/cgi-bin/pl.pl   |   4 +-
>> langs/ru/cgi-bin/ru.pl   |   4 +-
>> langs/tr/cgi-bin/tr.pl   |   4 +-
>> 19 files changed, 160 insertions(+), 110 deletions(-)
>>
>> diff --git a/doc/language_issues.de b/doc/language_issues.de
>> index aeb37ccf7..c5db3dc64 100644
>> --- a/doc/language_issues.de
>> +++ b/doc/language_issues.de
>> @@ -42,6 +42,7 @@ WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> WARNING: translation string unused: Weekly
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -831,6 +832,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/doc/language_issues.en b/doc/language_issues.en
>> index 288aeda6e..5e4221153 100644
>> --- a/doc/language_issues.en
>> +++ b/doc/language_issues.en
>> @@ -82,7 +82,6 @@ WARNING: untranslated string: WakeOnLan = Wake On Lan
>> WARNING: untranslated string: a ca certificate with this name already exists = A CA certificate with this name already exists.
>> WARNING: untranslated string: a connection with this common name already exists = A connection with this common name already exists.
>> WARNING: untranslated string: a connection with this name already exists = A connection with this name already exists.
>> -WARNING: untranslated string: abort = abort
>> WARNING: untranslated string: access point name = Access Point Name
>> WARNING: untranslated string: access point name is invalid = Access Point Name is invalid
>> WARNING: untranslated string: access point name is required = Access Point Name is required
>> @@ -1457,7 +1456,7 @@ WARNING: untranslated string: pakfire core update level = Core-Update-Level
>> WARNING: untranslated string: pakfire finished = Pakfire has finished! Returning...
>> WARNING: untranslated string: pakfire finished error = Pakfire has finished! Errors occurred, please check the log output before proceeding.
>> WARNING: untranslated string: pakfire install = Install
>> -WARNING: untranslated string: pakfire install description = Please choose one or more items from the list below and click the plus to install.
>> +WARNING: untranslated string: pakfire install description = Please select one or more add-ons to install.
>> WARNING: untranslated string: pakfire install package = You want to install the following packages:
>> WARNING: untranslated string: pakfire installed addons = Installed Add-ons:
>> WARNING: untranslated string: pakfire invalid tree = Invalid repository selected
>> @@ -1474,7 +1473,7 @@ WARNING: untranslated string: pakfire tree stable = Stable
>> WARNING: untranslated string: pakfire tree testing = Testing
>> WARNING: untranslated string: pakfire tree unstable = Unstable
>> WARNING: untranslated string: pakfire uninstall all = Do you want to uninstall the following packages?
>> -WARNING: untranslated string: pakfire uninstall description = Please choose one or more items from the list below and click the minus to uninstall.
>> +WARNING: untranslated string: pakfire uninstall description = Please select one or more add-ons to remove.
>> WARNING: untranslated string: pakfire uninstall package = You want to uninstall the following packages:
>> WARNING: untranslated string: pakfire updates = Available Updates
>> WARNING: untranslated string: pakfire upgrade = Upgrade
>> @@ -1804,7 +1803,6 @@ WARNING: untranslated string: unable to contact = Unable to contact
>> WARNING: untranslated string: unblock = Unblock
>> WARNING: untranslated string: unblock all = Unblock all
>> WARNING: untranslated string: uncheck all = Uncheck all
>> -WARNING: untranslated string: uninstall = Uninstall
>> WARNING: untranslated string: unknown = UNKNOWN
>> WARNING: untranslated string: unlimited = Unlimited
>> WARNING: untranslated string: unnamed = Unnamed
>> diff --git a/doc/language_issues.es b/doc/language_issues.es
>> index c68e79292..de7a79bc4 100644
>> --- a/doc/language_issues.es
>> +++ b/doc/language_issues.es
>> @@ -43,6 +43,7 @@ WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> WARNING: translation string unused: Weekly
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -896,6 +897,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/doc/language_issues.fr b/doc/language_issues.fr
>> index e0d8cb1f4..41cda1988 100644
>> --- a/doc/language_issues.fr
>> +++ b/doc/language_issues.fr
>> @@ -46,6 +46,7 @@ WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> WARNING: translation string unused: Weekly
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -869,6 +870,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/doc/language_issues.it b/doc/language_issues.it
>> index e00d5c5c1..80ef72027 100644
>> --- a/doc/language_issues.it
>> +++ b/doc/language_issues.it
>> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
>> WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -822,6 +823,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/doc/language_issues.nl b/doc/language_issues.nl
>> index 42fb6088d..43b16a94f 100644
>> --- a/doc/language_issues.nl
>> +++ b/doc/language_issues.nl
>> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
>> WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -822,6 +823,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/doc/language_issues.pl b/doc/language_issues.pl
>> index e7ffefd71..e59af3996 100644
>> --- a/doc/language_issues.pl
>> +++ b/doc/language_issues.pl
>> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
>> WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -738,6 +739,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/doc/language_issues.ru b/doc/language_issues.ru
>> index 6ce1a3516..371f38fa7 100644
>> --- a/doc/language_issues.ru
>> +++ b/doc/language_issues.ru
>> @@ -18,6 +18,7 @@ WARNING: translation string unused: Subclass
>> WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -733,6 +734,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/doc/language_issues.tr b/doc/language_issues.tr
>> index 5cf3953ad..fd624e9d6 100644
>> --- a/doc/language_issues.tr
>> +++ b/doc/language_issues.tr
>> @@ -39,6 +39,7 @@ WARNING: translation string unused: Subclass
>> WARNING: translation string unused: TOS Bits
>> WARNING: translation string unused: Utilization on
>> WARNING: translation string unused: Verbose
>> +WARNING: translation string unused: abort
>> WARNING: translation string unused: access allowed
>> WARNING: translation string unused: access refused with this oinkcode
>> WARNING: translation string unused: accounting
>> @@ -851,6 +852,7 @@ WARNING: translation string unused: tripwirewarningpolicy
>> WARNING: translation string unused: umount
>> WARNING: translation string unused: umount removable media before to unplug
>> WARNING: translation string unused: unencrypted
>> +WARNING: translation string unused: uninstall
>> WARNING: translation string unused: unix charset
>> WARNING: translation string unused: unix group
>> WARNING: translation string unused: unix password sync
>> diff --git a/html/cgi-bin/pakfire.cgi b/html/cgi-bin/pakfire.cgi
>> index 80aaf9a1c..1cd39e411 100644
>> --- a/html/cgi-bin/pakfire.cgi
>> +++ b/html/cgi-bin/pakfire.cgi
>> @@ -120,18 +120,18 @@ if(($cgiparams{'ACTION'} ne '') && ($pagemode eq $PM_DEFAULT)) {
>> if(&_is_pakfire_busy()) {
>> $errormessage = $Lang::tr{'pakfire already busy'};
>> $pagemode = $PM_LOGREAD; # Running Pakfire instance found, switch to log viewer mode
>> - } elsif(($cgiparams{'ACTION'} eq 'install') && ($cgiparams{'FORCE'} eq 'on')) {
>> + } elsif(($cgiparams{'ACTION'} eq $Lang::tr{'pakfire install'}) && ($cgiparams{'FORCE'} eq 'on')) {
>> my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
>> &General::system_background("/usr/local/bin/pakfire", "install", "--non-interactive", "--no-colors", @pkgs);
>> &_http_pagemode_redirect($PM_LOGREAD, 1);
>> - } elsif(($cgiparams{'ACTION'} eq 'remove') && ($cgiparams{'FORCE'} eq 'on')) {
>> + } elsif(($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) && ($cgiparams{'FORCE'} eq 'on')) {
>> my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
>> &General::system_background("/usr/local/bin/pakfire", "remove", "--non-interactive", "--no-colors", @pkgs);
>> &_http_pagemode_redirect($PM_LOGREAD, 1);
>> - } elsif($cgiparams{'ACTION'} eq 'update') {
>> + } elsif($cgiparams{'ACTION'} eq $Lang::tr{'pakfire refresh list'}) {
>> &General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
>> &_http_pagemode_redirect($PM_LOGREAD, 1);
>> - } elsif($cgiparams{'ACTION'} eq 'upgrade') {
>> + } elsif($cgiparams{'ACTION'} eq $Lang::tr{'pakfire upgrade'}) {
>> &General::system_background("/usr/local/bin/pakfire", "upgrade", "-y", "--no-colors");
>> &_http_pagemode_redirect($PM_LOGREAD, 1);
>> } elsif($cgiparams{'ACTION'} eq $Lang::tr{'save'}) {
>> @@ -161,16 +161,11 @@ my $extraHead = <<END
>> /* Main screen */
>> table#pfmain {
>> width: 100%;
>> - border-style: hidden;
>> table-layout: fixed;
>> - }
>> -
>> - #pfmain td {
>> - padding: 5px 20px 0;
>> text-align: center;
>> }
>> - #pfmain tr:not(:last-child) > td {
>> - padding-bottom: 1.5em;
>> + #pfmain td {
>> + padding: 0px 20px;
>> }
>> #pfmain tr > td.heading {
>> padding: 0;
>> @@ -207,7 +202,6 @@ my $extraHead = <<END
>> margin-top: 0.7em;
>> padding-top: 0.7em;
>> border-top: 0.5px solid $Header::bordercolour;
>> -
>> text-align: left;
>> min-height: 15em;
>> overflow-x: auto;
>> @@ -280,36 +274,40 @@ END
>>
>> # Show Pakfire install/remove dependencies and confirm form
>> # (_is_pakfire_busy status was checked before and can be omitted)
>> -if (($cgiparams{'ACTION'} eq 'install') && ($pagemode eq $PM_DEFAULT)) {
>> +if (($cgiparams{'ACTION'} eq $Lang::tr{'pakfire install'}) && ($pagemode eq $PM_DEFAULT)) {
>> &Header::openbox("100%", "center", $Lang::tr{'request'});
>>
>> my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
>> my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
>> print <<END;
>> - <table style="width: 100%"><tr><td colspan='2'><p>$Lang::tr{'pakfire install package'} <strong>@{pkgs}</strong><br>
>> - $Lang::tr{'pakfire possible dependency'}</p>
>> - <pre>
>> + <table style="width: 100%">
>> + <tr>
>> + <td>
>> + <p>$Lang::tr{'pakfire install package'} <strong>@{pkgs}</strong><br>$Lang::tr{'pakfire possible dependency'}</p>
>> + <pre>
>> END
>> foreach (@output) {
>> $_ =~ s/\\[[0-1]\;[0-9]+m//g;
>> print "$_\n";
>> }
>> print <<END;
>> - </pre></td></tr>
>> - <tr><td colspan='2'>$Lang::tr{'pakfire accept all'}</td></tr>
>> - <tr><td colspan='2'>&nbsp;</td></tr>
>> - <tr><td align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <input type='hidden' name='INSPAKS' value='$cgiparams{'INSPAKS'}' />
>> - <input type='hidden' name='FORCE' value='on' />
>> - <input type='hidden' name='ACTION' value='install' />
>> - <input type='image' alt='$Lang::tr{'pakfire install'}' title='$Lang::tr{'pakfire install'}' src='/images/go-next.png' />
>> - </form>
>> + </pre>
>> </td>
>> - <td align='left'>
>> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <input type='hidden' name='ACTION' value='' />
>> - <input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
>> - </form>
>> + </tr>
>> + <tr>
>> + <td>$Lang::tr{'pakfire accept all'}</td>
>> + </tr>
>> + <tr>
>> + <td>&nbsp;</td>
>> + </tr>
>> + <tr>
>> + <td align='center'>
>> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> + <input type='hidden' name='INSPAKS' value='$cgiparams{'INSPAKS'}' />
>> + <input type='hidden' name='FORCE' value='on' />
>> + <input type='submit' name='ACTION' value='$Lang::tr{'pakfire install'}'/>
>> + <input type='submit' name='ACTION' value='$Lang::tr{'cancel'}'/>
>> + </form>
>> </td>
>> </tr>
>> </table>
>> @@ -319,36 +317,40 @@ END
>> &Header::closepage();
>> exit;
>>
>> -} elsif (($cgiparams{'ACTION'} eq 'remove') && ($pagemode eq $PM_DEFAULT)) {
>> +} elsif (($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) && ($pagemode eq $PM_DEFAULT)) {
>> &Header::openbox("100%", "center", $Lang::tr{'request'});
>>
>> my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
>> my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
>> print <<END;
>> - <table style="width: 100%"><tr><td colspan='2'><p>$Lang::tr{'pakfire uninstall package'} <strong>@{pkgs}</strong><br>
>> - $Lang::tr{'pakfire possible dependency'}</p>
>> - <pre>
>> + <table style="width: 100%">
>> + <tr>
>> + <td colspan='2'>
>> + <p>$Lang::tr{'pakfire uninstall package'} <strong>@{pkgs}</strong><br>$Lang::tr{'pakfire possible dependency'}</p>
>> + <pre>
>> END
>> foreach (@output) {
>> $_ =~ s/\\[[0-1]\;[0-9]+m//g;
>> print "$_\n";
>> }
>> print <<END;
>> - </pre></td></tr>
>> - <tr><td colspan='2'>$Lang::tr{'pakfire uninstall all'}</td></tr>
>> - <tr><td colspan='2'>&nbsp;</td></tr>
>> - <tr><td align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <input type='hidden' name='DELPAKS' value='$cgiparams{'DELPAKS'}' />
>> - <input type='hidden' name='FORCE' value='on' />
>> - <input type='hidden' name='ACTION' value='remove' />
>> - <input type='image' alt='$Lang::tr{'uninstall'}' title='$Lang::tr{'uninstall'}' src='/images/go-next.png' />
>> - </form>
>> + </pre>
>> </td>
>> - <td align='left'>
>> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <input type='hidden' name='ACTION' value='' />
>> - <input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
>> - </form>
>> + </tr>
>> + <tr>
>> + <td colspan='2'>$Lang::tr{'pakfire uninstall all'}</td>
>> + </tr>
>> + <tr>
>> + <td colspan='2'>&nbsp;</td>
>> + </tr>
>> + <tr>
>> + <td align='center'>
>> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> + <input type='hidden' name='DELPAKS' value='$cgiparams{'DELPAKS'}' />
>> + <input type='hidden' name='FORCE' value='on' />
>> + <input type='submit' name='ACTION' value='$Lang::tr{'remove'}'/>
>> + <input type='submit' name='ACTION' value='$Lang::tr{'cancel'}'/>
>> + </form>
>> </td>
>> </tr>
>> </table>
>> @@ -374,30 +376,36 @@ $selected{"TREE"}{$pakfiresettings{"TREE"}} = "selected";
>> print <<END;
>> <table id="pfmain">
>> END
>> -if ("$pakfire_status{'RebootRequired'}" eq "yes") {
>> - print "\t\t<tr><td colspan='2'><a href='/cgi-bin/shutdown.cgi'>$Lang::tr{'needreboot'}!</a></td></tr>\n";
>> +if ($pakfire_status{'RebootRequired'} eq "yes")
>> +{
>> + print <<END;
>> + <tr>
>> + <td colspan='2' style='padding-bottom:20px'>
>> + <a href='/cgi-bin/shutdown.cgi'>$Lang::tr{'needreboot'}!</a>
>> + </td>
>> + </tr>
>> +END
>> }
>>
>> print <<END;
>> - <tr><td class="heading">$Lang::tr{'pakfire system state'}:</td>
>> - <td class="heading">$Lang::tr{'pakfire updates'}:</td></tr>
>> -
>> - <tr><td><strong>$Lang::tr{'pakfire core update level'}: $pakfire_status{'Release'}</strong>
>> - <hr>
>> - <div class="pflist">
>> - $Lang::tr{'pakfire last update'} $pakfire_status{'LastUpdate'} $Lang::tr{'pakfire ago'}<br>
>> - $Lang::tr{'pakfire last serverlist update'} $pakfire_status{'LastServerListUpdate'} $Lang::tr{'pakfire ago'}<br>
>> - $Lang::tr{'pakfire last core list update'} $pakfire_status{'LastCoreListUpdate'} $Lang::tr{'pakfire ago'}<br>
>> - $Lang::tr{'pakfire last package update'} $pakfire_status{'LastPakListUpdate'} $Lang::tr{'pakfire ago'}
>> - </div>
>> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <input type='hidden' name='ACTION' value='update' />
>> - <input type='submit' value='$Lang::tr{'pakfire refresh list'}' />
>> - </form>
>> + <tr>
>> + <td class="heading">$Lang::tr{'pakfire system state'}:</td>
>> + <td class="heading">$Lang::tr{'pakfire updates'}:</td>
>> + </tr>
>> +
>> + <tr>
>> + <td style='padding-top: 15px'>
>> + <strong>$Lang::tr{'pakfire core update level'}: $pakfire_status{'Release'}</strong>
>> + <hr>
>> + <div class="pflist">
>> + $Lang::tr{'pakfire last update'} $pakfire_status{'LastUpdate'} $Lang::tr{'pakfire ago'}<br>
>> + $Lang::tr{'pakfire last serverlist update'} $pakfire_status{'LastServerListUpdate'} $Lang::tr{'pakfire ago'}<br>
>> + $Lang::tr{'pakfire last core list update'} $pakfire_status{'LastCoreListUpdate'} $Lang::tr{'pakfire ago'}<br>
>> + $Lang::tr{'pakfire last package update'} $pakfire_status{'LastPakListUpdate'} $Lang::tr{'pakfire ago'}
>> + </div>
>> </td>
>> - <td>
>> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <select name="UPDPAKS" class="pflist" size="5" disabled>
>> + <td style='padding-top: 15px'>
>> + <select class="pflist" style="height: 103px" size="5" disabled>
>> END
>>
>> if ("$pakfire_status{'CoreUpdateAvailable'}" eq "yes") {
>> @@ -412,18 +420,44 @@ END
>> }
>>
>> print <<END;
>> - </select>
>> - <input type='hidden' name='ACTION' value='upgrade' />
>> - <input type='image' alt='$Lang::tr{'pakfire upgrade'}' title='$Lang::tr{'pakfire upgrade'}' src='/images/document-save.png' />
>> - </form>
>> + </select>
>> </td>
>> </tr>
>> - <tr><td class="heading">$Lang::tr{'pakfire available addons'}</td>
>> - <td class="heading">$Lang::tr{'pakfire installed addons'}</td></tr>
>> + <tr>
>> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> + <td style='padding-bottom: 15px'>
>> + <input type='submit' name='ACTION' value='$Lang::tr{'pakfire refresh list'}' />
>> + </td>
>> + <td style='padding-bottom: 15px'>
>> +END
>>
>> - <tr><td style="padding:5px 10px 20px 20px" align="center"><p>$Lang::tr{'pakfire install description'}</p>
>> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <select name="INSPAKS" class="pflist" size="10" multiple>
>> +        if (($pakfire_status{'CoreUpdateAvailable'} eq "yes") || ($pakfire_status{'PakUpdatesAvailable'} > 0))
>> +        {
>> +                print "<input type='submit' name='ACTION' value='$Lang::tr{'pakfire upgrade'}'/>\n";
>> +        } else {
>> +                print "<input disabled type='submit' name='ACTION' value='$Lang::tr{'pakfire upgrade'}'/>\n";
>> +        }
>> +
>> + print <<END;
>> + </td>
>> + </form>
>> + </tr>
>> + <tr>
>> + <td class="heading">$Lang::tr{'pakfire available addons'}</td>
>> + <td class="heading">$Lang::tr{'pakfire installed addons'}</td>
>> + </tr>
>> + <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> + <tr>
>> + <td style='padding-top: 15px; padding-bottom: 5px'>
>> + $Lang::tr{'pakfire install description'}
>> + </td>
>> + <td style='padding-top: 15px; padding-bottom: 5px'>
>> + $Lang::tr{'pakfire uninstall description'}
>> + </td>
>> + </tr>
>> + <tr>
>> + <td>
>> + <select name="INSPAKS" class="pflist" style="height:206px" size="10" multiple onchange="document.getElementById('installbutton').disabled=false">
>> END
>>
>> my %notinstalledlist = &Pakfire::dblist("notinstalled");
>> @@ -432,14 +466,10 @@ END
>> }
>>
>> print <<END;
>> - </select>
>> - <input type='hidden' name='ACTION' value='install' />
>> - <input type='image' alt='$Lang::tr{'pakfire install'}' title='$Lang::tr{'pakfire install'}' src='/images/list-add.png' />
>> - </form>
>> + </select>
>> </td>
>> - <td style="padding:5px 10px 20px 20px" align="center"><p>$Lang::tr{'pakfire uninstall description'}</p>
>> - <form method='post' action='$ENV{'SCRIPT_NAME'}'>
>> - <select name="DELPAKS" class="pflist" size="10" multiple>
>> + <td>
>> + <select name="DELPAKS" class="pflist" style="height:206px" size="10" multiple onchange="document.getElementById('removebutton').disabled=false">
>> END
>>
>> my %installedlist = &Pakfire::dblist("installed");
>> @@ -448,12 +478,18 @@ END
>> }
>>
>> print <<END;
>> - </select>
>> - <input type='hidden' name='ACTION' value='remove' />
>> - <input type='image' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' src='/images/list-remove.png' />
>> - </form>
>> + </select>
>> + </td>
>> + </tr>
>> + <tr>
>> + <td style='padding-bottom: 5px'>
>> + <input disabled type='submit' id='installbutton' name='ACTION' value='$Lang::tr{'pakfire install'}'/>
>> + </td>
>> + <td style='padding-bottom: 5px'>
>> + <input disabled type='submit' id='removebutton' name='ACTION' value='$Lang::tr{'remove'}'/>
>> </td>
>> </tr>
>> + </form>
>> </table>
>> END
>>
>> diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
>> index 9a7d093ff..bb0c51f03 100644
>> --- a/langs/de/cgi-bin/de.pl
>> +++ b/langs/de/cgi-bin/de.pl
>> @@ -2019,7 +2019,7 @@
>> 'pakfire finished error' => 'Pakfire ist fertig! Fehler sind aufgetreten, bitte überprüfen Sie die Log-Ausgabe, bevor Sie fortfahren.',
>> 'pakfire health check' => 'Mirrors auf Erreichbarkeit prüfen (Ping):',
>> 'pakfire install' => 'Installieren',
>> -'pakfire install description' => 'Wählen Sie ein oder mehrere Pakete zur Installation aus und drücken Sie auf das plus-Symbol.',
>> +'pakfire install description' => 'Bitte wählen Sie ein oder mehrere Add-Ons zur Installation aus.',
>> 'pakfire install package' => 'Sie möchten folgende Pakete installieren: ',
>> 'pakfire installed addons' => 'Installierte Add-ons:',
>> 'pakfire invalid tree' => '',
>> @@ -2039,7 +2039,7 @@
>> 'pakfire tree testing' => 'Vorabversionen (testing)',
>> 'pakfire tree unstable' => 'Experimentelle Versionen (unstable)',
>> 'pakfire uninstall all' => 'Möchten Sie die folgenden Pakete deinstallieren?',
>> -'pakfire uninstall description' => 'Wählen Sie ein oder mehrere Pakete zur Deinstallation aus und drücken Sie auf das minus-Symbol.',
>> +'pakfire uninstall description' => 'Bitte wählen Sie ein oder mehrere Add-Ons zum Entfernen aus.',
>> 'pakfire uninstall package' => 'Sie möchten folgende Pakete deinstallieren: ',
>> 'pakfire update daily' => 'Täglich nach Updates suchen:',
>> 'pakfire updates' => 'Verfügbare Updates',
>> diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
>> index 06db0cab1..9dccabf09 100644
>> --- a/langs/en/cgi-bin/en.pl
>> +++ b/langs/en/cgi-bin/en.pl
>> @@ -2085,7 +2085,7 @@
>> 'pakfire finished error' => 'Pakfire has finished! Errors occurred, please check the log output before proceeding.',
>> 'pakfire health check' => 'Check if mirror is reachable (ping):',
>> 'pakfire install' => 'Install',
>> -'pakfire install description' => 'Please choose one or more items from the list below and click the plus to install.',
>> +'pakfire install description' => 'Please select one or more add-ons to install.',
>> 'pakfire install package' => 'You want to install the following packages: ',
>> 'pakfire installed addons' => 'Installed Add-ons:',
>> 'pakfire invalid tree' => 'Invalid repository selected',
>> @@ -2105,7 +2105,7 @@
>> 'pakfire tree testing' => 'Testing',
>> 'pakfire tree unstable' => 'Unstable',
>> 'pakfire uninstall all' => 'Do you want to uninstall the following packages?',
>> -'pakfire uninstall description' => 'Please choose one or more items from the list below and click the minus to uninstall.',
>> +'pakfire uninstall description' => 'Please select one or more add-ons to remove.',
>> 'pakfire uninstall package' => 'You want to uninstall the following packages: ',
>> 'pakfire update daily' => 'Search for updates daily:',
>> 'pakfire updates' => 'Available Updates',
>> diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl
>> index d1bd54d88..4da08b480 100644
>> --- a/langs/es/cgi-bin/es.pl
>> +++ b/langs/es/cgi-bin/es.pl
>> @@ -2082,7 +2082,7 @@
>> 'pakfire finished error' => '¡Pakfire ha terminado! Ocurrieron errores, verifique la salida del registro antes de continuar.',
>> 'pakfire health check' => 'Verificar disponibilidad del espejo (ping):',
>> 'pakfire install' => 'Instalar',
>> -'pakfire install description' => 'Por favor elija uno o más elementos de la siguiente lista y haga click en el signo + para instalar',
>> +'pakfire install description' => 'Seleccione uno o más complementos para instalar.',
>> 'pakfire install package' => 'Ud. desea instalar los siguientes paquetes:',
>> 'pakfire installed addons' => 'Complementos instalados:',
>> 'pakfire invalid tree' => 'Repositorio no válido seleccionado',
>> @@ -2102,7 +2102,7 @@
>> 'pakfire tree testing' => 'Pruebas',
>> 'pakfire tree unstable' => 'Inestable',
>> 'pakfire uninstall all' => '¿Desea desinstalar los siguientes paquetes?',
>> -'pakfire uninstall description' => 'Por favor elija uno o más elementos de la siguiente lista y haga click en el signo - para desinstalar',
>> +'pakfire uninstall description' => 'Seleccione uno o más complementos para eliminar.',
>> 'pakfire uninstall package' => 'Desea desinstalar los siguientes paquetes:',
>> 'pakfire update daily' => 'Buscar actualizaciones diariamente:',
>> 'pakfire updates' => 'Actualizaciones Disponibles',
>> diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl
>> index 0513d1395..9e457acd0 100644
>> --- a/langs/fr/cgi-bin/fr.pl
>> +++ b/langs/fr/cgi-bin/fr.pl
>> @@ -2080,7 +2080,7 @@
>> 'pakfire finished error' => 'Pakfire a fini ! Des erreurs se sont produites, veuillez vérifier les rapports système des journaux avant de continuer.',
>> 'pakfire health check' => 'Vérifier si le miroir est accessible (ping) :',
>> 'pakfire install' => 'Installer',
>> -'pakfire install description' => 'Veuillez choisir un ou plusieurs modules dans la liste ci-dessous<br>et cliquer sur le signe PLUS pour le(s) installer.',
>> +'pakfire install description' => 'Veuillez sélectionner un ou plusieurs modules complémentaires à installer.',
>> 'pakfire install package' => 'Vous souhaitez installer le(s) module(s) suivant(s) : ',
>> 'pakfire installed addons' => 'Modules installés :',
>> 'pakfire invalid tree' => 'Dépôt choisi invalide',
>> @@ -2100,7 +2100,7 @@
>> 'pakfire tree testing' => 'En test',
>> 'pakfire tree unstable' => 'Instable',
>> 'pakfire uninstall all' => 'Voulez-vous désinstaller ce(s) paquet(s) ?',
>> -'pakfire uninstall description' => 'Veuillez choisir un ou plusieurs modules dans la liste ci-dessous<br>et cliquer sur le signe MOINS pour le(s) désinstaller.',
>> +'pakfire uninstall description' => 'Veuillez sélectionner un ou plusieurs modules complémentaires à supprimer.',
>> 'pakfire uninstall package' => 'Vous souhaitez désinstaller le(s) module(s) suivant(s) : ',
>> 'pakfire update daily' => 'Rechercher des mises à jour quotidiennes :',
>> 'pakfire updates' => 'Mises à jour Disponibles',
>> diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl
>> index 18fe1703e..b13c3b85c 100644
>> --- a/langs/it/cgi-bin/it.pl
>> +++ b/langs/it/cgi-bin/it.pl
>> @@ -1718,7 +1718,7 @@
>> 'pakfire dependencies found' => 'Dipendenze trovate:',
>> 'pakfire health check' => 'Controllare se il mirror è raggiungibile (ping):',
>> 'pakfire install' => 'Installare',
>> -'pakfire install description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e fai clic sul segno più per installare.',
>> +'pakfire install description' => 'Selezionare uno o più componenti aggiuntivi da installare.',
>> 'pakfire install package' => 'You want to install the following packages: ',
>> 'pakfire installed addons' => 'Addons installati:',
>> 'pakfire last core list update' => 'Ultimo aggiornamento della lista di sistema',
>> @@ -1732,7 +1732,7 @@
>> 'pakfire resolvedeps wait' => 'Controllo delle dipendenze, attendere prego...',
>> 'pakfire system state' => 'Stato del Sistema',
>> 'pakfire uninstall all' => 'Vuoi disinstallare i seguenti pacchetti?',
>> -'pakfire uninstall description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e fare clic sul meno per disinstallare..',
>> +'pakfire uninstall description' => 'Seleziona uno o più componenti aggiuntivi da rimuovere.',
>> 'pakfire uninstall package' => 'You want to uninstall the following packages: ',
>> 'pakfire update daily' => 'Ricerca gli aggiornamenti una volta al giorno:',
>> 'pakfire updates' => 'Aggiornamenti Disponibili',
>> diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl
>> index c844c9613..439f24249 100644
>> --- a/langs/nl/cgi-bin/nl.pl
>> +++ b/langs/nl/cgi-bin/nl.pl
>> @@ -1693,7 +1693,7 @@
>> 'pakfire dependencies found' => 'Afhankelijkheden gevonden:',
>> 'pakfire health check' => 'Controleer of de mirror bereikbaar is  (ping):',
>> 'pakfire install' => 'Installeren',
>> -'pakfire install description' => 'Kies een of meer items uit de lijst hieronder en klik op de plus om te installeren.',
>> +'pakfire install description' => 'Selecteer een of meer add-ons om te installeren.',
>> 'pakfire install package' => 'U wilt de volgende pakketten installeren: ',
>> 'pakfire installed addons' => 'Geïnstalleerde add-ons:',
>> 'pakfire last core list update' => 'Laatste core-lijst update gemaakt',
>> @@ -1707,7 +1707,7 @@
>> 'pakfire resolvedeps wait' => 'Controleren op afhankelijkheden, even geduld...',
>> 'pakfire system state' => 'Systeemstatus',
>> 'pakfire uninstall all' => 'Wilt u de volgende pakketten verwijderen?',
>> -'pakfire uninstall description' => 'Kies een of meer items uit de lijst hieronder en klik op de min om te deinstalleren.',
>> +'pakfire uninstall description' => 'Selecteer een of meer add-ons om te verwijderen.',
>> 'pakfire uninstall package' => 'U wilt de volgende pakketten deinstalleren: ',
>> 'pakfire update daily' => 'Zoek dagelijks naar updates:',
>> 'pakfire updates' => 'Beschikbare Updates',
>> diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl
>> index 8e3ca59cb..c5198b6f1 100644
>> --- a/langs/pl/cgi-bin/pl.pl
>> +++ b/langs/pl/cgi-bin/pl.pl
>> @@ -1358,7 +1358,7 @@
>> 'pakfire dependencies found' => 'Znaleziono zależności:',
>> 'pakfire health check' => 'Sprawdź czy mirror jest dostępny (ping):',
>> 'pakfire install' => 'Instaluj',
>> -'pakfire install description' => 'Proszę wybrać jedną lub kilka pozycji z poniższej listy, a następnie kliknąć plus aby zainstalować.',
>> +'pakfire install description' => 'Wybierz jeden lub więcej dodatków do zainstalowania.',
>> 'pakfire install package' => 'Zamierzasz zainstalować następujące pakiety: ',
>> 'pakfire installed addons' => 'Zainstalowane dodatki:',
>> 'pakfire last core list update' => 'Sprawdzenie aktualizacja jądra:',
>> @@ -1372,7 +1372,7 @@
>> 'pakfire resolvedeps wait' => 'Sprawdzanie zależności, proszę czekać...',
>> 'pakfire system state' => 'Status systemu',
>> 'pakfire uninstall all' => 'Czy chcesz odinstalować następujące pakiety?',
>> -'pakfire uninstall description' => 'Proszę wybrać jedną lub kilka pozycji z poniższej listy, a następnie kliknąć minus aby odinstalować.',
>> +'pakfire uninstall description' => 'Wybierz jeden lub więcej dodatków do usunięcia.',
>> 'pakfire uninstall package' => 'Zamierzasz odinstalować następujące pakiety: ',
>> 'pakfire update daily' => 'Szukaj aktualizacje codziennie:',
>> 'pakfire updates' => 'Dostępne Aktualizacje',
>> diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl
>> index 2695954dd..1a3ac2230 100644
>> --- a/langs/ru/cgi-bin/ru.pl
>> +++ b/langs/ru/cgi-bin/ru.pl
>> @@ -1353,7 +1353,7 @@
>> 'pakfire dependencies found' => 'Зависимости найдены:',
>> 'pakfire health check' => 'Пинговать зеркало на доступность:',
>> 'pakfire install' => 'Установить',
>> -'pakfire install description' => 'Пожалуйста, укажите один или несколько элементов в списке ниже и нажмите плюсик для установки.',
>> +'pakfire install description' => 'Пожалуйста, выберите одно или несколько дополнений для установки.',
>> 'pakfire install package' => 'Вы собираетесь установить следующие пакеты: ',
>> 'pakfire installed addons' => 'Установленные Аддоны:',
>> 'pakfire last core list update' => 'Обновление core-списков',
>> @@ -1367,7 +1367,7 @@
>> 'pakfire resolvedeps wait' => 'Проверка зависимостей, пожалуйста, подождите...',
>> 'pakfire system state' => 'Статус системы',
>> 'pakfire uninstall all' => 'Вы хотите удалить следующие пакеты?',
>> -'pakfire uninstall description' => 'Пожалуйста, укажите один или несколько элементов в списке ниже и нажмите минус для удаления.',
>> +'pakfire uninstall description' => 'Пожалуйста, выберите одно или несколько дополнений для удаления.',
>> 'pakfire uninstall package' => 'Вы собираетесь удалить следующие пакеты: ',
>> 'pakfire update daily' => 'Ежедневный поиск обновлений:',
>> 'pakfire updates' => 'Доступное Обновление',
>> diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl
>> index 85dc94f91..7dd46f584 100644
>> --- a/langs/tr/cgi-bin/tr.pl
>> +++ b/langs/tr/cgi-bin/tr.pl
>> @@ -1862,7 +1862,7 @@
>> 'pakfire dependencies found' => 'Bağımlılıklar bulundu:',
>> 'pakfire health check' => 'Yansımanın ulaşılabilir olup olmadığını kontrol et (ping):',
>> 'pakfire install' => 'Yükle',
>> -'pakfire install description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra eklemek için artı simgesine tıklayınız.',
>> +'pakfire install description' => 'Lütfen yüklemek için bir veya daha fazla eklenti seçin.',
>> 'pakfire install package' => 'Aşağıdaki paketleri yüklemek istediniz: ',
>> 'pakfire installed addons' => 'Kurulu eklentiler:',
>> 'pakfire last core list update' => 'Son çekirdek listesi güncellemesi',
>> @@ -1876,7 +1876,7 @@
>> 'pakfire resolvedeps wait' => 'Bağımlılıklar kontrol ediliyor, lütfen bekleyin...',
>> 'pakfire system state' => 'Sistem durumu',
>> 'pakfire uninstall all' => 'Aşağıdaki paketleri kaldırmak istiyor musunuz?',
>> -'pakfire uninstall description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra kaldırmak için eksi simgesine tıklayınız.',
>> +'pakfire uninstall description' => 'Lütfen kaldırmak için bir veya daha fazla eklenti seçin.',
>> 'pakfire uninstall package' => 'Aşağıdaki paketleri kaldırmak istiyorum: ',
>> 'pakfire update daily' => 'Günlük güncellemeleri ara:',
>> 'pakfire updates' => 'Mevcut Güncellemeler',
>> -- 
>> 2.43.0
>>
>>
  

Patch

diff --git a/doc/language_issues.de b/doc/language_issues.de
index aeb37ccf7..c5db3dc64 100644
--- a/doc/language_issues.de
+++ b/doc/language_issues.de
@@ -42,6 +42,7 @@  WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: Weekly
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -831,6 +832,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/doc/language_issues.en b/doc/language_issues.en
index 288aeda6e..5e4221153 100644
--- a/doc/language_issues.en
+++ b/doc/language_issues.en
@@ -82,7 +82,6 @@  WARNING: untranslated string: WakeOnLan = Wake On Lan
 WARNING: untranslated string: a ca certificate with this name already exists = A CA certificate with this name already exists.
 WARNING: untranslated string: a connection with this common name already exists = A connection with this common name already exists.
 WARNING: untranslated string: a connection with this name already exists = A connection with this name already exists.
-WARNING: untranslated string: abort = abort
 WARNING: untranslated string: access point name = Access Point Name
 WARNING: untranslated string: access point name is invalid = Access Point Name is invalid
 WARNING: untranslated string: access point name is required = Access Point Name is required
@@ -1457,7 +1456,7 @@  WARNING: untranslated string: pakfire core update level = Core-Update-Level
 WARNING: untranslated string: pakfire finished = Pakfire has finished! Returning...
 WARNING: untranslated string: pakfire finished error = Pakfire has finished! Errors occurred, please check the log output before proceeding.
 WARNING: untranslated string: pakfire install = Install
-WARNING: untranslated string: pakfire install description = Please choose one or more items from the list below and click the plus to install.
+WARNING: untranslated string: pakfire install description = Please select one or more add-ons to install.
 WARNING: untranslated string: pakfire install package = You want to install the following packages: 
 WARNING: untranslated string: pakfire installed addons = Installed Add-ons:
 WARNING: untranslated string: pakfire invalid tree = Invalid repository selected
@@ -1474,7 +1473,7 @@  WARNING: untranslated string: pakfire tree stable = Stable
 WARNING: untranslated string: pakfire tree testing = Testing
 WARNING: untranslated string: pakfire tree unstable = Unstable
 WARNING: untranslated string: pakfire uninstall all = Do you want to uninstall the following packages?
-WARNING: untranslated string: pakfire uninstall description = Please choose one or more items from the list below and click the minus to uninstall.
+WARNING: untranslated string: pakfire uninstall description = Please select one or more add-ons to remove.
 WARNING: untranslated string: pakfire uninstall package = You want to uninstall the following packages: 
 WARNING: untranslated string: pakfire updates = Available Updates
 WARNING: untranslated string: pakfire upgrade = Upgrade
@@ -1804,7 +1803,6 @@  WARNING: untranslated string: unable to contact = Unable to contact
 WARNING: untranslated string: unblock = Unblock
 WARNING: untranslated string: unblock all = Unblock all
 WARNING: untranslated string: uncheck all = Uncheck all
-WARNING: untranslated string: uninstall = Uninstall
 WARNING: untranslated string: unknown = UNKNOWN
 WARNING: untranslated string: unlimited = Unlimited
 WARNING: untranslated string: unnamed = Unnamed
diff --git a/doc/language_issues.es b/doc/language_issues.es
index c68e79292..de7a79bc4 100644
--- a/doc/language_issues.es
+++ b/doc/language_issues.es
@@ -43,6 +43,7 @@  WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: Weekly
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -896,6 +897,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/doc/language_issues.fr b/doc/language_issues.fr
index e0d8cb1f4..41cda1988 100644
--- a/doc/language_issues.fr
+++ b/doc/language_issues.fr
@@ -46,6 +46,7 @@  WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
 WARNING: translation string unused: Weekly
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -869,6 +870,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/doc/language_issues.it b/doc/language_issues.it
index e00d5c5c1..80ef72027 100644
--- a/doc/language_issues.it
+++ b/doc/language_issues.it
@@ -18,6 +18,7 @@  WARNING: translation string unused: Subclass
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -822,6 +823,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/doc/language_issues.nl b/doc/language_issues.nl
index 42fb6088d..43b16a94f 100644
--- a/doc/language_issues.nl
+++ b/doc/language_issues.nl
@@ -18,6 +18,7 @@  WARNING: translation string unused: Subclass
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -822,6 +823,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/doc/language_issues.pl b/doc/language_issues.pl
index e7ffefd71..e59af3996 100644
--- a/doc/language_issues.pl
+++ b/doc/language_issues.pl
@@ -18,6 +18,7 @@  WARNING: translation string unused: Subclass
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -738,6 +739,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/doc/language_issues.ru b/doc/language_issues.ru
index 6ce1a3516..371f38fa7 100644
--- a/doc/language_issues.ru
+++ b/doc/language_issues.ru
@@ -18,6 +18,7 @@  WARNING: translation string unused: Subclass
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -733,6 +734,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
index 5cf3953ad..fd624e9d6 100644
--- a/doc/language_issues.tr
+++ b/doc/language_issues.tr
@@ -39,6 +39,7 @@  WARNING: translation string unused: Subclass
 WARNING: translation string unused: TOS Bits
 WARNING: translation string unused: Utilization on
 WARNING: translation string unused: Verbose
+WARNING: translation string unused: abort
 WARNING: translation string unused: access allowed
 WARNING: translation string unused: access refused with this oinkcode
 WARNING: translation string unused: accounting
@@ -851,6 +852,7 @@  WARNING: translation string unused: tripwirewarningpolicy
 WARNING: translation string unused: umount
 WARNING: translation string unused: umount removable media before to unplug
 WARNING: translation string unused: unencrypted
+WARNING: translation string unused: uninstall
 WARNING: translation string unused: unix charset
 WARNING: translation string unused: unix group
 WARNING: translation string unused: unix password sync
diff --git a/html/cgi-bin/pakfire.cgi b/html/cgi-bin/pakfire.cgi
index 80aaf9a1c..1cd39e411 100644
--- a/html/cgi-bin/pakfire.cgi
+++ b/html/cgi-bin/pakfire.cgi
@@ -120,18 +120,18 @@  if(($cgiparams{'ACTION'} ne '') && ($pagemode eq $PM_DEFAULT)) {
 	if(&_is_pakfire_busy()) {
 		$errormessage = $Lang::tr{'pakfire already busy'};
 		$pagemode = $PM_LOGREAD; # Running Pakfire instance found, switch to log viewer mode
-	} elsif(($cgiparams{'ACTION'} eq 'install') && ($cgiparams{'FORCE'} eq 'on')) {
+	} elsif(($cgiparams{'ACTION'} eq $Lang::tr{'pakfire install'}) && ($cgiparams{'FORCE'} eq 'on')) {
 		my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
 		&General::system_background("/usr/local/bin/pakfire", "install", "--non-interactive", "--no-colors", @pkgs);
 		&_http_pagemode_redirect($PM_LOGREAD, 1);
-	} elsif(($cgiparams{'ACTION'} eq 'remove') && ($cgiparams{'FORCE'} eq 'on')) {
+	} elsif(($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) && ($cgiparams{'FORCE'} eq 'on')) {
 		my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
 		&General::system_background("/usr/local/bin/pakfire", "remove", "--non-interactive", "--no-colors", @pkgs);
 		&_http_pagemode_redirect($PM_LOGREAD, 1);
-	} elsif($cgiparams{'ACTION'} eq 'update') {
+	} elsif($cgiparams{'ACTION'} eq $Lang::tr{'pakfire refresh list'}) {
 		&General::system_background("/usr/local/bin/pakfire", "update", "--force", "--no-colors");
 		&_http_pagemode_redirect($PM_LOGREAD, 1);
-	} elsif($cgiparams{'ACTION'} eq 'upgrade') {
+	} elsif($cgiparams{'ACTION'} eq $Lang::tr{'pakfire upgrade'}) {
 		&General::system_background("/usr/local/bin/pakfire", "upgrade", "-y", "--no-colors");
 		&_http_pagemode_redirect($PM_LOGREAD, 1);
 	} elsif($cgiparams{'ACTION'} eq $Lang::tr{'save'}) {
@@ -161,16 +161,11 @@  my $extraHead = <<END
 	/* Main screen */
 	table#pfmain {
 		width: 100%;
-		border-style: hidden;
 		table-layout: fixed;
-	}
-
-	#pfmain td {
-		padding: 5px 20px 0;
 		text-align: center;
 	}
-	#pfmain tr:not(:last-child) > td {
-		padding-bottom: 1.5em;
+	#pfmain td {
+		padding: 0px 20px;
 	}
 	#pfmain tr > td.heading {
 		padding: 0;
@@ -207,7 +202,6 @@  my $extraHead = <<END
 		margin-top: 0.7em;
 		padding-top: 0.7em;
 		border-top: 0.5px solid $Header::bordercolour;
-
 		text-align: left;
 		min-height: 15em;
 		overflow-x: auto;
@@ -280,36 +274,40 @@  END
 
 # Show Pakfire install/remove dependencies and confirm form
 # (_is_pakfire_busy status was checked before and can be omitted)
-if (($cgiparams{'ACTION'} eq 'install') && ($pagemode eq $PM_DEFAULT)) {
+if (($cgiparams{'ACTION'} eq $Lang::tr{'pakfire install'}) && ($pagemode eq $PM_DEFAULT)) {
 	&Header::openbox("100%", "center", $Lang::tr{'request'});
 
 	my @pkgs = split(/\|/, $cgiparams{'INSPAKS'});
 	my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
 	print <<END;
-	<table style="width: 100%"><tr><td colspan='2'><p>$Lang::tr{'pakfire install package'} <strong>@{pkgs}</strong><br>
-		$Lang::tr{'pakfire possible dependency'}</p>
-		<pre>
+	<table style="width: 100%">
+		<tr>
+			<td>
+			<p>$Lang::tr{'pakfire install package'} <strong>@{pkgs}</strong><br>$Lang::tr{'pakfire possible dependency'}</p>
+			<pre>
 END
 	foreach (@output) {
 		$_ =~ s/\\[[0-1]\;[0-9]+m//g;
 		print "$_\n";
 	}
 	print <<END;
-		</pre></td></tr>
-		<tr><td colspan='2'>$Lang::tr{'pakfire accept all'}</td></tr>
-		<tr><td colspan='2'>&nbsp;</td></tr>
-		<tr><td align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<input type='hidden' name='INSPAKS' value='$cgiparams{'INSPAKS'}' />
-					<input type='hidden' name='FORCE' value='on' />
-					<input type='hidden' name='ACTION' value='install' />
-					<input type='image' alt='$Lang::tr{'pakfire install'}' title='$Lang::tr{'pakfire install'}' src='/images/go-next.png' />
-				</form>
+			</pre>
 			</td>
-			<td align='left'>
-				<form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<input type='hidden' name='ACTION' value='' />
-					<input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
-				</form>
+		</tr>
+		<tr>
+			<td>$Lang::tr{'pakfire accept all'}</td>
+		</tr>
+		<tr>
+			<td>&nbsp;</td>
+		</tr>
+		<tr>
+			<td align='center'>
+			<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+			<input type='hidden' name='INSPAKS' value='$cgiparams{'INSPAKS'}' />
+			<input type='hidden' name='FORCE' value='on' />
+			<input type='submit' name='ACTION' value='$Lang::tr{'pakfire install'}'/>
+			<input type='submit' name='ACTION' value='$Lang::tr{'cancel'}'/>
+			</form>
 			</td>
 		</tr>
 	</table>
@@ -319,36 +317,40 @@  END
 	&Header::closepage();
 	exit;
 
-} elsif (($cgiparams{'ACTION'} eq 'remove') && ($pagemode eq $PM_DEFAULT)) {
+} elsif (($cgiparams{'ACTION'} eq $Lang::tr{'remove'}) && ($pagemode eq $PM_DEFAULT)) {
 	&Header::openbox("100%", "center", $Lang::tr{'request'});
 
 	my @pkgs = split(/\|/, $cgiparams{'DELPAKS'});
 	my @output = &General::system_output("/usr/local/bin/pakfire", "resolvedeps", "--no-colors", @pkgs);
 	print <<END;
-	<table style="width: 100%"><tr><td colspan='2'><p>$Lang::tr{'pakfire uninstall package'} <strong>@{pkgs}</strong><br>
-		$Lang::tr{'pakfire possible dependency'}</p>
-		<pre>
+	<table style="width: 100%">
+		<tr>
+			<td colspan='2'>
+			<p>$Lang::tr{'pakfire uninstall package'} <strong>@{pkgs}</strong><br>$Lang::tr{'pakfire possible dependency'}</p>
+			<pre>
 END
 	foreach (@output) {
 		$_ =~ s/\\[[0-1]\;[0-9]+m//g;
 		print "$_\n";
 	}
 	print <<END;
-		</pre></td></tr>
-		<tr><td colspan='2'>$Lang::tr{'pakfire uninstall all'}</td></tr>
-		<tr><td colspan='2'>&nbsp;</td></tr>
-		<tr><td align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<input type='hidden' name='DELPAKS' value='$cgiparams{'DELPAKS'}' />
-					<input type='hidden' name='FORCE' value='on' />
-					<input type='hidden' name='ACTION' value='remove' />
-					<input type='image' alt='$Lang::tr{'uninstall'}' title='$Lang::tr{'uninstall'}' src='/images/go-next.png' />
-				</form>
+			</pre>
 			</td>
-			<td align='left'>
-				<form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<input type='hidden' name='ACTION' value='' />
-					<input type='image' alt='$Lang::tr{'abort'}' title='$Lang::tr{'abort'}' src='/images/dialog-error.png' />
-				</form>
+		</tr>
+		<tr>
+			<td colspan='2'>$Lang::tr{'pakfire uninstall all'}</td>
+		</tr>
+		<tr>
+			<td colspan='2'>&nbsp;</td>
+		</tr>
+		<tr>
+			<td align='center'>
+			<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+			<input type='hidden' name='DELPAKS' value='$cgiparams{'DELPAKS'}' />
+			<input type='hidden' name='FORCE' value='on' />
+			<input type='submit' name='ACTION' value='$Lang::tr{'remove'}'/>
+			<input type='submit' name='ACTION' value='$Lang::tr{'cancel'}'/>
+			</form>
 			</td>
 		</tr>
 	</table>
@@ -374,30 +376,36 @@  $selected{"TREE"}{$pakfiresettings{"TREE"}} = "selected";
 print <<END;
 	<table id="pfmain">
 END
-if ("$pakfire_status{'RebootRequired'}" eq "yes") {
-	print "\t\t<tr><td colspan='2'><a href='/cgi-bin/shutdown.cgi'>$Lang::tr{'needreboot'}!</a></td></tr>\n";
+if ($pakfire_status{'RebootRequired'} eq "yes")
+{
+	print <<END;
+		<tr>
+			<td colspan='2' style='padding-bottom:20px'>
+			<a href='/cgi-bin/shutdown.cgi'>$Lang::tr{'needreboot'}!</a>
+			</td>
+		</tr>
+END
 }
 
 print <<END;
-		<tr><td class="heading">$Lang::tr{'pakfire system state'}:</td>
-			<td class="heading">$Lang::tr{'pakfire updates'}:</td></tr>
-
-		<tr><td><strong>$Lang::tr{'pakfire core update level'}: $pakfire_status{'Release'}</strong>
-				<hr>
-				<div class="pflist">
-					$Lang::tr{'pakfire last update'} $pakfire_status{'LastUpdate'} $Lang::tr{'pakfire ago'}<br>
-					$Lang::tr{'pakfire last serverlist update'} $pakfire_status{'LastServerListUpdate'} $Lang::tr{'pakfire ago'}<br>
-					$Lang::tr{'pakfire last core list update'} $pakfire_status{'LastCoreListUpdate'} $Lang::tr{'pakfire ago'}<br>
-					$Lang::tr{'pakfire last package update'} $pakfire_status{'LastPakListUpdate'} $Lang::tr{'pakfire ago'}
-				</div>
-				<form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<input type='hidden' name='ACTION' value='update' />
-					<input type='submit' value='$Lang::tr{'pakfire refresh list'}' />
-				</form>
+		<tr>
+			<td class="heading">$Lang::tr{'pakfire system state'}:</td>
+			<td class="heading">$Lang::tr{'pakfire updates'}:</td>
+		</tr>
+
+		<tr>
+			<td style='padding-top: 15px'>
+			<strong>$Lang::tr{'pakfire core update level'}: $pakfire_status{'Release'}</strong>
+			<hr>
+			<div class="pflist">
+				$Lang::tr{'pakfire last update'} $pakfire_status{'LastUpdate'} $Lang::tr{'pakfire ago'}<br>
+				$Lang::tr{'pakfire last serverlist update'} $pakfire_status{'LastServerListUpdate'} $Lang::tr{'pakfire ago'}<br>
+				$Lang::tr{'pakfire last core list update'} $pakfire_status{'LastCoreListUpdate'} $Lang::tr{'pakfire ago'}<br>
+				$Lang::tr{'pakfire last package update'} $pakfire_status{'LastPakListUpdate'} $Lang::tr{'pakfire ago'}
+			</div>
 			</td>
-			<td>
-				<form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<select name="UPDPAKS" class="pflist" size="5" disabled>
+			<td style='padding-top: 15px'>
+			<select class="pflist" style="height: 103px" size="5" disabled>
 END
 
 	if ("$pakfire_status{'CoreUpdateAvailable'}" eq "yes") {
@@ -412,18 +420,44 @@  END
 	}
 
 	print <<END;
-					</select>
-					<input type='hidden' name='ACTION' value='upgrade' />
-					<input type='image' alt='$Lang::tr{'pakfire upgrade'}' title='$Lang::tr{'pakfire upgrade'}' src='/images/document-save.png' />
-				 </form>
+			</select>
 			</td>
 		</tr>
-		<tr><td class="heading">$Lang::tr{'pakfire available addons'}</td>
-			<td class="heading">$Lang::tr{'pakfire installed addons'}</td></tr>
+		<tr>
+			<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+			<td style='padding-bottom: 15px'>
+			<input type='submit' name='ACTION' value='$Lang::tr{'pakfire refresh list'}' />
+			</td>
+			<td style='padding-bottom: 15px'>
+END
 
-		<tr><td style="padding:5px 10px 20px 20px" align="center"><p>$Lang::tr{'pakfire install description'}</p>
-				<form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<select name="INSPAKS" class="pflist" size="10" multiple>
+        if (($pakfire_status{'CoreUpdateAvailable'} eq "yes") || ($pakfire_status{'PakUpdatesAvailable'} > 0))
+        {
+                print "<input type='submit' name='ACTION' value='$Lang::tr{'pakfire upgrade'}'/>\n";
+        } else {
+                print "<input disabled type='submit' name='ACTION' value='$Lang::tr{'pakfire upgrade'}'/>\n";
+        }
+
+	print <<END;
+			</td>
+			</form>
+		</tr>
+		<tr>
+			<td class="heading">$Lang::tr{'pakfire available addons'}</td>
+			<td class="heading">$Lang::tr{'pakfire installed addons'}</td>
+		</tr>
+		<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+		<tr>
+			<td style='padding-top: 15px; padding-bottom: 5px'>
+			$Lang::tr{'pakfire install description'}
+			</td>
+			<td style='padding-top: 15px; padding-bottom: 5px'>
+			$Lang::tr{'pakfire uninstall description'}
+			</td>
+		</tr>
+		<tr>
+			<td>
+			<select name="INSPAKS" class="pflist" style="height:206px" size="10" multiple onchange="document.getElementById('installbutton').disabled=false">
 END
 
 	my %notinstalledlist = &Pakfire::dblist("notinstalled");
@@ -432,14 +466,10 @@  END
 	}
 
 	print <<END;
-					</select>
-					<input type='hidden' name='ACTION' value='install' />
-					<input type='image' alt='$Lang::tr{'pakfire install'}' title='$Lang::tr{'pakfire install'}' src='/images/list-add.png' />
-				</form>
+			</select>
 			</td>
-			<td style="padding:5px 10px 20px 20px" align="center"><p>$Lang::tr{'pakfire uninstall description'}</p>
-				<form method='post' action='$ENV{'SCRIPT_NAME'}'>
-					<select name="DELPAKS" class="pflist" size="10" multiple>
+			<td>
+			<select name="DELPAKS" class="pflist" style="height:206px" size="10" multiple onchange="document.getElementById('removebutton').disabled=false">
 END
 
 	my %installedlist = &Pakfire::dblist("installed");
@@ -448,12 +478,18 @@  END
 	}
 
 	print <<END;
-					</select>
-					<input type='hidden' name='ACTION' value='remove' />
-					<input type='image' alt='$Lang::tr{'remove'}' title='$Lang::tr{'remove'}' src='/images/list-remove.png' />
-				</form>
+			</select>
+			</td>
+		</tr>
+		<tr>
+			<td style='padding-bottom: 5px'>
+			<input disabled type='submit' id='installbutton' name='ACTION' value='$Lang::tr{'pakfire install'}'/>
+			</td>
+			<td style='padding-bottom: 5px'>
+			<input disabled type='submit' id='removebutton' name='ACTION' value='$Lang::tr{'remove'}'/>
 			</td>
 		</tr>
+		</form>
 	</table>
 END
 
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
index 9a7d093ff..bb0c51f03 100644
--- a/langs/de/cgi-bin/de.pl
+++ b/langs/de/cgi-bin/de.pl
@@ -2019,7 +2019,7 @@ 
 'pakfire finished error' => 'Pakfire ist fertig! Fehler sind aufgetreten, bitte überprüfen Sie die Log-Ausgabe, bevor Sie fortfahren.',
 'pakfire health check' => 'Mirrors auf Erreichbarkeit prüfen (Ping):',
 'pakfire install' => 'Installieren',
-'pakfire install description' => 'Wählen Sie ein oder mehrere Pakete zur Installation aus und drücken Sie auf das plus-Symbol.',
+'pakfire install description' => 'Bitte wählen Sie ein oder mehrere Add-Ons zur Installation aus.',
 'pakfire install package' => 'Sie möchten folgende Pakete installieren: ',
 'pakfire installed addons' => 'Installierte Add-ons:',
 'pakfire invalid tree' => '',
@@ -2039,7 +2039,7 @@ 
 'pakfire tree testing' => 'Vorabversionen (testing)',
 'pakfire tree unstable' => 'Experimentelle Versionen (unstable)',
 'pakfire uninstall all' => 'Möchten Sie die folgenden Pakete deinstallieren?',
-'pakfire uninstall description' => 'Wählen Sie ein oder mehrere Pakete zur Deinstallation aus und drücken Sie auf das minus-Symbol.',
+'pakfire uninstall description' => 'Bitte wählen Sie ein oder mehrere Add-Ons zum Entfernen aus.',
 'pakfire uninstall package' => 'Sie möchten folgende Pakete deinstallieren: ',
 'pakfire update daily' => 'Täglich nach Updates suchen:',
 'pakfire updates' => 'Verfügbare Updates',
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 06db0cab1..9dccabf09 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -2085,7 +2085,7 @@ 
 'pakfire finished error' => 'Pakfire has finished! Errors occurred, please check the log output before proceeding.',
 'pakfire health check' => 'Check if mirror is reachable (ping):',
 'pakfire install' => 'Install',
-'pakfire install description' => 'Please choose one or more items from the list below and click the plus to install.',
+'pakfire install description' => 'Please select one or more add-ons to install.',
 'pakfire install package' => 'You want to install the following packages: ',
 'pakfire installed addons' => 'Installed Add-ons:',
 'pakfire invalid tree' => 'Invalid repository selected',
@@ -2105,7 +2105,7 @@ 
 'pakfire tree testing' => 'Testing',
 'pakfire tree unstable' => 'Unstable',
 'pakfire uninstall all' => 'Do you want to uninstall the following packages?',
-'pakfire uninstall description' => 'Please choose one or more items from the list below and click the minus to uninstall.',
+'pakfire uninstall description' => 'Please select one or more add-ons to remove.',
 'pakfire uninstall package' => 'You want to uninstall the following packages: ',
 'pakfire update daily' => 'Search for updates daily:',
 'pakfire updates' => 'Available Updates',
diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl
index d1bd54d88..4da08b480 100644
--- a/langs/es/cgi-bin/es.pl
+++ b/langs/es/cgi-bin/es.pl
@@ -2082,7 +2082,7 @@ 
 'pakfire finished error' => '¡Pakfire ha terminado! Ocurrieron errores, verifique la salida del registro antes de continuar.',
 'pakfire health check' => 'Verificar disponibilidad del espejo (ping):',
 'pakfire install' => 'Instalar',
-'pakfire install description' => 'Por favor elija uno o más elementos de la siguiente lista y haga click en el signo + para instalar',
+'pakfire install description' => 'Seleccione uno o más complementos para instalar.',
 'pakfire install package' => 'Ud. desea instalar los siguientes paquetes:',
 'pakfire installed addons' => 'Complementos instalados:',
 'pakfire invalid tree' => 'Repositorio no válido seleccionado',
@@ -2102,7 +2102,7 @@ 
 'pakfire tree testing' => 'Pruebas',
 'pakfire tree unstable' => 'Inestable',
 'pakfire uninstall all' => '¿Desea desinstalar los siguientes paquetes?',
-'pakfire uninstall description' => 'Por favor elija uno o más elementos de la siguiente lista y haga click en el signo - para desinstalar',
+'pakfire uninstall description' => 'Seleccione uno o más complementos para eliminar.',
 'pakfire uninstall package' => 'Desea desinstalar los siguientes paquetes:',
 'pakfire update daily' => 'Buscar actualizaciones diariamente:',
 'pakfire updates' => 'Actualizaciones Disponibles',
diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl
index 0513d1395..9e457acd0 100644
--- a/langs/fr/cgi-bin/fr.pl
+++ b/langs/fr/cgi-bin/fr.pl
@@ -2080,7 +2080,7 @@ 
 'pakfire finished error' => 'Pakfire a fini ! Des erreurs se sont produites, veuillez vérifier les rapports système des journaux avant de continuer.',
 'pakfire health check' => 'Vérifier si le miroir est accessible (ping) :',
 'pakfire install' => 'Installer',
-'pakfire install description' => 'Veuillez choisir un ou plusieurs modules dans la liste ci-dessous<br>et cliquer sur le signe PLUS pour le(s) installer.',
+'pakfire install description' => 'Veuillez sélectionner un ou plusieurs modules complémentaires à installer.',
 'pakfire install package' => 'Vous souhaitez installer le(s) module(s) suivant(s) : ',
 'pakfire installed addons' => 'Modules installés :',
 'pakfire invalid tree' => 'Dépôt choisi invalide',
@@ -2100,7 +2100,7 @@ 
 'pakfire tree testing' => 'En test',
 'pakfire tree unstable' => 'Instable',
 'pakfire uninstall all' => 'Voulez-vous désinstaller ce(s) paquet(s) ?',
-'pakfire uninstall description' => 'Veuillez choisir un ou plusieurs modules dans la liste ci-dessous<br>et cliquer sur le signe MOINS pour le(s) désinstaller.',
+'pakfire uninstall description' => 'Veuillez sélectionner un ou plusieurs modules complémentaires à supprimer.',
 'pakfire uninstall package' => 'Vous souhaitez désinstaller le(s) module(s) suivant(s) : ',
 'pakfire update daily' => 'Rechercher des mises à jour quotidiennes :',
 'pakfire updates' => 'Mises à jour Disponibles',
diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl
index 18fe1703e..b13c3b85c 100644
--- a/langs/it/cgi-bin/it.pl
+++ b/langs/it/cgi-bin/it.pl
@@ -1718,7 +1718,7 @@ 
 'pakfire dependencies found' => 'Dipendenze trovate:',
 'pakfire health check' => 'Controllare se il mirror è raggiungibile (ping):',
 'pakfire install' => 'Installare',
-'pakfire install description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e fai clic sul segno più per installare.',
+'pakfire install description' => 'Selezionare uno o più componenti aggiuntivi da installare.',
 'pakfire install package' => 'You want to install the following packages: ',
 'pakfire installed addons' => 'Addons installati:',
 'pakfire last core list update' => 'Ultimo aggiornamento della lista di sistema',
@@ -1732,7 +1732,7 @@ 
 'pakfire resolvedeps wait' => 'Controllo delle dipendenze, attendere prego...',
 'pakfire system state' => 'Stato del Sistema',
 'pakfire uninstall all' => 'Vuoi disinstallare i seguenti pacchetti?',
-'pakfire uninstall description' => 'Si prega di scegliere uno o più elementi dalla lista qui sotto e fare clic sul meno per disinstallare..',
+'pakfire uninstall description' => 'Seleziona uno o più componenti aggiuntivi da rimuovere.',
 'pakfire uninstall package' => 'You want to uninstall the following packages: ',
 'pakfire update daily' => 'Ricerca gli aggiornamenti una volta al giorno:',
 'pakfire updates' => 'Aggiornamenti Disponibili',
diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl
index c844c9613..439f24249 100644
--- a/langs/nl/cgi-bin/nl.pl
+++ b/langs/nl/cgi-bin/nl.pl
@@ -1693,7 +1693,7 @@ 
 'pakfire dependencies found' => 'Afhankelijkheden gevonden:',
 'pakfire health check' => 'Controleer of de mirror bereikbaar is  (ping):',
 'pakfire install' => 'Installeren',
-'pakfire install description' => 'Kies een of meer items uit de lijst hieronder en klik op de plus om te installeren.',
+'pakfire install description' => 'Selecteer een of meer add-ons om te installeren.',
 'pakfire install package' => 'U wilt de volgende pakketten installeren: ',
 'pakfire installed addons' => 'Geïnstalleerde add-ons:',
 'pakfire last core list update' => 'Laatste core-lijst update gemaakt',
@@ -1707,7 +1707,7 @@ 
 'pakfire resolvedeps wait' => 'Controleren op afhankelijkheden, even geduld...',
 'pakfire system state' => 'Systeemstatus',
 'pakfire uninstall all' => 'Wilt u de volgende pakketten verwijderen?',
-'pakfire uninstall description' => 'Kies een of meer items uit de lijst hieronder en klik op de min om te deinstalleren.',
+'pakfire uninstall description' => 'Selecteer een of meer add-ons om te verwijderen.',
 'pakfire uninstall package' => 'U wilt de volgende pakketten deinstalleren: ',
 'pakfire update daily' => 'Zoek dagelijks naar updates:',
 'pakfire updates' => 'Beschikbare Updates',
diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl
index 8e3ca59cb..c5198b6f1 100644
--- a/langs/pl/cgi-bin/pl.pl
+++ b/langs/pl/cgi-bin/pl.pl
@@ -1358,7 +1358,7 @@ 
 'pakfire dependencies found' => 'Znaleziono zależności:',
 'pakfire health check' => 'Sprawdź czy mirror jest dostępny (ping):',
 'pakfire install' => 'Instaluj',
-'pakfire install description' => 'Proszę wybrać jedną lub kilka pozycji z poniższej listy, a następnie kliknąć plus aby zainstalować.',
+'pakfire install description' => 'Wybierz jeden lub więcej dodatków do zainstalowania.',
 'pakfire install package' => 'Zamierzasz zainstalować następujące pakiety: ',
 'pakfire installed addons' => 'Zainstalowane dodatki:',
 'pakfire last core list update' => 'Sprawdzenie aktualizacja jądra:',
@@ -1372,7 +1372,7 @@ 
 'pakfire resolvedeps wait' => 'Sprawdzanie zależności, proszę czekać...',
 'pakfire system state' => 'Status systemu',
 'pakfire uninstall all' => 'Czy chcesz odinstalować następujące pakiety?',
-'pakfire uninstall description' => 'Proszę wybrać jedną lub kilka pozycji z poniższej listy, a następnie kliknąć minus aby odinstalować.',
+'pakfire uninstall description' => 'Wybierz jeden lub więcej dodatków do usunięcia.',
 'pakfire uninstall package' => 'Zamierzasz odinstalować następujące pakiety: ',
 'pakfire update daily' => 'Szukaj aktualizacje codziennie:',
 'pakfire updates' => 'Dostępne Aktualizacje',
diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl
index 2695954dd..1a3ac2230 100644
--- a/langs/ru/cgi-bin/ru.pl
+++ b/langs/ru/cgi-bin/ru.pl
@@ -1353,7 +1353,7 @@ 
 'pakfire dependencies found' => 'Зависимости найдены:',
 'pakfire health check' => 'Пинговать зеркало на доступность:',
 'pakfire install' => 'Установить',
-'pakfire install description' => 'Пожалуйста, укажите один или несколько элементов в списке ниже и нажмите плюсик для установки.',
+'pakfire install description' => 'Пожалуйста, выберите одно или несколько дополнений для установки.',
 'pakfire install package' => 'Вы собираетесь установить следующие пакеты: ',
 'pakfire installed addons' => 'Установленные Аддоны:',
 'pakfire last core list update' => 'Обновление core-списков',
@@ -1367,7 +1367,7 @@ 
 'pakfire resolvedeps wait' => 'Проверка зависимостей, пожалуйста, подождите...',
 'pakfire system state' => 'Статус системы',
 'pakfire uninstall all' => 'Вы хотите удалить следующие пакеты?',
-'pakfire uninstall description' => 'Пожалуйста, укажите один или несколько элементов в списке ниже и нажмите минус для удаления.',
+'pakfire uninstall description' => 'Пожалуйста, выберите одно или несколько дополнений для удаления.',
 'pakfire uninstall package' => 'Вы собираетесь удалить следующие пакеты: ',
 'pakfire update daily' => 'Ежедневный поиск обновлений:',
 'pakfire updates' => 'Доступное Обновление',
diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl
index 85dc94f91..7dd46f584 100644
--- a/langs/tr/cgi-bin/tr.pl
+++ b/langs/tr/cgi-bin/tr.pl
@@ -1862,7 +1862,7 @@ 
 'pakfire dependencies found' => 'Bağımlılıklar bulundu:',
 'pakfire health check' => 'Yansımanın ulaşılabilir olup olmadığını kontrol et (ping):',
 'pakfire install' => 'Yükle',
-'pakfire install description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra eklemek için artı simgesine tıklayınız.',
+'pakfire install description' => 'Lütfen yüklemek için bir veya daha fazla eklenti seçin.',
 'pakfire install package' => 'Aşağıdaki paketleri yüklemek istediniz: ',
 'pakfire installed addons' => 'Kurulu eklentiler:',
 'pakfire last core list update' => 'Son çekirdek listesi güncellemesi',
@@ -1876,7 +1876,7 @@ 
 'pakfire resolvedeps wait' => 'Bağımlılıklar kontrol ediliyor, lütfen bekleyin...',
 'pakfire system state' => 'Sistem durumu',
 'pakfire uninstall all' => 'Aşağıdaki paketleri kaldırmak istiyor musunuz?',
-'pakfire uninstall description' => 'Aşağıdaki listeden bir veya daha fazla öğeyi seçtikten sonra kaldırmak için eksi simgesine tıklayınız.',
+'pakfire uninstall description' => 'Lütfen kaldırmak için bir veya daha fazla eklenti seçin.',
 'pakfire uninstall package' => 'Aşağıdaki paketleri kaldırmak istiyorum: ',
 'pakfire update daily' => 'Günlük güncellemeleri ara:',
 'pakfire updates' => 'Mevcut Güncellemeler',