Blog Post

Release Notes & Updates
7 MIN READ

Lithium Community 18.8 Release Notes

SuzieH's avatar
SuzieH
Khoros Alumni (Retired)
7 years ago

Community release 18.8 includes improvements to several notification email templates that simplify template logic and improve localization capability. We have also completed an upgrade to AngularJS 1.7.3, and we will be migrating customers off Freemarker in CSS/SCSS files. 

New Features

Updates to Notification Email Templates

We have made changes to the following notification email templates:

  • Digest subscription notification (email_content.template.digest_notification.text)
  • General subscription notification (email_content.template.immediate_general.text)
  • @Mention notification (email_content.template.mentions.text)

If you have customized any of these templates, review the customizations and update the templates to use the new logic described below in order to take advantage of these improvements. If you have not customized these email templates and are still using the out-of-the-box versions, you don’t need to do anything.

Note: If you have customized versions of the templates, you will see a Use Default button displayed in the Text Editor > Email Text template in Studio after you have selected the email template in and clicked View. If you are using the Community Plugin SDK, you will see the template in your plugin directory under <PLUGIN ROOT>/res/lang/text.<LANGUAGE CODE>.

The Digest subscription notification email template now includes support for Product Associations, a feature that is currently in closed beta and that we will be announcing as Generally Available in an upcoming release.

The General subscription notification and @Mention notification email templates now use new logic to build the introduction section of the email template that describes the event that triggered the notification, and now use different logic to build the footer that explains why the end user received the notification (i.e. names the subscription). The new logic is performed by two methods on a new Velocity context object called templateHelper. The templateHelper context object and methods provide improved localization support and use new text keys to build the introduction and footer text.

Important: The change to the footer in the General subscription notification and @Mention notification email templates is a breaking change. 

To give you time to prepare for this change, we have made sure that your email notifications will continue to work with the 18.8 and 18.9 releases. However, you must complete your email template customizations by the 18.10 release. If you do not make these changes before upgrading to 18.10, notifications using these templates will fail.

Also, if you customize these email notification templates between the time that your stage instance has been upgraded to 18.8 and your production instance is being upgraded to 18.8 and publish your changes to production, the affected notifications will not work until your production instance is upgraded to 18.8.

You can edit a customized email template using Studio or the Community Plugin SDK. (See Email Templates in the Community Plugin SDK documentation for more details.)

To edit your customized email template in Studio:

  1. Go to Studio > Text Editor > Email Text.
  2. Open the Select Email Template menu and choose the email template you want to work with.
  3. Click View.
  4. Copy your existing, customized template content (plain text and HTML versions).
  5. Review your template with the changes described in this document.
  6. Depending on the extent and location of your template customizations, you will either:
    - Revert to the updated default version of the email template by clicking Use Default and then adding your customizations to the default.
    - Add the updated logic described below to your custom version.
  7. Click Save.

About the introduction text changes

The introductions in the General subscription notification and @ Mention notification email templates now include the templateHelper.getIntroText(boolean) method:

$templateHelper.getIntroText(true)

When true, the getIntroText method creates the introduction text as Plain Text. When false, it creates introduction text as HTML.

In the General subscription notification template, the templateHelper method replaces the logic below, which has been removed from the template. (The context objects in the removed portion of the template are still available in context and supported). 

#set ( $eventUser = "")
#set ( $eventUserRanking = "")
#set ( $eventText = "")
#set ( $eventDetails = "")

#if($notification.message.editRequestSave)
#set ( $eventDetails = "and has requested a review")
#elseif($notification.message.publishRequestSave)
#set ( $eventDetails = "and has requested it to be published")
#end

#if ($notification.newlyVisible || !$notification.message.edited)
#set ( $eventUser = "${notification.message.author.login}")
#set ( $eventUserRanking = "${notification.message.author.ranking.name}")
#if ($notification.moved)
#if ($notification.merged)
#set ($eventText = "merged a")
#else
#set ($eventText = "moved a")
#end
#else 
#set ( $eventText = "posted a new")
#end
#else
#set ( $eventUser = "${notification.message.lastEditUser.login}")
#set ( $eventUserRanking = "${notification.message.lastEditUser.ranking.name}")
#if ("${notification.message.board.discussionStyle}" == "tkb")
#set ( $eventText = "edited an")
#else
#set ( $eventText = "edited a")
#end
#end

${eventUser} (${eventUserRanking}) ${eventText} ${notification.message.localizedObjectType} in ${notification.message.board.title} on ${notification.formattedDateForMessageEdit} in the ${community.title} ${eventDetails}:

About the footer changes

The footer uses the templateHelper.footerText method. This method replaces the ${footerReason} call in the General subscription notification and @Mention notification email templates. templateHelpfer.footerText takes no parameters. It simply builds the footer section that describes why the notification recipient received the notification.

