CapeSoft.Com
Clarion Accessories
NetTalk
Doc Index
Web Server Template Reference
CapeSoft Logo

CapeSoft NetTalk
WebServer Template  Reference

 

Global Extension

In addition to the normal Activate NetTalk extension, a second global extension, called Activate NetTalk Web Server also needs to be added to the application. This extension has the following settings;

Web Apps Tab

Popups
At the procedure level you can specify that procedures are opened as a page, or as a popup. This setting however overrides that setting globally, allowing you to easily test your application in either Popup or page mode.
Packet variable name
The name of the generated variable, which by default is called Packet. The primary reason for this setting is to identify the places where packet is used in hand-code, and to correct it if necessary. See Packet Variable.
Options variable name
The name of the generated variable, which by default is called loc:Options. The primary reason for this setting is to identify the places where loc:options is used in hand-code, and to correct it if necessary. See Options Variable.
Turn Off Pinch to Zoom
Tick this option on if you want your site to scale to small screens automatically. This tells browsers on small screens that you have planned for the site to be visible on small screens. Specifically it adds the following meta tag to the page;
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">  
Turn On jQuery Mobile (deprecated)
With NetTalk 10 support for the jQuery Mobile framework has been deprecated. If you wish to continue using this framework, for the short term, then turn this option on. Be warned though that support for jQuery Mobile will likely be removed in a furture version.

Web Services Tab

Auto Deformat Parameter Fields
If this is on, then (by default) incoming parameter fields will be deformatted when being assigned into non-string dictionary fields. For example an incoming date string (12/31/2016) will be deformatted based on the picture set in the dictionary when being placed into a LONG field. This setting can be overridden at the method/parameter level for each parameter.
Auto Format Return Fields
If this is on, then (by default) outgoing return fields will be formatted when being assigned into XML or JSON based on the picture set in the dictionary. For example an outgoing date LONG will be formatted when written to the output. This setting can be overridden at the method/parameter level for each parameter.
Support XML
If on then NetWebServiceMethods support incoming XML parameters and outgoing XML responses. This feature requires xFiles. This support can be overridden on a Method by method basic.
Support JSON
If on then NetWebServiceMethods support incoming JSON parameters and outgoing JSON responses. This feature requires jFiles. This support can be overridden on a Method by method basic.
Default Return Format
This allows you to set the default return format, as per rule 9 of the Return Format Rules.
Format Return For
This option lets you specify the default formatting for output from the Web Service Methods. If this is set to readability then XML and JSON output is formatted with indenting and line endings. If it is set to Compactness then there is no indenting whitespace, and no line endings. Not that this setting does not affect WebServiceMethod documentation. On the documentation pages format is always formatted for easy readability.  This setting can be overridden at the procedure level.

Apps Tab

General Tab

Allow Sync in Service Methods
If this option is on then WebServiceMethods support the sync action. This is required for methods supporting disconnected web apps, or disconnected mobile apps.
Turn off pinch-to-zoom
If this is on then the user will not be able to zoom into a page using pinch-to-zoom gestures.
Generate for Disconnected App
Tick this on if this web app should be generated as a single-page-application, which will use local storage in the browser, and transfer the information to the server via sync methods.
Database Name
This sets the database.name property which can be used in JavaScript code.
Sync Host URL
This is the (default) URL the disconnected app will use to sync with. Can (possibly) be overridden by the user below in the settings table.
Sync Timer (seconds)
The number of seconds between sync's. Please consider battery life on mobile devices when setting this value. All changes the user makes is automatically sync'd - this setting refers to a timer sync which fetches all the changes made by other users. A value of at least 900 seconds (15 minutes) is recommended.
Sync database on program start
If this is on then the disconnected app will do the first sync shortly after the program starts.
After a short delay of (seconds)
Determines the startup delay for doing the first sync. Setting this to say 5 (5 seconds) can make debugging during development a bit easier.
All Browses should be File Loaded
Tick this on for all browses to generate as File Loaded instead of Page loaded. Since all browses are fetching data locally this is recommended for disconnected apps.

Settings Table Tab

Settings Table
The "single record" table in the dictionary. Note that it's only single-record at the client side, the server supports multiple devices so on the server side there will be many records, one for each client device.
Sync Host Field
The "SyncHost" field in the settings table. If this is set, and you offer it as an option to the user, then the program will automatically sync to this URL.
Company Field
The "Company" field in the settings table.
User Field
The "User" field in the settings table. Each sync request will include a Basic Authentication header which contains this user name (and password below). If the user is not logged in (ie their session is not logged in) then the Authenticate method in the WebHandler can be used to log the user in.
Password Field
The "Company" field in the settings table. See User field above.
Device ID Field
The "DeviceID" field in the settings table.  This is a random string generated for each device when the program runs. It can be used to determine when a user is using multiple devices, or when they change devices.

Tables Tab

On this tab you can control which tables are generated into the disconnected application - in other words, into database.js. This allows you to have a dictionary where some tables are used in the mobile app, but some tables are not.
Dictionary Version
This controls the version number of the database on the device. See Database Upgrades for more information on how this is used.
Include All Tables
If this option is on then all the qualifying tables in the dictionary are created in the mobile application. If you wish to control which tables are used in the application then turn this option off.
Note: You can also suppress a table in the dictionary by setting the table user option NOSYNC=1
Tables To Include
If the above option is off then you can specify the tables to use here. Note that if you make use of a table in your app, which is not included on this list, then you will encounter a JavaScript error in the application.

Web Folder Tab

Do not copy Web Folder
In some cases a web server does not need a web folder at all. This is possible if you are making a server to serve a completely static site, or if you are making a SOAP server that will not serve any CSS or JavaScript files. If this is the case then you can tick this option on. Note that copying the files does no hard even if your server never serves them.
Add Pause to CopyAll.Bat
A CopyAll.Bat file is created, and run from time to time. If this batch file is failing with an error then adding a pause to the end of it will enable you to see the error. Tick this option on if you are having a problem with the automatic copying of the web folder.
(From) root\Netweb folder
The source of the web folder in CopyAll.Bat is usually the \clarion\accessory\libsrc\netweb folder (where clarion is your Clarion folder). This should work automatically, however if you need to copy from an alternate location then you can specify it here.
(To) Web folder
The destination of the web folder in CopyAll.Bat is usually the web subfolder of your application directory. This should work automatically, however if you need to copy to an alternate location then you can specify it here.

Multi-DLL Tab

On this tab you can add any other apps in your collection of apps that export NetWeb procedures. This allows this application to access NetWeb procedures in other applications.

WebServer Procedure Extension

General Tab

This Object Name
The object name for the web server object. This is usually ThisWebServer.
Base Class
The class to be used by the web server object. This is usually NetWebServer.

Settings Tab

General Tab

Listen on Port Number
Each server listens on a "port". This allows multiple servers to run on the same machine. Only one program can be listening on a specific port at a time. That is how TCP/IP works. The default port number for normal web sites is 80. The default for secure websites is 443. The default for NetTalk examples is 88.

The port number you enter here will be used for this server (regardless of whether the server is SSL or not.) The common values (80 and 443) are just common values, you don't need to use them - your server can use any port you like.

However the browser knows about common values too, so when the port number is omitted from the URL it defaults to the common value. For example, http://www.capesoft.com is the same as http://www.capesoft.com:80 and https://www.clarionshop.com is the same as https://www.clarionshop.com:443. If you use an uncommon port number for your server then your users will need to explicitly use the port number when accessing the server. For example, the shipping examples all use port 88, so the URL to get to them (when running the browser on the same machine as the server) is http://127.0.0.1:88
Handler Procedure
This is the name of your WebHandler procedure. the default name for this procedure is WebHandler, and it's a good idea to stick to the default name.
Web Directory
This is the name of the web folder, typically a sub-directory of the application folder. Files in the web folder can be downloaded by the browser. It contains (in sub-folders) all the files that your site needs, like JavaScript files, CSS files, Images and so on. The default name is 'web'.
Default Page
This is the name of the html file, or procedure, which will be called when the URL does not contain an actual name. The default in most of the examples is 'Indexpage' which corresponds to a procedure in the app.
Login Page
This is the page that contains the Login form (if one exists). This is then called automatically when the user tries to access a page which requires them to be logged in (when they are not already logged in.) Typically this is a Form procedure in the app (but it could be a static HTM page.)
Login Page is a Control
If the Login Page is a NetWebForm procedure (which is recommended), then tick this option on.
Date Picture
You are able to set the default date picture for the web site here. This value will be placed in p_web.site.DatePicture, which in turn can be used in any place where a date picture is required. This allows you to change the default date picture globally. You can make the date picture variable, or even set per-user, by setting the self.site.DatePicture property in the Webhandler procedure, ProcessLink method, before the parent call.

Note
that date pictures up to D16 are supported. D17 and D18 specifically have no meaning in a web app, and are explicitly not supported.
Generic-Page Header Tag
All generated pages consist of three parts. The header, the footer and the content body. Enter the name of the header procedure (usually a NetWebSource procedure) here, in "tag" form. For example if the procedure is called PageHeader then the tag is '<!-- Net:PageHeader -->'. The generic-header (and generic footer) are wrapped around NetWebBrowse, NetWebForm and NetWebYear controls when those controls are called as a stand-alone page. The generic header and footer can be overridden at the procedure level for specific browses and forms etc.
Generic-Page Footer Tag
See Generic-Page Header tag above.
Wrap Content with ContentBody Div
Tick this on to make use of the Content-Body feature. The Content Body is a DIV block around all the content between the header and the footer. It can make navigation through the application faster, and smoother.
Default Page Title
The page title is what the browser displays in the caption bar when looking at a specific page. You can set this at the procedure level, however you can enter a generic app name here for pages that do not have a specific title set.
Suppress Error Messages
If this option is off, then the server will display error messages in a MESSAGE box to you as they occur. Most errors though, in the web context, are expected, and harmless. This option must be off for deployment, or your web server will stall when a message is displayed. However it can be useful to have this on when experiencing a problem in the server - especially a problem when deploying a new server (which you are struggling to connect to.)

Defaults Tab

General
Theme
The default theme to use for the site. Enter the name here (in quotes).
Browse
Row Clicks
If this is set to Off then a double-click on a browse row does nothing.
If it is set to Row To Form then a double-click will go to the Form, in Change mode (if that option is available to the user.)
If it is set to Select when Selecting then it will go to the form, except when the browse in Selecting mode (loc:Selecting=1) in which case it will behave as if the user pressed the Select button.
Include Export button on Browses
If this is on the and Export button will be included on all browses (by default.) Individual browses can override this setting, turning the button on or off for a specific browse. Note that this feature requires xFiles.
Row Clicks
Select the default behavior for when the user clicks (or double-clicks) on a browse row.
Entry Default Width
Set the default width for Entry (and Entry-like) fields when doing EIP in a browse.
Popup Open Animation
This is the default animation when a popup browse is opened. For more on animations see Popup Animations.
Popup Close Animation
This is the default animation when a popup browse is closed. For more on animations see Popup Animations.
 
Layout Method
Select the HTML approach used for the browse table. You can use either the TABLE tag, or the more progressive and responsive DIV tag.
Children Layout Method
Select the HTML approach used for the relationship between the browse table and the children. You can use either the TABLE tag, or the more progressive and responsive DIV tag.
Form
(On Delete) Prompt for Confirmation
If the user clicks on the Delete button on a FORM, then a message will be displayed asking them to confirm before the record is actually deleted.
(On Cancel) Prompt for Confirmation
If the user is on a form, and clicks on the Cancel button, and some fields on the form have changed, then the user will get a confirmation message asking them to confirm the Cancel before the changes are abandoned.
Default HTML Editor
NetTalk supports multiple WYSIWYG HTML editor scripts. By setting the default here (and using the default as the field level setting) it's easy to change the editor used by an application in one place. It also allows the setting to be applied at runtime, on a user-by-user basis allowing users to select the editor they prefer.
Note that you still need to include the possible scripts for the editors (including the default) on the Scripts tab. 
Entry Default Width
Set the default width for Entry (and Entry-like) fields on the form where the Size is not specifically set for the field.
Popup Open Animation
This is the default animation when a popup form is opened. For more on animations see Popup Animations.
Popup Close Animation
This is the default animation when a popup form is closed. For more on animations see Popup Animations.
Maps
Use Provider
Map Type
Select the default to use for the map type offered by the provider. Note that the user can switch between map types at runtime.
Developer ID
Many of the map providers require a developer ID. Sign up at their web site, and enter the ID here.
Application Code
Some providers supply you a unique application code which you can enter here.

Mobile Tab

Support Mobile Browsers
Tick this on to allow the site to be served in either Desktop mode, or Mobile mode.
Browses - Header Fixed
If on then fixes the browse header at the top of the pane. If off then the header is fixed to the top of the page, and moves upwards as the user scrolls down the page.
Browses - Footer Fixed
See Browses - Header Fixed above.
Forms - Header Fixed
See Browses - Header Fixed above.
Forms - Footer Fixed
See Browses - Header Fixed above.
Max Mobile Resolution
This is used to detect if a connecting device is mobile or not. If a device connects to the server, and has a screen size greater than the resolution entered here, then the site will be served in Desktop mode, and not Mobile mode.

Scripts Tab

