Virhe tapahtui prosessoidessa esitysmallia.
The following has evaluated to null or missing:
==> webArticleHelper [in template "43104#43145#3611149" at line 8, column 20]
----
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: #assign article = webArticleHelper.ge... [in template "43104#43145#3611149" at line 8, column 1]
----
1<#-- Use UTF-8 charset for URL escaping -->
2<#setting url_escaping_charset="UTF-8">
3
4<#assign scopeGroupTreePath = themeDisplay.getScopeGroup().treePath?split('/') />
5<#assign pirhaGroupId = scopeGroupTreePath[1]?number />
6
7<#assign articleId = .vars["reserved-article-id"].data/>
8<#assign article = webArticleHelper.getJournalArticle(articleId, groupId)/>
9
10<#assign typeCategories = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, pirhaGroupId, "Tyyppi") />
11<#assign topics = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, themeDisplay.getCompany().getGroup().groupId, "Ajankohtaissisältöjen aiheet") />
12
13<#assign displayDate = dateTimeHelper.getFormattedDate(.vars["reserved-article-display-date"].data)/>
14<#assign modifiedDate = dateTimeHelper.getFormattedDate(.vars["reserved-article-modified-date"].data)/>
15
16<#assign i18n = {
17 "fi": {
18 "kb":"kt",
19 "mb": "mt",
20 "text":"Teksti",
21 "modified":"Päivitetty",
22 "archivePageURL": "/ajankohtaista/uutiset-ja-artikkelit"
23 },
24 "en": {
25 "kb":"kb",
26 "mb":"mb",
27 "text":"Text",
28 "modified":"Modified",
29 "archivePageURL": "/ajankohtaista/uutiset-ja-artikkelit"
30 }
31} />
32
33<#function Translate word>
34 <#return i18n[locale.language][word] />
35</#function>
36
37<#function si num>
38 <#assign order = num?round?c?length />
39 <#assign thousands = ((order - 1) / 3)?floor />
40 <#if (thousands < 0)><#assign thousands = 0 /></#if>
41 <#assign siMap = [ {"factor": 1, "unit": ""}, {"factor": 1000, "unit": "${Translate('kb')}"}, {"factor": 1000000, "unit": "${Translate('mb')}"}, {"factor": 1000000000, "unit":"G"}, {"factor": 1000000000000, "unit": "T"} ]/>
42 <#assign siStr = (num / (siMap[thousands].factor))?string("0.#") + siMap[thousands].unit />
43 <#return siStr />
44</#function>
45
46<div class="pirha-2-news-and-article mb-5">
47 <#if (pirha_article_data.title.getData())??>
48 <h1>${pirha_article_data.title.getData()}</h1>
49 </#if>
50 <#if (pirha_article_data.lead.getData())??>
51 <p class="lead">${pirha_article_data.lead.getData()}</p>
52 </#if>
53 <#if typeCategories?has_content>
54 <div class="row no-gutters">
55 <#list typeCategories as category>
56 <#if category.getTitle('fi_FI') == 'Uutinen'>
57 <#assign categoryColor = 'color--orange-dark' />
58 <#elseif category.getTitle('fi_FI') == 'Blogi'>
59 <#assign categoryColor = 'color--violet' />
60 <#else>
61 <#assign categoryColor = 'color--blue' />
62 </#if>
63
64 <div class="col-auto">
65 <span class="category-name ${categoryColor}">
66 ${category.getTitle(locale)}
67 </span>
68 </div>
69 </#list>
70 </div>
71 </#if>
72 <#if modifiedDate??>
73 <div class="row no-gutters">
74 <div class="col-auto">
75 <p class="article-date">${displayDate}</p>
76 </div>
77 <div class="col-auto">
78 <p class="article-date modified-date">${Translate("modified")} ${modifiedDate}</p>
79 </div>
80 </div>
81 <#else>
82 <div class="row no-gutters">
83 <div class="col-auto">
84 <p class="article-date">${displayDate}</p>
85 </div>
86 </div>
87 </#if>
88
89 <#if !getterUtil.getBoolean(pirha_article_image.hideMainImage.getData())>
90 <#if (pirha_article_image.mainImage.getData())?? && pirha_article_image.mainImage.getData() != "">
91 <div class="row no-gutters">
92 <div class="col">
93 <img alt="${pirha_article_image.mainImage.getAttribute("alt")}"
94 data-fileentryid="${pirha_article_image.mainImage.getAttribute("fileEntryId")}"
95 src="${pirha_article_image.mainImage.getData()}"/>
96 </div>
97 </div>
98 </#if>
99 <#if (pirha_article_image.main_image_caption.getData())??>
100 <div class="row no-gutters">
101 <div class="col">
102 <p class="image_caption">${pirha_article_image.main_image_caption.getData()}</p>
103 </div>
104 </div>
105 </#if>
106 </#if>
107
108 <#if (pirha_article_data.content.getData())??>
109 <div class="article-content">
110 ${pirha_article_data.content.getData()}
111 </div>
112 </#if>
113
114 <#if pirha_article_data.webArticle?? && pirha_article_data.webArticle.getData()?has_content>
115 <div class="my-2">
116 <#assign embedWebContentData = jsonFactoryUtil.createJSONObject(pirha_article_data.webArticle.getData()) />
117 <#assign embedArticleId = webArticleHelper.getJournalArticleId(embedWebContentData.getLong("classPK")) />
118 <@liferay_journal["journal-article"] articleId=embedArticleId groupId=groupId />
119 </div>
120 </#if>
121
122 <#if pirha_article_data.contentSection2?? && pirha_article_data.contentSection2.getData()?has_content>
123 ${pirha_article_data.contentSection2.getData()}
124 </#if>
125
126 <#if pirha_article_attachments_list.attachment.getSiblings()?has_content>
127 <div class="attachments pt-3">
128 <#list pirha_article_attachments_list.attachment.getSiblings() as attachment>
129
130 <#assign has_attachment_file = (attachment.attachments_file.getData())?? && attachment.attachments_file.getData() != ""/>
131 <#assign has_attachment_link = (attachment.attachments_external_link.getData())?? && (attachment.attachments_external_link.getData()) != ""/>
132 <#if has_attachment_file || has_attachment_link>
133 <div class="row no-gutters mb-2">
134 <div class="col-auto">
135 <span role="presentation" class="pirha-icon pirha-icon--attachment mr-2"></span>
136 </div>
137 <div class="col">
138 <#if (attachment.attachments_name.getData())?? && (attachment.attachments_name.getData() != "")>
139 <#assign link_name = attachment.attachments_name.getData()/>
140 </#if>
141 <#if (attachment.attachments_description.getData())?? && (attachment.attachments_description.getData() != "")>
142 <#assign attachment_description = attachment.attachments_description.getData()/>
143 </#if>
144 <#if has_attachment_file>
145 <div class="row no-gutters">
146 <div class="col">
147 <a class="pirha-button attachment"
148 href="${attachment.attachments_file.getData()}">
149 <#assign
150 link=attachment.attachments_file
151 link_url_parts = link.getData()?split("/")
152 file_uuid = link_url_parts[5]?keep_before("?")
153 file_group_id = link_url_parts[2]?number
154 file = DLAppLocalServiceHelper.getFileEntryByUuidAndGroupId(file_uuid?string,file_group_id?long)
155 />${link_name}, ${file.getExtension()}, ${si(file.getSize())}
156 </a>
157 </div>
158 </div>
159 <#elseif has_attachment_link>
160 <a target="_blank" class="pirha-button attachment"
161 href="${attachment.attachments_external_link.getData()}">
162 ${link_name}
163 </a>
164 </#if>
165 <#if attachment_description??>
166 <div class="row no-gutters">
167 <div class="col">
168 <p class="py-0">
169 ${attachment_description}
170 </p>
171 </div>
172 </div>
173 </#if>
174 </div>
175 </div>
176 </#if>
177 </#list>
178 </div>
179 </#if>
180 <#if pirha_article_linklist.linksField.getSiblings()?has_content>
181 <div class="mb-3">
182 <div class="row no-gutters">
183 <#list pirha_article_linklist.linksField.getSiblings() as cur_pirha_article_linklist_fields>
184 <div class="col-auto mb-2 mr-2">
185 <#if cur_pirha_article_linklist_fields.linklist_name.getData()?? && cur_pirha_article_linklist_fields.linklist_name.getData() != "">
186 <#assign link_name= cur_pirha_article_linklist_fields.linklist_name.getData()/>
187 </#if>
188 <#if cur_pirha_article_linklist_fields.linklist_external_link.getData()?? && cur_pirha_article_linklist_fields.linklist_external_link.getData() != "">
189 <a class="pirha-button-link"
190 href="${cur_pirha_article_linklist_fields.linklist_external_link.getData()}">
191 <span role="presentation" class="pirha-icon pirha-icon--link-external"></span>
192 ${link_name}
193 </a>
194 <#elseif cur_pirha_article_linklist_fields.linklist_link_to_page.getFriendlyUrl()?? && cur_pirha_article_linklist_fields.linklist_link_to_page.getFriendlyUrl() != "">
195 <a class="pirha-button-link"
196 href="${cur_pirha_article_linklist_fields.linklist_link_to_page.getFriendlyUrl()}">
197 <span role="presentation" class="pirha-icon pirha-icon--arrow-right"></span>
198 ${link_name}
199 </a>
200 </#if>
201 </div>
202 </#list>
203 </div>
204 </div>
205 </#if>
206 <#if pirha_article_data.creator?? && pirha_article_data.creator.getData()?has_content>
207 <p class="mb-3">${Translate("text")}: <span class="font-weight-bold">${pirha_article_data.creator.getData()}</span></p>
208 </#if>
209 <#if topics?has_content>
210 <div class="pt-2">
211 <hr>
212 <div class="row no-gutters">
213 <#list topics as topic>
214 <div class="col-auto mr-3">
215 <a href="${Translate('archivePageURL')}?topic=${topic.getTitle(locale)?url}" class="pirha-button-link button-xs">
216 ${topic.getTitle(locale)}
217 </a>
218 </div>
219 </#list>
220 </div>
221 </div>
222 </#if>
223</div>
Tuoreimmat ajankohtaiset
Virhe tapahtui prosessoidessa esitysmallia.
The following has evaluated to null or missing:
==> webArticleHelper [in template "43104#43145#2794043" at line 18, column 30]
----
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: #assign title = webArticleHelper.getA... [in template "43104#43145#2794043" at line 18, column 13]
----
1<#assign
2 pageUrl = ""
3 headingSize = 3
4/>
5
6<#assign scopeGroupTreePath = themeDisplay.getScopeGroup().treePath?split('/') />
7<#assign pirhaGroupId = scopeGroupTreePath[1]?number />
8
9<#assign isAssetDisplayPage = themeDisplay.getLayout().type == "asset_display" />
10
11<#if entries?has_content>
12 <div class="pirha-news-list list-simple">
13 <#list entries as curEntry>
14 <#assign assetRenderer = curEntry.getAssetRenderer() />
15 <#assign className = assetRenderer.getClassName() />
16 <#assign article = assetRenderer.getArticle() />
17
18 <#assign title = webArticleHelper.getArticleFieldValue(article, "title") />
19 <#assign lead = webArticleHelper.getArticleFieldValue(article, "lead") />
20 <#assign content = webArticleHelper.getArticleFieldValue(article, "content") />
21 <#assign image = webArticleHelper.getArticleFieldValue(article, "main_image") />
22 <#assign publishDate = curEntry.publishDate?string('d.M.yyyy') />
23 <#assign publishDateISO = curEntry.publishDate?string("yyyy-MM-dd") />
24
25 <#assign pageUrl = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, entry, true)>
26 <#assign articleDDMStructure = article.getDDMStructure() />
27 <#assign typeCategories = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, pirhaGroupId, "Tyyppi") />
28
29 <#assign blogThemeName = '' />
30
31 <#if isAssetDisplayPage>
32 <#assign blogTheme = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, themeDisplay.getCompany().getGroup().getGroupId(), "Blogien aihealueet") />
33
34 <#list blogTheme as bTheme>
35 <#if bTheme?has_content>
36 <#assign blogThemeName = bTheme.name />
37 <#if bTheme?index == 1>
38 <#break>
39 </#if>
40 </#if>
41 </#list>
42 </#if>
43
44 <div class="item mb-4" data-article-id="${article.id}">
45 <h${headingSize} class="heading"><a href="${pageUrl}">${title}</a></h${headingSize}>
46
47 <div class="meta">
48 <#if typeCategories?has_content>
49 <#list typeCategories as category>
50 <#if category.getTitle('fi_FI') == 'Uutinen'>
51 <#assign categoryColor = 'color--orange-dark' />
52 <#elseif category.getTitle('fi_FI') == 'Blogi'>
53 <#assign categoryColor = 'color--violet' />
54 <#else>
55 <#assign categoryColor = 'color--blue' />
56 </#if>
57
58 <span class="meta-text category ${categoryColor}">${category.getTitle(locale)}</span>
59 </#list>
60 </#if>
61
62 <span data-date="${publishDateISO}">${publishDate}</span>
63 <#if blogThemeName?has_content>
64 <div class="blog-theme-name">${blogThemeName}</div>
65 </#if>
66
67 </div>
68 </div>
69 </#list>
70 </div>
71</#if>
72
73<#if themeDisplay.getLayout().type == "asset_display">
74<style>
75 .display-page--main-content .component-heading{
76 margin-bottom: 1.5rem !important;
77 }
78 .display-page--main-content .blog-theme-name{
79 font-size: 16px;
80 color: var(--pirha-black-transparent-70);
81 }
82</style>
83</#if>