baby-llama-head
https://www.freepik.com/premium-photo/baby-llama-head-portrait_5827833.htm

This release contains a major refactor of our service layer, integration with marketing automation provider Zapier, and automated testing capabilities. It positions us for a new feature called the Package Manager, which we hope to complete in the coming months.

Marketpath Video Release Notes

New this release! A video overview of the release. The first part of this video is a high level overview (about 5 minutes), followed by a more lengthy technical explanation for those of you craving more (about 23 minutes).

Major Feature Improvements

  • Full Service Layer (API) Validation - Prior to this release, most of the data validation was performed in the user interface and browser. Now, the API layer is 100% validated when data is created and updated. This guarntees that data is stored in the database in a valid state and positions us to open our API to outside developers sometime in 2020. This effort affected just about facet of the system, from the API itself, to our object libraries, the User Interface libraries, and even the database. Most objects and methods were rewritten to accomodate the goal.
  • Forms, Datastores, and Templates - the form builder, datastore builder, and template builder were revised to accomodate these new changes, with notable UI improvements for conditional fields and field validation.
  • Automation with Zapier - when a form on your website is submitted, you can now capture the data with Zapier and send it to one of over 1,500 other applications that are integrated with them.
  • Re-Usable Domains - You can now re-use existing custom domains on new sites. Each domain may only be active on one site at a time, but this change makes updating sites in-place simple and fast. You can now develop your new site using the final domain, then activate the domain on the new site when you are ready and visitors to your site will almost instantly see the new content instead of the old.
  • Improved Error Pages - Before this release when a user wanted to create an error page (eg: 404 - Page Not Found) they first had to create an article (or other entity) with a URL, then create an error page which referenced that article. While that worked, it was relatively confusing and awkward. In this release Error Pages are now their own entity and do not have to reference anything else other than a template. We believe that this will make creating and managing error pages - and their templates - faster, simpler, and more intuitive.
  • Simplified Exports and Imports - We have reduced the complexity of our exports and imports (mostly of our imports) to make it faster and easier for most people to run them. We previously had a lot of complicated and advanced functionality available for imports which was never used. In the meantime, there were so many configuration options that it was confusing and time-consuming to understand and set them all as needed. In this release, we have streamlined the import process and reduced its complexity while maintaining the functionality that makes it useful. We have also added a step in-between running the import and committing it where the user can see exactly what is included in the import, including both summary and detailed information about any errors encountered during the import.

Breaking Change - Imports

We significantly overhauled exports and imports in this release. Before attempting to import any exported files, you will need to re-run the export to generate a new file first.

Known Bugs and Issues

The version comparison tool is temporarily broken. Saving versions, restoring versions, and all other version-related functionality still works. This bug is limited to the ability to view the differences between versions in the UI. We will be working on a patch to fix this issue in the coming week.

Templating Improvements

  • Document and Image Filesize - Documents and images can now reference their filesize from templates. Note that this will only apply to documents and images that are published AFTER this release - all previous documents and images will report their filesize as "0". Re-publishing a document or image will set the value properly.
  • Javascript and Stylesheet Preview URL - Javascript and CSS files on the preview server now include the filename in the path. They were previously referenced by a random identifier (eg: "acac2323-6666-7777-acac-d4d290065cef") and will now include the filename (eg: "acac2323-6666-7777-acac-d4d290065cef/main.css") - which makes debugging them on staging easier.
  • Form Javascript Deferred from CDN - The main form javascript code is now loaded as deferred from the CDN, which helps with page-load speed.
  • SVGs served via CDN - SVG Images are now served from the CDN, which helps with page-load speed.
  • New Filters
    • ceil: returns the next integer value greater than or equal to the current value
    • floor: returns the next integer value less than or equal to the current value
    • classname: removes all non-alphanumeric characters other than dashes and underscores from a string and replaces them with the separator (default '-') or nothing if the separator is empty
    • url_decode: this is not a new filter, but has received some added functionality. It can now optionally decode strings as form-encoded, which helps with those pesky "+" characters.
  • request.is_review - Added "is_preview" property to the request, which will be true if the request is being served from the preview site and false if the request is being served from the live site.
  • {% set_response_code %} - Added a new liquid tag to specify a custom response code

Other Feature Improvements

  • Added "Tel" and "Javascript" URL types to the URL field.
  • Improved reliability of "IsDirty" flag. Previously any attempt to save an object would record that the object had changed. After this release the UI should only report that the object has been changed if one or more fields on the object are different.
  • HTML/code diff comparison tool. We implemented a new tool to compare changes in HTML and code fields form within the version comparison tool. We also made some improvments to the code that identifies which fields are different between two versions. Unfortunately, due to the version comparison tool being broken (an unrelated bug), users will have to wait for that bug to be fixed before these improvements will be meaningful.
  • We added proper UI tooltips for information such as error messages and object status information.
  • We have improved some of our messaging - most notably with regards to billing notifications when a payment fails.
  • We added a 404 page to our image processing server so that if a site references an image that does not exist (eg: it has been trashed), the browser will receive a proper 404 page. And if a user attempts to load an image that does not exist directly in their browser, they will see a well-designed but generic and unbranded 404 page.
  • We added an "Edit" button to templates, javascript, and stylesheet toolbars - just like we have for entities with pages.

Bug Fixes

  • Bug #2384 - Deleting an image doesn't remove it from the entity
  • Bug #2455 - CKEditor bounces while typing
  • Bug #2546 - Editing account properties opens a blank screen
  • Bug #2549 - On new site creation, user is not redirected to new site
  • Bug #2569 - Firefox windows with timed out sessions become unusable
  • Bug #2655 - Adding URL to dev site via WYSIWYG editor links to live domain
  • Bug #2662 - Live preview is faster than staging server causing issues
  • Bug #2663 - Expiration notice every time I change browser tab
  • Bug #2672 - File size of uploaded image changes even when not using image presets
  • Bug #2720 - Cannot take a site live because don't have permissions, but never received error message
  • Bug #2785 - Opening a preview link after session timeout throws ugly error
  • Bug #2812 - Double billing issue after first invoice in a specific edge-case scenario
  • Bug #2814 - Date field default value doesn't stick
  • Bug #2918 - Schedule publish date and time does not retain offset