Warto zobaczyć - Wydział Matematyki i Informatyki
Wystąpił błąd podczas przetwarzania szablonu.
The following has evaluated to null or missing:
==> streamtype [in template "20096#20121#SKORKA2015-ARTYKUL" at line 99, column 14]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #if streamtype == "vimeo" [in template "20096#20121#SKORKA2015-ARTYKUL" in macro "flashMedia" at line 99, column 9]
- Reached through: @flashMedia flashWidth=audWidth flash... [in template "20096#20121#SKORKA2015-ARTYKUL" at line 392, column 33]
----
1<#assign sciezkaObrazkow = ''>
2<#if request?? && request?has_content>
3 <#assign sciezkaObrazkow = themeDisplay.getPathThemeImages()/>
4 <#assign longGroupIdFromRequest = themeDisplay.getScopeGroupId()/>
5 <#assign currentLanguageId = languageUtil.getLanguageId(themeDisplay.getLocale()) />
6 <#assign currentRenderUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
7</#if>
8
9<#if sciezkaObrazkow?has_content || sciezkaObrazkow?matches(".*/uj-lift-theme/images.*")>
10 <style>
11 .hidden { display: none;}
12
13 .placeholder {display: none;}
14 .resizing .placeholder {
15 display: block;
16 background: #333;
17 border: 2px solid #aaa;
18 color: #aaa;
19 }
20
21 .resizing video,
22 .resizing audio,
23 .resizing object,
24 .resizing embed
25 {
26 display: none;
27 }
28
29 @media all and (min-width:480px){
30 html .article__content img.thumb, html.view-gt480 .article__content img.thumb{width: 300px;}
31 }
32
33 /*wow button - autor: Gracja*/
34 a.wow-btn {
35 display: inline-block; /* Ważne: pozwala na padding i transformacje */
36 text-decoration: none !important; /* Usuwa podkreślenie motywu */
37 vertical-align: middle;
38 position: relative;
39 padding: 10px 20px;
40 background: linear-gradient(90deg, #e63946 0%, #c500cc 100%);
41 color: white !important; /* !important chroni kolor przed motywem */
42 border: none;
43 border-radius: 5px;
44 cursor: pointer;
45 font-family: sans-serif;
46 overflow: hidden;
47 }
48
49 /* Nadpisanie stanu hover z motywu */
50 a.wow-btn:hover {
51 color: white !important; /* Zapobiega zmianie koloru tekstu w motywie */
52 text-decoration: none; /* Zapobiega pojawieniu się podkreślenia */
53 opacity: 0.9; /* Opcjonalny efekt lekkiego rozjaśnienia */
54 }
55
56 /* Rozbłysk */
57 a.wow-btn::after {
58 content: "";
59 position: absolute;
60 top: 0;
61 left: -100%;
62 width: 50%;
63 height: 100%;
64 background: linear-gradient(
65 90deg,
66 transparent,
67 rgba(255, 255, 255, 0.4),
68 transparent
69 );
70 transform: skewX(-25deg);
71 transition: none;
72 }
73
74 a.wow-btn:hover::after {
75 left: 150%;
76 transition: left 0.6s ease-in-out;
77 }
78 </style>
79
80 <link rel="stylesheet" type="text/css" href="/o/uj-lift-theme/external-library/mediaPlayer/mediaelementplayer.min.css" />
81
82<#-----------Services----------->
83 <#assign assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")/>
84 <#assign assetEntryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
85 <#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")/>
86 <#assign assetTagService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")/>
87 <#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
88 <#assign journalArticleResourceService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")/>
89 <#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")/>
90 <#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")/>
91 <#assign fileEntryServiceRemote = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService")/>
92 <#assign folderService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService")/>
93 <#assign longGroupId = getterUtil.getLong(groupId)/>
94
95 <#macro flashMedia flashWidth flashHeight streamType flashUrl flashThumb flashTitle>
96 <#if !flashThumb?has_content || flashThumb?length == 0>
97 <#assign flashThumb = sciezkaObrazkow + "/default_thumbs/ujThemeArticleVideo-930x450.jpg"/>
98 </#if>
99 <#if streamtype == "vimeo">
100 <#assign vimeoID = flashUrl?replace("\\D", "", "r")/>
101 <#assign autoplay = 0/>
102 <object width="${flashWidth}" height="${flashHeight}">
103 <param name="allowfullscreen" value="true" />
104 <param name="allowscriptaccess" value="always" />
105 <param name="movie" value="//vimeo.com/moogaloop.swf?clip_id=${vimeoID}&server=vimeo.com&color=00adef&fullscreen=1&autoplay=${autoplay}" />
106 <embed src="//vimeo.com/moogaloop.swf?clip_id=${vimeoID}&server=vimeo.com&color=00adef&fullscreen=1"
107 type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" flashvars="autoplay=${autoplay}"
108 width="${flashWidth}" height="${flashHeight}">
109 </object>
110 <#-- pozostale typy-->
111 <#else>
112 <#assign autostart = "false"/>
113 <#assign flashPlayerUrl = "/uj-lift-theme/swf/jarisplayer.swf"/>
114 <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
115 codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,45,2"
116 width="${flashWidth}" height="${flashHeight}">
117
118 <param name="allowFullscreen" value="true">
119 <param name="allowScriptAccess" value="always">
120 <param name="movie" value="${flashPlayerUrl}">
121 <param name="bgcolor" value="#ffffff">
122 <param name="quality" value="high">
123 <param name="scale" value="noscale">
124 <param name="wmode" value="opaque">
125 <param name="flashvars" value="source=${flashUrl}&streamtype=${streamtype}&poster=${flashThumb}&autostart=${autostart}&&hardwarescaling=false&darkcolor=000000&brightcolor=4c4c4c&controlcolor=FFFFFF&hovercolor=67A8C1&controltype=1">
126 <param name="seamlesstabbing" value="false">
127
128 <embed
129 type="application/x-shockwave-flash"
130 pluginspage="//www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
131 width="${flashWidth}" height="${flashHeight}"
132 src="${flashPlayerUrl}"
133 allowfullscreen="true"
134 allowscriptaccess="always"
135 bgcolor="#ffffff"
136 quality="high"
137 scale="noscale"
138 wmode="opaque"
139 flashvars="source=${flashUrl}&streamtype=${streamtype}&poster=${flashThumb}&autostart=${autostart}&hardwarescaling=false&darkcolor=000000&brightcolor=4c4c4c&controlcolor=FFFFFF&hovercolor=67A8C1&controltype=1"
140 seamlesstabbing="false"
141 >
142 <noembed>
143 </noembed>
144 </embed>
145 </object>
146 </#if> <#-- end of checking streamtype-->
147 </#macro> <#-- end of macro flashMedia-->
148
149 <#assign langPublishedDate = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.published-date"))/>
150 <#assign langModifiedDate = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.modified-date"))/>
151 <#assign langDownloadFiles = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.download-files"))/>
152 <#assign langShowPhotogallery = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.show-photogallery"))/>
153 <#assign langShowPhotogalleryMore = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.show-photogallery-more"))/>
154 <#assign langPlayAudio = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.play-audio"))/>
155 <#assign langPlayVideo = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.play-video"))/>
156 <#assign langRecommended = htmlUtil.escape(languageUtil.get(locale, "uj-lift-theme.recommended"))/>
157
158<#---------Article variables--------->
159 <#assign articleId = .vars['reserved-article-id'].data/>
160 <#assign actualVersion = .vars['reserved-article-version'].data/>
161 <#assign article = journalArticleService.getArticle(longGroupId, articleId, getterUtil.getDouble(actualVersion))/>
162
163 <#assign
164 tytulData = ""
165 streszczenieData = ""
166 grafikaListaData = ""
167 naglowkiData = []
168 />
169
170 <#if (tytul.getData())??>
171 <#assign tytulData = tytul.getData()/>
172 <#assign tytulData = tytulData?replace("\"", """)/>
173 </#if>
174 <#if (streszczenie.getData())??>
175 <#assign streszczenieData = streszczenie.getData()/>
176 <#assign streszczenieData = streszczenieData?replace("\"", """)/>
177 </#if>
178 <#if (grafikaLista.getData())??>
179 <#assign grafikaListaData = grafikaLista.getData()/>
180 </#if>
181 <#if FieldsetNaglowek.getSiblings()??>
182 <#assign naglowkiData = FieldsetNaglowek.getSiblings()/>
183 </#if>
184 <#if (ukryjPolecane.getData())??>
185 <#assign ukryjPolecaneData = getterUtil.getBoolean(ukryjPolecane.getData())/>
186 </#if>
187<#----------------------------------------->
188<#-------------TRESC ARTYKUŁU-------------->
189<#----------------------------------------->
190
191 <section class="main-content" id="main-content" tabindex="-1">
192 <article class="article">
193 <#if tytulData?has_content>
194 <div class="page-sub-heading">
195 <h2 class="page-sub-heading__title">${tytulData}</h2>
196 </div>
197 </#if>
198 <div class="article__content">
199 <#if grafikaListaData?has_content>
200 <img class="thumb" src="${grafikaListaData}" alt="${tytulData}"/>
201 </#if>
202 <#if streszczenieData?has_content>
203 <p class="article__description">
204 ${streszczenieData}
205 </p>
206 </#if>
207 <#if naglowkiData?size gt 0>
208 <#list naglowkiData as naglowek>
209 <#if naglowek.naglowek.getData()?has_content>
210 <h3>${naglowek.naglowek.getData()}</h3>
211 </#if>
212 <#assign articleTresc = ""/>
213 <#if naglowek.tresc.getData()?has_content>
214 <#assign articleTresc = naglowek.tresc.getData()/>
215 </#if>
216 <#if articleTresc?has_content>
217 ${articleTresc}
218 </#if>
219 </#list>
220 </#if> <#-- end of checking naglowkis' size-->
221
222 <#----------------------------------------->
223 <#-----------POBIERANIE PLIKOW------------->
224 <#----------------------------------------->
225 <#assign plikiData = []/>
226 <#if FieldsetPlikDoPobrania.getSiblings()??>
227 <#assign plikiData = FieldsetPlikDoPobrania.getSiblings()/>
228 </#if>
229 <#assign nameOfFirstFile = plikiData[0].plikNazwa.getData()/>
230
231 <#if plikiData?size gt 0 && nameOfFirstFile?has_content>
232 <div class="article__section">
233 <div class="article__section-title">
234 <i class="icon icon-arrow">
235 </i>
236 <span class="article__section-title-text">${langDownloadFiles}</span>
237 </div>
238 <#list plikiData as plik>
239 <#assign adresPliku = ""/>
240 <#assign adresPliku = plik.plikAdres.getData()/>
241 <#if adresPliku?has_content>
242 <#assign adresPlikuArray = stringUtil.split(adresPliku, "/")/>
243 <#assign grupaPliku = adresPlikuArray[2]/>
244 <#assign katalogPliku = adresPlikuArray[3]/>
245
246<#-- <#assign grupaPliku = adresPliku?replace(".*documents/", "", "r")/> TODO do usuniecia jezeli po na splicie bedzie działać -->
247<#-- <#assign grupaPliku = grupaPliku?replace("/.*", "", "r")/>-->
248
249<#-- <#assign katalogPliku = adresPliku?replace("/documents/" + grupaPliku + "/", "")/>-->
250<#-- <#assign katalogPliku = katalogPliku?replace("/.*", "", "r")/>-->
251 <#assign katalogPliku = getterUtil.getLong(katalogPliku)/>
252 <#assign grupaPliku = getterUtil.getLong(grupaPliku)/>
253 <#assign file = ""/>
254 <#assign fileExtension = ""/>
255 <#if adresPliku?contains("documents/" + grupaPliku)>
256 <#assign tytulPliku = adresPlikuArray[4]/>
257<#-- <#assign tytulPliku = ""/>-->
258<#-- <#assign tytulPliku = adresPliku?replace("/documents/" + grupaPliku + "/" + katalogPliku + "/", "")/><#– TODO nie zadziała, rozbić na dwa? –>-->
259<#-- <#assign tytulPliku = tytulPliku?replace("/.*", "", "r")/>-->
260 <#assign indexOf = adresPliku?last_index_of("/") + 1/>
261 <#if indexOf gt 1>
262<#-- <#assign uuid = adresPliku?replace("/documents/" + grupaPliku + "/" + katalogPliku + "/" + tytulPliku + "/", "")/>-->
263<#-- <#assign uuid = uuid?replace("\\?.*", "", "r")/>-->
264 <#assign uuid = adresPlikuArray[5]?replace("\\?.*", "", "r")/>
265 </#if>
266 <#if uuid?has_content && uuid?length == 36>
267 <#assign file = fileEntryService.getFileEntryByUuidAndGroupId(uuid, grupaPliku)/>
268 <#else>
269 <#assign file = fileEntryService.getFileEntry(grupaPliku, katalogPliku, tytulPliku)/>
270 </#if>
271 <#else>
272 <#assign uuidPliku = adresPlikuArray[1]/>
273<#-- <#assign uuidPliku = adresPliku?replace(".*/(.*)", "", 'r')/> <#– -->
274 <#assign file = fileEntryService.getDLFileEntryByUuidAndGroupId(uuidPliku, grupaPliku)/>
275 </#if>
276 <#assign fileExtension = file.getExtension()/>
277 <#assign fileSize = file.getSize()/>
278
279 <div class="article__section-content article__section-content--download">
280 <a href="${adresPliku}" class="article__download-item">
281 <#if fileExtension?has_content && fileExtension?length gt 0>
282 <div class="article__download-item-icon">${fileExtension}</div>
283 </#if>
284 <#if plik.plikNazwa.getData()?has_content>
285 <div class="article__download-item-title">${plik.plikNazwa.getData()}</div>
286 </#if>
287 </a>
288 </div>
289 </#if>
290 </#list>
291 </div>
292 </#if>
293
294 <#----------------------------------------->
295 <#---------- VIDEOGALERIA----------------->
296 <#----------------------------------------->
297 <#assign videosData = []/>
298 <#if FieldsetMaterialWideo.getSiblings()??>
299 <#assign videosData = FieldsetMaterialWideo.getSiblings()/>
300 </#if>
301 <#assign dataOfFirstVideo = videosData[0].wideoUrl.getData()/>
302
303 <#if videosData?size gt 0 && dataOfFirstVideo?has_content>
304 <div class="article__section">
305 <div class="article__section-title">
306 <i class="icon icon-play">
307 </i>
308 <span class="article__section-title-text">${langPlayVideo} </span>
309 </div>
310
311 <#assign vidWidth = 930/>
312 <#assign vidHeight = 520/>
313
314 <#list videosData as vid>
315 <#assign vidTitle = vid.wideoTytul.getData()/>
316 <#assign vidUrl = vid.wideoUrl.getData()/>
317 <#assign vidAuthor = vid.wideoAutor.getData()/>
318 <#if vidUrl?has_content>
319 <#assign vidThumb = vid.wideoMiniatura.getData()/>
320 <#-- sprawdzenie jakiego typu jest film-->
321 <#if vidUrl?ends_with(".flv")>
322 <#assign streamtype = "file/">
323 <#elseif vidUrl?matches(".*youtu[.]*be.*")>
324 <#assign streamtype = "youtube"/>
325 <#elseif vidUrl?matches(".*vimeo.*")>
326 <#assign streamtype = "vimeo"/>
327 <#else>
328 <#assign streamtype = "http"/>
329 </#if>
330 <div class="article__section-content article__section-content--video">
331 <#if vidTitle?has_content && vidTitle?length gt 0>
332 <h3>
333 ${vidTitle}
334 </h3>
335 <#if vidAuthor?has_content>
336 <span>
337 <i>/${languageUtil.get(locale, "author")?lower_case}: ${vidAuthor}/</i>
338 </span>
339 </#if>
340 </#if>
341 <#if streamtype == "youtube">
342 <div class="video">
343 <video controls width="${vidWidth}" height="${vidHeight}" poster="${vidThumb}" style="width: 100%; height: 100%;" id="player1" preload="none">
344 <!-- Pseudo HTML5 -->
345 <source type="video/youtube" src="${vidUrl}" />
346 </video>
347 <span id="player1-mode">
348 </span>
349
350 </div>
351 <#-- koniec class=video-->
352 </#if>
353 <div class="placeholder"></div>
354 </div> <#-- end of .article__section-content article__section-content--video-->
355 </#if>
356 </#list> <#-- end of list videos-->
357 </div> <#-- END OF article_section-->
358 </#if><#-- END OF wideogalerii-->
359
360 <#----------------------------------------->
361 <#---------------AUDIOGALERIA-------------->
362 <#----------------------------------------->
363 <#assign audiosData = []/>
364 <#if FieldsetMaterialAudio.getSiblings()??>
365 <#assign audiosData = FieldsetMaterialAudio.getSiblings()/>
366 </#if>
367 <#assign dataOfFirstAudio = audiosData[0].audioTytul.getData()/>
368
369 <#if audiosData?size gt 0 && dataOfFirstAudio?has_content>
370 <div class="article__section">
371 <div class="article__section-title">
372 <i class="icon icon-sound"></i>
373 <span class="article__section-title-text">${langPlayAudio}</span>
374 </div>
375 <#assign audWidth = 930/>
376 <#assign audHeight = 40/>
377 <#list audiosData as aud>
378 <#assign audTitle = aud.audioTytul.getData()/>
379 <#if audTitle?has_content>
380 <#assign audThumb = aud.audioMiniatura.getData()/>
381 <#assign audUrl = aud.audioUrl.getData()/>
382 <#assign audAuthor = aud.audioAutor.getData()/>
383 <#assign streamType = "http"/>
384 <div class="article__section-content article__section-content--audio">
385 <#-- obsluga vimeo-->
386 <#if audTitle?has_content>
387 <h4>${audTitle}</h4>
388 </#if>
389
390 <audio controls="true">
391 <source src="${audUrl}" type="audio/mp3" />
392 <@flashMedia flashWidth=audWidth flashHeight=audHeight streamType=streamType flashUrl=audUrl flashThumb=audThumb flashTitle=audTitle/>
393 </audio>
394 <div class="placeholder"></div>
395 </#if>
396 </#list> <#-- koniec list-->
397 </div> <#-- end of div.article__section-content article__section-content--audio-->
398 </div> <#-- end of article__section-->
399 </#if> <#-- end of audios-->
400 </div> <#-- END OF article__content-->
401
402 <#assign folderyData = []/>
403 <#if FieldsetGaleria.getSiblings()??>
404 <#assign folderyData = FieldsetGaleria.getSiblings()/>
405 </#if>
406
407 <#assign galleryCount = 1/>
408 <#list folderyData as folder>
409 <#assign sciezka = folder.folderGalerii.getData()/>
410 <#if sciezka?has_content>
411 <#assign autorGalerii = folder.autorGalerii.getData()/>
412 <#assign opisGalerii = folder.opisGalerii.getData()/>
413 <#assign sciezka = sciezka?split("/")/>
414 <#assign folderId = getterUtil.getLong("0")/>
415 <#assign poprzedniFolderId = folderId/>
416 <#assign niepoprawnaSciezka = false/>
417 <#list sciezka as nazwa>
418 <#attempt>
419 <#assign folderId = folderService.getFolder(longGroupId, folderId, nazwa).getFolderId() />
420 <#recover>
421 <#-- folder nie istnieje, pomijamy -->
422 <#assign folderId = 0 />
423 </#attempt>
424 <#if poprzedniFolderId == folderId>
425 <#assign niepoprawnaSciezka = true/>
426 <#break>
427 </#if>
428 <#assign poprzedniFolderId = folderId/>
429 </#list>
430 <#if niepoprawnaSciezka == true>
431 <#-- Sciezka do folderu '${folder.data}' JEST NIEPOPRAWNA lub NIE ISTNIEJE -->
432 <#else>
433 <#-- WorkflowConstants.STATUS_IN_TRASH = 8 - exclude-->
434 <#assign obrazki = ""/>
435 <#-- <#assign filesOrderBy = OrderByComparatorFactoryUtil.create("DLFileEntry", ["title", true])/>-->
436 <#assign obrazki = fileEntryService.getFileEntries(longGroupId, folderId, 0, 0, 50, filesOrderBy)?sort_by('title')/> <#-- TODO sprawdzić czy działa sortowanie-->
437 <#assign iloscObrazkow = obrazki?size/>
438 </#if>
439 </#if>
440
441 <#if obrazki?has_content && iloscObrazkow?has_content && iloscObrazkow gt 0>
442 <#assign wysokoscBoku = 200/>
443 <div class="article__section">
444 <div class="article__section-title">
445 <i class="icon icon-camera">
446 </i>
447 <span class="article__section-title-text">${langShowPhotogallery}<#if folderyData?size gt 1>(${galleryCount})</#if>
448 </span>
449 </div>
450
451 <#-- PHOTOGALLERY FOR WIDTH < 470-->
452 <div id="article__gallery-items-justified-mobile" class="hidden">
453 <#assign counter = 0/>
454 <#list obrazki as fileEntry>
455 <#assign counter = counter + 1/>
456 <#assign tytul = ""/>
457 <#assign fotka = "/image/image_gallery?uuid=" + fileEntry.getUuid() + "&groupId=" + longGroupId/>
458 <#assign miniatura = fotka + "&width=470&suffix=s"/> <#-- dla komórek-->
459 <#assign obrazek = "/documents/" + fileEntry.getGroupId() + "/" + fileEntry.getFolderId() + "/" + fileEntry.getTitle()/>
460 <img class="jsGalleryItem <#if counter gt 1> hidden </#if>" src="${miniatura}"
461 <#if currentLanguageId == "pl_PL">
462 alt="Zdjęcie nr ${counter} (${iloscObrazkow})
463 <#else>
464 alt="Photo no. ${counter} (${iloscObrazkow})
465 </#if>
466 <#if fileEntry.getDescription()?has_content>
467 ${fileEntry.getDescription()}
468 <#elseif autorGalerii?has_content>
469 <#if currentLanguageId == "pl_PL">fot.<#else> by </#if>${autorGalerii}
470 </#if>
471 ">
472 </#list>
473 <div id="addImgs" class="added-block jsGalleryShowMore">
474 <span>${langShowPhotogalleryMore}</span>
475 </div>
476 </div>
477
478 <#-- PHOTOGALLERY FOR WIDTH >= 470-->
479 <div id="article__gallery-items-justified" class="hidden">
480 <#assign counter = 0/>
481 <#list obrazki as fileEntry>
482 <#assign counter = counter + 1/>
483 <#assign tytul = ""/>
484 <#assign fotka = "/image/image_gallery?uuid=" + fileEntry.getUuid() + "&groupId=" + longGroupId/>
485 <#assign miniatura = fotka + "&height=" + wysokoscBoku + "&suffix=s"/>
486 <#assign obrazek = "/documents/" + fileEntry.getGroupId() + "/" + fileEntry.getFolderId() + "/" + fileEntry.getFileName()/>
487 <a href="${obrazek}" class="jsGalleryItem"
488 title=" <#if fileEntry.getDescription()?has_content>
489 ${fileEntry.getDescription()}
490 <#elseif opisGalerii?length gt 0>
491 ${opisGalerii}
492 </#if>"
493 rel="gallery${galleryCount}" data-fancybox="images">
494 <img src="${miniatura}"
495 <#if currentLanguageId == "pl_PL"> alt="Zdjęcie nr ${counter} (${iloscObrazkow})
496 <#else> alt="Photo no. ${counter} (${iloscObrazkow})
497 </#if>
498 <#if autorGalerii?has_content>
499 <#if currentLanguageId == "pl_PL">fot.<#else> by</#if> ${autorGalerii}
500 </#if>">
501 </a>
502
503 </#list>
504 </div>
505
506 </div> <#-- end of .article__section-->
507 </#if>
508 <#assign galleryCount = galleryCount + 1/>
509 </#list> <#-- koniec iteracji po folderach-->
510
511 <#------------------------------------------------------------------->
512 <#--------tags and categories from the current journalArticle-------->
513 <#------------------------------------------------------------------->
514 <#assign article = journalArticleService.getArticle(longGroupId, articleId)/>
515 <#assign artPrimKey = article.getResourcePrimKey()/>
516 <#assign model = "com.liferay.journal.model.JournalArticle"/>
517 <#assign asset = assetEntryService.getEntry(model, artPrimKey)/>
518 <#assign categories = assetCategoryService.getCategories(model, getterUtil.getLong(asset.getClassPK()))/>
519 <#assign tags = assetTagService.getTags(model, getterUtil.getLong(asset.getClassPK()))>
520 <#assign portalUrl = themeDisplay.getPortalURL()/>
521
522 <#---------- sprawdzenie czy strona z agregatorem istnieje -------->
523 <#assign adresyStron = ["/lista", "/aktualnosci", "/wiadomosci", "/list", "/news", "/articles", "/testy/aktualnosci"]/>
524 <#assign aggregatorLayout = ""/>
525
526 <#list adresyStron as adresStrony>
527<#-- <#assign checkedLayout = layoutService.fetchFriendlyURLLayout(longGroupId, false, adresStrony)/>-->
528
529 <#if layoutService.fetchLayoutByFriendlyURL(longGroupId, false, adresStrony)??>
530 <#assign aggregatorLayout = layoutService.fetchLayoutByFriendlyURL(longGroupId, false, adresStrony)/>
531 </#if>
532
533
534 <#if aggregatorLayout?has_content && aggregatorLayout.getPlid()?has_content>
535 <#break>
536 </#if>
537 </#list>
538
539 <#if aggregatorLayout?has_content && aggregatorLayout.getPlid()?has_content>
540 <#assign aggregatorFriendlyUrl = aggregatorLayout.getFriendlyURL()/>
541 <#if currentRenderUrl?has_content && currentRenderUrl?contains("web/")>
542 <#assign vhostAndFriendlyUrl = themeDisplay.getURLCurrent()?replace('(/web/.*?)[\\/\\?].*', '$1', 'r') />
543 <#assign aggregatorFriendlyUrl = vhostAndFriendlyUrl + aggregatorFriendlyUrl/>
544 </#if> <#-- of contains 'web/'-->
545 <#assign adresListyAktualnosci = portalUrl + aggregatorFriendlyUrl />
546
547<#-- <#if longGroupIdFromRequest == longGroupId && adresListyAktualnosci?length gt 0 && (tags?size gt 1 || (tags?size == 1 && tags[0].getName() != "polska"))>-->
548<#-- <div class="article__tags">-->
549<#-- ${languageUtil.get(locale, "tags")}:-->
550<#-- <ul class="article__tags-list">-->
551<#-- <#list tags as tag>-->
552<#-- <#if tag.getName() != "polska">-->
553<#-- <li>-->
554<#-- <a href="${httpComponentsUtil.addParameter(adresListyAktualnosci, "tagId", tag.getTagId())}">${tag.getName()}</a><#if tags?seq_index_of(tag) + 1 != tags?size>, </#if>-->
555<#-- </li>-->
556<#-- </#if>-->
557<#-- </#list>-->
558<#-- </ul>-->
559<#-- </div>-->
560<#-- </#if> end of checking tags' size-->
561 </#if> <#-- end of checking whether aggregatorLayout exists-->
562
563 <#assign dataWyswietlana = dataWyswietlana.getData()/>
564 <#assign autorWyswietlany = autorWyswietlany.getData()/>
565
566 <#assign timeZone = timeZoneUtil.getTimeZone("Europe/Warsaw")/>
567 <#if dataWyswietlana?has_content && dataWyswietlana != "brak" || autorWyswietlany?has_content && autorWyswietlany != "brak">
568 <div class="article__date">
569 </#if>
570 <#if !dataWyswietlana?has_content || dataWyswietlana == "brak">
571 <#else>
572 <#if dataWyswietlana == "data_publikacji">
573 ${langPublishedDate} ${dateUtil.getDate(article.getDisplayDate(), "dd/MM/yyyy", locale, timeZone)}
574 <#elseif dataWyswietlana == "data_modyfikacji">
575 ${langModifiedDate} ${dateUtil.getDate(article.getModifiedDate(), "dd/MM/yyyy", locale, timeZone)}
576 </#if>
577 </#if><#-- of checking if data wyswietlana-->
578 <#if !autorWyswietlany?has_content || autorWyswietlany == "brak">
579 <#else>
580 <#if autorWyswietlany == "osoba_publikujaca">
581 <#assign oldestArticle = journalArticleService.getArticle(longGroupId, articleId, getterUtil.getDouble(1))/>
582 <#if dataWyswietlana?has_content && dataWyswietlana != "brak">-</#if>
583 ${oldestArticle.getUserName()}
584 <#elseif autorWyswietlany == "osoba_modyfikujaca">
585 <#if dataWyswietlana?has_content && dataWyswietlana != "brak">-</#if>
586 ${article.getStatusByUserName()}
587 </#if>
588 </#if> <#-- of checking if datawyswietlana-->
589 <#if dataWyswietlana?has_content && dataWyswietlana != "brak" || autorWyswietlany?has_content && autorWyswietlany != "brak">
590 </div>
591 </#if>
592
593 <#--------------------------------------------------------------------------------------------------------------->
594 <#--------list of journalArticles' thumbs selected on the basis of tags used in the active journalArticle-------->
595 <#--------------------------------------------------------------------------------------------------------------->
596 <#if aggregatorLayout?has_content && aggregatorLayout.getPlid()?has_content>
597 <#if !ukryjPolecaneData>
598 <#assign emptyNames = []/>
599 <#assign emptyIds = []/>
600 <#-- wyekstrahować skrócone friendly-url z bieżacej strony!!!!-->
601 <#assign currentPlid = themeDisplay.getPlid()/>
602 <#assign currentLayout = layoutService.getLayout(currentPlid)/>
603 <#assign currentFriendlyUrl = currentLayout.getFriendlyURL()/>
604 <#assign aggregatorLayoutType = aggregatorLayout.getLayoutType()/>
605 <#assign portletsInRightColumn = aggregatorLayoutType.getAllPortlets("column-3")/>
606
607 <#if portletsInRightColumn?has_content && portletsInRightColumn?size gt 0>
608 <#assign aggregatorPortletId = portletsInRightColumn[0].getPortletId()/>
609 <#else>
610 <span class="alert alert-warn">Błąd w kompozycji strony docelowej dla modułu "Polecamy również".
611 Prosimy zgłosić ten problem <a href="mailto:${.vars['reserved-article-author-email-address'].data}?subject=Zgloszenie%20bledu%20na%20stronie&bcc=portal@uj.edu.pl&body=Prosze%20poprawic%20modul%20'Polecamy%20równiez'%20przypisany%20do%20articleId:${articleId},%20groupId:${groupId}%20Bład%20kompozycji%20strony:%20${adresListyAktualnosci}">osobie publikującej</a>
612 </span>
613 </#if>
614
615 <#if aggregatorPortletId?has_content && aggregatorPortletId?length gt 0 && (categories?has_content && categories?size gt 1)>
616 <#-- ---- Tag ----->
617 <#assign tagNames = emptyNames/>
618 <#assign omitTagNames = emptyNames/>
619 <#assign articleTagIds = ujCustomAssetHelper.getTagIds(longGroupId, tagNames)/>
620 <#assign omitTagIds = getterUtil.getLongValues([])/>
621 <#-- ---- Category ----->
622 <#assign categoryNames = emptyNames/>
623 <#assign omitCategoryNames = emptyNames/>
624 <#list categories as category>
625 <#assign categoryNames = categoryNames + [category.getName()]/>
626 </#list>
627
628 <#assign articleCategoryIds = ujCustomAssetHelper.getCategoryIds(longGroupId, categoryNames)/>
629 <#assign omitCategoryIds = getterUtil.getLongValues([])/>
630
631 <#-- Articles list-->
632 <#assign articleType = ujCustomAssetHelper.getArticleType(asset) />
633 <#assign assetsCount = ujCustomAssetHelper.getAssetsFromGroupCount(longGroupId, articleType, articleCategoryIds, omitCategoryIds, articleTagIds, omitTagIds, null, null, null, null, .now?date)/>
634
635 <#if assetsCount gt 1>
636 <#assign indeksPoczatkowy = 0/>
637 <#assign indeksKoncowy = 5/>
638
639 <#assign assets = ujCustomAssetHelper.getAssetsFromGroup(longGroupId, articleType, articleCategoryIds, omitCategoryIds, articleTagIds, omitTagIds, "publishDate", "title", "DESC", "ASC", null, null, null, null, .now?date, indeksPoczatkowy, indeksKoncowy)/>
640
641 <div class="article__section-title">
642 <span class="article__section-title-text">${langRecommended}</span>
643 </div>
644
645 <div class="article__related-posts">
646 <#assign count = 0/>
647
648 <#list assets as a>
649 <#if count lt 4>
650 <#assign art = ""/>
651 <#assign artId = ""/>
652 <#assign artTitle = ""/>
653 <#assign artPublishDate = ""/>
654 <#assign artDescription = ""/>
655 <#assign artImgUrl = ""/>
656
657 <#assign artResource = journalArticleResourceService.getArticleResource(a.getClassPK())/>
658 <#assign artId = artResource.getArticleId() />
659 <#assign art = journalArticleService.getArticle(artResource.getGroupId(), artId) />
660 <#assign artStructureValue = ujJournalArticleHelper.getFormValues(art, portletRequest) />
661
662 <#if artId != article.getArticleId()> <#-- when journalsArticles' list contains active Article -->
663 <#assign count = count + 1 />
664 <#if !artStructureValue["tytul"]??>
665 <#assign artTitle = art.getTitle() />
666 <#else>
667 <#assign artTitle = artStructureValue["tytul"] />
668
669 </#if>
670 <#assign artTitle = artTitle?replace("\\\"", """, "r") /> <#-- TODO sprawdzic czy działa replace -->
671
672 <#assign imgDescription = "" />
673 <#if !artStructureValue["grafikaLista"]?? || !artStructureValue["grafikaLista"]?has_content || artStructureValue["grafikaLista"] == "{}">
674 <#assign imgUrl = sciezkaObrazkow + "/default_thumbs/ujThemeArticleList-300x230.jpg" />
675 <#else>
676<#-- <#assign imgDescription = ujDocumentLibraryHelper.getFileEntry(artStructureValue["grafikaLista"]).getDescription() />-->
677 <#assign imgUrl = ujDocumentLibraryHelper.getFileEntryDownloadURL(artStructureValue["grafikaLista"]) />
678 </#if>
679
680 <#assign adres = adresListyAktualnosci + "/-/journal_content/" + aggregatorPortletId + "/" + longGroupId + "/" + artId >
681 <a href="${adres}" title="${artTitle}" class="article__related-post">
682 <div class="article__related-post-image">
683 <img src="${imgUrl}" alt="<#if imgDescription?has_content>${imgDescription}<#else>${artTitle}</#if>">
684 </div>
685 <div class="article__related-post-text">
686 ${artTitle}
687 </div>
688 </a>
689 </#if> <#-- end of checking duplicated -->
690 </#if> <#-- end of checking if < 4-->
691 </#list> <#-- end of list assets-->
692 </div> <#-- end of div.article__related-posts-->
693 </#if> <#-- end of checking if related articles exist-->
694 </#if> <#-- end of checking if tags and categories exists in actual article-->
695 </#if> <#-- end of checking if 'ukryj-polecane' is hidden-->
696 </#if> <#-- end of checking if correct aggregatorLayout exist-->
697 </article>
698 </section>
699
700<#-- scripts-->
701 <script type="text/javascript" src="/o/uj-lift-theme/js/vendors/jquery.justifiedGallery.min.js"></script>
702
703 <script type="text/javascript">
704
705 jQuery(document).ready(function() { // runs after DOM has loaded
706
707 var vid_w = jQuery(window).width();
708
709 /* photogallery */
710
711 var gallery = jQuery("div#article__gallery-items-justified");
712 var galleryMobile = jQuery("div#article__gallery-items-justified-mobile");
713
714
715 if (vid_w>470) {
716 gallery.removeClass("hidden");
717 }
718 else {
719 galleryMobile.removeClass('hidden');
720 }
721
722 gallery.justifiedGallery({
723 lastRow:'nojustify',
724 rowHeight: 140,
725 margins: 4,
726 justifyThreshold: 0.75,
727 imagesAnimationDuration: 300,
728 sizeRangeSuffixes: {
729 lt100 : '_t',
730 lt240 : '_m',
731 lt320 : '_n',
732 lt500 : '',
733 lt640 : '_z',
734 lt1024 : '_b'
735 },
736 captions: true,
737 cssAnimation: false,
738 captionSettings: {
739 animationDuration: 500,
740 visibleOpacity: 0.7,
741 nonVisibleOpacity: 0.0
742 }
743 });
744
745
746
747 gallery.on('jg.complete', function (e) {
748
749 jQuery('a.jsGalleryItem').fancybox({
750
751 padding: 10,
752 margin: 20,
753 groupAttr: 'data-rel',
754 beforeShow: function() {
755
756 var title = this.element.attr('title');
757 var alt = this.element.find('img').attr('alt');
758
759 if(title.length>1 && alt.length>1) {this.title = '<span class="image-alt">' + alt + '</span>' + '<span class="gallery-title">' + title + '</span>'; }
760 else if(title.length>1) {this.title = '<span class="gallery-title-solo">' + title + '</span>'; }
761 else if(alt.length>1) {this.title = '<span class="image-alt-solo">' + alt + '</span>'; }
762 else this.title = '';
763 },
764
765 tpl: {
766 closeBtn: '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"><span><#if currentLanguageId=="pl_PL">Zamknij<#else> Close</#if></span></a>'
767 }
768
769 });
770
771 });
772
773 jQuery('#addImgs').on('click', function () {
774 jQuery("#article__gallery-items-justified-mobile img.jsGalleryItem").removeClass('hidden');
775 jQuery(this).hide();
776
777 });
778
779
780 /* end of photogallery */
781
782
783 /* checking whether browser enables html5 video */
784 if (Modernizr.video) {
785
786 console.clear();
787 videos = document.querySelectorAll("video");
788 for (var i = 0, l = videos.length; i < l; i++) {
789 var video = videos[i];
790 var src = video.src || (function () {
791 var sources = video.querySelectorAll("source");
792 for (var j = 0, sl = sources.length; j < sl; j++) {
793 var source = sources[j];
794 var type = source.type;
795 var isMp4 = type.indexOf("mp4") != -1;
796 if (isMp4) return source.src;
797 }
798 return null;
799 })();
800 if (src) {
801 var isYoutube = src && src.match(/(?:youtu|youtube)(?:\.com|\.be)\/([\w\W]+)/i);
802 if (isYoutube) {
803 var id = isYoutube[1].match(/watch\?v=|[\w\W]+/gi);
804 id = (id.length > 1) ? id.splice(1) : id;
805 id = id.toString();
806 var mp4url = "//www.youtubeinmp4.com/redirect.php?video=";
807 video.src = mp4url + id;
808 }
809 }
810 }
811
812 var allHtmlVideos = jQuery('video');
813
814 allHtmlVideos.each(function() {
815
816 /* enabled video html5 on android*/
817 jQuery(this).click(function(){
818 jQuery(this).play();
819 },false);
820
821
822 scale = this.height / this.width;
823
824 /* RWD video player width */
825 jQuery(this)
826 // jQuery .data does not work on object/embed elements
827 .attr('data-aspectRatio', scale)
828 .attr('w_orig', this.width)
829 .attr('h_orig', this.height)
830
831 // First time scale - fit to viewports
832 if (vid_w < 960){
833 jQuery(this).width(vid_w - 40);
834 jQuery(this).height((vid_w - 40) * scale);
835 }
836 else if (vid_w > 960 && vid_w < 1170){
837 jQuery(this).width(0.75*vid_w - 40);
838 jQuery(this).height((0.75*vid_w - 40) * scale);
839 }
840
841 });
842
843
844 var allHtmlAudios = jQuery('audio');
845
846 allHtmlAudios.each(function() {
847
848 jQuery(this)
849 // jQuery .data does not work on object/embed elements
850 .attr('w_orig', 930)
851
852 // html5video scaling fit to viewports
853 if (vid_w < 960){
854 jQuery(this).width(vid_w - 40);
855 }
856 else if (vid_w > 960 && vid_w < 1170){
857 jQuery(this).width(0.75*vid_w - 40);
858 }
859 else if (vid_w > 1170){
860 jQuery(this).width(930);
861 }
862
863
864 });
865
866
867 }
868 // end of checkinf if Modernizr.video
869
870
871
872 /* RWD flash video - now for everyvideo */
873
874 var allFlashVideos = jQuery("object, embed");
875
876 allFlashVideos.each(function() {
877
878 scale = this.height / this.width;
879
880 jQuery(this)
881 // jQuery .data does not work on object/embed elements
882 .attr('data-aspectRatio', scale)
883 .attr('w_orig', this.width)
884 .attr('h_orig', this.height)
885 .removeAttr('height')
886 .removeAttr('width');
887
888 // First time scale - fit to viewports
889 if (vid_w < 960){
890 jQuery(this).width(vid_w - 40);
891 jQuery(this).height((vid_w - 40) * scale);
892 }
893 else if (vid_w > 960 && vid_w < 1170){
894 jQuery(this).width(0.75*vid_w - 40);
895 jQuery(this).height((0.75*vid_w - 40) * scale);
896 }
897 else if (vid_w > 1170){
898 jQuery(this).width(jQuery(this).attr('w_orig'));
899 jQuery(this).height(jQuery(this).attr('h_orig'));
900 }
901
902 });
903
904
905 // scale when resize - fit to viewports
906 jQuery(window).resize(function () {
907
908 /* css clearing style when user resize */
909 if(this.resizeSTYLE) clearTimeout(this.resizeSTYLE);
910 jQuery('body').addClass('resizing');
911 this.resizeSTYLE = setTimeout(function() {
912 jQuery('body').removeClass('resizing');
913 },520); // delay
914
915 if (Modernizr.video){
916 resizeToCover('htmlVideo', allHtmlVideos);
917 resizeToCover('htmlAudio', allHtmlAudios);
918 }
919
920 resizeToCover('flashVideo', allFlashVideos);
921 });
922
923
924 function resizeToCover(mediaType, allElements) {
925
926 vid_w = jQuery(window).width();
927
928 // html5 video scaling fit to viewports
929 allElements.each(function() {
930 var el = jQuery(this);
931 var elPlaceholder = jQuery(this).parent().find('.placeholder');
932 var w, h;
933
934 // html5video scaling fit to viewports
935 if (vid_w < 960){
936 w = vid_w - 40;
937 h = (vid_w - 40) * el.attr('data-aspectRatio');
938 }
939 else if (vid_w > 960 && vid_w < 1170){
940 w = 0.75 * vid_w - 40;
941 h = (0.75 * vid_w - 40) * el.attr('data-aspectRatio');
942 }
943 else if (vid_w > 1170){
944 w = el.attr('w_orig');
945 h= el.attr('h_orig');
946 }
947
948 el.width(w);
949 el.height(h);
950 elPlaceholder.width(w);
951 elPlaceholder.height(h);
952 });
953 } // end of function resizeToCover
954 });
955
956 </script>
957
958 <script type="text/javascript" src="/o/uj-lift-theme/external-library/mediaPlayer/mediaelement-and-player.min.js"></script>
959
960 <script>
961 jQuery('video').mediaelementplayer({
962 success: function(media, node, player) {
963 jQuery('#' + node.id + '-mode').html('mode: ' + media.pluginType);
964 }
965 });
966 </script>
967<#else>
968 <#if permissionChecker.getUserId() gt 100000>
969 <p>Ten szablon przeznaczony jest tylko dla dedykowanej skórki UJ</p>
970 </#if>
971</#if>