Update 5.36.0

New: Base styles and scripts developed using latest language standards. In order to use these you will need to change your template stylesheets and scripts. Besides external stylesheets and scripts you should only need to add a single .scss such as styles.scss. This should include @use statements to include the other stylesheets required. Same goes for scripts. You should only need one javascript module such as main.js and that will have import statements for other modules to include.

New: New property added Application.PageImage. This is the path of the default image for the page being requested. This can be also be set in the @ Page directive of an aspx file as you can with Application.PageTitle and Application.PageDescription.

New: New property Template.Image. This is the path of the default image when using this template for the page being requested. You can include an expression just like you can for Template.Title and Template.Description.

New: New attributes added ClassDefinition.PageTitle, ClassDefinition.PageDescription and ClassDefinition.PageImage. If no expression is supplied then by default the attributes will return the BusinessObject.Title, BusinessObject.Description and BusinessObject.Image property value if they exist on the business object.

New: When generating the title meta tag the system will use Template.Title if one exists, ClassDefinition.PageTitle (i.e. BusinessObject.Definition.PageTitle(BusinessObject)) if value returned, otherwise uses Application.PageTitle. Same goes for description meta tag. You can also access these values from the merge object as PageTitle, PageDescription and PageImage.

New: You can use PageTitle, PageDescription and PageImage in expressions in your HTML templates as these values will exist on the merge object when merged.

New: Keywords meta tag is no longer output.

New: You can now use JavaScript modules. For modules only, when minify is specified the path will be to a min/ subfolder rather than the extension .min.js. The minified files of the modules will be generated when requested the first time. If the main javascript module changes the subfolder is deleted in order for them all to be regenerated upon request.

New: SASS compiler to allow for latest standards.

New: CSS and Javascript minify compiler to allow for latest standards.

New: Application.VisibleServiceTimes default file name has been changed to calendar.

New: BusinessObject.GetFileURLPropertyPathAndFileName(PropertyName) which will return the full relative path to the file.

New: Default templates are chosen by the definition name of business objects and methods rather than the definition file name. For example, the template for BlogPosts now has to be blogposts not the definition file name blog.

New: When importing data with files, those files can be in the root of the zip or now match the base path. For example, say you export blog posts from one site and import them into another (both on this platform). You can now zip the blog folder and include that in the import.

New: When a URL is created for a collection that has filters, it will now include a file path for each filter (in most cases) rather than URL parameters.

New: Definition.CreateFilterMenu now generates with relative filter paths (in most cases) rather than URL parameters.

New: CollectionClassDefinition.GenerateHTMLFilterMenus now has an optional parameter IncludeSearchControl.

New: DefaultHomePageName now defaults to home rather than default.

Update: Modified generic output of BusinessObject.ToHTML and BusinessObject.MethodToHTML to allow for the new base styles and scripts.

New: SitePublicURLs.Scan will scan the cached content of the selected internal public URLs for new references and add them to public URLs.

New: SitePublicURL.Check will check and update cached content when different.

New: SitePublicURL.ViewCache to view the latest cached version of this URL.

Fix: Site.Clean now removes all URLs without a site reference with follow.

Fix: SetSitePublicURL now only adds the URL when there is a site reference with follow.

Fix: To who can execute ConfirmOrder.PayByOffsitePaymentMethod.

Fix: To the canonical URL.

Update 5.35.0

New: You can now add Definition.StyleClasses to any class, property, method or parameter. Those classes will be added to the HTML output class attribute.

New: Any return value from a method will be converted and output in the current response format. ie. JSON, XML, CSV or HTML.

New: BusinessObject.GetPropertySelectOptions(Path, GroupFilterValue, SearchText, MatchStart) returns object array of value, text, items (sub options if any).

Fix: When calling the method BusinessCollection.AddNew and inheritance is required.

Fix: HTML output when returned from a method.

Update 5.34.0

