Chapter 3 DynaScript Predefined Objects


site methods

The site object has these methods:

AskQuestion method

Syntax

site.AskQuestion (title, message)

Description

Displays a message with Yes and No buttons. This method is supported only when executing documents through Sybase Central.

Return

Boolean. Returns true if the user picked Yes, and false otherwise.

Example

To ask the user if he would like to continue:

<!--SCRIPT
if ( site.AskQuestion ( "Error", "Do you wish to continue?" )) {
document.WriteLn( "continuing" );
}
document.WriteLn( "good bye" );
-->

CopyDocument method

Syntax

site.CopyDocument (source document, destination document)

Description

Copies a document from one location to another. The destination document may be given a name other than the source document name when being copied. The specified path may be a relative or an absolute path or the tilde (~) character may be used. This is a method of the site object.

For information on using the tilde character see "Paths".

Return

Boolean.

Example

This example takes a copy of form.stm and places it into a folder called Forms with the new name form_new.stm:

<!--SCRIPT
site.CopyDocument("~/form.stm","/Forms/form_new.stm");
-->

CreateConnection method

Syntax

For ODBC connections:

site.CreateConnection(connName, description, dataSource [, userName, password, type, connectParameters])

For Open Client connections:

site.CreateConnection(connName, description, server, userName, password, type [, database])

Description

Creates a new persistent connection and returns a new connection object, where:

If the data source or server is blank, the connection inherits the necessary information from the main connection (the connection used by Dynamo to access the Web site documents). The connection object returned by CreateConnection in this case is "incomplete" and cannot be used to create a query. To obtain a connection object with the blank fields filled in, use site.GetConnection.

Note  

Temporary connection
To create a temporary connection, use the connection constructor. See "connection object" for more information.

Return

Connection object representing the newly created connection, or null if the connection cannot be created.

Typical reasons for null to be returned are:

Example

This script creates a new ODBC connection to the sample database, and uses the new connection to execute a query.

<!--SCRIPT createConnection.ssc 
/* Creating a connection to another site */

myConn = site.CreateConnection ( "Dynamo Demo", "sample application", "sample", "dba", "sql" );
-->

<HTML>
<TITLE>Query of the sample database </TITLE>
<BODY>
<H1>Information regarding the management team</H1>
<!--SQL CONNECTION_OBJECT = myConn
SELECT employee."manager_id", employee."emp_lname", employee."emp_fname", employee."salary"
FROM "DBA"."employee" employee
-->

<TABLE BORDER>
<TR>
<TH>manager_id</TH>
<TH>emp_lname</TH>
<TH>emp_fname</TH>
<TH>salary</TH>
</TR>
<!--formatting--><TR>
<TD><!--data--></TD>
<TD><!--data--></TD>
<TD><!--data--></TD>
<TD><!--data--></TD>
</TR><!--/formatting-->
</TABLE>
</BODY>
</HTML>

CreateDocument method

Syntax

site.CreateDocument(docName, documentType, description, content [, connectionName | connectionId])

Description

Creates a new document in the Web site and returns a document object. The parameters are:

Note  

Note:
Connection IDs are not persistent. If you restart Dynamo, connection IDs may not be the same. For this reason, we recommend the use of connection names whenever possible.

Note  

CreateDocument and DeleteDocument:
You cannot delete a document that a script is actively referencing. Because of this, do not use CreateDocument and DeleteDocument in the same script unless the document object has gone out of scope, or has been set to null by the time DeleteDocument is called.

Return

Document object representing the newly created document, or null if the document cannot be created.

A typical reason for null to be returned is that a document by that name already exists.

Example

This script creates a new template called MyDoc.stm inside the Site folder. The new document will consist of the word "hello".

<!--SCRIPT newdoc.ssc 
site.CreateDocument( "/site/MyDoc.stm","text", "my new document", "hello" );
-->

See also

"document object".

CreatePropertySheet method

Syntax

site.CreatePropertySheet(propertySheetObject)

Description

Starts the property sheet defined by propertySheetObject, where propertySheetObject is an indexed object, and each array element in it represents a separate property sheet page with the following properties:

