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.
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.
Fix: When ServiceBooking.Time
is update it resets the start and finish time.
Fix: Function ServiceBooking.AllowSendEmail
and ServiceBooking.AllowSendEmailIncludingUser
.
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.
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
.
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.
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.
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
.
Fix: A HTML form with class disable-window-on-submit
now on submit includes the message "Please wait while processing..." with spinning repeat icon.
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.
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.
Fix: Error when renaming items with UpdateAllLinks
parameter set to yes.
Fix: Error viewing Trading Item Discounts.
Fix: Info message not detected in client-side scripts.
Fix: Couldn't add a large number of items to the cart due to storage size of cookies.
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.
Fix: To open and close methods for multiple service times.
New: Can now Open and Close multiple Service Times at once.
Fix: Error when viewing items of a Future Order.
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.
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.
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.
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.
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.
Fix: Error in Group.SubscribeNewUser
.
Fix: Backward compatibity for Human Verification Code on forms to block spambots.
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.
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.
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.
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.
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.
Fix: Error trying to update the base path when item is added/updated but the collection is disposed.
Fix: Error uploading an attachment.
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.