Screed NBS Clauses
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#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> 
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.