This method is supported only when executing documents from within Sybase Central.

You can find the following propsht.ssc class file in the /system/utils directory of your site folder:

<!--SCRIPT propsht.ssc created on 06/25/97 09:33:32

// The following class is used for creating simple
// property sheet pages

class propertySheetPage( type, title, explanation, question, choices, selected, help ) {
this.type = type;
this.title = title;
this.explanation = explanation;
this.question = question;
this.choices = choices;
this.selected = selected;
this.help = help;
}

// The following class is used to indicate the
// position of an item on a property sheet page.
// If null is passed in to any of the parameters,
// a default value will be used.

class itemPosition( left, top, width, height )
{
this.left = left;
this.top = top;
this.width = width;
this.height = height;
}

// The following class is used to make a single
// item that you would like to place on a property
// sheet page.


class propertySheetItem( type, question, choices, selected, position, help )
{
this.type = type;
this.question = question;
this.choices = choices;
this.selected = selected;
this.position = position;
this.help = help;
}

// The following class is used to place a bitmap on
// a property sheet page.

class propertySheetPictureItem( picture, position )
{
this.type = "picture";
this.picture = picture;
this.position = position;
}

// The following class is used to make advanced
// property pages that contain more than one input
// field.

class propertySheetAdvanced( title, explanation, items )
{
this.type = "Advanced";
this.title = title;
this.explanation = explanation;
// Items: An array of items to be placed on the wizard
// page. Each member of the array should be of type
// wizardItem or wizardPictureItem. Null may be passed
// in if you would like a wizard page with no input
// fields in it.
this.items = items;
}
-->

Return

Boolean. Returns true or false, indicating whether the user proceeded through the wizard or not.

Example

This example shows how a script can use the site object to create a property sheet.

<!--SCRIPT NewLink.ssc
/* Add a folder linked to a directory*/
var webRoot = site.GetRootDocument();
import ( webRoot.location + '/system/utils/strtable.ssc' );
import ( webRoot.location + '/system/utils/wizard.ssc' );

var pSheet;

pSheet.name = new wizardPage( 'Text',
IntlStr.wizNewLink.p1.title,
IntlStr.wizNewLink.p1.explanation,
IntlStr.wizNewLink.p1.question
);

pSheet.directory = new wizardPage( 'DirectoryBrowse',
IntlStr.wizNewLink.p2.title,
IntlStr.wizNewLink.p2.explanation,
IntlStr.wizNewLink.p2.question
);

/* Display the wizard */
if( site.CreatePropertySheet(pSheet) ) {
/* Check if a folder name was provided */
if( pSheet.name.value.length > 0 ) {
/* Create the folder in the specified */
/* directory */
var fullname = document.location;

+ '/' + pSheet.name.value;
var newFolder = site.CreateDocument( fullname, 'directorylink', pSheet.directory.value );
if( newFolder == null ) {
document.writeln( formatString( IntlStr.unableToCreate, fullname ) );
}
} else {
document.writeln( IntlStr.noFolderName );
}
}
-->

CreateWizard method

Syntax

site.CreateWizard(wizardObject)

Description

Starts the wizard defined by wizardObject, where wizardObject is an indexed object, and each array element in it represents a separate wizard page with the following properties:

This method is supported only when executing documents from within Sybase Central.

You can find the following wizard.ssc class file in the /system/utils directory of your site folder:

<!--SCRIPT wizard.ssc

// The following class is used for creating simple
// wizard pages

class wizardPage( type, title, explanation, question, choices, selected, next, help ) {
this.type = type;
this.title = title;
this.explanation = explanation;
this.question = question;
this.choices = choices;
this.selected = selected;
this.next = next;
this.help = help;
}

// The following class is used to indicate the
// position of an item on a wizard page. If null
// is passed in to any of the parameters, a default
// value will be used.

class itemPosition( left, top, width, height ) {
this.left = left;
this.top = top;
this.width = width;
this.height = height;
}

// The following class is used to make a single
// item that you would like to place on a wizard
// page.

class wizardItem( type, question, choices, selected, position, help ) {
this.type = type;
this.question = question;
this.choices = choices;
this.selected = selected;
this.position = position;
this.help = help;
}

