1.25 Original version programmed and released as open source and freeware by Ben Ziegler. 2.00 Many, many, many things added, like remote administation, frames support, charting, Javascript support, statistics collection, logon security, file upload, javascript based menutree component and alot more. Most part of internal routines largely rewritten to support new functionality, avoid use of 3rd party libs unless extremely needed (Bens Lib) enhance stability. Kim Bo Madsen (kbm@optical.dk) 2.10 First stable version 2. The system is in its 2.10 release really very stable and is used for a large web based ISAPI EIS (Executive Information System) application. Kim Bo Madsen (kbm@optical.dk) 2.11 Fixed bug so a wannabe admin doesnt get aut. routed to another machine even if not authenticated. Prepared network timing utilities which when enabled in a future version will show up in the stats display. 2.12 Implemented network timing utilities. Fixed bug in TWABD_MenuTree where OnEvent JS function was reallocated even if it was allocated in the parent TWABD_Body. 2.13 Fixed bug not calling mousedown on TWABD_Chart. KBM 28-08-2000 2.20 Added TWABD_HTML and TWABD_HTMLFile (with support for file caching). Supporting Cookies in TWABD_Session. Improved variable access routines. Added Stateless sessions which will be destroyed right after use. Kim Bo Madsen (kbm@optical.dk) 27-11-2000 2.21 Added missing HTML_Input file. Added Anders Melanders GifImage KBM 05-Jan-2001 sources in a zipfile (not newest version). Fixed renamed MainForm (MainBody now) attribute reference in WABD_Admin. Fixed menutree.js javascript. Please reload it into the javascript component pointed at by the TWABD_MenuTree to activate the new changes. Fixed Acess Violation on Preview Browser on TWABD_Form. 2.22 Fixed TWABD_Label CanClick=true assertion error. Reason was missing _ in WABD_LABEL_STR. 2.23 Added TWABD_HTMLEmbed and TWABD_HTMLFileEmbed. Removed TWABD_RawSection. Fixed TWABD_Table_Strings.SetSafeSize which resulted in corrupt string array. bug reported by reidr@buzybee.com. Fixed several bugs todo with using Session without checking for nil. (Will be nil in design mode). TWABD_Raw changed name to TWABD_HTMLSection. If you have used TWABD_Raw anywhere, you have to change it to use TWABD_HTMLSection. You can preserve existing work by using the Borland utility 'Convert' to convert your datamodules (*.DFM) to text and then manually rename Lines to HTML for all TWABD_Raw entries. Then rename all references to TWABD_Raw to TWABD_HTMLSection. Further open your *.pas/*.cpp files in notepad and change all references too. Sorry if this causes troubles, but it is required to keep a consistent naming scheme. 2.24 Added Show procedure to TWABD_Base_HTML. Thus one can force to show html instead of form dynamically during runtime. Made GetFilePath,GetLocalFilePath,GetImagePath,GetLocalImagePath public in TWABD_Setup. Changed reading ImagePath etc. to return only user setup, not interpreted stuff. Use GetImagePath etc. instead. Added NoWrap property to section objects. Added OnSetupClickableCell event for TWABD_Table and TWABD_Datatable for setting up if each cell is clickable and what is the target. Added OnUserClickCell event to TWABD_Table and TWABD_DataTable for reacting to users clicking a clickable cell. Enhanced TWABD_Table and TWABD_DataTable to allow Javascript for table, row and cell. Enhanced TWABD_Base_Image not to specify width and height if imageheight and imagewidth<=0. Fixed radio button behaviour and generated A/V on new session. Fixed showing TWABD_HTML or TWABD_HTMLFile in a frame. Fixed TWABD_MenuTree to generate correct node layout. Added support for embedding TWABD_MenuTree in subframe. Note only 1 TWABD_Menutree is allowed in the same webbrowser. 2.25 Added support for reloading menutree frame with new data on frame reload. Prepared for multiple concurrent menutrees in same browser. Fixed TWABD_Menutree loaddata generation on last top level node. Enhanced frames support to allow showing a frameset and subsequent frames within another frame. 2.26 Changed to use Height/Width instead of ImageHeight/ImageWidth in IMG html. Added AutoSize property (boolean) to determine if to autosize image when ImageFile is set. Added Align property to TWABD_Formsection. Added TWABD_ExternalFrame for external framereferences for Target/SubmitTo. TWABD_FormSection_Base.Object_To_HTML now makes one cell less in headerline. 2.27 Added Height property for TWABD_FormSection and TWABD_Table. Fixed setting properties for non submitted forms (when a frame is loading the form f.ex.) Added VertAlign property to TWABD_Formsection. Renamed Align to HorzAlign in TWABD_FormSection. Changed the type of Cell oriented alignments to TWABD_HorzAlignment/TWBAD_VertAlignment. Changed name of TWABD_FormSection_Base to TWABD_FormSection_Grid and let it inherit from new TWABD_FormSection_Base. Added new TWABD_FormSection_Base which contains size and alignment settings. BEWARE that installing this version WILL require a few changes in your designtime properties. Remember to open all datamodules and ignore the warnings. Then reset the appropriate alignment values and if needed correct the eventhandler for cell setup. Added support for Height/Width on TWABD_Form level. Added support for showing another form on exception in OnExcetpion in TWABD_Session. 2.28 Added out of order detection for TWABD_Form. Check IsOutOfOrder and OnOutOfOrder event. 2.29 Added support for multiple selections in listboxes. Fixed bug on clickable TWABD_Image. Bug reported by Henk Fikkert (henk.fikkert@simulation.nl) 2.30 Fixed script 'Collection' bug in Menutree javascript. Fixed menutree layout problem with two seperate subnodes. Fixed so OnShow is called before menutree is shown. Fixed AddNode on TWABD_MenuTree. Fixed Cell/Row Javascript of TWABD_Table variants. Made CreateSessionCookie public and improved it a bit. Added new method SaveHTMLToFile(AFile:string) which can be called for every kbmWABD element to generate static HTML. You can then f.ex. reference the static HTML using a TWABD_HTMLFile or TWABD_HTMLEmbed. Added Version property to TWABD_Session and TWABD_SessionMgr which simply reports the version of kbmWABD. 2.30a Added installation package for D3. Updated installation instructions (installation.txt) 2.31 Added support for file upload from browser (TWABD_UploadFile). Added UseSessionCookie property to all TWABD_Body based components. Default true for TWABD_HTML/HTMLFile body, and false for others. Added EncType to TWABD_Body. Published it in TWABD_HTML/HTMLFile and TWABD_Form. Default empty. Added support for Title on several form objects. Notice that this is not widely supported by browsers. Prepared support for other interfaces than ISAPI with Kylix and Apache in mind :) Thus removed HTML_Input.pas, and introduced several new units like: WABD_Cookies.pas, WABD_Request.pas, WABD_Response.pas, WABD_HTMLRequest.pas 2.32 Changed TWABD_Frame.LinkForm to TWABD_Frame.LinkBody. You can change the name of your existing properties in your current DFM's by using the Borland tool Convert.exe to convert the DFM to text and back. Cleaned up Javascript event support. Now many more objects has support for more Javascript events. Removed unlogical JS_OnUserEvent on TWABD_Frameset. Ignore errors when opening form. HTMLRequest parsing routines now checking for no data. Changed so JS event code generation only surrounds eventhandler with " if eventhandler contains space and is not already surrounded by ' or ". Added installation packages for D4 and BCB4. Renamed installation packages to have same naming style as the other kbmxxx products. Added nice About screen :) Removed orphaned FileData from TWABD_UploadFile. Shouldnt have been there in the first place. Please ignore property errors from this. 2.33 13. July. 2001 Automatic support for WML (Wap phones) now added. Following components are compatible with WAP and can generate and understand WML: TWABD_HTML, TWABD_HTMLFile, TWABD_Form, TWABD_FormSection, TWABD_HTMLSection, TWABD_HTMLFileSection, TWABD_AutoRefresh, TWABD_Expires, TWABD_BlankLines, TWABD_HTMLEmbed, HTML_HTMLFileEmbed, TWABD_AutoLoad, TWABD_Image, TWABD_LiveImage, TWABD_Chart, TWABD_Label, TWABD_Memo, TWABD_Button, TWABD_Edit, TWABD_ComboBox, TWABD_ListBox, TWABD_Anchor and TWABD_CheckBox. Some properties are only used by HTML for some of the components since they have no natural place in WML. All other components are simply ignored during WML generation. Added NoWrap to formsection_grid objects which if true will override settings on section object level. Added Format and EmptyOK to TWABD_Edit. These are only used by WAP. Added Produce property to TWABD_Session to specify what output should be produced. It can be set to prodAuto, prodHTML and prodWML. If set to auto, the request from the client will determine what format will be returned. Added liAuto to TWABD_LiveImage ImageType. If set to liAuto, then the imagetype send will be determined according to the Session.Produce and in case of HTML, the number of colors in the image. Added MaxAge to TWABD_Expires. Enhanced so adding an allready existing cookie will auto overwrite it. Added Literal property to TWABD_Table/TWABD_Datatable as suggested by Henk Fikkert. Added self parameter to TWABD_Session.OnException event handler. Added OnException handler to TWABD_SessionMgr (last line of defence). Fixed A/V bugs when TWABD_AutoLoad and TWABD_AutoRefresh was used. Added NewSession boolean to TWABD_AutoRefresh. If no URL specified and false will attempt to reload in current session, otherwise starts a new session. If URL is specified, reloads external page pointed to by URL. Improved TWABD_Anchor. If no destination or Target given the anchor will be percieved as a bookmark (a destination for a anchor). To jump to a bookmark, set the destination of another anchor to #nameofbookmark where nameofbookmark is the name of the TWABD_Anchor bookmark component. This is only valid for HTML, not WML. Remember to keep the generated WML relatively small for WAP devices not to choke. Images typically should be max 170x100 pixels large, although kbmWABD supports them much bigger. Modified the body searching mechanism to automatically look in multiple datamodules. The purpose is if a session has several datamodules opened at the same time to evenly distribute the kbmWABD components on them. Suggested by Szakály Balázs (szakalyb@freemail.hu). Added alternative menutree_clicktext.js folder/menu tree Javascript which allows clicking on the caption, not only icon, to activate action. Bed calls... needs sleep now :) 2.34 16. July. 2001 - Added support for D6. Now all code is seperated in runtime and designtime. - Fixed bug in TWABD_Menu.ProcessRequest where nodes added programmatically didnt fire the click event as expected. Problem was different owners of the programatically added nodes. Bug reported by Henk Fikkert (henk.fikkert@simulation.nl) - Removed forgotten ShowMessage in TWABD_UploadFile. Problem spotted by Fred Schetterer (fredsegroups@home.com). - Added designtime changing of size of components by click and drag on right or lower edge of component in formsection designer. - Added Lock and Unlock thread locking on TWABD_Setup. Made all Getxxxx calls threadsafe. This will allow setting a TWABD_Setup on the sessionmanager module and let it be used by session modules. Remember to Lock...Unlock when setting properties at runtime if a TWABD_Setup is shared between sessions. - Added LocalRootPath which if AutoSetGlobalRootPath is true alters the WABD_DefaultRequestLocalFilePath global variable. - Added ExpandFromGlobalRootPath property which if true will use WABD_DefaultRequestLocalFilePath for expanding paths. - Added ExpandFromRootPath property which if true will build local path names from GlobalRootPath or LocalRootPath and a relative LocalFile/LocalImage path. Only one TWABD_Setup on the TWABD_SessionMgr should have AutoSetGlobalRootPath:=true. - Fixed multipart parsing when final line not ending with #10#13. - Added RandomSessionID boolean on TWABD_SessionMgr (default false). If true will generate random session id number instead of sequential. Remember setting SiteID to -1 will generate a random site id 0-255. The siteid and the sessionid is combined for a 32 bit session id for the clients. - Added TotalSessionCount readonly property which returns the total number of spawned sessions since the ISAPI was started.