Konkursy - Program Strategiczny Inicjatywa Doskonałości w Uniwersytecie Jagiellońskim
Wystąpił błąd podczas przetwarzania szablonu.
Java method "pl.edu.uj.portal.articles.util.impl.CustomAssetHelperImpl.getAssetsFromGroups(long[], String, long[], long[], long[], long[], String, String, String, String, Date, Date, Date, Date, Date, int, int)" threw an exception when invoked on pl.edu.uj.portal.articles.util.impl.CustomAssetHelperImpl object "pl.edu.uj.portal.articles.util.impl.CustomAssetHelperImpl@707cdd1a"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign assetsOnDay = ujCustomAssetHe... [in template "20096#20121#SKORKA2015-KALENDARZ" at line 503, column 5]
----
1<style>
2 .post-excerpt__add-to-calendar {
3 background-image: -owg-linear-gradient(top, transparent 0%, rgba(0, 0, 0, 0.65) 100%);
4 background-image: -webkit-linear-gradient(top, transparent 0%, rgba(0, 0, 0, 0.65) 100%);
5 background-image: -webkit-gradient(linear, left top, left bottom, from(transparent), to(rgba(0, 0, 0, 0.65)));
6 background-image: linear-gradient(top, rgba(0, 0, 0, 0.65) 0%, rgba(0, 0, 0, 0.65) 100%);
7 }
8 @media all and (min-width:480px){
9 html .post-excerpt__image img.thumb { width: 300px; }
10 }
11
12 html .calendar__prev, html .calendar__next {
13 border: none;
14 background: none;
15 }
16
17 .chosen-container-active{
18 border: 1px solid #333;
19 }
20 #high-contrast .chosen-container-active{
21 border: 1px solid #fff;
22 }
23
24 html .calendar__day {
25 color: #0077b3;
26 border: none;
27 }
28
29 button.post-excerpt-group__title {
30 width:100%;
31 text-align: left;
32 border: none;
33 margin: 0;
34 background: #f4f4f4;
35 display: inline-block;
36 vertical-align: middle;
37 padding: 15px 45px 15px 30px;
38 font-style: normal;
39 text-transform: unset;
40 color: #0077b3;
41 clear: both;
42 -webkit-transition: all 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);
43 transition: all 0.3s cubic-bezier(0.455, 0.03, 0.515, 0.955);
44 }
45
46 #high-contrast button.post-excerpt-group__title {
47 color: #ffe800;
48 background: #000;
49 }
50 #high-contrast button.post-excerpt-group__title:hover, #high-contrast button.post-excerpt-group__title:focus {
51 color: #000;
52 background: #ffe800;
53 }
54</style>
55
56<#assign sciezkaObrazkow = ''/>
57<#if request?? && request?has_content>
58 <#assign
59 sciezkaObrazkow = themeDisplay.getPathThemeImages()
60 longGroupId = themeDisplay.getScopeGroupId()
61 currentUrl = themeDisplay.getURLCurrent()
62 currentRenderUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()
63 portletId = themeDisplay.getPortletDisplay().getId()
64 />
65</#if>
66
67<#if sciezkaObrazkow?has_content || sciezkaObrazkow?matches(".*/uj-lift-theme/images.*")>
68
69<#-- DATES-->
70 <#assign day = ''/>
71 <#if renderRequest.getOriginalHttpServletRequest().getParameter('day')??>
72 <#assign day = renderRequest.getOriginalHttpServletRequest().getParameter('day')?html/>
73 </#if>
74
75 <#if !day?has_content>
76 <#assign date = dateUtil.parseDate("yyyyMMdd", .now?string("yyyyMMdd"), locale)/>
77 <#else>
78 <#assign date = dateUtil.parseDate("yyyyMMdd", day, locale)/>
79 </#if>
80
81 <#assign
82 strDateSelected = date?string("yyyyMMdd")
83
84 currentDay = date
85 m = currentDay?long
86 k = m - 1000
87 secondBeforeCurrentDay = k?number_to_date
88 j = m + 86400000
89 nextDay = j?number_to_date
90 w = m - 86400000
91 prevDay = w?number_to_date
92 />
93
94<#-- preparing address with day -->
95
96 <#assign
97 dayNumber = date?string("d")
98 dayName = dateUtil.getDate(date, "EEEE", locale)
99 monthNumber = date?string("M")
100 monthNumberToJavascript = monthNumber?number - 1
101 monthName = dateUtil.getDate(date, "MMMM", locale)
102 year = date?string("yyyy")
103 strDate = date?string("dd.MM.yyyy")
104 />
105
106<#-- end of preparing DATES -->
107
108 <#assign
109 defaultImgUrl = "${sciezkaObrazkow}/default_thumbs/ujThemeArticleList-300x230.jpg"
110 langAll = htmlUtil.escape(languageUtil.get(locale, "all"))
111 langFilter = htmlUtil.escape(languageUtil.get(locale, "filter"))
112 langViewAll = htmlUtil.escape(languageUtil.get(locale, "view-all"))
113 langReadMore = htmlUtil.escape(languageUtil.get(locale, "read-more"))
114 langBackToTop = htmlUtil.escape(languageUtil.get(locale, "back-to-top"))
115 langSelected = htmlUtil.escape(languageUtil.get(locale, "selected"))
116 langDay = htmlUtil.escape(languageUtil.get(locale, "day"))
117 langSoonEvents = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.soon-events"))
118 langOngoingEvents = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.ongoing-events"))
119 langAddNewEvent = htmlUtil.escape(languageUtil.get(locale, "add-new-event"))
120 langCalendar = htmlUtil.escape(languageUtil.get(locale, "calendar"))
121 langSkipToEvents = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.skip-to-events"))
122 />
123
124<#-- Structure variables -->
125 <#assign
126 titleData = ""
127 typeData = ""
128 categoriesData = ""
129 omitCategoriesData = ""
130 tagsData = ""
131 omitTagsData = ""
132 groupIdsData = ""
133 noResultsData = ""
134 hideData = ""
135 formAddEventUrlData = ""
136 />
137
138 <#if (title.getData())??>
139 <#assign titleData = title.getData()/>
140 </#if>
141 <#if (type.getData())??>
142 <#assign typeData = type.getData()?upper_case/>
143 </#if>
144 <#if (categories.getData())??>
145 <#assign categoriesData = categories.getData()/>
146 </#if>
147 <#if (omitCategories.getData())??>
148 <#assign omitCategoriesData = omitCategories.getData()/>
149 </#if>
150 <#if (tags.getData())??>
151 <#assign tagsData = tags.getData()/>
152 </#if>
153 <#if (omitTags.getData())??>
154 <#assign omitTagsData = omitTags.getData()/>
155 </#if>
156 <#if (groupIds.getData())??>
157 <#assign groupIdsData = groupIds.getData()/>
158 </#if>
159 <#if (noResults.getData())??>
160 <#assign noResultsData = noResults.getData()/>
161 </#if>
162 <#if (hide.getData())??>
163 <#assign hideData = hide.getData()/>
164 </#if>
165 <#if (formAddEventUrl.getData())??>
166 <#assign formAddEventUrlData = formAddEventUrl.getData()/>
167 </#if>
168
169 <#assign urlWithoutParameters = currentRenderUrl?replace('\\?.*', '', 'r')/>
170 <#assign url = currentRenderUrl/>
171
172 <#assign groupFilter = ''/>
173 <#if renderRequest.getOriginalHttpServletRequest().getParameter('groupFilter')??>
174 <#assign groupFilter = renderRequest.getOriginalHttpServletRequest().getParameter('groupFilter')?html/>
175 </#if>
176 <#if groupFilter?has_content>
177 <#assign url = httpComponentsUtil.addParameter(urlWithoutParameters, 'groupFilter', groupFilter)/>
178 </#if>
179
180 <#if strDateSelected?has_content>
181 <#assign url = httpComponentsUtil.addParameter(urlWithoutParameters, 'day', strDateSelected)/>
182 </#if>
183
184<#-----------MACRO----------->
185 <#macro assetsLoop assets open>
186 <div id="accordionGroup" class="Accordion" data-allow-multiple data-allow-toggle>
187 <#list assets as asset>
188 <#assign counter = asset?counter/>
189 <#assign model = 'com.liferay.journal.model.JournalArticle'/>
190 <#assign etykiety = assetTagService.getTags(model, getterUtil.getLong(asset.getClassPK()))/>
191
192 <#assign
193 articleId = ""
194 articleTitle = ""
195 articleDescription = ""
196 artImgJson = ""
197 imgDescription = ""
198 articleGroupId = ""
199
200 articleResource = journalArticleResourceService.getArticleResource(asset.getClassPK())
201 article = journalArticleService.getArticle(articleResource.getGroupId(), articleResource.getArticleId())
202 articleGroupId = article.getGroupId()
203 articleId = article.getArticleId()
204 />
205
206 <#assign artStructureValues = ujJournalArticleHelper.getFormValues(article, portletRequest)/>
207
208 <#assign articleTitle = artStructureValues["tytul"]!""/>
209 <#if !articleTitle?has_content>
210 <#assign articleTitle = article.getTitle()/>
211 </#if>
212 <#assign articleTitle = articleTitle?replace('\"', '"')/>
213
214 <#assign articleDescription = artStructureValues["streszczenie"]!""/>
215 <#if !articleDescription?has_content>
216 <#assign articleDescription = article.getDescription()/>
217 </#if>
218 <#assign articleDescription = articleDescription?replace('\"','"')/>
219
220 <#assign artImgJson = ''/>
221 <#if artStructureValues["grafikaLista"]??>
222 <#assign artImgJson = artStructureValues["grafikaLista"]/>
223 </#if>
224
225 <#assign
226 startDate = artStructureValues["startDate"]!""
227 endDate = artStructureValues["endDate"]!""
228 eventStartDate = ""
229 eventEndDate = ""
230 eventStartTimeUTC = ""
231 eventEndTimeUTC = ""
232 />
233
234 <#if startDate?has_content>
235 <#assign articleStartDate = dateUtil.parseDate("yyyyMMdd", startDate, locale)/>
236 <#assign eventStartDate = dateUtil.getDate(articleStartDate, "dd.MM.yyyy", locale)/>
237 </#if>
238
239 <#if endDate?has_content>
240 <#assign articleEndDate = dateUtil.parseDate("yyyyMMdd", endDate, locale)/>
241 <#assign eventEndDate = dateUtil.getDate(articleEndDate, "dd.MM.yyyy", locale)/>
242 </#if>
243 <#-- adding parameter day -->
244 <#assign articleUrl = htmlUtil.escape("${urlWithoutParameters}/-/journal_content/${portletId}/${articleGroupId}/${articleId}")/>
245
246 <div class="post-excerpt-group <#if open>post-excerpt-group--open</#if> jsToggleContainer">
247
248 <button class="Accordion-trigger post-excerpt-group__title jsToggleTrigger"
249 id="accordion-header-${counter}"
250 aria-controls="accordion-panel-${counter}">
251 <#-- adding parameter day -->
252 <#if etykiety?size gt 0>
253 <#list etykiety as etykieta>
254 <#if etykieta.getName() == 'kultura'> <i class="icon icon-maska"></i></#if>
255 <#if etykieta.getName() == 'konkurs'> <i class="icon icon-medal"></i></#if>
256 <#if etykieta.getName() == 'konferencja'> <i class="icon icon-mikrofon"></i></#if>
257 <#if etykieta.getName() == 'wykład'> <i class="icon icon-ksiazka"></i></#if>
258 </#list>
259 </#if>
260 <span>${articleTitle}</span>
261 </button>
262 <#assign unfold = false/>
263 <div class="Accordion-panel post-excerpt-group__content jsToggleContent" id="accordion-panel-${counter}"
264 role="region"
265 aria-labelledby="accordion-header-${counter}"
266 <#if unfold == true>
267 style="display:block;"
268 </#if>
269 >
270
271 <div class="post-excerpt post-excerpt--calendar">
272 <#if artImgJson?has_content>
273 <div class="post-excerpt__image jsAddToCalendarContainer">
274
275 <a href="#" title="${langCalendar}" class="post-excerpt__add-to-calendar jsAddToCalendarOpen">
276 <span class="post-excerpt__add-to-calendar-plus"></span>
277 ${langCalendar}
278 </a>
279
280 <#-- TWORZENIE LINKOW DO EKSPORTU KALENDARZA: POCZATEK -->
281 <#assign eventLocation = artStructureValues["miejsce"]!""/>
282 <#assign eventEmail = artStructureValues["kontakt"]!""/>
283 <#if !validator.isEmailAddress(eventEmail)>
284 <#assign eventEmail = ""/>
285 </#if>
286
287 <#assign hour = artStructureValues["godzinaRozpoczecia"]!""/>
288 <#assign i = hour?index_of(':')/>
289 <#if i?has_content && i gte 2>
290 <#assign i = i - 2/>
291 <#assign hour = hour?substring(i, 5)/>
292 <#assign allday = false/>
293 <#else>
294 <#assign hour = "00:00"/>
295 <#assign allday = true/>
296 </#if>
297
298 <#if startDate?has_content>
299 <#assign eventStartTime = dateUtil.parseDate("yyyyMMddHH:mm", startDate + hour, locale)/>
300 <#assign eventStartTimeUTC = dateUtil.getUTCFormat().format(eventStartTime)?replace('UTC','Z')/>
301 </#if>
302
303 <#if endDate?has_content>
304 <#assign eventEndTime = dateUtil.parseDate("yyyyMMddHH:mm", endDate + hour, locale)/>
305 <#assign eventEndTimeUTC = dateUtil.getUTCFormat().format(eventEndTime)?replace('UTC','Z')/>
306 </#if>
307
308 <#assign googleCalendarURL = "https://calendar.google.com/calendar/render?action=TEMPLATE"/>
309 <#assign googleCalendarURL = httpComponentsUtil.addParameter(googleCalendarURL,"text","articleTitle")/>
310 <#if allday>
311 <#assign googleCalendarURL = httpComponentsUtil.addParameter(googleCalendarURL, "dates", startDate + "/" + endDate)/>
312 <#else>
313 <#assign googleCalendarURL = httpComponentsUtil.addParameter(googleCalendarURL, "dates", eventStartTimeUTC + "/" + eventEndTimeUTC)/>
314 </#if>
315 <#assign googleCalendarURL = httpComponentsUtil.addParameter(googleCalendarURL, "details", articleDescription)/>
316 <#assign googleCalendarURL = httpComponentsUtil.addParameter(googleCalendarURL, "location", eventLocation)/>
317
318 <#assign liveCalendarURL = "https://calendar.live.com/calendar/calendar.aspx?rru=addevent"/>
319 <#if allday>
320 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "dtstart", startDate)/>
321 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "dtend", endDate)/>
322 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "allday", "true")/>
323 <#else>
324 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "dtstart",eventStartTimeUTC)/>
325 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "dtend", eventEndTimeUTC)/>
326 </#if>
327 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "summary", articleTitle)/>
328 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "location", eventLocation)/>
329 <#assign liveCalendarURL = httpComponentsUtil.addParameter(liveCalendarURL, "description", articleDescription)/>
330
331 <#assign outlookCalendarURL = "/gen/event.ics"/>
332 <#if allday>
333 <#-- ${eventStartTime?string}==${dateUtil.getDate(eventStartTime, "yyyyMMdd'T'HHmmss", locale)}-->
334 <#-- <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "start", dateUtil.getDate(eventStartTime, "yyyyMMdd'T'HHmmss", locale))/>-->
335 <#if endDate?has_content>
336 <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "end", dateUtil.getDate(eventEndTime, "yyyyMMdd'T'HHmmss", locale))/>
337 </#if>
338 <#else>
339 <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "start", eventStartTimeUTC)/>
340 <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "end", eventEndTimeUTC)/>
341 </#if>
342 <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "summary", articleTitle)/>
343 <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "location", eventLocation)/>
344 <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "description", articleDescription)/>
345 <#assign outlookCalendarURL = httpComponentsUtil.addParameter(outlookCalendarURL, "email", eventEmail)/>
346
347 <#-- TWORZENIE LINKOW DO EKSPORTU KALENDARZA: KONIEC -->
348 <#if artImgJson?has_content>
349 <#assign artImgUrl = ujDocumentLibraryHelper.getFileEntryDownloadURL(artImgJson)/>
350 <#attempt>
351 <#assign imgDescription = ujDocumentLibraryHelper.getFileEntry(artImgJson).getDescription()/>
352 <#recover>
353 <#assign imgDescription = articleTitle/>
354 </#attempt>
355 <div class="article__related-post-image">
356 <img class="thumb" src="${artImgUrl}" alt="${imgDescription}">
357 </div>
358 </#if> <#-- End of checking thumb -->
359
360
361 <div class="add-to-calendar__wrapper">
362 <a href="${googleCalendarURL}" title="Google Calendar" target="_blank" class="add-to-calendar__item jsAddToCalendarItem">
363 <span class="add-to-calendar__item-text">Google Calendar</span>
364 </a>
365 <a href="${liveCalendarURL}" title="Outlook.com" target="_blank" class="add-to-calendar__item jsAddToCalendarItem">
366 <span class="add-to-calendar__item-text">Outlook.com</span>
367 </a>
368 <a href="${outlookCalendarURL}" title="iCalendar" class="add-to-calendar__item jsAddToCalendarItem">
369 <span class="add-to-calendar__item-text">iCalendar</span>
370 </a>
371 <a href="#" title="close" class="add-to-calendar__close jsAddToCalendarClose jsAddToCalendarItem">
372 <span class="post-excerpt__add-to-calendar-close"></span>
373 </a>
374 </div>
375 </div>
376 </#if><#-- end of checking image -->
377
378 <div <#if artImgJson?has_content>class="post-excerpt__text-container"<#else>class="post-excerpt post-excerpt--condensed"</#if>>
379
380 <h3 class="post-excerpt__sub-title">
381 <#if eventStartDate?has_content && eventEndDate?has_content>
382 <#if eventStartDate == eventEndDate>
383 ${eventStartDate}
384 <#else>
385 ${eventStartDate} - ${eventEndDate}
386 </#if>
387 <#elseif eventStartDate?has_content && !eventEndDate?has_content>
388 ${eventStartDate}
389 <#elseif !eventStartDate?has_content && eventEndDate?has_content>
390 ${eventEndDate}
391 </#if>
392 </h3>
393 <div class="post-excerpt__text">
394 ${articleDescription}
395 </div>
396 <a href="${articleUrl}" title="${articleTitle}" class="post-excerpt__link">${langReadMore}
397 <span class="invisible-element">o ${articleTitle}</span>
398 </a>
399 </div>
400 </div>
401 </div>
402 </div> <#-- end of event on day -->
403 </#list> <#-- end of foreach assetsOnDay -->
404 </div> <#-- end of accordion -->
405 </#macro>
406<#-- end of macros -->
407
408<#---- Services ---->
409 <#assign
410 journalArticleResourceService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")
411 journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
412 assetTagService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")
413 organizationService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")
414 groupService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")
415 fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
416 />
417
418<#---- Organizations & Groups ---->
419 <#assign groupsList = []/>
420 <#assign groupIds = []/>
421
422 <#if groupIdsData?has_content>
423 <#assign groupIds = getterUtil.getLongValues(groupIdsData?split(","))/>
424 </#if>
425 <#if groupIds?size gt 0>
426 <#list groupIds as groupId>
427 <#assign groupsList = groupsList + [groupId]/>
428 </#list>
429 <#else>
430 <#assign groupsList = [longGroupId?string]/>
431 <#assign groupIds = [longGroupId]/>
432 </#if>
433
434 <#assign groupsListFilter = groupsList/>
435
436 <#if groupFilter?has_content>
437 <#if groupsList?seq_contains(groupFilter)>
438 <#assign groupsList = [groupFilter?string]/>
439 </#if>
440 </#if>
441
442 <#assign emptyLongArray = getterUtil.getLongValues([])/>
443
444<#----------- Categories ----------->
445 <#assign categoryIds = emptyLongArray/>
446 <#assign omitcategoryIds = emptyLongArray/>
447
448 <#list stringUtil.split(categoriesData, ",") as categorie>
449 <#if categorie?length gt 0>
450 <#assign categoryNameTmp = [categorie?trim]/>
451 <#list groupIds as longGroupId>
452 <#assign categoryIdTmp = ujCustomAssetHelper.getCategoryIds(longGroupId, categoryNameTmp)/>
453 <#assign categoryIds = arrayUtil.append(categoryIds, categoryIdTmp)/>
454 </#list>
455 </#if>
456 </#list>
457
458 <#list stringUtil.split(omitCategoriesData, ",") as omitCategorie>
459 <#if omitCategorie?length gt 0>
460 <#assign omitCategoryNameTmp = [omitCategorie?trim]/>
461 <#list groupIds as longGroupId>
462 <#assign omitCategoryIdTmp = ujCustomAssetHelper.getCategoryIds(longGroupId, omitCategoryNameTmp)/>
463 <#assign omitCategoryIds = arrayUtil.append(omitcategoryIds, omitCategoryIdTmp)/>
464 </#list>
465 </#if>
466 </#list>
467
468<#----------- Tags ----------->
469 <#assign tagIds = emptyLongArray/>
470 <#assign omitTagIds = emptyLongArray/>
471
472 <#list stringUtil.split(tagsData, ",") as tag>
473 <#if tag?length gt 0>
474 <#assign tagNameTmp = [tag?trim]/>
475 <#list groupIds as longGroupId>
476 <#assign tagIdTmp = ujCustomAssetHelper.getTagIds(longGroupId, tagNameTmp)/>
477 <#assign tagIds = arrayUtil.append(tagIds, tagIdTmp)/>
478 </#list>
479 </#if>
480 </#list>
481
482 <#list stringUtil.split(omitTagsData, ",") as tag>
483 <#if tag?length gt 0>
484 <#assign omitTagNameTmp = [tag?trim]/>
485 <#list groupIds as longGroupId>
486 <#assign omitTagIdTmp = ujCustomAssetHelper.getTagIds(longGroupId, omitTagNameTmp)/>
487 <#assign omitTagIds = arrayUtil.append(omitTagIds, omitTagIdTmp)/>
488 </#list>
489 </#if>
490 </#list>
491
492<#----------- Getting assets ----------->
493 <#assign
494 indeksPoczatkowyOnDay = 0
495 indeksKoncowyOnDay = 30
496 indeksPoczatkowyOnGoing = 0
497 indeksKoncowyOnGoing = 30
498 indeksPoczatkowySoon = 0
499 indeksKoncowySoon = 10
500 />
501
502<#--------- wyciąganie wydarzeń z danego dnia --------->
503 <#assign assetsOnDay = ujCustomAssetHelper.getAssetsFromGroups(groupIds, typeData,
504 categoryIds, omitCategoryIds, tagIds, omitTagIds,
505 "startDate", "endDate", "DESC", "ASC",
506 currentDay, null, nextDay, null,
507 .now?date, indeksPoczatkowyOnDay, indeksKoncowyOnDay)/>
508
509<#----------- wyciąganie wydarzeń trwających ----------->
510 <#assign assetsOnGoing = ujCustomAssetHelper.getAssetsFromGroups(groupIds, typeData,
511 categoryIds, omitCategoryIds, tagIds, omitTagIds,
512 "startDate", "endDate", "DESC", "ASC",
513 null, null, currentDay, secondBeforeCurrentDay,
514 .now?date, indeksPoczatkowyOnGoing, indeksKoncowyOnGoing)/>
515
516<#----------- wyciąganie wydarzeń nadchodzących ----------->
517 <#assign assetsSoon = ujCustomAssetHelper.getAssetsFromGroups(groupIds, typeData,
518 categoryIds, omitCategoryIds, tagIds, omitTagIds,
519 "startDate", "endDate", "ASC", "ASC",
520 nextDay, null, null, null, .now?date,
521 indeksPoczatkowySoon, indeksKoncowySoon)/>
522
523 <section class="main-content" id="main-content">
524 <#-----------Select articles by groupId----------->
525 <#if !hideData?contains('group-filter')>
526 <#if groupsListFilter?size gt 1>
527 <form id="articlesFilter" name="formArticlesFilter" class="jsForm" action="${urlWithoutParameters}" method="get" onsubmit="">
528 <input type="hidden" name="day" value="${strDateSelected}"/>
529 <select name="groupFilter" id="groupFilter" class="jsFormSelect " data-placeholder="${langFilter}">
530 <option value=""></option>
531 <option value="all" <#if groupFilter == 'all'> selected='selected' </#if>>${langAll}</option>
532 <#list groupsListFilter as g>
533 <#assign grupa = groupService.getGroup(getterUtil.getLong(g))/>
534 <option value="${g}" <#if g?string == groupFilter> selected='selected' </#if>>
535 <#--special case on english site-->
536 <#if longGroupId == 16167284>
537 <#if g == 757404>Archive new
538 <#elseif g == 16167284>Current news
539 <#else>${grupa.getDescriptiveName()}
540 </#if>
541 <#else>
542 ${grupa.getDescriptiveName()}
543 </#if>
544 </option>
545 </#list>
546 </select>
547 </form>
548 </#if><#--end of form-->
549 </#if><#--end of checking hiding-->
550
551 <script type="text/javascript">
552
553 jQuery('select').change(function() {
554 jQuery(this).parent('form').submit();
555 });
556
557 </script>
558
559 <#-- end of SELECT ARTICLES BY GROUPID -->
560
561 <style>
562 a.skip-calendar{
563 width:1px;
564 height:1px;
565 padding:10px;
566 background:#fff;
567 text-decoration:none;
568 color:#005ca7;
569 outline:3px #005ca7 solid;
570 overflow:hidden;
571 position:absolute;
572 top:0;
573 left:-99999px
574 }
575 .skip-calendar:focus,.skip-calendar:active{
576 width:auto;
577 height:auto;
578 position: relative;
579 top: 40px;
580 left: 0;
581 z-index:320;
582 }
583 </style>
584
585 <#-- Calendar -->
586 <div class="calendar">
587 <div class="calendar__aside">
588 <div class="calendar__current-day-wrapper">
589 <div class="calendar__current-day-top"></div>
590 <div class="calendar__current-day">
591 ${dayNumber}
592 </div>
593 </div>
594 <div class="calendar__current-day-name">
595 ${dayName}
596 </div>
597 <div class="calendar__current-day-date">
598 ${strDate}
599 </div>
600 <a href="#calendar-events" tabindex="0" title="$lang-skip-to-events" class="skip-calendar">
601 ${langSkipToEvents}
602 </a>
603
604 <#if formAddEventUrlData?has_content>
605 <a href="${formAddEventUrlData}" title="${langAddNewEvent}" class="calendar__add-event">
606 ${langAddNewEvent}
607 </a>
608 </#if>
609 </div>
610
611 <div class="calendar__wrapper jsCalendar"></div>
612 <script type="text/template" id="calendar-template">
613 <div class="calendar__controls">
614 <button class="calendar__prev jsCalendarPrev">
615 <span class="invisible-element">Poprzedni miesiąc</span>
616 <i class="icon icon-angle-left"></i>
617 </button>
618 <div class="calendar__month">
619 <%= month %> <%= year %>
620 </div>
621 <button class="calendar__next jsCalendarNext">
622 <span class="invisible-element">Następny miesiąc</span>
623 <i class="icon icon-angle-right"></i>
624 </button>
625 </div>
626 <div class="calendar__grid">
627 <div class="calendar__days-of-the-week">
628 <% _.each(daysOfTheWeek, function(day) { %>
629 <div class="calendar__header-day"><%= day %></div>
630 <% }); %>
631 </div>
632 <div class="calendar__days">
633 <% _.each(days, function(day) { %>
634 <button class="<%= day.classes %>">
635 <%= day.day %>
636 </button>
637 <% }); %>
638 </div>
639 </div>
640 </script>
641
642 </div>
643
644
645 <span id="calendar-events"></span>
646 <#-- on DAY -->
647 <#if assetsOnDay?size gt 0>
648 <div class="post-excerpt-groups _cf">
649 <div class="post-excerpt-groups__title">
650 ${langSelected} ${langDay}
651 </div>
652 <@assetsLoop assets=assetsOnDay open=true/>
653 </div> <#-- end of .post-excerpt-groups _cf -->
654 </#if> <#-- end of checking assetsOnDay size>0 -->
655
656 <#-- on GOING -->
657 <#if assetsOnGoing?size gt 0>
658 <div class="post-excerpt-groups _cf">
659 <div class="post-excerpt-groups__title">
660 ${langOngoingEvents}
661 </div>
662 <@assetsLoop assets=assetsOnGoing open=false/>
663 </div> <#-- end of .post-excerpt-groups _cf -->
664 </#if> <#-- end of checking assetsOnGoing size>0 -->
665
666 <#-- SOON -->
667 <#if assetsSoon?size gt 0>
668 <div class="post-excerpt-groups _cf">
669 <div class="post-excerpt-groups__title">
670 ${langSoonEvents}
671 </div>
672 <@assetsLoop assets=assetsSoon open=false/>
673 </div> <#-- end of .post-excerpt-groups _cf -->
674 </#if> <#-- end of checking assetsOnGoing size>0 -->
675
676 <#if assetsOnDay?size == 0 && assetsOnGoing?size == 0 && assetsSoon?size == 0>
677 <div class="post-excerpt__text" id="aui_3_6_0_1_650">
678 ${noResultsData}
679 </div>
680 <#else>
681 <a href="#" title="${langBackToTop}" class="gotop-button jsGoTop">
682 ${langBackToTop}
683 </a>
684 </#if>
685
686 </section>
687
688<#else>
689 <#if permissionChecker.getUserId() gt 100000>
690 <p>Ten szablon przeznaczony jest tylko dla dedykowanej skórki UJ</p>
691 </#if>
692</#if>
693
694<script>
695 /*
696 * This content is licensed according to the W3C Software License at
697 * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
698 *
699 * Simple accordion pattern example
700 */
701
702 'use strict';
703
704 Array.prototype.slice.call(document.querySelectorAll('.Accordion')).forEach(function (accordion) {
705
706 // Allow for multiple accordion sections to be expanded at the same time
707 var allowMultiple = accordion.hasAttribute('data-allow-multiple');
708 // Allow for each toggle to both open and close individually
709 var allowToggle = (allowMultiple) ? allowMultiple : accordion.hasAttribute('data-allow-toggle');
710
711 // Create the array of toggle elements for the accordion group
712 var triggers = Array.prototype.slice.call(accordion.querySelectorAll('.Accordion-trigger'));
713 var panels = Array.prototype.slice.call(accordion.querySelectorAll('.Accordion-panel'));
714
715 // Bind keyboard behaviors on the main accordion container
716 accordion.addEventListener('keydown', function (event) {
717 var target = event.target;
718 var key = event.which.toString();
719
720 var isExpanded = target.getAttribute('aria-expanded') == 'true';
721 var allowToggle = (allowMultiple) ? allowMultiple : accordion.hasAttribute('data-allow-toggle');
722
723 // 33 = Page Up, 34 = Page Down
724 var ctrlModifier = (event.ctrlKey && key.match(/33|34/));
725
726 // Is this coming from an accordion header?
727 if (target.classList.contains('Accordion-trigger')) {
728 // Up/ Down arrow and Control + Page Up/ Page Down keyboard operations
729 // 38 = Up, 40 = Down
730 if (key.match(/38|40/) || ctrlModifier) {
731 var index = triggers.indexOf(target);
732 var direction = (key.match(/34|40/)) ? 1 : -1;
733 var length = triggers.length;
734 var newIndex = (index + length + direction) % length;
735
736 triggers[newIndex].focus();
737
738 event.preventDefault();
739 }
740 else if (key.match(/35|36/)) {
741 // 35 = End, 36 = Home keyboard operations
742 switch (key) {
743 // Go to first accordion
744 case '36':
745 triggers[0].focus();
746 break;
747 // Go to last accordion
748 case '35':
749 triggers[triggers.length - 1].focus();
750 break;
751 }
752 event.preventDefault();
753
754 }
755
756 }
757 });
758
759 // These are used to style the accordion when one of the buttons has focus
760 accordion.querySelectorAll('.Accordion-trigger').forEach(function (trigger) {
761
762 trigger.addEventListener('focus', function (event) {
763 accordion.classList.add('focus');
764 });
765
766 trigger.addEventListener('blur', function (event) {
767 accordion.classList.remove('focus');
768 });
769
770 });
771
772 // Minor setup: will set disabled state, via aria-disabled, to an
773 // expanded/ active accordion which is not allowed to be toggled close
774 if (!allowToggle) {
775 // Get the first expanded/ active accordion
776 var expanded = accordion.querySelector('[aria-expanded="true"]');
777
778 // If an expanded/ active accordion is found, disable
779 if (expanded) {
780 expanded.setAttribute('aria-disabled', 'true');
781 }
782 }
783
784 });
785
786</script>