An error occurred while processing the template.
The following has evaluated to null or missing: ==> curCPCatalogEntry.getUrl() [in template "20097#20123#42467" at line 19, column 26] ---- 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 Url = curCPCatalogEntry.getUrl() [in template "20097#20123#42467" at line 19, column 13] ----
1<#-- --- WM-ADT-ProductPlus ver. 1.6 --- -->
2<#-- ------ copyright ACSoftware ------ -->
3<#-- -- written by Mattia Giovinazzo -- -->
4
5<#assign portal_url = themeDisplay.getPortalURL() />
6<#assign is_signed_in = themeDisplay.isSignedIn()/>
7<#assign RoleService = serviceLocator.findService("com.liferay.portal.kernel.service.RoleLocalService") />
8<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")>
9<#assign usrRole = RoleService.getRole(companyId, "PRO_USER").getRoleId() />
10<#assign usrRoleAdmin = RoleService.getRole(companyId, "Administrator").getRoleId() />
11<#assign usrRoleFarmacia = RoleService.getRole(companyId, "FARMACIA").getRoleId() />
12<#assign usrRoleCentroMedico = RoleService.getRole(companyId, "CENTRO_MEDICO").getRoleId() />
13
14<div class="row product-shop">
15 <#if entries?has_content>
16 <#list entries as curCPCatalogEntry>
17 <#assign Image=curCPCatalogEntry.getDefaultImageFileUrl() />
18 <#assign Name=curCPCatalogEntry.getName() />
19 <#assign Url=curCPCatalogEntry.getUrl() />
20 <#assign Description=curCPCatalogEntry.getShortDescription() />
21 <#assign ItemId=curCPCatalogEntry.getCPDefinitionId() />
22 <#assign Skus=curCPCatalogEntry.getCPSkus() />
23 <#list Skus as sku>
24 <#assign sku = sku.getSku() />
25 </#list>
26 <#if sku != "GTP_VG_REP_MET">
27 <div class="<#if UserLocalService.hasRoleUser(usrRole, themeDisplay.getUserId()) || UserLocalService.hasRoleUser(usrRoleAdmin, themeDisplay.getUserId()) || UserLocalService.hasRoleUser(usrRoleCentroMedico, themeDisplay.getUserId()) || UserLocalService.hasRoleUser(usrRoleFarmacia, themeDisplay.getUserId())>col-md-3<#else>col-md-4</#if>">
28 <div class="wm-CardShop">
29 <div class="card ico v-center aniHover">
30
31 <div class="content-top">
32 <span class="card-top">
33 <img class="card-img" title="" alt="" src="${Image}" />
34 </span>
35 <h3 class="card-title">${Name}</h3>
36 </div>
37
38 <span class="card-box">
39 <div class="card-desc">${Description} </div>
40 <div class="mt-auto">
41
42 <div class="price">
43 <@liferay_commerce["price"]
44 CPDefinitionId=curCPCatalogEntry.getCPDefinitionId()
45 CPInstanceId=curCPCatalogEntry.CPSkus[0].getCPInstanceId()
46 showDiscount=true
47 /> <sup>*</sup>
48 <div class="price-info">*spese di spedizione incluse</div>
49 </div>
50
51 <span class="button-container">
52 <a data-senna-off="true" class="button-vm" href="${portal_url}/p/${Name}" title="RICHIESTA ANALISI">RICHIESTA ANALISI</a>
53 </span>
54 </div>
55 </span>
56
57 </div>
58 </div>
59
60 </div>
61 <#else>
62 <#if UserLocalService.hasRoleUser(usrRole, themeDisplay.getUserId()) || UserLocalService.hasRoleUser(usrRoleAdmin, themeDisplay.getUserId()) || UserLocalService.hasRoleUser(usrRoleCentroMedico, themeDisplay.getUserId()) || UserLocalService.hasRoleUser(usrRoleFarmacia, themeDisplay.getUserId())>
63 <div class="col-md-3">
64 <div class="wm-CardShop">
65 <div class="card ico v-center aniHover">
66 <div class="content-top">
67 <span class="card-top">
68 <img class="card-img" title="" alt="" src="${Image}" />
69 </span>
70 <h3 class="card-title">${Name}</h3>
71 </div>
72
73 <span class="card-box">
74
75 <div class="card-desc">${Description}</div>
76 <div class="mt-auto">
77
78 <div class="price">
79 <@liferay_commerce["price"]
80 CPDefinitionId=curCPCatalogEntry.getCPDefinitionId()
81 CPInstanceId=curCPCatalogEntry.CPSkus[0].getCPInstanceId()
82 showDiscount=true
83 /> <sup>*</sup>
84 <div class="price-info">*spese di spedizione incluse</div>
85 </div>
86
87 <span class="button-container">
88 <a data-senna-off="true" class="button-vm" href="${portal_url}/p/${Name}" title="RICHIESTA ANALISI">RICHIESTA ANALISI</a>
89 </span>
90 </div>
91 </span>
92
93 </div>
94 </div>
95
96 </div>
97 </#if>
98 </#if>
99
100 </#list>
101 </#if>
102</div>
103
104<style>
105.card-desc .row {
106display:block;
107margin:0;
108}
109.card-desc .col-md-6 {
110max-width:100%!important;
111}
112.card-desc .pr-md-3, .pl-md-3 {
113padding:0!important;
114}
115</style>
116<script>
117AUI().use('aui-base', function(A) {
118if (A.one('.product-shop')) {
119var boxMax = 0;
120 var descMax = 0;
121 A.one('.product-shop').all('.content-top').each(
122 function(node) {
123var boxHeight = node.height();
124if(boxHeight > boxMax){
125boxMax = boxHeight;
126}
127 }
128 );
129 A.one('.product-shop').all('.content-top').each(
130 function(node) {
131node.setStyle('height', boxMax);
132}
133 );
134 A.one('.product-shop').all('.card-desc').each(
135 function(node) {
136var boxHeight = node.innerHeight();
137if(boxHeight > descMax){
138descMax = boxHeight;
139}
140 }
141 );
142 A.one('.product-shop').all('.card-desc').each(
143 function(node) {
144node.setStyle('height', descMax);
145}
146 );
147 }
148 });
149</script>