New: The system detects two new prepends to a URL path. These, along with no prepend, determine how the path is routed and whether or not custom view templates are used. The three modes are:

  • DBMS: When prepending dbms/ to a URL, as in https://yourdomain.com/dbms/blogposts/, the system will route the path via object and method definition names and DOES NOT use custom view templates.
  • Preview: When prepending preview/ to a URL, as in https://yourdomain.com/preview/blogposts/, the system will route the path via object and method definition names however DOES use custom view templates.
  • Custom: When nothing is prepending to a URL, as in https://yourdomain.com/blog/, the system will route the path via object and method file names and DOES use custom view templates.

New: You can now add SCSS and SASS stylesheets to a template. They will be compiled to CSS when changed and first loaded.

New: When a user subscribes to a group via Group.SubscribeNewUser which does not require payment, they are no longer logged in when doing so. If they later come back to register the system detects the user has not logged in and will allow them to register is if a new user.

New: BusinessCollection.FilterBy will ask for a filterable property then proceed to BusinessCollection.AppendFilter which has advanced filtering options for the selected property and when submitted will append it to the collection filter.

New: BusinessCollection.EditFilter will allow developers to edit the raw filter SQL.

New: BusinessCollection.AppendSort will ask for a sortable property to append to the collection sort.

New: BusinessCollection.EditSort will allow developers to edit the raw sort SQL.

New: BusinessCollection.EditColumns will allow developers to edit the comma-separated list of column names.

New: Session values can now be set for default values for method parameters.

New: BusinessMenuItem.PrependSubMenuItem.

New: Each component has it's own configuration settings.

New: Deprecated code now removed. This will make upgrading from version 4 quite difficult.

New: URLs including PageType parameter have been converted throughout the site to filename URLs. For example, /default.aspx?PageType=MethodView&Collection=Users&ID=555555&Method=SubscribeToGroup becomes /dbms/users/555555/subscribetogroup/ and /default.aspx?PageType=CustomView&Collection=BlogPosts&ID=151515 becomes /blog/151515/.

Update 5.33.0

New: Site.ViewMap which calls sitemap.xml for the select site.

New: SitePublicURLs.Check allowing you to select multiple at once to check.

Fix: SitePublicURL.ContentType was set to XML instead of HTML in certain circumstances, causing those pages to be excluded in the site map.

Fix: BusinessCollectionItem.FileName was not filterable or sortable even though in table.

Update 5.32.0

New: LinkingForeignCollectionDefinition.LinkingPropertyFilterExpression will append the supplied filter expression to the linking property collection filter expression.

New: LinkingForeignCollectionDefinition.LinkingPropertySortExpression will override the linking property collection sort expression with the supplied sort expression.

Update: When importing and Match Item By is set to FileName the system will convert it to a URL file name before matching.

Fix: BusinessCollection.FilterOnIDFileNameOrUniqueValues when supplied with empty string failed.

Fix: ItemDefinition.GenerateHTMLControl for calculated properties.

Fix: Path access denied when posting an email form in certain circumstances.

Fix: When posting an email form it now redirects directly when no success message supplied.

Fix: When posting an email form it now reloads form values when displaying success message.

Update 5.31.4

Update: Update the blog ping services.

Fix: Read only properties that were read from the database were not filterable or sortable.

Update 5.31.3

Fix: Error in Payment.AllowRefund when payment method was not a gateway payment method.

Update 5.31.2

Fix: Uploading of files where the property's base path did not end with a forward slash.

Fix: Application.SendRequest linked or attached files sometimes missing.

Fix: Application.SendRequest attached data file included values formatted for HTML.

Fix: Calculated properties by default have no repository and hence by default are not allowed for filtering and sorting.

Update 5.31.1

Fix: Error in BusinessCollection.Import when an item property unique name could not be found and that name needed to be HTML encoded.

Update 4.19.6

Fix: Fix: There is now no limit to the number of different cart items that can be added to a cart.

Update 5.31.0

New: BusinessCollection.Import.AttachedFiles takes a compressed folder (zip) of files to import. The property value in the imported list (csv, json or xml file) must match the file path and name in the zip. The import can be rerun (with matching) with a different compressed folder of files.

New: When sending emails from the email marketing system, attributes width, height, hspace, vspace and align will be added if matching style exists to IMG tags for backwards compatibity when viewing in Outlook.

New: Service.CreateEmail.ExcludeUsersAlreadyBooked parameter added and if true will add a Merge Filter to the Email.

