Servoy 5.2.12

We are pleased to announce the immediate availability of Servoy 5.2.12
IMPORTANT: This release addresses a security vulnerability, it is strongly recommended to update to this version :!:

This version is available through the download option on the Servoy website and auto update.
Always make a backup of your current Servoy installation (directory and database) before installing/upgrading.
To update a Servoy eclipse open “Check for updates” via help menu.

Client Changes
[fix] SVY-1027 event.getModifiers() is not working well in table view mode
[fix] SVY-1037 search on typeahead field requires 2 enter-key strokes to do search
[fix] SVY-1097 Adding a Tabpage to a Tabpanel freezes the whole solution on Mobile devices
[fix] SVY-1098 a valuelist using a relation causes exception
[fix] SVY-1167 Calculation cache problem
[fix] SVY-1172 Calculations are not updated the second time a record is changed of a record that stay’s in scope
[fix] SVY-1186 New code disappears in export solution
[fix] SVY-1290 Valuelist issue
[fix] SVY-1417 insert into i18n table with showI18NDialog() error
[fix] SVY-1442 Databroadcasting on related tab

WebClient Changes
[fix] SVY-1073 on IE:disabled TEXT_FIELD,RADIOS color change
[fix] SVY-1195 Web select/deselect still slightly confusing
[fix] SVY-1313 servoy dies when an error occurs in a pop up form
[fix] SVY-1320 application.closeForm() closes Firefox download dialog window

Server Changes
[fix] SVY-1270 Starting multiple batch processors causes one to crash

Developer Changes
[fix] SVY-1324 Element in form is outside the bounds of the form warning, though it is not

Hi

the update via servoy_updater.bat doesn’t work.

Thanks

Roberto

Corrected, thanks for reporting.

I can’t login to my solution anymore with smartclient.

application.getClientCountForInfo() breaks now in the login form with error :

