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