There are several possibilities to set the configs from the base OScript Module. The most interesting is the method of setting the configs via Oscript. The complete list of the possibilities is_
- When you visit a mode or get a children
- Implement “fields” and/or “expand” in the appropriate CSNode.
- Use the date from data.(fields.name)
- When the Widget is created
- Implement an REST service which will give you the data
- Load the data on the first widget creation and cache it with a permanent model factory in the context
- When the page is loaded
- The CSUI::Extension::GetDynamicConfiguration method in OScript has normally this entry
- The CSUI::Extension::GetDynamicConfiguration method in OScript has normally this entry
function Assoc GetDynamicConfiguration( Object prgCtx, Record request ) return Undefined end
Overwrite it with your desired configuration (here only the enableAppleSupport is displayed for clarity):
function Assoc GetDynamicConfiguration( Object prgCtx, Record request ) Assoc basicAppData Assoc config (snip) Boolean enableAppleSupport (snip) // changes in admin page should be reflected immediately by every thread settings = $WebAdmin.AdminUtils.GetSmartUISettings( prgCtx ) (snip) if ( IsFeature( settings, "enableAppleSupport" ) && IsDefined( settings.enableAppleSupport ) ) enableAppleSupport = settings.enableAppleSupport end config = Assoc{ (snip) "csui/utils/commands/email.link": Assoc{ "enableAppleSupport": enableAppleSupport }, return config end
The returned assoc consists of a requirejs module name containing an assoc with the config values.
In your js module (here csui/utils/commands/email.link) add this line
var config = _.extend({
rewriteApplicationURL: false,
enableAppleSupport: false,
appleNodeLinkBase: 'x-otm-as-cs16://?launchUrl=nodes/'
}, module.config());
Then the config is avaliable in your js module and can be used like
var iOSEnabled = config.enableAppleSupport
Nice, isn’t it?