Update 5.42.0

New: Inology.Core.NameValueCollection now implements iDictionary.

New: Application.UserTimeZone now gets the time zone from the IP info of the client IP address when possible, otherwise uses UserCountry.DefaultTimeZone.

New: PageURL, PageLanguage and ApplicationTitle are now included as merge properties.

Fix: Application.GetDefaultTemplate did not find correct template for custom business objects or methods.

Fix: Application.GenerateMembershipRenewalOrders regenerated an invoice in certain circumstances due to time zone conversions.

Fix: Application.ConvertPageTypeURL did not return correct path in certain circumstances.

Fix: Error on output when a property or method returned HTML that already had a DTD.

Update 3.21.0

New: One Time Passcode (OTP) has been added as a new method of Human Verification. If selected as the method, a [Request Code] button will be show and when clicked will request a passcode from the server to be sent to the user's email address.

Update 4.20.0

New: One Time Passcode (OTP) has been added as a new method of Human Verification. If selected as the method, a [Request Code] button will be show and when clicked will request a passcode from the server to be sent to the user's email address.

Update 5.41.1

Fix: Conversion failed from old URL format to new in some instances.

Fix: To base 3.2 stylesheet for forms layout.

Update 5.41.0

New: One Time Passcode (OTP) has been added as a new method of Human Verification. If selected as the method, a [Request Code] button will be show and when clicked will request a passcode from the server to be sent to the user's email address.

Fix: Very long URLs in a collection view would push the table beyond 100% width. A style has been added to break the URL anywhere so it will wrap.

Update 5.40.3

Fix: Automated tasks not logging in as the user before running causing an access denied error.

Fix: Access denied for blog, forum, etc. when management system not installed. This was changed to make them visible to the public even if not installed. This way a developer can add blog posts but no one else can.

Fix: Service.VenueTimeZone now defaulted to the base time zone.

Fix: Service.VisibleTimes were showing all times, not just those visible for current user.

Fix: When adding a trading item, it would not proceed to check out.

Fix: Rename default templates for articles, etc.

Fix: Various base stylesheet changes.

Update 5.40.2

Fix: When resetting password for new user that already has a user record on the database.

Fix: When the same user logs in on similar devices at the same time.

Fix: To include article file name in body classes.

Fix: To star rating now uses star icons.

Fix: To subscribe new user logs them in.

Fix: Processing order failed on date due to time zones.

Fix: To formatting of default page title for methods.

Fix: Default max height for images from 1200px to 1280px.

Fix: Various fixes to base scripts and stylesheets.

Update 3.20.2

Fix: All forms sent from admin email address with reply to the EmailAddress property.

Update 5.40.1

Fix: Sites.Check and Sites.Scan not completing all in one pass.

Fix: To home page displaying as Website.About when cached in Sites.

Fix: To BusinessCollection.CreateFilterExpression when multiple values passed.

Update 5.40.0

New: Date/time properties are now stored in UTC time and are displayed in the User's time zone. However, there are exceptions. For example, Date of Birth is stored and displayed as is, Order and Payment dates are generated and stored and viewed in the Base Time Zone. Service times are displayed in the Venue Time Zone if it has been set for the service.

New: Each country now has a default time zone. This is used as the default for a user.

New: A user can change the time zone if it is not what has been defaulted for them. https://yourwebsite.com/setusertimezone.

New: You can now set the time zone for a venue on a service. This means any times will be displayed in the venue time zone no matter what the time zone is the user is in.

Fix: To home page caching in Sites.

Update 5.39.1

Fix: When a user who initially signed up on another device or via a authentication provider returns to login they are redirected to verify and reset password.

Fix: Access denied when displaying status message after Group.ProcessSubscription.

Fix: When accessing website root (home) with parameters would display Website.About.

Fix: When validating email addresses and phone numbers when blank.

Fix: CollectionItem.RelativeURLFilePath included filter path for base collection. This caused an invalid Canonical URL

Fix: Collection.GetHTMLBreadCrumbs included filter path for base collection.

Fix: Various script and stylesheet updates, maily re the slider.

Update 5.39.0

New: A user can now create an account and login using an authentication service. In order to do that, you must sign up with one or more of the following providers and register the site.

  • Apple
  • Google
  • Microsoft
  • Amazon
  • Facebook
  • LinkedIn

Update: The default password strength has been increased to Strong.

Update: Base scripts and stylesheets.

Fix: Block cross-site form spam.

Update 5.38.0

New: A user can now create an account without using a password, if the browser and device they are using supports Web Authentication. This uses bio-metrics like face or thumbprint recognition if available.

New: The system detects the browser, device type and whether the a mobile device and creates a record of that device when a user signs up or logs in. This helps determine if a user automatically logs in on that device. The user can delete devices they are no longer using for login.

Fix: Block cross-site form spam.

Update 4.19.7

Fix: Block cross-site form spam.

Update 3.20.1

Fix: Block cross-site form spam.

Update 5.37.1

Update: Developer and Powered By images.

Fix: Fix to base styles fore color.

Fix: When importing with an existing file name, it was not using the imported file name.

Fix: When adding a new industry or tag set, checking for exisitng file name could be invalid.

Fix: To definition inspector styling.

Update 5.37.0

