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.

Proposed New Shortcuts and Template Selection

Shortcuts

Shortcuts will match the business objects structure starting from the application (website). For example, any application object property or method accessible by the user can be accessed as follows:

/login will return a form for the Website.Login method

/register will return a form for the Website.Register method

/configure-components will return a form for the Website.ConfigureComponents method

/user will return the logged in user profile from Website.User

/licensee will return the licensee profile from Website.Licensee

From there we can add properties to the application (website). For example, Add a property called Shop which returns a collection of products filtered to only published products sorted by date published descending. Now I can access it as:

/shop

Now say I want to filter it by a category. First, I need to create a category filter method on the products collection as Products.FilterByCategory(Category) returns Products (self). The Category parameter can be an ID, FileName or Category object. So, we can now return a filtered shop as:

/shop/filter-by-category/furniture

Which will in essence run Website.Shop.FilterByCategory(“furniture”)

Now /filter-by-category is not very nice in the URL so for each property and method you will be able to set an alternative filename. For this one I would simple call it category. So now it can be accessed:

/shop/category/furniture

Now we can add more filter methods to products for tags, brands, authors, etc.

/shop/category/shoes/tag/white/brand/nike

They can be in any order and end up with the same result, for example:

/shop/brand/nike/category/shoes/tag/white

You could also call the same filter method multiple times:

/shop/tag/large/tag/round/tag/white

You can also add methods to a collection to sort, for example, say I create a sort method which simply set the sort order on price as Products.SortByLowestPriceFirst() returns Products (self). I would give it a filename lowest-price-first. Then it could be called via:

/shop/lowest-price-first

To access an item in the shop it would be simply:

/shop/item/widget

Which will return Website.Shop.Item(“widget”)

Again, it is not very nice to have /item in the URL so I will make it the default method of the collection. So now you can access as:

/shop/widget

Which will return Website.Shop(“widget”) which is the same as Website.Shop.Item(“widget”)

If you want to use an ID, you can similarly say:

/shop/1234

Which will return Website.Shop(1234) or Website.Shop.Item(1234)

Note: to edit an object/item you need to add /edit to the URL. For example:

/shop/widget/edit

Note: any filename of an item in a collection cannot be the filename of a property or method in a collection. For example, say you name a product “tag” then /shop/tag will bring up Website.Shop.FilterByTag method, not the product Website.Shop(“tag”), as the FilterByTag method has a filename of tag. Filenames are searched for in properties first, then methods and if not found applied to the default method which in this case is Item. Alternatively, the product tag in this case, you would have to call via the item method or ID as follows:

/shop/item/tag

/shop/1234

Here are a few more examples:

list all the related items of the widget product

/shop/widget/related-items

Website.Shop(“widget”).RelatedItems()

list other products the supplier of the widget

/shop/widget/supplier/products

Website.Shop(“widget”).Supplier.Products()

Add widget to cart

/shop/widget/add-to-cart

Website.Shop(“widget”).AddToCart()

List all with price less than 1000

/shop/price-less-than/1000

Website.Shop.FilterByPriceLessThan(1000)

 

Let’s examine a few URLs:

/user

Website.User()

/register

Website.Register()

/contact-us

Website(“contact-us”)

/countries

Website(“countries”)

/members

Website(“members”)

/members/rules

Website(“members”)(“rules”)

/members/board-members

Website(“members”)(“board-members”)

The system will first check the properties for the filename, then methods and finally and if not found will apply to the default method.

/user was found in properties

/register was found in methods

Notice /contact-us, /members and /countries were all found in the default method. We could set up a default method on the application called Item and in that method we search for the filename first in pages then groups and finally collections. So:

/contact-us returns a page

/countries returns a collection

/members returns a group

With /members/rules and /members/board-members we would also need to set up a default method on Group and call it Item which we search for the filename first in pages then subgroups. So:

/members/rules would return a page

/members/board-members would return a subgroup

 

Template Selection

The template name will match the calling properties/methods firstly otherwise the outputs type then any inherited types.

URL

Template Name Used in Priority

/login

website.login

method

/shop

/shop/category/furniture

/shop/brand/nike/tag/white/lowest-price-first

Note: Due to the filter and sort methods returning the
same collection the same templates will be used as /shop

website.shop

products

trading-items

articles

items

business-collection

business-object

