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

CapeSoft NetTalk
WebServer Template  Reference

This document is a work-in-progress

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;

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.

Advanced 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.
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.
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.

WebServer 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

Browse
Doubleclick Row to Form
If this is on the user can double-click on a browse row to open the form.
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 abandonned.

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
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) in the settings below.
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 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 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 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 Google Maps Script
Work-in-progress - Do not tick this on for now.
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
the default theme to use for the site. Enter the name here (in quotes).
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 SSL 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.
Certificate
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 part of the certificate here. For example, if the file is called settings.crt and settings.key, then you would enter just 'settings' here, without the extension.
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.
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.

Advanced Tab

Combine common files
JavaScript and CSS files are simpel 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.
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.
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 not 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.
Front Loaded
This is an experimental setting for a Work-In-Progress and should not be used at this time.

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.
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.

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.
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.
Span Columns
Enter the number of columns to span here.
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.
Column Width (pixels)
You can fix the column to a specific width (in pixels) by entering a value here. If omitted then the browse will automatically adjust to display the information.
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
The loc:columns variable can be useful if the top row contains the maximum number of columns.
Data spans multiple rows
Tick this on if this column should span multiple rows. This is useful on multi-row browses.
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.
Column
Select one of the built-in CSS classes for the column, or select custom to use a different class.
Header
enter the CSS for the column header here.
Contents
The CSS here will be applied to the contents of the browse cell, but not the cell itself.
Cell
The CSS here will be applied to the browse cell.
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.
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
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
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.

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.

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.
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 on the page. This option is currently a work-in-progress.
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 (pixels)
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.
Browse 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.

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
See Span Columns above.

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.
Span Rows
See Span Columns.
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.
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 jsut valid HTML.
Allow Unsafe xHTML in Heading
Allows the xHTML in the header to contain HTML which is considered to be unsafe.
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.
Load Tabs on Demand
Work-In-Progrss - Not for use yet.
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

Field are grouped together into "Tabs".

Form Tabs

Tab Heading
This is the heading that appears on the Tab.
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.
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.
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 - on for the prompts, one for the values, and a third for the comments.
Field
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.)
Use Equate (no quotes)
A unique ID on the form for the field. 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.
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.)
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.
Tooltip
The tooltip that will be displayed when the user hovers over the field.
Span prompt/value/comment
(Procedure type is always spanned) If this is on, then the Prompt, Value and Comment cells will be combined for this field.
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
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.
Width (chars)
Sets the width of the field, expressed as a number of characters. This does not limit the actual number of characters which can be entered in the field (that is determined by the Picture). Because fonts are of variable width, the actual screen width is calculated based on a wide character, strings of narrower characters may display more characters than this setting.
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.
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.
Color
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.
Email
Settings specific to the Email field type. 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.
Right Justify
Tick this on to right-justify the contents of this entry field.
Max Length
Sets the maximum length that will be accepted in the field. this defaults to the length of the string which will store the result.
Send every keypress to server
If this is on then an event is sent to the server as each key is pressed. This allows the developer finer control over exactly what the user is typing.
More
See the Common Settings for more.
File Upload
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.
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.
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.
More
See the Common Settings for more.
Map
Settings specific to the Map field type. This field type is not complete, and not yet ready for use.
Media
Settings specific to the Media field type.
Text
URL
Width (pixels)
Height (pixels)
Autoplay
Procedure
Settings specific to the Procedure field type.
Procedure
Parameter Condition
Parameter
Value
Signature
Settings specific to the Signature field type.
Width (pixels)
Height (pixels)
Allow on Insert Only
Include Clear Button
Clear Button Text
Use jQuery Button
Clear Button Icon
Include Guide Line
Save Signature as Image File
Save to File on Insert
Save to File on Change
Procedure
File Name
More
See the Common Settings for more.
String
Settings specific to the String field type.
Lookup Button
Hide Lookup button (Use Hotkey Only)
Password Field
Right Justify
Picture
Max Length
Auto Tab
Send Every Keypress To Server
More
See the Common Settings for more.
Spinner
Settings specific to the Spinner field type.
Page Step
Quick Scroll
Up Icon
Down Icon
URL
Settings specific to the URL field type. See the Email field type above for the meaning of the settings. As with the email field, the URL field primarily allows on-screen keyboards to display in a slightly modified form, making the entry of URL's easier.
Validation
CSS
Client Side
Security

Priming Tab

Priming Tab

Set Field
To Value (Clarion)
To Value (PHP)
To Value (JavaScript)
Only if Field is not already set
Prime for Insert
Prime for Copy
Prime for Change
Prime for Save
(From) Date Field
To Date Field
Time Field
Round time to nearest

Layout Tab

Save Tab

Include Save button

Close Tab

Include Close button

Cancel Tab

Include Cancel button
Prompt for Confirmation
Confirmation Question
Yes
No

Delete Tab

Include Delete button
Prompt for Confirmation
Confirmation Question
Yes
No
Confirm Title
Form Buttons Position
Span Columns
Vertical
Suppress Comments
Table width (pixels)
Prompt width (pixels)
Value width (pixels)
Comment width (pixels)
Window width (pixels)
Window Top Offset
Min Height (pixels)
Save enabled all the time

xHTML Tab

See xHTML Tab

CSS Classes Tab

Validation Tab

Generate Automatic Comments
Immediate Validation
Sound when valid
Sound when not valid
Popup invalid message in browser
Show invalid message on top of form
Wizard: Validate Tab on NEXT

Security Tab

Allow Inserts
Allow Copies
Allow Updates
Allow View
Allow Deletes
See Security Tab

Advanced Tab

Page Header Tag
Page Footer Tag
Prime Auto Inc if necessary
Prime Auto Inc even if not necessary
Ignore Key not being Unique
Default Form Action
Key Fields
Prime Key from Parent

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.

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

See NetWebPage 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

See NetWebPage 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'.
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.
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.

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.
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.
Menu Condition
You can enter a condition here. If the condition fails then all the menus, and all menu items, will be omitted form the page. This is useful when you have multiple menus in the procedure, and you want to display them only in specific circumstances.
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.
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
TThe 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
TThe 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

See NetWebPage 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.

Log Tab

File
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]
Return to NetTalk Documentation Index