New: Client side styles now allow for dark and light modes.

New: The system will look for the default page image in /images/defaults/ with a name matching the definition file name of the object or method being merged. If not found it will find a match to inherited objects then finally to the application default image. For example, if the object being merged is the collection blog posts and definition file name is blog then the system will look for the following:

  • /images/defaults/blog.png
  • /images/defaults/blog.jpg
  • /images/defaults/articles.png
  • /images/defaults/articles.jpg
  • /images/defaults/website.png
  • /images/defaults/website.jpg

New: A user can now be added with just an email address.

Fix: To the BusinessCollection.RelativeURLPath generation with filter expressions.

Fix: When a Template.PageImage included an expression it wasn't merged.

Fix: Fix to client side scripts and stylesheets.

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.

Update 5.24.3

Fix: Image required even though there was already one saved.

Update 5.24.2

Fix: When the Website Temporarily Unavailable Page Name was set to a page a continuous redirect would cause the website to crash.

Update 4.19.0

New: Upgrade to security and user access.

Update 5.24.1

Fix: New registered users would have to reset password when they returned.

Update 5.24.0

New: User.OpenAsVCard will download the user information in a vCard format for import into user's contact database.

New: User.MiddleNames has been added.

Update 5.23.2

Fix: By default Website.VisibleUsers aka directory, cannot be viewed now. Website.VisibleUser(FileName) can be used for directory lookups. For example, /directory/john-mitchell.

Update 5.23.1

Fix: ItemDefinition.DefaultValue was disposing Application.User and the like.

Update 5.23.0

New: Upgrade to security and user access.

Fix: VisibleServiceTimes view was generating the time part of filename as 12 hour clock.

Update 5.22.0

New: Sitemap generator which also stores the public page content for fast loading when there is no user loggged in.

New: AllowFilterIndex on the property definition. When set to false the system will add nofollow on links filtered by this property and noindex on collection views filtered by this property. The default is false, accept for Item.Tags, Article.Category, Article.Brand, Article.Author and User.Industry.

New: Business.CanonicalURL which returns the absolute path and parameters for the custom view of the object. For example, https://inology.au/blog/tag/email-hosting/?Page=2.

New: CreateFilterMenu on a property now creates links to canonical urls and sets nofollow when more than one filter is used or the property's AllowFilterIndex is set to false.

Fix: Meta data noindex and nofollow have been set where appropriate.

Fix: Application.ArticleExists execution speed has been greatly increased which means the loading of the home page has increased because it uses the function to determine which page is the home page.

Fix: The noscript tag is added to the HTML output for every page where the JavaScriptEnabled parameter has not been set.

Fix: The EndSessionOnComplete parameter now works with process path version 2.

Update 5.21.4

Update: Defaults for Application.PoweredByWebsite and Application.DeveloperWebsite.

Fix: Extend max length to 1000 on Template.Title and Template.Description to allow for lengthy scripts.

Fix: Changed default sort order for services.

Update 5.21.3

New: When a file name is created from a title, the ampersands are replaced with "and".

New: Merging collection items can now update all links and add permanent URL redirects for the merged items.

Fix: To update all links when renaming a file.

Fix: To URL redirects match and replace.

Fix: Filter expressions using like.

Fix: Phone number validator.

Update 5.21.2

Update: Changed default sorting method for articles to [PublishingStatus],[PublishedOn] desc and pages and trading items to [PublishingStatus],[FileName].

Update: Changed how URL Redirects work including the pattern matching and what to replace.

Fix: When an item is renamed it also creates a redirect for when used in a filter. For example, a tag named widget /products/tag/widget.

Fix: Error thrown when ItemDefinition.SelectionFilterPropertyName is set and the filter property returned nothing.

Fix: When a menu item does not have a URL the title and onclick attributes are add to the span element.

Fix: To forms in collection view shows double info.

Update 5.21.1

New: Memberships.FilterByGroup and Memberships.FilterByMember.

New: Article.PublishingStatus added on database to enable sorting. The sort on articles now defaults to [PublishingStatus],[FileName].

Fix: Error when non-admin publishes an article.

Fix: User.AuthoredDocuments name changed to User.AuthoredArticles.

Fix: When new user option is selected in Website.SelectUser it still goes to check for registration if that is the default. If admin is logged in and the email address is found in the database, the system automatically selects that user.

Fix: RSS feed not working on website.

Fix: Error adding a SecurePayPaymentMethod.

Fix: XML output returning multiple declarations.

Fix: BusinessCollection.Import.

Fix: BusinessCollection.ToHTML not merging ItemTemplate element an article.

Fix: Styles updated to show item counts on filter menus.

Fix: Type not changing in definition inspector.

Update 5.21.0

New: BusinessCollection.Import can now merge matched rows giving preference to either the imported row or existing row.

New: BusinessCollection.Import can now import from multiple line fields to one. If the property is of type MultipleLineText then the system will look for a column in the import ending in Line1, Line2, etc. For example, PostalAddressLine1, PostalAddressLine2 and PostalAddressLine3 will be imported into PostalAddress.

New: BusinessCollection.Import can specify the date format being imported as one of the following:

  • Day Month Year
  • Month Day Year
  • Year Month Day

New: Common.ConvertToDateTime(DateTimeText, GenericDateFormat) has been added to enable manual sorting within the parent group.