New: ServiceBookingEmails which merges with bookings. For example, a thank you for attending email.

Fix: There is now no limit to the number of different cart items that can be added to a cart.

Fix: Cancelling membership not setting expiry correctly.

Fix: Running automated tasks returned access denied.

Update 4.19.5

Fix: Updated the Human Verification control for forms.

Fix: Changes to backend.2.1.css to fix search box.

Update 5.30.4

Fix: RSS feed main title and link were incorrect.

Fix: BusinessObject.GenerateJSON and BusinessObject.GenerateXML outputs were modified to include Definition and ToString for every object.

Update 5.30.3

Fix: Security Violation error when processing a payment via SecurePay.

Fix: Email form now redirects correctly.

Fix: Foreign collection visible even though allow view was false.

Update 5.30.2

Fix: To OffsitePaymentMethods using onsite iframes.

Fix: MembershipEmails when filtering by status.

Update 5.30.1

New: CourseActivity.HasPreviousActivity and CourseActivity.HasNextActivity.

New: When CollectionDefinition.EditorLines is set to zero the control height is set to auto-height.

Update: base-3.2.css styles updated for collection, object and method views.

Update: Defintion Inspector styling updated to make it easier to find properties and methods.

Update: Validation on credit card numbers.

Fix: A property of type file that is relative and can be uploaded was clearing the property when no new file selected.

Fix: Submit and Save returning incorrect values.

Update 5.30.0

New: Stripe Payment Gateway has been integrated and ready for use. There are 2 modes Stripe Onsite which collects credit/debit card info on your website and Stripe Offsite which uses an iframe on your site and supports many payment methods. Some payment methods may not be processed immediately and may require reconciliation with Stripe. Login to your Stripe account to activate those you want to accept. To avoid having to reconcile select only payment methods where Confirmation = Immediate.

New: The system can now refund payments and sometimes part payments depending on payment gateway integrated. SecurePay allow full payment only while both Stripe integrations allow full or part payment. This must be enabled under Payment Methods.

Fix: The system will not action an order until it meets the payment terms calculating the balance from only confirmed payments (not requiring reconciliation).

Fix: When API called from external application.

Fix: When viewing a foreign collection from an inherited primary object.

Fix: Saving an object did not alway show saved results before redirecting.

Fix: Returning relative WebAddress was prefixing absolute path even if already there.

Fix: Application.GetClassDefinition when case not the same. For example, StoredPaymentMethods and storedpaymentmethods.

Fix: Styling in Definition Inspector.

Update 5.29.0

New: API Key is required for posts from external applications. Add an External Application to get an API Key to use with that application.

New: Once a human has been verified the system will store a cookie, if cookies enabled, indicating that, otherwise will store in the session. This means the user does not have to repeat the verification once they have been verified.

New: PageType=EmailForm has been updated and integrated into Process Path version 2.

New: Additional validation of posted images min and max width and height.

New: Adding class="marquee" to an element will create an infinite scroll effect.

New: Added Fonts folder to file manager for developers.

Update 5.28.2

Fix: ServiceTime.BookUsers now asks for any optional extras that may be available (Options1 - Options5 on Service). By default, if there are options available then the number of users is locked to 1 as each user may require different options.

Update 4.19.4

Fix: ServiceTime.BookUsers now asks for any optional extras that may be available (Options1 - Options5 on Service). By default, if there are options available then the number of users is locked to 1 as each user may require different options.

Update 5.28.1

Fix: To requests that return JSON will now always return an object.

Fix: To scripts in base.3.2.js.

Fix: To styles in base.3.2.css.

Update 5.28.0

New: [Submit And Stay] button on system generated forms. By default ClassDefinition.SubmitAndSaveDisplayName is "Save & Stay" and MethodDefinition.SubmitAndSaveDisplayName is nothing which means it won't display unless set to something.

New: StylesheetDefinition and ScriptDefinition.

New: StylesheetDefinition, ScriptDefinition, XMLDefinition and JSONDefinition properties are displayed in an editor with colour coding.

New: GenerateHTMLDropDown generates a dropdown with a fieldset of radio buttons if single-select or checkboxes if multi-select.

