Version 6.10

not released yet

  • GetLogicalPath() can return Proxied Urls
    GetLogicalPath() now gets a parameter that when true will return the original URL specified before a proxy redirected the URL to your application. Useful when using extensionless URLs redirected via Rewrite rules in IIS.

Version 6.07

September 16th, 2016

  • Angular 2.0 Project Template
    Added a pre-configured Angular 2.0 template that is post-installed into a newly created project. A new walk through describes how to set up a new Angular 2.0 project.

  • wwUtils GetWords() Function
    Added a new function that parses a string of multi-word text into a collection of words.

  • Updated Project Templates
    Updated the project templates and Console Project Wizard to generate more comments and notifications when a new project is created, so it's easier to known what to do after the wizard finishes.

Version 6.05

June 10th, 2016
no breaking changes

  • View Fox Code from Visual Studio Addin for Scripts/Templates
    You can now see the FoxPro Code option on the Visual Studio context menu for scripts and templates and even static HTML pages if the page contains SourceFile="<filename>". The file name can contain a ~ virtual path like: SourceFile="~/../Deploy/MyProcess.prg" which points back to the source code folder from the Web folder.

  • Web Connection Handler File Upload
    In addition to being able to upload a server EXE file, the handler now supports uploading of arbitrary files to the application's deploy\temp folder from the Handler admin page. This makes it easier to push files to the server without having to install an FTP server. Make sure you set the application's request limits to allow larger uploads.

  • wwUtils HumanizedDate() Function
    Function that returns a human readable string date or time (English only) such as just now, 10 minutes ago, 3 hours ago, yesterday. Anything over a year is turned into a short date: May 1, 2015.

  • wwUtils::FormatValue and wwUtils::FormatString
    Two methods that use .NET string formatting to allow you to use sophisticated string formatting in FoxPro. Easily create nicely formatted date strings, MIME or ISO date formats, non-padded number strings formatted to decimal places with automatic localized formatting.

  • Add cursor_legacy:cursorName to wwJsonSerialize table serialization
    You can now serialize cursors in the 'old' default format which included Rows and Count properties for the actual data array and record count. Provided for backwards compatibility.

  • Fix wwMaint Server File Editor
    Fix bug to properly write the correct file out to disk.

Version 6.0

