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

Liferay Invitation
Fel uppstod under bearbetning av mallen.
The following has evaluated to null or missing:
==> channel.items  [in template "3192443#3192485#null" at line 109, column 30]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign channelId = channel.items[0].id  [in template "3192443#3192485#null" at line 109, column 9]
----
1<style> 
2	.app-container { 
3		border-color: #2e5aac !important; 
4		color: #2e5aac; 
5		font-size: MEDIUM; 
6
7 
8	.app-category { 
9		display: block; 
10		flex: 1; 
11		max-width: 200px; 
12		overflow: hidden; 
13		text-overflow: ellipsis; 
14		white-space: nowrap; 
15
16 
17	.app-container .app-category { 
18		background-color: #e6ebf5; 
19		color: #1c3667; 
20		padding: 4px 8px; 
21
22 
23	.app-container .app-product-type { 
24		min-width: 0; 
25		overflow: hidden; 
26		text-overflow: ellipsis; 
27		white-space: nowrap; 
28
29 
30	.client-extension-product-type { 
31		background-color: #FFE6C6; 
32		color: #9D4C00; 
33
34 
35	.cloud-product-type { 
36		background-color: #D1EEDC; 
37		color: #0E7835; 
38
39 
40	.composite-app-product-type { 
41		background-color: #FBE0FF; 
42		color: #720086; 
43
44 
45	.diamond-icon-container { 
46		color: #C9C9CF; 
47		height: 4px; 
48		width: 4px; 
49
50 
51	.dxp-product-type { 
52		background-color: #D1ECFA; 
53		color: #166E9E; 
54
55 
56	.low-code-configuration-product-type { 
57		background-color: #DCD7E9; 
58		color: #503690; 
59
60 
61	@media screen and (max-width: 768px) { 
62		.app-container { 
63			font-size: small; 
64
65
66 
67	@media screen and (max-width: 576px) { 
68		.app-container { 
69			font-size: x-small; 
70
71 
72		.app-container .app-category, 
73		.app-container .app-product-type { 
74			padding: 2px 4px; 
75
76
77</style> 
78 
79<#assign 
80	productTypeValues = 
81
82			"client-extension": "Client Extension", 
83			"cloud": "Cloud App", 
84			"composite-app": "Composite App", 
85			"dxp": "DXP App", 
86			"low-code-configuration": "Low-Code" 
87
88 
89	VOCABULARY_PRODUCT_CATEGORY = "MARKETPLACE-APP-CATEGORY" 
90/> 
91 
92<#if themeDisplay?has_content> 
93	<#assign scopeGroupId = themeDisplay.getScopeGroupId() /> 
94</#if> 
95 
96<#if currentURL?has_content> 
97	<#if currentURL?contains('web')> 
98		<#assign 
99			index = 2 
100			partsUrl = currentURL?split('/') 
101			siteName = partsUrl[index..index]?join('/') 
102		/> 
103	</#if> 
104</#if> 
105 
106<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") /> 
107 
108<#if channel?has_content> 
109	<#assign channelId = channel.items[0].id /> 
110</#if> 
111 
112<#if (CPDefinition_cProductId.getData())??> 
113	<#assign productId = CPDefinition_cProductId.getData() /> 
114</#if> 
115 
116<#assign 
117	product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications,categories") 
118	categories = product.categories![] 
119	productSpecifications = product.productSpecifications![] 
120/> 
121 
122<div class="app-container color-neutral-3 d-flex flex-wrap font-size-paragraph-small justify-content-between w-100"> 
123	<div class="d-flex"> 
124		<#if productSpecifications?has_content> 
125			<#assign productTypes = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "type")) /> 
126 
127			<#list productTypes as productType> 
128				<#if productType?has_content> 
129					<#assign appType = (productTypeValues[productType.value]!) /> 
130 
131					<#if appType?has_content> 
132						<div class="align-items-center app-product-type border border-radius-small d-flex mb-1 mr-2 px-2 rounded-lg ${productType.value}-product-type"> 
133							<div class="bg-neutral-8">${appType}</div> 
134						</div> 
135					</#if> 
136				</#if> 
137			</#list> 
138		</#if> 
139 
140		<#if categories?has_content> 
141			<#assign filteredCategories = categories?filter(category -> category.vocabulary?upper_case == VOCABULARY_PRODUCT_CATEGORY) /> 
142 
143			<#if filteredCategories?has_content && appType?has_content> 
144				<span class="align-items-center d-flex justify-content-between"> 
145					<span class="align-items-center d-flex diamond-icon-container justify-content-between mr-3"> 
146						<@clay["icon"] symbol="diamond" /> 
147					</span> 
148				</span> 
149			</#if> 
150 
151			<#list categories as category> 
152				<#if category.vocabulary?upper_case == VOCABULARY_PRODUCT_CATEGORY> 
153					<span class="app-category bg-neutral-8 border-radius-small mb-1 mr-2 px-3 rounded-lg" title="${category.name}"> 
154						${category.name} 
155					</span> 
156				</#if> 
157			</#list> 
158		</#if> 
159	</div> 
160</div> 
18567208
The Invitation app lets you send an invitation to a list of email addresses.
DEVELOPER
DEVELOPER
2024-11-21 18:20
Published date
2024-11-21 18:20
Published Date
2024-11-21 18:20
SUPPORTED OFFERINGS
Liferay PaaS, Liferay Self-Hosted
Supported Versions
7.0
Resource Requirements
Edition
EE
PRICE
Free
help & support
SHARE LINK
Copy & Share

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.