== System Call Overview ==The System Call feature of SmartSimple provides you with the ability to execute pre-defined system functions on the server and in the process avoid the creation of client side [[Custom Field Type: Special – Browser Script|scripting]]. The benefits of System Calls are as follows:
The System Call feature * Better performance and security as the execution of SmartSimple provides you with the ability to execute pre-defined system functions code takes place on the server and not in the process avoid the creation of client side scripting[[browser]]. The benefits of * More stable, as the System Calls are as follows:programmed by SmartSimple and optimized for the platform.* You don’t need to know [[JavaScript]] in order to use the feature.
* Better performance and security as the execution of the code takes place on the server not in the client browser.==Using System Calls==* More stable as When using system calls you add the System Calls are programmed by SmartSimple and optimized for the platform.* You don’t need Call references to know JavaScript in order to use the featurea [[Custom Field Type: Special – Browser Script|Browser Script]] custom field.The syntax for each System Call is as follows:
<pre style== Using System Calls =="white-space: -o-pre-wrap; word-wrap: break-word;"><!--SysCall_function(@parameter 1@,@parameter 2@,@parameter N@)--></pre>
When using system '''Note: ''' Multiple System calls you add can be embedded in the System Call references to a Browser Script type custom same script field. The syntax for each call is as follows:
<!--SysCall_function(@parameter 1@,@parameter 2@,@parameter N@)-->==Triggering System Calls==The execution of the System Call is controlled by the trigger that you set for the [[Custom Field Type: Special – Browser Script|Browser Script]] field. The following triggers are supported.
Note Multiple * '''On Load''' - System Call is executed by the server when page is requested.* '''On Demand''' - System calls can Call is executed by the server when the user clicks a button on the page.** The button will be embedded in displayed for the [[Custom Field Type: Special – Browser Script|Browser Script]] field when you select this type of trigger.** Note that this is the only time the same script [[Custom Field Type: Special – Browser Script|Browser Script]] fieldtype has any visibility on a page.** '''On Save''' - System Call is executed by the server when page is saved.Note that [[Custom Field Type: Special – Browser Script|Browser Script]] fields triggered ''On Load'' or ''On Save'' can only use System Calls, not custom JavaScript, as they are processed server-side.
Triggering ==System CallsCall Examples==<pre><!--SysCall_updatestatus(@objtype@,@objid@,'StatusName')--><!--SysCall_workflow(@objtype@,@objid@,'myworkflow')--><!--SysCall_workflow(23,@parent.objid@,'myworkflow')--><!--SysCall_workflow(levelone,@parent.objid@,'myworkflow')--></pre>
The execution ** @objtype@ and @objid@ are reserved words.** Objtype can be referenced to the integer value associated with the entity type (23, 18, 30, 40) or constants can be used such as levelone, level1, leveltwo, level2, levelthree, level3, contact, people, company. See [[Entity IDs]] for complete list of entity types.** Important: Ensure there are no spaces between parameters (i.e. before or after the commas)'''Note: ''' If, on an ''On Demand'' browser script, you are adding more JavaScript after the System Call, then add a semi-colon at the end of the system call is controlled by the trigger to ensure that you set for the Browser Script field. The following triggers there are supportedno script errors.
* '''on Load'<pre><!--SysCall_workflow(@objtype@,@objid@,'myworkflow' )-- SysCall is executed by the server when page is requested >;alert(no JavaScript is required"System call and alert work fine.");* '''on demand''' - SysCall is executed by the server when the user clicks a button on the page. </pre>
**The '''On Demand''' system calls pass the button will element to the function as parameter '''el'''. This can be displayed for used to disable the browser script field button or change the value to indicate when you select this type of trigger.**Note this the function is the only time the Browser Script field type has any visibility on a pagecomplete.For example:
*'''on Save'<pre><!--SysCall_workflow(@objtype@,@objid@,'Test Web Services' )-- SysCall is executed by the server when page is saved (no JavaScript is required)>;el.value="Done";el.disabled=true;</pre>
== System Call Examples ==
''
<!--SysCall_updatestatus(@objtype@,@objid@,'StatusName')-->
<!--SysCall_workflow(@objtype@,@objid@,'myworkflow')@-->
<!--SysCall_workflow(23,@parent.objid@,'myworkflow')@-->
<!--SysCall_workflow(levelone,@parent.objid@,'myworkflow')@-->''
**@objtype@ and @objid@ ==Available System Calls==The following System Calls are reserved words.currently in production
**Objtype can be referenced to the integer value associated with the entity type <pre>SysCall_updatestatus(23objecttype, 18objectid, 30, 40'StatusName') or constants can be used such as levelone, level1, leveltwo, level2, levelthree, level3, contact, people, company
== Available System Calls ==Update the status of an object to a new status.</pre>
The following System Call are currently in production''SysCall_updatestatus<pre>SysCall_workflow(objecttype,objectid,'StatusNameWorkflowTriggerName')''
Update the status of an object to Call a new status.workflow</pre>
SysCall_workflow<pre>SysCall_activatepeople(objecttypeuserid,objectid,'WorkflowTriggerName'activateType)Call a workflow
SysCall_activatepeople(userid,activateType)
Activate a contact as a user. The activateType can be set to:
0 = deactivate existing users
1 = activate user with access through the administrative or portal interface.
3 = activate user with access through Applicant Tracking Interface only.
5 = activate user with access web service login.</pre> <pre>SysCall_sendpassword(userid) Sends password to specified user.Works exactly as "Send Password" button.</pre> <pre>SysCall_updaterole(userid,updatetype,'rolesNamesDelimitedByCommas')
SysCall_updaterole(userid,updatetype,'rolesNamesDelimitedByCommas')
Update user role. The updatetype can be set to:
1 = Add roles to contact.
2 = Remove all existing roles and add new roles.
3 = Remove listed roles.</pre> <pre>SysCall_updatesysvar('VariableName','VariableValue')
SysCall_updatesysvar('VariableName','Description','VariableValue')
Update existing System Variable to new value.
Example: You can increment a numeric system variable called Number using an sscalculation: <!--SysCall_updatesysvar('Number',<!--@sscalculation('@system.Number@'+1)-->)--> </pre> <pre>SysCall_updateassociation(companyid,userid,'role name',updatetype)) Update contact association. The updatetype can be set to: 1 = Add association.2 = Update association.3 = Remove association.</pre> <pre>SysCall_charitycheck(companyid)Runs the SmartSimple GuideStar Charity Check procedure against the designated company.</pre> Note: Please review the [[GuideStar Charity Check]] page for full information. ==Examples==To have a button appear on the contact profile that will enable the user and add the '''Organization Contact''' Role: * *: [[File:Activate_sys_call.png|link=]]** ''Note the visibility condition to ensure this button only appears on inactive contact records.''** ''Also be sure to set as '''Hide for New Record''' since this will not work until the contact record has been saved the first time.''To have a button appear on the contact profile that will disable the user: * *: [[File:Deactivate_sys_call.png|link=]]** ''Note the visibility condition to ensure this button only appears on active contacts, AND to prevent users from disabling their own account.''** ''Also be sure to set as '''Hide for New Record''' since this will not work until the contact record has been saved the first time.'' == Proposed Additional System Calls ==We welcome suggestions for additional system calls that would reduce the need for scripting, so please email [mailto:support@smartsimple.com SmartSimple Support] or open a support ticket with [[How_the_SmartSimple_Support_Desk_Works|SmartSimple Support]] with the details of the System Call you would like to add. New proposed System Calls will be added to this article as they become available.
We welcome suggestions for additional system call that would reduce the need for scripting so please email SmartSimple Support or open a support ticket with the SmartSimple with the details of the System Call you would like to add. New[[Category:JavaScript]]