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