Valuemix Concrete
An error occurred while processing the template.
Java method "com.base22.liferay.journal.search.service.JournalSearchLocalServiceImpl.search(long, long, long, String, String, long, String, String[], String[], String, String, String, String, boolean)" threw an exception when invoked on com.base22.liferay.journal.search.service.JournalSearchLocalServiceImpl object "com.base22.liferay.journal.search.service.JournalSearchLocalServiceImpl@46db9969"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign relatedDocuments = journalSea... [in template "20116#20152#168572" at line 267, column 1] ----
1<style>
2 article p {
3 color: #000;
4 }
5 article hr {
6 margin: 40px 0;
7 }
8 .buttons-wrapper {
9 border-top: 2px solid #45474e;
10 border-bottom: 2px solid #45474e;
11 }
12 .buttons-container {
13 padding: 40px 0px;
14 }
15 .buttons-container .btn {
16 border-radius: 0px;
17 padding: 10px 50px;
18 color: #FFF;
19 background-color: #003876;
20 margin: 30px 0px;
21 }
22 .summary__description {
23 font-size: 24px;
24 line-height: 36px;
25 letter-spacing: 0.5px;
26 font-family: "Roboto",sans-serif;
27 margin-bottom: 40px;
28 }
29 .features-container {
30 margin: 40px 0px;
31 }
32 .buttons-container .btn.contact-us {
33 background-color: #003876;
34 }
35 .buttons-container .btn.get-quote {
36 background-color:#b32c32;
37 }
38 }
39 .portlet-journal-content .journal-content-article .features-list table img{
40 max-width: 180px;
41 }
42 .buttons-container span {
43 vertical-align: middle;
44 padding-left: 5px;
45 }
46
47 .buttons-container .btn i {
48 background-repeat: no-repeat;
49 background-size: contain;
50 height: 32px;
51 width: 32px;
52 display: inline-block;
53 vertical-align: middle;
54 }
55 .locate-us i {
56 background-image: url("/documents/45807659/45840069/icon-map.png/11d8bb8e-f815-32b5-2f85-a56aa78232bb?t=1522186225695");
57 }
58 .get-quote i {
59 background-image: url("/documents/45807659/45840069/icon-quote.png/e36b8940-2bcb-d2e8-176c-37f5b9b96bfc?t=1522186252612");
60 width: 24px;
61 }
62 .contact-us i {
63 background-image: url("/documents/45807659/45840069/icon-contact.png/df1fe862-f3fa-671f-ae94-38b843f76af8?t=1524172877042");
64 }
65 .features-list ul {
66 list-style: none;
67 padding: 0;
68 }
69 .features-list li {
70 padding-left: 1.3em;
71 }
72 .features-list li:before {
73 content: "\f00c";
74 font-family: FontAwesome;
75 display: inline-block;
76 margin-left: -1.3em;
77 width: 1.3em;
78 font-size: 10px;
79 }
80 .features-image img {
81 max-height: 250px;
82 width: 100%;
83 }
84 .file-download img {
85 max-height: 35px;
86 margin-right: 5px;
87 margin-top: 5px;
88 }
89 .locate-us-container {
90 text-align: right;
91 }
92 .get-quote-container {
93 text-align: center;
94 }
95 article .row.content-wrapper {
96 margin-top: 40px;
97 }
98 @media (max-width:767px) {
99 .locate-us-container, .get-quote-container, .contact-us-container {
100 text-align: center;
101 }
102 .get-quote-container .btn {
103 margin: 0px;
104 }
105 .buttons-container .btn {
106 width: 100%;
107 font-size: 20px;
108 }
109 }
110 @media (min-width:768px) and (max-width:1024px){
111 .buttons-container .btn {
112 padding: 10px 40px;
113 }
114 }
115 .file-detail {
116 margin-bottom: 28px;
117 height: 120px;
118 padding: 0 20px 0 0 !important;
119 }
120 .attachments-wrapper {
121 font-size: 15px;
122 }
123 .summary__title, .summary__title h1 {
124 font-size: 40px;
125 margin-bottom: 40px;
126 font-weight: bold;
127 }
128 .summary__collapsable-title {
129 margin: 25px 0;
130 padding: 15px;
131 color: #ffffff;
132 font-size: 16px;
133 letter-spacing: 0.3px;
134 }
135 .summary__collapsable-heading {
136 background-color: #f5f5f5;
137 padding: 20px 15px;
138 font-size: 24px;
139 font-weight: 600;
140 margin-bottom: 20px !important;
141 }
142 .summary__collapsable-content {
143 padding: 0 30px 30px 30px;
144 }
145 .summary__collapsible-arrow, .summary__collapsible-arrow:hover,
146 .summary__collapsible-arrow:focus {
147 color: #1a1c20;
148 }
149 .summary__collapsable-attachment-title {
150 font-weight: bold;
151 font-size: 16px;
152 margin: 15px 0;
153 }
154 .summary__collapsable-attachment-icon {
155 margin-right: 10px;
156 height: 40px;
157 }
158 .summary__collapsable-attachment-arrow {
159 top: 2px;
160 margin-left: 10px;
161 }
162 .summary__collapsable-attachment-icon {
163 width: 31px;
164 height: 40px;
165 background-position: -657px -592px;
166 }
167 .summary__collapsable-attachment {
168 display: flex;
169 }
170 .summary__collapsable-attachment-name {
171 margin-top: 10px;
172 }
173 .summary__collapsable-image {
174 background-repeat: no-repeat;
175 background-size: contain;
176 height: 100px;
177 margin-bottom: 20px;
178 background-position: center;
179 }
180 a.b-cemex-button {
181 color: #000;
182 }
183 .file-description {
184 font-size: 18px;
185 font-weight: bold;
186 line-height: 1.56;
187 color: #1a1c20;
188 letter-spacing: 0.4px;
189 margin-bottom: 19px
190 }
191 .benefitsAndApplications {
192 display: table-row;
193 }
194 .benefitsAndApplications .section {
195 display: table-cell;
196 background-color: #e4e4e4;
197 padding: 15px;
198 }
199 .benefitsAndApplications .separator {
200 display: table-cell;
201 width: 20px;
202 border: none;
203 background-color: #FFF;
204 }
205 .benefitsAndApplications .section h3 {
206 padding: 10px 0;
207 background-color: #b6b6b6;
208 text-align: center;
209 color: #FFF;
210 }
211 .benefitsAndApplications .section h4 {
212 font-weight: bold;
213 margin: 15px;
214 }
215 @media (max-width:767px) {
216 .benefitsAndApplications {
217 display: block;
218 }
219 .benefitsAndApplications .section {
220 display: block;
221 width: 100%;
222 }
223 .benefitsAndApplications .separator {
224 height: 20px;
225 }
226 }
227 .applications {
228 display: block;
229 width: 100%;
230 }
231 .applications .section {
232 background-color: #e4e4e4;
233 padding: 15px;
234 }
235 .applications .section h3 {
236 padding: 10px 0;
237 background-color: #b6b6b6;
238 text-align: center;
239 color: #FFF;
240 }
241 .applications .section h4 {
242 font-weight: bold;
243 margin: 15px;
244 }
245</style>
246<#assign journalArticleId = .vars['reserved-article-id'].data>
247<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
248<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
249<#assign journalArticle = journalArticleLocalService.getArticle(groupId, journalArticleId)/>
250<#assign articleResource = journalArticle.getArticleResource() />
251<#assign articleResourcePK = articleResource.getPrimaryKey() />
252<#assign categoryList=assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) >
253<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
254<#assign themeDisplay = serviceContext.getThemeDisplay() />
255<#if categoryList?size gt 0>
256 <#assign mainCategory = categoryList[0] />
257</#if>
258<#if categoryList?size gt 0>
259<#assign categories = []/>
260<#list categoryList as category>
261 <#assign categories = categories + [category.getCategoryId()?string]/>
262</#list>
263<#assign journalSearchService = serviceLocator.findService("com.base22.liferay.journal.search.service.JournalSearchLocalService") />
264<#assign userId = themeDisplay.getUserId() />
265<#assign plid = themeDisplay.getPlid() />
266<#assign structures = ["189596"] />
267<#assign relatedDocuments = journalSearchService.search(userId, plid, companyId, "", "", groupId, locale, structures, categories, null, "must", null, null, true) />
268</#if>
269
270<article class="container">
271 <div class="row" style="margin-top:40px">
272 <div class="col-xs-12 col-sm-12 col-md-offset-2 col-md-8 col-lg-offset-2 col-lg-8">
273 <#if displayTitle?? && displayTitle.getData()?? && displayTitle.getData()?trim != "">
274 <header class="row">
275 <div class="summary__title"><h1>${displayTitle.getData()}</h1></div>
276 </header>
277 </#if>
278
279 <#if summary?? && summary.getData()?? && summary.getData()!="">
280 <div class="row summary__intro-container">
281 <div class="col-md-12">
282 <div class="summary__description">
283 ${summary.getData()}
284 </div>
285 </div>
286 </div>
287 </#if>
288
289 <div class="row buttons-wrapper">
290 <div class="col-xs-12 buttons-container">
291 <div class="col-xs-12 col-sm-4 contact-us-container">
292 <a href="https://www.cemex.co.uk/technical-product-support-helpline" id="prodSupPhone" class="btn contact-us">
293 <i aria-hidden="true"></i>
294 <span>Product Support</span>
295 </a>
296 </div>
297 <div class="col-xs-12 col-sm-4 get-quote-container">
298 <#if overrideGetQuoteURL?? && overrideGetQuoteURL.getData()?? && overrideGetQuoteURL.getData()?trim != "">
299 <a href="${overrideGetQuoteURL.getData()}" class="btn get-quote">
300 <i aria-hidden="true"></i>
301 <span>Get a Quote</span>
302 </a>
303 <#else>
304 <a href="/quote-requests-link" class="btn get-quote">
305 <i aria-hidden="true"></i>
306 <span>Get a Quote</span>
307 </a>
308 </#if>
309 </div>
310 <div class="col-xs-12 col-sm-4 locate-us-container">
311 <a href="/find-your-location.aspx<#if mainCategory?? && mainCategory.getDescription()?trim != "">?categoryid=${mainCategory.getDescription(locale)}</#if>" class="btn locate-us">
312 <i aria-hidden="true"></i>
313 <span>Locate Us</span>
314 </a>
315 </div>
316 </div>
317 </div>
318
319 <#if (thumbnail?? && thumbnail.getData()?? && thumbnail.getData()!="") || (features?? && features.getData()?? && features.getData()!="")>
320 <div class="row features-wrapper">
321 <div class="col-xs-12 features-container">
322 <#if features?? && features.getData()?? && features.getData()!="">
323 <div class="<#if thumbnail?? && thumbnail.getData()?? && thumbnail.getData()!="">col-xs-6<#else>col-xs-12</#if> col-sm-6 features-list">
324 ${features.getData()}
325 </div>
326 </#if>
327 <#if thumbnail?? && thumbnail.getData()?? && thumbnail.getData()!="">
328 <div class="<#if features?? && features.getData()?? && features.getData()!="">col-xs-6<#else>col-xs-12</#if> col-sm-6 features-image">
329 <img src="${thumbnail.getData()}" alt="${displayTitle.getData()}">
330 </div>
331 </#if>
332 </div>
333 </div>
334 </#if>
335
336 <#if body?? && body.getData()?? && body.getData()!="">
337 <div class="row content-wrapper">
338 <div class="col-xs-12 content-container">
339 ${body.getData()}
340 </div>
341 </div>
342 </#if>
343
344 <div class="row">
345 <#if section?? && section.getSiblings()?has_content>
346 <#list section.getSiblings() as cur_section>
347
348 <#assign collapsible_index = cur_section.getName() + cur_section_index />
349
350 <#assign collapsible_title = "" />
351 <#assign cur_attachment = "" />
352 <#assign cur_body = "" />
353
354 <#list cur_section.getChildren() as children>
355
356 <#if ( children.getName() == "title" ) >
357 <#assign collapsible_title = children.getData() />
358 </#if>
359 <#if ( children.getName() == "file" ) >
360 <#assign cur_attachment = children.getData() />
361 </#if>
362 <#if ( children.getName() == "content" ) >
363 <#assign cur_body = children.getData() />
364 </#if>
365
366 </#list>
367
368 <#if collapsible_title?trim != "">
369 <div class="row summary__collapsable-heading b-collapsable__border-left" style="background-color: white;" >
370 <div class="col-xs-11">
371 <h2>${collapsible_title}</h2>
372 </div>
373 <div class="col-xs-1">
374 <a class="summary__collapsible-arrow" role="button"
375 data-toggle="collapse" href="#${collapsible_index}"
376 aria-expanded="true" aria-controls="${collapsible_index}">
377 <span class="glyphicon glyphicon-menu-up"
378 aria-hidden="true"></span>
379 </a>
380 </div>
381 </div>
382 </#if>
383 <div class="collapse row in" id="${collapsible_index}" aria-expanded="true" <#if collapsible_title?trim == "">style="display: block;"</#if>>
384 <div class="summary__collapsable-content">
385
386 <#if cur_body != "" >
387 ${cur_body}
388 </#if>
389
390 <#if cur_attachment != "">
391 <@generateAttachmentElement cur_attachment ""/>
392 </#if>
393
394 </div>
395 </div>
396 </#list>
397 </#if>
398 </div>
399 </div>
400 </div>
401 <#include "${templatesPath}/46036047" />
402
403 <#if relatedDocuments?? && relatedDocuments.getResults()?has_content>
404 <#if (!hideRelatedDocuemnts?? || !getterUtil.getBoolean(hideRelatedDocuemnts.getData()))>
405 <div class="row" style="margin-top:40px">
406 <div class="col-xs-12 col-sm-12 col-md-offset-2 col-md-8 col-lg-offset-2 col-lg-8">
407 <div class="row summary__collapsable-heading b-collapsable__border-left" style="background-color: white;">
408 <div class="col-xs-11">
409 <h2>Related Documents</h2>
410 </div>
411 <div class="col-xs-1">
412 <a class="summary__collapsible-arrow" role="button"
413 data-toggle="collapse" href="#relatedDocuments"
414 aria-expanded="true" aria-controls="relatedDocuments">
415 <span class="glyphicon glyphicon-menu-up"
416 aria-hidden="true"></span>
417 </a>
418 </div>
419 </div>
420 <div class="collapse row in" id="relatedDocuments" aria-expanded="true">
421 <div class="row attachments-wrapper ">
422 <#if (attachments?? && attachments.getSiblings()?has_content) >
423 <#list attachments.getSiblings() as attachment>
424 <#if attachment?? && attachment.getData()?? && attachment.getData()!="">
425 <@generateAttachmentElement attachmentURL=attachment.getData() title=""/>
426 </#if>
427 </#list>
428 </#if>
429 <#if (!hideRelatedDocuemnts?? || !getterUtil.getBoolean(hideRelatedDocuemnts.getData())) && (relatedDocuments?? && relatedDocuments.getResults()?has_content)>
430 <#attempt>
431 <#list relatedDocuments.getResults() as entry>
432 <#if entry.getValue("attachment")?trim != "" >
433 <#assign attachment = entry.getValue("attachment")?eval/>
434 <@generateAttachmentElement attachmentURL="/documents/" + attachment.groupId + "/" + attachment.folderId + "/" + attachment.fileName + "/" + attachment.uuid title=entry.getValue("displayTitle") />
435 </#if>
436 </#list>
437
438 <#recover>
439 <!-- something went wrong -->
440 </#attempt>
441 </#if>
442 </div>
443 </div>
444 </div>
445 </div>
446 </#if>
447 </#if>
448</article>
449
450<script>
451 (function(window, $, undefined) {
452 var onReady = function() {
453 var $collapsibleArrows = $('.summary__collapsable-heading > div > a'),
454 $attachmentsContainer = $('.attachments-wrapper');
455
456 $collapsibleArrows.on('click', function(event) {
457 event.preventDefault();
458 var $currentSpan = $(this).find('span');
459 var $currentHeading = $(this).closest('div.summary__collapsable-heading');
460 if($(this)[0].getAttribute('aria-expanded') == "true"){
461 $currentSpan.removeClass();
462 $currentSpan.addClass("glyphicon glyphicon-menu-down");
463 $currentHeading.css("background-color", "#f5f5f5");
464 } else {
465 $currentSpan.removeClass();
466 $currentSpan.addClass("glyphicon glyphicon-menu-up");
467 $currentHeading.css("background-color", "white");
468 }
469 });
470 var elements = location.href.split("#")
471 if(elements.length > 1 && $("#" + elements[1]).length > 0){
472 setTimeout(function(){
473 //$("#" + elements[1]).parent().parent().find("a.summary__collapsible-arrow").trigger('click');
474 var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
475 if($("#" + elements[1]).offset().top > h)
476 $("#content-footer-wrapper").scrollTop(($("#" + elements[1]).offset().top-80));
477
478 },400);
479
480 } else {
481 //$($collapsibleArrows[0]).trigger('click');
482 //if ( $attachmentsContainer.children().length > 0 ) {
483 // $attachmentsContainer.removeClass('hidden');
484 //}
485 }
486 };
487 AUI().ready(onReady);
488 })(window, jQuery);
489</script>
490
491<#if generateJsonld?? && getterUtil.getBoolean(generateJsonld.getData())>
492 <script type="application/ld+json">
493 {
494 "@context": "http://schema.org",
495 "@type": "Product",
496 "name": "${displayTitle.getData()}",
497 "image": "<#if thumbnail?? >${thumbnail.getData()}</#if>",
498 "description": "${summary.getData()?trim}",
499 "url" : "https://www.cemex.co.uk${themeDisplay.getURLCurrent()}",
500 <#if categoryList?size gt 1>"brand" : "${categoryList[1].getName()}",</#if>
501 <#if categoryList?size gt 0>"category" : "${categoryList[0].getName()}",</#if>
502 <#if isRelatedTo?trim != "">"isRelatedTo" : [${isRelatedTo}],</#if>
503 "manufacturer" : "CEMEX S.A.B. de C.V."
504 }
505 </script>
506</#if>
507
508<#macro generateAttachmentElement attachmentURL title>
509 <#assign counter = 0 >
510 <#list attachmentURL?split("/") as chunkURL>
511 <#if counter == 2>
512 <#assign groupId = chunkURL?number >
513 </#if>
514 <#if counter == 5>
515 <#if chunkURL?index_of("?") != -1>
516 <#assign uuId = chunkURL?substring(0, chunkURL?index_of("?")) >
517 <#else>
518 <#assign uuId = chunkURL >
519 </#if>
520 </#if>
521 <#assign counter = counter+1 >
522 </#list>
523
524 <#assign fileEntry = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
525 <#assign file=fileEntry.getFileEntryByUuidAndGroupId(uuId, getterUtil.getLong(groupId)) >
526 <#assign fileName = file.getTitle()>
527 <#assign fileDescription = file.getDescription()>
528
529 <div class="col-xs-12 col-md-6 file-detail">
530 <div class="file-description"><#if fileDescription?trim != "" >${fileDescription}<#else>${title}</#if></div>
531 <div class="file-download"><img src="/documents/45807659/45840069/pdf-icon.png/e7af5019-3956-922d-161b-0de750ccadd1?t=1519847131363" alt="${fileDescription}"><a href="${attachmentURL}">${fileName}</a></div>
532 </div>
533</#macro>
Find Out More
We're here to answer any questions or concerns you might have. We also appreciate any feedback you'd like to give. It's only through close relationships and an ongoing dialogue with our customers that we're able to better serve your needs.