New: Group.Position has been added to enable manual sorting within the parent group.

New: All Articles menu item under content management.

New: Many functions on business objects have been modified to return self.

New: All object properties including application and collection now can specify where the Repository is.

Fix: Error when adding a promotion.

Fix: After adding a promotion it returns to the list.

Fix: An object's item and collection properties filter and sort attributes are no longer visible and cannot be edited by the user.

Fix: Group.GetActiveMembershipCount returns an error when Group.MaximumMemberships set.

Fix: The actual error when making a payment is now displayed correctly.

Fix: CollectionClassDefintion.GenerteHTML merge expressions.

Update 5.20.0

New: BusinessCollection.Import will now except JSON and XML.

New: BusinessCollection.Import new excepts two more parameters MatchItemBy which except a unique column name and UpdateMatches which specified whether to skip or update rows that match.

New: JSON and XML exports now include both the ID and FileName along with ToString in a sub-element for Item types. When an item's property is referenced (i.e. Country.Code) then the system will create a sub-element for it. When multiple are grouped together (i.e. Country,Country.Code,Country.Name) then they will be grouped in the same sub-elememt.

New: XML export format now uses the definition name as the element name and ID is a sub-element, not an attribute.

Fix: JSON export now has the correct file extension.

New: BusinessCollection.IsExistingItem and BusinessCollection.Item now except a dictionary of name value pairs. It will first look for FileName and if not available use ID.

New: BusinessCollection.FilterOnIDFileNameOrUniqueValues now except a dictionary or array of dictionary of name value pairs. It will first look for FileName and if not available use ID.

New: Common.XMLToObject converts xml to an array/dictionary the same format as Common.JSONToObject.

Fix: JSON export now has the correct file extension.

Fix: Submit name in defintion inspector.

Update 5.19.0

New: ValueDefinitionAttribute.StoreSessionOnly had been replaced by enumeration ValueDefinitionAttribute.Repository which indicate where the value is stored:

  • Database: stores in a column in the table.
  • More Info: stores the name and value in a JSON column named More Info.
  • Request: stores only for the current request.
  • Session: stores in the user's session state.
  • Application: stores in the application state.

New: JSON table column MoreInfo replaces XML table column CustomProperties to store the custom properties in a name value collection.

New: PaymentMethod.MoreInfo and Email.MoreInfo have been created to store the custom properties from the inherited classes. For example, SecurePayPaymentMethod.MerchantID, OrderEmail.OrderStatus, etc.

New: A table column has been created for each custom property and the following system properties:

  • GatewayPaymentMethod.ReconciliationRequired
  • GatewayPaymentMethod.VerificationRequiredWithStoredPaymentMethod
  • OrderItem.RegularPrice
  • ServiceBooking.AdditionalInformation

New: ClassDefinitionAttribute.BaseType returns one of the following:

  • BusinessApplication
  • BusinessCollection
  • BusinessCollectionItem

New: JavaScript function to create a tabs on the client-side. To use set class="tabs" on the container element. The same element must have a child element of nav, to hold the table of contents, and one or more elements with an id for each content section. For example:

<div class="tabs">
  <nav>
    <ul>
      <li><a href="#content-one"><span>Content Section One</span></a></li>
      <li><a href="#content-two"><span>Content Section Two</span></a></li>
      <li><a href="#content-three"><span>Content Section Three</span></a></li>
    </ul>
  </nav>
  <div id="content-one">Content section one here...</div>
  <div id="content-two">Content section two here...</div>
  <div id="content-three">Content section three here...</div>
</div>

New: Definition inspector has been overhauled with a new look. You can also add a collection class or property directly via the inspector and it will add the table or column in the database if need be.

New: The dashboard shop now lists all products to easily add products to the cart without multiple roundtrips to the server to do so. A client-side search and filter by category have also been added to make it easy for the customer to find what they want fast.

New: ItemTypes.InheritsRank is a calculated column on the table used for sorting.

New: CustomDefinitionNamesStartWith now defaults to underscore if not provided.

New: ValueDefinitionAttribute.SQLDataType returns the data type required to store the property value in an SQL table column. For example, HTML = nvarchar(max), ID = int, Money = decimal(19,3), etc.

Fix: Error in MoneyDefinitionAttribute.FormatValue when round to value is whole number.

Fix: Error in EnumerationDefinitionAttribute.CompareValues when enumeration name passed.

Fix: GetCollection now throws an appropriate error if not found.

Fix: To output of ConvertSiteToXHTMLCompliant.

Fix: To the attributes of the following properties:

  • AutomatedTask.URL
  • AutomatedTask.Duration
  • CourseResult.CompletedOn
  • Email.FromEmailAddress
  • Email.ReplyEmailAddress
  • Email.MergeCollection
  • Email.MergePropertyForRecipient
  • Email.MergeFilterExpression
  • Email.MergeSort
  • Order.DiscountTaxRate
  • Order.FreightTaxRate
  • OrderItem.TaxRate
  • Payment.ProcessingFeeTaxRate
  • PaymentMethod.Currency
  • PaymentMethod.ProcessingFeePercentage
  • Promotion.DiscountRate
  • Subscription.AutoRenewDue
  • Task.URLToRun
  • Task.PercentageComplete
  • TaxRate.Rate
  • User.PasswordLastUpdatedOn

