Page History
...
In this example, when protectCustomer
is set to true
, customerAddress
can still be changed the the client, but customerName
and
removecustomer
are protected.
...
In this example, a component's model can be filled with a customer name, but when the property visible
is set to false
, the component will be protected and the data will not be sent to the client. When visible
is set to true
, data not sent before will be pushed to the client.to the client.
Code Block | ||||
---|---|---|---|---|
| ||||
"model": {
"visible" : "visible",
"customerName": "string"
} |
Visibility properties themselves can never be modified from the client.
Container security
Protecting and visibility properties on containers will protect the container and also components inside the comtainer.
Readonly/Findmode
Servoy has 2 special controller/foundset based properties where a component also can be notified for.
controller.readOnly = true in the developer will set this boolean to a property called "readOnly" of a webcomponent
Code Block | ||||
---|---|---|---|---|
| ||||
"model" : {
"readOnly": "protected"
} |
With this property a component can do its thing to set or unset the readonly mode for itself.
It's better to have type this property as "protected" because it should only be able to change at the server, never from the client.
Findmode is a special type: Findmode property type which can be used to set all kind of other properties which are normally protected from changing on the client side. Or you can just use it as a type for any property you want:
Code Block | ||||
---|---|---|---|---|
| ||||
"model" : { "visible" : "visible", "customerName""myfindmodeproperty": "stringfindmode" } |
Visibility properties themselves can never be modified from the client.
Container security
Protecting and visibility properties on containers will protect the container and also components inside the comtainerWhen the find mode changes the boolean value of your property will also change. This way you can react to a form/foundset going into find mode. Like resetting a specific format, allowing any kind of input.
Example
As an example we could have a Tab Panel that has a definition like: (note: this example does not contain the entire Tab Panel spec)
Code Block | ||||
---|---|---|---|---|
| ||||
{ "name": "servoydefault-tabpanel", "displayName": "Tab Panel", "version": 1, "icon": "servoydefault/tabpanel/tabs.gif", "definition": "servoydefault/tabpanel/tabpanel.js", "serverscript": "servoydefault/tabpanel/tabpanel_server.js", "libraries": [{"name":"accordionpanel", "version":"1", "url":"servoydefault/tabpanel/accordionpanel.css", "mimetype":"text/css"}], "model": { "background" : "color", "borderType" : {"type":"border","stringformat":true}, "enabled" : { "type": "protected", "blockingOn": false, "default": true }, "fontType" : {"type":"font","stringformat":true}, "foreground" : "color", "horizontalAlignment" : {"type" :"int", "tags": { "scope" :"design" }, "values" :[{"LEFT":2}, {"CENTER":0},{"RIGHT":4}],"default" : -1}, "location" : "point", "readOnly" : "protected", "selectedTabColor" : "color", "size" : {"type" :"dimension", "default" : {"width":300, "height":300}}, "styleClass" : { "type" :"styleclass", "tags": { "scope" :"design" }, "values" :[]}, "tabIndex" : { "type": "object", "pushToserver": "shallow" }, "tabOrientation" : {"type" :"int", "tags": { "scope" :"design" }, "values" :[{"default" :0}, {"TOP":1}, {"HIDE":-1}]}, "tabSeq" : {"type" :"tabseq", "tags": { "scope" :"design" }}, "tabs" : {"type":"tab[]", "droppable":true}, "transparent" : "boolean", "visible" : "visible" }, "handlers": { "onChangeMethodID" : "function", "onTabChangeMethodID" : "function" }, "api": { "addTab": { "returns": "boolean", "parameters":[ { "name":"form/formname", "type":"object []" }, { "name":"name", "type":"object", "optional":true }, { "name":"tabText", "type":"object", "optional":true }, { "name":"tooltip", "type":"object", "optional":true }, { "name":"iconURL", "type":"object", "optional":true }, { "name":"fg", "type":"object", "optional":true }, { "name":"bg", "type":"object", "optional":true }, { "name":"relatedfoundset/relationname", "type":"object", "optional":true }, { "name":"index", "type":"object", "optional":true } ] }, "getMaxTabIndex": { "returns": "int" }, "getMnemonicAt": { "returns": "string", "parameters":[ { "name":"i", "type":"int" } ] }, "getSelectedTabFormName": { "returns": "string" }, "getTabBGColorAt": { "returns": "string", "parameters":[ { "name":"unnamed_0", "type":"int" } ] }, "getTabFGColorAt": { "returns": "string", "parameters":[ { "name":"i", "type":"int" } ] }, "getTabFormNameAt": { "returns": "string", "parameters":[ { "name":"i", "type":"int" } ] }, "getTabNameAt": { "returns": "string", "parameters":[ { "name":"i", "type":"int" } ] }, "getTabRelationNameAt": { "returns": "string", "parameters":[ { "name":"i", "type":"int" } ] }, "getTabTextAt": { "returns": "string", "parameters":[ { "name":"i", "type":"int" } ] }, "isTabEnabled": { "returns": "boolean", "parameters":[ { "name":"unnamed_0", "type":"int" } ] }, "isTabEnabledAt": { "returns": "boolean", "parameters":[ { "name":"i", "type":"int" } ] }, "removeAllTabs": { "returns": "boolean" }, "removeTabAt": { "returns": "boolean", "parameters":[ { "name":"index", "type":"int" } ] }, "setMnemonicAt": { "parameters":[ { "name":"index", "type":"int" }, { "name":"text", "type":"string" } ] }, "setTabBGColorAt": { "parameters":[ { "name":"unnamed_0", "type":"int" }, { "name":"unnamed_1", "type":"string" } ] }, "setTabEnabled": { "parameters":[ { "name":"unnamed_0", "type":"int" }, { "name":"unnamed_1", "type":"boolean" } ] }, "setTabEnabledAt": { "parameters":[ { "name":"i", "type":"int" }, { "name":"b", "type":"boolean" } ] }, "setTabFGColorAt": { "parameters":[ { "name":"i", "type":"int" }, { "name":"s", "type":"string" } ] }, "setTabTextAt": { "parameters":[ { "name":"index", "type":"int" }, { "name":"text", "type":"string" } ] } }, "types": { "tab": { "name": "string", "containsFormId": "form", "text": "tagstring", "relationName": "relation", "active": "boolean", "foreground": "color", "disabled": "boolean", "imageMediaID": "media", "mnemonic": "string" } } } |