/o//commerce-media/accounts/-1/images/18553176?download=true
This is the "Plus" version of our established Scrum Portlet. It is addressed to Scrum teams that are looking for an application suiting their specific needs in project management and development. Since a comprehensive project documentation is often a key requirement, integrating software into the process is a common task. Derived from our personal experience, we aim at developing a portlet, that is adjusted specifically to the daily work of a Scrum team without slowing it down.
Compared to the free version, Scrum Portlet Plus offers several improvements and new features including:
• Liferay DXP and 7.0 CE support
• Scrum board optimization for high resolutions
• Fast task creation directly on the board
• Sprint reports in PDF and Excel format
• Ability to mark a Liferay user group as Scrum team
• Space for your project vision to always keep it in mind
• … and many more to come in future
The general key features of our Scrum Portlet include:
• Fully customizable drag & drop Scrum board
• Versioned document management
• Reports of sprint progress
• Time tracking and discussions
• Always up-to-date thanks to Ajax Push
• Manage several Scrum teams in one portal instance
• Individual color scheme per user
• Available in English and German
• Based on JSF 2.2 and PrimeFaces 6.1
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>
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>
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>
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.