Update 5.18.1

Fix: To pricing for selected or logged in user.

Fix: When loading the filter expressions, the filter is reset without unnecessary code.

Fix: Organisation.Region was required in the database causing an error.

Update 5.18.0

New: counter.js function that shows a number incrementing or decrementing to a target value when visible in view port. To use set class="counter" on an element and the inner text is the target value. Also can use these optional attributes:

  • data-start is the starting value. Defaults to 0.
  • data-incremental-pause is the number of milliseconds to pause between increments. Defaults to 50.
  • data-increments is the number of increments to perform. Default is 40.
  • data-locale is the locale to use when formatting the number. Default is en-AU.
  • data-format-options are the options for formatting the number. Default is { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 }.

Fix: Menu item not showing as current when URL matched the current URL.

Fix: Parent group property not set when adding a sub group from that parent.

Fix: Processing boolean parameters of a method.

Fix: Display values when filtering a collection with in operator.

Fix: Dashboard membership summary and order summary clickable totals.

Update 5.17.4

Fix: Fix to checkout process returning an error due to invalid URL.

Update 5.17.3

Fix: Fix to freight calculations based on delivery zones.

Fix: Fix when an item in the object is not found the system will check for a redirect. For example, if /blog/my-blog-post was renamed to /blog/my-renamed-blog-post.

Update 5.17.2

Fix: Fix to function that determines if a member can renew automatically to a group.

Update 5.17.1

Fix: Postmaster email address ignored when checking for bounced emails.

Update 5.17.0

New: Membership.AutoRenew now can be set to:

  • No
  • Maybe: Send me an invoice.
  • Yes: Pay via my stored payment method.

New: When an email is generated, prior to sending to the recipients, the system scans the HTML for images that need to be resized, copies and resizes them in the email folder and updates the link.

New: Property data type PhoneNumber will check if number is compliant. Allows leading +, 3 to 15 numbers, opening bracket ( with matching closing bracket ), space and hyphen - separators. For example, +61 7 5535 8942, (07) 5535-8942, etc.

New: The following property was created on the website object to return organisations visible to the current user.

  • VisibleOrganisations with filename organisations

New: The system only retrieves required table rows when necessary. This can be overridden if you know most rows are going to be accessed, like menu items, and the system will return all so there are less requests to the database. To do this set CollectionDefinition.AlwaysFillWithoutFilters.

Fix: The search control, clear filter and items per page now include nofollow so search engines don't index.

Fix: When processing an order and notifications, invoice, etc. failed to send the process would stop. Now it continues with a note added to order.

Fix: Error retrieving display value in filter on collection when filtered on a variable like [Today].

Fix: Error in GenerateCaptchaImage.

Update 4.18.0

New: ServiceSchedule.AvailableQuantity and ServiceTime.AvailableQuantity when blank default to Service.AvailableQuantity.

Fix: Attachments can now be viewed without going via the primary object if allowed.

Update 5.16.2

Fix: BusinessObject.GetHTMLBreadCrumbs to show current object. Also, now will create links to the custom view by default if one exists.

Fix: Modified BusinessCollectionItem.ToString for new items.

Update 5.16.1

Fix: Canonical path for pages including home page.

Fix: Canonical path for collections.

Fix: Filter menu for items with sub-items such as categories and sub-categories.

Update 5.16.0

New: ClassDefinitionAttribute.SubmitDisplayNameExpression and MethodDefinitionAttribute.SubmitDisplayNameExpression allow you to set the name of submit button. For example, login method submit button might say "Sign In".

Update 5.15.1

Fix: Error when trying to cascade delete rows when the related table is a view.

Fix: When checking out from dashboard cart.

Update 5.15.0

New: ValueDefinitionAttribute.FilterMenuGrouping is used to group items in the filter menu. For example, grouping on Article.Issue might be [IssueYear] desc or grouping on User.Region might be [CountryName], [StateName]. Note: the group column names must exist on the table of the column filtering by. For example, CountryName and StateName must also exist on the Users table.

New: ValueDefinitionAttribute.FilterMenuSortAscending is used to sort items in the filter menu. True = Ascending and False = Descending.

New: Add calculated property Article.IssueYear which is used to group issues in filter menu.

Fix: EnumerationDefinitionAttribute.DefaultValue produced an error when enumeration name like Now could be evaluated.

Update 5.14.0

New: The following properties were created on the website and group objects to return published articles visible to the current user.

  • VisibleServiceTimes with filename servicetimes

New: Filter functions on visible service times.

  • Upcoming
  • Past
  • FilterByCategory
  • FilterByCountry
  • FilterByState
  • FilterByRegion

New: When specifying users for a booking the system can now ask for additional information for each user such as Dietary Requirements. You can specify the name of that additional information in Service.BookingAdditionalInformation.

New: CartItems.HasSubscriptions and CartItem.IsSubscription.

New: You can now set BusinessCollection.ItemsPerPage to zero.

Fix: Breadcrumbs filter expression were showing the values instead of the formatted display text.

Fix: Membership.Subscription set where possible and Membership.AutoRenew set on.

Fix: Pages moved to templates have wrong item type.

