Operation Blonde Llama - Part 1
Image by U. Leone from Pixabay

Advanced Filters

This feature required both a dramatic re-working of our frontend, backend, and live filters, as well as some pretty significant UI updates. We hope you will like the result. It should now be easier than ever to find the content you are looking for in the way that you want to look for it.

Some feature highlights:

  • Include the advanced filters in a styled sidebar with better descriptions and easier selection of filters
  • Display active filters in a tag-like list at the top of the grid-view dialog. Simply click on a tag to remove a filter. If a filter has multiple values, group the values together beyond a certain threshold. Clicking on the grouped filter removes all values from the filter.
  • Filters sidebar is collapsible, and remembers your most recent state for each relevant dialog.
  • For objects that can have "folders", a "Folders" tab is displayed next to the "Filters" tab, and by default only displays relevant folders for the current content type (but may be expanded to display all non-trashed folders).
  • Easily allow editing the folder list from the "Folders" sidebar - including adding, editing, and trashing folders.
  • When filtering by the "Filter" (ie: the "Search" box), search all content - including data entered in custom fields. By default sort by the most relevant fields first (auto-toggled when a search term is entered) but allow the user to manually set a different sort priority if desired.
  • Updated the relative search priorities of various fields (eg: Name is #1, URL is #2, Title is #3, etc...).
  • Updated the style of the "Search" box when a search term has been entered, which serves both as a clear visual indication that the search filter has been applied and as a simply mechanism for clearing the search filter
  • Improved ability to "search" content by GUID
  • Filter by multiple tags, authors, folders, and any other object references (eg: blogs, calendars, datastores, etc...)
  • Filter by multiple object types at once (eg: filter content for articles and blog posts, or for tags, authors, and folders).
  • Filter for objects that have been "Edited" (ie: Published then Modified)
  • Auto-adjust the toolbar when filtering for "Trashed" objects
  • Intelligently hide filters that do not apply based on values in other filters (eg: do not show "Template" filter if the "Has Url" filter is not on)
  • Remember the currently selected filters between dialogs when browsing site content
  • Include the current filters when creating a shortcut from any grid-view dialog. When opening that shortcut, all filters are editable.
  • Improved standardization across different grid-view dialogs to improve consistency and reduce behavior differences (id: calendars, blog posts, trashed items, exports, import definitions, form submissions, menu items, folders, etc... all use the same interfaces with the same controls and styles)
  • Include a calendar view for articles and blog posts, similar to the calendar view for calendar entries
  • Utilize the new and improved filters in exports and imports
  • Utilize the new and improved filters in custom fields - both for datastore and for templates
  • Utilize the new and improved filters in the liquid collection tags and in the live API

 

Other Major Features

Site Domain Management

  • Simplified www/non-www redirected domain creation - check the checkbox while adding the "original" domain and the "redirected" domain will automatically be created and configured for you
  • When creating domains, set them to "Allow" SSL by default.
  • Cleaned up domain properties dialog
    • For redirected domains, clearly identify the domain that it is being redirected to
    • Simplified controls for generating a SSL certificate when the domain is not pointed at the live instance.
    • Removed the "Save" button in favor of individual action buttons for doing things like changing the SSL mode of a domain - all actions are immediate and are immediately applied to the live site.
  • Improved situational handling for generating SSL certificates under unusual circumstances (eg: the domain is still not pointed at the live instance 6+ months after go-live, the domain registration expires after the site goes live, etc..)
  • Improved detection of root domains and domain routing for use in verifying domains, validating that the domain points to the correct Marketpath live instance, and generating SSL certificates.

 

Responsive Dialogs

Implemented "responsive" dialogs for narrow screens.

Responsive dialogs still do not go below 600px wide, while auto-hiding the left-side primary site navigation. Nonetheless, this is a significant improvement for screens between 600-1200px wide, or for users who like to edit content in a side-by-side split screen.

 

Datastore Item Editing

  • Allow users to easily move items from one datastore to another
  • Properly set new datastore item "Datastore" reference when navigated to from datatore item lists
  • Improved dynamic form for new datastore items (both with and without a datastore pre-selected)
  • Load full field definitions for live datastore items (most noticable for checkbox, select list, radio list, and checkbox list fields)
  • Proper functioning of conditional datastore fields

 

Object List UI Improvements

We made several improvements to object lists (eg: article or menu items lists) in this release:

  • Prevent duplicate objects from being added to object lists
  • UI improvements when displaying already-added items while adding new items to an existing object list
  • Display long object lists (more than 10 items selected) using condensed styles

 

Adapt to IP Change

When a user's IP address changes while logged in, we now prompt them to re-enter their password to continue working. Alternatively, if they open up a new tab, we redirect them to the login page instead. This should alleviate some of the difficultly of working in Marketpath CMS from multiple locations (eg: home and the office).

 

Exports and Imports

  • Improved CSV imports when importing a single CSV file - the file no longer has to be named "correctly" if selecting an existing import definition
  • Properly filter menu items, datastore fields, and form fields by IsTrashed and IsPublished during exports
  • While defining an import definition, properly handle the "Import Custom Fields" option
  • Convert item list custom fields imported from CSV files between sites

 

User Management

  • Properly set permissions at the same time as adding a new user to a site, account, or agency
  • Improved error messages related to adding and removing users from sites, accounts, and agencies
  • Allow deleted users to be removed from sites, accounts, and agencies
  • Improved workflow for adding agencies to accounts and sites when the user already has access to both

 

Minor UI Improvements

  • Updated CKEditor to latest version and made several improvements.
    • Includes improving plugins to improve cross-functionality between "nested" CKEditor when editing images, snippets, etc.. from within a CKEditor instance.
    • Also allow users to edit the image and link classes directly from the add/edit image/link dialog.
    • Improved focus management when switching between CKEditor instances
  • Updated Ace Editor to the latest version, which includes improved support for liquid tags and a patch for a nasty copy/paste bug.
  • Improved the grid-view dialog titles for filtered views (eg: show the datastore name, not just "Datastore Items")
  • Improved the styling of most object forms (eg: display name and title fields side-by-side)
  • Auto-focus on the name field when creating or editing objects
  • Mildly improved site go-live experience - notably with the "compare packages" feature
  • Renamed "URI" to "URL" in all URL Input fields.
  • Changed the label for the "Default Template" field of blogs to "Default Template for Blog Posts"
  • Automatically convert URL hash components to lowercase to improve reliability of CMS "shortcuts" (eg: translate "/m#!/SITE-GUID/MENU/MENU-GUID" to "/m#!/site-guid/menu/menu-guid")
  • Template edit and code edit UI toolbars respond properly to the current user's permissions (eg: to show/hide the publish button, etc..)
  • Only display the "Versions" toolbar button if the user has permission to write to the current object
  • Only show the "Edit Page" button while not in the page edit interface and only for entities with URLs that have already been created.
  • Automatically close the page edit interface after trashing the entity.
  • Improved auto-fill of page information for entities after creation (related to auto-filling the URL and Browser Title fields), both when toggling "Has Url" and when editing the Name or Title fields.
  • Auto-close the new folder sub-dialog after a sub-folder is created as a child of the "folders" dialog.
  • Make URLs clickable in the grid-view dialog
  • Remove "Snippet" from list of object types available after clicking "new" from "All Content" dialog.
  • Better UI object caching for more reliable status icons
  • Updated new form field, new object, agency invitation, and admin list dialogs to attempt to prevent browser autofill
  • Do not close the upload file dialog when a file upload fails
  • In the folders dialog, display the "Close All" button by default instead of the "Open All" button.
  • Made redirects more noticable by defaulting the redirects section to "open" instead of "closed" for entities with a page.
  • Added a "logout" page which, in addition to logging you out, clears your local storage. Useful for debugging edge-case bugs with corrupted or outdated local storage.
  • Minor improvement to UX for restoring versions - the newere version is now always displayed on the right side, and after restoring a version the parent dialog is properly refreshed and the version dialogs is closed.
  • Improved consistency and styling of browser scrollbar placement across different browser types.

 

Other Minor Improvements

    Make preview site passwords human-readable while remaining secure
  • Allow "data-" attributes and other hyphenated attributes in the "{% img %}" tag.
  • Improved handling of "invalid" characters in file URLs for uploaded images and documents as well as stylesheets and javascript. File extensions should not be included in the image and document "Name", but the actual filename (Path) should always end with the proper extension. Some files may still not have any extension at all, although that should be relatively rare.
  • Allow links to documents to specify the "Open In New Tab" option.
  • Renamed css components of "Share Page" dialog in order to prevent adblockers from hiding Marketpath CMS controls.
  • Encode javascript and stylesheets as UTF-8 to fix the unicode character encoding issues for compiled CSS files.
  • "inspect" liquid filter improvements to prevent reference errors and to only fully inspect objects once per inspect filter (eg: {{ folder | inspect }}).
  • Include query strings in redirects resulting from a redirected domain
  • Throw an error if a template is infinitely nested - or at least if it is nested more than 80 "contexts" deep.
  • Allow users to set site settings to an "empty" value without resetting back to the default
  • Regex redirects are now case-insensitive and culture-invariant
  • Use case-insensitive attribute comparisons for liquid collection tags (eg: {% blog_post_collection Blog:blog %} should do the same thing as {% blog_post_collection blog:blog %})
  • Automatically fill in image alt text when uploading images for the first time (based on the image name)
  • Automatically update image "Alt" text when editing the "Title" field if the Alt and Title text are the same
  • Numerous additional backend, process, and miscelaneous improvements.

 

Billing Changes

  • Corrected some flawed discount and billing logic. No customer accounts were affected by these changes.
  • Improved flexibility of billing system for Marketpath billing administrators.
  • Factor in previous payments in the same billing cycle when calculating the amount due while upgrading packages.
  • Fixed the percentage formatting and the number of decimal places displayed on invoices.
  • Prorate sites going live for existing payers
  • Show a link to the PDF invoice (if available) from the invoice details dialog
  • Added ability to link directly to an invoice in Marketpath CMS with no site selected

 

Bugfixes

  • Publishing stylesheets should not mark them as "Edited" anymore (on the first publish)
  • Convert all domains to lowercase before processing them
  • Fixed "Read-Only" issue when editing pages in new tabs - which was caused by out-of-order javascript promise resolution.
  • Corrected bug with site settings which prevented settings from saving properly if more than 6 items were added to a list.
  • Fixed a couple bugs when creating "New Item" (entity) from the page edit UI
  • Do not show the spinning "Redirects" UI control before an entity is even created
  • Creating, updating, or removing a menu item properly udpates the full menu dialog properly.
  • Improved accuracy of UI pagination controls - now when loading item thumbnails it will display "0-60 of xx" if all 60 items are loaded instead of "30-60 of xx".
  • Fix for separate top, right, buttom, and left margins on images in the WYSISYG editor
  • Automatically republish a site after changing the default domain
  • Fix for selecting live URLs before a site has gone live
  • Selecting "all" folders and menus should only select the folders that match the status filter
  • Fix for closing page, template, and code edit UIs with the close button when window.opener == null
  • Improved error handling and consistency of CDN Purge functionality
  • Fixed a couple minor bugs with item ordering for datastore fields, form fields, gallery items, and menu items
  • Fixed status-related bugs with taking a site "live", taking it "dead" and "deleting" sites.
  • Fixed UI bug with gallery item images failing to load
  • Properly update redirects while swapping site domains
  • Fixed a bug with shortcut creation from the object properties dialog
  • Ability to schedule unpublish an already unpublished object if the object has also been scheduled for publishing
  • Do not display empty template custom field groups
  • ... and numerous additional miscelaneous bugfixes and improvements