/o//commerce-media/accounts/-1/images/18526032?download=true
Contact Manager is a plugin which will allow you to easily and
efficiently organize your contacts list. Create new contacts, import
from other applications, or benefit from Liferay platform users data.
Link existing contacts into groups and share them with other users.
With Contact Manager you will organize your notebook and quickly
find contact details of the person you need to get in touch with. The
plugin has features thanks to which searching through large numbers of
entries will be enjoyable and swift.
Features:
* Create, edit and delete existing contacts
*
Import contacts from external sources
* Add contacts based on
Liferay user data
* Use any of the fields that may contain
relevant information about the contact
* Mark contacts as
'Favourite'
* Simple navigation and features that facilitate
contact moderation (eg., select/mark as favorite)
* Sort your
contacts list
* Create and manage contact groups
* Share
contacts with other users
* User-friendly interface known from
other popular applications of same type
The following has evaluated to null or missing: ==> channel.items [in template "3192443#3192485#null" at line 18, 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 18, column 9] ----
1<#if themeDisplay?has_content>
2 <#assign scopeGroupId = themeDisplay.getScopeGroupId() />
3</#if>
4
5<#if currentURL?has_content>
6 <#if currentURL?contains('web')>
7 <#assign
8 index = 2
9 partsUrl = currentURL?split('/')
10 siteName = partsUrl[index..index]?join('/')
11 />
12 </#if>
13</#if>
14
15<#assign channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${scopeGroupId}'") />
16
17<#if channel?has_content>
18 <#assign channelId = channel.items[0].id />
19</#if>
20
21<#if (CPDefinition_cProductId.getData())??>
22 <#assign productId = CPDefinition_cProductId.getData() />
23</#if>
24
25<#assign
26 product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/"+ channelId +"/products/"+ productId +"?accountId=-1&nestedFields=productSpecifications&productSpecifications.pageSize=-1")
27 specifications = product.productSpecifications![]
28/>
29
30<div>
31 <#if specifications?has_content>
32 <#assign
33 liferayVersionSpecification = specifications?filter(item -> stringUtil.equals(item.specificationKey, "liferay-version"))
34 />
35
36 <#if liferayVersionSpecification?has_content>
37 <#list liferayVersionSpecification as liferayVersion>
38 <#assign liferayVersionValue = liferayVersion.value />
39
40 <#if liferayVersionValue?has_content>
41 ${liferayVersionValue}<#if liferayVersion?has_next>,</#if>
42 </#if>
43 </#list>
44 </#if>
45 </#if>
46</div>
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.