Se ha producido un error al procesar la plantilla.
Java method "es.insst.liferay.tctx.impl.CustomUtilImpl.getDLFileEntryFromURL(String)" threw an exception when invoked on es.insst.liferay.tctx.impl.CustomUtilImpl object "es.insst.liferay.tctx.impl.CustomUtilImpl@16724bc6"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign file = customUtil.getDLFileEn... [in template "20157#20197#111800" at line 108, column 37] ----
1<#--
2Formacion_home_ADT
3Tipo : Publicador de contenidos Plantilla
4-->
5
6<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
7<#assign themeDisplay = serviceContext.getThemeDisplay() />
8<#assign httpServletRequest = serviceContext.getRequest()>
9<#assign imagesPath = themeDisplay.getPathThemeImages() />
10
11<#--Inicio creación de la URL para pasar el articleId al portlet de formularios de Solicitud de inscripción a cursos -->
12<#assign journalArticleLocalServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
13<#assign classPK = entry.getClassPK()/>
14<#assign currentJournalArticle = journalArticleLocalServiceUtil.fetchLatestArticle(classPK)/>
15<#assign currentarticleId = currentJournalArticle.getArticleId() />
16<#assign layoutLocalServiceUtil = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
17<#assign layoutFormulario = layoutLocalServiceUtil.getFriendlyURLLayout(currentJournalArticle.getGroupId(), false, "/solicitud-de-inscripcion-a-cursos")>
18<#assign layoutPlidFormulario = layoutFormulario.getPlid()>
19<#assign updateActionURL = portletURLFactory.create(httpServletRequest,"esinsstformularioswebinscripciones_WAR_esinsstformulariosweb", layoutPlidFormulario ,"RENDER_PHASE")>
20${updateActionURL.setParameter( "articleId", currentarticleId )}
21<#--Creación href URL para el botón de Inscripcion -->
22<#assign actionURLID = "${updateActionURL.toString()}" >
23
24<#assign iconos={"image/png":"img",
25"image/tiff":"img",
26"image/gif":"img",
27"image/jpeg":"img",
28"image/bmp":"img",
29"image/webp":"img",
30"video/x-msvideo":"video",
31"video/x-ms-wmv": "video",
32"video/quicktime":"video",
33"video/mpeg":"video",
34"video/ogg":"video",
35"video/mp4":"video",
36"video/x-flv":"video"}>
37
38<#--Fin creación URL -->
39
40<section class="block-agenda">
41 <div class="row">
42 <#list entries as entry>
43 <ul class="block-agenda-list">
44 <#if entry.getAssetRendererFactory().getType()=="content">
45
46
47
48
49 <#assign docXml = saxReaderUtil.read(entry.getAssetRenderer().getArticle().getContentByLocale(locale)) />
50 <#assign fechaInicio = getterUtil.getLong(docXml.valueOf("//dynamic-element[@name='Fecha_inicio']/dynamic-content/text()"))/>
51 <!-- Estado, Fecha limite, Fecha actual -->
52 <#assign estado = docXml.valueOf("//dynamic-element[@name='Estado']/dynamic-content/text()")?trim />
53 <#assign fechaLimite = getterUtil.getLong(docXml.valueOf("//dynamic-element[@name='Fecha_limite']/dynamic-content/text()"))/>
54 <#assign fechaLimiteDate = dateUtil.newDate(fechaLimite) />
55 <#assign fechaActualDate = .now/>
56
57 <li class="col-xs-12 col-md-3">
58 <#assign assetRenderer = entry.getAssetRenderer() />
59 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) />
60
61 <#-- Descomponemos la url para poder pintar el detalle maximizado y volver al listado -->
62 <#assign page_link = viewURL?split("/-/")[0] />
63 <#if page_link?starts_with("http://")>
64 <#assign page_link_no_https = page_link?split("http://")[1] />
65 <#else>
66 <#assign page_link_no_https = page_link?split("https://")[1] />
67 </#if>
68 <#assign inte = page_link_no_https?index_of("/") />
69 <#assign page_link_relative = page_link_no_https?substring(inte, page_link_no_https?length) />
70
71 <#assign friendly_page_link = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) />
72 <div class="block-agenda-no-frame">
73 <div class="block-agenda-items">
74
75 <!-- Categoria -->
76 <#assign assetVocabularyLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
77 <#assign estadoVocabulary = assetVocabularyLocalServiceUtil.getGroupVocabulary(entry.getGroupId(), "Tipo de Contenido") />
78 <#if estadoVocabulary?has_content >
79 <#list entry.getCategories() as categoryList>
80 <#if categoryList.getVocabularyId() == estadoVocabulary.getVocabularyId()>
81 <p class="agenda-items-ttle">${categoryList.getName()}</p>
82 </#if>
83 </#list>
84 </#if>
85
86 <!-- Fecha de inicio -->
87 <#assign horasLectivas = docXml.valueOf("//dynamic-element[@name='Horas_lectivas']/dynamic-content/text()")?trim />
88 <#if (fechaInicio > 0)>
89 <#assign fechaInicio_DateObj = dateUtil.newDate(fechaInicio) />
90 <p class="agenda-items-day"><span class="day">${dateUtil.getDate(fechaInicio_DateObj, "dd", locale)} </span>${dateUtil.getDate(fechaInicio_DateObj, "MM", locale)} ${dateUtil.getDate(fechaInicio_DateObj, "yyyy", locale)} <small>(${horasLectivas}h)</small></p>
91 </#if>
92
93 <!-- Lugar -->
94 <#assign lugar = docXml.valueOf("//dynamic-element[@name='Lugar_de_imparticion_detallado']/dynamic-content/text()")/>
95 <#if !lugar?exists || !lugar?has_content>
96 <#assign lugar = docXml.valueOf("//dynamic-element[@name='Lugar_de_imparticion']/dynamic-content/text()")/>
97 </#if>
98 <p class="agenda-items-where"> ${lugar}</p>
99
100 <!-- titulo -->
101 <a href="${friendly_page_link}">
102 <p class="agenda-items-what">${entry.getTitle(locale)}</p>
103 </a>
104
105 <!-- Programa -->
106 <#assign programa = docXml.valueOf("//dynamic-element[@name='Programa']/dynamic-content") />
107 <#if programa?has_content>
108 <#assign file = customUtil.getDLFileEntryFromURL(programa) />
109
110 <#if iconos[file.getMimeType()]??>
111 <#assign tipoIcono = iconos[file.getMimeType()]/>
112 <#else>
113 <#assign tipoIcono = "pdf"/>
114 </#if>
115 <div class="listado__item--reports">
116 <img src="${imagesPath}/icono-${tipoIcono}.png" alt="">
117 <a class="slider-card__linkAlternative" href="${programa}" target="_blank">${languageUtil.get(locale,'portal.programa')}</a><span class="txt-pdf">(${file.extension?upper_case}, ${customUtil.getFileSizeFormatted(file.size)})</span>
118 </div>
119
120 </#if>
121
122
123 <!-- Estado y Fecha limite -->
124 <#assign estado = docXml.valueOf("//dynamic-element[@name='Estado']/dynamic-content/text()")?trim />
125 <#assign fechaLimite = getterUtil.getLong(docXml.valueOf("//dynamic-element[@name='Fecha_limite']/dynamic-content/text()"))/>
126 <#if estado == "Abierto el plazo">
127
128 <#if fechaLimite != 0>
129 <#if fechaActualDate?date < fechaLimiteDate?date>
130 <#if (fechaLimite > 0)>
131 <#assign fechaLimite_DateObj = dateUtil.newDate(fechaLimite) />
132 <div class="agenda-items-state">
133 <ul>
134 <li class="state-ok">${estado}</li>
135 <li class="state-date">Fecha Límite: ${dateUtil.getDate(fechaLimite_DateObj, "dd/MM/yyyy", locale)}</li>
136 </ul>
137 </div>
138 </#if>
139 <div class="agenda-items-btn-no-frame">
140 <a onclick="location.href='${actionURLID}'" type="button" class="btn btn-download btn-full btn-default btn-lg" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
141 ${languageUtil.get(locale,'portal.home.solicitarInscripcion')}
142 </a>
143 </div>
144 </#if>
145 </#if>
146 <#else>
147 <div class="agenda-items-state">
148 <ul>
149 <li class="state-ko">${estado}</li>
150 </ul>
151 </div>
152 </#if>
153 </div>
154 </div>
155 </li>
156 </#if>
157 </ul>
158 </#list>
159 </div>
160</section>