Fix: Several speed issues when requesting a page.

Fix: User.Industry was a readonly property.

Fix: Disposal of business object when processing a return value.

Fix: Articles.FilterByIssue.

Fix: FilterExpression.ToString.

Fix: ValueDefinitionAttribute.CreateFilterMenu.

Fix: EnumerationDefinitionAttribute.DefaultValue.

Fix: GenerateHTMLSearchControl when using short-cut paths.

Fix: Styles for search-control.

Fix: Styling issues in CartItems.ConfirmOrder.

Fix: Styling for readonly HTML control.

Update 5.13.0

New: Title and Description properties have been added to the Template. These properties can contain merge scripts and the results are added as meta tags on a web page or subject of an email.

New: All pages that were used as templates such as success messages and email templates are now moved to templates. Pages are now simply used for web pages and no longer used for emails.

Update 4.17.2

Fix: SendEmailForm will no longer send from email address of the user entering the information. If you want to send from anyone other than the administrator, then an input control with type=hidden or type=text, name=Sender and the value being the email address should be included on the form. However the Reply-To will have the email address of the user entering the information.

Update 4.17.1

Fix: When ServiceBooking.Time is update it resets the start and finish time.

Fix: Function ServiceBooking.AllowSendEmail and ServiceBooking.AllowSendEmailIncludingUser.

Update 5.12.0

New: Group.MaximumMemberships: the maximum number of active memberships a group is allowed.

New: Group.Image: can be used for a banner image or like.

New: Organisation.Logo: the representative logo of an organisation.

Update 4.17.0

New: ServiceTime.SpecifyUsers now asks for additional information (if required) for each user such as meal preference.

New: You can now customise the booking confirmation letter for each service. This can be done by creating a merge page named [Service.FileName].servicebooking.confirmationletter.

New: Base styles nav.minimize1080 and nav.minimize1200.

Update 4.16.0

New: You can now change the maximum bookings for both a service schedule and time.

New: When adding custom properties to a service available schedule, the values are copied to a service time when generated, if the custom properties exist.

Fix: Custom properties and methods on the inherited class are now included.

Fix: Duplicate note created when service booking email sent.

Update 5.11.2

Fix: Output of meta tags for canonical and next and prev pages.

Fix: Output of filter menu to add meta tags telling search engines not to follow link when there is more than one filter applied to the link.

Update 5.11.1

New: There are several new operators for comparing item type properties (ItemDefinition) where the item has a parent. For example, Category.Parent. For this to work there must be a calcualated columns on the table with same name plus "Ancestors" and "Descendants". For example, for Article.Category there would also be Article.CategoryAncestors and Article.CategoryDescendants. These return a pipe delimiter list of IDs. The operators are as follows:

  • AncestorOf is /
  • AncestorOfOrEqualTo is /=
  • DescendantOf is \=
  • DescendantOfOrEqualTo is \=
  • RelativeOf is /\
  • RelativeOfOrEqualTo is /\=

Fix: Filtering articles by category now includes the articles of descendant categories.

Fix: Site default static index file will now be loaded if exists.

Fix: Output of ValueDefinition.GenerateHTMLControl and ValueDefinition.CreateFilterMenu.

Update 4.15.3

Fix: A HTML form with class disable-window-on-submit now on submit includes the message "Please wait while processing..." with spinning repeat icon.

Update 5.11.0

New: Website.ClientIPInfo will return information about the client IP address as follows. This will use a free service but is limited to 45 requests per minute. Obtaining an API Key will give you unlimited requests. Create a configuration setting named IPAPIKey with the value being the key.

  • Country Name
  • Country Code
  • State Abbreviation
  • State Name
  • City
  • Suburb
  • Postcode
  • Latitude
  • Longitude
  • ISP
  • Organisation
  • TimeZone
  • Offset 'Timezone UTC DST offset in seconds
  • Currency Code
  • Mobile 'Is mobile connection
  • Proxy 'Is proxy, VPN or Tor exit address
  • Hosting 'Is hosting, colocated or data center

New: Website.UserCountry and Website.UserGeolocation now get their info from Website.ClientIPInfo.

New: Articles can now have a single category.

New: Search results for users on dashboard now include "Login as User".

New: Collection.DefaultItemsPerPage now set to 25. Templates and Snippets set to 100, while Email set to 5.

New: CollectionClassDefinition.GenerateFilterMenus includes a clear filter option.

New: Styles for nav.filter-menu.

Fix: Various fixes to ValueDefinition.CreateFilterMenu.

Fix: The return URL when logging in via custom register.

Fix: Article.Publish return URL.

Fix: Article.StatusMessage retrieving template to use.

Fix: CourseEnrolmentEmail.SendNow.

Fix: Email.SendNow sort order.

Fix: RelatedTradingItem.RelatedItemSelectableValues.

Fix: New process path method now checks for redirect when path not found.

Fix: The page title generated for HTML output has been modified.

Fix: Collection.Definition.GenerateHTML now shows the correct methods for each item.

Fix: Data.ConvertSQLToFilterExpressions.

Fix: A HTML form with class disable-window-on-submit now on submit includes the message "Please wait while processing..." with spinning repeat icon.

Update 5.10.2

Fix: Error when renaming items with UpdateAllLinks parameter set to yes.