// The following class is used to place a bitmap on
// a wizard page.

class wizardPictureItem( picture, position )
{
this.type = "picture";
this.picture = picture;
this.position = position;
}

// The following class is used to make advanced wizard
// pages that contain more than one input field.

class wizardAdvanced( title, explanation, items, next ) {
this.type = "advanced";
this.title = title;
this.explanation = explanation;
// Items: An array of items to be placed on the wizard
// page. Each member of the array should be of type
// wizardItem or wizardPictureItem. Null may be passed
// in if you would like a wizard page with no input
// fields in it.
this.items = items;
this.next = next;
}
-->

Return

Boolean. Returns true or false, indicating whether the user proceeded through the wizard or not.

Examples

This example shows how a script can use the site object to create a wizard. Each page contains a single item:

<!--SCRIPT 
/*Simple wizard example */

class wizardPage( type, title, explanation, question, choices, selected, next, help ) {
this.type = type;
this.title = title;
this.explanation = explanation;
this.question = question;
this.choices = choices;
this.selected = selected;
this.next = next;
this.help = help;
}

var wiz;

// From "start" control passes to "page1".

wiz.start = new wizardPage( 'text',
'Customer Information',
'New customer data should be entered here.',
'What company do you represent?',
null, null,
'page1'
);

// From "page1" control passes to "productpage".

wiz.page1 = new wizardPage( 'text',
'Customer Information',
"You must provide a name for direct billing.",
'Please enter a first and last name.',
null, null,
'productpage'
);

var products;
products[0] = "widget";
products[1] = "hammer";
products[2] = "putty";
products[3] = "stripper";

wiz.productpage = new wizardPage( 'choice',
'Product',
'We have various products available for our customers. To place an order, select a product from the following list.',
'Choose a product.',
products
);

site.CreateWizard( wiz );

document.writeln( "Customer " + wiz.page1.value + " ordered a " + wiz.productpage.value );
-->

This example uses the wizardAdvanced class and the itemPosition class while creating a wizard that asks users for their mailing address. The wizardAdvanced class is used to create wizards that have multiple items per page:

<!--SCRIPT 
var webRoot = site.GetRootDocument();
import ( webRoot.location + '/system/utils/wizard.ssc' );

var wiz;
var items;

var provinces;
provinces[0] = "Alberta";
provinces[1] = "British Columbia";
provinces[2] = "Manitoba";
provinces[3] = "New Brunswick";
provinces[4] = "Newfoundland";
provinces[5] = "Northwest Territories";
provinces[6] = "Nova Scotia";
provinces[7] = "Ontario";
provinces[8] = "Prince Edward Island";
provinces[9] = "Quebec";
provinces[10] = "Saskatchewan";
provinces[11] = "Yukon";

// third and fourth arguments to wizardItem are
// ignored by all types except "choice"
// if a null argument is passed to itemPosition, it
// uses the default
items.firstName = new wizardItem( "text", "First Name", null, null, new itemPosition( null, 20, 65, null ) );
items.lastName = new wizardItem( "text", "Last Name", null, null, new itemPosition( 160, 20, 100, null ) );
items.street = new wizardItem( "text", "Street" );
items.city = new wizardItem( "text", "City", null, null, new itemPosition( null, 75, 80, null ) );
items.province = new wizardItem( "choice", "Province", provinces, 0, new itemPosition( 175, 75, 85, null ) );
items.postalCode = new wizardItem( "text", "Postal Code", null, null, new itemPosition( null, null, 80, null ) );

// wizardAdvanced displays all the wizardItems in
// the items array on one page.
wiz.page = new wizardAdvanced( "Address", "Please enter your mailing address.", items );

if( site.CreateWizard( wiz ) ) {
with( wiz.page.items ) {
document.writeln( firstName.value + " " + lastName.value );
document.writeln( street.value );
document.writeln( city.value + ", " + province.value );
document.writeln( postalCode.value );
}
}
-->

This example uses the next element to conditionally choose which wizard page should be displayed next:

<!--SCRIPT

