Wolne miejsca na staż na dzień 10.04.2026 r.
Wolne miejsca na staż na dzień 10.04.2026 r. Sposób aplikowania: Złożyć CV bezpośrednio do Pracodawcy.
The following has evaluated to null or missing:
==> assetRenderer.getArticle [in template "10202#10240#31273065" at line 31, column 50]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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: journalArticle = assetRenderer.getArt... [in template "10202#10240#31273065" in macro "getArticle" at line 31, column 33]
- Reached through: @getArticle entry=entry [in template "10202#10240#31273065" at line 16, column 15]
----
1<#if !entries?has_content>
2 <#if !themeDisplay.isSignedIn()>
3 ${renderRequest.setAttribute("PORTLET_CONFIGURATOR_VISIBILITY", true)}
4 </#if>
5 <div class="alert alert-info">
6 <@liferay_ui["message"] key="there-are-no-results" />
7 </div>
8<#else>
9 <#assign
10 dateFormat = "dd.MM.yyyy"
11 journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
12 />
13 <div class="nnk-article-list d-flex flex-wrap flex-column gy-5 flex-sm-row">
14 <#list entries as entry>
15 <#if entry.getAssetRenderer()??>
16 <@getArticle entry=entry />
17 </#if>
18 </#list>
19 </div>
20</#if>
21
22<#macro getArticle entry>
23 <#assign
24 entry = entry
25 assetRenderer = entry.getAssetRenderer()
26 entryTitle = htmlUtil.escape(assetRenderer.getTitle(locale))
27 summary = assetRenderer.getSummary(renderRequest, renderResponse.getResponse())
28 viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse.getResponse(), assetRenderer, entry, !stringUtil.equals(assetLinkBehavior, "showFullContent"))
29 imageUrl = assetRenderer.getURLImagePreview(renderRequest)!""
30 imageAlt = ""
31 journalArticle = assetRenderer.getArticle()
32 smallImageSource = journalArticle.getSmallImageSource()
33 smallImageId = journalArticle.getSmallImageId()
34 />
35 <#if smallImageSource == 2 && smallImageId??>
36 <#attempt>
37 <#assign dlAppLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") />
38 <#assign fileEntry = dlAppLocalService.getFileEntry(smallImageId) />
39 <#assign imageAlt = extendedFileEntryLocalService.getAlt(fileEntry, locale) />
40 <#recover>
41 <#assign imageAlt = "" />
42 </#attempt>
43 </#if>
44 <#if !summary?has_content>
45 <#attempt>
46 <#assign
47
48 journalArticleDisplay = journalArticleLocalService.getArticleDisplay(journalArticle.getGroupId(), journalArticle.getArticleId(), "", l, themeDisplay)
49 articleContent = journalArticleDisplay.getContent()
50 summary = htmlUtil.stripHtml(articleContent)
51 />
52 <#recover>
53 <#assign
54 journalArticle = assetRenderer.getArticle()
55 />
56 </#attempt>
57 </#if>
58
59 <#if !summary?has_content>
60 <#attempt>
61 <#assign
62 journalArticle = assetRenderer.getArticle()
63 journalArticleDisplay = journalArticleLocalService.getArticleDisplay(journalArticle.getGroupId(), journalArticle.getArticleId(), "", l, themeDisplay)
64 articleContent = journalArticleDisplay.getContent()
65 summary = htmlUtil.stripHtml(articleContent)
66 />
67 <#recover>
68 <#assign
69 journalArticle = assetRenderer.getArticle()
70 />
71 </#attempt>
72 </#if>
73
74 <#if imageUrl?has_content>
75 <#assign contentMaxLength = 200 />
76 <#else>
77 <#assign contentMaxLength = 350 />
78 </#if>
79
80 <div class="row">
81 <#if imageUrl?has_content>
82 <div class="nnk_article-list-image col-12 col-lg-4 p-0 m-0 text-center align-self-center">
83 <img src="${imageUrl}"
84 class="nnk-article-list-article-img img-fluid rounded"
85 alt="${imageAlt!''}">
86 </div>
87 <div class="nnk-article-list-article-content col-12 col-lg-8 px-0 px-lg-3 align-self-start">
88 <#else>
89 <div class="nnk-article-list-article-content col-12 p-0">
90 </#if>
91
92 <@getEditIcon />
93
94 <span class="nnk-article-list-article-publish-date text-3">
95 ${dateUtil.getDate(entry.getPublishDate(), dateFormat, locale)}
96 </span>
97
98 <div class="nnk-article-link-underline">
99 <a href="${viewURL}">
100 <h3 class="my-2 text-5">${entryTitle}</h3>
101 </a>
102
103 <div class="nnk-article-list-article-metadata pb-3">
104 <@getMetadataField fieldName = "create-date" />
105 <@getMetadataField fieldName = "author" />
106 <@getMetadataField fieldName = "modified-date" />
107 <@getMetadataField fieldName = "expiration-date" />
108 <@getMetadataField fieldName = "view-count" />
109 <@getMetadataField fieldName = "tags" />
110 <@getMetadataField fieldName = "categories" />
111 </div>
112
113 <div class="nnk-article-list-article-summary">
114 <p>
115 ${stringUtil.shorten((summary?replace("\\s\\&imagePreview=1", "", "r")), contentMaxLength)}
116 </p>
117 </div>
118 </div>
119 </div>
120 </div>
121</#macro>
122
123<#macro getEditIcon>
124 <#attempt>
125 <#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())>
126 <#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse.getResponse(), windowStateFactory.getWindowState("NORMAL"), themeDisplay.getURLCurrent())!"" />
127
128 <#if validator.isNotNull(editPortletURL)>
129 <#assign title = languageUtil.format(locale, "edit-x", htmlUtil.escape(assetRenderer.getTitle(locale)), false) />
130 <@liferay_ui["icon"]
131 cssClass="icon-monospaced visible-interaction float-right"
132 icon="pencil"
133 markupView="lexicon"
134 message=title
135 url=editPortletURL.toString()
136 />
137 </#if>
138 </#if>
139 <#recover>
140 </#attempt>
141</#macro>
142
143<#macro getMetadataField fieldName>
144 <#if stringUtil.split(metadataFields)?seq_contains(fieldName)>
145 <span class="nnk-article-list-article-metadata-entry metadata-${fieldName} text-3">
146 <#assign dateFormat = "dd.MM.yyyy" />
147
148 <#if stringUtil.equals(fieldName, "author")>
149 <@liferay.language key="nnk.asset.publisher.info.author"/>
150 <strong>
151 <#attempt>
152 <#assign authorName = extendedJournalArticleLocalService.getArticleFieldValue(entry.getClassPK(), "author", themeDisplay.getLanguageId()) />
153 <#recover>
154 <#assign authorName = "" />
155 </#attempt> <#if authorName?has_content>
156 ${authorName}
157 <#else>
158 ${htmlUtil.escape(portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName()))}
159 </#if>
160 </strong>
161 <br/>
162
163 <#elseif stringUtil.equals(fieldName, "modified-date")>
164 <@liferay.language key="nnk.asset.publisher.info.modified"/>
165 <strong>${entry.getModifiedDate()?string(dateFormat)}</strong>
166 <br/>
167
168 <#elseif stringUtil.equals(fieldName, "publish-date")>
169 <@liferay.language key="nnk.asset.publisher.info.published"/>
170 <strong>${entry.getPublishDate()?string(dateFormat)}</strong>
171 <br/>
172
173 <#elseif stringUtil.equals(fieldName, "create-date")>
174 <@liferay.language key="nnk.asset.publisher.info.created"/>
175 <strong>${entry.getCreateDate()?string(dateFormat)}</strong>
176 <br/>
177
178 <#elseif stringUtil.equals(fieldName, "expiration-date")>
179 <@liferay.language key="nnk.asset.publisher.info.expired"/>
180 <#if entry.getExpirationDate()?has_content>
181 <strong>${entry.getExpirationDate()?string(dateFormat)}</strong>
182 </#if>
183 <br/>
184
185 <#elseif stringUtil.equals(fieldName, "view-count")>
186 <@liferay.language key="nnk.asset.publisher.info.views"/>
187 <strong>${entry.getViewCount()}</strong>
188 <br/>
189
190 <#elseif stringUtil.equals(fieldName, "tags") && entry.getTags()?has_content>
191 <span class="metadata-main-label"><@liferay_ui["message"] key="tags" />:</span>
192 <@liferay_asset["asset-tags-summary"]
193 className=entry.getClassName()
194 classPK=entry.getClassPK()
195 portletURL=renderResponse.createRenderURL()
196 />
197
198 <#elseif stringUtil.equals(fieldName, "categories") && entry.getCategories()?has_content>
199 <span class="metadata-main-label"><@liferay_ui["message"] key="categories" />:</span>
200 <@liferay_asset["asset-categories-summary"]
201 className=entry.getClassName()
202 classPK=entry.getClassPK()
203 displayStyle="simple-category"
204 portletURL=renderResponse.createRenderURL()
205 />
206 </#if>
207 </span>
208 </#if>
209</#macro>