Update 5.10.1

Fix: Error viewing Trading Item Discounts.

Fix: Info message not detected in client-side scripts.

Update 4.15.2

Fix: Couldn't add a large number of items to the cart due to storage size of cookies.

Update 5.10.0

New: Can now create an email campaign based on course enrolments.

New: Can now retrieve custom properties via BusinessCollectionItem.RawDataValue.

Fix: When adding a new stored payment method it now only shows the available payment methods in the user's currency.

Fix: When filtering stored payment methods by expiry date.

Fix: Error in Group.ProcessSubscription.

Fix: User unable to remove own stored payment method.

Fix: Client-side scripts and stylesheets.

Update 4.15.1

Fix: To open and close methods for multiple service times.

Update 4.15.0

New: Can now Open and Close multiple Service Times at once.

Fix: Error when viewing items of a Future Order.

Update 5.9.0

New: Property ItemTags.TagSet added in order to create properties that will be specific to a tag set. For example, Product.Colours for a multi select or Product.Material for a single select. Selections from both will be listed in the item tags.

New: BusinessCollectionItem.DataValue.Set now updates LinkingForeignCollectionDefinition properties as well.

Fix: LinkingForeignCollectionDefinition.GenerateHTMLControl now output a single select control when MaximumItems is equal to one.

Fix: LinkingForeignCollectionDefinition.GenerateHTMLControl was outputing a readonly control.

Fix: When submitting a form to add or update a business collection item, properties not included as controls on the form are ignore.

Update 5.8.0

New: ValueDefinitionAttribute.GetCode and ValueDefinitionAttribute.SetCode allow for custom methods to get and set values on a property.

New: BusinessObject.GetPropertyValue and BusinessObject.SetPropertyValue now available. Common.GetPropertyValue renamed to Common.GetObjectPropertyValue.

Fix: Error replacing form values in XML.

Update 5.7.0

New: Can now position tags within a tag set.

New: BusinessCollection.FilterOnIDFileNameOrUniqueValues(Object) now excepts a business collection item of array of business collection items.

Fix: Error listing a tag's items.

Fix: BusinessCollection.Item(ID) now throw error when ID does not exist.

Update 5.6.0

New: Can now tag any item not just Articles. i.e. Users, Groups, etc.

New: Function BusinessCollectionItem.Rename will be visible to administrators if there is a column FileName in the table.

Update 5.5.0

New: Groups now have a trial period for membership which is free.

New: StoredPaymentMethods.ExpiredOn to filter out expired payment methods.

Fix: When a form is submitted and returned due to error or displaying message to redirect the field were not populated with the user input.

Fix: Error in BusinessCollection.FilterOnIDFileNameOrUniqueValues.

Fix: Error when generating email.

Fix: Error when viewing/editing a region.

Fix: Backward compatibity for Human Verification Code on forms to block spambots.

Update 4.14.21

Fix: Error in Group.SubscribeNewUser.

Fix: Backward compatibity for Human Verification Code on forms to block spambots.

Update 5.4.0

New: Import to any collection. Currently only CSV. JSON and XML in future release.

New: BusinessCollection.IsExistingItem and BusinessCollection.Item will now search for ID, filename and unique fields for passed value. However, if the passed value is in the format of an ID or filename then it will not search further. For example, passing an email address to find a user.

Update 5.3.0

New: You can add a text-to-speech player control to any HTML element and when a user clicks the play button the text within the element is read by a synthesizer. The user can then pause or stop. They can change the voice (depending on the availabity of the browser), the rate and pitch. To add the player control you simply add the class "text-to-speech" to the element.

New: You can now specify a sub-properties as collection view columns. For example, the columns for a membership list may be "Group,Member,Member.Mobile,Member.EmailAddress,Status,MemberType,Role".

New: ClassDefinition.GenerateHTML.RequireReadOnly to return a readonly form view.

New: Function TradingItem.RelateItems to relate trading items with one another.

Fix: Article.StatusMessage updated to remove "To view the [article] click here" when not published.

Fix: Administrator could not add a new user.

Update 4.14.20

Fix: Found reference to code library based stylesheet in HTML editor which may cause problems with Google's algorithm for detecting malicious or unwanted software.

Fix: Object clean up in BusinessObject.GetPropertyValue disposing primary objects, collections and application.

Fix: BusinessApplication.Item when passing a file name.

Update 3.19.30

Fix: Found reference to code library based stylesheet in HTML editor which may cause problems with Google's algorithm for detecting malicious or unwanted software.

Update 5.2.0

New: The following properties were created on the website and group objects to return published articles visible to the current user.

  • VisibleArticles with filename content
  • VisibleBlogPosts with filename blog
  • VisibleForumTopics with filename forum
  • VisibleGalleries with filename galleries
  • VisiblePages with filename testimonials
  • VisibleTestimonials with filename testimonials
  • VisibleProducts with filename products
  • VisibleServices with filename services
  • VisibleSubscriptions with filename subscriptions
  • VisibleCourses with filename courses

New: Filter functions on articles to match those in Article Views. These are created so the article views can be replaced without breaking the existing URLs.

  • FilterByCategory
  • FilterByTag
  • FilterByBrand
  • FilterByAuthor
  • FilterByCountry
  • FilterByState
  • FilterByRegion
  • FilterByIssue

