Release date: June 3, 2021
Version 4.2.20 had 64 bug fixes, 11 new features, and 38 improvements.
Reminder: Projects with Slack notifications need to add the API
com.psddev:slack-notification dependency to the project’s
- Create assets from the header—Editors can now create new assets from the header instead of from the search panel. This saves several mouse clicks and scrolls. This improvement is especially helpful for assets not commonly found in the Quick Start widget.
- Pin messages in the Conversation widget—Editors can now pin messages in the Conversations widget for easy future reference. When many stakeholders engage in a long discussion, no important messages get lost in the thread.
Publish subscription improvements—
- Editors can elect to receive a notification after an asset is first published (instead of receiving a notification after every publish).
- Editors can create content-type specific filters similar to those available in the search panel. For example, if an editor filters by article, the filter can be further refined by other fields associated with articles, such as author, section, and tag.
- Translation subscriptions—Editors can now subscribe to translation notifications. Filtering is available for combinations of translation service, status, creator, sites, and content types. In particular, editors can receive a notification should a translation job fail.
- Date picker improvement—Editors can select from predefined ranges, such as today, yesterday, past 7 days, past 30 days, as well as a custom range.
- Sort searches by label—Editors can now sort search results by label.
- Full labels in Quick Start widget—Starting with this release, the Quick Start widget displays the entire label of a content type. Prior to this release, long content type labels appeared truncated.
Significant defects addressed
- In some scenarios, attempting to copy a site generated an error
NullPointerException. This defect has been addressed.
- In some scenarios, attempting to filter the Recent Activity widget by a role generated an error. This defect has been addressed.
- In some scenarios, a GraphQL query did not return a corresponding view model. This defect has been addressed.
- In some scenarios, an Atom feed entry incorrectly used the HTTP protocol in an
<atom:link>element instead of the HTTPS protocol; depending on the target server’s configuration, this may have generated an error. This defect has been addressed.
- Prior to this release, editors could not insert an enhancement into the rich-text editor when that enhancement was a one-off audio file from a federated search. This defect has been addressed.
- Prior to this release, the Edit Theme Overrides tab displayed blank color fields and then applied default colors in the front end. In other scenarios, the placeholder color was rendered as a color explicitly selected. Starting with this release, the placeholder colors in the Edit Theme Overrides tab behave consistently with other fields having placeholder values. If the editor did not make an explicit selection, the value defaults to the placeholder color in light italics (and this value carries over to the front end); if the editor did make an explicit selection, the value appears in normal roman.
- In some scenarios, an editor assigned to a role without publish permissions could indeed publish an asset when it is in a workflow. For example, articles have a three-step workflow that ends with publish, and a role exists that excludes the ability to publish. In some scenarios, editors assigned to that role could publish articles at the end of a workflow. This defect has been addressed.
- Prior to this release, workflows having more than one status with the same name caused incorrect processing of transitions and notifications as an asset proceeded through the workflow. For example, if a workflow has two statuses named
Editing, processing of assets into one of those statuses was incorrect. Starting with this release, workflow statuses with the same name generate correct transitions and notifications.
- In some scenarios (usually with JPGs), when an editor uploaded an image to Brightspot, the original image’s orientation was not retained. For example, if the original image had a portrait orientation, the uploaded image was assigned a landscape orientation. For those scenarios, Brightspot now retains the image’s native orientation.
- As a result of an improvement to the site copier functionality, the constructor for
CopySiteStateValueReplacerhas changed from
public CopySiteStateValueReplacer(CopySiteTask currentTask, Database database, SiteCopierJob job, Set<ObjectType> typeSet, Map<UUID, UUID> copiedObjects)to
public CopySiteStateValueReplacer(CopySiteTask currentTask, Database database, SiteCopierJob job, Set<ObjectType> typeSet, Map<UUID, Object> copiedObjects).
- Due to an error related to
TimeSeriesunderreporting daily results in the two-month view, a breaking change was made. Please contact your Brightspot representative for more information, and reference ticket number BSP-11732.
TimeSerieswas updated to only keep data regarding the most recent interval. Please contact your Brightspot representative for more information, and reference ticket number BSP-11708.
- Workflows named “New,” “Published,” “Initial,” or “Final” were occasionally failing. As a result, projects using
Workflow#getTransitionsToAPIs directly with initial or final must change to using
- Users without publishing permissions were still able to publish if the transition was included in a workflow. As a result, permission of the transition to the final state has been removed in favor of the
- To simplify the experience around publishing third-party forms on Brightspot, the Marketo Credentials field was from the asset level to the site level. As a result, the
MarketoThirdPartyFormProvider#marketoCredentials field at the asset level was deprecated in favor of the
MarketoImportSettings#accounts fieldat the site level.
As a result of notification system improvements, the following breaking changes were made:
EmailDeliveryOptionno longer extend
ToolDeliveryOption, and instead extend
SlackDeliveryOptionno longer extends
ToolDeliveryOption, and instead extends
BrowserDeliveryOptionno longer extends
ToolDeliveryOption, and instead extends
BrowserMessageno longer extend
com.psddev.cms.notification.Message, and instead extend
- The Watching filter was moved into the Global Filters area. As a result, the Watcher plugin can no longer be disabled entirely via a setting. If users want to disable this plugin, it must be removed from the project (similar to other plugins). Additionally, because the “Watching?” filter has moved to the left, where other filters are, it is no longer persistent across searches. If users desire to retain the old behavior, settings to control this can be found in Admin > Sites & Settings > Global > CMS > UI > Watching Search Result Filter Enabled/Watching Search Filter Disabled.
- As a result of removing the Legacy Settings section of Sites & Settings, the Conversation settings must be reconfigured.
Brightspot 4.2 adds a Google Analytics integration. All classes are in the
com.psddev.google.analyticspackage unless as noted below:
- Deprecated the
GoogleAnalyticsProcessTaskuses the new
GoogleAnalyticsTaskGlobalSettingsModificationfor its execution time calculation.
Impressionsclass now uses a
java.lang.Longinstead of an
org.joda.time.DateTimefor storing date information. The
java.lang.Longvalue can be retrieved by using the new parsing methods
- The site-level metrics imported by
SiteReportwill now have the site’s UUID added as a suffix on the related
TimeSeriesnames. This change brings those site-level metrics in line with the other reports' site-level metrics.
GoogleAnalytics.AGE_RANGE_45_54_TIME_SERIES_NAMEconstant has been changed to end with
45_54(hyphen instead of underscore) to match the data coming from GA.
Reportand its implementations have been updated to fetch data bucketed by hour, day, and month, as required by the
- Deprecated the
The following methods in
- Projects that have overridden these methods will experience build-time errors. (
beforeSavecan still be overridden.)
SearchDashboardWidgetwas moved to a different package. Instances of this class will need to be republished to use the new implementation.