/shop/widget/supplier/products

website.shop.item.supplier.products

user.products

products

trading-items

articles

items

business-collection

business-object

/shop/widget

website.shop.item

product

trading-item

article

item

business-collection-item

business-object

/shop/widget/edit

website.shop.item.edit

product.edit

trading-item.edit

article.edit

item.edit

business-collection-item.edit

business-object.edit

method

 

The system should have at least the following templates:

  • method
  • business-collection
  • business-object

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.

Update 4.14.9

Fix: Application.Reset not returning to previous page.

Fix: GenerateHTMLForm on a new business collection item had invalid action attribute.

Fix: GenerateHTMLForm on a business object or method now will show properties/parameters when allow view or edit.

Fix: Default delivery method was not set to cheapest due to a sorting issue.

Update 4.14.7

New: Set the configuration setting GoogleAPIKey to enable the system to use Google's Geocoding API to get the GEO location of an address or the address at a GEO location.

New: Additional attributes added to the form, labels and inputs generated by GenerateHTMLForm for both business objects and methods to help with scripting and styling.

Fix: Error when running Organisations.SetMissingResidingGeolocations.

Fix: More descriptive error returned from script errors.

Update 4.14.6

New: Additional attributes added to the form, labels and inputs generated by GenerateHTMLForm for both business objects and methods to help with scripting and styling.

Fix: If definition attributes ImageURL.MaximumWidth and ImageURL.MaximumWidth are both not set then they will be defaulted to 1920 and 1200 respectively.

Fix: Definition attributes Decimal.MaximumValue now set to the maximum value of the current data type rounded down to the Decimal.RoundToValue.

Fix: Type defined attributes on definitions now set in inheritance order. For example, HTML.EditorLines used before MultipleLineText.EditorLines.

Fix: Error in LinkingForeignCollection.GenerateHTMLControl.

Fix: Multiple error/info messages will appear in form view when returning from submission.

Update 4.14.5

New: The GenerateHTMLForm method now adds a name attribute to each label for specific styling.

Update 4.14.4

Fix: Permission denied error when outputing an RSS feed.

Update 4.14.3

Fix: Error when booking and attendee details contain an ampersand.

Update 4.14.2

Fix: Error when saving an object or executing a method with a Business Collection Item as a parameter.

Update 4.14.1

Fix: Application.CheckForBouncedEmails memory consumption.

Fix: When email bounced due to 550 Maximum line length exceeded it was considered a hard bounce and marked the recipient's email status as bouncing. Now marked as invalid message.

Update 4.14.0

New: Renamed FileURLDefinition.FileName to FileURLDefinition.SaveAsFileName.

New: Definition.FileName which will be set to the definition name formatted to a file name unless otherwise set. For example, the BlogPosts collection file name by default will be blog-posts but you could to set it to just blog.

New: Application.Item(IDOrFileName) will return a page, group or collection matching the ID or File Name passed in.

New: Collection.Item(IDOrFileName) will return an item matching the ID or File Name passed in.

New: Can now export a foreign collection. It will export the collection converted to a string which unless change in the definition will return the number of items. For example, 4 Order Items.

New: Email.SendNow will now check for prior bounced mail before sending.

Fix: Email.SendNow returned an error of unknown OrderID.

Fix: Broken links in email campaign.

Fix: Domain redirection.

Fix: Discount pricing selection on trading items.

Fix: Can remove stored payment method from future order.

Fix: To default stored payment method for future order.

Fix: Selected Payment Method saved to session.

Fix: Default email settings saved to session when Sending Epage.

Fix: Current Automated Task settings saved to session for Schedule New Automated Task.

Fix: User dashboard links.

Update 4.13.1

New: Renamed User.Status to System Access Status, User.UserType to System Access Level, Membership.Status to Group Access Status and Membership.MemberType to Group Access Level.

Fix: Stopped auto-fill when asked for new password.

Fix: If an object is not accessible to a user none of the methods are either.

Fix: Order.RequiredOn was not automatically being filled when bookings made.

Fix: SendEmail.From is now limited to the email address of the user logged in or the administrators email address.

Fix: Allow logged in member view their memberships with any status.

Fix: Moving an item to another type.

Fix: Error when displaying a users future orders.

Fix: Error when sending order emails.

Update 4.13.0