New: The following property was created on the website object to return users visible to the current user.

  • VisibleUsers with filename directory

New: The following property was created on group objects to return current memberships visible to the current user.

  • VisibleMemberships with filename directory

New: Filter functions on the users and visible memberships to match those in Directory Views. These are created so the directory views can be replaced without breaking the existing URLs.

  • FilterByIndustry
  • FilterByCountry
  • FilterByState
  • FilterByRegion

New: You can filter a collection of items by any item property that has the attribute AllowFilter set to true. This can be done by passing a name value pair in the URL. For example, /pages/template/website-default will return the pages where the template is equal to "website-default". However, when passing the name value pair as a parameter, the parameter name must be the property name plus "Filter". For example, /pages?TemplateFilter=website-default.

New: When specifying PageType=CollectionView, PageType=ObjectView or PageType=MethodView in the URL, the system will NOT attempt to find a custom template specific to that collection, object or method but instead use the standard template (see below) if available otherwise the system will generate the view.

  • business-application
  • business-collection
  • business-collection-item
  • business-object
  • method

New: You can now customise the template for exceptions (errors). The system will look for a template called exception and use that to display if found, otherwise will use the website default template.

New: Added response statuses BadRequest, Unauthorized and InternalServerError when the appropriate exception was thrown.

New: You can output the URL response in HTML, JSON and now in XML and CSV as well. At this stage input is only via HTML (forms). You can also access these via:

  • BusinessObject.ToHTML
  • BusinessObject.ToJSON
  • BusinessObject.ToXML
  • BusinessObject.ToCSV

New: CSV, XML and now JSON can now be selected as the output format when export a collection.

New: The following have been deprecated:

  • BusinessCollection.ToXMLList
  • BusinessCollection.ToXMLValueList

New: Properties on business object.

  • BaseURLParameters are the parameters which define the base business object. For example, Collection=Products, Collection=Products&ID=121065 or PrimaryCollection=Products&PrimaryObjectID=121065&ForeignCollectionProperty=Categories.
  • CustomURLParameters are the other parameters which customise the business object. For example, SearchText=widget&Page=3.
  • URLParameters now includes both Base and Custom parameters. For example, Collection=Products&SearchText=widget&Page=3
  • RelativeURLPath is the shortcut path to a business object. For example, products/, products/widget/ or products/widget/categories/
  • RelativeURL includes both the Relative URL and the Custom parameters. For example, products/?SearchText=widget&Page=3

New: The following custom parameters passed in the URL as name value pairs are now stored with the business object and passed back via any call to BusinessObject.URLParameters or the new BusinessObject.CustomURLParameters.

  • Properties stored as BusinessObject.PropertyNames
  • Methods stored as BusinessObject.MethodNames
  • Filter stored as BusinessCollection.Filter
  • SearchText stored as BusinessCollection.SearchText
  • Sort stored as BusinessCollection.Sort
  • Columns stored as BusinessCollection.ColumnNames
  • ItemsPerPage stored as BusinessCollection.ItemsPerPage
  • Page stored as BusinessCollection.Page

New: The following methods can be called via a URL. For example: /default.aspx?PageType=MethodView&Collection=Products&Method=ClearFilter or /pages/clearfilter.

  • ClearFilter
  • ClearSort

New: The method BusinessObject.GetHTMLBreadCrumbs was created to be used in a template for a business object. Not only will it display the collection or primary object of the current object but also display filters on any collection in the trail.

New: Collection view design when PageType=CollectionView or a collection does not have a template to display in.

New: CollectionClassDefinition.AllowNewItems has been removed and is no longer applicable. Use AllowExecute on the collection method AddNew.

New: CollectionClassDefinition.AllowViewItems has been removed and is no longer applicable. Use CollectionClassDefinition.AllowView.

New: CollectionClassDefinition.DefaultFilterPropertyNames will display in the filter menu in the collection view.

New: CollectionClassDefinition.DefaultSortPropertyNames will display in the sort menu in the collection view.

New: CollectionClassDefinition.GenerateHTMLFilterMenu will generate a filter menu based on one of the columns in a collection. For example, author on blog posts will return a list of authors with blog posts. Clicking on an author will return only their blog posts.

New: CollectionClassDefinition.GenerateHTMLFilterMenus will generate multiple filter menu based on select columns in a collection. For example, on products you may include category, brand, supplier, price range.

New: Any property or parameter (ValueDefinition) can have a selection filter (not just ItemDefinition). For example, Country, State and Region or Year, Month and Published On.

New: You can now SetLockedFilter on a collection which means the user cannot modify it. This is also the case if a filter is specified in the definition of a collection or a property or parameter which specifies a collection or item of a collection.

New: When searching for text in a articles collection the PlainTextContent is also searched.

New: By default when a HTML property is edited the full toolbar will be displayed by administrators otherwise a minimal toolbar will be displayed.

New: You can now set the URL for check out. By default it will go to Request Billing Details.

New: Items that have sub-items such as Menu Items, Groups and Categories are now sorted by default by the parent's sort followed by the position and title. This was done by creating a custom column on each table which returns a string for the sort.

New: Property User.NameIncludingNickname in the format "John (Legend) Mitchell" :).

