Fehler bei der Verarbeitung der Vorlage.
Java method "de.usu.kas.frontend.service.impl.common.KASArticleServiceImpl.getArticleToUrl(String, long)" threw an exception when invoked on de.usu.kas.frontend.service.impl.common.KASArticleServiceImpl object "de.usu.kas.frontend.service.impl.common.KASArticleServiceImpl@4a9cc6a4"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign entry = FrontendService.artic... [in template "20082418#20082464#28222105" at line 82, column 1] ----
1<#-- used @ Veranstaltung-Detailseite Intro
2 used @ Publikation-Detailseite Intro
3-->
4
5<#--
6Web content templates to display teaser on thema detail page
7
8Generic template for detail pages Intro / Teaser element
9-->
10<#--
11Display the current page title
12-->
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" />
14<#include "${fullTemplatesPath}/macros/debugging.ftl" />
15
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" />
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" />
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" />
19
20
21<#--
22 renders the Intro for nearly all Pages
23 TODO: remove Share? (was in the designs, but not anymore?)
24 TODO: check if languageSelect/filter are working (js)
25
26 - portletId
27 - data = {
28 "media": string (src from image),
29 "category": string,
30 "title": string,
31 "author": string,
32 "subheadline": string,
33 "copy": string,
34 "filter": {
35 "id": string,
36 "name": string,
37 "entries": Array<Object> ({key:value}),
38 },
39 "languageSelect": {
40 "id": string,
41 "name": string,
42 "entries": Array<Object> ({key:value}),
43 },
44 "meta": {
45 "pos"; string (top/bottom)
46 "date": string,
47 "hash": string,
48 "info": string, (url)
49 },
50 "share" : {
51 "login": string,
52 "print": string,
53 "mail": string,
54 "multishare": string?? (tbd)
55 }
56 - AMMetadata: macro
57 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content
58 }
59-->
60
61<#assign
62 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
63
64 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
65 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
66
67 themeDisplay = ServiceContext.getThemeDisplay()
68 editmode = FrontendService.user.isPrivilegedUser(themeDisplay)
69
70 languageId = themeDisplay.getLocale()
71 groupId = themeDisplay.getScopeGroupId()
72 currentUrl = themeDisplay.getURLCurrent()
73
74 layout = themeDisplay.getLayout()
75 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id")
76/>
77
78<#setting locale="${languageId}">
79
80<#-- get article from url -->
81
82<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! >
83
84
85<#if entry?has_content>
86
87 <#if entry.resourcePrimKey??>
88 <#assign primaryKey = entry.resourcePrimKey?number >
89 <#elseif entry.classPK??>
90 <#assign primaryKey = entry.classPK?number >
91 </#if>
92
93 <#assign
94 jsonString = FrontendService.article.getWebcontent(primaryKey)
95 json = FrontendService.json.parseAsJson(jsonString)
96
97 title = entry.getTitle(languageId)
98 data = {
99 "title": title
100 }
101 />
102 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
103
104 <#if hasContent('untertitel', languageId, json)>
105 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
106 </#if>
107
108 <#if hasContent('beschreibung', languageId, json)>
109 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
110 </#if>
111
112 <#-- fill meta data -->
113 <#assign meta = {} />
114
115 <#-- PUBLIKATIONEN DETAIL -->
116 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
117
118 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
119 <#assign
120 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
121 />
122
123 <#if coverBildString?has_content>
124 <#assign
125 coverBild = FrontendService.json.parseAsJson(coverBildString)
126 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
127 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
128 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
129 />
130 <#if dMTJsonObject.altText?? >
131 <#assign data = data + {"alt" : dMTJsonObject.altText} />
132 </#if>
133 <#if dMTJsonObject.quelle??>
134 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
135 </#if>
136 </#if>
137 <#-- uncomment to display pdf cover as Intro Image
138 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
139 <#assign
140 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
141 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
142 <#if fileEntry?has_content>
143 <#assign
144 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
145 data = data + { "media": linkToThumbnail }
146 />
147 </#if>
148 -->
149 </#if>
150
151 <#assign
152 meta = meta + { "orderInfo": "true" }
153 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
154 />
155
156
157
158 <#if hasContent('erscheinungsdatum', languageId, json)>
159 <#assign
160 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
161 />
162 <#if erscheinungsdatum?has_content >
163 <#assign
164 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
165 meta = meta + { "date": erscheinungsdatumFormatted }
166 />
167 </#if>
168 </#if>
169
170 <#if verbundJournalArticle?has_content>
171 <#assign
172 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
173 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
174 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
175 />
176 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
177 <#assign meta = meta + { "laufendenummer": laufendenummer } >
178 </#if>
179
180
181 <#if meta?has_content>
182 <#assign data = data + {"meta": meta } >
183 </#if>
184
185 </#if>
186 <#-- PUBLIKATIONEN DETAIL END -->
187
188
189 <#-- VERANSTALTUNGEN DETAIL -->
190 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
191 <#assign
192 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
193 languages = entry.getAvailableLanguageIds()
194 links = []
195 />
196 <#if languages?has_content && friendlyUrl?has_content>
197 <#if (languages?size > 1) >
198 <#list languages as language>
199 <#assign
200 defaultLanguage = "de_DE"
201 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage)
202 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale
203 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId)
204
205 link = {
206 "key": language!defaultLanguage,
207 "value": linkLocale.getDisplayLanguage(languageId),
208 "url": "/c/portal/update_language?p_l_id=" +
209 layout.plid + "&redirect=" + langFriendlyUrl +
210 "&languageId=" + language
211 }
212 />
213 <#if language == languageId>
214 <#assign link = link + { "selected": "true" } >
215 </#if>
216 <#assign links = links + [link]>
217 </#list>
218 <#assign
219 data = data + {
220 "languageSelect": {
221 "id": "languageSelectRedirect",
222 "name": "languageselectRedirect",
223 "entries": links,
224 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar")
225 }
226 }
227 />
228 </#if>
229 </#if>
230 </#if>
231
232 <#if hasContent('erscheinungsdatum', languageId, json)>
233 <#assign
234 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
235 meta = meta + { "start": startdate?date.iso, "end": "" }
236 />
237 </#if>
238
239 <#if hasContent('startdatum', languageId, json)>
240 <#assign
241 startdate = getValueForLanguage('startdatum', languageId, json, "first")
242 meta = meta + { "start": startdate?date.iso, "end": "" }
243 />
244 </#if>
245
246 <#if hasValue('einfuehrungText', locale, json)>
247 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } >
248 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")>
249 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } >
250 </#if>
251
252 <#if hasContent('endedatum', languageId, json)>
253 <#assign
254 enddate = getValueForLanguage('endedatum', languageId, json, "first")
255 meta = meta + { "end": enddate?date.iso }
256 />
257 </#if>
258
259 <#if hasContent('startzeit', languageId, json)>
260 <#assign
261 startzeit = getValueForLanguage('startzeit', languageId, json, "first")
262 />
263 <#if startzeit?has_content >
264 <#assign meta = meta + { "startzeit": startzeit } />
265 </#if>
266 </#if>
267
268 <#if hasContent('endezeit', languageId, json)>
269 <#assign
270 endezeit = getValueForLanguage('endezeit', languageId, json, "first")
271 meta = meta + { "endezeit": endezeit }
272 />
273 </#if>
274
275 <#if hasContent('ortWCSKASDEORT', languageId, json)>
276 <#assign
277 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first"))
278 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number
279 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!""
280 />
281 <#if ortWCSKASDEORTWebContent?has_content >
282 <#assign
283 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!""
284 />
285 <#if ortWCSKASDEORTTitle?has_content >
286 <#assign
287 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle }
288 />
289 </#if>
290 </#if>
291 </#if>
292
293
294 <#if hasContent('veranstaltungsnummer', languageId, json)>
295 <#assign
296 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first")
297 meta = meta + { "verauuid": verauuid }
298 />
299 </#if>
300
301
302 <#if (data.meta)?has_content >
303 <#assign meta = data.meta />
304 </#if>
305
306 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)>
307 <#assign
308 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first")
309 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution")
310 />
311 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} >
312
313
314 <#if mediaData.meta?? && mediaData.meta.quelle??>
315 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } />
316 </#if>
317 </#if>
318
319
320 <#if meta?has_content>
321 <#assign data = data + {"meta": meta } >
322 </#if>
323
324 <#-- END fill meta data -->
325
326 <#if hasContent('autorenWCSKASDEPERSON', languageId, json)>
327 <#assign
328 journalArticles = getValueForLanguage('autorenWCSKASDEPERSON', languageId, json)
329 authors = []
330 />
331 <#list journalArticles as articleString>
332 <#assign article = FrontendService.json.parseAsJson(articleString) />
333 <#if article?has_content && article?is_hash && article.classPK??>
334 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" />
335 <#if articleDereferenced?has_content >
336 <#assign
337 author = ""
338 articlePrimaryKey = articleDereferenced.classPK?number
339 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey)
340 articleJson = FrontendService.json.parseAsJson(articleJsonString)
341 />
342 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" />
343 <#if hasValue('anredetitel', languageId, articleJson)>
344 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " ">
345 </#if>
346 <#if hasValue('vorname', languageId, articleJson)>
347 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " ">
348 </#if>
349 <#if hasValue('nachname', languageId, articleJson)>
350 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " ">
351 </#if>
352
353 <#attempt>
354 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" >
355 <#recover>
356 <#assign href = "#" >
357 </#attempt>
358 <#if href?has_content && href != "#" && href != "/_404">
359 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'>
360 </#if>
361
362 <#assign authors = authors + [author?trim]>
363 </#if>
364 </#if>
365 </#list>
366 <#if authors?has_content>
367 <#assign data = data + { "author": authors?join(", ") } >
368 </#if>
369 </#if>
370
371 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") >
372 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! >
373 <#if categories?has_content && categories[0]?has_content >
374 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
375 </#if>
376
377 <#if hasContent('ausgebucht', languageId, json)>
378 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }>
379 </#if>
380
381 <#if hasContent('storniert', languageId, json)>
382 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }>
383 </#if>
384
385 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") >
386 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! >
387 <#if categories?has_content && categories[0]?has_content >
388 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
389 </#if>
390 <#else>
391 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! >
392 <#if categories?has_content && categories[0]?has_content >
393 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
394 </#if>
395 </#if>
396
397
398 <#assign
399 languages = []
400 />
401
402 <#attempt>
403 <#if json["document_pdfDMTBASICDOCUMENT"]?? >
404 <#list json["document_pdfDMTBASICDOCUMENT"]?keys as pdf_language>
405 <#if pdf_language?has_content >
406 <#assign
407 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first")
408 docRef = FrontendService.json.parseAsJson(docRefJson)
409 />
410 <#if docRef?is_hash && pdf_language != languageId >
411 <#assign
412 lang = FrontendService.language.getLocaleByKey(pdf_language)!""
413 docGroupId = docRef["groupId"]?number
414 docUuid = docRef["uuid"]
415 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale )
416 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject )
417 />
418 <#if lang?has_content>
419 <#assign
420 languages = languages + [
421 {
422 "key": pdf_language,
423 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(),
424 "url": dMTLink
425 }]
426 />
427 </#if>
428 </#if>
429 </#if>
430 </#list>
431 </#if>
432 <#recover>
433 </#attempt>
434
435 <#if (languages?size > 0)>
436 <#attempt>
437 <#assign
438 data = data + { "languageSelect": {
439 "id": "languageSelect",
440 "name": "languageselect",
441 "entries": languages,
442 "documents": "",
443 "button": "true"
444 }}
445 />
446 <#recover>
447 </#attempt>
448 </#if>
449
450 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" />
451 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)}
452
453<#elseif (editmode?? && editmode)>
454 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
455</#if>