From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4bShyr1N41z32vw for ; Thu, 26 Jun 2025 15:13:24 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mail01.haj.ipfire.org", Issuer "R10" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4bShym4Tgfz32Xt for ; Thu, 26 Jun 2025 15:13:20 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail01.ipfire.org (Postfix) with ESMTPSA id 4bShyk69mwz1lV; Thu, 26 Jun 2025 15:13:18 +0000 (UTC) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003ed25519; t=1750950799; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hHAA/CKQP7/uMnFqRin3qDeDiQjZ+hFfMVPxvvYh8UI=; b=luvzboMTsb3xTN8drl57buGgcJObr5yXC4Vc4LFgOKNJ9Tl7cfBfk+spjTpT1Svl9o7HFY wUaabMKuWsbmRWAw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfire.org; s=202003rsa; t=1750950799; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hHAA/CKQP7/uMnFqRin3qDeDiQjZ+hFfMVPxvvYh8UI=; b=pe3mn/4e2945eIYv7JQge4kkJpZr09jw9cIRvtb0c4xxQXvIp+d/KMtjBpnk+fKaGObU9Y Eg4olbQIOJAqd0tvjSlY6PUF07ymxsIygZWJ99vbDvbUcPX6U7Z6oE5yC3eZ/siin3yGmw mlc0+i1dxL5g0nAcj0fbmMUEPop88ANJMWF3kfqUY3ZebK/uvYnBQWFt7Kct+wZmgaYtXU qksI8LaBZ39QXNlPIe8UlCsRhOh9Yh9XPlwSM31RDsntSOzGUmwVLPcs48gOgHIsAE6gTQ NgjxkuObSn/Lwl8h/UTiJMIKLDGlW4ky2U2GKSsRXy+wzmWm+vadA69lKPsyhQ== Date: Thu, 26 Jun 2025 16:13:18 +0100 From: Adam Gibbons To: development@lists.ipfire.org, Peer Dietzmann , Michael Tremer , Adolf Belka CC: "IPFire: Development-List" Subject: =?US-ASCII?Q?Re=3A_=5BEXTERN=5D_Re=3A_=5BPATCH_4/5=5D_fwhosts=2Ecgi?= =?US-ASCII?Q?=3A_Move_the_tooltip_into_the_usage_counter?= In-Reply-To: <92ca5601-7d10-4abd-9e5a-8f61ac1d20ad@brecht-schule.hamburg> References: <20250623171658.530138-1-michael.tremer@ipfire.org> <20250623171658.530138-4-michael.tremer@ipfire.org> <2bf6ef30-c057-4d39-98d5-8ef4ea35edea@ipfire.org> <92ca5601-7d10-4abd-9e5a-8f61ac1d20ad@brecht-schule.hamburg> Message-ID: <947F947E-A7B3-4B0D-A6BD-E265E2E56337@ipfire.org> Precedence: list List-Id: List-Subscribe: , List-Unsubscribe: , List-Post: List-Help: Sender: Mail-Followup-To: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=----VK0I2LCUH9YBNEX1NF4TEEU4B4TAVD Content-Transfer-Encoding: 7bit ------VK0I2LCUH9YBNEX1NF4TEEU4B4TAVD Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi all=2E I _think_ this could be accomplished by using an emoji instead=2E This one might be a good option: https://emojipedia=2Eorg/information I believe the unicode sequence for it is "U+2139 U+FE0F" But there are obviously many other emojis to choose from which might be mo= re appropriate=2E Thanks, Adam On 26 June 2025 13:08:54 BST, Peer Dietzmann wrote: >Hello Michael, Hello Adolf, > >it was actually a bit hard to find a working solution to place this infor= mation somewhere=2E I scrolled through all the icons IPFire has "built in" = and thought that a blue i icon would lead the user to think "oh what's this= ? What information can I get there?"=2E When hovering then over the icon al= l necessary information is directly displayed without any button or box or = anything which would require additional code and styling=2E Thereby all oth= er icons are clickable I think there is no additional documentation require= d, the users will find it on their own=2E > >But I am also fine with Michael's solution=2E > >-- > >Best regards > >Peer > >On 25=2E06=2E25 18:52, Michael Tremer wrote: >> Hello Adolf, >>=20 >> Thank you for the feedback=2E >>=20 >> It is indeed not obvious=2E On the other hand, the large icon is not re= ally a solution either in my opinion=2E It is simply too large and distract= ing for a feature that won=E2=80=99t be used *that* much=2E >>=20 >> I would however love some visual hint, but I cannot really think of any= thing between the two options that we have for now=2E >>=20 >> -Michael >>=20 >>> On 25 Jun 2025, at 17:40, Adolf Belka wro= te: >>>=20 >>> Tested-by: Adolf Belka >>>=20 >>> I actually found the i in a blue circle icon very helpful for this=2E = I was able to figure out where I should place my mouse pointer for the info= =2E >>>=20 >>> With this patch applied, which was the first way I tested it, I had no= idea where to place the mouse pointer as nothing looked different to the e= xisting situation=2E I did try placing it over the usage counter a couple o= f times but obviously not for long enough in my first tries as I never saw = anything get shown=2E >>>=20 >>> Reading the title of this patch more carefully I went back and now hel= d the mouse pointer over the usage counter and waited for 1 to 2 seconds an= d now the info was shown=2E Typically I found it takes a minimum of 1 seco= nd and sometimes around 1=2E5 seconds before anything is shown and first ti= me around I was obviously not waiting long enough at any one location=2E >>>=20 >>> If the usage counter is to stay as the location to place the mouse poi= nter onto for the info then I think this will need to be explained very cle= arly in the wiki documentation otherwise users might not discover this usef= ul function directly on the WUI page=2E >>>=20 >>>=20 >>> On 23/06/2025 19:16, Michael Tremer wrote: >>>> This will clutter the page less as we don't have any good icon sets= =2E >>>> Signed-off-by: Michael Tremer >>>> --- >>>> html/cgi-bin/fwhosts=2Ecgi | 42 +++++++++++------------------------= ----- >>>> 1 file changed, 11 insertions(+), 31 deletions(-) >>>> diff --git a/html/cgi-bin/fwhosts=2Ecgi b/html/cgi-bin/fwhosts=2Ecgi >>>> index 69970a840=2E=2E953f81e5f 100644 >>>> --- a/html/cgi-bin/fwhosts=2Ecgi >>>> +++ b/html/cgi-bin/fwhosts=2Ecgi >>>> @@ -1932,7 +1932,7 @@ sub viewtablenet >>>> }else{ >>>> print<>>> >>>> - >>>> + >>>> END >>>> } >>>> my $count=3D0; >>>> @@ -1953,11 +1953,7 @@ END >>>> my $colnet=3D"$customnetwork{$key}[1]/"=2E&General::subtocidr($cus= tomnetwork{$key}[2]); >>>> my $netcount=3D&getnetcount($customnetwork{$key}[0]); >>>> my $netusedin=3D&getusedin($customnetwork{$key}[0]); >>>> - my $htmlparttouse=3D""; >>>> - if ($netusedin) { >>>> - $htmlparttouse =3D ""; >>>> - } >>>> - print""; >>>> + print""; >>>> print<>>>
$Lang::tr{'name'}$Lang::tr{'fwhost netaddress'}$= Lang::tr{'remark'}$Lang::tr{'used'}
$Lang::tr{'name'}$Lang::tr{'fwhost netaddress'}$= Lang::tr{'remark'}$Lang::tr{'used'}
$customnetwork{$= key}[0]
"=2E&getcolor($colnet)= =2E"$customnetwork{$key}[3]$netcount x$htmlparttouse$customnetwork{$= key}[0]"=2E&getcolor($colnet)= =2E"$customnetwork{$key}[3]$netcount x >>>> >>>> @@ -2091,7 +2087,7 @@ sub viewtablehost >>>> }else{ >>>> print<>>> >>>> - >>>> + >>>> END >>>> } >>>> my $count=3D0; >>>> @@ -2112,12 +2108,9 @@ END >>>> my $hostcount=3D0; >>>> $hostcount=3D&gethostcount($customhost{$key}[0]); >>>> my $hostusedin=3D&getusedin($customhost{$key}[0]); >>>> - my $htmlparttouse=3D""; >>>> - if ($hostusedin) { >>>> - $htmlparttouse =3D ""; >>>> - } >>>> - print""; >>>> - print<>>> + my $color =3D &getcolor($ip); >>>> + print <>>> + >>>>
$Lang::tr{'name'}$Lang::tr{'fwhost ip_mac'}$Lang= ::tr{'remark'}$Lang::tr{'used'}
$Lang::tr{'name'}$Lang::tr{'fwhost ip_mac'}$Lang= ::tr{'remark'}$Lang::tr{'used'}
$customhost{$key}[0]"=2E&getcolor($ip)=2E"$customhost{$key}[3]$hostc= ount x$htmlparttouse$customhost{$key}[0]$color$cus= tomhost{$key}[3]= $hostcount x >>>> >>>> >>>> @@ -2192,11 +2185,8 @@ sub viewtablegrp >>>> print "
$grpname   "; >>>> print " $Lang::tr{'remark'}:  $remark   " if ($rema= rk ne ''); >>>> my $netgrpcount=3D&getnetcount($grpname); >>>> - print "$Lang::tr{'used'}: $netgrpcount x "; >>>> my $groupusedin=3D&getusedin($grpname); >>>> - if ($groupusedin) { >>>> - print ""; >>>> - } >>>> + print "$Lang::tr{'used'}: $netg= rpcount x"; >>>> if($netgrpcount =3D=3D '0') >>>> { >>>> print""; >>>> @@ -2335,10 +2325,7 @@ sub viewtablelocationgrp >>>> # Get group count=2E >>>> my $locationgrpcount=3D&getlocationcount($grpname); >>>> my $locationusedin=3D&getlocusedin($grpname); >>>> - print "$Lang::tr{'used'}: $locationgrpcount x "; >>>> - if ($locationusedin) { >>>> - print ""; >>>> - } >>>> + print "$Lang::tr{'used'}: $l= ocationgrpcount x"; >>>> # Only display delete icon, if the group is not used by a firewall= rule=2E >>>> if($locationgrpcount =3D=3D '0') { >>>> print"
\n"; >>>> @@ -2459,7 +2446,7 @@ sub viewtableservice >>>> &General::readhasharray("$fwconfigout", \%fwout); >>>> print<>>> >>>> - $Lang::tr{'fwhost prot'}<= th align=3D'center'>$Lang::tr{'fwhost used'}<= th width=3D'3%'> >>>> + $Lang::tr{'fwhost prot'}<= th align=3D'center'>$Lang::tr{'fwhost used'} >>>> END >>>> my $col=3D''; >>>> foreach my $key (sort { ncmp($customservice{$a}[0],$customservice{= $b}[0])} keys %customservice) >>>> @@ -2481,14 +2468,10 @@ END >>>> #Neuer count >>>> $srvcount=3D&getsrvcount($customservice{$key}[0]); >>>> my $serviceusedin=3D&getsrvusedin($customservice{$key}[0]); >>>> - my $htmlparttouse=3D""; >>>> - if ($serviceusedin) { >>>> - $htmlparttouse=3D""; >>>> - } >>>> if($customservice{$key}[3] eq 'All ICMP-Types'){print $Lang::tr{'f= wdfw all icmp'};} >>>> elsif($customservice{$key}[3] ne 'BLANK'){print $customservice{$ke= y}[3];} >>>> print<>>> - >>>>
$Lang::tr{'fwhost srv_name'}$Lang::tr{'fwhost port'}ICMP
$Lang::tr{'fwhost srv_name'}$Lang::tr{'fwhost port'}ICMP
$srvcount x$htmlparttouse >>>> + $srvc= ount x >>>> >>>> >>>> @@ -2560,11 +2543,8 @@ sub viewtableservicegrp >>>> if($count >0){print"
";$count=3D1;} >>>> print "
$grpname    "; >>>> print "$Lang::tr{'remark'}:  $remark " if ($remark ne = ''); >>>> - print "  $Lang::tr{'used'}: $grpcount x "; >>>> my $srvgrpusedin=3D&getsrvusedin($customservicegrp{$key}[0]); >>>> - if ($srvgrpusedin) { >>>> - print ""; >>>> - } >>>> + print "  $Lang::tr{'used'}: $grpcount x"; >>>> if($grpcount =3D=3D '0') >>>> { >>>> print""; > >--=20 >Mit freundlichem Gru=C3=9F >Peer Dietzmann > >Brecht-IT | Administration und Support > >Brecht-Schule Hamburg GmbH >Norderstrasse 163-165 | 20097 Hamburg >Tel=2E: +49 40 21 11 12 - 37 | Fax: +49 40 21 11 12 - 20 >E-Mail: dietzmann@brecht-schule=2Ehamburg | www=2Ebrecht-schule=2Ehamburg > >Diese Email enth=C3=A4lt ggfs=2E vertrauliche und/oder rechtlich gesch=C3= =BCtzte Informationen=2E >Wenn Sie nicht der richtige Adressat sind oder diese Email irrt=C3=BCmlic= h erhalten haben, informieren Sie bitte sofort den Absender und vernichten = Sie diese Email=2E >Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Email ist n= icht gestattet=2E > > ------VK0I2LCUH9YBNEX1NF4TEEU4B4TAVD Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Hi all=2E

I _think_ this = could be accomplished by using an emoji instead=2E

This one might be= a good option: https://em= ojipedia=2Eorg/information

I believe the unicode sequence for it= is "U+2139 U+FE0F"

But there are obviously many other emojis to cho= ose from which might be more appropriate=2E

Thanks,
Adam

On 26 June 2025 13:08:54 = BST, Peer Dietzmann <dietzmann@brecht-schule=2Ehamburg> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin: 0pt 0pt 0pt 0=2E8ex; bord= er-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hello Michael, Hello Adolf,
it was actually a bit hard to find a working solution to place this inform= ation somewhere=2E I scrolled through all the icons IPFire has "built in" a= nd thought that a blue i icon would lead the user to think "oh what's this?= What information can I get there?"=2E When hovering then over the icon all= necessary information is directly displayed without any button or box or a= nything which would require additional code and styling=2E Thereby all othe= r icons are clickable I think there is no additional documentation required= , the users will find it on their own=2E

But I am also fine with Mic= hael's solution=2E

--

Best regards

Peer

On 25= =2E06=2E25 18:52, Michael Tremer wrote:
Hello Adolf,

Thank you for = the feedback=2E

It is indeed not obvious=2E On the other hand, the l= arge icon is not really a solution either in my opinion=2E It is simply too= large and distracting for a feature that won=E2=80=99t be used *that* much= =2E

I would however love some visual hint, but I cannot really think= of anything between the two options that we have for now=2E

-Michae= l

On 25 Jun 2025, at 17:40, Adolf Belka <adolf=2Ebelka@ipfire=2Eorg= > wrote:

Tested-by: Adolf Belka <adolf=2Ebelka@ipfire=2Eorg>= ;

I actually found the i in a blue circle icon very helpful for this= =2E I was able to figure out where I should place my mouse pointer for the = info=2E

With this patch applied, which was the first way I tested it= , I had no idea where to place the mouse pointer as nothing looked differen= t to the existing situation=2E I did try placing it over the usage counter = a couple of times but obviously not for long enough in my first tries as I = never saw anything get shown=2E

Reading the title of this patch more= carefully I went back and now held the mouse pointer over the usage counte= r and waited for 1 to 2 seconds and now the info was shown=2E Typically I = found it takes a minimum of 1 second and sometimes around 1=2E5 seconds bef= ore anything is shown and first time around I was obviously not waiting lon= g enough at any one location=2E

If the usage counter is to stay as t= he location to place the mouse pointer onto for the info then I think this = will need to be explained very clearly in the wiki documentation otherwise = users might not discover this useful function directly on the WUI page=2E

On 23/06/2025 19:16, Michael Tremer wrote:
This will clutter the= page less as we don't have any good icon sets=2E
Signed-off-by: Michael= Tremer <michael=2Etremer@ipfire=2Eorg>
html/cgi-bin/fwhosts=2Ec= gi | 42 +++++++++++-----------------------------
1 file changed, 11 in= sertions(+), 31 deletions(-)
diff --git a/html/cgi-bin/fwhosts=2Ecgi b/h= tml/cgi-bin/fwhosts=2Ecgi
index 69970a840=2E=2E953f81e5f 100644
--- a= /html/cgi-bin/fwhosts=2Ecgi
+++ b/html/cgi-bin/fwhosts=2Ecgi
@@ -1932= ,7 +1932,7 @@ sub viewtablenet
}else{
print<<END;
&= lt;table width=3D'100%' cellspacing=3D'0' class=3D'tbl'>
- <tr>= <th align=3D'center'><b>$Lang::tr{'name'}</b></th>&= lt;th align=3D'center'><b>$Lang::tr{'fwhost netaddress'}</b>= </th><th align=3D'center'><b>$Lang::tr{'remark'}</b>= ;</th><th align=3D'center'><b>$Lang::tr{'used'}</b>= </th><th></th><th></th><th width=3D'3%'>= ;</th></tr>
+ <tr><th align=3D'center'><b>= $Lang::tr{'name'}</b></th><th align=3D'center'><b>$= Lang::tr{'fwhost netaddress'}</b></th><th align=3D'center'&g= t;<b>$Lang::tr{'remark'}</b></th><th align=3D'center'&= gt;<b>$Lang::tr{'used'}</b></th><th></th><= th width=3D'3%'></th></tr>
END
}
my $count= =3D0;
@@ -1953,11 +1953,7 @@ END
my $colnet=3D"$customnetwork{$key= }[1]/"=2E&General::subtocidr($customnetwork{$key}[2]);
my $netcou= nt=3D&getnetcount($customnetwork{$key}[0]);
my $netusedin=3D&= getusedin($customnetwork{$key}[0]);
- my $htmlparttouse=3D"";
- if ($= netusedin) {
- $htmlparttouse =3D "<input type=3D'image' align=3D'top= ' src=3D'/images/info=2Egif' alt=3D'$netusedin' title=3D'$netusedin'>";<= br>- }
- print"<td width=3D'20%' $col><form method=3D'post'>= $customnetwork{$key}[0]</td><td width=3D'15%' align=3D'center' $co= l>"=2E&getcolor($colnet)=2E"</td><td width=3D'40%' $col>= $customnetwork{$key}[3]</td><td align=3D'center' $col>$netcount= x</td><td>$htmlparttouse</td>";
+ print"<td width= =3D'20%' $col><form method=3D'post'>$customnetwork{$key}[0]</td= ><td width=3D'15%' align=3D'center' $col>"=2E&getcolor($colnet= )=2E"</td><td width=3D'40%' $col>$customnetwork{$key}[3]</td= ><td align=3D'center' $col><span title=3D'$netusedin'>$netco= unt x</span></td>";
print<<END;
<td width= =3D'1%' $col><input type=3D'image' src=3D'/images/edit=2Egif' align= =3D'middle' alt=3D'$Lang::tr{'edit'}' title=3D'$Lang::tr{'edit'}' />
= <input type=3D'hidden' name=3D'ACTION' value=3D'editnet'>
@@ -2= 091,7 +2087,7 @@ sub viewtablehost
}else{
print<<END;
= <table width=3D'100%' cellspacing=3D'0' class=3D'tbl'>
- <tr= ><th align=3D'center'><b>$Lang::tr{'name'}</b></th&= gt;<th align=3D'center'><b>$Lang::tr{'fwhost ip_mac'}</b>= </th><th align=3D'center'><b>$Lang::tr{'remark'}</b>= ;</th><th align=3D'center'><b>$Lang::tr{'used'}</b>= </th><th></th><th></th><th width=3D'3%'>= ;</th></tr>
+ <tr><th align=3D'center'><b>= $Lang::tr{'name'}</b></th><th align=3D'center'><b>$= Lang::tr{'fwhost ip_mac'}</b></th><th align=3D'center'>&l= t;b>$Lang::tr{'remark'}</b></th><th align=3D'center'>&= lt;b>$Lang::tr{'used'}</b></th><th></th><th w= idth=3D'3%'></th></tr>
END
}
my $count=3D0;=
@@ -2112,12 +2108,9 @@ END
my $hostcount=3D0;
$hostcount=3D= &gethostcount($customhost{$key}[0]);
my $hostusedin=3D&getuse= din($customhost{$key}[0]);
- my $htmlparttouse=3D"";
- if ($hostusedi= n) {
- $htmlparttouse =3D "<input type=3D'image' align=3D'top' src=3D= '/images/info=2Egif' alt=3D'$hostusedin' title=3D'$hostusedin'>";
- }=
- print"<td width=3D'20%' $col>$customhost{$key}[0]</td><= ;td width=3D'20%' align=3D'center' $col >"=2E&getcolor($ip)=2E"</= td><td width=3D'50%' align=3D'left' $col>$customhost{$key}[3]</= td><td align=3D'center' $col>$hostcount x</td><td>$htm= lparttouse</td>";
- print<<END;
+ my $color =3D &getc= olor($ip);
+ print <<END;
+ <td width=3D'20%' $col>$custo= mhost{$key}[0]</td><td width=3D'20%' align=3D'center' $col >$co= lor</td><td width=3D'50%' align=3D'left' $col>$customhost{$key}= [3]</td><td align=3D'center' $col><span title=3D"$hostusedin= ">$hostcount x</span></td>
<td width=3D'1%' $col>= ;<form method=3D'post'><input type=3D'image' src=3D'/images/edit= =2Egif' align=3D'middle' alt=3D'$Lang::tr{'edit'}' title=3D'$Lang::tr{'edit= '}' />
<input type=3D'hidden' name=3D'ACTION' value=3D'edithost= ' />
<input type=3D'hidden' name=3D'HOSTNAME' value=3D'$customh= ost{$key}[0]' />
@@ -2192,11 +2185,8 @@ sub viewtablegrp
print = "<br><b><u>$grpname</u></b>&nbsp; &nb= sp;";
print " <b>$Lang::tr{'remark'}:</b>&nbsp $remar= k &nbsp " if ($remark ne '');
my $netgrpcount=3D&getnetcount(= $grpname);
- print "<b>$Lang::tr{'used'}:</b> $netgrpcount x= ";
my $groupusedin=3D&getusedin($grpname);
- if ($groupusedin= ) {
- print "<input type=3D'image' align=3D'top' src=3D'/images/info= =2Egif' alt=3D'$groupusedin' title=3D'$groupusedin'>";
- }
+ print= "<b>$Lang::tr{'used'}:</b> <span title=3D'$groupusedin'>= $netgrpcount x</span>";
if($netgrpcount =3D=3D '0')
{
= print"<form method=3D'post' style=3D'display:inline'><input typ= e=3D'image' src=3D'/images/delete=2Egif' alt=3D'$Lang::tr{'delete'}' title= =3D'$Lang::tr{'delete'}' align=3D'right' /><input type=3D'hidden' nam= e=3D'grp_name' value=3D'$grpname' ><input type=3D'hidden' name=3D'ACT= ION' value=3D'delgrp'></form>";
@@ -2335,10 +2325,7 @@ sub view= tablelocationgrp
# Get group count=2E
my $locationgrpcount=3D&a= mp;getlocationcount($grpname);
my $locationusedin=3D&getlocusedin= ($grpname);
- print "<b>$Lang::tr{'used'}:</b> $locationgrpc= ount x ";
- if ($locationusedin) {
- print "<input type=3D'image' = align=3D'top' src=3D'/images/info=2Egif' alt=3D'$locationusedin' title=3D'$= locationusedin'>";
- }
+ print "<b>$Lang::tr{'used'}:</b&= gt; <span title=3D'$locationusedin'>$locationgrpcount x</span>"= ;
# Only display delete icon, if the group is not used by a firewall = rule=2E
if($locationgrpcount =3D=3D '0') {
print"<form metho= d=3D'post' style=3D'display:inline'>\n";
@@ -2459,7 +2446,7 @@ sub vi= ewtableservice
&General::readhasharray("$fwconfigout", \%fwout);<= br> print<<END;
<table width=3D'100%' cellspacing=3D'0' cl= ass=3D'tbl'>
- <tr><th align=3D'center'><b>$Lang::t= r{'fwhost srv_name'}</b></th><th align=3D'center'><b&g= t;$Lang::tr{'fwhost prot'}</b></th><th align=3D'center'>&= lt;b>$Lang::tr{'fwhost port'}</b></th><th align=3D'center= '><b>ICMP</b></th><th align=3D'center'><b>= $Lang::tr{'fwhost used'}</b></th><th></th><th>= ;</th><th width=3D'3%'></th></tr>
+ <tr>&l= t;th align=3D'center'><b>$Lang::tr{'fwhost srv_name'}</b><= ;/th><th align=3D'center'><b>$Lang::tr{'fwhost prot'}</b&= gt;</th><th align=3D'center'><b>$Lang::tr{'fwhost port'}&= lt;/b></th><th align=3D'center'><b>ICMP</b></= th><th align=3D'center'><b>$Lang::tr{'fwhost used'}</b>= ;</th><th></th><th width=3D'3%'></th></tr&= gt;
END
my $col=3D'';
foreach my $key (sort { ncmp($custom= service{$a}[0],$customservice{$b}[0])} keys %customservice)
@@ -2481,14 = +2468,10 @@ END
#Neuer count
$srvcount=3D&getsrvcount($cust= omservice{$key}[0]);
my $serviceusedin=3D&getsrvusedin($customser= vice{$key}[0]);
- my $htmlparttouse=3D"";
- if ($serviceusedin) {
= - $htmlparttouse=3D"<input type=3D'image' align=3D'top' src=3D'/images/i= nfo=2Egif' alt=3D'$serviceusedin' title=3D'$serviceusedin'>";
- }
= if($customservice{$key}[3] eq 'All ICMP-Types'){print $Lang::tr{'fwdfw a= ll icmp'};}
elsif($customservice{$key}[3] ne 'BLANK'){print $customse= rvice{$key}[3];}
print<<END;
- </td><td align=3D'ce= nter' $col>$srvcount x</td><td>$htmlparttouse</td>
= + </td><td align=3D'center' $col><span title=3D'$serviceused= in'>$srvcount x</span></td>
<td width=3D'1%' $col&g= t;<form method=3D'post'><input type=3D'image' src=3D'/images/edit= =2Egif' align=3D'middle' alt=3D'$Lang::tr{'edit'}' title=3D'$Lang::tr{'edit= '}' /><input type=3D'hidden' name=3D'ACTION' value=3D'editservice' /&= gt;
<input type=3D'hidden' name=3D'SRV_NAME' value=3D'$customservi= ce{$key}[0]' />
<input type=3D'hidden' name=3D'SRV_PORT' value= =3D'$customservice{$key}[1]' />
@@ -2560,11 +2543,8 @@ sub viewtables= ervicegrp
if($count >0){print"</table>";$count=3D1;}
p= rint "<br><b><u>$grpname</u></b>&nbsp; &a= mp;nbsp; ";
print "<b>$Lang::tr{'remark'}:</b>&nbsp; = $remark " if ($remark ne '');
- print "&nbsp; <b>$Lang::tr{'us= ed'}:</b> $grpcount x ";
my $srvgrpusedin=3D&getsrvusedin($= customservicegrp{$key}[0]);
- if ($srvgrpusedin) {
- print "<input= type=3D'image' align=3D'top' src=3D'/images/info=2Egif' alt=3D'$srvgrpused= in' title=3D'$srvgrpusedin'>";
- }
+ print "&nbsp; <b>$L= ang::tr{'used'}:</b> <span title=3D'$srvgrpusedin'>$grpcount x&= lt;/span>";
if($grpcount =3D=3D '0')
{
print"<form = method=3D'post' style=3D'display:inline'><input type=3D'image' src=3D= '/images/delete=2Egif' alt=3D'$Lang::tr{'delete'}' title=3D'$Lang::tr{'dele= te'}' align=3D'right' /><input type=3D'hidden' name=3D'SRVGRP_NAME' v= alue=3D'$grpname' ><input type=3D'hidden' name=3D'ACTION' value=3D'de= lservicegrp'></form>";

------VK0I2LCUH9YBNEX1NF4TEEU4B4TAVD--