April 2nd, 2016
Release Blog PostBreaking Changes

  • New Project Wizard
    Created an updated New Project Wizard that creates a self contained directory structure that holds code, data and Web content. The Wizard also auto configures all paths and related links in such a way that the application should be xcopy deployable if you take the entire folder structure to the server. The new structure links back to Web Connection source files in the original Web Connection install folder, and separates logic for your own projects away from the Web Connection core files.

  • New Project Wizard can now generate a REST Service
    The new project and new process Wizards now include an option to select the process class type to create. You can either create a standard Web Connection wwProcess class or a wwRestProject. The Rest project creates a service method sample.

  • New Projects generate a Server Configuration Script
    The New Project Wizard now also generates a <YourApp>_ServerSetup.prg file that is FoxPro PRG based script that can configure your Web application. The script is linked from <YourApp>Main.prg and can be run it <YourApp>.exe config from the command line in a deployed application.

  • Partial Pages Script and Templates
    There is now support for partial page references that allow you to render child pages from your Scripts and Templates. You can simply reference child pages with Web relative paths using < %= RenderPartial("~/PartialPage") % > where the ~/ points to the root of the Web site. You can also hard reference a file with a full path.

  • Scripts and Templates now support multi-line expressions
    Script and template pages now can use < %= expr() % > tags that span multiple lines with line breaks. This especially simplifies use cases where you use complex Html Helpers that include style information. All line breaks are converted to spaces. NOTE: This can cause a problem if you have literal strings that include CHR(13) or CHR(10) values.

  • Native Markdown Support in Scripts and Templates
    Script and template pages can embed < markdown > and < \markdown > tags to embed Markdown text into the markup. The Markdown is parsed inline as the Script or Template page is parsed.

  • Improved handling of Extensionless Urls
    Extensionless URLs are common on the Web and this version of Web Connection adds improved support for them by providing a clean re-write rule (needs to be uncommented) and some additional logic in wwProcess::UrlRewriteHandler and wwProcess::OnUrlRewrite.

  • Layout Pages and Sections for Script and Templates
    You can now also create Layout or "Master" pages for scripts and templates that serve as 'common content' containers for content pages. Layout pages typically contain HTML header and common page chrome data - page headers, menus, sidebars that are common to many pages. Layout pages are called from Content pages via < % Layout="~/_layout.wc" % > which renders the layout page, which in turn renders the content page into a < %= RenderContent() % > area. Layout pages can also contain section directives to let the content page provide content to embed into the Layout page.

  • Completely Rewritten Message Board
    The message board sample application has been re-written from scratch as an MVC style application using the scripting features in Web Connection 6.0. This application serves as a full featured example for doing MVC style development with Web Connection.

  • New Markdown Parser
    Added new MarkdownParser and MarkdownParserExtended classes that allow parsing of Markdown text to HTML. Markdown is a popular text editing format for developer Web sites and CMS systems that simplifies text input via the simple markup formatting of the Markdown Syntax.

  • jquery-resizable Plug-in
    Added a jquery-resiable plug-in that makes it easy to create resizable components in HTML with JavaScript. Great for resizable dialogs, splitters or components that you want to resize.

  • debounce() Function to throttle JavaScript events
    Added a small function that allows 'debouncing' events to a specified number of milliseconds. Allows throttling high volume events like window.resize() or drag events to be held and fire only at specified intervals to avoid overloading and hanging the browser.

  • New Visual Studio 2015 VSIX Add-in
    The Web Connection add-in has been updated to a full VSIX add-in that can be installed from Explorer by double-clicking. Functionality has also been updated to support View In Browser functionality for any type of HTML file including Web Connection Script files to make it easier to launch in the browser. If no configuration is provided the View in Browser feature still works with the default project configured URL.

  • wwProcess::ResolvePath()
    Resolves a virtual path (~) to a physical path on disk by replacing the virtual path specifier with the application path.

  • Allow Console.exe to run out of folders other than Wconnect Install Folder
    Console.exe can now run from any location. When the console run it'll now explicitly change path to the /wconnect install folder and change back to the original folder when complete.

  • .NET Handler Faster COM Server Loading
    Initial loading of COM servers when the servers are loaded has been improved significantly by removing a redundant load/unload cycle. Servers should now load twice as fast as previously.

  • .NET Handler now allows Hotswapping of File Based Servers
    You can now use File based messaging with the .NET Module and hotswap EXE servers. Like the COM Server feature, hotswapping allows dynamic updates of the server EXE file without shutting down IIS/Application Pools.

  • .NET Handler StatusPage Updates
    The .NET module now supports ~\ virtual paths for TempPath and ExeFile paths, and the status page now displays the fully resolved OS path.

  • ComValue::SetValueFromSystemConvert
    Method that allows wwDotnetBridge to set a value from the .NET System.Convert static class in a simpler way. Allows access to all System.Convert methods.

  • ComValue::SetUInt64 and SetUInt32 Methods
    Added additional type conversions for UInt64 and UInt32 values.

  • wwDotnetBridge::GetIndexedProperty()
    New method adds the ability to retrieve an indexed value from an IList based object like arrays and generic lists.

  • wwHtmlHelpers::HtmlDateTextBox()
    New Html helper that renders the BootStrap DateTimePicker or optionally a native UI on mobile devices.

  • wwHtmlHelpers HtmlDataGrid OnAfterRowsRendered Event
    Added an event that is fired when all rows in the grid have rendered. You can attach an expression that can then render HTML to inject additional HTML like a footer.

  • wwHtmlHelpers::HtmlErrorDisplay Updates
    Updated HtmlErrorDisplay to use BootStrap alert themes and use font-awesome icons. Also added HtmlErrorDisplayConfig class that can be used to configure this method, as well as work as standard Web Connection form validation object.

  • wwRequest::UnbindFormVars()
    Added a new method UnbindFormVars() that's very similar to Request.FormVarsToObject() but differs in that it returns an collection of ValidationErrors message if there are binding errors.

  • wwRequest::FormOrValue, wwRequest::FormSelected,wwRequest::FormChecked
    These new methods return value settings that can be embedded in script expressions into Web controls for value="", selected or checked values effectively. These methods basically use a model value on GET requests or Request.Form() values on post backs to write out their values facilitating display of PostBack control state.

  • wwRequest::GetMultipartFiles()
    This method returns multiple uploaded files as a collection. This function support the MULTIPLE attribute on the File Upload input control by accessing multiple files from a single form variable.

  • wwRequest::GetFormMultipleCollection()
    Like GetFormMultiple() but returns a collection instead of an array, to simplify working with the data more easily.

  • wwRequest::GetFormVarCollection()
    Like Request.aFormVars() but returns a collection of objects with Key and Value properties.

  • Response.ExpandScript() and Response.ExpandTemplate() Path Improvements
    These two functions now allow using ~ in the path to specify the virtual root. Example: Response.ExpandScript("~\testpage.wcs") or Response.ExpandScript("~\views\login.wcs"). You can also call either function without a parameter and it will use the template that references the Physical path of the request.

  • wwProcess::OnAuthenticated() and wwProcess::OnShowAuthenticationForm()
    Added additional features around authentication to make it easier to override the default authentication functionality. OnAuthenticated() is called when a user is authenticated either after logging in or after retrieving previous login information.OnShowAuthenticationForm() allows overriding the logic for displaying the authentication form so it's easy to hook in a custom form UI. The default form display now uses a customizable template so you might not have to modify code at all.

  • wwRestProcess::OnBeforeCallMethod()/OnAfterCallMethod()
    Hook methods that allow you to hook into the REST process call pipeline before and after a REST method is called. Allows modifying global parameters (like JsonServer.IsDebugMode) or examine and modify individual requests.

  • wwUtils.FlattenSql
    Flattens a multi-line SQL into a single line that FoxPro can execute at runtime using Macro expressions. Useful to allow you to write SQL with TEXT/ENDTEXT. Used internally in wwBusiness::Execute and wwBusiness::Query.

  • wwUtils.IsNumber Returns .T. if the provided value is a number, or a string that contains only digists and decimal/seperators (. and ,). Useful in many data binding scenarios to determine validity of number input.

  • wwHtmlHelpers HtmlBindingError
    This function can be used to display binding errors for input controls. By providing a control id and ValidationError collection errors can be displayed explicitly in relation to the related parent control.

  • wwHtmlHelpers HtmlPager
    New HtmlPager() function that can be used to place a pager on the stage by specifying a page number, total pages and a base navigation URL.

  • New wwJsonServiceClient Wrapper Class for Calling API Services
    This class provides an abstract CallService() method that automatically handles JSON serialization of parameters, making the HTTP call, and deserializing the JSON result back into a FoxPro class. The method makes the HTTP calls and handles all errors.

  • wwJsonSerializer::FormattedOutput Flag
    Added a flag to automatically format all output from Serialize() to be pretty formatted. This is a post-processing operation, so it adds some additional overhead, but can provide a nicer development experience.