// This is a class we define for convenience that
// sets up a single wizard page. This class
// is available to users in the file
// /site/system/utils/wizard.ssc.

class wizardPage( type, title, explanation, question, choices, selected, next, help ) {
this.type = type;
this.title = title;
this.explanation = explanation;
this.question = question;
this.choices = choices;
this.selected = selected;
this.next = next;
this.help = help;
}

var wiz;

// This function gets executed when the user hits
// the Next button from the "wiz.start" page.
// It determines whether the next page should be
// "page1", or "page2".

function whichpage() {
var pagestr = "page";
pagestr += ( wiz.start.selected + 1 );
return pagestr;
}

function CreateCustomerId( name )
{
return 12345678;
}

// On this first page, the user chooses whether
// they are a new or returning
// customer. If new, "page1" is displayed next,
// otherwise "page2" is displayed next.

var choices;
choices[0] = 'New Customer';
choices[1] = 'Returning Customer';

wiz.start = new wizardPage( 'choice',
'Welcome',
'If you are a new customer select "New Customer". Otherwise, select "Returning Customer".',
'What kind of customer are you?',
choices,
0,
whichpage
);

// From "page1" control passes to "productpage".

wiz.page1 = new wizardPage( 'text',
'New Customer',
"Before you can purchase anything, you must have a customer ID. In order to get this, you must give us your name.",
'Please enter your name.',
null, null,
'productpage'
);

// From "page2" control passes to "productpage".

wiz.page2 = new wizardPage( 'text',
'Returning Customer',
'Welcome back. Before you can purchase anything, you must identify yourself by providing your customer ID' ,
'Please enter your customer ID.',
null, null,
'productpage'
);

var products;
products[0] = "hat";
products[1] = "shirt";
products[2] = "pogo stick";
products[3] = "ball of yarn";

wiz.productpage = new wizardPage( 'choice',
'Product',
'We have various products available for our customers. To place an order, select a product from the &
following list.',
'Choose a product.',
products
);

if( site.CreateWizard( wiz ) ) {
var id;
if( whichpage() == "page1" ) {
id = CreateCustomerId( wiz.page1.value );
} else {
id = wiz.page2.value;
}
document.writeln( "Customer #" + id + " ordered a " + wiz.productpage.value );
}
-->

DeleteConnection method

Syntax

site.DeleteConnection(connName)

Description

Deletes the persistent connection defined by connName.

Note  

CreateConnection and DeleteConnection
You cannot delete a connection that a script is actively referencing. Because of this, CreateConnection and DeleteConnection should not be used in the same script unless the connection object has gone out of scope, or has been set to null at the time DeleteConnection is called.

Return

Boolean. This method returns true or false, indicating whether the method succeeded or not.

Typical reasons for false to be returned include:

Example

This example deletes the connection named MyConnection:

<!--SCRIPT
if ( site.DeleteConnection("MyConnection") ) {
document.WriteLn( "deleted" );
}else{
document.WriteLn( "unable to delete connection" );
}
-->

See also

"connection object".

DeleteDocument method

Syntax

site.DeleteDocument(docName)

Description

Deletes the document object defined by docName. docName may contain the wildcard characters * and ? and can be an absolute or relative path. The tilde (~) may also be used.

For information on the * and ? wildcards see "Wildcards".

Note  

CreateDocument and DeleteDocument
You cannot delete a document that a script is actively referencing. Because of this, CreateDocument and DeleteDocument should not be used in the same script unless the document object has gone out of scope, or has been set to null at the time DeleteDocument is called.

Return

Boolean. This method returns true or false, indicating whether the method succeeded or not.

Typical reasons for false to be returned include:

Example

This example deletes a document called MyDoc.stm from within the Site folder.

<!--SCRIPT
if ( site.DeleteDocument( "/Site/MyDoc.stm" )){
document.WriteLn( "deleted" );
} else {
document.WriteLn( "unable to delete document" );
}
-->

See also

"document object".

GetConnection method

Syntax

site.GetConnection(connName | connId)

Description

Returns the connection object representing the persistent connection called connName[string], or having id connId[integer].

Note  

Note:
Connection IDs are not persistent. If you restart Dynamo, connection IDs may not be the same. For this reason, Sybase recommends the use of connection names whenever possible.