New: BusinessObject.GetPropertyValue will now return a method's default parameter value. For example, on an DefaultRating = Article.GetPropertyValue("SubmitReview.Rating").

New: The following methods have been added Common.GenerateRandomString(Length, [CharacterSet]) and Common.IsNumericType(Value).

  • Common.GenerateRandomString(Length, [CharacterSet])
  • Common.IsNumericType(Value)
  • Common.GenerateHTMLPageControls(URL, Items, Page, ItemsPerPage, DefaultItemsPerPage)
  • Common.GenerateHTMLSearchControl(URL, [SearchText], [Title], [Placeholder])

New: Course.CreateMenuStructure whichs creates a menu structure of the modules and activities.

New: CourseActivity.Start and CourseActivity.Complete which mark the activity with status of in progress or complete.

Fix: To MyStatus on Courses, Modules and Activities.

Fix: Several issues in the new process path.

Fix: Error in Group.ProcessSubscription.

Fix: Output error in Common.GenerateHTMLVideo.

Fix: Now allow users to delete their stored payment methods.

Fix: Class definitions did not include inherited custom properties and methods.

Fix: Email recipient could not open email in browser.

Fix: Custom collections were not found if wrong case or missing custom prefix (underscore).

Fix: When saving a new business collection item and the collection is already disposed.

Fix: Clicking a menu item will only open in new windwow when the URL protocol is http or https.

Update 4.14.19

Fix: Error trying to update the base path when item is added/updated but the collection is disposed.

Update 4.14.18

Fix: Error uploading an attachment.

Update 5.1.3

New: Added courses to article view and set up configuration settings.

New: Added NotEnrolled status to property MyStatus on courses, modules and activities.

New: Property Group.Courses.

Update: Moved pages used for method views to templates.

Update 4.14.17

Fix: Application.GenerateHTMLMenu(MenuItem, Depth, IncludeURLWithSubMenus) did not include the URL menus with sub-menus when requested.

Update 5.1.2

Fix: Error in new process path when parameters attribute passed in URL.

Update 4.14.16

Fix: Error when confirmation message included an apostrophe.

Fix: When an attachment is deleted the file is deleted if it is in the item's local folder.

Update 5.1.1

New: Base styles.

Fix: After adding a new item via BusinessCollection.AddNew the system now redirects back to the collection view.

Update 5.1.0

New: Learning management system: Courses, Modules, Activities, Enrolments and Results. Courses inherit trading items so together with the order management systems they can be ordered and paid for creating an enrolment. A course can have many modules which are used to group activities. Activities are currently simply video tutorials but future development will include assessments or other activities to be determined. A student (user) must be enrolled in a course before they can start it. Results are currently only record the status of the activity (in progress or completed). Future developments may include assessment results.

New: Articles (pages, blog posts, testimonials, courses, etc.) can have a video.

Fix: Adding a new item with a file/image did not upload the file/image to the correct folder.

Update 5.0.1

Fix: When resetting the parent membership expiry also reset the auto renew in child memberships.

Fix: Allow edit on Membership.AutoRenew.

Update 5.0.0

New: Currently under construction is a new way to process the path (URL). When Application.ProcessPathVersion is set to 2, new shortcuts and template selection for objects and methods are processed via this new method. See Proposed New Shortcuts and Template Selection. Currently only some paths for HTML and JSON output are available with XML and CSV output in future versions.

New: BusinessObject.ToHTML will return HTML form based on the current user access rights to the object and its properties and methods.

New: BusinessObject.MethodToHTML(Method) will return HTML form based on the current user access rights to the object's method and its parameters.

New: BusinessObject.ToJSON will return JSON based on the current user access rights to the object and its properties.

New: Object and method view form design when PageType=ObjectView or PageType=MethodView and Application.ProcessPathVersion set to 2.

New: Application.GenerateMembershipRenewalOrders - When Membership.AutoRenew is set, an order will be generated Membership.Subscription.AutoRenewDue time period before it expires. If the member has stored payment methods then the system will attempt to take payment for the subscription and process the renewal otherwise an invoice is sent to the member.

Update 4.14.15

New: NameValueCollection.Insert inserts an entry to the collection at the index.

Fix: LinkingForeignCollectionDefinitionAttribute.ConvertValue returning invalid collection.

Fix: GenerateHTMLVideo output of YouTube iframe.

Update 4.14.14

Fix: BusinessCollection.FilterOnIDOrFileNames returning error.

Fix: FormatToJSONString added additional character replacements.

Update 4.14.13

Fix: FutureOrder.Confirm returning error.

Update 4.14.12

Fix: BusinessCollectionItem.DefaultRange not returning correct value when custom property is the range property.

Fix: GenerateHTMLVideo updated YouTube URL.

Update 4.14.11

Fix: Cart items doubling.

Fix: FutureOrder.Confirm returning error.

Fix: BusinessCollection.ToString not removing custom prefixes when no items or 1 item.

Update: Updated Administration Menu to remove unwanted items and add tags, tag sets to product catalogue and incomplete orders to order management.

Update 4.14.10

Fix: MIGS Offsite Payment Method returned invalid hash code due to a change in the return URL.

Fix: CartItems.FreightPrice invalid when delivery method set to nothing.