Breaking Changes in v6.0

  • Web Connection .NET Module compiled in .NET 4.0
    We've changed the compilation mode of the .NET Module to .NET 4.0 which means that if you are running with .NET 2.0 on your server you need to switch (and possibly install) .NET 4.0. .NET 4.x is the default installed version on most servers and desktops today and 4.0 is forward compatible with 4.5 and later versions which improves stability and performance.

  • Legacy wwPageResponse Methods Removed
    The default response class used in new projects is the wwPageResponse class. This class has been trimmed down, and has removed all legacy functions that modified headers, generated cursors and others. It removes the ContentTypeHeader(), ShowCursor(),DbfPopup(), HtmlFooter(),HtmlHeader() the various form control functions and more. If you are using an old application that uses these function you can switch to use the wwPageResponse40 class instead which is a subclass that includes all the legacy function. Override wwProcess::cResponseClass and specify wwPageResponse40 and make sure you set the #define INCLUDE_LEGACY_RESPONSEMETHODS .T. in wconnect_override.h.

  • wwProcess::nPageScriptMode Default Change
    The default setting of nPageScriptMode which determines how non-method loose script files with a mapped extension are processed has changed. The new default value is 3 - Scripts which uses Response.ExpandScript(). Other Values: 2 - Web Control Framework Pages, 1 - Templates (Response.ExpandTemplate()).

  • wwProcess::ErrorMsg() requires an extra lcIcon Parameter
    The ErrorMsg() function now receives an extra parameter to receive an Icon that is used from FontAwesome. If you are overriding the ErrorMsg() function in your own applications, make sure to add the extra parameter signature.

  • wwJsonSerializer::Serialize "cursor:TCursor" now returns a raw Array
    wwJsonSerializer now serializes cursors that are created with cursor:CursorName syntax to a straight array. Previously this generated an object with a Count and Rows properties while cursor_rawarray:CursorName generated a raw array. The cursor:CursorName syntax now has the same behavior as the cursor_rawarray:CursorName syntax, which still works, but it is deprecated in favor of the shorter and more logic syntax.

  • wwSession Table Length changed to VarChar(17)
    We've added a new wwSession unique ID generation algorithm that generates longer and random ids which requires a wider field. Also changed the Fox and SQL types to VarChar so the data is no longer returned with trailing spaces. To update delete wwSession.dbf and let it recreate. For SQL either change the ID field to varchar(17) and update the Sql Scripts to reflect the new width or re-run the SQL Server configuration script from the Console.

  • wwDotnetBridge default .NET Version changed to .NET 4
    Changed the default version that wwDotnetBridge uses if no version is specified to Version 4.0 (which includes all 4.x versions including 4.5 and 4.6). If you want to use .NET 2.0 explicitly pass CREATEOBJECT("wwDotnetBridge","V2"). We recommend you always specify your version explicitly anyway and remember only the first load determines the runtime loaded.


© West Wind Technologies, 1996-2016 • Updated: 09/16/16
Comment or report problem with topic