Return

Connection object representing the specified connection, or null if the connection cannot be retrieved.

Typical reason for null to be returned include:

Example

This example changes the database to which "myConnection" connects:

<!--SCRIPT 
myConn = site.GetConnection ( "myConnection" );
myConn.database = "newDatabaseName";
-->

See also

"connection object".

GetConnectionIdList method

Syntax

site.GetConnectionIdList( [true|false] )

Description

Returns an array of IDs of connection objects. If true is specified, the list of connection IDs will include IDs representing the special connections <no connection> and <inherited>. If false is specified, the list of connection IDs does not include IDs representing the special connections. The default is true.

Return

Array of integers.

Example

To display a list of connection IDs.

<!--SCRIPT 
document.WriteLn( site.GetConnectionIdList() );
-->

See also

"connection object".

GetConnectionNameList method

Syntax

site.GetConnectionNameList( [true|false] ) 

Description

Returns an array of names of connection objects. If true is specified, the list of connection names includes the two special connections <no connection> and <inherited>. If false is specified, the list does not include the special connections. The default is true.

Return

Array of strings.

Example

This script displays the list of connection names.

<!--SCRIPT 
document.WriteLn( site.GetConnectionNameList() );
-->

See also

"connection object".

GetDocument method

Syntax

site.GetDocument(docName | docId)

Description

Returns the document object defined by docName [string] or docId [integer]. docName may be a relative or an absolute path or you can use the tilde (~) character. For more information on using the tilde please see "Paths".

Note  

Note:
IDs are not guaranteed to be the same after restarting the Web server. For this reason, Sybase recommends that you use the document name to identify documents.

Return

Document object representing the specified document, or null if the document could not be retrieved. A typical reason for null to be returned is that the specified document does not exist.

Example

This script retrieves the document MyDoc.stm from within the Site folder, passes a login name and password to MyDoc.stm, executes MyDoc.stm, and displays the output:

<!--SCRIPT
myDoc = site.GetDocument( '/Site/MyDoc.stm' );
myDoc.value.loginName = "homer";
myDoc.value.password = "doh";
document.WriteLn( myDoc.GetGenerated() );
-->

See also

"document object".

GetErrorCode method

Syntax

site.GetErrorCode( )

Description

Returns the current error code.

Return

Integer. Returns an error code associated with the last operation performed.

Example

This example displays information as to why the connection was not created successfully:

<HTML> 
<TITLE>sample.stm</TITLE>
<BODY>
<!--SCRIPT
myConn = new Connection( 'connection1', '', 'ASA 6.0 Sample', 'basUser', 'badPassword' );
if( myConn == null ) {
document.writeln( "Error Code: " + site.GetErrorCode() );
document.writeln( "Error Message: " + site.GetErrorInfo() );
document.writeln( "Error State: " + site.GetState() );
}
-->
</BODY>
</HTML>

See also

"query object".

"connection properties".

"GetErrorInfo method".

"GetState method".

"GetErrorInfo method".

"GetState method".

GetErrorInfo method

Syntax

site.GetErrorInfo( )

Description

A description of the error associated with the last operation performed.

Return

String.

Example

This example displays information as to why the connection was not created successfully:

<HTML> 
<TITLE>sample.stm</TITLE>
<BODY>
<!--SCRIPT
myConn = new Connection( 'connection1', '', 'ASA 6.0 Sample', 'basUser', 'badPassword' );
if( myConn == null ) {
document.writeln( "Error Code: " + site.GetErrorCode() );
document.writeln( "Error Message: " + site.GetErrorInfo() );
document.writeln( "Error State: " + site.GetState() );
}
-->
</BODY>
</HTML>>

See also

"connection object".

"query object".

"query properties".

"connection properties".

GetEventList method

Syntax

site.GetEventList([controlType])

Description

Returns an array of all controlType event handlers currently installed (by OnEvent ). If controlType is not specified, all installed event handlers are returned.

controlType is described in the OnEvent method.

Each event handler object contains read-only properties that correspond to the parameters of the OnEvent method. The only difference is the handlerScript property, which always has an absolute path, regardless of how it was initially specified with OnEvent .

