You can now have access to the event’s details when selecting a calendar event and be redirected to the already existing details page of that particular event. It is also possible to map a Calendar Event’s specific URL, along with some other fields, in order to use it in emails so the recipient can click on it and be redirected to the Event’s details.
Release Notes
We're introducing advanced script loading options for JavaScript Client Extensions in Liferay, providing developers more control over how JavaScript is applied to pages. This update allows the specification of async and defer attributes directly in the extension's configuration, optimizing the loading process and improving page performance.
Benefits for users:
- Improved Page Load Performance: by setting
asyncordeferattributes, scripts can be loaded non-blocking, enhancing page responsiveness. - Enhanced Control: developers can pre-set these attributes in the YAML configuration or through the UI, ensuring scripts behave consistently across all pages without further adjustment.
- Streamlined Configuration: once set, these attributes are locked at the extension level, eliminating discrepancies and simplifying script management.
Allow developers to specify additional attributes to the <script> tag when deploying in with the JS Client Extension.
Example usage in client-extension.yaml: liferay-portal/workspaces/liferay-sample-workspace/client-extensions/liferay-sample-global-js-2/client-extension.yaml at master · liferay/liferay-portal
scriptElementAttributes:
async: true
data-attribute: "value"
data-senna-track: "permanent"
fetchpriority: "low"
Or, developers can configure the attributes via the create Client Extension UI too:
When configuring a JS CX on a page and async/defer Boolean attributes are present in the CX (set in the yaml / defined through the UI), the following behaviors apply in regards to the Load type options:
- The attribute set in the CX will be used and the ability to change it when applying it on a page will be disabled.
- When both attributes are set in the CX,
asyncwill be applied. - When
asyncordeferis set to false in the CS, the related option will be removed from the Load selector. (e.g. ifdefer: falsethe load options available for the user will bedefaultandasync).
This feature introduces the capability to connect Liferay Objects with SugarCRM Objects, empowering users to synchronize and store their data efficiently between the two platforms. By bridging these systems, users can streamline their workflows, enhance data consistency, and leverage the robust features of both Liferay and SugarCRM.
Users can now, with low effort, connect their Liferay and SugarCRM environments, eliminating the need for manual data transfers and reducing the risk of errors. This enhancement not only simplifies data management but also enhances the overall user experience by providing a cohesive and integrated ecosystem for managing customer data.
We have improved the behaviour of an existing configuration to be able to properly publish a child page in a Staging process to Live site without its parent(s). This also improves the performance of publishing changes.
It is now possible to select Date Times as a product option type, configuring purchase options for products based on date, times, time zones, and durations, allowing for the sale of time slots.
Manage contacts directly related to accounts like phone numbers, emails, websites, addresses.
A new Contact Tab in Account details page with 2 internals tabs was created:
- Addresses
- Contact Information
Users with “Accounts > Account Entry: Manage Addresses” permission should be able to manage their contacts with all these actions:
- Add
- Edit
- Remove
- Mark as primary
Example of managing a phone number:
Users without “Accounts > Account Entry: Manage Addresses” permission should be able to only view the existing phone number entries.
The Server Administration interface provides powerful tools for controlling the server. As an added layer of security, CAPTCHA is now required for actions in Server Administration pages and the Gogo Shell page. Due to the sensitive nature of these controls, the system will still enforce CAPTCHA on these pages, even if the “Maximum Challenges” configuration is set to a negative number.
We are constantly working on improving performance of Publications. We have implemented improvement for Timeline and Conflict checking icons.
If a conflict appears between the scheduled publication and Production before or during publishing stage, we have added a functionality to provide more information inside Liferay notifications when this situation occurs.
This features creates a reviewer role that has read-only (and no update) permissions. It grants permission to review the draft of a content page, or the pages that are submitted through a workflow and are still pending approval and publication.
Page Creator now can efficiently manage permissions for their website, distinguishing between public and restricted pages. Key functionalities, such as unique designs and restricted access, are incorporated seamlessly.
Requirements include easy identification of page visibility, bulk permission management, and configuration options for both individual pages and entire branches.
Provide the option at Instance and Site settings to the XML sitemap to allow customers to customize the inclusion or exclusion of content according to the SEO technical requirements.
When the User reaches Control Panel → Instance Settings, a new menu item (SEO), under Platform, will be shown. By accessing this menu, the user will be able to include/exclude different content.
When the user has Download permission on a file, then the Documents and Media File result features a download link in the Search Results widget in all out-of-the-box widget display styles.
The Search Results widget Template Context has received a new field to obtain the download URL in custom display templates: ${entry.getAssetRendererURLDownload()}
Part of the recurring compatibility testing, Elasticsearch 8.13.x has been added to the compatibility matrix to the corresponding Liferay versions.
Note: Compatibility with newer Elasticsearch minor versions is always tested in two ways:
Latest-Latest: Testing the latest Liferay version with the latest available minor version of Elasticsearch → e.g.
Master/2024.Q2 + Elasticsearch 8.13Minimum-Latest: Testing the minimum Liferay version where Elasticsearch 8 compatibility was first made available with the latest minor version of Elasticsearch →
DXP 7.4 U81/DXP 7.3 U31 + Elasticsearch 8.13
This way we can not only provide compatibility for the latest Liferay versions, but also backwards compatibility, allowing a broader customer base and deployments to operate their stack with an up-to-date search engine version.
As Elasticsearch is usually released a new Minor version roughly every two months, this is a recurring process and a planned activity for our team.
Liferay ships with an updated Elasticsearch connector using 7.17.18 as the client version. It is also for the development and testing purpose for Sidecar server.
The solution involves implementing advanced filtering options on the Builds and Deployments pages of the platform. This feature allows users to filter builds and deployments by key parameters such as date and environment. It is structured as following:
Date Filter: users can select a specific date or a date range from a calendar interface. This allows to view builds and deployments that were created or modified within that timeframe, facilitating quick access to historical data or recent updates.
Environment Filter: this filter enables users to select from pre-defined environment options (e.g. development, testing, production) viewing only the builds and deployments relevant to the chosen environment. This is particularly useful for teams managing multiple environments and needing to track their respective changes efficiently.
For custom objects, we have add the possibility to upload and save an attachment file in only one step. As another field of the entry, users can upload directly a document to an attachment field using Base64 format.
"AttachmentField1" : {
"fileBase64" : "iVBORw0KGgoAAAANSUhEUgAAAD0AAAAXCAIAAAA3N9DuAAAAA3NCSVQICAjb4U/gAAAAEHRFWH", "name" : "file.png"
}
And, to recover the values of the entry, they can do it in the same format using nested fields.
curl -X GET \ -u 'test@liferay.com:test' \ 'http://localhost:8080/o/c/mytestobjects/by-external-reference-code/users-computer-attachment-1?nestedFields=usersComputerAttachment1.fileBase64'
For sure, the previous options of uploading and downloading files of an entry are available too so the user can decide which to use in any case.
Only available for Custom Objects fields.
Until now, in GraphQL, it was not possible to create a query (or mutation) where the user could select the version to execute. Besides that, in case more than one endpoint had the same name but in different applications, you couldn’t select which one to use.
In order to make queries and mutations unique in GraphQL, we have created a new structure using a namespace with the following format:
Path + “_” + “v” + MayorVersion + “_” + MinorVersion ( 0 by default ).
query {
structuredContents(siteKey: "20117") {
items {
title
}
}
}
VS
query {
headlessDelivery_v2_0 {
structuredContents(siteKey: "20117") {
items {
title
}
}
}
}
Feature Status Change
New link added to the chart from the organization management admin pages. Chart now supports search functionality. Users with permissions can view or edit more details of the Organization, Account or User when it is selected on the chart.
Feature Status Change Use the platform's configurable purchasing rules to dictate which product options need to be purchased together when setting up products with options. You can set which product options must be purchased together and/or which product options cannot be combined together to create a valid product bundle. You can also limit the number of products from a particular group of products that can be purchased together. |