New: GenerateHTMLSelect and GenerateHTMLFieldset now have an additional properties NoValueText which is what is displayed when there is an option with no value.

New: base.3.2.js replaces base.3.1.js and backend.2.1.js.

New: base.3.2.css replaces base.3.1.css and backend.2.1.css.

Update 5.27.0

New: API can now accept a post: you can use the same URL commands as per standard HTML requests. When posting data specify the format via the HTTP header Content-Type (see post MIME types below). You can specify the format you want returned in the HTTP header Accept (see accept MIME type below). You can also specify the returned format in the URL. For example, /json/tags/, /xml/tags/widgets/ or /csv/categories/.

  • application/x-www-form-urlencoded - post only
  • multipart/form-data - post only
  • text/html - accept only
  • application/json - post and accept
  • application/xml - post and accept
  • text/csv - post and accept

New: The system now creates a user access token for the device/agent they are logging in via. To retrieve the access token via API post the UserName and Password to /getuseraccesscode/. To use the token in an API call set the request header Authorization to "Bearer [token]".

New: You can now specify how long the system will store the user access token for auto login after a user ticks Remember Me.

New: You can now specify how long the system will store who the initial referral was.

New: Cookies are now only available using HTTPS and only visible on client where necessary. For example, A cookie named CookiesEnabled can be set client side depending on the user's consent.

New: Automated task results now store the HTTP Status Code return when the task was run. Results will also always be stored when an error occurs.

New: When a task is run the system will auto login the creator of the task unless otherwise specified with the AutoLogin property.

New: Attachment.SetToProperty will now also list properties with type of WebAddress.

New: Adding class="nav" to an input control will, on change, navigate to the value which is presumably a URL.

Fix: The noscript tag is only output on first session load and now uses the canonical URL.

Fix: Payment instructions URL included on invoice and order status message.

Fix: Collection.AddNew by default returns the new BusinessCollectionItem rather than a URL to the new item. This was implemented so API requests can post new items.

Fix: Form input value replacement.

Update 4.19.3

Fix: When a method is not editable all parameters default values are used.

Update 5.26.0

New: GenerateHTMLFieldset works like GenerateHTMLSelect however outputs a fieldset of inputs of type radio when single select or checkbox when multiple select.

New: BusinessObject.ToFormValues returns a NameValueCollection of property values.

New: BusinessObject.MethodToFormValues returns a NameValueCollection of parameter default values.

New: BusinessObject.MethodToJSON returns JSON of parameter default values.

New: BusinessObject.MethodToXML returns XML of parameter default values.

New: BusinessObject.MethodToCSV returns CSV of parameter default values.

Fix: Replace HTML control values when preloading a form. Also, now sets radio buttons and checkboxes when used instead of selects.

Update 5.25.0

New: LoggedInUserStoredPaymentMethods will return the current logged in user's stored payment methods.

New: GetLoggedInOrSelectedUser, GetSelectedUser and GetLoggedInUser are now public if accessible.

New: PageTitle can now be added to an ASPX @Page directive.

New: PageTitle variable can now be used when merging any web page.

New: GetDateTimes function can be used in scripts and will return an array of date/times based on the parameters passed.

New: FormatArray function can be used in scripts and will format each element in an array with the specified format parameter passed.

New: Javascript function which can be used to toggle a class based on an input value such as a select control.

Update: Membership.AutoRenew now defaults to Invoice.

Fix: Email.GenerateHTML was showing the same image multiple times if they had the same filename but in different folders.

Fix: Group.GetActiveMembershipCount was returning an incorrect result in certain circumstances.

Fix: The system will not update links in a web page, to include the relative folder, which is starting with a protocol (i.e. https://), forward slash (/), hash (#) and now a dot(.).

Fix: Change to the base stylesheet to remove an indent style specifically for mozilla browsers due to error which they have now fixed.

Fix: Definition inspector error when creating a table.

Fix: Definition inspector changing type of a method parameter.

Update 4.19.2

Fix: Error when outputting articles to static files.

Update 5.24.4

Fix: Error when outputting articles to static files.

Update 3.20.0

New: Upgrade to security and user access.

Update 4.19.1

Fix: Security issue with file manager.