Return

Array of event handler objects.

Example

This example uses GetEventList to display all previously created event handlers with the control type of Icon .

<!--SCRIPT   
// Show "Icon" event handlers for directories
eventList = site.GetEventList( 'Icon' );
i = 0;
while( exists( eventList[i]) ) {
event = eventList[i];
document.writeln( event.controlLabel );
i++;
}
-->

GetRootDocument method

Syntax

site.GetRootDocument( )

Description

Returns the document object representing the root document of the Web site (in most cases, the Site folder).

Return

Document object.

Example

This script executes a template called MyDoc.stm which resides in the root directory of the Web site:

<!--SCRIPT
root = site.GetRootDocument();
myDoc = site.GetDocument( root.location + '/MyDoc.stm' );
document.WriteLn( myDoc.GetGenerated() );
-->

GetState method

Syntax

site.GetState( )

Description

Returns information about the SQL state of the last query operation performed.

GetState is meaningful only if the most recent error was database-related.

Example

This example displays the state of the most recent Dynamo database error:

<HTML> 
<TITLE>sample.stm</TITLE>
<BODY>
<!--SQL
SELECT customer.fname, customer.lname, customer.phone, customer.id
FROM DBA.customer customeer
-->

<!--SCRIPT
queryState = site.GetState();
document.WriteLn( queryState );
queryInfo = site.GetErrorInfo();
document.WriteLn( queryInfo );
queryCode = site.GetErrorCode();
document.WriteLn( queryCode );
-->
</BODY>
</HTML>

Include method

Syntax

site.Include(scriptName)

Description

Executes the specified script and returns a string containing the generated output of scriptName (absolute or relative path).

Return

String.

Example

This executes the script sample.ssc and returns the generated output.

<!--SCRIPT 
output = site.Include( 'Site/sample.stm' );
document.WriteLn( output );
-->

See also

"site object".

"site properties".

"GetGenerated method".

OnEvent method

Syntax

site.OnEvent(itemName, controlType, controlLabel, description, handlerScript)

Description

Adds an event handler to the management interface (typically for creating an icon or menu item in Sybase Central), where:

Return

Boolean. This method returns true or false, indicating whether the method succeeded or not.

Example

For example, the following code is added to the autoexec.ssc file in the System folder to create an icon to execute the wizard created in the site method CreateWizard example.

//Example Wizard
site.OnEvent( 'directory','Icon','Dynamo Example for Creating Wizards','Wizard Example','NewLink.ssc' );

This example, if added to the autoexec.ssc file, would cause the execution of the cleanup.ssc script just before a session times out:

site.OnEvent( 'Site', 'SessionTimeOut', ' ', ' ', 'cleanup.ssc' );

This example, if added to the autoexec.ssc file, would cause the execution of error.ssc whenever a request was made for a document that generates an error:

site.OnEvent('','Parser','','','error.ssc');

This example, if added to the autoexec.ssc file, would cause the execution of notfound.ssc whenever a request was made for a document that could not be found:

site.OnEvent('','status404','','','notfound.ssc');

Note  

Execute from /system/autoexec.ssc
You should only call the OnEvent method from /system/autoexec.ssc or from another script that is executed from within the autoexec script.

RenameDocument method

Syntax

site.RenameDocument(source document, destination document)

Description

Takes source document, renames and saves it in destination document (i.e. source document is moved). The specified path may be a relative or an absolute path or the tilde (~) character may be used. This is a method of the site object.

For information on using the tilde character, see "Paths".

Return

Boolean.

Example

This example moves forms.stm from the root of the Web site, renames it to test.stm and places it in the Sample location:

<!--SCRIPT
site.RenameDocument("~/form.stm","~/Sample/test.stm");
-->

ShowMessage method

Syntax

site.ShowMessage (title, message)

Description

Displays a message with an OK box. This method is supported only from within Sybase Central.

Example

This example displays the message "Task complete".

<!--SCRIPT
site.ShowMessage("Request status", "Task complete");
-->

 


Copyright © 1999 Sybase, Inc. All rights reserved.