NetTalk contains default functionality that is based on JavaScript. If you are not using this functionality then it's a good idea to exclude these scripts from your application, as this will result in smaller JavaScript requirements, and therefore faster initial load times for the app. The various script options are listed below.
Default HTML Editor
Moved to Defaults Form tab.
Include TinyMCE HTML Editor Script
The TinyMCE Editor is one of the offered HTML editors, which allow users to enter WYSIWYG HTML into a Text field in your app. Tick this option on if this is your preferred editor.
Include Redactor HTML Editor Script
Redactor is the other offered HTML editor. Use this one instead of (or in addition to TinyMCE) if you prefer it.
Redactor Language
Redactor supports the use of multiple languages. If you are using a language other than English you can enter the language code here. For more information on Redactor language codes see here.
Include Calendar Script
The Calendar script refers to the NetWebYear procedure type. If you have any NetWebYear based procedures in your application then tick this on. If not you can turn it off. This does not affect the date-lookup control at all.
Include ExternalServer Script
Tick this on to include the ExternalServer scripts in the app. This will allow you to use the External form field type on your forms.
Include File Upload Script
The File Upload script allows your user to upload files with a lot more feedback, and control than the native HTML file Upload field. If you allow your users to upload Files to your site, then you will probably want to make use of this feature. You can read more about File Uploading here.
Include Gallery Script
The Image Gallery is a Form Field type, which allows you to display one, or more, pictures in a gallery format. Tick this script on if you have a form with this field type.
Include Gauge Script
The Gauge is a Form Field type, which allows you to display one, or more, gauges on a form or browse. Tick this script on if you have a form or browse with this field type.
Include Maps Script
Tick this on to include the Maps scripts in the app. This will allow you to use the Map form field type on your forms.
Include Media Script
The Media script allows your page to contain non-HTML fields containing other media, like PDF files, sound, movies and so on. Read more about the Media control here.
Include Signature Script
Tick this on to include the Signature scripts in the app. This will allow you to use the Signature form field type on your forms.
Include Webcam Script
Tick this on to include the Webcam scripts in the app. This will allow you to use the Webcam form field type on your forms.
Scripts Directory
To make organization easier, all JavaScript files are grouped together for convenience. the default sub folder where this is done is the 'scripts' folder. You can change this if you like (but for various reasons, it's not recommended.)
Scripts
Additional script files can be added to your application. Click on the Insert button to add a new file, or the Properties button to change an existing entry in the list.
Script File Name
The name of the file to add. You should not include the scripts folder name - just the name of the scripts file. For example 'signature.js'.
Browser
By default the JavaScript will be served to all browser types. However it is possible to restrict the use of the JavaScript file, based on the browser being used.
Desktop
Tick this on if this script should be included in the app when it is in Desktop mode.
Mobile
Tick this on if this script should be included in the app when it is in Mobile mode.
Included in All.Js
Tick this on if you want the script to be included into All.Js. This is recommended to make the site as fast as possible. "
Suppress CacheCheck for this file.
Prevents the ?c=1 parameter from being added to the HTML for this file. This can be used in cases where passing the parameter would cause the remote server to complain. In other words may be necessary for scripts being served by other servers.
Include JS for Chrome Menu
The Chrome menu and XP-TaskPanel menu types are deprecated and should no longer be used. However these are still included for backward-compatibility reasons. If you are using these menu types then either change to a new type, or tick this option on. (Remember to turn on the similar option on CSS tab as well.)
Include JS for XP-TaskPanel menu
See option for Chrome menu above.
Run GZIPALL
The app creates a batch file for combining and compressing the CSS and JS files. If you manually change these files, then you will want to re-run the batch file. You can do that from Windows Explorer, or by pressing this button.

Styles Tab

Site Tab
Reset to Defaults
Tick this option on, then off, to reset the CSS settings on this tab back to their default values.
HTML Class
Is applied to the <HTML> tag on every generated page. Defaults to 'nt-html'.
Body Class
Is applied to the <BODY> tag on each generated page. Defaults to 'nt-body'.
Body Div Class
Each generated <BODY> contains an immediate DIV which wraps all the contents of the body. ie it wraps around the Header, Content body and Footer. This defaults to 'nt-body-div'.
Content Body Div Class
The content body wraps around all the html after the Header but before the footer. Defaults to 'nt-left'.
Busy Div
This <DIV> contains the busy graphic, the spinning wheel. Defaults to 'nt-busy'.
Busy Image
This is the name of the image to use for the spinning wheel. Defaults to '/images/_busy.gif'.
Validation Message
This is the <DIV> surrounding the on-screen error messages. Defaults to 'nt-width-50 nt-alert ui-state-error ui-corner-all'.
Google Fonts
Google Fonts allow you to embed additional fonts, from the Google Fonts library on your web page. Some of the following features are in beta (by Google) so it's a good idea to read the Google Fonts primer.
Google Font
The name of the font to add. Note that this is case sensitive.
Regular
If you are going to use the regular form of the font, tick this on.
Bold
If you are going to use the bold form of the font, tick this on.
Italic
If you are going to use the italic form of the font, tick this on.
Bolditalic
If you are going to use the bold italic form of the font, tick this on.
Include in Desktop
Allow for this font to be used when the pages are displayed in Desktop mode.
Include in Mobile
Allow for this font to be used when the pages are displayed in Mobile mode.
Script Subset
This field is a Comma Separated List. Some of the fonts support more than one Charset. To minimize the charsets needed you can use this setting. To see a list of charsets see the Google document.
Alphabet
If you are only going to use a small subset of the characters in the font, like in a single heading, then you can enter that subset here.
Font Effects
This field is a Pipe Separated List. Font Effects can be applied to fonts. To see a list of font effects, see the Google document.
Browse Tab
Reset to Defaults
Tick this option on, then off, to reset the CSS settings on this tab back to their default values.
Div
The DIV tag that surrounds the whole browse procedure. Defaults to 'nt-left'.
Heading
Defaults to 'nt-header nt-browse-header'.
Subheading
Defaults to 'nt-header nt-browse-header-sub'.
Table Div
The DIV which surrounds the browse table. Defaults to 'ui-widget'.
Table
The browse table itself, which includes the header, body and footer of the table. Defaults to 'nt-browse-table ui-widget-content ui-corner-all'.
Header
The header part of the table. Defaults to 'ui-widget-header nt-browse-table-header'.
Body
The body part of the table. Defaults to 'nt-browse-table-body'.
Row
The row part of the table. Defaults to 'nt-browse-table-row'.
Footer
The footer part of the table, for columns that have a footer. Defaults to 'nt-browse-table-footer'.
Footer (empty)
The footer part of the table for columns that do not have a footer. Defaults to 'nt-browse-table-footer-empty'.
Locator
Defaults to 'nt-locator'.
Locator Btn Set
Defaults to ''.
Navigation Btn Set
Defaults to ''.
Update Btn Set
Defaults to ''.
Select Btn Set
Defaults to ''.
Hyperlinks
Defaults to ''.
Empty
Defaults to ''.
Edit Entry
Defaults to 'nt-browse-entry'.
Edit Text
Defaults to 'nt-browse-entry'.
Edit Date
Defaults to 'nt-browse-entry'.
Edit Drop
Defaults to 'nt-browse-entry'.
Edit Drop Option
Defaults to 'nt-browse-entry'.
Edit Check
Defaults to 'nt-browse-entry'.
Other button (w/text)
Is applied to "Other" buttons added to he browse, where the button contains text. Defaults to ''.
Other Button (wo/text)
Is applied to "Other" buttons added to he browse, where the button does not contain any text. Defaults to ''.
Mouseover Style
Is applied to browse rows as the mouse moves over them. Defaults to ''.
Highlight Style
Is applied to the currently selected browse row. Defaults to ''.
Greenbar One Style
Applies to the one half of the greenbar color set. Defaults to ''.
Greenbar Two Style
Applies to the other half of the greenbar color set. Defaults to ''.
Form Tab
Reset to Defaults
Tick this option on, then off, to reset the CSS settings on this tab back to their default values.
Form Type
Select the default form type from the drop down. This (and all other CSS settings) can be overridden at the procedure level.
Div
Defaults to ''.
Heading
Defaults to 'nt-header nt-form-header'.
Subheading
Defaults to 'nt-header nt-form-header-sub'.
Table
Defaults to 'nt-form-table'.
Prompt
Defaults to 'nt-form-div nt-prompt nt-formcell'.
Button Div
Defaults to 'nt-form-div nt-left'.
Entry Div
Defaults to 'nt-form-div nt-formcell'.
Entry
Defaults to 'nt-entry ui-corner-all'.
Entry Required +
This is added to the Entry class above, for fields which are set as required. Defaults to 'nt-entry-required'.
Entry Readonly +
This is added to the Entry class above, for fields which are set as read only. Defaults to 'nt-entry-readonly'.
Entry Error +
This is added to the Entry class above, for fields which have failed a validation test. Defaults to 'nt-entry-error'.
Droplist
Defaults to ' nt-select'.
Comment
Defaults to 'nt-form-div nt-comment nt-formcell'.
Comment Error +
This is added to the Comment class above, for fields which have failed a validation test. Defaults to 'nt-comment-error ui-state-error ui-corner-all'.
Tab Outer Div
Defaults to 'nt-tab-outer'.
Tab Title
Defaults to 'nt-tab-title'.
Tab Inner Div
Defaults to 'nt-tab-inner'.
Save Button Set
Defaults to ''.
Other Button (w/text)
Defaults to ''.
Other Button (wo/text)
Defaults to ''.
Calendar Tab
Reset to Defaults
Tick this option on, then off, to reset the CSS settings on this tab back to their default values.
Month Set
Defaults to 'nt-month-set'.
Month Header
Defaults to 'ui-widget-header ui-corner-top nt-month-header'.
Month Header Cell
Defaults to 'nt-month-header-cell nt-wide'.
Day Cell
Defaults to 'nt-monthday-cell ui-corner-all'.
Empty Day Cell
Defaults to 'nt-monthday-empty-cell'.
Big Month
Defaults to 'nt-month-big ui-widget-content ui-corner-all'.
Big Content in Cell
Defaults to 'nt-content'.
Big Label (with content)
Defaults to 'nt-label'.
Big Label (no content)
Defaults to 'nt-label-empty'.
Small Month
Defaults to nt-month-small ui-widget-content ui-corner-all''.
Small Content in Cell
Defaults to 'nt-hidden'.
Small Label (with content)
Defaults to 'nt-label-small'.
Small Label (no content)
Defaults to 'nt-label-empty-small'.
Files Tab
Themes Directory
The folder inside the web folder which contains the various available themes. Defaults to 'themes'. Changing this is not recommended.
Theme
Moved to the Defaults / General tab.
Theme Files
Additional files can be added at the theme level. Use this approach for custom css files when the files will be different from one theme to the next.
Theme File Name
The name of the file.
Desktop
Include when the app is being displayed in Desktop mode.
Mobile
Include when the app is being displayed in Mobile mode.
Styles Directory
The folder inside the web folder where style files which apply to all themes are stores. Defaults to 'styles'. It is not recommended to change this setting.
CSS Style File
Additional style files can be added to the app. Use this approach for files which are theme neutral.
Style File Name
The name of the CSS file to include.
Desktop
Include when the app is being displayed in Desktop mode.
Mobile
Include when the app is being displayed in Mobile mode.
Browser
Limit the file to being used in a specific browser type.
Is Included in All.Css
Ticking this on is recommended. This will include the file in your All.Css file, which will make your site load faster.
Include CSS from NetTalk 4
Use this if your app uses styles deprecated by NetTalk 5.
Include CSS for Chrome menu
Tick this on if your app still uses the Chrome menu type.
Include CSS for XP-TaskPanel menu
Tick this on if your app still uses the XP-TaskPanel menu type.
Run GZIPALL
The app creates a batch file for combining and compressing the CSS and JS files. If you manually change these files, then you will want to re-run the batch file. You can do that from Windows Explorer, or by pressing this button.

Buttons Tab

Buttons sets, when on, group like buttons visually together into a mini toolbar.
Use Buttons Sets for Browse Locator
The browse locator has the option for Search and Clear buttons. Tick this on to group these buttons together.
Use Buttons Sets for Browse Navigation
First, Previous, Next and Last buttons.
Use Buttons Sets for Browse Updates
Insert, Copy, Change, View, Delete buttons.
Use Buttons Sets for Browse Select/Cancel
Select and Cancel buttons (when the browse is called as a lookup.)
Use Buttons Sets for Form Save
Save and Cancel buttons on a form.
Standard Buttons
Standard buttons exist so that control over the look of a button can be controlled globally for all browses and forms. If you click on the Delete button under this list, the deleted button is added back to the bottom of the list, with the default values restored. Thus is it easy to restore buttons to their default state by deleting all of them. Each button ahs the following properties;
Text
The text that appears on the button in Desktop mode.
Image
The image that appears on the button in desktop mode.
Image Width
The width of the above image. If omitted the width of the image itself is used.
Image Height
The height of the above image. If omitted the height of the image itself is used.
Image Alt
the alternate text to be displayed if the image is not available. This setting also helpful to screen readers.
Button Class
The CSS Class for the button.
Tool Tip
the tooltip to display when the user hovers over the button. Note that tooltips are not visible when in Mobile mode.
Use jQuery styled Button
Tick this on to turn the button into a jQuery styled button, which can be controlled by CSS. If off then a button native to the Browser and OS is displayed.
jQuery Icon
Enter the name of a jQuery UI icon here. For a list of available icons see http://jqueryui.com/themeroller/. the icons appear at the bottom of the page, and you can see the name by hovering over them. Note that the prefix of the icon (ui-icon-) is not included here.
Form Header Text
If the button causes a popup to open, then the Title of the popup will be set to this.
Mobile - Compact
If in mobile mode, then this button does not expand horizontally to fit the whole width.
Mobile - Icon
The mobile icon to display. Note this is not the same list as the desktop icons. To see a list of mobile icons see here.
Mobile - Text
The text to display on the button in Mobile mode. This may be shorted than the text used in Desktop mode to save space.

Security Tab

Use TLS to make server Secure
Servers that use SSL encrypt the traffic between the server and the browser. This makes it possible to store, and transmit sensitive information, like credit card numbers. You can read more about making your site secure here.

In build 9.20 and later this option is an expression, meaning you can use a variable here which can be set at runtime. If the setting changes then the server will need to be restarted.
Certificates (CSL)
If you are making your site secure then you will need a certificate. It will be placed in your app\certificates folder. Enter the name of the certificate here. If you have multiple certificates then enter the names here as a comma separated list. For example, 'capesoft.crt' or 'capesoft.crt,clarionshop.crt'. For more information on using multiple certificates see Server Name Indication.
Private Keys (CSL)
Enter a list of private KEY files here. This list should have the same number of entries, and be in the same order, as the Certificates list above. This list can contain just a single KEY file if only one certificate is being used.
Host Names (CSL)
Each certificate that you use needs a matching Host Name. So if you have 3 certificates listed, then you need 3 host names. Like the above two settings this is a comma-separated-list.
Always Redirect to Secure Site
When you are creating an SSL only site, then it can be advantageous to also create a site on Port 80 which automatically redirects users to the SSL port. If this NetSimple Object is the Port 80 version of this setup, then tick this option on.
Secure Site Port
If the above checkbox is on, then enter the port number of the SSL site here The default value is 443
Bind Server to only IP
Machines can, and do, have multiple IP addresses. If this option is on then clients will only be able to connect via a specific one of those addresses. If it is off then the server binds to all the addresses. Binding to just one address allows other programs to use the same port, on the same machine, by in turn binding to one of the other addresses.
Session Length
The number of characters in the string to use for the Session ID. Longer makes for bigger packets. Shorted makes for a lower security level. 20 is considered the minimal current "best practice" but NetTalk defaults to 30.
Change Session on Log In / Out
Changing the session ID when the user logs in and out can prevent certain kinds of possible attacks on your users. By default this option is on.
Delete Session on Logout
There is a distinct difference between a user being logged in or out, and their session. If you want the actual session to be deleted when they logout then tick this option on. Note however that you will need to take the user to a Logout page. You cannot delete the session underneath a form (and expect it to keep working.) So the practice of automatically logging a person out when they enter the Login form is not compatible with this option.
Bind Session to IP Address
If this option is on then a session is bound to the IP address that created it. This prevents a session from being hijacked. Unfortunately it can hinder access from clients that have a variable IP address, and so is off by default.
Maximum POST size (mb)
This sets the maximum size for any file uploaded to the server. If your site is being hosted as a DLL by the HOST.EXE program then the Host program's setting will also apply. Files which are too large will be marked as "failed" on the form after the upload is started.
This setting is in Megabytes - ie if set to 5 then no files larger than 5 Megabytes in size will be accepted.
X-Frame-Options
The x-frame-options header is an instruction from the server to the browser to determine if content may be displayed when included in an iFrame of another site. The default value for this setting is 'sameorigin' which prevents other sites from displaying pages or receiving AJAX responses from this server. This setting should be one of 'deny', 'sameorigin', 'allow-from ' & uri. Setting it to blank turns off this feature completely. This setting allows you to determine if a page can be included in the frame for another site. You will need to change this setting in order to allow this server to deliver content into an iframe on another site, or to accept AJAX request from another site. 
Strict-Transport-Security
Http Strict Transport Security (HSTS) tells the browser that this domain can only be accessed over HTTPS for some period of time. Note that it is not possible to un-tell the browser of this setting, so you should only set it if you are sure the site will always be HTTPS. The browser will remember the setting beyond the immediate session.

For more information on HSTS, and some suggested values for this parameter, see the OWASP site at https://www.owasp.org/index.php/HTTP_Strict_Transport_Security and https://www.owasp.org/index.php/HTTP_Strict_Transport_Security_Cheat_Sheet

Examples

Simple example, using a long (1 year) max-age. This example is dangerous since it lacks includeSubDomains.

'max-age=31536000'

The next example is useful if all present and future subdomains will be HTTPS. This is a more secure option but will block access to certain pages that can only be served over HTTP.

'max-age=31536000; includeSubDomains'

Recommended: If the site owner would like their domain to be included in the HSTS preload list maintained by Chrome (and used by Firefox and Safari), then use the header below. Sending the preload directive from your site can have PERMANENT CONSEQUENCES and prevent users from accessing your site and any of its subdomains if you find you need to switch back to HTTP. Please read the details at hstspreload.appspot.com/#removal before sending the header with "preload".

'max-age=31536000; includeSubDomains; preload'

The `preload` flag indicates the site owner's consent to have their domain preloaded. The site owner still needs to then go and submit the domain to the list.
Content-Security-Policy
Allows you to set the content-security-policy header. For more information on content-security-policy see
https://scotthelme.co.uk/content-security-policy-an-introduction  and
https://www.html5rocks.com/en/tutorials/security/content-security-policy
Content-Security-Policy-Report-Only
Allows you to set the content-security-policy-report-only header. This header is a test form of content-security-policy.
Referrer-Policy
Allows you to set the referrer-policy header. For more on this header see
https://scotthelme.co.uk/a-new-security-header-referrer-policy.

This header determines what other sites see when you go to them from a link on your site.
This option defaults to strict-origin-when-cross-origin 
Suggest Basic Authentication for Logged in Pages
When a page or WebService Method is set as requiring a login, and the user has not logged in, then an error 401 is sent to the user. If this option is on then a header is included that informs the client (browser) that Basic authentication is supported. The user can then supply a login and password, which is submitted with a re-request for the URL.

If this option is on then you need to add support for Basic Authentication to your WebHandler procedure.
Suggest Digest Authentication for Logged in Pages
See setting above. This is the same, but suggests Digest instead of Basic authentication. Digest authentication is preferred on non-TLS sites, Basic authentication is preferred on TLS sites.
All External resources must be HTTPS
There are occasions where external resources are used in an application. These could be things like Google Fonts, YouTube videos and so on. Usually these external resources will use HTTP if your site is HTTP, or HTTPS if your site is HTTPS.

There are cases though where your site is serving non-TLS behind a load balancer, and the load balancer is serving the site to the world as TLS. So although the site is serving HTTP, the client experiences the site as HTTPS. In this situation all external resources need to be served with links to HTTPS resources.

If this switch is on then all external resources are served as if your site is HTTPS and not HTTP.
 
Use Number for Session Id
NetTalk 6 introduced the notion of using a random string for the Session ID rather than a number. If you need to use a number then tick this option on. The strings offer more bits of security so it's a good idea to migrate to using strings as soon as you can.

Performance Tab

Items on this tab are no longer check boxes, but rather expressions. This allows them to be set at runtime, typically using an INI or XML file for the settings.
Combine common files
JavaScript and CSS files are simple text files, and can be combined (into all.js and all.css respectively). This improves performance of the site a lot, and can make initial load times much faster. However if this is on then you need to re-run GZIPALL.BAT after editing any of the source JS or CSS files. Thus is it usually off while developing the CSS or JS, and on for the rest of the time.
Serve pre-compressed files
Allows the server to search and serve xxx.yyy.gz when asked for the file xxx.yyy. If the .gz file exists then it will be sent to the client. This saves time compressing the file, but still delivers the file compressed to those browsers that can accept compressed files.
Compress static files
Allows the server to compress, on the fly, static files which do not have the <!-- NetWebServer --> header. Files with the extensions SAF, ZIP, GZ, RAR, 7Z, JPG and PNG are not compressed (as these file types are already compressed).
Compress dynamic data
Most of the data travelling between the server and the browser is generated on the fly by the various procedures in your app. Tick this option on to allow this data to be compressed. This is a good idea for most situations because the bandwidth ("pipe size") between the server and client is usually the limiting factor. Of course compressing on the server, and decompressing on the client takes a bit of effort at both ends, but in almost all cases will be quicker than sending the data uncompressed.
Auto-check cached files
One small problem with .JS and .CSS files being cached in the browser is that they are not updated automatically when you update your server and web folder. The user typically will see an error message telling them to press Ctrl-F5. If this option is on, then the browser will test the validity of a cached file (.JS or .CSS) before using it. If the file is the same as the one in the cache then the server sends a small packet (305 Not Modified). Obviously this test can slow down the page a bit, but the balance is greater automatic compatibility with your changed files.
Front Loaded
When using Popup browses and forms a small stub is included on the host page which is populated later when the user makes use of that popup. This optimizes the load time for the initial page as the page itself is smaller (and requires less work to generate.)

Front-Loading takes the opposite approach. It generates as much as possible into the popup when the popup itself is first created on the container page. This slows down the initial load, but considerably speeds up performance later on as the user navigates around the page.

If the user will do a minimal amount of interacting with the app at any one time, then this option should be off. However if the user will interact with the app a lot then turning it on can improve their performance.
Allow Keep-Alive
When a user is interacting with your site they will often need to make several connections to the server. Usually once their request is complete the connection between the client and the server will be closed. This is the best option for sites which are getting high volumes of traffic from many (several thousand) different users at the same time.

If this option is on then the connection is kept open for a small period of time after the request is complete. If the user makes another request inside this time window then the same connection can be reused. This can have an impact on performance, especially for SSL sites where the connection can take "a long time" (relatively speaking) to set up. 
Enable File Cache
If this is on then the caching of small static files is turned on. The following two features control the size of file that will be cached, and the overall size of the cache. This can speed up serving as loading a file from the disk takes time, so if a file is requested a lot then this can add up. For applications which have a small number of static files (like .js, .cc and some images) this is a useful performance booster.
Cache Files Less Than
This setting is in bytes. Files smaller than this will be cached, files larger than this will be read from the disk and served as needed.
Max Cache Size
This setting is in Bytes. It determines the maximum amount of Ram that will be used by the cache. When the cache is full then "old cache" is automatically removed. A file in the cache becomes old if it has not been requested for one hour. If the cache is still too large then the cache is cleared and a new cache is started.
No JavaScript Check
If this is off then the default version check between the NetTalk version used to generate the app, and the Version number in the netweb.js/all.js file is done.
No Screensize Check
If this is off then the screen-size of the client device is not sent to the server with each full page refresh.
Multi-Tab support
If you tick this option on then the application will behave better if the user opens multiple tabs in their browser. For a full discussion on multi-tab support, and what it means see here.
Pool Procedure
Select the name of your WebHandlerPoolThread procedure here. For more information on pooled threads see Thread Pools.
Maximum Pool Threads
This is the maximum number of pool threads that will be created. (This can be less than the maximum number of threads allowed, as set on the Advanced tab.)
Save server state between runs
This option requires the xFiles global extension in the application. If on the "state" of the server (ie all the internal queues) is saved to a file (ServerState.Xml) when the program closes, and restored from that file when the server starts. This makes updating the EXE easier as the session information is not lost.

Advanced Tab

Session Timeout
The server is a single EXE handling multiple simultaneous users. Each user is thus allocated a unique Session ID so that data that belongs to that user can be stored with that user. Because users can leave without notice (by just closing their browser) a session timeout occurs after a period of inactivity. The length of this period is 15 minutes by default, but you can set it to anything you like. Note that each session consumes a small amount of resources (RAM) so it's not ideal to have an unsuitable large number of Sessions still active after they have been abandoned.
Charset
The HTML Charset to use for the server. The default is 'utf-8' which is the most flexible, and most compatible charset to use.
Store Data As
Clarion does not support utf-8 as a native type, so strings stored in utf-8 form cannot be displayed on normal Clarion screens or reports. Thus in most cases you will want to store the data set as a subset of utf-8 ,using a Windows code page. Select the one from the drop-down that most fits the language of your data.
Translate - Locate
A local translation of the word "Locate" as used by the locator.
Translate - Locate (Position)
See above.
Translate - Locate (Begins With)
See above.
Translate - Locate (Contains)
See above.
Max Threads
Allows you to set the maximum number of threads that the server will allow. If all the threads are busy, and more requests arrive, then a HTTP Error 500 (Server Busy) is sent to the browser.

WebHandler Procedure Template

The WebHandler procedure contains a NetTalk Simple Object Extension as well as a number of properties.

NetSimple Object Extension

NetSimple Object Extension

This Object Name
The name of the WebHandler object. Defaults to p_web (and its recommended you leave this name as-is.)
Base Class
The name of the WebHandler class - defaults to NetWebServerWorker.

Procedure Settings

General Tab

Set Site Mode To
Allows you to force the site into Desktop or Mobile mode. This is useful for testing.

Login Rqd Tab

Procedure List
A list of procedures in the application which the user must be logged in to access. Be careful not to make the LoginForm procedure one of these.

NetWebPage Procedure Template

General Tab

Page Name
The procedure name is sufficient to call the procedure in a URL. However some situations require you to call a procedure with an extension, for example index.htm, entering a page name here (without quotes) allows you to create a pseudonym for the page which will work in the URL as well.
Page Title
This is the title that appears on the caption bar of the browser, and on the tab header of the browser when the page is open.
Page Type
The page type determines how the browser displays the page.
Include Std Header
If this is on then the Generic Header Tag is added to the top of the page.
Include Std Footer
If this is on then the Generic Footer Tag is added to the top of the page.
Add xml Version
If the page type is XML, then you can choose to include or exclude the XML version line at the top of the page.
Filename
If the page is a PDF or FILE type then you can set the file name here.
Send HTTP Header
If the page is of type OTHER then you can choose to include, or exclude, an HTTP header in the reply.
Content Type
If the page is of type OTHER then you can enter the content type here.
Browser can cache file.
In most cases files served by a NetWebPage cannot be cached, however if the file you are sending can be cached then tick this option on.
Send Stage to DebugView
If on then a message will be sent to Debugview at the start, and end of this procedure. This can make it easier to understand when the procedure is being called.

Scripts Tab

Suppress Standard Scripts
If the page is HTML then, by default the standard script files will be included in the HEAD section. If you wish to suppress these scripts then tick this option on.
Script File
You can add additional (or replacement) JS files to the page in this list.

CSS Class Tab

Suppress Standard Files
If the page is HTML then, by default the standard style files will be included in the HEAD section. If you wish to suppress these styles then tick this option on.
Html
Defaults to ''
Body
Defaults to 'PageBody'
Body Div
Defaults to 'PageBodyDiv'
Files
A list of CSS files that can be added to (or used in replacement of) the standard CSS files for this page.
Browser
You can limit the CSS files to a specific browser, or make it available in all browsers.

xHTML Tab

Embed
Choose between Routine and Procedure. If this is a routine, then the appropriate code will be added to this procedure. However if you have another procedure which will generate the source, then you can use that too.
Procedure Name
If you choose procedure, then the Procedure to call goes here.
Parameters
The procedure can take any number of parameters.
Return Value
The procedure should return a string containing the HTML.
Routine Name
If you select routine then enter a unique routine name here. Anything will do, in the examples they are often named one, two and so on.
Condition
This xHTML will only be included on the page if the condition is met.
Include in Desktop
This xHTML will only be included on the page if the page is in Desktop mode.
Include in Mobile
This xHTML will only be included on the page if the page is in Mobile mode.
Utf-8 encoded
The xHTML is already encoded in utf-8 format. Usually this is off for a routine, however if generated from another source it might need to be on.
Location
The location on the page where this xHTML will go. This is similar in concept to the Embed Point in Clarion.
xHTML
The raw xHTML to include at this point. Note that this code will be converted to a Clarion string, doubling < ' and { characters as required. This this entry cannot contain code. It can however contain tags, of the <!-- Net:something --> form.

Security Tab

User must be logged in
If this is on and the user is not logged in then this page will not be served.
Runtime Access controlled by Secwin
If you have the Secwin product, and you want Secwin to control who has access to this procedure, and the fields on this procedure, then tick this on. The Secwin Global extension will need to be added to the application to make use of this setting.
Use Control Group
Secwin setting.
Secwin Friendly Name
The name of the procedure, but perhaps in a more friendly format as it will be displayed to the end user.
Secwin key icon to call access window on shown if called from
User must be >= Level
Levels are distinct from Login and Secwin. When a user logs in you can set their Level to anything you like. Then on each procedure you can define the level a user must be to
User must be <= Level
See item above.
Only Serve If
A condition that must evaluate to true or the procedure will not be served to the browser.
Only serve if SSL
The connection must be secure, or the procedure will not be served to the user.

Advanced Tab

No Body Tag
By default the page will be generated with a body tag wrapping the content. If you wish to suppress this tag then tick this option on.
HTML Manifest URL
An experimental setting that allows a Manifest="someurl" to be included in the <html> tag for the page.
see http://www.andrejkoelewijn.com/blog/2012/11/21/refreshing-ios-home-screen-web-applications/ and
http://www.html5rocks.com/en/tutorials/appcache/beginner/

NetWebBrowse Procedure Template

General Tab

Heading
This will appear above the browse.
Allow xHTML in Heading
If this is on the you are allowed to embed valid xHTML in the header. If you tick this on then you will need to properly encode
Allow Unsafe xHTML in Heading
Tick this on if you are including any JavaScript in your header. If you tick this on you should be very careful that no user-created content appears in the header.
Subheading
This appears under the heading.
Allow xHTML in Subheading
See the setting for Heading above.
Allow Unsafe xHTML in Subheading
See the setting for Heading above.
Message if Empty
If the browse contains no records then this message will be displayed in place of the browse.
Hide Browse if Empty
If the browse contains no records, and this option is on, then the browse will be hidden.
IF
A conditional applied to the previous option. If true, and the browse is empty, then the browse is hidden.
Page Name
This allows you to specify an alternate name which can be used in a URL to get to this page.
Page Title
This is the title that appears in the browser caption bar, or on the browser tab when this page is open. Note that this does not apply if the Content Body option is being used, or if the browse is opened as a popup.
Unique Key
Enter the unique key used to identify rows in the browse here. This is usually the Primary key of the table.

Fields

You can enter one or more browse columns here. Each column has it's own settings.
General Tab (String Field)
Type
Select the type of the field in the column here. The default is String. Use the Date type for dates, the Button type to add a standard, or non-standard button, or the procedure type to embed a procedure in the browse column.
Field
Select the field to display. This can be a table field, or a local variable.
Use Equate
Each field needs a unique field equate name. Usually this is the same as the Field, but it doesn't have to be, and therefore allows the same field to be included twice in the browse.
Description
This description is only used on the column list in the template settings. It is provided for your convenience.
Display
Can contain an expression of the text to display in the column. If omitted then the field itself is used. However you are not limited to the field, you can, for example, type any expression in here.
Picture
Set the Picture for the field here.
Include in Export
If this option is on, and the user used the Export button, then this column will be included in the export. If this option is off then this column is removed from the export. The default value for this option is on.
Header
Set the text for the header of the column here.
Allow xHTML in Header
Tick this on to allow the column header to contain HTML. If you do tick this on then you are responsible to ensure that the HTML is indeed valid xHTML - ie it is valid XML as well as valid HTML. This means encoding &, < and > signs and making sure that each opening tag has a closing tag.
Allow Unsafe xHTML in Header
Ticking this option on is not recommended, especially if the HTML is read from a database or is not a fixed value. Ticking this on allows you to add JavaScript to the column heading.
Header Tooltip
Enter the tooltip for the header here.
Header spans multiple columns
Tick this on if you want the header to span multiple columns. An HTML table is split into columns and rows, but a single bit of data can span across multiple columns if you want it to. For example you might have a heading called "Update" which spans across the Change and Delete button columns.
Span Columns
Enter the number of columns to span here. This is particularly useful when you have multiple "rows" of data for each record in your table. For example the top row might contain the product name and price, while the second row contains a description which spans both of those columns. For an example of this sort of effect see MultiRow (50).
Column Condition
Enter a condition here. This condition determines if the column will be included or not. Typically the result of this condition should not change during the creation of the browse.
Include in Mobile
Tick this on to allow this column to be visible when the user is in Mobile mode.
Allow xHTML in column
Tick this on to allow the column to contain HTML. If you do tick this on then you are responsible to ensure that the HTML is indeed valid xHTML - ie it is valid XML as well as valid HTML. This means encoding &, < and > signs and making sure that each opening tag has a closing tag.
Allow Unsafe xHTML in column
Ticking this option on is not recommended, especially if the HTML is read from a database or is not a fixed value. Ticking this on allows JavaScript to be added to the column value. 
Field Tooltip
Set the tooltip for each cell here. this could be, for example, another field in the table.
Last On Line
Tick this on if this column is the last column on the row. Ticking this on for a column allows you to make multi-row browses.
Data spans multiple columns
Tick this on if you want the data to span multiple columns. This is especially useful for multi-row browses where the second or subsequent rows span possibly all the columns.
Span Columns
Enter the number of the columns to span. Usually the top row contains the most columns, and the subsequent rows span across some proportion of those. If columns are suppressed for one or other reason then this value may not be fixed. The loc:columns variable is set (at the end of the top row) to be the number of columns in the top row. Since this field is an expression, the variable can be useful in figuring out how many columns to span.
Data spans multiple rows
Tick this on if this column should span multiple rows. This is useful on multi-row browses. It allows one column to cover all the rows for this record. For example, an image might be visible at the beginning of the row. Other items on the top row might be the product name and price, with a description below that. The description might span two columns, but the image can span two rows. See the MultiRow (50) example for an example of this effect.
Span Rows
Enter the number of rows here.
Anchor
Enter the contents of the anchor here. Note that anchors are case sensitive and can only contain alpha-numeric characters. Anchors are scrubbed to remove any illegal characters for you. Click for more information on Anchors.
General Tab (Procedure Field)
Most of the settings on this tab as the same as for a String field. Fields specific to this type are listed below.
Procedure
The name of the procedure to embed into the browse at this point.
General Tab (Date Field)
Most of the settings on this tab as the same as for a String field. Fields specific to this type are listed below.
Date Lookup Picture
If the date is stored in a String field, as a formatted date, then the Picture field should either be blank, or a String picture (@s) because additional formatting of the field itself is not required. However the Date Lookup Button needs to know the picture to use when doing lookups. If you have this situation then enter the picture of the string (as stored in the database) here.
General Tab (Button Field)
General Tab
Action
Select the Action for the button. If the button is not a common browse button, which you want to add functionality to yourself, then select Other from the list.
Use Equate
Enter a unique use equate for the button here. Every button in the row must have a unique use equate value.
Description
This description is only used on the column list in the template settings. It is provided for your convenience.
Properties Tab (Standard Button)
Text
The text to appear on the button.
Image
The relative path to the image to display on the button. This path should be relative to the web folder. For example 'images/mail.png'.
Image Width
Optionally set the specific width of the image here. If omitted the image will be used as-is by the browser. Since this is a button a defined image width and height is recommended.
Image Height
Optionally set the specific height of the image here.
Image Alt
If the image cannot be displayed then the Alt text will be displayed.
CSS Class
Enter a custom CSS class for the button here. A leading space in the name means the class will be added to the other classes assigned to the button at the global level. For example ' Red'
Tooltip
Enter the tooltip for the button here.
Properties Tab (Other Button)
Type
Enter the button type here. In almost all cases the correct choice is Button. Only use Submit if you are on a browse, embedded on a Form, and you want to trigger a Browser Submit.
Desktop Text
The text to display on the button when in Desktop mode.
Mobile Text
the text to display on the button when in Mobile mode.
Name
The name of the button (no spaces.) For example 'other_btn'.
CSS Class
Enter a custom CSS class for the button here. A leading space in the name means the class will be added to the other classes assigned to the button at the global level. For example ' Red'.
Tooltip
Enter the tooltip for the button here.
Disabled IF
Enter an expression which causes the button to appear disabled.
Image
See Standard button above.
Image Width
See Standard button above.
Image Height
See Standard button above.
Image Alt
See Standard button above.
Image CSS
Use jQuery Styled Button
Tick this on to make the button styled.
jQuery Icon
The name of a jQuery icon to use on the button instead of an image.
JavaScript Mobile Icon
the name of the jQuery icon to use instead of an image, when the browser is in Mobile mode.
OnClick Tab (Other Button)
URL
The URL to go to when the button is clicked.
Procedure
The Procedure to go to when the button is clicked.
Parameters
The parameters to be passed to the URL or procedure. This should be in the form of a & separated list. For example 'sort=4&name=bruce&date=today'.
Open as Popup (not Submit buttons)
Open the procedure as a Popup.
Title
The title to display on the Popup when it is opened.
Target Frame
The Frame to open the link into.
URL contains Email Address
Tick this on if the URL is an email address.
Include Row ID field
Tick this on to include the Browse Row ID in the parameters. This means that the called page, or procedure, will be able to use the Session Values of the Key Fields for this browse to identify the row the button was on. Only the ID fields are in the session queue, if the procedure wants to use other fields in the row, then it must reload the record from the database.
Include Action
Tick this on to include an Action in the call. This is especially useful if you are calling a Form procedure.
Action
Select the Action here.
Onclick (JavaScript)
Enter some specific JavaScript code here, which will execute when the button is pressed.
Column Properties Tab
See the settings for the General Tab (String Field) above.
Client-Side Tab (Other Button)
Send Button Click to Server
If this is on then an event is sent to the server when the user clicks on the button.
Server Code
This button takes you to the embed point which will execute when the button is pressed. Remember this code is on the Server, not the browser.
Refresh browse cell DATA after server code runs
Tick this on to refresh just the browse cell (which contains the button) when the button is pressed.
Refresh browse row DATA after server code runs
Tick this on to refresh the whole browse row when the button is pressed.
Refresh whole browse after server code runs
Tick this on to refresh all the browse contents, including the footer, when the button is pressed.
Reset other columns in the same row
Add specific columns to the list here. Only these columns will be refreshed when the button is clicked.
CSS Tab
Header Div
The CSS for the browse DIV.
Header Cell
the CSS for the header Cell goes here
Header Content
Enter the CSS for the header content goes here.
Column
Select one of the built-in CSS classes for the column, or select custom to use a different class.
Cell
The CSS here will be applied to the browse cell.
Contents
The CSS here will be applied to the contents of the browse cell, but not the cell itself.
Column Width (css)
Use this for setting the column width, via a CSS value (for example 10px, 2em and so on). This setting will be used when the browse is in TABLE mode and each column can have a specific CSS width set.
Column Width (rel)
Use this when the browse is in DIV mode. This sets the relative column width, for one column, compared to the width of all the other columns. The default for all columns is 1 (the same). If a column has a 2 here it will be set to twice as wide as the other columns. In toher words this allows the column width to be set RELATIVE to other columns.
Additional CSS Properties
You can add additional CSS properties to the browse here - typically this is used if a setting for the cell is dynamic and stored in the database.
Apply to whole cell
Tick this on to apply the property at the Cell level.
Apply to contents
Tick this on to apply the property at the Content level.
CSS Property
Select one of the common properties here. Or choose other if you want to set a property that's not in the list.
Property
If other, then set the name of the property here.
Value
Set the value of the property here.
Edit Tab
Allow Edit in Place
Tick this on to allow Edit In Place on this column.
Type
Set the entry type here.
EIP Condition
Edit in Place will only be active if this expression evaluates to true.
On Fail show as Read-Only
This setting determines how the browse behaves if the condition for EIP fails. By default this is on, and the editable field is visible to the user, but it is in "read-only" mode. So it's visually consistent with the other fields, but cannot be edited. If this setting is off then the field changes from an EIP type to a normal browse String (or Date) type.
Tooltip
Set the Tooltip for the entry field here.
CSS Class
Set the CSS class for the tooltip here.
Settings
See the Form documentation for more details on each form field type setting.
Sort Tab
No sorting on this column
Tick this on if the user is not allowed to sort the browse by this column.
This column is the default sort order
Tick this on if this column should be the default sort order for the browse.
Default to Descending (-) order
Tick this on if the default order for the browse should be descending.
Case Sensitive Sorting
Tick this on if the sorting should be case sensitive.
Custom Sort Order (+)
Enter a comma separated list here which will determine the fields used for the sort when the user is sorting on this column. Do not use quotes. For example if this was a Date column, by sorting on this column should be by Date and Time, then this would be Fil:date,Fil:Time
Custom Sort Order (-)
The descending for of the above sort order. Do not use quotes. For the example this would be -Fil:date, -Fil:Time
Locator Type
Allows you to override the locator type for a specific column.
Case Sensitive Locating
Tick this on if the locator on this column should be case sensitive.
Case
Select the case for the locator.
Locate on Field(s)
Enter one or more fields here, as a comma separated list, which will be used in the locator. For example say the Locator type is a Search locator, and you enter multiple fields here, then the Search will span across all those fields. For example fil:firstname, fil:lastname would span both the names when locating. Do not use Quotes on this field.
On Click Tab
Link to Form (change mode)
If this is ticked on the the contents of the cell will be a hyperlink. The hyperlink will take the user to the form as-if the user had clicked on the change button.
Field contains URL
Tick this on if the contents of the field are a URL. For example a Company table, with a URL field. Then if the user clicks on this field they go to the page mentioned in the URL.
Field contains Email Address
Tick this on if the field contains an Email address.
URL
Enter an expression which resolves to a URL to use.
Target Frame
If the page should open in another frame then enter the frame name here. To open in another tab set this to '_blank'
CSS Class
Set a class to apply to the link here.
Vertically Contract / Expand Row
Tick this on if this is a Multi-Row browse, and you want the user to contract, or expand the browse row by ticking on this icon.
Contract jQuery icon
The name of the jQuery icon to view when the user should contract the row. The default is 'circle-arrow-n'.
Expand jQuery icon
The name of the jQuery icon to view when the user should expand the row. The default is 'circle-arrow-s'.
Open Contracted IF
If this expression is true then the row will open in Contracted mode.
JavaScript
Enter some JavaScript here that will execute when the user clicks on the field.
Image Tab
Display Image
If the browse column contains an image then put the image name here. Use quotes for a fixed value, or an expression for a calculated value. The name of the image, and full path, relative to the web folder should be used. so if you have an image, fred.png, in the \web\images folder then you would enter 'images/fred.png' here. Hint: Although you can use a \ instead of a /, it's more correct to use a /.
Image Width
If you want to set the width of the image to a specific value, then you can enter that here. If it's not supplied then browsers will typically display the image at whatever width it has.
Image Height
If you supply a width, but not a height, then most browsers will preserve the aspect ration of the original image, wile applying the width you set (if any width was set.)
Image Alt
If the browser cannot display the image, or if the user is suppressing the image, then the Alt text will be displayed. alt text is also useful for screen-readers and should be included whenever the image is more than purely cosmetic.
Image CSS
enter the name of a CSS class to apply to the image here.
Display jQuery Icon
You can enter the name of a jQuery Icon here.
Conditional Tab
Conditional settings override the other settings based on some condition. This allows you to display different items in the browse row, depending on the the value of data in the table.
Totaling Tab
Total this column
If you want this column to be totaled, then tick this option on.
Total Type
Select from one of the built-in total types, or select Custom to enter your own totaling expression.
Total
If you selected Custom above then enter your totaling expression here. This expression will be called once, when the browse has completed generation.
Column CSS Class
Select one of the built-in CSS classes for the total, or select Custom to enter your own CSS class name.
Custom CSS Class
If you selected Custom, then enter the CSS name here.
Total Span (columns)
This total can span multiple columns of the browse itself. If you want it to span more than one column then enter the number of columns here.
Condition
If the condition is false, then the column will not be totaled.
Security Tab
See Security Tab
Send Filter, Order to Debugview
If this is on, and the Debugview.Exe programming is running, then the contents of the filter will appear in Debugview. This can make it a lot easier to see where your filter may contain an error.
Send Stage to Debugview
The browse procedure is called multiple times during the life-cycle of a browse in the browser. If you tick this option on then an entry will appear whenever the browse procedure is called, and this can make understanding the generated code easier to follow.

Filters Tab

Filter
Enter the filter expression for the browse here. Note that the filter is constructed slightly differently to a program based on the ABC or Legacy templates. You need to use quotes around the whole string, and quotes around any string value in the filter. In addition the contents of a session value can be included, rather than the name of the session value itself. Here are some examples;

'fil:date > ' & today()
'fil:date > ' & p_web.GetSessionValue('Fromdate') & ' AND fil:date <= ' & p_web.GetSessionValue('Todate')
'cus:name >= ''a'''
'cus:name >= ''' & p_web.GetSessionValue('startAt') & ''''
Range Limit Field
Select a field in the key to range limit the result set.
Range Limit Type
Select the range type.
Range Limit Value
Low Limit Value
High Limit Value
Case Sensitive
This option is visible if the range is set to Single Value or Range of Values. This allows you to set if the range should be case sensitive or not. The default value of this option is default, which means the template will decide, based on the keys for the table. If the key on this field is case sensitive, then the range will be set to be case sensitive. If not, then not. You can override the templates choice by explitily setting this option to Yes or No.
Related Table

Conditional Filters

Because browses are designed to be strongly reused in NetTalk, it's possible to create different filters for different conditions. The list of possibilities is evaluated in order from top to bottom, and the first one that evaluates to true is used. If none are true then the default filter is applied.
Condition
Enter the condition for this filter here.
Child of Procedure
If you are limiting the filter based on the place where the browse is used, then enter the parent procedure here.

View Fields Tab

View Fields are fields which are added to the VIEW structure, but which do not appear as a browse column. Any field you use in an expression, or in hand-code, should be added in here.
Field
Enter the name of the field here.
Description
Enter a description of the field here.

Form Tab

One of the key features of a browse, is the ability to call a form. This allows the user to alter the data in the browse, by either inserting, editing, or deleting an existing record.
Form Control Procedure
The name of the procedure to use as the form This procedure must be based on the NetWebForm template, and must use the same Unique key as the browse.
Open Form as Popup
If this is off then the form will open as a new page. If this is on, then it opens as a popup over the browse (and the browse remains visible.) Popups generally require less to be sent to the browser, and so are faster.

Advanced

These advanced options are only used in a small number of cases, and usually only by experienced developers. They are not recommended for normal use, or if you are a beginner.
Use Manual URL
If the form is a static page, then tick this option on.
Form URL
Enter the URL of the form here.
Form Target
Optionally enter the frame name of the form here.

Show Buttons

There are a number of standard buttons, which link to the form, that you can add to a browse. These buttons appear either above, or underneath the browse (as set on the options tab). In addition to these buttons you can also add "in row" buttons as a browse column.
Include ... Button
Tick this on to include this button. For example, if you want an Insert button under the browse, but not Change or Delete buttons (perhaps because you have those two in-row) then use this checkbox to determine which buttons you want.
Mobile: Include in Header if Possible (Insert Button)
If the browse is called as a stand-alone page, and this option is on, then the Add button will appear inside the page header. This can remove the need for browse buttons completely (if you have in-row change or delete buttons) thus saving a lot of space. If the browse is embedded in another procedure, like a form, then the button appears as normal, even if this option is on.
Mobile: Show button even if in Header (Insert Button)
If the above option is on, and the Insert button is visible in the header, but you want the regular Insert button included as well, then tick this option on.
Refresh whole browse after change(Change Button)
When a browse is called in popup mode, then by default only the highlighted row is updated when the form closes. If you wish to refresh the whole browse though, then tick this option on.
DoubleClick Row to Form(Change Button)
If this is on then the user will be able to double-click on a browse row, and go directly to the form for that row.
Include View button even if Change button exists (View Button)
Usually the program will display either the Change button, or the View button, depending on the access rights of the user. If you wish the View button to appear, even if the Change button is visible, then tick this option on.
Prompt for Confirmation (Delete Button)
When deleting, if this option is on, then the user will need to click on a confirmation message before the record will be deleted.
Title (Delete Button)
The text on the caption of the popup confirmation dialog. Defaults to 'Confirm'.
Confirmation Question (Delete Button)
The question asked of the user goes here.
Yes (Delete Button)
The text on the "yes" button - defaults to 'Delete'.
No (Delete Button)
The text on the "no" button - defaults to 'No'.
Select button before Update button (Select Button)
By default the Select button is located to the right of the Update button when doing a select. Tick this option on to reverse that order.
Select / Cancel URL (Cancel Button)
By default these buttons close the browse and return the user to the previous page. If you wish to override that behavior then you can enter a URL for them here.
Close URL (Close Button)
By default this button closes the browse and returns the user to the previous page. If you wish to override that behavior then you can enter a URL for the Close button here.
Condition
The button will only be included (on the row and/or below the browse) is this condition is true.
Procedure for ...
You are able to specify the form procedure to use, on a button-by-button basis. This allows you to, for example, use a different procedure for Inserts and Changes.
Row Overrides - Condition
You are able to use a different Form depending on the Row which is selected by the user. Enter the condition here.
Row Overrides - Procedure
Enter the procedure here to use, depending on the condition above. For example a CLOSED invoice may have a different form to an OPEN invoice.
Secwin Controlled Buttons
If you are using Secwin in the application, then you can select the buttons to be controlled by Secwin here.
Nav Button Position
This allows you to set the position of the navigations buttons (First, Previous, Next and Last). Not that you can duplicate the buttons both above and below the browse if you prefer. This can be useful for browses which are very large. Also, navigation buttons will only appear for page-loaded browses, file-loaded browses do not have navigation buttons.
Update Button Position
This allows you to set the position of the update buttons (Insert, Copy, Change, View and Delete.)
Selection Method
The template supports two selection methods - the default (and highly recommended) option is Highlight. Radio selection is no longer used and may be deprecated in future.
Call Form only if Logged in
A security option that suppresses the update buttons (and the form functionality) if the user is not logged in.
Call form only if Level <=
The same as the above, but tests the users' current level.
Call form only if Level >=
The same as the above, but tests the users' current level.

Sort Tab

Sorting
You can choose between making the browse unsortable (ie having a fixed sort order at compile time) or allowing the user to sort the browse based on the columns. The sorting is done on the server, and the browse data refreshed when the user changes the sort order.

Default Sort Order

While you can set the default sort order here, it is better to set the default sort order based on one of the columns. You can do that on the Sort tab for the specific browse column. If you want the initial sort order to be unrelated to the columns, or if there is no column sorting, then set the default sort order here.
Field
The name of the field to sort on.
Case Sensitive, Or Number
Tick this on if this is a numeric field, or a string field that should be sorted in a case-sensitive way.
Direction
Set the direction of the sort here.
Default Locator Field
the locator field is usually linked to the column which is being used for sorting. However if you are using a default sort order, unrelated to a column, then you can also specify the locator column to be used for that order.
Field Description
the field description appears as part of the locator prompt.

Locators Tab

Placeholder
Placeholders are text that appear inside the field itself, in a light color, giving the user some idea of what to type in the field. A common placeholder here is 'search', especially if the locator prompt is hidden.
Locator Position
Determines the position of the locator(s).
Locator Type
Four different locator types are supported; Note that it is possible for the string locators to span multiple columns. This is set at the browse column level, on the Sort tab.
Table Blank until Locator entered
By default the first page of the table will be displayed when the browse opens. For some cases this is undesirable, and the user is required to enter a search term before any data should be displayed. For example, the Google home page does not show you the first 10 records in the databases, they wait for the user to enter a search term first.
Message Waiting For
This message is displayed to prompt the user to enter a search term, if the table is blank.
Include Search Button
The locator is activated when the user tabs-off the field, or selects another field on the page. However this can be confusing to users who want to see a Search button to begin the search. If you want a search button then tick this option on.
Include Clear Button
Users can clear a locator by just removing all text in the locator field, and pressing Tab, or clicking on the search button. This can be confusing to users though, so you can add a Clear button to do this for them.
Field Size
The default locator size is 20 characters. You can make the field bigger or smaller by setting it here. Note that this does not restrict the length of the locator text - just the size of the entry field on the page.
Hide Locator Prompt
You can suppress the locator prompt completely by ticking this option on.
Immediate Locating
If this option is on then every keystroke is sent to the server, as it is typed into the locator. In this way a highly dynamic locator (like a Google Search) can be created.
Show Position Locator even if all records displayed
If this is on, and the locator type is Position, then the locator will be visible, even if all the records are currently displayed. If this is off then the positional locator is only shown when additional pages of data are available. Locator types other than the position locator are always visible and are not affected by this setting.
Default focus to locator
If this is on then when a browse is visible the focus will be shifted to the locator control. This is idea if the locator is above the browse. Turn this off if you do not want the focus to automatically go to the locator.

Options Tab

Greenbar
Tick this on to apply a green-barring effect to the browse. Green-barring is the effect where alternate rows in the table are colored slightly (or dramatically) differently to make the browse a bit easier to read. It is especially handy on multi-row browses.
MouseOver
If this option is on then the row currently under the browse will be highlighted.
Highlight Selected
If this option is on then the row will change to the highlight color when the user clicks on it.
Show Column Headings
Tick this option off to suppress the column headings at the top of the browse.
Show Column Prompts
When a browse is in DIV mode, and on a small screen (like a phone) then the browse no longer displays in a horizontal fashion, but in a vertical fashion. By default a "prompt" for each field will be generated. If you want all these prompts to be suppressed then you can use this option to do that. You can also leave this on, but suppress the prompts at the column level.
Loading Method
Both file loaded, and page loaded are supported.
Records Per Page
If page loaded, then specify the number of lines per page here.
Include Blank Rows
Not often used on the web, this allows the page to be a fixed size (say 10 rows) even if there is less than 10 records of data.
Allow Unfilled
If this option is on then the page is not back-filled if the user locates to a position near the end of the table.
Resizable
Tick this option on to allow the browse to be resizable. This option is currently a work-in-progress.
Rubberband
If this option is on then the user will be able to select a group of cells using the mouse, and a buttondown/move/buttonup sequence. When this occurs a selectRange event will occur and the SelectRange routine will be called. Using this routine you can perform an action for each cell that was selected.
Table Width (pixels)
This option allows you to specify the width of the table in pixels. However it is considered better to do this using CSS, so you should use that option if at all possible.
Break after "Last" Button
By default the navigation buttons, and update buttons, are placed in a long horizontal row above or below the browse. This is ideal for wide browses but can be strange on narrow ones. If you tick this option on then the update buttons will appear below the navigation buttons.
Window Width
This is an important option if the browse will be called in lookup mode, or if it will appear on a popup. This option allows you to set the width of the popup, so you can tailor it to the width of the browse. This setting can use any unit supported by css. For example;
'95%'
'400px'
'10em'

Window Offset Top
The amount from the top of the window where the popup will open. This value defaults to pixels if no unit is supplied, but any unit legal in css can be entered here. For example '5%'
Open Animation
The animation to use when this browse opens. For more on Animations see here. If this is blank then the default (global) animation setting will be used. If you wish to suppress the global animation, but not include any animation here, then enter a blank string. For example ''
Close Animation
The animation to use when this browse closes. For more on Animations see here. If this is blank then the default (global) animation setting will be used. If you wish to suppress the global animation, but not include any animation here, then enter a blank string. For example ''
Browse Row Animate Speed
This sets the speed with which multi-row browses will expand, and contract, their rows. A setting of 0 is instant. the speed is set in thousandths of a second, so a setting of 500 means that it will take half a second for the row to expand or contract.
HTML Method
This allows you to override the default, as set in the WebServer procedure. It allows this browse to be set to be in TABLE or DIV mode. DIV mode uses different CSS settings to be more responsive when the browse is displayed on a small screen (like a phone.)
Body Flow
We typically expect browse rows to "flow" from top to bottom. This is known as Vertical flow. Each row is on a line, and each row is underneath the row above it. Horizontal flow changes this so that rows flow from the left to the right (wrapping where necessary). This is typically used for single-cell browses, or browses that are very short (horizontally speaking.) There are two horizontal options available, Horizontal-Full, and Horizontal-Left. With horizontal Left the rows will be tightly aligned to the left of the screen (think "left justified"). For Horizontal-Full they will be spaced out across the page (think "full justified").

xHTML Tab

See xHTML Tab

CSS Classes Tab

Override Global Settings
Procedure
Heading
Subheading
Table Div
Table
Header
Body
Row
Footer
Footer (empty)
Locator
Hyperlinks
Locator Button Set
Nav Button Set
Update Button Set
Select Button Set
Browse Empty
Parent Child Wrapper
This Browse Table Cell
Mouseover
Highlight
Greenbar One
Greenbar Two

Children Tab

Span Columns
When browses are used together in a parent-child relationship then a table is created into which each browse goes. This option, and the following one, allow you to set the number of columns that this particular browse will use.
Span Rows
When browses are used together in a parent-child relationship then a table is created into which each browse goes. This option, and the following one, allow you to set the number of rows that this particular browse will use. So, for example, it's possible for the parent browse, say on the Left to span across two rows, with one child on the right in the top row, and another child on the right in the second row. This is especially useful if the data in the parent browse takes a lot more vertical space than the data in the child browses on the right.

Children

Procedure
The name of the Browse or NetWebSource procedure that will be a child of this Browse. Form procedures cannot be the child of a browse.
Condition
A condition that must evaluate to true for the child to be displayed.
Suppress Child if this browse is blank
If the child should be invisible when this browse is empty then tick this option on.
Suppress Child if this browse called as lookup
If this option is on, and the browse is called in lookup mode, then this child will not be displayed.
Position of Child
Set the position of the child, relative to this browse.
Span Columns
Set the space the child should occupy, relative to this browse. See Span Columns and Span Rows above for more information on using this layout technique.
Span Rows
Set the space the child should occupy, relative to this browse. See Span Columns and Span Rows above for more information on using this layout technique.
CSS Table Cell
Set the CSS for the table cell containing the child browse.

Security Tab

See Security Tab

Advanced Tab

Page Header Tag
Specify an alternate NetWebSource procedure here which will be used in place of the global Header procedure.
Page Footer Tag
Specify an alternate NetWebSource procedure here which will be used in place of the global Footer procedure.
Multi-Row Records - Start New Row When
when this condition is met (and only when this condition is met) will a new browse row be created. If blank then each new data record creates a new browse row.
Multi-Row Records - When Row Starts
Enter HTML here which will be added to the beginning of every HTML row in the browse.
Session Variables
Timer
While timers on browses are not recommended, because if there are multiple users, the use of a timer can quickly overwhelm the system, you can turn on the timer here. Note that the time is in thousandths of a second (the HTML standard) not hundredths of a second (which is the Clarion standard). In other words for a timer to go off every 5 seconds enter 5000 here.
Refresh
If a timer is set then you can enter the refresh position in the browse here.
Ignore Key not being Unique
The key for the browse should contain a unique value, and is usually marked in the dictionary as being unique. If the key is not marked as unique in the dictionary then a warning will be generated whenever this browse generates. If you are happy that the key is unique, but is just not marked as unique, then ticking this option on will suppress the warning.
Packet Length
The default packet length in the browse procedure is 16K. In some unusual circumstances a bigger packet variable is required. Enter the size of the packet variable here (in bytes.)

NetWebForm Procedure Template

General Tab

Tab Style
The "style" of the tabs is usually set globally, but it can be overridden here if desired. For example a Wizard procedure would set this to Wizard, a Memory Form may set this to Plain and so on.
Form Source
Forms are either Table based (ie they will edit a record in one of the tables, or they are Memory based in which case no table will be altered. Memory Forms are a useful container for holding local session values, and other procedures.
Generate <FORM> Tag
If the form is a memory form, then you can tick this option on. If this option is on then the form cannot have a Save or Cancel button. However a form with this option on can be included inside other forms (and the fields from this form will be included in the Save when the parent form is Saved.)
Table
If the form is table based, then the name of the table to change is entered here.
Unique Key
This is the Unique Identifying Key for the table - usually the Primary Key. It must be the same key as is set on the browse, if the form is called by a browse.
On Save, When Inserting
Allows the form to remain open, just resetting itself between Inserts when the user is inserting multiple records. The user then needs to click on Cancel to close the form.
Heading
The heading that will appear at the top of the form.
Allow xHTML in Heading
If on, then valid xHTML code can be included in the header. It is the programmers responsibility to ensure this is valid xHTML and not just valid HTML.
Allow Unsafe xHTML in Heading
Allows the xHTML in the header to contain HTML which is considered to be unsafe. Unsafe HTML contains JavaScript code, or tags which can perform other interactions with the browser which may not be desirable. Do not allow any user-generated content to be used in places where Unsafe xHTML is allowed.
Subheading
The sub heading that will appear at the top of the form.
Allow xHTML in Subheading
Same as for Heading.
Allow Unsafe xHTML in Subheading
Same as for Heading.
URL on Save
After the form completes, this URL will be executed. This setting only applies if the form has been opened in Page mode. If opening in Popup mode this setting is ignored.
Target Frame
Determines the target frame for the URL mentioned above.
URL on Cancel
If the user clicks on the Cancel button on the form, then the user will proceed to this URL. This setting only applies if the form has been opened in Page mode. If opening in Popup mode this setting is ignored.
Target Frame
Determines the target frame for the URL mentioned above.
Page name (no quotes)
This name is an alias for the Procedure name, which can be used in URLS. It's provided purely as a convenience, and you can leave this setting blank if you wish. For example, if the procedure name is IndexPage, and the Page Name is set as 'index.htm' then a user can navigate to this page using either whatever.com\IndexPage or whatever.com\Index.htm
Page Title
This is the text which typically appears in the browser caption when this page is open. Only applies if this procedure is called as a page. If it is called as a popup then this setting is ignored. 
Send Stage to Debugview
Allows debug information to be sent to Debugview whenever the Form procedure is called. This can be useful in understanding when, and how, the procedure is called.

Fields Tab

Fields are grouped together into "Tabs".

Form Tabs

Tab Heading
This is the heading that appears on the Tab.
Tab Heading Icon
A jQuery UI Icon name (without the ui-icon- part) to display on the tab, to the left of the tab name. For example 'check'.
Tab Heading Image
An image file containing an image to display to the left of the tab name. For example '\images\whatever.png'
Tab Condition
If this condition is false then the tab is excluded from the form. Excluded tabs are not there - they cannot be hidden and unhidden.
Include in Mobile
If this is off then this tab is excluded when the user is using the app in Mobile mode. Tabs which are excluded are missing from the form itself, and therefore cannot be hidden or unhidden dynamically.
Tab Equate (no quotes)
A unique ID for the tab. This is a constant string so a variable or expression cannot be used. No quotes are required.
Tab Hide IF
An expression to determine if the tab is visible or not. A Use Equate must be set for this feature to work. Tabs which are hidden can be unhidden at runtime.
Tab Heading CSS
CSS to apply to the Tab heading.
Tab CSS
CSS to be applied to the tab.
Span Columns
If this is on then all the prompts, values and comments on this tab will be in a single column. If this is off then the tab is divided into (at least) 3 columns - one for the prompts, one for the values and a third for the comments. 
Fields
The form is made up of one or more fields. There are many different kinds of fields(like Strings, Numbers, Checkboxes and so on.) Many of the field types use common settings, however many field types have custom settings as well.
Field Tab - Common Settings (part 1)
These settings are common to almost all field types.
Type
The Type of the field.
Field
The local variable, global variable, or table field to use here. If the Type is set to PROCEDURE then this setting does not apply. For some field types, like Display or Map this setting is optional.
Use Equate (no quotes)
A unique ID for the field on the form. Most often it is the same as the field name, but it doesn't have to be, and therefore the same field can appear on the form multiple times (like perhaps on separate tabs.)
Prompt
The Text which goes to the left of the field on the form.
Include In
Determines if the field is included in the mobile version of the form or the desktop version, or both. 
Include Condition
If this condition is true, the field is included on the form. Note that fields that are not included cannot be hidden or unhidden. They are simply not on the form to begin with. If you wish to hide, or unhide a field then use the next setting.
Hide Condition
If this condition is true then the field is hidden. If false, then the field is unhidden. This condition is reevaluated whenever the form field is reset. (ie whenever another field, which has this field on its reset list, is changed.) If this field is dependant on other fields on this form (or elsewhere in the application) then use the SessionValue of those fields in the expression here. For example;
p_web.GetSessionValue('inv:paid') rather than just inv:paid.
 
Comment
The comment for this field. Note that many comments are generated automatically based on dictionary, and field, validation rules. To suppress the automatic comment, explicitly set this field to something else, or explicitly set it to the empty string ('') for a blank comment. Comments typically appear to the right of the field itself. Some field types (like PROCEDURE) do not have a comment.
Tooltip
The tooltip that will be displayed when the user hovers over the field.
Span prompt/value/comment
If this is on, then the Prompt, Value and Comment cells will be combined for this field. Some field types, like PROCEDURE are automatically spanned across the Prompt, Value and Comment columns.
Last on Line
Tick this on if the field is the last field on this horizontal row. If it is off then the next field on the form will be placed to the right of this field.
Last In Cell
If this is off, and the field is not Last On Line, then the next field will be placed in the Value cell for this field. If this on, and the field is not Last On Line, then the next field will occupy 3 additional cells to the right of the 3 cells for this field.
Suppress Comment
Do not generate the Comment cell for this field.
Span Rows
Typically each field spans one row of the form. However you can use this setting to let it span multiple rows. This is particularly useful when you have a field on the right (say an image for example) which is displayed to the right of a number of other form fields.
Common Settings (part 2)
The following settings do not apply to all field types, but are common across a number of types, and have the same behavior regardless of the field type.
Read Only
If this is on then the value of the field cannot be changed.
Read Only IF condition
An expression here allows the field to be read-only in some cases, but read-write in others.
Right-Justify
Tick this on to justify the contents of the field so they are right-aligned.
Width (chars)
Sets the width of the field, expressed as a number of characters.
Max Length
The maximum number of characters the user can enter into the field.
Allow Browser Auto-Complete
Allows the browser to use its own Auto-Complete functionality for entry fields. Due to the way browsers generate events, this setting is usually off, and it's recommended to leave it off for any field that requires immediate validation.
Immediate Validation
If this is on then the new value of the field is sent to the server when the user completes the field in the browser. You can then add code on the Client-Side tab to do server-side processing, and/or update parts of the form. For example one field may alter the values in other fields, hide or unhide fields and tabs and so on.
When Accepted, Set Focus On
Once this field has been changed, the focus then should be placed on another field. Use the Use Equate of the other field here.
Placeholder
A placeholder is text that appears inside an entry field, describing what sort of entry is expected. The placeholder text is typically in a light shade to differentiate it from an actual entry.
Send Every Keypress to server
An event is generated, and sent to the server for each keypress, as the user enters data into the field.
Field Type Specific Settings
In addition to the common settings mentioned above, many field types have custom settings which apply to them. The following sections deal with each field type, and the settings for it.
Button
A button is an object on the form which the user can press. This can take be used for navigation (ie taking the user to another popup window, or page) or it can simply execute some code on the server. The server can then update parts of the page as it desires.
Type
Select from Button, Start, Save, Delete, Cancel, Logout, Submit or Reset.

The Save, Cancel, Delete and Logout buttons allow you to add multiple standard form buttons to the form. If you choose one of these then none of the other options apply, as the global options for those buttons are used.
 
Start buttons are used to start a task (usually in conjunction with a Progress Bar control).

The plain Button type allows you to create a generic button for the user to press, which will perform some action. This action may be a navigation event or just some code on the server (but not both).
Name
All buttons require a (unique) name on the form. Use quotes for a fixed value here. Something simple like 'whatever_btn' can be used. This name is not displayed to the user.
Desktop Text
The text (if any) that will appear on the button when in desktop mode.
Mobile Text
The text (if any) that will appear on the button in mobile mode.
DIV CSS Class
The CSS Class for the Form DIV which surrounds the button.
Button CSS Class
The CSS Class for the button itself.
Default Button
Tick this on if this is a default button on the form. The default button is triggered when the user presses ENTER on the keyboard. Only one button on the form can be a Default button.
Start Automatically When Form Generates
This option is available if the button is a START button. If this is on then the button is automatically pressed when the form opens.
When Clicked Set Focus On
Enter the name of another field on the form here. If the user clicks on the button, focus will be transferred to the nominated control.
Use jQuery Styled Button
If this is on then the button will be styled according to your CSS rules. If it is off then a browser-button will be displayed. The button may then change it's look to match the browser, and operating system, being used.
Button Compact in Mobile
If this is off then the button will expand to the full width of the screen in mobile mode.
JavaScript Desktop Icon
The jQuery-UI icon to use on the button when the form is in desktop mode. The ui-icon part of the name is not included here. For example 'cart' for the shopping cart icon.
JavaScript Mobile Icon
The jQuery-Mobile Icon to use on the button when the button is in mobile mode.
Disabled If
The button is in a disabled state when this condition is true. This will be re-evaluated whenever the button is reset by another form field.
Start Button Set
Buttons can be grouped together into a set. If this button is the first in a set, then tick this option on.
End Button Set
Buttons can be grouped together into a set. If this button is the last in a set, then tick this option on.
Image
The web-folder-relative path and name of the image to display. The image itself should be in a web-compatible format, and be either in the web folder, or a sub-folder of the web folder.
Image Width
The width of the image, in pixels.
Image Height
The height of the image, in pixels.
Image Alt
Alternate textto display if the image is not, or can not, be displayed.
Image CSS
A CSS class to apply to the image container.
Carousel
Dots
If on then dots are displayed below the carousel, one dot to indicate each item in the carousel.
Autoplay
If on then the carousel will automatically play using the speed property (see below).
Speed
The time, in thousandths of a second, between carousel changes.
Checkbox
Use jQuery Button
Tick this on if you want the checkbox to appear as a button. If this is off then a regular checkbox will appear.
True Text
The text (if any) to display on the button when the variable is true.
False Text
The text (if any) to display on the button when the variable is false.
True Icon
The icon (if any) to display on the button when the variable is true. This is a Themeroller icon name without the icon- prefix.
False Icon
The icon (if any) to display on the button when the variable is false. This is a Themeroller icon name without the icon- prefix.
True Value
The value to assign to the underlying variable if the checkbox is in a checked state. Usually 1.
False Value
The value to assign to the underlying variable if the checkbox is in an unchecked state. Usually 0.
More
See the Common Settings for more.
Color
These are settings specific to the Color Picker field type. The color picker allows users to select a color value from a color chart, rather than having to enter the color as a number.
Color is stored as
In a web app you may choose to store the color value using the regular Clarion format (BGR) or as a Web string (#123456). Use this setting so the forms knows which format to use.
Show Entry Field
If this is on then an entry field will be displayed containing the color value. This allows the user to modify the color selected directly. (For example cut & pasting from a color elsewhere.)
Force user to use Lookup
If this is on the user can see the color value, but con only change it using the color picker.
Live Update
Tick this on to apply the color immediate to another field on the form.
Field
The Use Equate for another field on the form (usually a Display field) which will immediately get the color selected by the user. This allows the user to see the effect of their color choice.
Attribute
The attribute that this color choice will affect. Select from Color, Background Color and Border color.
More
See the Common Settings for more.
Date
Dates are obviously a common input format into any form. However NetTalk Date fields are clever in ways you may not expect. Apart from offering a lookup button to the right of the field (which allows the user to select a date from a calendar) the user is also able to type various date-related phrases into the date field, and it will automatically figure out the appropriate date. Some of these phrases include  today, yesterday, last week, next month, last quarter, 3rd monday in june and so on.
Force User to Use Lookup
If this is on then the user will not be able to type a date, but they will be required to use the lookup button to select a date.
Picture
The date picture to use when displaying the field. Note that if the user enters a date directly, with the wrong picture, but which is unambiguous, then the input will be accepted, and handled appropriately. For example if you ask for dd/mm/yyyy and they enter 2014/3/14 then the date will be accepted.
Date Lookup Picture
the date picture to use in the lookup (if different.)
More
See the Common Settings for more.
Display
Display fields can display text or HTML on the form. Most of the settings for this field type are common to other fields, and are on the Field tab.
Horizontal Line
Tick this on to display a horizontal line on the form.
Button
An alternative to selecting the Button field type. This option is deprecated. You should rather use the Button field type instead of the Display field with this option on.
Text
The text to display. If this is blank then the contents of the form field is displayed.
Picture
A picture used to format the data being displayed.
Allow xHTML
Allows the Display field to display formatted HTML. The developer is responsible to ensure that the data being displayed is valid xHTML.
Allow Unsafe xHTML
Allows the xHTML to contain code which may be considered unsafe. It is not advisable to turn this on for any user-generated content.
Image
The web-folder-relative path and name of the image to display. The image itself should be in a web-compatible format, and be either in the web folder, or a sub-folder of the web folder.
Image Width
The width of the image, in pixels.
Image Height
The height of the image, in pixels.
Image Alt
Alternate text to display if the image is not, or can not, be displayed.
Image CSS
A CSS class to apply to the image container.
onGenerate [JavaScript]
This field allows you to enter JavaScript code here which will be executed when the Display field is generated onto the form. This makes it easier to add custom JavaScript widgets to the form where they take the form of a DIV or other identifier, plus a small amount of JavaScript initialization code.
Drop
Height
The height of the dropped area.
Width
The width of the control - in Pixels.
Allow Multiple Selections
Allows multiple items on the Drop control to be selected at the same time.
Email
The Email type behaves a lot like a Entry type, but gives the browser some clues as to the content of the field. The most obvious difference is on devices with an on-screen keyboard; many devices will display a different keyboard here than the usual one, for example including the @ symbol on the keyboard, and removing the space bar.
More
See the Common Settings for more.
External
The External form field type requires the external script to be included in the app.

External fields aren't really fields at all. Rather they create an instance of the ntexternal widget on the form. This widget (invisibly) polls other servers for information, and then injects that information directly onto a field in the form. In other words the WebForm fetches information not from the WebServer, but from some "External Web Server". The reply from that server is then fed into the value property (by default) of some other field on the form.
Destination
The target field on the form that will receive the incoming external data.
Host Name
The host name of the "other server". For example '127.0.0.1' for this machine, or 'www.other.com' for another server on the LAN or WAN.
Host Port
The Port number to connect to. Defaults to port 80. If this port is set to 80, and the current page is SSL (and hence the remote server is presumed to be SSL) then the port is automatically transposed to be port 443 internally.
Host URL
The Page name (procedure name) to call in the remote server. Defaults to 'GetData'. This means the GetData procedure will be called (and will return the value) when the external server is queried.
Timer
Set to a number (in thousandths of a second) to poll the remote server, when the widget is in Polling mode. Set it to 0 to disallow polling.
Auto Start
If this is on then the page will start polling the server (or will call it once) as the page opens.

The widget can be controlled using Buttons on the page, of type "External". This allows you to change the behavior of the widget as required.
File Upload
The File Upload form field type requires the file upload script to be included in the app.

Settings specific to the File Upload field type.
Use Advanced Uploader (HTML5)
If this is on then a JavaScript uploader will be used instead of the native HTML File Upload control. This uploader allows for a lot more functionality, and gives the user more feedback, but may not be supported on some older browsers.
Use jQuery Buttons
Tick this on to style the Uploader buttons as jQuery buttons.
Start Upload when File Selected
If this is on the the file is uploaded to the server as soon as it is selected by the user. If it is off, then the user will have to press the Start button to begin uploading. In either case The user will not be able to click on Save until the file upload has completed.
Allow Multiple Selections
Allows the user to select multiple files to upload. If this is off only one file will be selected at a time.
Only Allow 1 Upload
If this is on, then once the upload is complete, the user will not be able to upload another file.
Add, Start, Clear, Remove, Cancel and Text tabs
These tabs let you override the global settings for the various file upload buttons.
Max Length
This setting only applies to the old upload entry type. It limits the length of the name that can be uploaded (including the path).
Save Incoming Files to Uploads Folder
If this is on then incoming files are automatically saved into the \web\uploads folder. If this is off then you will need to manually save incoming files by adding embed code to the SaveFile::FieldEquate routine.

Example;
p_web.SaveFile('MAI:MailBoxPicture','c:\temp:\whatever.jpg')
 
Remove WebFolderPath from Incoming File Name
The incoming file is saved in a folder on the disk - usually the uploads folder inside the web folder. Thus the name of the file, as saved on the server, might be c:\app\web\uploads\whatever.jpg. This field value is now stored in the form field, presumably for writing into a database table. If you would like to store this as \uploads\whatever.jpg with the c:\app\web part removed, then tick this option on. If this option is off then the full pathname to the uploaded file will be stored in the table field. If the uploaded file is not stored relative to the web folder then the full pathname will be stored in the table field even if this option is on.
Maximum File Size (MB)
Allows you to set the maximum file size allowed by the Upload button.
Accept Files of Type
Tick on the options you want to support for file uploading. The user is still able to upload any file they like, but this setting gives the browser some clues as to which files are desirable and may filter the File Dialog to these options. Built-in common types are Audio, Video, Image, PDF and ZIP. This is also a Custom field which can contain a comma separated list of acceptable mime types. You can also use a .xxx extension (and hence a comma separated list of extensions) here. For example '.doc,.xls'
Allow capture from local device
If this is on and the accepted file type is Image, Video or Audio, then the user may be able to use the local hardware to capture one of these directly. For example, if the file type is Image, and this is on, and the user is on a recent phone then they will be able to take a picture which is then uploaded. Not all hardware supports this option but most recent phones and tablets do.
More
See the Common Settings for more.
Gallery
The Gallery form field type requires the gallery script to be included in the app.

A Gallery is a collection of images that can be displayed to the user.
From Table
The table containing the list of images.
Filter
A filter on the above table to limit the image list for this gallery.
Order
The order in which the records are read, and hence the order in which the images appear.
Image
The web-folder-relative path and name of the image to display (full size). The image itself must be in a web-compatible format, in a folder in or below the WEB folder.
Thumbnail
The web-folder-relative path and name of a thumbnail image to display, if one exists. The thumbnail image itself must be in a web-compatible format, in a folder in or below the WEB folder.
Title
A title to display at the bottom of the image.
Description
A description to display at the bottom of the image.
Max Pics
The maximum number of images to include in the gallery.
AutoPlay
If on then the gallery will automatically scroll between the available images.
Gauge
The Gauge form field type requires the gauge script to be included in the app.

A Gauge is a visible indicator which can be displayed to the user.

Gauge Tab
Width
See Height
Height
The gauge widget is drawn using a canvas tag on the page. The Width and Height settings determine the initial size of the gauge. The size can be overridden using the Canvas CSS Class (see CSS Tab).
Live via WebSocket
If this option is on then the gauge will be updated automatically from the web server when the linked Host or Session value changes. If this option is on then be sure that the WebSockets script is included in the application (WebServer procedure, Scripts tab).
Scope
The scope of the field to use for the websocket update.
Field
The name of the field to use for the web socket update. If this value is left empty then the Form Field (on the General tab) is used.
Text Prefix
The text which appears before the gauge value, on the gauge.
Text Suffix
The text which appears after the gauge value, on the gauge.
Minimum Value
The minimum value for the gauge. Defaults to 0.
Maximum Value
The maximum value for the gauge. Defaults to 100.
Auto Increase Maximum Value
If this option is on, and the gauge receives a value greater than the maximum value, then the gauge automatically rescales itself, and re-labels itself.
Animation Speed
The speed of the animation as the gauge pointer moves. Set to 0 for no animation. Default is 32.
Angle
The "shape" of the gauge expressed as an angle from the horizontal from -0.5 (bottom) to 0.5 (top). So 0 is a semi-circle gauge with a horizontal base. -0.5 is a circular gauge. +0.5 is pure vertical gauge (that's basically invisible.)
Line Width
The width of the bar around the edge of the gauge.
Auto Labels
If this is a number greater than 0 then this many labels will automatically be placed around the gauge. The preference is for whole numbers rather than being at specific points on the gauge.
Labels at (comma separated list)
If the Auto Labels field is blank, then you can enter specific label values here, as a comma separated list.
Pointer Graphic
The name of a graphic file to place at the end of the pointer. The graphic should contain a pointer when the pointer itself is vertically straight up to the top of the screen.
Pointer Length % (0-100)
The length of the pointer, as a percentage of the canvas size. Default is 50.
Pointer Thickness (0-300)
The thickness of the pointer. Default is 10.
Colors Tab
The colors for the gauge are typically set using the Pointer class and Dial class (see CSS Tab). Settings on this tab however override the CSS class.
Change Color based on Value
If this option is on then the gauge can change color based on the value.
Generate Gradient
If this is true then the gauge changes gradually as it moves through the values. The gradient is calculated from the percentages below.
Percent colors
This allows you to specify as many colors as you like, linked to specific percentages. So for example, 0:green, 75:orange, 100:red.
Background Zones
If this option is on then the dial part of the gauge will be divided into zones - as many as you like. Each zone can have a different color, and a different thickness.
Ticks Tab
Ticks are markers on the gauge itself which help to divide the gauge into sections. There are Main ticks, and then each Main dick can be further divided by Sub ticks. the width, length, and color of main as sub ticks can be set on this tab.
CSS Tab
The CSS tab allows you to control the various layout settings for the gauge.
Pointer Class
Only the Color property from this class is used. (All other properties are ignored.) This determines the color of the pointer.
Dial Class
Only 3 properties from this class are used. The color property sets the "inside" of the dial, up to the pointer value. The border-color property sets the "outside" of the dial, up to the pointer value. The background-color is used as the color for the background between the pointer value and the max value.
Labels Class
Only 3 properties from this class are used to create the labels around the outside of the gauge. The font-size, font-family and color properties are all used.
Image
See Display.
Map
The Map form field type requires the maps script to be included in the app.
Width (pixels)
Set the width of the map control (in pixels)
Height (pixels)
Set the height of the map control (in pixels)
Use Current Location
When the map opens it will attempt to locate the current position of the user (which may or may not be accurate, depending on the abilities of the hardware) and will start the map at that position.
Latitude
Set the Latitude which will be at the center of the map. The value is in degrees, and can contain (and probably will contain) a decimal portion. Latitude is measures in degrees North or South of the equator. Negative values entered here are treated as South, positive values are treated as North.
Longitude
Set the Longitude which will be at the center of the map. The value is in degrees, and can contain (and probably will contain) a decimal portion. Longitude is measures in degrees East or West of the Greenwich Meridian (which goes through London, England). Negative values entered here are treated as West, positive values are treated as East.
Zoom
Set the initial zoom level for the map. Zoom level 1 is from far far away, whereas zoom level 16 is very close to the ground.
Display Marker
Tick this on to display a "Home" marker on the map.
Description
A small popup description can be displayed when the user clicks on the marker.
Display Description when Map Opens
If this is on the the description is visible when the map opens - the user does not need to click on the marker. If the user clicks somewhere else on the map, the description will close.
Allow xHtml
Tick this on to allow compliant xHTML code in the marker description.
Allow UNSAFE xHTML
Tick this on to allow unsafe xHTML code in the marker description. Be very sure you know what you are doing before you tick this option on.
Marker Object Name
The Markers are pre-defined images which are used to pinpoint data on the map. A number of marker objects are available, and it is possible for you to create your own custom markers.
Custom Name
If a custom marker is being used, then enter the name of the custom marker here.
Draggable
If this is on the Home marker can be dragged around on the map. (This dragging does not update a table, but it can be used to update other fields on the form.)
Show Metric Scale
If this is on then a metric scale is displayed on the bottom left corner of the map.
Show Imperial Scale
If this is on then an imperial scale is displayed on the bottom left corner of the map.
Max Width(pixels)
The size of the scale (in pixels.)
Media
The Media form field type requires the media script to be included in the app.

The Media field type allows you to include various external media assets in the form. PDF files, iFrames and so on.
Text
URL
The URL resource containing the media to display.
Width (pixels)
The width of the container.
Height (pixels)
The height of the container.
Autoplay
If this is on, and the media container contains a play button (such as for audio or video) then this switch determines if the media will automatically play or not.
Number
Numbers are a special type recognized by the browser. In some browsers these will be displayed as a Spin control, however this is not universal behavior. The formatting of the number is also browser dependent, and you cannot format the number with a Picture. In many cases it may be preferable to use either the String field type or the Spinner field type.
More
See the Common Settings for more.
Procedure
Settings specific to the Procedure field type.
Procedure
the name of the procedure to include at this point. Browses, other forms (which don't have a FORM tag, NetWebSources, NetWebYears can all be included on a form here.
Parameter Condition
A condition to determine f the parameter is included or not.
Parameter
The name of a parameter to include.
Value
The value of the parameter to include.
Progress
Progress Timer (thousands of a second)
The progress bar updates by sending a small request from the browser to the server. The server inspects the session queue to determine the progress, and reports this to the browser. Set this number to something reasonable, given the amount of time you expect the process to take. For a report a setting of 10000 (10 seconds) may be fine, for a process that can take hours you may want to set it even higher.
Create Hyperlink when Process Completes
If the procedure being run creates a file, then the file name will be passed back to the form when the procedure completes. If you want to display a hyperlink to the user then tick this option on. Note that whether this option is on or off, the fields listed on the Client-Side tab will be refreshed when the progress bar completes.

In some cases you can skip right over the "hyperlink" and simply display the file for the user. The Reports examples show this approach.
Target
The target where the link will open. For example '_blank' opens the link in a new tab.
Text
The text to display in the hyperlink when the process completes.
Picture
A picture used to format the text being displayed.
Allow xHTML
Allows the text field to display formatted HTML. The developer is responsible to ensure that the data being displayed is valid xHTML.
Allow Unsafe xHTML
Allows the xHTML to contain code which may be considered unsafe. It is not advisable to turn this on for any user-generated content.
Width (value and unit)
Allows you to set he width of the progress bar. You can use any of the CSS width units including px or em. For example '200px' or '15em'
Radio
Use jQuery Buttons
Tick this option on for the radio options to appear as a set of buttons, with one button "latched". If this is off then normal radio buttons will be displayed.
Text
The text (if any) for the Radio option.
Value
The Value for this radio option.
Include Condition
An expression which, if false, excludes this radio option from the possiblities.
ReadOnly IF Condition
An expression which will set this radio option to read-only.
Tip
A tip for this radio option.
Image
An image for this radio option.
Last On Line
Tick this on if this field is the last one on the line.
More
See the Common Settings for more.
Range
See Number.
Signature
The Signature form field type requires the signature script to be included in the app.

Signatures are areas on the form where the user can draw with their finger (on a touch screen) or using a mouse or touchpad on other computers.
Width (pixels)
The width of the signature area, in pixels.
Height (pixels)
The height of the signature area, in pixels.
Allow on Insert Only
If this is on, then the signature will only allow the field to be changed when the form is in Insert mode. If the form is in Change mode then the existing signature will be visible but can't be changed.
Include Clear Button
If this is on then a clear button will be visible which will allow the user to clear the signature field before entering a new signature.
Clear Button Text
The text which will appear on the Clear button.
Use jQuery Button
Tick this on if you want the Clear button to be a jQuery styled button.
Clear Button Icon
The icon (if any) to put on the Clear button.
Include Guide Line
If this is on then a light grey line will appear in the signature box. This helps people to know where to start writing their signature.
Save Signature as Image File
If this is on the then signature will be saved to an image when it arrives on the server. You will need a procedure to write the image (see setting below.)
Save to File on Insert
Turn this on to save the signature to a file when the form was in Insert mode.
Save to File on Change
Turn this on to save the signature to a file when the form was in Change mode.
Procedure
The name of the procedure that converts the signature to a graphic file. The Signatures (75) example uses the CapeSoft DRAW library to do this, but it's possible to write the procedure using which ever drawing library is your favorite.
File Name
The name of the image file to save.
More
See the Common Settings for more.
Slider
Settings specific to the Spinner field type.
To Field
The Slider control can have two handles. If this field is set then a second handle is added to the bar, and the value of the second handle is assigned to this field. (The first handle is assigned to the normal form field as expected.)
Hide Entry Field
If this is on then only the slider is displayed. If it is off then a normal entry field is displayed to the right of the slider which allows the user to see (and enter) the specific value.
Slider Length
The length of the slider bar. This is a CSS setting so you can include the unit. Valid units are em, % and px. For example '25%' or '20em'.
Spinner
Settings specific to the Spinner field type.
Page Step
The value to step by with each tick up or down of the spinner.
Quick Scroll
when holding down the arrow button the scrolling will speed up to jump in increments of this size.
Up Icon
The jQuery-UI icon name - minus the icon- part.
Down Icon
The jQuery-UI icon name - minus the icon- part.
String
Settings specific to the String field type.
Lookup Button
If this is on then a lookup button will be displayed to the right of the field (and more tabs will appear with other various lookup options - those are documented lower down.)
Hide Lookup button (Use Hotkey Only)
Lookups can be triggered from the button, or via a hotkey on the field (usually F2 or ?). If this option is on then the button is hidden and the user would need to know about, and use, the hotkey in order to see the lookup list.
Hide Lookup button IF
If this expression is true then the lookup button will be hidden. As with the option above the lookup is still there, and can be triggered using the hotkey.
Password Field
Tick this on if the field is a password field. This means that the text in the entry box is replaced with dots or asterisk characters so what the user is typing is not revealed. Note that it doesn't offer any security beyond the immediately visible text. If the user inspects the page source then the value of the field is visible.
Picture
The entry will be formatted to this picture after the user completes typing it in. If any existing value is in the field then it will be formatted to this picture before it is displayed to the user.
Auto Tab
If this is on, and the user types in the maximum allowed number of characters, then the focus will move to the next field. this is useful where you are creating a group of fields next to each other, like a credit card number, or activation code field, and as the user completes one part of the field it automatically moves on to the next.
Send Every Keypress To Server
If this is on then each keypress is sent to the server as the user types it. In this situation it does not wait to the end of the field before sending the contents to the server.
More
See the Common Settings for more.
Text
Lookup Button
If this is on then a lookup button will appear to the right of the field. This will allow the user to select some common text for this field.
Hide Lookup Button
If this is on then the lookup functionality is still there, but the button itself is hidden. The user will then need to use a hotkey to open the lookup window.
Hide Lookup button IF
If this expression is true then the lookup button will be hidden. As with the option above the lookup is still there, and can be triggered using the hotkey.
Rows
The initial vertical size of the text field.
Columns
The initial horizontal size of the text field.
Allow xHTML
Tick this on to allow the user to enter xHTML in the field. If this is on then you can allow them to type in "raw" HTTP, or use one of the built-in WYSIWYG editors.
Allow Unsafe xHTML
Tick this on if you want unsafe input to be allowed. In this position this is strongly not recommended.
Editor
Select your preferred HTML editor here. You can set the editor globally (in the WebServer procedure) and you can override that global setting here if you wish.
Autosize Text box vertically
If this is on then the box will expand automatically if the user needs more rows of text. If this is off then the field will be limited to the number of specified rows.
More
See the Common Settings for more.
URL
The URL type behaves a lot like a Entry type, but gives the browser some clues as to the content of the field. The most obvious difference is on devices with an on-screen keyboard; many devices will display a different keyboard here than the usual one, for example removing the space bar.
More
See the Common Settings for more.
Webcam
The Webcam form field type requires the webcam script to be included in the app.

The Webcam form field type uses the HTML5 API called GetUserMedia. This is not supported on all browsers. You can check to see which browsers support this by going to http://caniuse.com/#feat=stream.

If your form makes use of this field type, then when the form opens the user will be prompted to allow the app to use the camera and/or microphone. If the users selects "No" then this form field will not work. At this point most browsers do not allow the user
to "Always Accept". The exception is Chrome connecting over an SSL connection. In this case the user can allow the permission to persist.

Video
Tick this on to activate the users Video camera (webcam) on the form.
Audio
Tick this on to activate the users Audio recorder (microphone) on the form.
Image to show the shot
If you wish to show a snapshot (taken with a Webcam button) to the user, in an Image control, then select the image control here. (You will need to add another form field, a Display field, with the Image property set to 'something', to the form to receive this image.)
Upload
Tick this option on to automatically upload the image to the web server when it is taken.
Save
Tick this on to Save the incoming image directly into the web\uploads folder as it arrives. the file will be given a random name, which will be placed in the Webcam FIELD.
YouTube
The YouTube control depends on the API provided by Google. All the current options of the API are supported, however the Google API may change in the future. The Parameters supported by the YouTube link are documented at https://developers.google.com/youtube/player_parameters. Videos are embedded using the Iframe method.
Width
The width of the player.
Height
The height of the player.
Video ID
The YouTube ID of the video to play.
Auto Hide
One of All, Some or None. Determines the behavior of the video controls once the video starts playing.
Auto Play
Tick this on for the video to start playing immediately. Note that outside of specific use cases this is considered to be undesirable on most pages. For example on a regular web page this should be off, however if this video was selected from a browse, and clearly the user wants to see it, then it can be on.
Color
One of Red or White. This determines the color of the progress bar as the video plays. Note that setting the color to white will disable the Modest Branding option.
Controls
One of No, Yes or Fast. Determines if the player controls are displayed in the video or not.
Annotations
Tick this off to prevent annotations from being displayed in the video.
Modest Branding
If this is on then the player does not display the usual YouTube logo on the control bar. A small logo will appear if the user hovers over a paused video.
Loop
Tick this on for the video to loop back to the beginning once completed. If a playlist is being used then the whole playlist will be displayed before the playlist beings again from the first video.
Playlist
A comma separated list of Video ID's to play. The Video ID field above will be the first video to play, and this list will play after that video.
Related
If this is on then related videos will be displayed at the end of the video. If it is off then related video are not shown.
Start At
A position (in seconds) of where to start playing in the video.
Theme
One of Dark or Light. These correspond to the themes Google offers for the YouTube video player.
TinyMCE
Not currently used
Auto Complete
Auto-Complete is available for String and Lookup fields. It provides the user with suggestions as they are entering data.
Enable Autocomplete
Tick this on if the field is to have auto-complete functionality activated.
Filter Type
Select the filter type to use as the user types. You can return items which start with the same characters as the user types, (Begins-With) or which contain the text anywhere in the string (Contains). The Search option is a special form of Contains, it treats the typing as a space-separated list and searches for the different terms in the list.
Case Sensitive
Tick this on if the search should be case sensitive.
Minimum Chars
Set the minimum number of characters that the user must type before a search is done. Usually this is 2 characters.
Maximum List
Enter the maximum number of items to return in the suggestion list. For large tables it's a good idea to limit the possibile replies, as it can shorted the search time.
Delay (millisecs)
the length of the delay between typed characters before the search will be done. In other words as long as the user is typing, no search is done, however if they pause for this number of "thousandths of a second" then a search is started.
From Table
The table containing the possible suggestions.
Order by
the order to search the table, and hence the order of the items presented.
Filter
A filter of the table to limit it to certain records.
Value field
The Value field which will ultimately be stored in the variable (but not necessarily seen by the user.)
Description Field
The description field which will be displayed in the list.
Display Description instead of Value
If this is on then when a user selects a suggested item, the description will appear in the entry field, not the value. This makes for a more pleasing user interface, but does require that the foreign table has a single-component-key on the description field.
More Assignments
You can enter more assignments to be made from the Foreign table to the local table here.
Gallery Settings
this tab allows you to add items to the gallery which are not from a table. A single gallery can contain fixed images, then data from the table, then more fixed images. this tab contains the fixed images which go before, and the images that go after, the ones from the data table. Of course both of these lists are optional, as indeed are the ones from the table.
Image
The web-relative path and file name of the full image. The image needs to be in, or below, the WEB folder.
Thumbnail
The web-relative path and file name of the thumbnail image. The image needs to be in, or below, the WEB folder.
Title
A title for the image.
Description
A description of the image.
Lookup Settings
Lookup settings are used for String and Text fields, with the Lookup button option ticked on. Similar settings are also also used for Drop fields. This tab of settings dictates the foreign table which contains the foreign record being looked up on. In the Drop field case these settings are optional.
Procedure
The Browse procedure (or form procedure containing a browse) to use as the Lookup.
Parameters
Any extra parameters you want to pass to the Lookup procedure. These parameters are in the form parameter=value&parameter=value and so on.
Popup Lookup
Tick this on if the lookup will open in a popup window.
URL
If the lookup is not a procedure, but a static page, then enter the URL here. This is for advanced users only.
Target
If you enter a specific URL you can enter a Frame name here.
Lookup Title
If the Lookup is a Popup then you can enter a custom title for the popup here.
From Table
The name of the foreign table which is being looked up on.
Order By
The order of the records in the foreign table.
Value Field
The value field in the remote table which will be copied into the field in this form table. The value field is what links the foreign table to this table. The user won't necessarily see this value, but it's still the linking value.
Description Field
The description field in the foreign table.
Auto-Lookup on Insert
If the form is in Insert mode, then open the Lookup as soon as the Insert form opens.
Force User to Use Lookup
If this is on then the user has to use the lookup button, they can't enter the field directly.
Display Description Instead of Value
If the foreign table has a key with just the description field in it, then you can display the Description field to the user, and the Value field is completely hidden. This makes a very good lookup because the user does not need to see, or remember, obscure or arbitrary codes.
Allow Custom Value not in Lookup Table
If this is on then the value entered is not validated against the foreign table. In other words the user can enter text that does have to be in the foreign table.
More Assignments
Add more assignments here. this allows you to copy other fields (not just the Value field) from the foreign table. For example, when looking up a product the product code is the value field, but the LineItem price is copied over as a starting point for the line item price.
Drop Settings
Validation
Different field types have different options for validation. So the settings you see on this tab (or indeed if the tab is even visible) depends on the field type. Most of the options on this tab are self explanatory.
onchange [js]
An expression, that contains JavaScript, which will be executed when the value on the form changes. Usually validation is done on the server side, but there are cases - especially with disconnected apps and so on - where the server is not in play, and so validation needs to be done on the client side. This setting allows you to add that JavaScript (typically as a call to a custom JavaScript function).
On Click - Button
URL
The URL to go to when the button is pressed. (If you are going to another procedure in the app then use the next setting instead.)
Procedure
The name of a procedure in the app to go to. This can be a NetWebPage, Browse, Form, Year and so on, but not a NetWebSource.
Parameters
Parameters to pass to the URL or procedure. This is a & separated list of the form parameter=value&parameter=value and so on.
Open as Popup
Open the procedure as a Popup. (URL's cannot be opened as a popup.)
Title
The Title of the popup window.
Target Frame
If a URL, then the name of a Target Frame (if any) for the new page.
URL Contains Email Address
Tick this on if the URL contains an email address rather than the URL of a web page.
Include Action
Tick this on to include an Action in the call.
Action
Select the Action to include.
onClick [JavaScript]
JavaScript code will be executed in the browser when the button is pressed.
On Click - Start Button
Procedure
The name of a Procedure to call. For example to start the generation of a report, then the report procedure will be entered here.
Parameters
The parameters to pass to the Procedure.
Progress Field
The Use Equate of a Progress bar on the form.
On Click - Map
Call Form (INSERT)
Select a NetWebForm procedure which will be called when the user clicks on the map (not on an existing marker.) Make sure the From Map Priming is set on that form so that the location of the click is primed in the new record.
Insert into Data Name
If one of the data sources for the map should be refreshed after an Insert, then add the name of that data source in here.
Reset Home Marker
If no Insert procedure is selected, then clicking on the map can reset the position of the Home Marker. This won't update any records, but can be used to update other fields on the form.
Copy Latitude To
Select a field here. This will recieve the new Latitude of the click.
Copy Longitude To
Select a field here. This will recieve the new Longitude of the click.
Copy Zoom To
If a field is selected here, then when the user changes the zoom level on the map, this variable will be updated.
Data - Map
Multiple data sources can be displayed on the map at the same time. Each data source contains the following settings.
Data Type
Select the nature of the data in this set. You can select from POINTS (one or more points on the map, represented by markers), AREA (a collection of points that defines the boundary a specific area), or ROUTE (a collection of points, with a line drawn from each point to the next point in the sequence.)
Name
Each data source requires a unique name. This is used to identify the source on the map. Users can turn data sets on and off at runtime (based on the name.)
Source
Select from TABLE or QUEUE. If a QUEUE then the queue needs to be declared locally, and populated before it is used. Mapping from a queue is not common, and only useful if a small number of fixed points are pre-determined.
Table Tab
Table
The table in the database to get the data from.
Unique Key
The unique key (usually the primary key) used ot identify the records in the table. This should be the same as the key used by any data form which will appear based on the user clicking on the record.
Filter
Enter an expression which will be applied as the VIEW Filter.
Order
Enter an expression which will be applied as the VIEW Order. When describing a Route or Area the order of the fields becomes important.
Form
The name of the form to go to when the user clicks on a marker. Note that if the marker has a form, then it can't also have a popup description, and so the popup description is not used.
Open Form as Popup
Tick this on for the form to open as a popup.
Action
Set the action for the form to one of Change, View or Copy.
Draggable
Tick this on if the marker record can be updated simply by dragging the marker on the map.
Queue Tab
From Queue
Select the Queue which contains the data to be added to the map.
Data Tab
Latitude
The field containing the Latitude.
Longitude
The field containing the Longitude.
Description
The popup description for the field, which is displayed if the user clicks on the marker. If a Form is set, then this field is ignored - the click takes the user to the form.
Allow xHTML in Description
Allow xHTML compliant code in the marker description.
Allow UNSAFE xHTML in Description
Tick this on to allow unsafe xHTML code in the description. Only tick this on if you know what you are doing, and are aware of the security risks.
Marker Tip
A tip which will be displayed when the user hovers over the marker.
Marker Object Name
The look of the marker is defined by a pre-declared JavaScript object. You can add your own objects if desired. Select from the built-in list, or use custom to use a custom marker.
Custom Name
Enter the name of the custom marker here.
Marker Opacity (%)
Set the opacity of the marker. 100 is fully opaque (ie visible), 0 is completely transparent (invisible.)
Disable Clustering at Zoom
As the user zooms out, markers that are close together will be clustered into a single cluster marker. This setting prevents clustering once the user has zoomed into this level. Set this to 1 to disable clustering completely.
CSS
Various CSS settings which apply to the form field.
Client Side
The Client-Side tab determines what will happen to the field as the user interacts with it. Different field types can have limited access to some of these options (for example Hidden fields can't be clicked on) but the appropriate settings for the field type will be offered.
When Field Selected in Browser [onFocus]
When the field is selected in the browser, then an onFocus event is triggered in JavaScript. If you want to embed JavaScript code for this event then you can do it here. You can also refresh the Prompt, Value and/or Comments components of the field when it gets the focus. these options are not used much.
When Field Accepted in Browser [onChange]
After the user completes a field and onChange event is generated in the browser. This is similar to an Event:Accepted in a Clarion program.
Send new value to server
Tick this on to explicitly send the new value to the server. Several other options (such as having items in the reset list) will implicitly send the value to the server, but if you wish to embed hand-code on the server side then ticking this on is recommended.
Server Code
This button takes you to an embed point where you can embed code which will execute, on the server, when the field is completed. It is recommended that you view the embed point "in context" so you can see what is happening. For example there are embeds nearby for code which may happen before the field is validated, or after the field is validated.

The key item to remember at this point in the code is that any other field you may change MUST be changed in the Session Value, not just the field itself. For example;
inv:paid = 1
should be
p_web.SetSessionValue('inv:paid',1)
JavaScript Hand-code
You can enter JavaScript here, which will be executed in the browser itself.
Reset
You can enter a list of other fields on the form here. Fields in this list will be refreshed, from the server (specifically from the session queue on the server) when this field completes. This is especially useful for other fields which may be hidden, or unhidden based on the contents of this field.
Security
See Security Tab

Priming Tab

Field Priming

Set Field
The name of the field to set.
To Value (Clarion)
An expression containing the value to prime the field to. This expression is in "Clarion code syntax".
To Value (PHP)
An expression containing the value to prime the field to. This expression is in "PHP code syntax".
To Value (JavaScript)
An expression containing the value to prime the field to. This expression is in "JavaScript code syntax".
Only if Field is not already set
The field will only be set if it is currently blank (for strings) or zero (for numeric fields.)
Prime for Insert
Prime the field, as above, when the form is in Insert mode.
Prime for Copy
Prime the field, as above, when the form is in Copy mode.
Prime for Change
Prime the field, as above, when the form is in Change mode.
Prime for Loading
When the form comes from a browse, the ID fields of the record are passed in by the browse. However if you need to override this value or (if the browse is on a different table) you need to alter it, then that can be done here with this setting.
Assign On Save
The above four settings prime the field when the form is opened, and the user can see the primed value. This option primes the field as the form is saved. It is usually used to alter other fields in the table, ones the user can't see, or which they have not filled in.

Note that if this option is used then any JavaScript in the To Value JavaScript) field must be syncronous.
 

From Calendars

This priming is used if the form is called from a NetWebYear template (ie a calendar.)
(From) Date Field
Identify the Date field on the form, or in the case where there are multiple date fields, the "From Date" field.
To Date Field
If there are multiple date fields then enter the "To Date" field here.
Time Field
If there is a Time field then enter it here.
Round time to nearest (hs)
If the user clicks on a planner they usually don't have the accuracy to click on an exactly meaningful time. Usually they are "near" to the time they want. Setting a rounding value here allows you to round the time they clicked to a specific amount. this value is in hundredths of a second. One minute is 6000, Fifteen minutes is 90000 and so on.

From Maps

This priming is used if the form is called by the user clicking on a Map field. All these fields are optional, and may not exist in your data table. However since all this information is included in the click, it can be used as you desire.
Latitude Field
Select the Latitude field in your table. This will be primed with the latitude of the click. This field should be a REAL or DECIMAL as the value is in degrees (and fractions of a degree.)
Longitude Field
Select the Longitude field in your table. This will be primed with the longitude of the click. This field should be a REAL or DECIMAL as the value is in degrees (and fractions of a degree.)
Zoom Field
If you have a Zoom field then enter it here. This is an integer value where 1 is zoomed all the way out, and increases as the user zooms in.
SW Lat Field
This is the latitude of the South West corner of the map, as it is visible to the user at the time of the click.
SW Long Field
This is the longitude of the South West corner of the map, as it is visible to the user at the time of the click.
NE Lat Field
This is the latitude of the North East corner of the map, as it is visible to the user at the time of the click.
NE Long Field
This is the longitude of the North East corner of the map, as it is visible to the user at the time of the click.

From Location

This priming is used to prime fields (including hidden fields) on the form based on the current location of the device.
On Insert
The fields are primed if the form is in Insert mode.
On Change
The fields are primed if the form is in Change mode.

Buttons Tab

Form Buttons Position
the form buttons (Save, Delete, Cancel) can be visible above or below the other fields in the form. Select the option you prefer here.

Save Tab

Include Save button
Tick this on to include a Save button on the form. This is typically off for MEMORY based forms, or forms where you have added an explicit Save button onto one (or more) of the tabs.
Save Form on ENTER
If the user is on a form, and there is no other Default Button on the form, and the user presses ENTER, then the Save Button is clicked.
Disable IF
If the expression is true, then the button will be disabled.
Text
The text to appear on the button. If left blank the default is applied. The default is set in the WebServer procedure on the Settings\Buttons tab.
Refresh Header on Save
If ticked then the source procedure PageHeaderTag is called, and hence the header (and possibly menu) is refreshed when the form is saved. This is typically used on a Login or Settings popup form, where the form items will change the way the header, or any menu in the header, looks.
Refresh Footer on Save
If ticked then the source procedure PageFooterTag is called, and hence the footer is refreshed when the form is saved. This is typically used on a Login or Settings popup form, where the form items will change the way the footer looks.

Close Tab

Include Close button, not Save
If the form is a MEMORY form, then you may prefer a Close button to a Save button to complete the form. Tick this option on in this situation.
Text
The text to appear on the button. If left blank the default is applied. The default is set in the WebServer procedure on the Settings\Buttons tab.

Cancel Tab

Include Cancel button
Tick this on to include a Cancel button on the form.
Prompt for Confirmation
If you want the user to confirm before cancelling a form, then you can set this value to Yes. Note that this setting can be set globally in the WebServer procedure, so leaving it as Default allows the setting to be changed globally, and be consistent through the application. You can also turn off the behavior locally here if you wish.
Confirmation Question
The question to ask the user is entered here.
Yes
The text for the "Yes" button offered to the user.
No
The text for the "No" button offered to the user.
Text
The text to appear on the button. If left blank the default is applied. The default is set in the WebServer procedure on the Settings\Buttons tab.

Delete Tab

Include Delete button
Forms can be used to Delete records. If the Form is in Change mode, and the Delete button is clicked, then the record will be deleted. Tick this option on to include a Delete button on your form.
Confirm Title
The title of the Confirmation window.
Prompt for Confirmation
The question to ask the user is entered here.
Yes
The text for the "Yes" button offered to the user.
No
The text for the "No" button offered to the user.
Text
The text to appear on the button. If left blank the default is applied. The default is set in the WebServer procedure on the Settings\Buttons tab.

Layout Tab

Span Columns
By default the form is broken into three columns for alignment purposes; the Prompt, Value and Comment columns. If this option is ticked then all the fields, on all the tabs, on the form use a single column. Note that this option can be set at the Tab and Field level if necessary.
Vertical
If this option is on then the prompt, value and comment components are not next to each other horizontally, but arranged vertically. Use this if you are wanting to make a form that is very narrow.
Suppress Comments
If this option is on the comments column is suppressed completely. Use this if you want the form to be narrower, and on forms where the comments add no value to the user interface.
Table width (pixels)
An HTML table spans the form, and contains the three columns. the table will usually dynamically resize to accommodate the items in the columns. Use this setting to explicitly force the table to be a certain width (in pixels). Note that it is recommended that this setting is not used, but that CSS settings are used to determine the table size.
Prompt width (pixels)
Set the explicit width of the prompt column, in pixels.
Value width (pixels)
Set the explicit width of the value column, in pixels.
Comment width (pixels)
Set the explicit width of the comment column, in pixels.
Window Width
If the form will open as a popup, then the width of the popup needs to be fixed here. (The user will be able to dynamically resize it.) The popup will automatically adjust its height to fit, but width needs to be pre-determined.
Window Top Offset
If the form opens as a popup then it will open with a small gap between the top of the form, and top of the browser page. You can control the size of the gap here.
Open Animation
The animation to use when this form opens. For more on Animations see here. If this is blank then the default (global) animation setting will be used. If you wish to suppress the global animation, but not include any animation here, then enter a blank string. For example ''
Close Animation
The animation to use when this form closes. For more on Animations see here. If this is blank then the default (global) animation setting will be used. If you wish to suppress the global animation, but not include any animation here, then enter a blank string. For example '' 
Min Height (pixels)
If the form is using the Wizard tab type, then you can specify a minimum height for the wizard pane here.
Save enabled all the time
If the form is using the Wizard tab type, and this option is on, then the user can complete the wizard at any point. If it is off they they will need to get to the last pane in the wizard before being allowed to complete the wizard.

xHTML Tab

See xHTML Tab

CSS Classes Tab

Validation Tab

Generate Automatic Comments
From the validation settings in the dictionary, information can be generated and fed to the user, alerting them to the constraints of the field. If there is no explicit comment for a field then the automatic comment will be displayed. If you don't wish to see the automatic comment for any field then set this option off. Note that individual comments can be suppressed by setting a comment for that field (including a blank-string comment).

Note that these settings are common to all fields, there are more validation settings which can be applied at the field level.
Immediate Validation
If this is on then fields will be validated as they are entered by the user. Any problem fields will immediately alert the user, and will be returned to a valid state (if the field was valid before it was changed.)
Sound when valid
a sound file (.WAV) which will be played a field is completed, and is valid.
Sound when not valid
a sound file (WAV) which will play when a field is completed, but is not valid.
Popup invalid message in browser
Tick this on to display a popup to the user explaining that the field was invalid.
Show invalid message on top of form
Tick this on to display a message at the top of the form to say which field is invalid. (Note this option may only work if the form is in Page mode.)
Allow xHTML in Alert Message
If this is on then the Alert message generated for validation errors can contain html code.
Wizard: Validate Tab on NEXT
If this tab type for the form is Wizard, and this option is on, then each tab will be validated as the user completes the tab.

Security Tab

Allow Inserts
Tick this on to allow the user to perform Inserts into the table using this form.
Allow Copies
Tick this on to allow the user to perform Copies into the table using this form.
Allow Updates
Tick this on to allow the user to perform Updates into the table using this form.
Allow View
Tick this on to allow the user to perform a View into the table using this form.
Allow Deletes
Tick this on to allow the user to perform Deltes into the table using this form. See Security Tab

Advanced Tab

Page Header Tag
You can override the default Page Header Tag here. The default is set in the WebServer procedure. This setting only applies if the form is called in Page mode.
Page Footer Tag
You can override the default Page Header Tag here. The default is set in the WebServer procedure. This setting only applies if the form is called in Page mode.
Auto Focus
If this is on then when a form opens focus is immediately passed to the first item on the form that can receive the focus. Turn this off if the first item is far down the page, such that the top of the page scrolls out of view.
Prime Auto Inc if necessary
The default approach when auto-incrementing in Clarion is to create a record as the form opens, and then update the record when the user clicks on Save. In a web app this behavior will only occur if this option is on, and the template determines that the auto-numbering needs to take place before the record is created. This is usually the case if there is a dependent procedure embedded on the form. For example in a Invoice form, which contains a Line-Items browse, then the invoice number may be needed in order to add the Line-Items (which will happen before the Invoice record is saved.) Turning off this switch will prevent the parent record being added when the form is opened.
Prime Auto Inc even if not necessary
There may be cases where you want the Prime-Record approach to be taken, even if the template thinks it is not necessary. Turning on this switch will force this behavior.
Ignore Key not being Unique
The form should use a Unique Key as the identifier (usually the primary key). In a small subset of cases you may want to use a key which is unique, but is not marked as unique in the dictionary. If you use a non-unique key you will get a warning at generate time. Tick this option on to suppress the warning. (It is assumed that you know what you are doing at this point.)
Default Form Action
The "Action" the form should take is usually passed in, from a browse, or via a URL. However you can also set the action here. This can make calling forms, that don't have browses, easier.
Key Fields
You can also prime the key fields to known values (or session values) here. This can make it easier to create single-record forms, and so on.
Prime Key from Parent
If this form is based on a parent table, then you can enter the parent table here. If you do this you are responsible to ensure that the appropriate parent record is primed in the session queue when this form is called.

NetWebSource Procedure Template

General Tab

Generate Open/Close Files Routines
If on then the procedure will generate routines called OpenFiles and Closefiles for you. You will still need to call the routines manually in your embed code.
Generate Save / Restore Files Routines
If this is on the the template will generate two routines called SaveFiles and RestoreFiles for you. You will still need to call the routines manually in your embed code.
Timer
Timers are not usually recommended, but if a timer is necessary then it can be entered here. Note that the value is in thousandths of a second, not hundredths of a second. Be aware that this will trigger a call from the browser to the server each time the timer goes off. If 100 people are triggering this timer then that is 100 requests coming in every time the timer goes off in those respective browsers. The overuse of timers can easily overload the server for large numbers of users.
This is a Header
Tick this on if this procedure is used as a Header procedure in the application.
Basic Layout
If the procedure is a Header then you can set the basic layout of the page here. This allows you to divide the main part of the page into one, two, or three columns. The actual dimensions of the columns are set in CSS. the columns can also adapt to different screen sizes and gracefully remove themselves as the screen gets smaller.
This is a Footer
Tick this on if this procedure is used as a Footer procedure in the application.
Generate DIV Wrapper
If this is on (the default) then a div is wrapped around the source procedure. This allows the procedure to be updated dynamically during Ajax calls.

xHTML Tab

Security Tab

CSS Tab

CSS Class (pc)
The output of this procedure will be wrapped in a DIV tag. The class to assign to this tag when in Desktop mode is set here.
CSS Class (mobile)
The output of this procedure will be wrapped in a DIV tag. The class to assign to this tag when in Mobile mode is set here.

Advanced Tab

Packet Length
The string to send to the server is constructed in a local variable called Packet. The default length of this packet is 16384 characters. If you need a larger string then you can enter an appropriate number here.

NetWebYear Procedure Template

General Tab

Type
Select between Months and Planner. Months displays one, or more months in a classic wall-calendar type format. Months can include both small, and large forms. Planner is more akin to a weekly planner with a matrix of days, people and events.
Heading
The Heading for the procedure.
Allow xHTML in heading
If this is on then you can embed xHTML elements in the header itself. Note that if this is on you are responsible to ensure that the code is xHTML compliant, which means encoding actual <, >, & and " characters.
Allow Unsafe xHTML in heading
If this option on then the HTML will not be checked for safety. Only tick this on if you do not allow user-entered data to appear in this field.
Subheading
The subheading for the procedure.
Allow xHTML in subheading
See above.
Allow Unsafe xHTML in subheading
See above.
Start Date
The start date for the calendar. This may be as simple as TODAY().
SetSessionValue on Nav
Useful if the calendar is embedded on a Form, and the start date is a field on that form. since the calendar control allows the user to navigate forwards and backwards, then when the user navigates it is useful to update the form field as well. For example if the formfield is called xFromDate, then this value can be set to 'xFromDate' (including the quotes.) Then on the form set the xFromDate field to be reset on the Client-Side tab of the calendar form field.
Page Name
See Page Name.
Page Title
See Page Title.
Send Filter / Order to Debugview
If this is on then the prop:order and prop:filter of the VIEW structure will be sent to Debugview when the procedure is called. This can assist in debugging problems, especially in the Filter.
Send Stage to Debugview
If this is on then a debugview statement is generated when the procedure starts, or finishes. This is helpful in understanding when the procedure is called, and in which stage it is when it is called. (Hint: Calendars call themselves to populate the data.)

Data Tab (Months Type)

Each procedure can read one or more sets of data for the calendar. It is not uncommon to have multiple data sets active at the same time. The definition of each data set is declared on the Data tab.

Type Tab (Months Type)

Loop Type
Data is populated on the calendar via a loop. This might be the form of a loop through the data records in a table, or a loop through each date, reading data for each date. Alternatively you may wish to hand-code the loop yourself.
Description
Used to identify the data set in the data set list.
From Date
If the loop type is set to dates, then set the From date here. Note that this can be an expression, such as a session value.
To Date
See From Date above.

Type Tab (Planner Type)

Where the months type has a minimum of one data set, there are at least three sets of data on a Planner type. A planner consists of three parts, the Left Column (also known as the Left Pane), the Right Column (where the actual interesting data lies) and the headers for the Right Column. While one of the Left or Header sets is usually just a progression of dates, or time, you can decide which one is most appropriate. Note that if a data table is used for the Left Column, or Right Header Column then this is considered to be the Parent Table.
Loop Type
Choose one of Loop through Dates, Time, Table or Hand-code.
Description
A description for use on the data set list.
This is the Left Column
Tick this on if this is the data set for the Left column.
Left Column Header
Set the header of the Left Column here.
This is the Right Column Headers
Tick this on if this is the data set for the Right Column Headers.
Date Range - From Date
If the Loop Type is set as Loop through Dates, then set the Date Boundaries here.
Date Range - To Date
See From Date above.
Time - Time per row
If the Loop Type is Loop through Time then set the time allocated to each row here. This is in Clarion time, ie 1 hour = 360000.

Table Tab (Loop through Table)

Table
the name of the table to loop through.
Unique Key
The unique key for the table (usually the primary key). This is the same key as is used by the Form.
Order
The sort order for the table.
Child Link to Parent ID field
Only applicable to planners, to the data which appears in the Right column. This field marks the field in this table which is linked to the Parent table (where the parent table is either the Left column, or Right Column Header set.)
Filter
An optional filter for the table.
(From) Date Field
The field in the table that contains the Date. this might be the From date (say in an employee leave record) or the single date (say in a public holiday record.)
(From) Time Field
An optional field containing the from time field in the data
To Date Field
An optional field identifying the End Date field.
To Time Field
An optional field to indicate the end time for the data record.
or Duration Days Field
If no end date field is available, then possibly a field containing the duration (in days) exists.
or Duration Time Field
If no end time field exists, then possible a time duration field exists.

View Fields Tab (Loop through Table)

View fields are fields added to the View. This is the mechanism used to tell the template that a field will be needed, and should be fetched when looping through the data.
Field
the name of the field to fetch.
Description
A description of the field, for the field list.

Content Tab

Content
The text that should be added to each cell.
Tip
The text to display when the user hovers over each cell (that contains data.)
Image (Big)
An Image to display in the cell (when the calendar is in Big mode.)
Image (Small)
An Image to display in the cell (when the calendar is in Small mode.)

CSS Tab

CSS Style
The CSS Style to apply to the cell.
Use Generated Classes
Tick this on if the style is linked to data in another table. the generated classed are created on the CSS Classes tab for the procedure. If this is on then be sure to set the settings there as well.
Link field
The field in the current table which links to the primary key of the styles table.
To Table
The table containing the styles.
Foreground Color
An alternative to using generated classes, use this if the data itself contains a field with the foreground color. Or any expression that will determine the color of this data set.
Background Color
See foreground Color above.

Form Tab

Form Control Procedure
Enter the form procedure here that will be used to edit the data in this data set. Since the calendar can display multiple data sets, it follows that each form can have a different form.
Open form as popup
Tick this on if the form would be opened in Popup mode rather than Page mode.
Insert into this Table
Only one data set can have this option on. If the user clicks on an empty cell, then this determines which data will be added. For example, if a calendar showed both employee leave information, and public holidays, and the user clicks on an empty cell, then a record can only be added to one of those tables. The choice is somewhat arbitrary, and will depend on the context of the page in the application.
Insert into Primary Table
Read Only IF
Records being display are Read Only (ie a form will not open when they are clicked) if this condition is false.

Layout Tab (Months Type)

Number of Months
The number of months to display on the page. This can be a number from 1 to 12. 1 is recommended for the Big view, 12, or some factor of 12, for the small view. (See CSS Classes Tab, Default Set.)
Show Month Name
Choose between None, Full, Short or Initial.
Include Year
Tick this on to include the year at the top of each month.
Show Weekday Name
Choose between None Full Short or Initial.
Compress Week-Lines
In any year some months have 4 weeks, and some have 5. Some months will span across 6 calendar weeks. If you are displaying multiple months then it is useful that they all draw the same size, in other words spanning a 6 week period, even if they only span 5, or even 4, weeks. If this option is on the month will only display the weeks it spans, not the full 6 possible weeks. Tick this on if you are only displaying one month at a time.
First Day
By default the first day of the week is a Sunday, however in some countries the first day of the week is a Monday. Select the first day of the week you wish to use here.
Window Width (pixels)
When the procedure is called as a popup, then this sets the width of that popup.
Window Top Offset (pixels)
when the procedure is called as a popup, then this sets the position, from the top of the screen, where the popup will appear.

Layout Tab (Planner Type)

A planner is divided into three parts. The left pane contains the one axis, the top area contains the second axis, and the right page contains the data. The right can can span multiple days, but is a time-based axis so can display a limited amount of time per day if desired.
Pixels wide per column
The default width per day for each column in the right pane.
or Pixels per hour
Alternatively you can specify a width per hour. This is particularly useful if the time boundaries for the day are variable.
Day Start Time
The Clarion time for the start of the day. This defaults to 0, midnight, but if you are doing say daily appointments, then you might choose to start the day at 6am. (6 * 360000 = 2160000).
Day End Time
See Day Start Time above.
Show times on background
If on the the time boundaries for the day are shown in the background of the cell. Not all browsers support this.
Padding (pixels)
The amount of padding to use in the cells.
Left Pane - Height (pixels)
The height of each row.
Right Pane - Initial width (pixels)
The total width of the right pane by default.
Right Pane - Resizable
If this is on then the user can make the right pane bigger or smaller.

Options Tab

Allow Drag and Drop
If this option is on then records can be dragged from one cell to another.

xHTML Tab

CSS Classes Tab

Default set
Choose between Big or Small. This is the basic calendar size that will be used. Use small when multiple months are visible. Each small month can be expanded to a big month by the user.
Month set
Defaults to ''.
Month Header
Defaults to ''.
Month Header Cell
Defaults to ''.
Month Day Cell
Defaults to ''.
Month Empty Day Cell
Defaults to ''.
Big - Month
Defaults to ''.
Big - Content
Defaults to ''.
Big - Label (with content)
Defaults to ''.
Big - Label (when no content)
Defaults to ''.
Small - Month
Defaults to ''.
Small - Content
Defaults to ''.
Small - Label (with content)
Defaults to ''.
Small - Label (when no content)
Defaults to ''.
Heading
Defaults to ''.
Subheading
Defaults to ''.

Generated Classes

In many cases the colors used by the cells is based not on fixed styles in some CSS file, but rather on some data in the database. To accommodate this it is possible to generate styles on the fly. The generated style name is an s followed by the contents of the ID field below.
Table
The table containing the data.
Filter
A filter for the table.
ID Field
The ID field in the table. If a string it must contain only alpha-numeric characters which are allowed in a CSS style name.
Foreground Color
The field containing the foreground color.
Background Color
The field containing the background color.
Other CSS Properties
The file may contain other data, which can be used to set other properties in the style.
Property
The name of the CSS property to set. Remember CSS is case sensitive. 
Value
The value to set the property to.

Security Tab

Advanced Tab

Page Header Tag
You can enter an alternate tag here to override the one set in the WebServer procedure. Note that this is usually pointing at a NetWebSource procedure, and is entered in Tag format, eg
'<!-- Net:ProcedureName -->'
.
Page Footer Tag
See Page Header Tag above.
Tip for empty cells
Enter the tip that will be displayed when the user hovers the mouse over a cell which contains no data. Defaults to 'Click here to insert a record'.
Refresh via WebSocket
If this is on then a NetRefresh connection is established with the server. If a table, used by this procedure is changed then the calendar is updated.
Timer (1000ths/sec)
Timers are not usually recommended, but if a timer is necessary then it can be entered here. Note that the value is in thousandths of a second, not hundredths of a second. Be aware that this will trigger a call from the browser to the server each time the timer goes off. If 100 people are triggering this timer then that is 100 requests coming in every time the timer goes off in those respective browsers. The overuse of timers can easily overload the server for large numbers of users.

NetWebService Procedure Template

This procedure acts as a collection of Service Methods. This collection is known as a Class, however it is different to a normal Class because no Objects of this class ever exist. Each method operates in isolation from the rest of the collection.

Please note that the NetWebService procedure requires xFiles .

General Tab

Page Name (no quotes)
The procedure name is sufficient to call the procedure in a URL. However some situations require you to call a procedure with an extension, for example whatever.asm, entering a page name here (without quotes) allows you to create a pseudonym for the page which will work in the URL as well.
Documentation - Description
A general description of the service. This is included on the documentation page for the service.
Documentation - Page Title
This is the title that appears on the caption bar of the browser, and on the tab header of the browser when the documentation page for the service is open.
Documentation - Browse can cache file
Allows the browser to cache the documentation page. Recommended if the page is not changing (ie if development of the service has been finished).
Send Stage to Debugview
If on then a message will be sent to Debugview at the start, and end of this procedure. This can make it easier to understand when the procedure is being called.

Methods Tab

Method Procedure
 A list of procedures, created with the NetWebServiceMethod procedure template, that are part of this collection.
Auto-Methods
NOTE: This feature is not yet operation : Many services, especially RESTful services, work directly on a table in the database. These Auto-Methods automatically add this functionality to this service for a single table in the dcitionary. This is a short-cut to coding the methods individually.
Table
The table to read from and/or write to.
Allow Insert
Allow records to be inserted into the table.
Allow Read
Allow records to be read from the table.
Allow Update
Allow records in the table to be updated.
Allow Delete
Allow records in the table to be deleted.

Priming Tab

This tab is only used if the Auto-Methods procedure is turned on.
Set Field
To Value
Only if Field is not already set
Prime for Insert
Prime for Change

Security Tab

Scripts Tab

Scripts can be included on the auto-generated documentation page for the service. These scripts will be included on both the ServiceHelp page and the MethodHelp page. Scripts are not included in the WSDL file, or in the actual replies to the web service itself.

See NetWebPage Scripts Tab

CSS Class Tab

Advanced Tab

This tab allows you to override settings in the WSDL file.
Name Space
A unique name space for this class - usually the same as the procedure name.
URL
The URL for the name space. Usually host/service

NetWebServiceMethod Procedure Template

A NetWebServiceMethod procedure is a method that you create, that is usually attached to a NetWebService. What the method does is entirely up to you. Embed points are provided for you to add your own code.

Please note that the NetWebServiceMethod procedure requires xFiles

If using jFiles then the NetWebServiceMethod procedure requires jFiles
 

General Tab

Part of Service
The name of the service to which this method belongs. This will create a "Recursive call" item to appear in your application tree. This is completely normal, and is not a problem.
Name Space
This is an attribute used in some parts of the WSDL file. It defaults to the name of the service, but you can override it here if you like.
Description
A description of the method which will appear in the auto-documentation for the method.
Page Name
The procedure name is sufficient to call the procedure in a URL. However some situations require you to call a procedure with an extension, for example whatever.asm, entering a page name here (without quotes) allows you to create a pseudonym for the page which will work in the URL as well.
Support XML (requires xFiles)
If this is set to default then the global setting will be used. If this is set to Yes then the Method will support incoming XML data, and will allow the client to request an XML response. If set to No then incoming and outgoing XML is not supported, and not included in the automatic documentation.
Support JSON (requires jFiles)
If this is set to default then the global setting will be used. If this is set to Yes then the Method will support incoming Json data, and will allow the client to request a Json response. If set to No then incoming and outgoing JSON is not supported, and not included in the automatic documentation.
Generate XML Object
By default a simple xml object will be generated by the NetTalk code. However this does not allow you to override methods and so on. If you want more control over the XML object, tick this off and add the xFiles object manually using the xFiles local extension template in the Extensions section of this procedure. You MUST be sure to call name the object xml.
Generate JSON Object
If you have the Global Activate jFiles extension in the app then the Methods will automatically support JSON as both an input, and output option. This setting is the same as the option above, but applies to the jFiles local extension rather than the xfiles local extension.
This is a Sync Procedure
Turn this on if this is a Sync procedure. This option will automatically be turned on if any of the parameters are a Table with the Allow Sync option set. If this is on then some other settings (like response tags) are locked to best match the client side procedures.
Send Stage to Debugview
If on then a message will be sent to Debugview at the start, and end of this procedure. This can make it easier to understand when the procedure is being called.
Send Parameters  to Debugview
If on then the incoming parameters will be sent to Debugview once they have been parsed from the incoming request. This is a quick way during development to see that the incoming request is good and that it has been parsed correctly.
Server Code (Button)
Clicking on this button takes you to the embed point where you will set all the values in your RETURNS fields. At this point all the parameters have been parsed and the parameter fields are thus ready.

Parameters Tab

Incoming Parameters are expressed as a list of variables and queues. While local data is recommended for this, it is also possible to use Global data variables (like table fields) as incoming parameters. Global variables that are not THREADed should not be used.
The incoming request packet is automatically parsed, and the variables listed are primed with the incoming values. Variables not passed in as part of the request are cleared.
If the incoming packet is a POST, and the post data is formatted as XML, then incoming queues (lists) are allowed. The local queue will be primed with the contents of the incoming list.
Type
The incoming field type.

Table is used for tables declared in the dictionary. This is a "list" type, so multiple records can be received.

Queue is similar to Table, but uses a locally declared Queue field instead of a dictionary table. While it's possible to use a global queue in place of a local queue this would not be advisable. If non-threaded multiple users would end up using the same queue, and global non-threaded queues are not thread safe. (A global threaded queue would have a very short life, and no benefit over a local queue.)

Group is similar to Queue except that only a single record is expected, not a list.

File is used for an "attached" file submitted with the incoming POST request. For simple formatting this is the same as doing a File Upload from a browser. When the incoming data is formatted as XML or JSON then the incoming data is assumed to be Base64 encoded. The data type you use for this field must be a StringTheory object - not a String. It differs from the StringTheory type below by automatically base64 decoding the value. The value is not automatically saved to disk - you can save it using the StringTheory SaveFile method with the appropriate filename and path.

StringTheory is for a string of unknown length. Trailing spaces are removed.

String and Number fields indicate an incoming value (placed into a locally declared variable.)

The Date and Time types behave the same as the String type, except that they are identified as Date and Time fields in the WSDL file. If the Picture is blank then the p_web.site.datepicture is used for dates, and '@T1' is used for times.
 
Description
A description that appears in the auto-documentation.
Fieldname Case
Applies to Table, Queue and Group fields. This determines the Case of the tags in the structure.

Table Type

The parameter type Table is a special case because it means that extra code will be added to the method procedure to allow writing and updating the database. This also implies an Action field will be added to the parameters for this method.
Table
The name of the table from the dictionary.
Unique Key
The unique key, usually the Primary key, of the table that will be used to identify existing records.
Fieldname Case
allows you to set the case of the field names. If AsIs is chosen then the External Name of the field (as written) will be used. If not External name attribute exists then the field will be the UPPER case of the field label.
Include Field Prefixes
If this is on then the table prefix will be included with all the fields in the record. 
Generate Table Boundary Tag
If this is on (recommended) then there is an xml boundary surrounding all the items in the list.
Record Boundary Tag (no quotes)
The xml tag name for the table - usually the same name as the table, but can be different if you choose.
Allow Inserts
Tick this on to allow inserts to be made into the table.
Allow Reads
Tick this on to allow reads to be made into the table.
Allow Updates
Tick this on to allow updates to be made to the table
Allow Deletes
Tick this on to allow Deletes to be made on the table.
Allow Sync
This option is only available in NetTalk Apps level. It adds server side support for table synchronization. See here for more.
Auto Deformat Fields
If this is set to Default the the global setting applies. If set to Yes then non-string dictionary fields will be deformatted according to the dictionary picture when receiving incoming XML or JSON. For more information on deformatting of incoming fields, see here.
Required
Tick this on if this parameter is required.

Other Types

Parameter
The field which you want to place the incoming parameter into. The incoming request is parsed, and what ever value is passed in, is put into this field. In the case of an incoming list, and this selected field being a matching queue, then the queue will be populated by all the records in the list.
ID Parameter for REST
A REST style request allows for a a parameter to be passed as part of the URL. The first parameter with this option ticked will be primed with that value. If no parameter is ticked then the ID field of the first TABLE in the parameter list will be used. If no TABLE parameters exist then the first field is used.
This is the Session ID
If you tick this on and the incoming data contains this parameter, and there is not cookie in the request for setting the session, then this parameter can hold the session value. For example, say this paramater is called TOKEN and the incoming request has a value called TOKEN, and the request does not contain a SessionID cookie, then this TOKEN will be used as the session ID. This assists clients who cannot pass the session ID as a cookie, but which to pass it inside the incoming request.
Include Field Prefixes
If this is on for Group and Queue fields, then the prefix will be included in the incoming field names.
Record Boundary Tag (no quotes)
If the field type is a queue, then this is the XML tag for each row of the queue. If this field is not a queue then this is the identifier for the field. Usually this is the same as the fieldname, but it can be different if desired.
External Name (no quotes)
For non-list fields this specifies the External name that will be used for this field. Use this field where the external name will differ from the Clarion variable name. This allows you to use characters which are valid in HTML, JSON and XML, but not valid in a Clarion variable name.
Picture
The expected picture of the incoming type (if one exists).
Auto Deformat Fields
If this is on then non-string dictionary fields will be deformatted according to the dictionary picture when receiving incoming XML or JSON. For more information on deformatting of incoming fields, see here
Required
Tick this on if the request has to include this field. If the request does not include this field an error will be returned.
Default Value
If the field is not required, and is not included in the request, then you can enter a default value for the field here.
Min Value
Enter the minimum value for the field here. If the field is formatted (like say a date), then this is the unformatted, raw, minimum value.
Max Value
Enter the maximum value for the field here.

Returns Tab

Unlike a Clarion procedure, a NetWebServiceMethod can return multiple values. These values can include simple data variables, but can also be more complex constructions, like a Group, Queue, Table or View. There are two implicit return values which are added to every NetTalk service. These are the ServiceErrorQueue and the ServiceResultQueue. If there are any entries in the ServiceErrorQueue then all other return values to the caller are not sent.

You can populate your own errors into the ServiceErrorQueue using the p_web.AddServiceError method. The results queue can be populated by a call to the p_web.AddServiceResult method.
Return Type
One of Field, Group, View, Queue, Table or StringTheory.

Field is any single field - this can be from a table, or a local data field.

Group is a group, which can be from inside a table declaration, or a local variable.

View, Queue and Table are list types, which can contain multiple records.

StringTheory is a string of unknown length.
Condition
If this condition fails, then this return value will not be included in the
Only If Results Queue Empty
This return type will only be populated into the returned values if the Results Queue is empty. The results queue can be populated by a call to the p_web.AddServiceResult method. The template will generate entries into this queue if one of the incoming parameters is of type Table, and the user action is set to insert, update or delete.
JSON Wrapper
The name of the wrapper around the JSON result set sent back to the caller.
XML Wrapper
The name of the wrapper around the XML result set sent back to the caller.
Default Return Format
This allows you to set the default return format, as per rule 8 of the Return Format Rules.
Include Service Result Queue in WSDL
If on the the standard ServiceResultQueue will be included in the WSDL. If off it will not.
Format Return For
Lets you determine if the output from the method should be formatted for readbility or compactness. The default can be set on the global WebServer extension.

Field Type

Return Field
If the type is a field, then this is the field to return. Usually it is a local variable, or a table field, or something like that.
Field Tag
Usually the field name is used as-is as the xml tag for the return field. However you can change it to a different value here if you choose.
JSON Type
Set to one of the available JJSON types. The default is String. Use Auto to have the method auto-detect the type (based on the contents) and use that. Use Numeric for force the field to be Numeric.

Group Type

Return Group
If the type is a group, then this is the group to return. Usually it is a local variable, or a table field, or something like that.
Include Field Prefixes
If this is on the the field prefix will be included in the field name in the returned value. For example the id field in the settings group would be returned as set_id. If this is off then the prefix is not included.
Group Tag
Usually the group name is used as-is as the xml tag for the group boundary. However you can change it to a different value here if you choose. If you want to change the tag for a field inside the group, then set the normal Clarion Name attribute for that field.

Queue Type

Return Queue
If the type is a queue, then this is the queue to return. Usually it is declared as a local queue. You are responsible to populate the queue with whatever information you choose.
Include Field Prefixes
If this is on the the field prefix will be included in the field name in the returned value. For example the id field in the customers queue would be returned as cus_id. If this is off then the prefix is not included.
Queue Tag
Usually the queue name is used as-is as the xml tag for the queue boundary. However you can change it to a different value here if you choose. If you want to change the tag for a field inside the queue, then set the normal Clarion Name attribute for that field.
Record Tag (no quotes)
This separates one record from another in the output.

View Type

Return View
Generate View Structure
This is the name of the view to return. This can be the name of the view to be generated, or the name of a hand-coded view already added to the procedure.
Include Field Prefixes
If this is on the the field prefix will be included in the field name in the returned value. For example the id field in the customers table would be returned as cus_id. If this is off then the prefix is not included.
View Tag (no quotes)
Usually the view name is used as-is as the xml tag for the view boundary. However you can change it to a different value here if you choose. If you want to change the tag for a field inside the table, then set the normal Clarion Name attribute for that field.
Record Tag (no quotes)
This separates one record from another in the output.
View Table
Select the table to create the View from.
Order By
Set the order for the view structure here. This is a comma separated list of fields, and is an expression, so use quotes around the string for a fixed list.
Filter
Enter a filter for the View structure here.
Fields
If the fields list is empty then all the fields in the table structure (not memos or blobs) will be included in the reply.
Blobs in View
(Work Around for PTSS 42444). Tick this on if there are any BLOBs in the VIEW. If this is on then all the Blob fields in the table will be in the JSON output, regardless of whether the BLOB is blank or not. If this option is not on, and the Table is SQL, then only BLOBs containing data may be output. TPS tables always output the BLOB content, even if the value is blank. Future versions of Clarion may output blank BLOBs if this option is on, but as of writing this, Blank BLOB's are not output for SQL tables IF this option is OFF.

Table Type

This will return all the data in the table, including all rows and all columns. If you want to filter the data then use a View field type as the return value instead.
Return Table
If the type is a table, then this is the table to return.
Include Field Prefixes
If this is on the the field prefix will be included in the field name in the returned value. For example the id field in the customers table would be returned as cus_id. If this is off then the prefix is not included.
Table Tag
Usually the table name is used as-is as the xml tag for the table boundary. However you can change it to a different value here if you choose. If you want to change the tag for a field inside the queue, then set the normal Clarion Name attribute for that field.
Record Tag (no quotes)
This separates one record from another in the output.

Priming Tab

Set Field
To
Only if Field is not already set
Prime for Insert
Prime for Change

Security Tab

Private
If this option is on then the method is not included in the WSDL file, or in the Auto-Generated documentation for the Method. You can still call the method using any of the normal techniques (GET, POST, SOAP) but the method will not "advertise" its presence in either the WSDL or on generated HTML pages.
User must be logged in
If the user is not logged in then a 401 (Unauthorized) response will be sent to the client.
User must be >= Level
If the user is not above the required level then a 401 (Unauthorized) response will be sent to the client.
User must be <= Level
If the user is not below the required level then a 401 (Unauthorized) response will be sent to the client.
Only serve if Secure TLS
This method will only be served if this is a TLS connection. Not that the ancillaries (documentation for the method, WSDL and so on) can still be served over a non-secure connection.
Delete Session Immediately
If this is on then the user session is deleted as soon as the method ends. This can also be set at the Service level and will then apply to all the methods in the service.

NetWebMenu Extension Template

The NetWebMenu template is added to NetWebSource procedures (usually the header) procedure to make navigating through your application easier. Multiple menus can be added to the same procedure with minimal effort. Thus it is possible to design an app with both a menu at the top, and a menu on the left, or even a menu on the right as well.

Menu Tab

Menu Type
A number of menu types are available for use in the application. Some are horizontal (like the DoubleDrop menu) others are vertical (like the Taskpanel or Accordion menus). The Mobile menu type is optimized for small devices, and the menu will automatically switch to this type when a mobile device is detected. Two menu types (Chrome and XP Panel) are included for backward compatibility, but are deprecated and should not be used. If you are using either of these types you will need to turn on the CSS and JavaScript for them in the WebServer procedure.
Allow Menu Type Change at Runtime
If this option is on then code for all the menu types is generated into the procedure, and the menu being used is selected (and can be changed) at runtime. For large menus this can generate a lot of code, and for some programs (with hundreds or thousands of menu items) it can generate too much code for the compiler. Set this option off to only generate code for the menu type set in the template.
Menu Id
Each menu template on the page needs a unique name. The default is 'menu'. If you are adding multiple menus to the procedure then made sure each one has a unique id.
Open Links As
Sets the default action for all menus and menu items. The action can be overridden at the menu, or menu item level. Options are Link (to open the pages as simple URL page links), Content (to open the items into the content body of the page) or Popup (to open all the links as direct popups.)
Position
This option is only applicable if the menu is an Accordion or Task-Panel menu type. (Remember - the menu type can be changed at runtime.) It determines if the menu appears on the left or right side of the content. The menu position (like the menu type) can be changed by using the runtime setting word (_menu_ by default) followed by the word pos. So, for example,
http://127.0.0.1:88?_menu_pos=1 
Valid values are 0 for left and 1 for right.

Menus

Menus typically contain a collection of menu items. However some menu types also allow them to trigger behavior. Options that are duplicated at the Menu Item level are described there, so are not repeated here.
Menu Text
The text to display for the menu.
Menu Condition
An expression which, when true, will allow the menu to be displayed.
Menu starts open
Some menus (like the Taskpanel menu) have an Open and a Closed state. By default menus are closed. An expression can be entered here - if true the menu will start in the Open state.
URL
The URL of a page or procedure to open when the menu itself is selected. URLS are always opened in Link mode. Not all menu types support linking directly from the menu name.
or Procedure
If a URL is not specified then you can specify a Procedure instead.
Parameters
Parameters to be included in the call to the procedure, or URL. This is a standard URL parameter list of the form name=value&name=value&name=value etc.
Open As
If set to Default then the setting for the menu extension is used. Alternatively you can specify Link, Content or Popup.
Action
If the procedure being called is a form, then you can aset the form action here.
Table ID Value
If the Action is Change or View etc, then you can set the record id here. For mobile apps you can set this to '_first_' to get the first record in the table - so a good option for control tables.
Popup Title
If opened as a Popup this allows you to set the title of the Popup being opened.
Target Frame
Allows you to set the Frame the page will open into. If a target is set then the item will be opened in Link mode.
onClick (JavaScript)
Some actual JavaScript code to execute when the menu is clicked.
Items - General Tab
Level
Some menus allows for nested menu items. If this number is set to a higher number than the preceding item, then it will be displayed as a sub-item of that item. The default for most items in this field is 1.
Item Text
The text (if any) that you want to appear for the menu item.
Item Condition
If the existence of the menu item is conditional, then enter the condition here. For example p_web.GetSessionLoggedIn() = 0 results in a menu item only visible when the user is logged out.
User must be Logged in
The user must be logged in, in order for this menu item to appear.
Runtime Access Controlled by Secwin
Tick this on if you want Secwin to control which users are able to see this menu item.
Access Group Number
This is a Secwin setting, and specifies the Access Group that the field belongs to.
User must be >= Level
Distinct from Secwin is the concept of User Levels. If you are making use of Levels, and you only want the items to be visible to some levels, then you can use this field, and the following field.
User must be <= level
See previous field.
URL
The URL that will be requested when the menu item is clicked. Use this field if the click takes you to an external page, or a static file in the web folder. For procedures in the app rather use the following field.
Or Procedure
The procedure that will be called when the menu item is clicked. This could be a NetWebPage, NetWebBrowse, NetWebForm or NetWebYear procedure. It cannot be a NetWebSource procedure.
Parameters
This allows you to add URL Parameters to the procedure call. this string should be formatted as a & separated list, for example 'insert=true&Save=false'.
Open as
If you select default then the default setting for the extension will be used.

If you choose Link then the item will be opened as a normal web URL page.

If you choose Content and if you are calling a control (NetWebBrowse, NetWebForm, NetWebYear) not a NetWebPage then it allows the control to replace the content of the page, without having to resent the header or footer. This can be faster. Also the URL will not appear in the address bar of the browser.

If you are calling a control (NetWebBrowse, NetWebForm, NetWebYear) not a NetWebPage then you can select Popup. This will cause the control to appear in a popup, with the original page remaining untouched.
Title
If called as a Popup you can specify the Title of the popup here.
Target Frame
If you are using frames, and you want the URL to open in a separate Frame, then enter the target frame name here.
onClick (JavaScript)
If you wish to execute some JavaScript when the item is clicked, then enter it here. While the JavaScript may trigger a request, you cannot set both this field and the URL or Procedure field.
Items - Image Tab
Menu items can consist of images, images with text, or just text. If you want to add an image to your menu item then add the details for it here.
Image
The web-relative path and name of the image. For example 'images/mail.png'.
Image Width
The width of the image in pixels. If omitted the width of the image is used.
Image Height
The height of the image in pixels. If omitted the height of the image is used.
Image Alt
the alternate text to place on the page if the image is not available. This is helpful for screen readers or for pages where the user has suppressed images completely.
Line break after image
In some menu types, especially the Taskpanel and Accordion menus, the image may be quite large. Tick this option on if you want the text in the menu to appear underneath the image.
Add Secwin Menus
Click on this button to add the Secwin menu items to the menu. this button is only enabled if the Secwin Global Extension has been added to the application.

CSS Classes Tab

Wrap menu in table
If this is on then the menu is wrapped in a <table> structure. This can make styling the menu easier for some menu types. By default this option is off.
CSS Class
Applies to the <table> structure if the menu is wrapped in a table. Defaults to 'menutable'

Double Drop Tab

Menu Bat Div Style
Defaults to 'nt-menu-div ui-corner-br'
Menu Bar Style
Defaults to 'nt-menu'

Taskpanel Tab

Menu Div
Defaults to 'nt-left'
Menu Panel
Defaults to ''
Menu Panel Inside
Defaults to 'nt-padding-1'

Accordion Tab

Accordion Menu
Defaults to ' nt-width-150px'
Title
Defaults to 'accordionTabTitleBar'
Content
Defaults to 'accordionTabContentBox'

Mobile Tab

JQM Theme
Defaults to ''
Menu Bar Div Style
Defaults to 'nt-mob-menu-div'
Menu Bar Style
Defaults to 'nt-mob-menu'

Chrome Tab

Note that the Chrome menu type is deprecated, so rather use one of the other menu types.
Menu Bar Style
Defaults to 'chromemenu'
Drop Menu
Defaults to 'DropMenu'
Items without URLSs
Defaults to 'chromesep'

XP_Panel Tab

Note that the XP Panel menu type is deprecated, so rather use one of the other menu types.
Pane
Defaults to 'dhtmlgoodies_xpPane'
Panel
Defaults to 'dhtmlgoodies_panel'
Content
Defaults to 'panelContent'
Inside
Defaults to 'panelInside'
Height
Defaults to ''. Include the unit (px or em) when specifying this value.

Advanced Tab

Runtime setting word
It is possible for the user to change the menu type at runtime. This can be done on a NetWebForm, or just by passing a specific value as part of the URL. Bt default this value is _menu_, and so could be called as ?_menu_=1 or ?_menu_=2 and so on. If you want to suppress this behavior, or if you have multiple menus on the page, then you can customize the value here. The default is '_menu_'.
Generate Menu outside of Header Div
Menus are typically included in the generic Header procedure in the application. For styling reasons it may be desirable to include the menu as part of the header, but outside the <DIV> container that the header is in. If you wish to do that tick this option on.

NetWebFrame Extension Template

The NetWebFrame Extension is added to a NetWebPage procedure to turn that procedure into a FrameSet. Frames were popular at one stage, but are largely considered unnecessary today as the capabilities of browsers have improved. Also with the explosion of mobile devices Frames are considered a poor choice as they dramatically reduce your options for responsive design when encountering devices with small screens. If you have a site based on Frames then the document on converting to non-frames is recommended.

Creating new apps based on Frames should be avoided.

General Tab

Framesets are recursive. That means that each frameset contains a mix of framesets and frames.
Name
Each frameset has a unique name. It can be pretty much anything you like.
Border Width
The width of the border around the frame, in pixels.
Rows
The number of rows that this frameset contains. It could be just 1, or it could be more than 1.
Row Sizes
A comma separated list containing the same number of elements as there are rows. Each element is the width of that row. One element can use a * for the element signifying that that row hasa variable size. For example if there are 3 rows, this might be set to '87,*,20'.
Columns
The number of columns that this frameset contains.
Column Sizes
A comma separated list containing the same number of elements as there are columns. Each element is the height of that column. One element can use a * for the element signifying that that column has a variable size. For example if there are 2 columns, this might be set to '100,*'.

Contents

The number of items in the Contents field should match the number of rows or columns as specified above.
Another Frameset or a Frame
Each division in a frameset can contain another frameset, or a frame. (Ultimately all the panes in the frameset are a frame.)
Frameset Name
If another frameset goes here, then enter the frameset name. You can then declare that frameset under the framesets list.
Frame Name
If the item is a Frame then enter the frame name here. When specifying a target for a URL elsewhere in the application, this is the name you will use as the target. Avoid frame names that start with an underscore ( _ ) because all the reserved names start with an underscore.
URL
The default page URL to be populated into this frame when the frameset is first opened.
Scrolling
Turn this on to allow scroll bars to appear if the page is too big for the frame.
Frame Border
Turn this on to make the frame borders visible to the end user.
Allow Resizing
turn this on to allow the end user to resize the frame.
Left/Right Margin
Set this to be the left, or top, margin for the frame.
Top / Bottom Margin
Set this to be the bottom, or right, margin for the frame.
Cascade Alert
If this is on, and the Page is called with a parameter called Alert, then all the frame pages are passed that parameter as well.

Advanced Tab

Text if Browser doesn't support Frames
This text will be displayed on the page if the browser the user is using does not support frames at all.

NetWebGraph Extension Template

This template is added to window procedures in your application that contain an Insight Graphing Control. This allows the server to embed graphs (generated by this procedure) onto web pages. Note that you must copy the LibPng.DLL and Zlib.DLL files to your application folder, or the graphs will not appear.

NetWebReport Extension Template

This template is added to report procedures. It adds the necessary code to allow the procedure to send the completed report (in PDF format) to the browser. Because it needs the report to be in PDF format, you will need a PDF Exporter for your report (either the Clarion Enterprise Edition Report-to-PDF template, or the PDF-Tools SDK from Tracker.)
No Records Source
The name of a NetWebSource procedure which will provide the HTML necessary if the report is blank. If this field is empty a default empty page (with the No Records popup) will be displayed.
No Records Popup
the message to popup up if the report has no records.

NetWebBorder Extension Template

This template is obsolete now and is no longer necessary. It is included here for backwards compatibility, however it can be replaced with a simple DIV element, with a border and ui-corner-all CSS class in the xHTML tab.

General Tab

Border Style
Chose from the list of border styles.
Blank Line Above
Tick this on if you want a gap between this HTML and the HTML before it. Typically turned on if this HTML is a Footer procedure.
Blank Line Below
Tick this on if you want a gap between this HTML and the HTML that follows. Typically turned on if this HTML is a Header procedure.

xHTML Tab

CSS Classes Tab

Div Class
Defaults to 'nt-width-100'.
Fieldset Class
Defaults to ''.

NetWebServer Performance Monitoring Control

This Control template is added to the WebServer window. It has no template options. It allows you to monitor the performance of the server. In includes statistics on how long the server has been running, what the total work done by the server is, the typical speeds for replies, the maximum load and resources consumed by the server, and so on.

TemplateNetWebServer Logging Control Template

This Control template is added to the WebServer window. It allows the server to log the incoming requests to a file. A new file will be created every day. Logging can be useful to analyze traffic, determine popular functions in the site, and so on.

For information on the location of the log file, see Paths.

Log Tab

Table
The label of the table (in the dictionary) into which the log records will be written.
Field
The field in the table that will accept the log data.
Log File Name Variable
The log file needs a variable path name so that a new log can be created every day. The actual name of the file will be set by the class, but the variable which contains the name needs tobe set here.
[End of this document]