/o//commerce-media/accounts/-1/images/18541885?download=true

Form Saver
Icon
DXP App
18541835
This app helps to prevent losing data when the user session expires due to inactivity.

Overview
Once the app is installed it will automatically save all data from the current page forms when the session is about to expire, and once the user logins again the data is restored.

Features
The app works automatically for all users in any page in the portal. The form saver is triggered when Liferay displays the inactivity warning.

Incompatible Fields
This is the list of fields that can't be restored because Liferay handles the input based on events instead of a simple input element.
- Tags
- Categories
- Related Assets
- Some Rich Text Editors that are rendered inside an iframe
- Some text inputs from web contents in which the id of the element is generated randomly for each request
DEVELOPER
Se ha producido un error al procesar la plantilla.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> specifications  [in template "3192443#3192485#null" at line 16, column 36]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if specifications?has_content && spe...  [in template "3192443#3192485#null" at line 16, column 1]
----
1<#assign 
2	channels = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels") 
3	channelId = "" 
4/> 
5 
6<#list channels.items as channel> 
7	<#if channel.name == "Marketplace Channel"> 
8		<#assign channelId = channel.id /> 
9	</#if> 
10</#list> 
11 
12<#if (CPDefinition_cProductId.getData())??> 
13	<#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") /> 
14</#if> 
15 
16<#if specifications?has_content && specifications.items?has_content> 
17	<#list specifications.items as specification> 
18		<#if specification.specificationKey?has_content && specification.specificationKey == "developer-name"> 
19			${specification.value} 
20		</#if> 
21	</#list> 
22</#if> 
DEVELOPER
10/03/16 0:00
Published date
October 3, 2016
Published Date
10/03/16 0:00
SUPPORTED OFFERINGS
Self-Hosted, Self-Managed
Supported Versions
6.2
Resource Requirements
Se ha producido un error al procesar la plantilla.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> specifications  [in template "3192443#3192485#null" at line 17, column 36]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if specifications?has_content && spe...  [in template "3192443#3192485#null" at line 17, column 1]
----
1<#assign 
2	channelId="" 
3	channels=restClient.get("/headless-commerce-delivery-catalog/v1.0/channels") 
4	filteredSpecifications=[] 
5/> 
6 
7<#list channels.items as channel> 
8	<#if channel.name=="Marketplace Channel"> 
9		<#assign channelId = channel.id /> 
10	</#if> 
11</#list> 
12 
13<#if (CPDefinition_cProductId.getData())??> 
14	<#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") /> 
15</#if> 
16 
17<#if specifications?has_content && specifications.items?has_content> 
18 
19	<#assign 
20		cpuQuantity = "" 
21		memoryQuantity = "" 
22	/> 
23 
24	<#list specifications.items?sort_by("specificationKey") as specification> 
25		<#if stringUtil.equals(specification.value, "cloud")> 
26		    <script> 
27		        var resourceRequirements = document.querySelector(".marketplace-resource-requirements") 
28						 
29						resourceRequirements.classList.remove("d-none"); 
30		    </script> 
31		</#if> 
32		 
33		<#if specification.specificationKey?has_content && (stringUtil.equals(specification.specificationKey, "cpu") || stringUtil.equals(specification.specificationKey, "ram"))> 
34			<#if stringUtil.equals(specification.specificationKey, "cpu" )> 
35				<#assign cpuQuantity = specification.value /> 
36 
37				<#if cpuQuantity?has_content> 
38					${cpuQuantity} 
39					<#if cpuQuantity?eval gt 1> 
40						CPUS 
41					</#if> 
42					<#if cpuQuantity?eval lt 2> 
43						CPU 
44					</#if> 
45				</#if> 
46			</#if> 
47 
48			<#if stringUtil.equals(specification.specificationKey, "ram")> 
49				<#assign memoryQuantity = specification.value /> 
50 
51				<#if cpuQuantity?has_content && memoryQuantity?has_content >,</#if> 
52			</#if> 
53 
54			<#if stringUtil.equals(specification.specificationKey, "ram")> 
55				<#assign memoryQuantity = specification.value /> 
56 
57				<#if memoryQuantity?has_content> 
58					${memoryQuantity} GB RAM 
59				</#if> 
60			</#if> 
61		</#if> 
62	</#list> 
63</#if> 
Edition
CE, EE
PRICE
Se ha producido un error al procesar la plantilla.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> specifications  [in template "3192443#3192485#null" at line 16, column 36]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if specifications?has_content && spe...  [in template "3192443#3192485#null" at line 16, column 1]
----
1<#assign 
2	channelId="" 
3	channels=restClient.get("/headless-commerce-delivery-catalog/v1.0/channels") 
4	filteredSpecifications=[] /> 
5 
6<#list channels.items as channel> 
7	<#if channel.name=="Marketplace Channel"> 
8		<#assign channelId = channel.id /> 
9	</#if> 
10</#list> 
11 
12<#if (CPDefinition_cProductId.getData())??> 
13	<#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") /> 
14</#if> 
15 
16<#if specifications?has_content && specifications.items?has_content> 
17	<#list specifications.items?sort_by("specificationKey") as specification> 
18		<#if specification.specificationKey?has_content> 
19			<#if stringUtil.equals(specification.specificationKey, "price-model" )> 
20				<#assign priceModel = specification.value /> 
21				<#if priceModel?has_content> 
22					${priceModel} 
23				</#if> 
24			</#if> 
25		</#if> 
26	</#list> 
27</#if> 
help & support
Terms & Conditions
SHARE LINK
Copy & Share Link

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.