Wrapped com.servoy.j2db.util.ServoyException: !servoy.client.notAuthorized! (C:\Documents and Settings\lambert.HPDC7100\servoy_workspace521\main_login\forms\svy_sec_login.js#121)

It looks like it has something to do with :

IMPORTANT: This release addresses a security vulnerability, it is strongly recommended to update to this version :!:

?

If it is : Even Microsoft describes it’s security vulnerabilities (after patching)…

Regards,

Lambert,

In Servoy 5.1.12 we have made the following calls only work when the user is logged in:

	application.getActiveClientCount
	application.getClientCountForInfo(String info)
	application.getLicenseNames()

This only affects the smart client.

Why do you need that info in the login solution?

Rob

We did’nt update yet, but I think this will break our solution also! :-(

the whole idea of: application.getClientCountForInfo(String info)
is that we count, the actual logged in clients for a specific tenant. (this the only way todo this)

if that count is > than the max allowed, you can’t login.

We are doing this in the authenticator, before we login. like this:

	//check or set total usercount per company, get a count for all clients having the same additional info line
	var vCount = application.getClientCountForInfo(vDS.getValue(1, 4));
	if (vCount >= vDS.getValue(1, 3)) {
		var vLogID = globals.auth_logUser(false, vCompany, vUser, vPassword, vClientInfo)
		return [false, i18n.getI18NMessage('i18n:1.message.youareoutoflicenses')]
	}

Harjo,

It will work if you move the call to the authenticator solution.

Rob

oke, it is in the authenticator! :-) so than it will not break in our case.
thanks for clarifying

One more :

We noticed that the application.addClientInfo() does not work in the authenticator module :?

For testing purposes we moved it to the onOpen-method of our solution and there it works…

We use it like Harjo for login counting…

Regards,

Lambert,

application.addClientInfo() will add clientinfo for the server-side client that runs the authenticator method.
You need to call this method in your smart client when you have successfully logged in.

Rob


```Hi,

Has there been a change in the way calculations are handled in 5.2.12 ??

I use the following calulation :

function calc_marge()
{
var marge = calc_verkoopprijs_totaal - calc_inkoopprijs_totaal;
return marge;
}


calc_verkoopprijs_totaal and calc_inkoopprijs_totaal are also calculations.
This worked fine before, but now it seems that the value for calc_verkoopprijs_totaal is not calculated and so it is 0.

If I change my code to :

function calc_marge()
{
var x1 = calc_verkoopprijs_totaal;
var y1 = calc_inkoopprijs_totaal;

var marge = calc_verkoopprijs_totaal - calc_inkoopprijs_totaal;
return marge;

}


then it works as before 

Any ideas ??

os if you do

    function calc_marge()
    {
       var marge = calc_verkoopprijs_totaal - calc_inkoopprijs_totaal;
       marge = calc_verkoopprijs_totaal - calc_inkoopprijs_totaal;
       return marge;
    }

does it work then? so you have to touch it twice?

Yes, You are right that also works.

and :

	   application.output('vk= ' + calc_verkoopprijs_totaal)
	   application.output('ik= ' + calc_inkoopprijs_totaal)
       marge = calc_verkoopprijs_totaal - calc_inkoopprijs_totaal;
       return marge;

also does work.

So touching it twice yes.

Seems a bug to me

Hans,

I tried this in a small example, a calc that just touches 2 other calcs once, the other calcs are not touched or shown.
When updating the base data, the calc updated just fine.

Can you reproduce it in a small sample?

Rob

Hi ,

We are using Servoy Webclient 5.2.9

We are planning to update to 5.2.212 from 5.2.9 but we have some issue with security.logout , hope someone can help .

When user clicks on logout , we ask for a confirmation in a dialog box whether they want to logout or not . when they click on yes we do security.logout(solution name) and take them to login page- it works fine in 5.2.9

but in 5.2.12 it opens a new solution login page in the dialog box .

var logout=globals.svy_mod_dialogs_global_showQuestionDialog("Logout?",logoutWarning,"Yes","No");	
if(logout=="Yes") 
      {
		busyBlock("Signing out....",doSignOut);
	}
else
      {	
         //some checking  	
         return false;
      }
   return true ;
}
function doSignOut()
{
endBusyBlock();
forms.usage_logger.logUse("signed out","logout","success");	
security.logout("My Solution",[],null);
}

Rob,

Regarding the calculations issue :

It happens in our solution that uses a servoy framework ( although I am sure it is not a framework issue ).
I am not able to reproduce it in a sample solution.

It only happens in tableview. Many records in tableview show correct calculation value and many do not !!

In listview or recordview the calculation is always correct !!

This is a major issue for us !!

addition :

The calculation is only wrong for some records when the records are shown in tableview after startup of the application and no edits have been made.
When the calculation is wrong in tableview and I switch to detailview to edit, the calculation is still wrong.
This makes sense because a chang of viewtype does not trigger a recalculation.
But when I edit one of the fields that is part of the calculations, the calculations are correct again.

So it seems to be a problem in tableview when this is initially shown

Hans Nieuwenhuis:

	   application.output('vk= ' + calc_verkoopprijs_totaal)
   application.output('ik= ' + calc_inkoopprijs_totaal)
   marge = calc_verkoopprijs_totaal - calc_inkoopprijs_totaal;
   return marge;

what does it output then?
Does it really output 0 for 1 or both outputs?

nestrocuation:
Hi ,

We are using Servoy Webclient 5.2.9

We are planning to update to 5.2.212 from 5.2.9 but we have some issue with security.logout , hope someone can help .

When user clicks on logout , we ask for a confirmation in a dialog box whether they want to logout or not . when they click on yes we do security.logout(solution name) and take them to login page- it works fine in 5.2.9

but in 5.2.12 it opens a new solution login page in the dialog box .

can you create a case for this with a sample attached ?

Johan,

Below you see the output when started in tableview and when started in listview.

B.t.w. the calculations for calc_verkoopprijs_totaal and calc_inkoopprijs_totaal both use a stored procedure call to get there values.
calc_inkoopprijs_totaal is always correct while calc_verkoopprijs_totaal sometimes (not always) gives null when in tableview.
This is test-data, so You will see 0 often, but that is a correct value.

The output in tableview =

vk= 0
ik= 0
vk= 
ik= 0
vk= 
ik= 0
vk= 
ik= 1839.2
vk= 0
ik= 0
vk= 0
ik= 0
vk= 
ik= 20

The output in listview =

vk= 0
ik= 0
vk= 0
ik= 0
vk= 0
ik= 0
vk= 3084.9230769230767
ik= 1839.2
vk= 0
ik= 0
vk= 0
ik= 0
vk= 20
ik= 20

and if you add application.output() to your 2 calcs that you call?

Also in all your application outputs can you print out the pk of the record? So that we can match them?

can we see all the calc scripts that are touched in this scenario?