Indietro

Multiveicolo di FATA

Si è verificato un errore nell'elaborarazione del modello.
Error on line 859, column 33 in 20155#20195#CATTOLICA-PORTAL-TPL-PRODUCT
dLFileEntryLocalService.getFileEntryByUuidAndGroupId(docUuid, groupId) is undefined.
It cannot be assigned to docDM
1<#-- 
2## Costanti 
3--> 
4<#assign CATTOLICA_PRODUCTS_CATEGORIES_VOCABULARY = "cattolica-portal-products-categories" /> 
5<#assign CATTOLICA_PRODUCTS_HASHTAGS_VOCABULARY = "cattolica-portal-products-hashtags" /> 
6<#assign CATTOLICA_SHOWCASE_STRUCTURE_KEY = "CATTOLICA-PORTAL-ST-SHOWCASE" /> 
7<#assign CATTOLICA_CUSTOMERCARE_STRUCTURE_KEY = "CATTOLICA-PORTAL-ST-CUSTOMERCARE" /> 
8<#assign CATTOLICA_PRODUCT_STRUCTURE_KEY = "CATTOLICA-PORTAL-ST-PRODUCT" /> 
9<#assign CATTOLICA_BANNER_STRUCTURE_KEY = "CATTOLICA-PORTAL-ST-BANNER" /> 
10<#assign CATTOLICA_QUOTTI_STRUCTURE_KEY = "CATTOLICA-PORTAL-ST-QUOTTI" /> 
11<#assign CATTOLICA_SHORTLINK_STRUCTURE_KEY = "CATTOLICA-PORTAL-ST-SHORTLINK" /> 
12<#assign CATTOLICA_PRODUCTBOX_MODEL_KEY = "CATTOLICA-PORTAL-TPL-PRODUCTBOX" /> 
13<#assign CATTOLICA_VIDEO_MODAL_MODEL_KEY = "CATTOLICA-PORTAL-ST-VIDEOMODAL" /> 
14<#assign CATTOLICA_AGENCYLOCATOR_STRUCTURE_KEY = "CATTOLICA-PORTAL-ST-AGENCYLOCATOR" /> 
15<#assign JOURNAL_ARTICLE_CLASS_NAME_ID = portalUtil.getClassNameId("com.liferay.portlet.journal.model.JournalArticle") /> 
16<#assign JOURNAL_ARTICLE_CLASS_NAME = portalUtil.getClassName(JOURNAL_ARTICLE_CLASS_NAME_ID) /> 
17 
18<#-- 
19## Servizi 
20--> 
21<#assign ddmStructureLocalService = serviceLocator.findService("com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalService") /> 
22<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetCategoryLocalService") /> 
23<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetEntryLocalService") /> 
24<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetLinkLocalService") /> 
25<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetVocabularyLocalService") /> 
26<#assign dLFileEntryLocalService = serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService")> 
27<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.service.GroupLocalService") /> 
28<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService")> 
29<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.service.LayoutLocalService")> 
30 
31<#-- 
32## Variables 
33--> 
34<#assign serviceContext = staticUtil["com.liferay.portal.service.ServiceContextThreadLocal"].getServiceContext()> 
35<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
36<#assign journalArticleId = .vars['reserved-article-id'].data /> 
37<#assign svgSpritePath = themeDisplay.getPathThemeImages() /> 
38 
39<#attempt> 
40  <#assign journalArticleProduct = journalArticleLocalService.getArticle(groupId, journalArticleId)/> 
41  <#recover> 
42</#attempt> 
43 
44<#attempt> 
45  <#assign productsCategoriesVocabulary = assetVocabularyLocalService.getGroupVocabulary(groupId, CATTOLICA_PRODUCTS_CATEGORIES_VOCABULARY) /> 
46  <#assign productsHashtagsVocabulary = assetVocabularyLocalService.getGroupVocabulary(groupId, CATTOLICA_PRODUCTS_HASHTAGS_VOCABULARY) /> 
47  <#recover> 
48</#attempt> 
49 
50<#assign agencyLocatorJA = "" /> 
51<#assign showcaseJA = "" /> 
52<#assign customercareJA = "" /> 
53<#assign bannerJA = [] /> 
54<#assign productboxJA = [] /> 
55<#assign productboxJATemp = [] /> 
56<#assign productboxPriorities = [] /> 
57<#assign quottiJA = "" /> 
58<#assign shortLinkJA = "" /> 
59<#assign videoJA = "" /> 
60 
61<#if validator.isNotNull(journalArticleProduct)> 
62  <#assign classPK = journalArticleProduct.getResourcePrimKey() /> 
63  <#assign jaAssetEntry = assetEntryLocalService.getEntry(JOURNAL_ARTICLE_CLASS_NAME, classPK) /> 
64  <#assign articleCat = assetCategoryLocalService.getCategories("com.liferay.portlet.journal.model.JournalArticle", getterUtil.getLong(classPK))> 
65  <#assign articleCatProductId = [] /> 
66 
67  <#list articleCat as category> 
68    <#if category.getVocabularyId() == productsCategoriesVocabulary.getVocabularyId() > 
69      <#assign articleCatProductId = articleCatProductId + [category.getCategoryId()] /> 
70    </#if> 
71  </#list> 
72 
73  <#-- 
74  ## Risorse correlate prodotto 
75  --> 
76  <#if validator.isNotNull(jaAssetEntry)> 
77    <#assign jaAssetEntryId = jaAssetEntry.getEntryId()> 
78 
79    <#if (jaAssetEntryId > 0)> 
80      <#assign assetLinks = assetLinkLocalService.getDirectLinks(jaAssetEntryId)> 
81 
82      <#if validator.isNotNull(assetLinks) && (assetLinks?size > 0) > 
83        <#assign relatedEntry = "" /> 
84 
85        <#list assetLinks as assetLink> 
86 
87          <#if assetLink.getEntryId1() == jaAssetEntryId> 
88            <#assign relatedEntry = assetEntryLocalService.getEntry(assetLink.getEntryId2()) /> 
89          <#else> 
90            <#assign relatedEntry = assetEntryLocalService.getEntry(assetLink.getEntryId1()) /> 
91          </#if> 
92 
93          <#if validator.isNotNull(relatedEntry) && relatedEntry != ""> 
94            <#assign renderer = relatedEntry.getAssetRenderer() /> 
95            <#assign relatedJA = renderer.getArticle() /> 
96 
97            <#if relatedJA.getStructureId() == CATTOLICA_BANNER_STRUCTURE_KEY> 
98              <#assign bannerJA = bannerJA + [relatedJA] /> 
99            <#elseif relatedJA.getStructureId() == CATTOLICA_SHOWCASE_STRUCTURE_KEY> 
100              <#assign showcaseJA = relatedJA /> 
101            <#elseif relatedJA.getStructureId() == CATTOLICA_CUSTOMERCARE_STRUCTURE_KEY> 
102              <#assign customercareJA = relatedJA /> 
103            <#elseif relatedJA.getStructureId() == CATTOLICA_PRODUCT_STRUCTURE_KEY> 
104              <#assign productboxJATemp = productboxJATemp + [{"priority":relatedEntry.getPriority(),"obj":relatedJA}] /> 
105            <#elseif relatedJA.getStructureId() == CATTOLICA_QUOTTI_STRUCTURE_KEY> 
106              <#assign quottiJA = relatedJA /> 
107            <#elseif relatedJA.getStructureId() == CATTOLICA_SHORTLINK_STRUCTURE_KEY> 
108              <#assign shortLinkJA = relatedJA /> 
109            <#elseif relatedJA.getStructureId() == CATTOLICA_VIDEO_MODAL_MODEL_KEY> 
110              <#assign videoJA = relatedJA /> 
111            <#elseif relatedJA.getStructureId() == CATTOLICA_AGENCYLOCATOR_STRUCTURE_KEY> 
112              <#assign agencyLocatorJA = relatedJA /> 
113            </#if> 
114          </#if> 
115        </#list> 
116      </#if> 
117    </#if> 
118  </#if> 
119 
120  <#-- Sorting related products by priority --> 
121  <#if productboxJATemp?has_content> 
122    <#list productboxJATemp?sort_by('priority')?reverse as tmpProd> 
123      <#assign productboxJA = productboxJA + [tmpProd.obj] /> 
124    </#list> 
125  </#if> 
126 
127  <#-- 
128  ## Sezioni mega-content 
129  --> 
130  <#assign weightsMap = {}> 
131  <#assign weightsFeaturesMap = {}> 
132  <#assign weightsBodytextMap = {}> 
133  <#assign weightsTabsMap = {}> 
134  <#assign weightsSpecialMap = {}> 
135  <#assign weightsDocumentationMap = {}> 
136  <#assign weightsAccordionMap = {}> 
137  <#assign weightsSpecMap = {}> 
138 
139  <#-- 
140  ## Sezione "Punti di forza" 
141  --> 
142  <#if features.getSiblings()?has_content> 
143    <#assign i = 0> 
144 
145    <#list features.getSiblings() as cur_features> 
146 
147      <#if cur_features.featuresWeight??> 
148        <#assign featuresWeight = cur_features.featuresWeight.getData()> 
149        <#assign i = i + 1> 
150 
151        <#if validator.isNotNull(featuresWeight)> 
152          <#assign weightKey = "featuresWeight${i}" > 
153          <#assign weightsFeaturesMap = weightsFeaturesMap + { weightKey : featuresWeight}> 
154        </#if> 
155      </#if> 
156    </#list> 
157  </#if> 
158 
159  <#if validator.isNotNull(weightsFeaturesMap)> 
160    <#assign weightsMap = weightsMap + weightsFeaturesMap > 
161  </#if> 
162 
163  <#-- 
164  ## Sezione "Testo libero" 
165  --> 
166  <#if bodytext.getSiblings()?has_content> 
167    <#assign i = 0> 
168 
169    <#list bodytext.getSiblings() as cur_bodytext> 
170 
171      <#if cur_bodytext.bodytextWeight??> 
172        <#assign bodytextWeight = cur_bodytext.bodytextWeight.getData()> 
173        <#assign i = i + 1> 
174 
175        <#if validator.isNotNull(bodytextWeight)> 
176          <#assign weightKey = "bodytextWeight${i}" > 
177          <#assign weightsBodytextMap = weightsBodytextMap + { weightKey : bodytextWeight}> 
178        </#if> 
179      </#if> 
180    </#list> 
181  </#if> 
182 
183  <#if validator.isNotNull(weightsBodytextMap)> 
184    <#assign weightsMap = weightsMap + weightsBodytextMap > 
185  </#if> 
186 
187  <#-- 
188  ## Sezione "Tabs" 
189  --> 
190  <#if tabs.getSiblings()?has_content> 
191    <#assign i = 0> 
192 
193    <#list tabs.getSiblings() as cur_tab> 
194      <#if cur_tab.tabsWeight??> 
195 
196        <#assign tabsWeight = cur_tab.tabsWeight.getData()> 
197        <#assign i = i + 1> 
198 
199        <#if validator.isNotNull(tabsWeight)> 
200          <#assign weightKey = "tabsWeight${i}" > 
201          <#assign weightsTabsMap = weightsTabsMap + { weightKey : tabsWeight}> 
202        </#if> 
203      </#if> 
204    </#list> 
205  </#if> 
206 
207  <#if validator.isNotNull(weightsTabsMap)> 
208    <#assign weightsMap = weightsMap + weightsTabsMap > 
209  </#if> 
210 
211  <#-- 
212  ## Sezione "Condizioni speciali" 
213  --> 
214  <#if special.getSiblings()?has_content> 
215    <#assign i = 0> 
216 
217    <#list special.getSiblings() as cur_special> 
218 
219      <#if cur_special.specialWeight??> 
220        <#assign specialWeight = cur_special.specialWeight.getData()> 
221        <#assign i = i + 1> 
222 
223        <#if validator.isNotNull(specialWeight)> 
224          <#assign weightKey = "specialWeight${i}" > 
225          <#assign weightsSpecialMap = weightsSpecialMap + { weightKey : specialWeight}> 
226        </#if> 
227      </#if> 
228    </#list> 
229  </#if> 
230 
231  <#if validator.isNotNull(weightsSpecialMap)> 
232    <#assign weightsMap = weightsMap + weightsSpecialMap > 
233  </#if> 
234 
235  <#-- 
236  ## Sezione "Documentazione" 
237  --> 
238  <#if documentation.getSiblings()?has_content> 
239    <#assign i = 0> 
240 
241    <#list documentation.getSiblings() as cur_documentation> 
242      <#if cur_documentation.documentationWeight??> 
243        <#assign documentationWeight = cur_documentation.documentationWeight.getData()> 
244        <#assign i = i + 1> 
245 
246        <#if validator.isNotNull(documentationWeight)> 
247          <#assign weightKey = "documentationWeight${i}" > 
248          <#assign weightsDocumentationMap = weightsDocumentationMap + { weightKey : documentationWeight}> 
249        </#if> 
250      </#if> 
251    </#list> 
252  </#if> 
253 
254  <#if validator.isNotNull(weightsDocumentationMap)> 
255    <#assign weightsMap = weightsMap + weightsDocumentationMap > 
256  </#if> 
257 
258  <#-- 
259  ## Sezione "Accordion" 
260  --> 
261  <#if accordion.getSiblings()?has_content> 
262    <#assign i = 0> 
263 
264    <#list accordion.getSiblings() as cur_accordion> 
265 
266      <#if cur_accordion.accordionWeight??> 
267        <#assign accordionWeight = cur_accordion.accordionWeight.getData()> 
268        <#assign i = i + 1> 
269 
270        <#if validator.isNotNull(accordionWeight)> 
271          <#assign weightKey = "accordionWeight${i}" > 
272          <#assign weightsAccordionMap = weightsAccordionMap + { weightKey : accordionWeight}> 
273        </#if> 
274      </#if> 
275    </#list> 
276  </#if> 
277 
278  <#if validator.isNotNull(weightsAccordionMap)> 
279    <#assign weightsMap = weightsMap + weightsAccordionMap > 
280  </#if> 
281 
282  <#-- 
283  ## Sezione "Caratteristica" 
284  --> 
285  <#if spec?? && spec.getSiblings()?has_content> 
286    <#assign i = 0> 
287 
288    <#list spec.getSiblings() as cur_spec> 
289 
290      <#if cur_spec.specWeight??> 
291        <#assign specWeight = cur_spec.specWeight.getData()> 
292        <#assign i = i + 1> 
293 
294        <#if validator.isNotNull(specWeight)> 
295          <#assign weightKey = "specWeight${i}" > 
296          <#assign weightsSpecMap = weightsSpecMap + { weightKey : specWeight}> 
297        </#if> 
298      </#if> 
299    </#list> 
300  </#if> 
301 
302  <#if validator.isNotNull(weightsSpecMap)> 
303    <#assign weightsMap = weightsMap + weightsSpecMap > 
304  </#if> 
305 
306  <#-- START RENDERING --> 
307  <#assign keys = weightsMap?keys> 
308  <#assign mapSize = keys?size> 
309  <#assign pagePosition = 0 > 
310 
311  <#-- 
312  ## Risorsa correlata: slider 
313  --> 
314  <#if validator.isNotNull(showcaseJA)> 
315    <@includeJournalArticle showcaseJA.getGroupId() showcaseJA.getUrlTitle() "" /> 
316  </#if> 
317 
318  <div class="vgg"> 
319    <div class="vgg__container vgg__container--wrapper"> 
320      <div class="tpl-sidebar"> 
321        <div class="col-container has-lateral-padding vgg--bg-light"> 
322          <#-- 
323          ## Taglib Breadcrumb 
324          --> 
325          <#if .vars['request']?has_content> 
326            <#assign curLayout = ""> 
327            <#assign currentUrl = request['attributes']['CURRENT_URL']/> 
328            <#assign curLayoutFriendlyUrl = "/" + currentUrl?split("/")?last /> 
329            <#assign currentGroupUrl = currentUrl?split(curLayoutFriendlyUrl)[0]/> 
330 
331            <#if currentGroupUrl?contains("/-")> 
332              <#assign currentGroupUrl = currentGroupUrl?split("/-")[0]/> 
333            </#if> 
334 
335            <#attempt> 
336              <#-- <#assign curLayout = layoutLocalService.getFriendlyURLLayout(groupId, false, curLayoutFriendlyUrl) /> --> 
337              <#assign curLayout = themeDisplay.getLayout() /> 
338            <#recover> 
339              <#attempt> 
340                <#assign uuid = journalArticleProduct.getLayoutUuid() /> 
341                <#assign curLayout = layoutLocalService.getLayoutByUuidAndGroupId(uuid, groupId, false) /> 
342              <#recover> 
343                <#assign curLayout = ""> 
344              </#attempt> 
345            </#attempt> 
346 
347            <#if validator.isNotNull(curLayout)> 
348              <#assign ancestorList = curLayout.getAncestors() /> 
349              <#assign orderdAncestorList = []/> 
350 
351              <#if validator.isNotNull(ancestorList) && ancestorList?has_content> 
352                <div class="block-breadcrumb"> 
353                  <ul> 
354                    <#list 1..ancestorList?size as i> 
355                      <#assign size = (ancestorList?size - i)> 
356                      <#assign orderdAncestorList = orderdAncestorList + [ancestorList[size]]/> 
357                    </#list> 
358 
359                    <#list orderdAncestorList as parentLayout> 
360                      <#if (parentLayout.getPlid() > 0 ) > 
361                        <li> 
362                          <#-- la prima voce non è linkata (privati/business/proposte dedicate) --> 
363                          <#if parentLayout_index == 0 > 
364                            <span>${parentLayout.getName(locale)}</span> 
365                          <#else> 
366                            <a href="${currentGroupUrl}${parentLayout.getFriendlyURL()}"><span>${parentLayout.getName(locale)}</span></a> 
367                          </#if> 
368                        </li> 
369                      </#if> 
370                    </#list> 
371 
372                    <li><span>${.vars['reserved-article-title'].data}</span></li> 
373                  </ul> 
374                </div> 
375              </#if> 
376            </#if> 
377          </#if> 
378 
379          <div class="box-payoff"> 
380            <#-- 
381            ## Titolo prodotto 
382            --> 
383            <h1 class="box-payoff__title">${.vars['reserved-article-title'].data}</h1> 
384 
385            <#-- 
386            ## Claim prodotto 
387            --> 
388            <#if claim?? && validator.isNotNull(claim.getData())> 
389              <div class="box-payoff__abstract">${claim.getData()}</div> 
390            </#if> 
391 
392            <#-- 
393            ## Claim text 
394            --> 
395            <#if claimText?? && validator.isNotNull(claimText.getData())> 
396              <div class="content-editorial"> 
397                <div class="box-editorial"> 
398                  ${claimText.getData()} 
399                </div> 
400              </div> 
401            </#if> 
402 
403            <#-- 
404            ## Categorie Hashtag 
405            --> 
406            <#assign classPK = journalArticleProduct.getResourcePrimKey() /> 
407            <#assign jaAssetEntry = assetEntryLocalService.getEntry(JOURNAL_ARTICLE_CLASS_NAME, classPK) /> 
408            <#assign assetEntryCategories = assetCategoryLocalService.getEntryCategories(jaAssetEntry.getEntryId()) /> 
409            <#assign productCategories = [] /> 
410            <#assign productHashtags = [] /> 
411            <#assign parentCategory = ""/> 
412            <#assign childCategory = ""/> 
413            <#assign categoryUrlTitlePage = ""/> 
414 
415            <#if validator.isNotNull(assetEntryCategories) && (assetEntryCategories?size > 0)> 
416 
417              <#list assetEntryCategories as assetEntryCategory> 
418 
419                <#if (assetEntryCategory.getVocabularyId() == productsCategoriesVocabulary.getVocabularyId())> 
420                  <#assign productCategories = productCategories + [assetEntryCategory] /> 
421                <#elseif (assetEntryCategory.getVocabularyId() == productsHashtagsVocabulary.getVocabularyId())> 
422                  <#assign productHashtags = productHashtags + [assetEntryCategory] /> 
423                </#if> 
424              </#list> 
425            </#if> 
426 
427            <div class="box-payoff__util"> 
428              <#if validator.isNotNull(productHashtags) && (productHashtags?size > 0)> 
429                <div class="box-payoff__category"> 
430                  <ul> 
431                    <#list productHashtags as productsHashtag> 
432                      <#-- !!!!! TODO: soluzione senza friendlyUrl --> 
433                      <li> 
434                        <#assign keywordsLayout = layoutLocalService.getFriendlyURLLayout(groupId, false, "/keywords") /> 
435 
436                        <a href="${portalUtil.getLayoutActualURL(keywordsLayout)}&p_r_p_564233524_categoryId=${productsHashtag.getCategoryId()}" 
437                          title="${productsHashtag.getTitle(locale)}">${productsHashtag.getTitle(locale)}</a> 
438                      </li> 
439                    </#list> 
440                  </ul> 
441                </div> 
442              </#if> 
443 
444              <#-- 
445              ## Share 
446              --> 
447              <#if .vars['request']?has_content || !themeDisplay.getLayout()?? || !getterUtil.getBoolean(themeDisplay.getLayout().getExpandoBridge().getAttribute("cattolica-hide-social-buttons", false))> 
448                <div class="box-share open"> 
449                  <#assign currentCompleteURL = request['attributes']['CURRENT_COMPLETE_URL']/> 
450                  <#assign encodedCurURL = httpUtil.encodeURL(currentCompleteURL) /> 
451 
452                  <button class="btn-share-toggle btn-share ico-social-share" title="<@liferay.language key="cattolica-product-share" />"></button> 
453                  <a href="https://www.facebook.com/sharer/sharer.php?u=${encodedCurURL}" title ="<@liferay.language key="cattolica-product-share-fb" />" class="btn-share ico-share-fb"></a> 
454                  <a href="https://twitter.com/home?status=${encodedCurURL}" title ="<@liferay.language key="cattolica-product-share-twitter" />" class="btn-share ico-share-tw"></a> 
455                  <a href="https://www.linkedin.com/shareArticle?mini=true&url=${encodedCurURL}" title ="<@liferay.language key="cattolica-product-share-linkedin" />" class="btn-share ico-share-ln"></a> 
456                </div> 
457              </#if> 
458            </div> 
459          </div> 
460 
461          <#-- 
462          ## Descrizione prodotto 
463          --> 
464          <#if description?? && validator.isNotNull(description.getData())> 
465            <div class="content-editorial"> 
466              <div class="box-editorial"> 
467                ${description.getData()} 
468              </div> 
469            </div> 
470          </#if> 
471 
472          <#if pagePosition < mapSize > 
473            <#list 0..10 as page> 
474              <#-- 
475              ## Sezione "Punti di forza" 
476              --> 
477              <#if features.getSiblings()?has_content> 
478                <#assign featuresCount = 0> 
479 
480                <#list features.getSiblings() as cur_features> 
481                  <#-- campi struttura --> 
482                  <#assign featuresSection = cur_features.getData()> 
483                  <#assign feature = cur_features.feature> 
484 
485                  <#assign featuresCount = featuresCount + 1> 
486                  <#assign key = "featuresWeight${featuresCount}"> 
487                  <#assign value = weightsMap[key]> 
488 
489                  <#if value?number == (pagePosition + 1) > 
490                    <#if featuresSection?? && validator.isNotNull(featuresSection)> 
491                      <div class="box-dots u-height"> 
492                        <ul> 
493                          <#list feature.getSiblings() as cur_feature> 
494                            <#assign featureTitle = cur_feature.getData()> 
495                            <#if featureTitle?? && validator.isNotNull(featureTitle)> 
496                              <li> 
497                                <div class="u-height-children"> 
498                                  <span>${featureTitle}</span> 
499                                </div> 
500                              </li> 
501                            </#if> 
502                          </#list> 
503                        </ul> 
504                      </div> 
505                    </#if> 
506                  </#if> 
507                </#list> 
508              </#if> 
509 
510              <#-- 
511              ## Sezione "Caratteristiche" 
512              --> 
513              <#if spec?? && spec.getSiblings()?has_content> 
514                <#assign specCount = 0> 
515 
516                <#list spec.getSiblings() as cur_spec> 
517 
518                  <#assign specCount = specCount + 1> 
519                  <#assign key = "specWeight${specCount}"> 
520                  <#assign value = weightsMap[key]> 
521 
522                  <#if value?number == (pagePosition + 1) > 
523                    <#-- titolo --> 
524                    <#if cur_spec.specTitle?? && validator.isNotNull(cur_spec.specTitle.getData())> 
525                      <#assign specHasIcon = cur_spec.specIcon?? && validator.isNotNull(cur_spec.specIcon.getData()) /> 
526                      <#assign specHasIconClass = "" /> 
527 
528                      <#if specHasIcon> 
529                        <#assign specHasIconClass = " has-icon" /> 
530                      </#if> 
531 
532                      <div class="content-editorial"> 
533                        <div class="box-editorial"> 
534                          <h2 class="${specHasIconClass}"> 
535                            <#if specHasIcon> 
536                              <div class="product-spec-title-part product-spec-icon"> 
537                                <svg class="ard-icon"> 
538                                  <use xlink:href="${svgSpritePath}/icons.svg#${cur_spec.specIcon.getData()}"></use> 
539                                </svg> 
540                              </div> 
541                              <div class="product-spec-title-part product-spec-title"> 
542                            </#if> 
543                            ${cur_spec.specTitle.getData()} 
544                            <#if specHasIcon> 
545                              </div> 
546                              <div class="clearfix"></div> 
547                            </#if> 
548                          </h2> 
549                        </div> 
550                      </div> 
551                    </#if> 
552 
553                    <#-- testo --> 
554                    <#if cur_spec.specText?? && validator.isNotNull(cur_spec.specText.getData())> 
555                      <div class="content-editorial"> 
556                        <div class="box-editorial">${cur_spec.specText.getData()}</div> 
557                      </div> 
558                    </#if> 
559 
560                    <#-- accordion --> 
561                    <#if cur_spec.specAccordion??> 
562                      <#list cur_spec.specAccordion.getSiblings() as cur_specAccordion> 
563                        <#if validator.isNotNull(cur_specAccordion.getData())> 
564 
565                          <div class="box-accordion"> 
566                            <div class="box-accordion__toggle box-accordion__toggle--blu"> 
567                              <span class="ico-plus"></span> 
568                              <div class="box-accordion__intro no-ico"> 
569                                <h2 class="box-accordion__title">${cur_specAccordion.getData()}</h2> 
570                              </div> 
571                            </div> 
572                            <div class="box-accordion__content"> 
573                              <div class="box-accordion__wrapper"> 
574 
575                                <#if cur_specAccordion.specAccordionText?? && validator.isNotNull(cur_specAccordion.specAccordionText.getData())> 
576                                  <div class="box-accordion__editorial"> 
577                                    <div class="box-editorial">${cur_specAccordion.specAccordionText.getData()}</div> 
578                                  </div> 
579                                </#if> 
580 
581                                <#if cur_specAccordion.specAccordionAttachment??> 
582                                  <#assign firstDoc = true> 
583 
584                                  <#list cur_specAccordion.specAccordionAttachment.getSiblings() as cur_specAccordionAttachment> 
585                                    <#if validator.isNotNull(cur_specAccordionAttachment.getData())> 
586                                      <#assign docFile = cur_specAccordionAttachment.getData()> 
587                                      <#assign docPath = "${docFile}"?split("/") /> 
588                                      <#assign docUuidString = "${docPath?last}"?split("?") /> 
589                                      <#assign docUuid = docUuidString?first /> 
590                                      <#assign docDM = dLFileEntryLocalService.getFileEntryByUuidAndGroupId(docUuid, groupId) /> 
591 
592                                      <#if firstDoc> 
593                                        <div class="box-accordion__docs"> 
594                                          <ul> 
595 
596                                        <#assign firstDoc = false> 
597                                      </#if> 
598 
599                                      <li> 
600                                        <div class="box-file"> 
601                                          <a href="${docFile}" title="${docDM.getTitle()}" class="ico" target="_blank">${docDM.getTitle()}</a> 
602                                        </div> 
603                                      </li> 
604                                    </#if> 
605 
606                                    <#if !cur_specAccordionAttachment_has_next && !firstDoc > 
607                                        </ul> 
608                                      </div> 
609                                    </#if> 
610                                  </#list> 
611                                </#if> 
612                              </div> 
613                            </div> 
614                          </div> 
615                        </#if> 
616                      </#list> 
617                    </#if> 
618                  </#if> 
619                </#list> 
620              </#if> 
621 
622              <#-- 
623              ## Sezione "Testo libero" 
624              --> 
625              <#if bodytext.getSiblings()?has_content> 
626                <#assign bodytextCount = 0> 
627 
628                <#list bodytext.getSiblings() as cur_bodytext> 
629                  <#-- campi struttura --> 
630                  <#assign bodytextSection = cur_bodytext.getData()> 
631                  <#assign bodytextText = cur_bodytext.bodytextText.getData()> 
632 
633                  <#assign bodytextCount = bodytextCount + 1> 
634                  <#assign key = "bodytextWeight${bodytextCount}"> 
635                  <#assign value = weightsMap[key]> 
636 
637                  <#if value?number == (pagePosition + 1) > 
638                    <#if bodytextText?? && validator.isNotNull(bodytextText)> 
639                      <div class="content-editorial"> 
640                        <div class="box-editorial">${bodytextText}</div> 
641                      </div> 
642                    </#if> 
643                  </#if> 
644                </#list> 
645              </#if> 
646 
647              <#-- 
648              ## Sezione "Tabs" 
649              --> 
650              <#if tabs.getSiblings()?has_content> 
651                <#assign tabsCount = 0> 
652 
653                <#list tabs.getSiblings() as cur_tab> 
654                  <#-- campi struttura --> 
655                  <#assign tabSection = cur_tab.getData()> 
656                  <#assign tabsTitle = cur_tab.tabsTitle> 
657 
658                  <#assign tabsCount = tabsCount + 1> 
659                  <#assign key = "tabsWeight${tabsCount}"> 
660                  <#assign value = weightsMap[key]> 
661 
662                  <#if value?number == (pagePosition + 1) > 
663                    <#if tabSection?? && validator.isNotNull(tabSection)> 
664                      <div class="tab-product"> 
665                        <ul> 
666                          <#list tabsTitle.getSiblings() as cur_tabTitle> 
667                            <#assign tab = cur_tabTitle.getData()> 
668                            <#assign tabIcon = cur_tabTitle.tabIcon.getData()> 
669 
670                            <#if tab?? && validator.isNotNull(tab)> 
671 
672                              <#assign cur_tabClass = ""> 
673                              <#if cur_tabTitle_index == 0> 
674                                <#assign cur_tabClass = " current"> 
675                              </#if> 
676 
677                              <li class="tab-product-item${cur_tabClass}"> 
678                                <button class="button"> 
679                                  <#if tabIcon?? && validator.isNotNull(tabIcon)> 
680                                    <div class="ico-product"> 
681                                      <img src="${tabIcon}" alt="${tab}"/> 
682                                    </div> 
683                                  </#if> 
684                                  <div class="label-product">${tab}</div> 
685                                </button> 
686                                <div class="tab-product-item__panel"></div> 
687                              </li> 
688                            </#if> 
689                          </#list> 
690                        </ul> 
691 
692                        <div class="tab-product__content"> 
693                          <#list tabsTitle.getSiblings() as cur_tabTitle> 
694                            <#assign tabText = cur_tabTitle.tabText.getData()> 
695                            <#assign tabDoc = cur_tabTitle.tabDoc> 
696 
697                            <div class="tab-product__content-item"> 
698                              <#if tabText?? && validator.isNotNull(tabText)> 
699                                <div class="box-editorial">${tabText}</div> 
700                              </#if> 
701 
702                              <#assign firstDoc = true> 
703 
704                              <#list tabDoc.getSiblings() as cur_tabDoc> 
705                                <#assign tabDocFile = cur_tabDoc.getData()> 
706 
707                                <#if tabDocFile?? && validator.isNotNull(tabDocFile)> 
708                                  <#assign tabDocPath = "${tabDocFile}"?split("/") /> 
709                                  <#assign tabDocUuidString = "${tabDocPath?last}"?split("?") /> 
710                                  <#assign tabDocUuid = tabDocUuidString?first /> 
711                                  <#assign tabDocDM = dLFileEntryLocalService.getFileEntryByUuidAndGroupId(tabDocUuid, groupId) /> 
712                                  <#assign dimension = (tabDocDM.getSize())/1000000 /> 
713 
714                                  <#if firstDoc> 
715                                    <div class="tab-product__docs"> 
716                                      <ul> 
717 
718                                    <#assign firstDoc = false> 
719                                  </#if> 
720 
721                                  <li> 
722                                    <div class="box-file"> 
723                                      <a href="${tabDocFile}" title="${tabDocDM.getTitle()}" class="ico" target="_blank">${tabDocDM.getTitle()}</a> 
724                                    </div> 
725                                  </li> 
726                                </#if> 
727 
728                                <#if !cur_tabDoc_has_next && !firstDoc > 
729                                    </ul> 
730                                  </div> 
731                                </#if> 
732                              </#list> 
733                            </div> 
734                          </#list> 
735                        </div> 
736                      </div> 
737                    </#if> 
738                  </#if> 
739                </#list> 
740              </#if> 
741 
742              <#-- 
743              ## Sezione "Condizioni speciali" 
744              --> 
745              <#if special.getSiblings()?has_content> 
746                <#assign specialCount = 0> 
747 
748                <#list special.getSiblings() as cur_special> 
749                  <#-- campi struttura --> 
750                  <#assign specialSection = cur_special.getData()> 
751                  <#assign specialText = cur_special.specialText.getData()> 
752                  <#assign specialDoc = cur_special.specialDoc> 
753 
754                  <#assign specialCount = specialCount + 1> 
755                  <#assign key = "specialWeight${specialCount}"> 
756                  <#assign value = weightsMap[key]> 
757 
758                  <#if value?number == (pagePosition + 1) > 
759 
760                    <#if specialSection?? && validator.isNotNull(specialSection)> 
761                      <#-- todo --> 
762                      <div class="box-accordion"> 
763                        <div class="box-accordion__toggle box-accordion__toggle--blu ico-acc-star"> 
764                          <span class="ico-plus"></span> 
765                          <div class="box-accordion__intro"> 
766                            <h2 class="box-accordion__title">${specialSection}</h2> 
767                          </div> 
768                        </div> 
769 
770                        <#if specialSection?? && validator.isNotNull(specialSection)> 
771                          <div class="box-accordion__content"> 
772                            <div class="box-accordion__wrapper"> 
773                              <#if specialText?? && validator.isNotNull(specialText)> 
774                                <div class="box-accordion__editorial"> 
775                                  <div class="box-editorial">${specialText}</div> 
776                                </div> 
777                              </#if> 
778 
779                              <#assign firstDoc = true> 
780 
781                              <#list specialDoc.getSiblings() as cur_specialDoc> 
782                                <#assign specialDocFile = cur_specialDoc.getData()> 
783 
784                                <#if specialDocFile?? && validator.isNotNull(specialDocFile)> 
785                                  <#assign specialDocPath = "${specialDocFile}"?split("/") /> 
786                                  <#assign specialDocUuidString = "${specialDocPath?last}"?split("?") /> 
787                                  <#assign specialDocUuid = specialDocUuidString?first /> 
788                                  <#assign specialDocDM = dLFileEntryLocalService.getFileEntryByUuidAndGroupId(specialDocUuid, groupId) /> 
789                                  <#assign dimension = (specialDocDM.getSize())/1000000 /> 
790 
791                                  <#if firstDoc> 
792                                    <div class="box-accordion__docs"> 
793                                      <ul> 
794 
795                                    <#assign firstDoc = false> 
796                                  </#if> 
797 
798                                  <li> 
799                                    <div class="box-file"> 
800                                      <a href="${specialDocFile}" title="${specialDocDM.getTitle()}" class="ico" target="_blank">${specialDocDM.getTitle()}</a> 
801                                    </div> 
802                                  </li> 
803                                </#if> 
804 
805                                <#if !cur_specialDoc_has_next && !firstDoc > 
806                                    </ul> 
807                                  </div> 
808                                </#if> 
809                              </#list> 
810                            </div> 
811                          </div> 
812                        </#if> 
813                      </div> 
814                    </#if> 
815                  </#if> 
816                </#list> 
817              </#if> 
818 
819              <#-- 
820              ## Sezione "Documentazione" 
821              --> 
822              <#if documentation.getSiblings()?has_content> 
823                <#assign documentationCount = 0> 
824 
825                <#list documentation.getSiblings() as cur_documentation> 
826                  <#-- campi struttura --> 
827                  <#assign documentationSection = cur_documentation.getData()> 
828                  <#assign documentationText = cur_documentation.documentationText.getData()> 
829                  <#assign documentationDoc = cur_documentation.documentationDoc> 
830 
831                  <#assign documentationCount = documentationCount + 1> 
832                  <#assign key = "documentationWeight${documentationCount}"> 
833                  <#assign value = weightsMap[key]> 
834 
835                  <#if value?number == (pagePosition + 1) > 
836                    <#if documentationSection?? && validator.isNotNull(documentationSection)> 
837                      <div class="box-accordion"> 
838                        <div class="box-accordion__toggle box-accordion__toggle--gray ico-acc-folder"> 
839                          <span class="ico-plus"></span> 
840                          <div class="box-accordion__intro"> 
841                            <h2 class="box-accordion__title">${documentationSection}</h2> 
842                          </div> 
843                        </div> 
844                        <div class="box-accordion__content"> 
845                          <div class="box-accordion__wrapper"> 
846                            <#if documentationText?? && validator.isNotNull(documentationText)> 
847                              <div class="box-accordion__editorial">${documentationText}</div> 
848                            </#if> 
849 
850                            <#assign firstDoc = true> 
851 
852                            <#list documentationDoc.getSiblings() as cur_documentationDoc> 
853                              <#assign docFile = cur_documentationDoc.getData()> 
854 
855                              <#if docFile?? && validator.isNotNull(docFile)> 
856                                <#assign docPath = "${docFile}"?split("/") > 
857                                <#assign docUuidString = "${docPath?last}"?split("?") > 
858                                <#assign docUuid = docUuidString?first> 
859                                <#assign docDM = dLFileEntryLocalService.getFileEntryByUuidAndGroupId(docUuid, groupId) /> 
860                                <#assign dimension = (docDM.getSize())/1000000> 
861 
862                                <#if firstDoc> 
863                                  <div class="box-accordion__docs"> 
864                                    <ul> 
865                                  <#assign firstDoc = false> 
866                                </#if> 
867 
868                                <li> 
869                                  <div class="box-file"> 
870                                    <a href="${docFile}" title="${docDM.getTitle()}" class="ico" target="_blank">${docDM.getTitle()}</a> 
871                                  </div> 
872                                </li> 
873                              </#if> 
874 
875                              <#if !cur_documentationDoc_has_next && !firstDoc > 
876                                  </ul> 
877                                </div> 
878                              </#if> 
879                            </#list> 
880                          </div> 
881                        </div> 
882                      </div> 
883                    </#if> 
884                  </#if> 
885                </#list> 
886              </#if> 
887 
888              <#-- 
889              ## Sezione "Accordion" 
890              --> 
891              <#if accordion.getSiblings()?has_content> 
892                <#assign accordionCount = 0> 
893 
894                <#list accordion.getSiblings() as cur_accordion> 
895                  <#-- campi struttura --> 
896                  <#assign accordionSection = cur_accordion.getData()> 
897                  <#assign accordionText = cur_accordion.accordionText.getData()> 
898                  <#assign accordionDoc = cur_accordion.accordionDoc> 
899 
900                  <#assign accordionCount = accordionCount + 1> 
901                  <#assign key = "accordionWeight${accordionCount}"> 
902                  <#assign value = weightsMap[key]> 
903 
904                  <#if value?number == (pagePosition + 1) > 
905                    <#if accordionSection?? && validator.isNotNull(accordionSection)> 
906                      <div class="box-accordion"> 
907                        <div class="box-accordion__toggle box-accordion__toggle--gray ico-acc-question"> 
908                          <span class="ico-plus"></span> 
909                          <div class="box-accordion__intro"> 
910                            <h2 class="box-accordion__title">${accordionSection}</h2> 
911                          </div> 
912                        </div> 
913                        <div class="box-accordion__content"> 
914                          <div class="box-accordion__wrapper"> 
915                            <#if accordionText?? && validator.isNotNull(accordionText)> 
916                              <div class="box-accordion__editorial">${accordionText}</div> 
917                            </#if> 
918 
919                            <#assign firstDoc = true> 
920 
921                            <#list accordionDoc.getSiblings() as cur_accordionDoc> 
922                              <#assign docFile = cur_accordionDoc.getData()> 
923 
924                              <#if docFile?? && validator.isNotNull(docFile)> 
925                                <#assign accordionDocPath = "${docFile}"?split("/") > 
926                                <#assign accordionDocUuidString = "${accordionDocPath?last}"?split("?") > 
927                                <#assign accordionDocUuid = accordionDocUuidString?first> 
928                                <#assign accordionDocDM = dLFileEntryLocalService.getFileEntryByUuidAndGroupId(accordionDocUuid, groupId) /> 
929                                <#assign dimension = (accordionDocDM.getSize())/1000000> 
930 
931                                <#if firstDoc> 
932                                  <div class="box-accordion__docs"> 
933                                    <ul> 
934                                  <#assign firstDoc = false> 
935                                </#if> 
936 
937                                <li> 
938                                  <div class="box-file"> 
939                                    <a href="${docFile}" title="${accordionDocDM.getTitle()}" class="ico" target="_blank">${accordionDocDM.getTitle()}</a> 
940                                  </div> 
941                                </li> 
942                              </#if> 
943 
944                              <#if !cur_accordionDoc_has_next && !firstDoc > 
945                                  </ul> 
946                                </div> 
947                              </#if> 
948                            </#list> 
949                          </div> 
950                        </div> 
951                      </div> 
952                    </#if> 
953                  </#if> 
954                </#list> 
955              </#if> 
956 
957              <#assign pagePosition = pagePosition + 1> 
958            </#list> 
959          </#if> 
960 
961          <div class="msg-adv"> 
962            <#-- 
963            ## Messaggio pubblicitario 
964            --> 
965            <#if msgAdv?? && validator.isNotNull(msgAdv.getData())> 
966              ${msgAdv.getData()} 
967            <#else> 
968              <@liferay.language key="cattolica-product-advertisement" /> 
969            </#if> 
970          </div> 
971        </div> 
972 
973        <#-- 
974        ## Spalla destra 
975        --> 
976        <div class="col-sidebar has-lateral-padding"> 
977          <#list 0..9 as sidebar> 
978            <#assign position = sidebar_index +1 /> 
979 
980            <#-- 
981            ## Area Clienti 
982            --> 
983            <#if shortLinkJA?? && validator.isNotNull(shortLinkJA) && shortLinkWeight?? && validator.isNotNull(shortLinkWeight) && shortLinkWeight.getData()?number == position> 
984              <@includeJournalArticle shortLinkJA.getGroupId() shortLinkJA.getUrlTitle() "" /> 
985            </#if> 
986 
987            <#-- 
988            ## Quotti 
989            --> 
990            <#if quottiJA?? && validator.isNotNull(quottiJA) && quottiWeight?? && validator.isNotNull(quottiWeight) && quottiWeight.getData()?number == position> 
991              <@includeJournalArticle quottiJA.getGroupId() quottiJA.getUrlTitle() "" /> 
992            </#if> 
993 
994            <#-- 
995            ## Trova agenzia 
996            --> 
997            <#if agencyLocatorJA?? && validator.isNotNull(agencyLocatorJA) && validator.isNotNull(agencyLocatorWeight) && agencyLocatorWeight.getData()?number == position> 
998              <@includeJournalArticle agencyLocatorJA.getGroupId() agencyLocatorJA.getUrlTitle() "CATTOLICA-PORTAL-TPL-AGENCYLOCATOR-BOX" /> 
999            </#if> 
1000 
1001            <#-- 
1002            ## Risorsa correlata: customer care 
1003            --> 
1004            <#if validator.isNotNull(customerCareWeight) && customerCareWeight.getData()?number == position> 
1005              <#if validator.isNotNull(customercareJA)> 
1006                <@includeJournalArticle customercareJA.getGroupId() customercareJA.getUrlTitle() "" /> 
1007              </#if> 
1008            </#if> 
1009 
1010            <#-- 
1011            ## Risorsa correlata: video 
1012            --> 
1013            <#if validator.isNotNull(videoWeight) && videoWeight.getData()?number == position> 
1014              <#if validator.isNotNull(videoJA)> 
1015                <div class="has-margin-bottom has-intro"> 
1016                  <@includeJournalArticle videoJA.getGroupId() videoJA.getUrlTitle() "CATTOLICA-PORTAL-TPL-VIDEOMODAL-BOX" /> 
1017                </div> 
1018              </#if> 
1019            </#if> 
1020 
1021            <#-- 
1022            ## Risorse correlate: altri prodotti 
1023            --> 
1024            <#if validator.isNotNull(sliderProductsWeight) && sliderProductsWeight.getData()?number == position> 
1025              <div class="slider-box has-margin-bottom has-intro"> 
1026                <div class="intro vgg--bg-light"> 
1027                  <div class="intro-ico ico-bg ico--bulb-blu"></div> 
1028                  <div class="intro-label label-blu-3"> 
1029                    <span><@liferay.language key="cattolica-product-related-products-title" /></span> 
1030                  </div> 
1031                </div> 
1032                <div class="slider-box__ratio"> 
1033                  <div class="slider-box__content"> 
1034                    <div class="slider-box__carousel"> 
1035                      <#if productboxJA?has_content && validator.isNotNull(productboxJA)> 
1036 
1037                        <#list productboxJA as cur_productboxJA> 
1038                          <@includeJournalArticle cur_productboxJA.getGroupId() cur_productboxJA.getUrlTitle() CATTOLICA_PRODUCTBOX_MODEL_KEY /> 
1039                        </#list> 
1040                      <#else> 
1041                        <#assign productST = ddmStructureLocalService.fetchStructure(groupId, portalUtil.getClassNameId("com.liferay.portlet.journal.model.JournalArticle"), "CATTOLICA-PORTAL-ST-PRODUCT", true) /> 
1042                        <#assign assetEntryQueryService = objectUtil('com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil') /> 
1043                        <#assign assetEntryQuery = objectUtil('com.liferay.portlet.asset.service.persistence.AssetEntryQuery') /> 
1044                        <#assign void = assetEntryQuery.setAllCategoryIds(articleCatProductId) /> 
1045                        <#assign void = assetEntryQuery.setClassName("com.liferay.portlet.journal.model.JournalArticle") /> 
1046                        <#assign void = assetEntryQuery.setClassTypeIds([productST.getStructureId()]) /> 
1047                        <#assign void = assetEntryQuery.setOrderByCol1("priority") /> 
1048                        <#assign void = assetEntryQuery.setOrderByType1("ASC") /> 
1049                        <#assign prodotti = assetEntryQueryService.getEntries(assetEntryQuery) /> 
1050 
1051                        <#list prodotti as prodotto> 
1052                          <#assign latestProdotto = journalArticleLocalService.getLatestArticle(prodotto.getClassPK()) /> 
1053 
1054                          <#if latestProdotto.getArticleId() != journalArticleId > 
1055                            <#attempt> 
1056                              <#assign journalArticleToInclude = journalContentUtil.getContent(groupId, latestProdotto.getArticleId(), CATTOLICA_PRODUCTBOX_MODEL_KEY, "normal", locale?string, xmlRequest) /> 
1057                              ${journalArticleToInclude} 
1058                            <#recover> 
1059                              <!-- ${latestProdotto.getStructureId()} - ${latestProdotto.getArticleId()} - ${journalArticleId} --> 
1060                            </#attempt> 
1061                          </#if> 
1062                        </#list> 
1063                      </#if> 
1064                    </div> 
1065                  </div> 
1066                </div> 
1067              </div> 
1068            </#if> 
1069 
1070            <#-- 
1071            ## Risorsa correlata: banner 
1072            --> 
1073            <#if validator.isNotNull(bannerWeight) && bannerWeight.getData()?number == position> 
1074              <#if bannerJA?has_content && validator.isNotNull(bannerJA)> 
1075                <#list bannerJA as cur_bannerJA> 
1076                  <@includeJournalArticle cur_bannerJA.getGroupId() cur_bannerJA.getUrlTitle() "" /> 
1077                </#list> 
1078              </#if> 
1079            </#if> 
1080 
1081          </#list> 
1082        </div> 
1083      </div> 
1084    </div> 
1085  </div> 
1086</#if> 
1087 
1088<#-- Macro per risorse correlate --> 
1089<#macro includeJournalArticle groupId urlTitle tplId> 
1090  <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService") /> 
1091 
1092  <#attempt> 
1093    <#assign journalArticle = journalArticleLocalService.getLatestArticleByUrlTitle(groupId, urlTitle?string, 0) /> 
1094 
1095    <#if validator.isNotNull(tplId)> 
1096      <#assign journalArticleToInclude = journalContentUtil.getContent(groupId, journalArticle.getArticleId(), tplId, "normal", locale?string, xmlRequest) /> 
1097    <#else> 
1098      <#assign journalArticleToInclude = journalContentUtil.getContent(groupId, journalArticle.getArticleId(), "normal", locale?string, xmlRequest) /> 
1099    </#if> 
1100 
1101    ${journalArticleToInclude} 
1102    <#recover> 
1103  </#attempt> 
1104</#macro>