Important: The ${footerReason} context object is no longer supported in the General subscription notification and @ Mention notification email templates. If you do not update your email templates to incorporate this change, the footer in these templates will break.

New text keys used by templateHelper

The templateHelper methods used by the General subscription notification and @ Mention notification email templates use new text keys. The text keys use the following naming conventions. You can modify these text keys as needed in Studio > Text Editor > Community Text.

Text keys used by templateHelper.getIntroText(boolean) use the prefix notification.email.intro-text.

Example

notification.email.intro-text.post.html.text = {0} ({1}) posted a new {2} in {3} on {4}:

Text keys used by templateHelper.getFooter use the prefix notification.email.deduplification.footer

Note: For more details about the new text keys used for intro text on the General Subscription Notification email template and placeholder descriptions, see this article

Example

notification.email.deduplification.footer.mention_product_reply.text = You are receiving this email because you were @mentioned and the message matches your subscription to a product and a reply.

Email template diffs

Diffs are available in the patch file in the attachments section of this blog article.

Deprecation Update: FreeMarker in Skin Files

In Community release 18.1, we announced a deprecation path for the FreeMarker asset.get("<destination URL>") method within Community skins. We have reviewed all customer plugins and have identified those communities using the method within skin CSS/SCSS customizations.

After the 18.8 upgrade, we will run a separate script to migrate affected customers so that skins referencing assets in the Asset Library use the correct syntax. As a result of the migration, browsers will ignore CSS/SCSS declarations using asset.get("<destination URL>").

The new syntax uses a Sass function called asset instead of the $asset.get FreeMarker function used previously. The migration will change a reference to an asset like this:

background-image: url(${asset.get("/html/assets/disappear.gif")});

to this:

background-image: url(asset("/html/assets/disappear.gif"));

The script will be run on all communities' stage and production environments. Lithium Support will send a communication to all customers when the migration is complete.

If skins in your community are affected by this migration, you will see an entry in your version history in Studio > Versions that reads "freemarker asset.get wrapper migration". If you see this entry, be sure to test your skins in your stage and production environments to verify that assets in the Asset Library referenced in the skin appear properly.

Important: If you use the Community Plugin SDK and your community skins were updated as part of the migration, you must export skins from your stage environment to get the migration changes into your local environment.

To export skins from Studio, run the following command from your SDK plugin root:

li export-studio-plugin --points "skin" --force

To export skins from the SDK, run:

li export-plugin

Upgrade to AngularJS 1.7.3

In 18.7, we announced that we would be upgrading from AngularJS 1.4.8 to the latest 1.7.x version. Our upgrade is complete and Lithium Community now uses AngularJS 1.7.3.

You can review changes to the Angular library in Angular's changelog.

The only customers affected by this upgrade are those who have used our Angular integration. This group is a very small set of customers, most of whom worked with a Lithium Partner, iTalent, to implement our Lingotek integration for translation. iTalent has confirmed that the upgrade does not have an impact on those integrations. We are reviewing the remaining customizations. The remaining customers who have used our Angular integration do not have active customizations in production. We are evaluating those customizations to ensure that the upgrade does not affect the functionality.

While we do not expect any issues as a result of this upgrade, file a ticket with Lithium Support if you experience any issue involving an Angular integration customization.

API Changes

LiQL Update

We now support the != operator in the WHERE clause with the board.id field on the Messages collection.

Example

SELECT id FROM messages WHERE category.id = 'someCategoryDisplayId' AND board.id != 'someBoardUnderThatCategoryDisplayId'

You Found It. We Fixed It.

  • We fixed an issue that was preventing communities from establishing a database connection and resulted in Community timeouts
  • We fixed an issue identified in 18.7 that triggered a new thread notification when custom metadata keys were updated on a message. This issue affected only communities on 18.7 with custom metadata keys created for them at the message-level
  • We fixed accessibility issues with the Upload Avatar dialog. Screen readers now inform the users when the image is being uploaded and provide a message when the upload is finished
  • On mobile devices, menu navigation from the hamburger menu icon is accessible now on IOS using the switch control options
  • The Community API v2 now correctly returns all users with the same login name as opposed to returning only one user
  • The blog scheduler now displays 24-hour time correctly in Community Admin when scheduling a blog post
  • Customers no longer receive an exception when an SCSS file name uses only one to three characters.
  • TKB comments are sorting again as expected in non-responsive communities
    Nested TKBs now appear as expected in the Community Board List component (forums.widget.board-browser-list).
  • Time-based queries with the Bulk Data API are once again working properly.

 

Updated 7 months ago
Version 10.0

23 Comments