New: Groups have been classified into Organisations and Non Organisation Groups. Organisations have additional information such as addresses, contact details and bank account details. Some types of organisations may be clubs, chapters, leagues, etc.

New: Membership.Role has been added.

Fix: For guest checkout and processing payments and actioning orders.

Fix: Unable to select certain properties when filtering a collection.

Update 4.12.1

New: Application.Reset now asks if you want to reset your session or the application. If application is chosen and multiple processes are used then then the application pool is restarted.

New: Items.RefreshAttachments will refresh the attachments for every item in the collection. In order to use this function you must Allow Execution for the collection you want to run it on. For example, in configuration settings set Products.RefreshAttachments.AllowExecuteExpression to Application.AdministratorIsLoggedIn

Fix: ServiceTime.Reschedule updates start and finish times in each of the bookings.

Fix: BusinessApplication.GetDefinition not returning methods or paramater definitions.

Update 4.12.0

New: The application can now run on multiple processes. In order to use multiple processes you need to do the following:

  • Start the ASP.Net State Service on the server and make sure you set Startup Type to Automatic in case the server is restarted.
  • Add <sessionState mode="StateServer" /> to the <system.web/> section of web.config.
  • Set Maximum Worker Processes in the application pool settings in IIS Manager or via your hosting control panel.

Fix: Membership emails now filtering by member type and status correctly.

Update 4.11.4

Fix: Error when listing emails due to forwarded receipts load.

Update 4.11.3

Fix: Editing order items slow to load.

Fix: Error displaying the payment order number.

Fix: Error loading foreign collection not previously loaded.

Fix: To avoid loading base tables in full.

Fix: Error retrieving session value from table after table reset.

Update 4.11.2

Fix: Custom pages for order methods where not showing.

Fix: To add booking to cart.

Fix: To order item description for bookings.

Update 4.11.1

New: Default dashboard items "Order Summary" and "Payment Summary" have new default time periods.

Fix: Error when redirecting from alias domains and non-ssl to ssl.

Fix: Error when copying items from one type to another.

Fix: Error when checking availability on service times.

Fix: Trading Entity stopped from deleting order once actioned.

Fix: Stopped reorder when contains bookings.

Fix: Stopped reorder when contains bookings.

Fix: Pages with multiple forms could not validate.

Fix: Forms controls that were auto-filled were not validated.

Fix: Auto-fills booking information from Trading Entity if not any set.

Update 4.11.0

New: Recurring orders have now been separated from the last order to enable price changes. You can now list future orders separately from confirmed orders.

New: Can now move a business collection item from one collection to another essentially keeping all common properties and setting defaults to new properties. For example, a Future Order to the Confirmed Orders collection.

New: When a order is placed for multiple bookings for a service time, an order item is created for each booking storing all the relevant information in newly created properties. This also sped up the process when an order is actioned and eliminates the need to redirect to another URL to process the bookings avoiding too many redirection errors.

New: When booking you can now specify a start and finish time within the service time.

New: CheckAvailability for bookings will now check the time block between the start and finish.

New: An email address can be stored against each booking allowing the attendee to be personally notified. This is especially useful if it is a guest checkout. By default the booking persons email address will be stored on each booking when booking for multiple attendees but can be changed if they wish to personalise.

New: Notes can be stored against a booking. Any emails sent to the attendee will be automatically noted.

New: Can now set maximum number of items a discount price can be used per customer and/or overall. For example, 1 per customer and 20 overall.

New: Can now set discount prices to trading items for a specified recurring period (per order, per week, per month, etc). For example, 1 per customer per order, 2 per customer per week or 10 overall per week.

New: Can now set discounts to trading items for a fixed specified period. For example, between 1 Jun 2020 to 30 Jun 2020.

Fix: Can now only receive member discount prices for booking times during the subscription period.

Fix: BusinessCollectionItem.ChangeRank when the ranking property is a custom property.

Fix: ListArticles when passing an article type.

Update 4.10.1

Fix: Application.ConfigureComponents.DefaultUserCountry was not been set correctly.

Update 4.10.0

New: Can now select one or more articles (blog posts, products, etc.) to merge with a snippet and create an email for marketing.

Fix: Unable to sort Article and Directory Views.

Fix: Copying an article will no longer copy the PublishedOn and ArchivedOn dates.

Fix: Freight based on price is now based on whole order rather than just deliverable items.

