Histórico de Eventos
Se ha producido un error al procesar la plantilla.
Can't convert this string to number: "" The blamed expression: ==> img?keep_after("documents/")?keep_before("/")?number [in template "20097#20123#31335533" at line 187, column 22] ---- FTL stack trace ("~" means nesting-related): - Failed at: groupIdImage = img?keep_after("docume... [in template "20097#20123#31335533" at line 187, column 7] ----
1<style>
2 .adt-eventos-ci-fila {
3 justify-content: center;
4 }
5 .adt-eventos-ci-columna {
6 justify-content: center;
7 flex-wrap: wrap;
8 }
9 .adt-eventos-ci-target {
10 width: 95%;
11 max-width: 340px;
12 margin: 10px 5px;
13 }
14 .adt-eventos-encabezado {
15 position: relative;
16 }
17 .adt-eventos-ci-target p {
18 margin: 0;
19 }
20 .adt-eventos-ci-target-categoria {
21 background-color: rgba(209, 21, 24, 0.8);
22 color: #ffffff;
23 width: 70%;
24 position: absolute;
25 margin-top: -40px;
26 }
27 .adt-eventos-ci-target-categoria p {
28 padding: 2.7px 0;
29 text-align: center;
30 font-weight: bold;
31 font-size: 16px;
32 text-transform: uppercase;
33 }
34 .adt-eventos-ci-target-contenido {
35 height:330px;
36 border-bottom-left-radius: 20px;
37 border-bottom-right-radius: 20px;
38 }
39 .adt-eventos-ci-target-contenido-texto {
40 padding: 1rem;
41 height:205px;
42 }
43 .adt-eventos-ci-target-contenido-texto #titulo {
44 font-size: 17px;
45 font-weight: 600;
46 margin-bottom: 5px;
47 line-height:25px;
48 }
49 .adt-eventos-ci-target-contenido-texto p {
50 font-size: 14px ;
51 }
52
53 .adt-eventos-ci-target-contenido-texto a {
54 text-decoration: none;
55 color: #000000;
56 }
57 .adt-eventos-ci-target-contenido-info {
58 justify-content: center;
59 flex-direction:column;
60 padding: 5px 10px 20px;
61 }
62 .adt-eventos-ci-target-contenido-info a{
63 color:#000000;
64 }
65 .adt-eventos-ci-target-contenido-info #hora,
66 .adt-eventos-ci-target-contenido-info #lugar,
67 .adt-eventos-ci-target-contenido-info #fecha {
68 width: 100%;
69 flex-direction: row;
70 align-items: center;
71 margin: 5px 10px;
72
73 }
74 .adt-eventos-ci-target-contenido-info #hora #p-hora,
75 .adt-eventos-ci-target-contenido-info #fecha #p-fecha{
76 flex-direction: column;
77 }
78 .adt-eventos-ci-target-contenido-info img {
79 width: 24px !important;
80 margin-right: 10px;
81 }
82 .adt-eventos-ci-target-contenido-info p {
83 font-size: 13px;
84 }
85 .d-f {
86 display: flex;
87 }
88 .border-left {
89 width: 2px;
90 height: auto;
91 border-width: 0;
92 color: #d9d9d9;
93 background-color: #d9d9d9;
94 }
95 .border-2 {
96 border: 2px solid #d9d9d9;
97 }
98 @media (max-width:400px){
99 .adt-eventos-ci-target-contenido,
100 .adt-eventos-ci-target-contenido-texto{
101 height:fit-content;
102 }
103 .adt-eventos-ci-target-contenido-info {
104 flex-direction:column;
105 justify-content: center;
106 padding: 1rem;
107 }
108 .border-left{
109 display:none;
110 }
111 .adt-eventos-ci-target-contenido-info #hora,
112 .adt-eventos-ci-target-contenido-info #lugar,
113 .adt-eventos-ci-target-contenido-info #fecha {
114 flex-direction: row;
115 align-items:center;
116 margin: 0;
117 }
118 .adt-eventos-ci-target-contenido-info img {
119 margin-bottom: 0;
120 }
121 .adt-eventos-ci-target-contenido-info #hora #p-hora,
122 .adt-eventos-ci-target-contenido-info #fecha #p-fecha,
123 .adt-eventos-ci-target-contenido-info #lugar p{
124 margin: 5px 8px;
125 }
126 .adt-eventos-ci-target-contenido-info #lugar p{
127 text-align:left;
128 }
129 }
130</style>
131<#-- Truncate Text -->
132<#macro truncate_text text limit>
133<#assign truncatedText="" />
134<#if text?length gt limit>
135<#assign truncatedText=text?substring(0,limit) />
136<#assign truncatedText=truncatedText + "..." />
137${truncatedText}
138<#else>
139${text}
140</#if>
141</#macro>
142<div class="adt-eventos-ci-container">
143 <div class="adt-eventos-ci-fila d-f">
144 <div class="adt-eventos-ci-columna d-f">
145 <#if entries?has_content>
146 <#list entries as curEntry>
147 <#assign renderer=curEntry.getAssetRenderer() className=renderer.getClassName() />
148 <#assign constantDocuments="documents" journalArticle=renderer.getArticle()
149 document=saxReaderUtil.read(journalArticle.getContent())
150 rootElement=document.getRootElement()
151 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='fecha' ]")
152 news_fecha=xPathSelector.selectSingleNode(rootElement).getStringValue()
153 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='descripcion' ]")
154 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='ubicacion' ]")
155 ubication=xPathSelector.selectSingleNode(rootElement).getStringValue()
156 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='horainicio' ]")
157 hora1=xPathSelector.selectSingleNode(rootElement).getStringValue()
158 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='horafin' ]")
159 hora2=xPathSelector.selectSingleNode(rootElement).getStringValue()
160 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='opcPagExt']")
161 opcionPag = xPathSelector.selectSingleNode(rootElement).getStringValue()
162 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='urlExterna']")
163 urlExt = xPathSelector.selectSingleNode(rootElement).getStringValue()
164 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='tipoevento' ]")
165 tipo=xPathSelector.selectSingleNode(rootElement).getStringValue()
166 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='URLvirtual' ]")
167 virtual=xPathSelector.selectSingleNode(rootElement).getStringValue()
168 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='fecha']")
169 fecha1_x = xPathSelector.selectSingleNode(rootElement).getStringValue()
170 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='fechafinal']")
171 fecha2_x = xPathSelector.selectSingleNode(rootElement).getStringValue()
172 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='latitud' ]")
173 lat=xPathSelector.selectSingleNode(rootElement).getStringValue()
174 latSinEsp=lat?replace(" ", "")?replace("\n", "")?replace("\t", "")
175 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@name='longitud' ]")
176 long=xPathSelector.selectSingleNode(rootElement).getStringValue()
177 longSinEsp=long?replace(" ", "")?replace("\n", "")?replace("\t", "")
178 />
179 <!-- Nueva forma de leer imagen destacada (sin servicios) -->
180 <#assign img = journalArticle.getSmallImageURL() />
181 <!-- Leer descripción de imagen destacada -->
182 <#assign dlFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
183 />
184 <#if img?has_content>
185 <#assign
186 uuid1=img?keep_before("?")?keep_after_last("/")
187 groupIdImage = img?keep_after("documents/")?keep_before("/")?number
188 step1 = dlFileEntryService.getFileEntryByUuidAndGroupId(uuid1, groupIdImage)
189 />
190 </#if>
191 <!-- para hallar las categorias-->
192 <#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
193 categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey())/>
194
195 <#assign fecha1 = fecha1_x?replace(" ", "")?replace("\n", "")?replace("\t", "")?date.xs/>
196 <#assign fecha2 = fecha2_x?replace(" ", "")?replace("\n", "")?replace("\t", "")?date.xs/>
197 <#assign GG=assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry)?keep_before("?")?keep_after("content/")/>
198 <#if opcionPag?contains("si")>
199 <#assign viewURL="${urlExt}"/>
200 <#else>
201 <#assign viewURL="/web/eventos/w/${GG}"/>
202 </#if>
203
204 <div class="adt-eventos-ci-target">
205 <div class="adt-eventos-encabezado" title="${curEntry.getTitle(locale)}">
206 <#if img?has_content>
207 <!--asignar descripción en texto alt si tiene, y si no que muestre el mismo titulo de la imagen-->
208 <#if step1.getDescription()?has_content>
209 <img src="${img}" alt="${step1.getDescription()}" style="width: 100%; position: relative; border-top-left-radius: 20px; border-top-right-radius: 20px; aspect-ratio:11/4;"/>
210 <#else>
211 <img src="${img}" alt="${step1.getTitle()}" style="width: 100%; position: relative; border-top-left-radius: 20px; border-top-right-radius: 20px; aspect-ratio:11/4;"/>
212 </#if>
213 <!--termina el alt y sigue con condicional de agregar logo UN en caso de que no tenga imagen destacada por mostrar-->
214 <#else>
215 <img src="https://www.uninorte.edu.co/documents/14120459/14911168/Logo_Uninorte.png/1fee375c-5a6d-f0dd-b431-67d8caeea04d?t=1677083900695" alt="Uninorte logo" style="width: 100%; position: relative; border-top-left-radius: 20px; border-top-right-radius: 20px; aspect-ratio:11/4;"/>
216 </#if>
217 <div class="adt-eventos-ci-target-categoria">
218 <p><#if categories?has_content>
219 <#list categories as category>
220 <#if category?contains("Académicos") || category?contains("Ceremoniales") || category?contains("Culturales") || category?contains("Deportivos") || category?contains("Empresariales") || category?contains("Grados") || category?contains("Internacionalización")|| category?contains("Investigación") || category?contains("Recomendado")>
221 <div class="adt-noticias-1-target-categoria">
222 <p>${category.getName()}</p>
223 </div>
224 <#break>
225 </#if>
226 </#list>
227 </#if></p>
228
229 </div>
230 </div>
231 <div class="adt-eventos-ci-target-contenido border-2">
232 <div class="adt-eventos-ci-target-contenido-texto">
233 <a href="${viewURL}">
234 <h2 id="titulo">
235 ${stringUtil.shorten(curEntry.getTitle(locale), 100)}
236 </h2>
237 </a>
238 <p id="descripcion">
239 ${stringUtil.shorten(curEntry.getSummary(locale), 195)}
240 </p>
241 </div>
242 <div class="adt-eventos-ci-target-contenido-info d-f">
243
244 <div class="d-f" id="fecha">
245 <img
246 src="https://www.uninorte.edu.co/documents/15916181/30396914/calendario.png/d29504bd-eeb0-6b22-84c9-7ff79262a873?t=1663686871125"
247 alt="Calendario"
248 />
249 <div class="d-f" id="p-fecha">
250
251
252 <#if fecha1 == fecha2>
253 <#-- Fecha 1 -->
254 <#if fecha1?contains("Jan")>
255 <#assign date1=fecha1?replace("Jan", "Ene" ) />
256 <#elseif fecha1?contains("Apr")>
257 <#assign date1=fecha1?replace("Apr", "Abr" ) />
258 <#elseif fecha1?contains("Aug")>
259 <#assign date1=fecha1?replace("Aug", "Ago" ) />
260 <#elseif fecha1?contains("Dec")>
261 <#assign date1=fecha1?replace("Dec", "Dic" ) />
262 <#else>
263 <#assign date1=fecha1 />
264 </#if>
265 <p>${date1}</p>
266 <#else>
267
268 <#-- Fecha 1 -->
269 <#if fecha1?contains("Jan")>
270 <#assign date1=fecha1?replace("Jan", "Ene" ) />
271 <#elseif fecha1?contains("Apr")>
272 <#assign date1=fecha1?replace("Apr", "Abr" ) />
273 <#elseif fecha1?contains("Aug")>
274 <#assign date1=fecha1?replace("Aug", "Ago" ) />
275 <#elseif fecha1?contains("Dec")>
276 <#assign date1=fecha1?replace("Dec", "Dic" ) />
277 <#else>
278 <#assign date1=fecha1 />
279 </#if>
280
281 <#-- Fecha 2 -->
282 <#if fecha2?contains("Jan")>
283 <#assign date2=fecha2?replace("Jan", "Ene" ) />
284 <#elseif fecha2?contains("Apr")>
285 <#assign date2=fecha2?replace("Apr", "Abr" ) />
286 <#elseif fecha2?contains("Aug")>
287 <#assign date2=fecha2?replace("Aug", "Ago" ) />
288 <#elseif fecha2?contains("Dec")>
289 <#assign date2=fecha2?replace("Dec", "Dic" ) />
290 <#else>
291 <#assign date2=fecha2 />
292 </#if>
293
294 <p> ${date1}- ${date2}</p>
295
296 </#if>
297 </div>
298 </div>
299
300 <div class="d-f" id="hora">
301 <img
302 src="https://www.uninorte.edu.co/documents/15916181/30396914/reloj-de-pared.png/fe5ed88c-a1cd-cfd8-70f6-0b748630938c?t=1663686871005"
303 alt="Reloj"
304 />
305 <div class="d-f" id="p-hora">
306 <p>${hora1} - ${hora2}</p>
307 </div>
308 </div>
309
310 <div class="d-f" id="lugar">
311 <img
312 src="https://www.uninorte.edu.co/documents/15916181/30396914/sitio.png/148a5fc1-41d5-5bca-1878-ff8c1ea572e2?t=1663687797750"
313 alt="Ubicacion"
314 />
315
316 <#if tipo?contains("no")>
317 <#if latSinEsp == "" || longSinEsp == "">
318 <p>${ubication}</p>
319 <#else>
320 <#assign linkMaps = "https://www.google.com/maps?q=${lat},${long}&hl=es-PY&gl=py&shorturl=1"/>
321 <a href="${linkMaps}"><p>${ubication}</p></a>
322 </#if>
323 <#elseif tipo?contains("si")>
324 <a href="${virtual}">
325 <p>Evento virtual</p>
326 </a>
327 <#else>
328 <p>Bimodal</p>
329 </#if>
330 </div>
331 </div>
332 </div>
333 </div>
334 </#list>
335 </#if>
336 </div>
337 </div>
338</div>