/o//commerce-media/accounts/-1/images/18410447?download=true
AjaxQuote Portlet
DXP App
Real-time market quote data is streamed to one or more portlets on the page by Ajax and JavaScript technology. Watch the tickers move in real-time on the screen (with no stress on the back-end; all client side services).
Features:
Quote data is updated on the page in real-time
Support for anonymous and personalized portlets (logged-in and non-logged-in home screens)
Multiple instances of portlets on the same page (different portfolio sets)
Installation (for vanilla LifeRay 6.1 CE GA2 tomcat bundle):
1. Update tomcat Context.xml to indicate a JNDI datasource called "jdbc/openfeedaq"
2. Create tables for OPENFEEDAQ schema (tested with MySQL and MSSQL Server"
3. Deploy "ajaxquote-portlet-0.0.9.5.war"
4. Due to the issue (LPS-29103) with the deployment manager in LifeRay 6.1 CE GA2 the app deployment will fail (Spring contextListener position)
5 Stop the LifeRay server and edit the C:\liferay-portal-6.1.1-ce-ga2\tomcat-7.0.27\webapps\ajaxquote-portlet-0.0.9.5\WEB-INF\web.xml; moving the "org.springframework.web.context.ContextLoaderListener" to the top the web.xml
6. Restart the server and proceed to add unlimited amount of AjaxQuote Portlets to logged-in and anonymous pages.
Instructions and Examples of the Tomcat Context.xml and JBOSS datasource modules, source code and build scripts are all located on GitHub:
https://github.com/openfeed/AjaxQuotePortlet
Quality:
This app has been tested end to end on LifeRay Portal 6.1 CE GA2 Tomcat and JBOSS bundles. This app boots and works on LifeRay 6.1 Beta 1 (see screenshots). Due to a bug in JBOSS and MySQL requiring the MySQL dialect declared in the persistence unit we are required to make a specific build using the following--mvn clean install -P jpa20,mysql
Features:
Quote data is updated on the page in real-time
Support for anonymous and personalized portlets (logged-in and non-logged-in home screens)
Multiple instances of portlets on the same page (different portfolio sets)
Installation (for vanilla LifeRay 6.1 CE GA2 tomcat bundle):
1. Update tomcat Context.xml to indicate a JNDI datasource called "jdbc/openfeedaq"
2. Create tables for OPENFEEDAQ schema (tested with MySQL and MSSQL Server"
3. Deploy "ajaxquote-portlet-0.0.9.5.war"
4. Due to the issue (LPS-29103) with the deployment manager in LifeRay 6.1 CE GA2 the app deployment will fail (Spring contextListener position)
5 Stop the LifeRay server and edit the C:\liferay-portal-6.1.1-ce-ga2\tomcat-7.0.27\webapps\ajaxquote-portlet-0.0.9.5\WEB-INF\web.xml; moving the "org.springframework.web.context.ContextLoaderListener" to the top the web.xml
6. Restart the server and proceed to add unlimited amount of AjaxQuote Portlets to logged-in and anonymous pages.
Instructions and Examples of the Tomcat Context.xml and JBOSS datasource modules, source code and build scripts are all located on GitHub:
https://github.com/openfeed/AjaxQuotePortlet
Quality:
This app has been tested end to end on LifeRay Portal 6.1 CE GA2 Tomcat and JBOSS bundles. This app boots and works on LifeRay 6.1 Beta 1 (see screenshots). Due to a bug in JBOSS and MySQL requiring the MySQL dialect declared in the persistence unit we are required to make a specific build using the following--mvn clean install -P jpa20,mysql
DEVELOPER
Une erreur s'est produite lors du traitement du modèle.
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
29/08/13 00:00
Published date
May 8, 2015
Published Date
29/08/13 00:00
SUPPORTED OFFERINGS
Self-Hosted, Self-Managed
Supported Versions
6.1
Resource Requirements
Une erreur s'est produite lors du traitement du modèle.
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
Une erreur s'est produite lors du traitement du modèle.
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
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.