Fix: Error when changing a quantity of a cart item.

Fix: MIGS Payment Method upgraded to use TLS 1.2 security protocol.

Update 4.9.5

Fix: Order.MakePayment was not showing.

Fix: Due to Google's algorithm change on how it detects malicious or unwanted software, the library based scripts and stylesheets have been moved locally temporarily until the resolve the issue.

Update 3.19.29

Fix: Due to Google's algorithm change on how it detects malicious or unwanted software, the library based scripts and stylesheets have been moved locally temporarily until the resolve the issue.

Update 4.9.4

Fix: Import script connection string for Excel.

Update 3.19.28

Fix: Import script connection string for Excel.

Update 4.9.3

New: Bookings can be set to recur.

Fix: When setting a StoreSessionOnly property updating the workspace is not necessary.

Update 4.9.2

Fix: Upgraded TLS for PayPal integration.

Update 3.19.27

Fix: Upgraded TLS for PayPal integration.

Update 4.9.1

Fix: Could not add PayPal payment method due to error with Enable Storage.

Update 4.9.0

New: Can now book a time within an available time period. For example, say you have available times Mon-Fri 9am-5pm. You can take a booking for say an hour within the time period.

New: Can now filter recipients for an email campaign by their "Last Logged In Age".

Update 4.8.0

New: When updating/upgrading the version is returned in the URL.

New: Parameter IncludeURLWithSubMenus added to GenerateHTMLMenu which defaults to false, which means it will remove the URL when outputing if the menu item has a sub menu. This is necessary for touch screens.

New: A form's action on a template or article is parsed for included expressions and evaluated and replaced.

Update: Various changes to comments with sub-comments including:

  • The default format of a comment is the date submitted on.
  • Sub-comments column shown when listing comments.
  • Rejecting deletion of a comment with sub-comments.

Update: Invoice will show the promotion if there is one and even if the discount is zero.

New: Collection.FilterOnSearchText adds a search text filter to the collection and returns the collection.

Fix: Collection.FilterOnSQL now adds the filter to a pre-existing filter.

Fix: FormatDuration now formats zero.

Update 4.7.0

New: The MaximumSize of FileURL properties have now been defaulted to web.config's httpRuntime.maxRequestLength.

New: With debug on, errors returned from the server when a form is submitted will be logged.

Update: You can no longer set path names for files, images, videos, audios, scripts and stylesheets.

Update: Page load speed enhancements.

Fix: Concurrency error will no longer be applicable as the last to save will overwrite other changes.

Fix: Deleting a record did not properly delete related items and attachments.

Update 4.6.3

Fix: Recurring orders will only be generated from completed orders.

Fix: Error when viewing connections.

Update 4.6.2

Fix: When cancelling a subscription the expiry was set incorrectly.

Update 4.6.1

Fix: There was no type on a method definition return value when inspecting.

Update 4.6.0

New: You can now group tags into tag sets. GenerateHTMLTagsListForArticleView will display the list of tags groups by tag sets. The tag set file name will be included in the tag short cut path by default. This can be changed in Configure URLs.

Fix: Brand.FileName now not editable by default. The file name is created from the Title.

Fix: Brands can now be positioned.

Fix: Order.MakePayment will now correctly skip adding payment depending on parameters passed.

Update 4.5.1

New: BusinessMenuItem.GenerateSubMenuHTML now wraps the title in a span tag for ease of formatting.

Fix: Application.RenameObjectFileName was not correctly creating redirects to the correct path in some circumstances.

Update 4.5.0

New: Can now review an article which effectively adds a comment and rating.

New: Application.GenerateHTMLSearchControlForArticleView and Application.GenerateHTMLSearchControlForDirectoryView now can be passed an ID, placeholder text and button HTML.

Fix: Updated templates to use backend.2.1.js which fixes delay in redirect and old file locations.

Fix: Updated templates to use backend.2.1.css which fixes old file locations.

Fix: Error when loading an SQL View.

Fix: Error when sending Membership Emails when the Group ID was 1000 or more.

Fix: Application.MoveFile when downloading via a URL will use the destination file name in the temporary path as URL file name may not be suitable.

Fix: Error when running BinarySignatures.GetMimeTypeFromContent.

Fix: Error when running Collection.Compute on a property in an inherited collection.