Ferienkolonien
Die kantonale Dienststelle für die Jugend ist in Zusammenarbeit mit den kommunalen Sicherheitsbeauftragten und dem Amt für Feuerwesen für die Prüfung und Erteilung der Grundbewilligung der Ferienkolonien oder Ferienhäuser zuständig. Die Betriebsbewilligung ist in der Regel für einen Zeitraum von vier Jahren gültig.
Als Ferienkolonie oder Ferienhaus gilt jede Beherbergungsstätte für Kinder, die während den Schulferien oder für kurze Zeitdauer Unterkunft anbietet und sich auf dem Territorium des Kantons Wallis befindet.
Gemäss Verordnung betreffend verschiedene Einrichtungen für die Jugend vom 9. Mai 2001 und sobald die Ferienkolonie oder das Ferienhaus den geltenden gesetzlichen Anforderungen entspricht, wird das Dossier an die entsprechende Gemeindeverwaltung weitergeleitet. Diese führt dann die Erneuerung der Betriebsbewilligungen anstelle der kantonalen Dienststelle für die Jugend durch.
Die kantonale Dienststelle für die Jugend bleibt jedoch für die Bewilligung von Ferienkolonien oder Ferienhäuser, die den Burgschaften oder den Gemeinden gehören, zuständig.
Kontakt
Hélène Vouillamoz
Email : helene.vouillamoz@admin.vs.ch
Tel : 027 606 48 37
Raihan Islam
Email: raihan.islam@admin.vs.ch
Tel : 027 606 99 63
Avenue Ritz 29
1950 Sitten
Rechtsgrundlage
Rechtliche GrundlagenThe following has evaluated to null or missing: ==> cur_docGroup.annexeUrlTitle [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 386, column 10] ---- 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 be 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 cur_docGroup.annexeUrlTitle.getSi... [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" in function "isDocEmpty" at line 386, column 5] - Reached through: #if isDocEmpty() == "false" [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 61, column 9] ----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
2<#assign AssetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign AssetLinkService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DLFolderLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService") />
6<#assign queryDefinition = objectUtil("com.liferay.portal.kernel.dao.orm.QueryDefinition") />
7<#assign QD = queryDefinition />
8<#assign yourChoosenLocal = locale?split("_")[0] />
9<#assign pathFileicon = "/html/themes/classic/images/file_system/small/" />
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign gArticleId = .vars['reserved-article-id'].data />
12<style>
13.block a{
14color:#e22b28;
15}
16.entry-body .vsstruct:first-child h2 {
17 display:none;
18 /*color: #262626;
19 padding-top: 15px;
20 margin-top: 0;
21 margin-bottom: 1.1em;
22 text-transform: uppercase;
23 line-height: 1.1em;
24 font-size: 1.73em;*/
25}
26.doc-item {
27 overflow: auto;
28}
29</style>
30
31<div class="grid__row">
32 <div class="grid__col-xxs--12 grid__col-s--12">
33 <h2 class="block-title">${.vars['reserved-article-title'].data}</h2>
34 </div>
35 <#if isContactEmpty() == "true" >
36 <#assign columnwidth = "grid__col-s--12" />
37 <#else>
38 <#assign columnwidth = "grid__col-s--8" />
39 </#if>
40 <div class="grid__col-xxs--12 ${columnwidth} entry-body">
41 <div class="vsstruct">
42 ${description.getData()}
43 </div>
44 </div>
45 <#if isContactEmpty() == "false">
46 <div class="grid__col-xxs--12 grid__col-s--4">
47 <div class="grid__col-xxs--12 grid__col-s--12 services-header">
48 <div class="grid__col-xxs--12">
49 <h3>
50 <@liferay.language key="vs-contact"/>
51 </h3>
52 <@contactInfo/>
53 <br />
54 </div>
55 </div>
56 </div>
57 </#if>
58</div>
59
60<div>
61 <#if isDocEmpty() == "false" >
62 <h3 class="block-title"><@liferay.language key="${docBlockTitle.data}" /></h3>
63 <@downloads />
64
65 </#if>
66</div>
67
68<section class="services-footer grid__row">
69 <#if isLexEmpty() == "false">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <h3 class="block-title"><@liferay.language key="vs-legal-base"/></h3>
72 <@lex/>
73 <#-- <@relatedAssets /> -->
74 </div>
75 <div class="grid__col-m--1"></div>
76 </#if>
77 <#if isLinkEmpty() == "false">
78 <div class="grid__col-xxs--12 grid__col-m--5">
79 <h3 class="block-title"><@liferay.language key="vs-link"/></h3>
80 <@links/>
81 </div>
82 </#if>
83</section>
84
85<#-- <small class="muted"><@liferay.language key="vs-last-modified" />: ${getArticleDate("modified")}</small>-->
86
87<#-- functions and macros -->
88
89<#macro getBackLink>
90 <#if request.attributes??>
91 <#assign url = request.attributes.CURRENT_URL />
92 <#assign multipleValues = httpUtil.getQueryString(url) />
93 <#assign paramMap = httpUtil.getParameterMap(httpUtil.getQueryString(url)) />
94 <#list paramMap?keys as key>
95 <#if key?contains("_redirect")>
96 <#assign keyFound = key />
97 </#if>
98 </#list>
99 <#if keyFound??>
100 <#assign encodedUrlString = httpUtil.getParameter(url, keyFound, false) />
101 <#assign decodedUrlString = httpUtil.decodeURL(encodedUrlString) />
102 <div class="clearfix">
103 <#-- <span class="pull-left muted">${title.getData()} <@displayArticleDate dateType="published"/></span> -->
104 <#if decodedUrlString??>
105 <a class="pull-left" href="${decodedUrlString}"><i class="icon-chevron-sign-left"></i> <@liferay.language key="back" /></a>
106 </#if>
107 <hr />
108 </div>
109 </#if>
110 </#if>
111</#macro>
112
113<#macro downloads>
114 <#list docGroup.getSiblings() as cur_docGroup>
115 <#if cur_docGroup.data?trim != "">
116 <h3 style="font-size: 1.1em; text-transform: uppercase; color: #e22b28; letter-spacing: 0.01em; margin-bottom: 0.6em;" >${cur_docGroup.data}</h3>
117 </#if>
118 <#if cur_docGroup.folderId?? >
119 <#if cur_docGroup.folderId.data?trim != "">
120 <#assign filesInFolder = getFileEntries(groupId, cur_docGroup.folderId.data) />
121 <div class="grid__row section-docs">
122 <#assign allFiles = [] />
123 <#list filesInFolder as cur_file>
124 <#if cur_file.toFileEntryId??>
125 <#assign entryId = cur_file.toFileEntryId />
126 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
127 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
128 <#else>
129 <#assign entryId = cur_file.fileEntryId />
130 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
131 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
132 </#if>
133 </#list>
134 <#list allFiles as loop_file>
135 <#if loop_file.getTitle()?index_of("/") != 0>
136 <div class="grid__col-xxs--12 grid__col-s--6">
137 <a class="doc-item doc-item-small" href="/documents/${loop_file.groupId}/${loop_file.folderId}/${loop_file.title?url}/${loop_file.uuid}?t=.now?long" target="_blank">
138 <span class="u-table">
139 <span class="u-cell">
140 <span class="subtitle">${loop_file.extension}</span>
141 <span>${loop_file.getTitle()}</span>
142 </span>
143 </span>
144 <i class="icon icon_arrow-right">
145 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
146 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
147 <use xlink:href="#svg-arrow-right"></use>
148 </svg>
149 </i>
150 </a>
151 </div>
152 </#if>
153 </#list>
154 <#assign allFiles = [] />
155 </div>
156 <#assign filesInFolder = "" />
157 </#if>
158 </#if>
159
160
161 <#if cur_docGroup.annexeDocumentLinkTo??>
162 <div class="grid__row section-docs">
163
164 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
165 <#if cur_intDoc.getData()?trim != "" && cur_intDoc.getData() != "null">
166 <@getDocument docLink=cur_intDoc/>
167 </#if>
168 </#list>
169
170 <#if cur_docGroup.annexeUrlTitle??>
171 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
172 <#if cur_extDoc.data?trim != "" && cur_extDoc.data != "null">
173 <div class="grid__col-xxs--12 grid__col-s--6">
174 <a class="doc-item doc-item-small" href="${cur_extDoc.annexeUrl.data}" target="_blank">
175 <span class="u-table">
176 <span class="u-cell">
177 <span class="subtitle"><@liferay.language key="link"/></span>
178 <span>${cur_extDoc.data}</span>
179 </span>
180 </span>
181 <i class="icon icon_arrow-right">
182 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
183 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
184 <use xlink:href="#svg-arrow-right"></use>
185 </svg>
186 </i>
187 </a>
188 </div>
189 </#if>
190 </#list>
191 </#if>
192
193 </div>
194 </#if>
195
196 </#list>
197</#macro>
198
199<#macro getDocument docLink>
200 <#assign docJSON = jsonFactoryUtil.createJSONObject(docLink.data) />
201 <#assign gid = docJSON.groupId />
202 <#assign longGid = getterUtil.getLong(gid) />
203 <#assign uuid = docJSON.uuid />
204 <#if DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid)?? >
205 <#assign document = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid) />
206
207 <div class="grid__col-xxs--12 grid__col-s--6">
208 <a class="doc-item doc-item-small" href="${docLink.getData()}">
209 <span class="u-table">
210 <span class="u-cell">
211 <span class="subtitle">${document.extension}</span>
212 <span>${document.getTitle()}</span>
213 </span>
214 </span>
215 <i class="icon icon_arrow-right">
216 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
217 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
218 <use xlink:href="#svg-arrow-right"></use>
219 </svg>
220 </i>
221 </a>
222 </div>
223 </#if>
224</#macro>
225
226<#macro DocumentFromId entryId>
227 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
228 <#if document.getTitle()?index_of("/") != 0>
229 <div class="grid__col-xxs--12 grid__col-s--6">
230 <a class="doc-item doc-item-small" href="/documents/${document.groupId}/${document.folderId}/${document.title?url}/${document.uuid}?t=.now?long" target="_blank">
231 <span class="u-table">
232 <span class="u-cell">
233 <span class="subtitle"><@liferay.language key="link"/></span>
234 <span>${document.getTitle()}</span>
235 </span>
236 </span>
237 <i class="icon icon_arrow-right">
238 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
239 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
240 <use xlink:href="#svg-arrow-right"></use>
241 </svg>
242 </i>
243 </a>
244 </div>
245 </#if>
246 <#assign document = "" />
247</#macro>
248
249
250<#macro links>
251 <#list linkGroup.getSiblings() as cur_linkGroup>
252 <#if cur_linkGroup.data?trim != "">
253 <strong>${cur_linkGroup.data}</strong>
254 </#if>
255 <ul style="list-style: none; padding-left: 0;">
256 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
257 <#if cur_link.data?trim != "" && cur_link.data != "null">
258 <li >
259 <a href="${cur_link.linkUrl.data}" class="link" target="_blank">
260 <i class="icon icon_arrow-right-xs">
261 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
262 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
263 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-arrow-right-xs"></use>
264 </svg>
265 </i> ${cur_link.data}
266 </a>
267 </li>
268 </#if>
269 </#list>
270 </ul>
271 </#list>
272</#macro>
273
274<#macro lex>
275 <#if yourChoosenLocal == "de">
276 <#assign lexLanguage = "de" />
277 <#assign lexConfLanguage = "d" />
278 <#else>
279 <#assign lexLanguage = "fr" />
280 <#assign lexConfLanguage = "f" />
281 </#if>
282 <#list lexGroup.getSiblings() as cur_lexGroup>
283 <#if cur_lexGroup.data?trim != "">
284 <strong>${cur_lexGroup.data}</strong>
285 </#if>
286 <ul>
287 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
288 <#if cur_lex.data?trim != "" && cur_lex.data != "null">
289 <li>
290 <#assign lexLinkUrl ="" />
291 <#if cur_lex.lexType.data == "legconftype" >
292 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?replace(".", "_") />
293 <#if cur_lex.lexNumbers.getData()?contains("a")>
294 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?split("a")[0]?replace(".", "_") />
295 <#assign lexLinkUrl = lexLinkUrl + "/a" + cur_lex.lexNumbers.getData()?replace(".", "_")?split("a")[1] + ".html" />
296 </#if>
297 <#elseif cur_lex.lexType.data == "leglisttype" >
298 <#assign lexnumbers = cur_lex.lexNumbers.getData()?replace(";", "|") />
299 <#assign lexLinkUrl = "http://lex.vs.ch/frontend/syst_no/" + lexnumbers + "?locale=" + lexLanguage />
300 <#elseif cur_lex.lexType.data == "legdetailtype" || cur_lex.lexType.data == "legpdftype" >
301 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + cur_lex.lexNumbers.getData()+ "/" + lexLanguage />
302 <#if cur_lex.lexNumbers.getData()?contains("a")>
303 <#assign lexNumber = cur_lex.lexNumbers.getData()?split("a")[0] />
304 <#assign lexArticle = cur_lex.lexNumbers.getData()?split("a")[1] />
305 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + lexNumber + "/" + lexLanguage + "/art" + lexArticle />
306 </#if>
307 <#elseif cur_lex.lexType.data == "leglinktype" >
308 <#assign lexLinkUrl = cur_lex.lexNumbers.getData() />
309 </#if>
310 <a href="${lexLinkUrl}" class="red" target="_blank">
311 ${cur_lex.data}
312 </a>
313 </li>
314 </#if>
315 </#list>
316 </ul>
317 </#list>
318</#macro>
319
320
321
322
323<#macro contactInfo>
324 ${contact.getData()}
325 <#if serviceLocator??>
326 <#if contact.contactId?? >
327 <#if contact.contactId.data?trim != "">
328 ${getArticleContent(groupId, contact.contactId.getData())}
329 </#if>
330 </#if>
331 </#if>
332</#macro>
333
334<#function getArticleDate dateType>
335 <#if serviceLocator??>
336 <#assign article = JournalArticleLocalService.getArticle(groupId, gArticleId) />
337 <#if dateType == "published">
338 <#assign date = article.displayDate?date />
339 <#elseif dateType == "modified">
340 <#assign date = article.modifiedDate?date />
341 <#elseif dateType == "created">
342 <#assign date = article.createDate?date />
343 <#else>
344 <#assign date = "???" />
345 </#if>
346 <#return date>
347 </#if>
348</#function>
349
350<#function getFileEntries group folderId>
351 <#if serviceLocator??>
352 <#return DLFolderLocalService.getFileEntriesAndFileShortcuts(getterUtil.getLong(group), getterUtil.getLong(folderId), QD) />
353 </#if>
354 <#return "" />
355</#function>
356
357<#function getArticleContent gid aid>
358 <#attempt>
359 <#assign article = JournalArticleLocalService.getArticle(gid?number, aid?upper_case) />
360 <#assign articleContent = JournalArticleLocalService.getArticleContent(article, apListTemplateKey, null, locale, model, themeDisplay) />
361 <#if articleContent?? >
362 <#return articleContent />
363 </#if>
364 <#return "" />
365 <#recover>
366 <#return "" />
367 </#attempt>
368</#function>
369
370
371
372<#function isDescriptionEmpty>
373 <#if description.getData()?trim != "" && description.data?trim != "null">
374 <#return "false" />
375 </#if>
376 <#return "true" />
377</#function>
378
379<#function isDocEmpty>
380 <#list docGroup.getSiblings() as cur_docGroup>
381 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
382 <#if cur_intDoc.data?trim != "" && cur_intDoc.data?trim != "null">
383 <#return "false" />
384 </#if>
385 </#list>
386 <#if cur_docGroup.annexeUrlTitle.getSiblings()?has_content>
387 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
388 <#if cur_extDoc.data?trim != "" && cur_extDoc.data?trim != "null">
389 <#return "false" />
390 </#if>
391 </#list>
392 </#if>
393 <#if cur_docGroup.folderId?? >
394 <#list cur_docGroup.folderId.getSiblings() as cur_folder>
395 <#if cur_folder.data?trim != "" && cur_folder.data?trim != "null">
396 <#return "false" />
397 </#if>
398 </#list>
399 </#if>
400 </#list>
401 <#return "true" />
402</#function>
403
404<#function isLinkEmpty>
405 <#list linkGroup.getSiblings() as cur_linkGroup>
406 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
407 <#if cur_link.data?trim != "">
408 <#return "false" />
409 </#if>
410 </#list>
411 </#list>
412 <#return "true" />
413</#function>
414
415<#function isLexEmpty>
416 <#list lexGroup.getSiblings() as cur_lexGroup>
417 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
418 <#if cur_lex.data?trim != "">
419 <#return "false" />
420 </#if>
421 </#list>
422 </#list>
423 <#return "true" />
424</#function>
425
426<#function isContactEmpty>
427 <#if contact.contactId?? >
428 <#if contact.getData()?trim != "" || contact.contactId.data?trim != "" >
429 <#return "false" />
430 </#if>
431 <#else>
432 <#if contact.getData()?trim != "" >
433 <#return "false" />
434 </#if>
435 </#if>
436 <#return "true" />
437</#function>
438
439<#function isRelatedEmpty relatedEntries>
440 <#if relatedEntries?? >
441 <#list relatedEntries as cur_entry >
442 <#if cur_entry?trim != "">
443 <#return "false">
444 </#if>
445 </#list>
446 </#if>
447 <#return "true" />
448</#function>
449
450<#macro relatedAssets >
451 <#assign relatedEntries = getRelatedContent() />
452 <#-- <#if relatedEntries?? > -->
453 <#if isRelatedEmpty(relatedEntries) == "false">
454 <div class="widget">
455 <h3 class="block-title"><@liferay.language key="vs-en-relation"/></h3>
456 <ul style="list-style: none;padding-left: 0;">
457 <#list relatedEntries as cur_asset_link>
458 <#assign assetEntry = getAssetEntry(cur_asset_link.entryId2) />
459 <#assign lClassName = "com.liferay.journal.model.JournalArticle"/>
460 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(assetEntry.getClassPK())/>
461 <li>
462 <a class="link" href="#">
463 ${journalArticle.getTitle(locale)}
464 <i class="icon icon_arrow-right-xs">
465 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
466 <use xlink:href="/o/vs-theme/images/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
467 <use xlink:href="#svg-arrow-right-xs"></use>
468 </svg>
469 </i>
470 </a>
471 </li>
472 </#list>
473 </ul>
474 </div>
475 </#if>
476</#macro>
477
478<#function getAssetEntry entryId>
479 <#assign entry = AssetLocalService.getAssetEntry(entryId) />
480 <#return entry />
481</#function>
482
483<#function getRelatedContent >
484 <#assign lClassName = "com.liferay.portlet.journal.model.JournalArticle"/>
485 <#assign lArticle = JournalArticleLocalService.getArticle(groupId, gArticleId)/>
486 <#assign lPk = lArticle.getResourcePrimKey()/>
487 <#assign lEntry = AssetLocalService.getEntry(lClassName,lPk)/>
488 <#assign lLinks = AssetLinkService.getDirectLinks(lEntry.getEntryId())/>
489 <#return lLinks />
490</#function>
The following has evaluated to null or missing: ==> cur_docGroup.annexeUrlTitle [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 386, column 10] ---- 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 be 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 cur_docGroup.annexeUrlTitle.getSi... [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" in function "isDocEmpty" at line 386, column 5] - Reached through: #if isDocEmpty() == "false" [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 61, column 9] ----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
2<#assign AssetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign AssetLinkService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DLFolderLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService") />
6<#assign queryDefinition = objectUtil("com.liferay.portal.kernel.dao.orm.QueryDefinition") />
7<#assign QD = queryDefinition />
8<#assign yourChoosenLocal = locale?split("_")[0] />
9<#assign pathFileicon = "/html/themes/classic/images/file_system/small/" />
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign gArticleId = .vars['reserved-article-id'].data />
12<style>
13.block a{
14color:#e22b28;
15}
16.entry-body .vsstruct:first-child h2 {
17 display:none;
18 /*color: #262626;
19 padding-top: 15px;
20 margin-top: 0;
21 margin-bottom: 1.1em;
22 text-transform: uppercase;
23 line-height: 1.1em;
24 font-size: 1.73em;*/
25}
26.doc-item {
27 overflow: auto;
28}
29</style>
30
31<div class="grid__row">
32 <div class="grid__col-xxs--12 grid__col-s--12">
33 <h2 class="block-title">${.vars['reserved-article-title'].data}</h2>
34 </div>
35 <#if isContactEmpty() == "true" >
36 <#assign columnwidth = "grid__col-s--12" />
37 <#else>
38 <#assign columnwidth = "grid__col-s--8" />
39 </#if>
40 <div class="grid__col-xxs--12 ${columnwidth} entry-body">
41 <div class="vsstruct">
42 ${description.getData()}
43 </div>
44 </div>
45 <#if isContactEmpty() == "false">
46 <div class="grid__col-xxs--12 grid__col-s--4">
47 <div class="grid__col-xxs--12 grid__col-s--12 services-header">
48 <div class="grid__col-xxs--12">
49 <h3>
50 <@liferay.language key="vs-contact"/>
51 </h3>
52 <@contactInfo/>
53 <br />
54 </div>
55 </div>
56 </div>
57 </#if>
58</div>
59
60<div>
61 <#if isDocEmpty() == "false" >
62 <h3 class="block-title"><@liferay.language key="${docBlockTitle.data}" /></h3>
63 <@downloads />
64
65 </#if>
66</div>
67
68<section class="services-footer grid__row">
69 <#if isLexEmpty() == "false">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <h3 class="block-title"><@liferay.language key="vs-legal-base"/></h3>
72 <@lex/>
73 <#-- <@relatedAssets /> -->
74 </div>
75 <div class="grid__col-m--1"></div>
76 </#if>
77 <#if isLinkEmpty() == "false">
78 <div class="grid__col-xxs--12 grid__col-m--5">
79 <h3 class="block-title"><@liferay.language key="vs-link"/></h3>
80 <@links/>
81 </div>
82 </#if>
83</section>
84
85<#-- <small class="muted"><@liferay.language key="vs-last-modified" />: ${getArticleDate("modified")}</small>-->
86
87<#-- functions and macros -->
88
89<#macro getBackLink>
90 <#if request.attributes??>
91 <#assign url = request.attributes.CURRENT_URL />
92 <#assign multipleValues = httpUtil.getQueryString(url) />
93 <#assign paramMap = httpUtil.getParameterMap(httpUtil.getQueryString(url)) />
94 <#list paramMap?keys as key>
95 <#if key?contains("_redirect")>
96 <#assign keyFound = key />
97 </#if>
98 </#list>
99 <#if keyFound??>
100 <#assign encodedUrlString = httpUtil.getParameter(url, keyFound, false) />
101 <#assign decodedUrlString = httpUtil.decodeURL(encodedUrlString) />
102 <div class="clearfix">
103 <#-- <span class="pull-left muted">${title.getData()} <@displayArticleDate dateType="published"/></span> -->
104 <#if decodedUrlString??>
105 <a class="pull-left" href="${decodedUrlString}"><i class="icon-chevron-sign-left"></i> <@liferay.language key="back" /></a>
106 </#if>
107 <hr />
108 </div>
109 </#if>
110 </#if>
111</#macro>
112
113<#macro downloads>
114 <#list docGroup.getSiblings() as cur_docGroup>
115 <#if cur_docGroup.data?trim != "">
116 <h3 style="font-size: 1.1em; text-transform: uppercase; color: #e22b28; letter-spacing: 0.01em; margin-bottom: 0.6em;" >${cur_docGroup.data}</h3>
117 </#if>
118 <#if cur_docGroup.folderId?? >
119 <#if cur_docGroup.folderId.data?trim != "">
120 <#assign filesInFolder = getFileEntries(groupId, cur_docGroup.folderId.data) />
121 <div class="grid__row section-docs">
122 <#assign allFiles = [] />
123 <#list filesInFolder as cur_file>
124 <#if cur_file.toFileEntryId??>
125 <#assign entryId = cur_file.toFileEntryId />
126 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
127 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
128 <#else>
129 <#assign entryId = cur_file.fileEntryId />
130 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
131 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
132 </#if>
133 </#list>
134 <#list allFiles as loop_file>
135 <#if loop_file.getTitle()?index_of("/") != 0>
136 <div class="grid__col-xxs--12 grid__col-s--6">
137 <a class="doc-item doc-item-small" href="/documents/${loop_file.groupId}/${loop_file.folderId}/${loop_file.title?url}/${loop_file.uuid}?t=.now?long" target="_blank">
138 <span class="u-table">
139 <span class="u-cell">
140 <span class="subtitle">${loop_file.extension}</span>
141 <span>${loop_file.getTitle()}</span>
142 </span>
143 </span>
144 <i class="icon icon_arrow-right">
145 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
146 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
147 <use xlink:href="#svg-arrow-right"></use>
148 </svg>
149 </i>
150 </a>
151 </div>
152 </#if>
153 </#list>
154 <#assign allFiles = [] />
155 </div>
156 <#assign filesInFolder = "" />
157 </#if>
158 </#if>
159
160
161 <#if cur_docGroup.annexeDocumentLinkTo??>
162 <div class="grid__row section-docs">
163
164 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
165 <#if cur_intDoc.getData()?trim != "" && cur_intDoc.getData() != "null">
166 <@getDocument docLink=cur_intDoc/>
167 </#if>
168 </#list>
169
170 <#if cur_docGroup.annexeUrlTitle??>
171 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
172 <#if cur_extDoc.data?trim != "" && cur_extDoc.data != "null">
173 <div class="grid__col-xxs--12 grid__col-s--6">
174 <a class="doc-item doc-item-small" href="${cur_extDoc.annexeUrl.data}" target="_blank">
175 <span class="u-table">
176 <span class="u-cell">
177 <span class="subtitle"><@liferay.language key="link"/></span>
178 <span>${cur_extDoc.data}</span>
179 </span>
180 </span>
181 <i class="icon icon_arrow-right">
182 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
183 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
184 <use xlink:href="#svg-arrow-right"></use>
185 </svg>
186 </i>
187 </a>
188 </div>
189 </#if>
190 </#list>
191 </#if>
192
193 </div>
194 </#if>
195
196 </#list>
197</#macro>
198
199<#macro getDocument docLink>
200 <#assign docJSON = jsonFactoryUtil.createJSONObject(docLink.data) />
201 <#assign gid = docJSON.groupId />
202 <#assign longGid = getterUtil.getLong(gid) />
203 <#assign uuid = docJSON.uuid />
204 <#if DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid)?? >
205 <#assign document = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid) />
206
207 <div class="grid__col-xxs--12 grid__col-s--6">
208 <a class="doc-item doc-item-small" href="${docLink.getData()}">
209 <span class="u-table">
210 <span class="u-cell">
211 <span class="subtitle">${document.extension}</span>
212 <span>${document.getTitle()}</span>
213 </span>
214 </span>
215 <i class="icon icon_arrow-right">
216 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
217 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
218 <use xlink:href="#svg-arrow-right"></use>
219 </svg>
220 </i>
221 </a>
222 </div>
223 </#if>
224</#macro>
225
226<#macro DocumentFromId entryId>
227 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
228 <#if document.getTitle()?index_of("/") != 0>
229 <div class="grid__col-xxs--12 grid__col-s--6">
230 <a class="doc-item doc-item-small" href="/documents/${document.groupId}/${document.folderId}/${document.title?url}/${document.uuid}?t=.now?long" target="_blank">
231 <span class="u-table">
232 <span class="u-cell">
233 <span class="subtitle"><@liferay.language key="link"/></span>
234 <span>${document.getTitle()}</span>
235 </span>
236 </span>
237 <i class="icon icon_arrow-right">
238 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
239 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
240 <use xlink:href="#svg-arrow-right"></use>
241 </svg>
242 </i>
243 </a>
244 </div>
245 </#if>
246 <#assign document = "" />
247</#macro>
248
249
250<#macro links>
251 <#list linkGroup.getSiblings() as cur_linkGroup>
252 <#if cur_linkGroup.data?trim != "">
253 <strong>${cur_linkGroup.data}</strong>
254 </#if>
255 <ul style="list-style: none; padding-left: 0;">
256 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
257 <#if cur_link.data?trim != "" && cur_link.data != "null">
258 <li >
259 <a href="${cur_link.linkUrl.data}" class="link" target="_blank">
260 <i class="icon icon_arrow-right-xs">
261 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
262 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
263 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-arrow-right-xs"></use>
264 </svg>
265 </i> ${cur_link.data}
266 </a>
267 </li>
268 </#if>
269 </#list>
270 </ul>
271 </#list>
272</#macro>
273
274<#macro lex>
275 <#if yourChoosenLocal == "de">
276 <#assign lexLanguage = "de" />
277 <#assign lexConfLanguage = "d" />
278 <#else>
279 <#assign lexLanguage = "fr" />
280 <#assign lexConfLanguage = "f" />
281 </#if>
282 <#list lexGroup.getSiblings() as cur_lexGroup>
283 <#if cur_lexGroup.data?trim != "">
284 <strong>${cur_lexGroup.data}</strong>
285 </#if>
286 <ul>
287 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
288 <#if cur_lex.data?trim != "" && cur_lex.data != "null">
289 <li>
290 <#assign lexLinkUrl ="" />
291 <#if cur_lex.lexType.data == "legconftype" >
292 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?replace(".", "_") />
293 <#if cur_lex.lexNumbers.getData()?contains("a")>
294 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?split("a")[0]?replace(".", "_") />
295 <#assign lexLinkUrl = lexLinkUrl + "/a" + cur_lex.lexNumbers.getData()?replace(".", "_")?split("a")[1] + ".html" />
296 </#if>
297 <#elseif cur_lex.lexType.data == "leglisttype" >
298 <#assign lexnumbers = cur_lex.lexNumbers.getData()?replace(";", "|") />
299 <#assign lexLinkUrl = "http://lex.vs.ch/frontend/syst_no/" + lexnumbers + "?locale=" + lexLanguage />
300 <#elseif cur_lex.lexType.data == "legdetailtype" || cur_lex.lexType.data == "legpdftype" >
301 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + cur_lex.lexNumbers.getData()+ "/" + lexLanguage />
302 <#if cur_lex.lexNumbers.getData()?contains("a")>
303 <#assign lexNumber = cur_lex.lexNumbers.getData()?split("a")[0] />
304 <#assign lexArticle = cur_lex.lexNumbers.getData()?split("a")[1] />
305 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + lexNumber + "/" + lexLanguage + "/art" + lexArticle />
306 </#if>
307 <#elseif cur_lex.lexType.data == "leglinktype" >
308 <#assign lexLinkUrl = cur_lex.lexNumbers.getData() />
309 </#if>
310 <a href="${lexLinkUrl}" class="red" target="_blank">
311 ${cur_lex.data}
312 </a>
313 </li>
314 </#if>
315 </#list>
316 </ul>
317 </#list>
318</#macro>
319
320
321
322
323<#macro contactInfo>
324 ${contact.getData()}
325 <#if serviceLocator??>
326 <#if contact.contactId?? >
327 <#if contact.contactId.data?trim != "">
328 ${getArticleContent(groupId, contact.contactId.getData())}
329 </#if>
330 </#if>
331 </#if>
332</#macro>
333
334<#function getArticleDate dateType>
335 <#if serviceLocator??>
336 <#assign article = JournalArticleLocalService.getArticle(groupId, gArticleId) />
337 <#if dateType == "published">
338 <#assign date = article.displayDate?date />
339 <#elseif dateType == "modified">
340 <#assign date = article.modifiedDate?date />
341 <#elseif dateType == "created">
342 <#assign date = article.createDate?date />
343 <#else>
344 <#assign date = "???" />
345 </#if>
346 <#return date>
347 </#if>
348</#function>
349
350<#function getFileEntries group folderId>
351 <#if serviceLocator??>
352 <#return DLFolderLocalService.getFileEntriesAndFileShortcuts(getterUtil.getLong(group), getterUtil.getLong(folderId), QD) />
353 </#if>
354 <#return "" />
355</#function>
356
357<#function getArticleContent gid aid>
358 <#attempt>
359 <#assign article = JournalArticleLocalService.getArticle(gid?number, aid?upper_case) />
360 <#assign articleContent = JournalArticleLocalService.getArticleContent(article, apListTemplateKey, null, locale, model, themeDisplay) />
361 <#if articleContent?? >
362 <#return articleContent />
363 </#if>
364 <#return "" />
365 <#recover>
366 <#return "" />
367 </#attempt>
368</#function>
369
370
371
372<#function isDescriptionEmpty>
373 <#if description.getData()?trim != "" && description.data?trim != "null">
374 <#return "false" />
375 </#if>
376 <#return "true" />
377</#function>
378
379<#function isDocEmpty>
380 <#list docGroup.getSiblings() as cur_docGroup>
381 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
382 <#if cur_intDoc.data?trim != "" && cur_intDoc.data?trim != "null">
383 <#return "false" />
384 </#if>
385 </#list>
386 <#if cur_docGroup.annexeUrlTitle.getSiblings()?has_content>
387 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
388 <#if cur_extDoc.data?trim != "" && cur_extDoc.data?trim != "null">
389 <#return "false" />
390 </#if>
391 </#list>
392 </#if>
393 <#if cur_docGroup.folderId?? >
394 <#list cur_docGroup.folderId.getSiblings() as cur_folder>
395 <#if cur_folder.data?trim != "" && cur_folder.data?trim != "null">
396 <#return "false" />
397 </#if>
398 </#list>
399 </#if>
400 </#list>
401 <#return "true" />
402</#function>
403
404<#function isLinkEmpty>
405 <#list linkGroup.getSiblings() as cur_linkGroup>
406 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
407 <#if cur_link.data?trim != "">
408 <#return "false" />
409 </#if>
410 </#list>
411 </#list>
412 <#return "true" />
413</#function>
414
415<#function isLexEmpty>
416 <#list lexGroup.getSiblings() as cur_lexGroup>
417 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
418 <#if cur_lex.data?trim != "">
419 <#return "false" />
420 </#if>
421 </#list>
422 </#list>
423 <#return "true" />
424</#function>
425
426<#function isContactEmpty>
427 <#if contact.contactId?? >
428 <#if contact.getData()?trim != "" || contact.contactId.data?trim != "" >
429 <#return "false" />
430 </#if>
431 <#else>
432 <#if contact.getData()?trim != "" >
433 <#return "false" />
434 </#if>
435 </#if>
436 <#return "true" />
437</#function>
438
439<#function isRelatedEmpty relatedEntries>
440 <#if relatedEntries?? >
441 <#list relatedEntries as cur_entry >
442 <#if cur_entry?trim != "">
443 <#return "false">
444 </#if>
445 </#list>
446 </#if>
447 <#return "true" />
448</#function>
449
450<#macro relatedAssets >
451 <#assign relatedEntries = getRelatedContent() />
452 <#-- <#if relatedEntries?? > -->
453 <#if isRelatedEmpty(relatedEntries) == "false">
454 <div class="widget">
455 <h3 class="block-title"><@liferay.language key="vs-en-relation"/></h3>
456 <ul style="list-style: none;padding-left: 0;">
457 <#list relatedEntries as cur_asset_link>
458 <#assign assetEntry = getAssetEntry(cur_asset_link.entryId2) />
459 <#assign lClassName = "com.liferay.journal.model.JournalArticle"/>
460 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(assetEntry.getClassPK())/>
461 <li>
462 <a class="link" href="#">
463 ${journalArticle.getTitle(locale)}
464 <i class="icon icon_arrow-right-xs">
465 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
466 <use xlink:href="/o/vs-theme/images/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
467 <use xlink:href="#svg-arrow-right-xs"></use>
468 </svg>
469 </i>
470 </a>
471 </li>
472 </#list>
473 </ul>
474 </div>
475 </#if>
476</#macro>
477
478<#function getAssetEntry entryId>
479 <#assign entry = AssetLocalService.getAssetEntry(entryId) />
480 <#return entry />
481</#function>
482
483<#function getRelatedContent >
484 <#assign lClassName = "com.liferay.portlet.journal.model.JournalArticle"/>
485 <#assign lArticle = JournalArticleLocalService.getArticle(groupId, gArticleId)/>
486 <#assign lPk = lArticle.getResourcePrimKey()/>
487 <#assign lEntry = AssetLocalService.getEntry(lClassName,lPk)/>
488 <#assign lLinks = AssetLinkService.getDirectLinks(lEntry.getEntryId())/>
489 <#return lLinks />
490</#function>
The following has evaluated to null or missing: ==> cur_docGroup.annexeUrlTitle [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 386, column 10] ---- 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 be 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 cur_docGroup.annexeUrlTitle.getSi... [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" in function "isDocEmpty" at line 386, column 5] - Reached through: #if isDocEmpty() == "false" [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 61, column 9] ----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
2<#assign AssetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign AssetLinkService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DLFolderLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService") />
6<#assign queryDefinition = objectUtil("com.liferay.portal.kernel.dao.orm.QueryDefinition") />
7<#assign QD = queryDefinition />
8<#assign yourChoosenLocal = locale?split("_")[0] />
9<#assign pathFileicon = "/html/themes/classic/images/file_system/small/" />
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign gArticleId = .vars['reserved-article-id'].data />
12<style>
13.block a{
14color:#e22b28;
15}
16.entry-body .vsstruct:first-child h2 {
17 display:none;
18 /*color: #262626;
19 padding-top: 15px;
20 margin-top: 0;
21 margin-bottom: 1.1em;
22 text-transform: uppercase;
23 line-height: 1.1em;
24 font-size: 1.73em;*/
25}
26.doc-item {
27 overflow: auto;
28}
29</style>
30
31<div class="grid__row">
32 <div class="grid__col-xxs--12 grid__col-s--12">
33 <h2 class="block-title">${.vars['reserved-article-title'].data}</h2>
34 </div>
35 <#if isContactEmpty() == "true" >
36 <#assign columnwidth = "grid__col-s--12" />
37 <#else>
38 <#assign columnwidth = "grid__col-s--8" />
39 </#if>
40 <div class="grid__col-xxs--12 ${columnwidth} entry-body">
41 <div class="vsstruct">
42 ${description.getData()}
43 </div>
44 </div>
45 <#if isContactEmpty() == "false">
46 <div class="grid__col-xxs--12 grid__col-s--4">
47 <div class="grid__col-xxs--12 grid__col-s--12 services-header">
48 <div class="grid__col-xxs--12">
49 <h3>
50 <@liferay.language key="vs-contact"/>
51 </h3>
52 <@contactInfo/>
53 <br />
54 </div>
55 </div>
56 </div>
57 </#if>
58</div>
59
60<div>
61 <#if isDocEmpty() == "false" >
62 <h3 class="block-title"><@liferay.language key="${docBlockTitle.data}" /></h3>
63 <@downloads />
64
65 </#if>
66</div>
67
68<section class="services-footer grid__row">
69 <#if isLexEmpty() == "false">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <h3 class="block-title"><@liferay.language key="vs-legal-base"/></h3>
72 <@lex/>
73 <#-- <@relatedAssets /> -->
74 </div>
75 <div class="grid__col-m--1"></div>
76 </#if>
77 <#if isLinkEmpty() == "false">
78 <div class="grid__col-xxs--12 grid__col-m--5">
79 <h3 class="block-title"><@liferay.language key="vs-link"/></h3>
80 <@links/>
81 </div>
82 </#if>
83</section>
84
85<#-- <small class="muted"><@liferay.language key="vs-last-modified" />: ${getArticleDate("modified")}</small>-->
86
87<#-- functions and macros -->
88
89<#macro getBackLink>
90 <#if request.attributes??>
91 <#assign url = request.attributes.CURRENT_URL />
92 <#assign multipleValues = httpUtil.getQueryString(url) />
93 <#assign paramMap = httpUtil.getParameterMap(httpUtil.getQueryString(url)) />
94 <#list paramMap?keys as key>
95 <#if key?contains("_redirect")>
96 <#assign keyFound = key />
97 </#if>
98 </#list>
99 <#if keyFound??>
100 <#assign encodedUrlString = httpUtil.getParameter(url, keyFound, false) />
101 <#assign decodedUrlString = httpUtil.decodeURL(encodedUrlString) />
102 <div class="clearfix">
103 <#-- <span class="pull-left muted">${title.getData()} <@displayArticleDate dateType="published"/></span> -->
104 <#if decodedUrlString??>
105 <a class="pull-left" href="${decodedUrlString}"><i class="icon-chevron-sign-left"></i> <@liferay.language key="back" /></a>
106 </#if>
107 <hr />
108 </div>
109 </#if>
110 </#if>
111</#macro>
112
113<#macro downloads>
114 <#list docGroup.getSiblings() as cur_docGroup>
115 <#if cur_docGroup.data?trim != "">
116 <h3 style="font-size: 1.1em; text-transform: uppercase; color: #e22b28; letter-spacing: 0.01em; margin-bottom: 0.6em;" >${cur_docGroup.data}</h3>
117 </#if>
118 <#if cur_docGroup.folderId?? >
119 <#if cur_docGroup.folderId.data?trim != "">
120 <#assign filesInFolder = getFileEntries(groupId, cur_docGroup.folderId.data) />
121 <div class="grid__row section-docs">
122 <#assign allFiles = [] />
123 <#list filesInFolder as cur_file>
124 <#if cur_file.toFileEntryId??>
125 <#assign entryId = cur_file.toFileEntryId />
126 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
127 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
128 <#else>
129 <#assign entryId = cur_file.fileEntryId />
130 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
131 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
132 </#if>
133 </#list>
134 <#list allFiles as loop_file>
135 <#if loop_file.getTitle()?index_of("/") != 0>
136 <div class="grid__col-xxs--12 grid__col-s--6">
137 <a class="doc-item doc-item-small" href="/documents/${loop_file.groupId}/${loop_file.folderId}/${loop_file.title?url}/${loop_file.uuid}?t=.now?long" target="_blank">
138 <span class="u-table">
139 <span class="u-cell">
140 <span class="subtitle">${loop_file.extension}</span>
141 <span>${loop_file.getTitle()}</span>
142 </span>
143 </span>
144 <i class="icon icon_arrow-right">
145 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
146 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
147 <use xlink:href="#svg-arrow-right"></use>
148 </svg>
149 </i>
150 </a>
151 </div>
152 </#if>
153 </#list>
154 <#assign allFiles = [] />
155 </div>
156 <#assign filesInFolder = "" />
157 </#if>
158 </#if>
159
160
161 <#if cur_docGroup.annexeDocumentLinkTo??>
162 <div class="grid__row section-docs">
163
164 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
165 <#if cur_intDoc.getData()?trim != "" && cur_intDoc.getData() != "null">
166 <@getDocument docLink=cur_intDoc/>
167 </#if>
168 </#list>
169
170 <#if cur_docGroup.annexeUrlTitle??>
171 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
172 <#if cur_extDoc.data?trim != "" && cur_extDoc.data != "null">
173 <div class="grid__col-xxs--12 grid__col-s--6">
174 <a class="doc-item doc-item-small" href="${cur_extDoc.annexeUrl.data}" target="_blank">
175 <span class="u-table">
176 <span class="u-cell">
177 <span class="subtitle"><@liferay.language key="link"/></span>
178 <span>${cur_extDoc.data}</span>
179 </span>
180 </span>
181 <i class="icon icon_arrow-right">
182 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
183 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
184 <use xlink:href="#svg-arrow-right"></use>
185 </svg>
186 </i>
187 </a>
188 </div>
189 </#if>
190 </#list>
191 </#if>
192
193 </div>
194 </#if>
195
196 </#list>
197</#macro>
198
199<#macro getDocument docLink>
200 <#assign docJSON = jsonFactoryUtil.createJSONObject(docLink.data) />
201 <#assign gid = docJSON.groupId />
202 <#assign longGid = getterUtil.getLong(gid) />
203 <#assign uuid = docJSON.uuid />
204 <#if DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid)?? >
205 <#assign document = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid) />
206
207 <div class="grid__col-xxs--12 grid__col-s--6">
208 <a class="doc-item doc-item-small" href="${docLink.getData()}">
209 <span class="u-table">
210 <span class="u-cell">
211 <span class="subtitle">${document.extension}</span>
212 <span>${document.getTitle()}</span>
213 </span>
214 </span>
215 <i class="icon icon_arrow-right">
216 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
217 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
218 <use xlink:href="#svg-arrow-right"></use>
219 </svg>
220 </i>
221 </a>
222 </div>
223 </#if>
224</#macro>
225
226<#macro DocumentFromId entryId>
227 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
228 <#if document.getTitle()?index_of("/") != 0>
229 <div class="grid__col-xxs--12 grid__col-s--6">
230 <a class="doc-item doc-item-small" href="/documents/${document.groupId}/${document.folderId}/${document.title?url}/${document.uuid}?t=.now?long" target="_blank">
231 <span class="u-table">
232 <span class="u-cell">
233 <span class="subtitle"><@liferay.language key="link"/></span>
234 <span>${document.getTitle()}</span>
235 </span>
236 </span>
237 <i class="icon icon_arrow-right">
238 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
239 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
240 <use xlink:href="#svg-arrow-right"></use>
241 </svg>
242 </i>
243 </a>
244 </div>
245 </#if>
246 <#assign document = "" />
247</#macro>
248
249
250<#macro links>
251 <#list linkGroup.getSiblings() as cur_linkGroup>
252 <#if cur_linkGroup.data?trim != "">
253 <strong>${cur_linkGroup.data}</strong>
254 </#if>
255 <ul style="list-style: none; padding-left: 0;">
256 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
257 <#if cur_link.data?trim != "" && cur_link.data != "null">
258 <li >
259 <a href="${cur_link.linkUrl.data}" class="link" target="_blank">
260 <i class="icon icon_arrow-right-xs">
261 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
262 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
263 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-arrow-right-xs"></use>
264 </svg>
265 </i> ${cur_link.data}
266 </a>
267 </li>
268 </#if>
269 </#list>
270 </ul>
271 </#list>
272</#macro>
273
274<#macro lex>
275 <#if yourChoosenLocal == "de">
276 <#assign lexLanguage = "de" />
277 <#assign lexConfLanguage = "d" />
278 <#else>
279 <#assign lexLanguage = "fr" />
280 <#assign lexConfLanguage = "f" />
281 </#if>
282 <#list lexGroup.getSiblings() as cur_lexGroup>
283 <#if cur_lexGroup.data?trim != "">
284 <strong>${cur_lexGroup.data}</strong>
285 </#if>
286 <ul>
287 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
288 <#if cur_lex.data?trim != "" && cur_lex.data != "null">
289 <li>
290 <#assign lexLinkUrl ="" />
291 <#if cur_lex.lexType.data == "legconftype" >
292 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?replace(".", "_") />
293 <#if cur_lex.lexNumbers.getData()?contains("a")>
294 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?split("a")[0]?replace(".", "_") />
295 <#assign lexLinkUrl = lexLinkUrl + "/a" + cur_lex.lexNumbers.getData()?replace(".", "_")?split("a")[1] + ".html" />
296 </#if>
297 <#elseif cur_lex.lexType.data == "leglisttype" >
298 <#assign lexnumbers = cur_lex.lexNumbers.getData()?replace(";", "|") />
299 <#assign lexLinkUrl = "http://lex.vs.ch/frontend/syst_no/" + lexnumbers + "?locale=" + lexLanguage />
300 <#elseif cur_lex.lexType.data == "legdetailtype" || cur_lex.lexType.data == "legpdftype" >
301 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + cur_lex.lexNumbers.getData()+ "/" + lexLanguage />
302 <#if cur_lex.lexNumbers.getData()?contains("a")>
303 <#assign lexNumber = cur_lex.lexNumbers.getData()?split("a")[0] />
304 <#assign lexArticle = cur_lex.lexNumbers.getData()?split("a")[1] />
305 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + lexNumber + "/" + lexLanguage + "/art" + lexArticle />
306 </#if>
307 <#elseif cur_lex.lexType.data == "leglinktype" >
308 <#assign lexLinkUrl = cur_lex.lexNumbers.getData() />
309 </#if>
310 <a href="${lexLinkUrl}" class="red" target="_blank">
311 ${cur_lex.data}
312 </a>
313 </li>
314 </#if>
315 </#list>
316 </ul>
317 </#list>
318</#macro>
319
320
321
322
323<#macro contactInfo>
324 ${contact.getData()}
325 <#if serviceLocator??>
326 <#if contact.contactId?? >
327 <#if contact.contactId.data?trim != "">
328 ${getArticleContent(groupId, contact.contactId.getData())}
329 </#if>
330 </#if>
331 </#if>
332</#macro>
333
334<#function getArticleDate dateType>
335 <#if serviceLocator??>
336 <#assign article = JournalArticleLocalService.getArticle(groupId, gArticleId) />
337 <#if dateType == "published">
338 <#assign date = article.displayDate?date />
339 <#elseif dateType == "modified">
340 <#assign date = article.modifiedDate?date />
341 <#elseif dateType == "created">
342 <#assign date = article.createDate?date />
343 <#else>
344 <#assign date = "???" />
345 </#if>
346 <#return date>
347 </#if>
348</#function>
349
350<#function getFileEntries group folderId>
351 <#if serviceLocator??>
352 <#return DLFolderLocalService.getFileEntriesAndFileShortcuts(getterUtil.getLong(group), getterUtil.getLong(folderId), QD) />
353 </#if>
354 <#return "" />
355</#function>
356
357<#function getArticleContent gid aid>
358 <#attempt>
359 <#assign article = JournalArticleLocalService.getArticle(gid?number, aid?upper_case) />
360 <#assign articleContent = JournalArticleLocalService.getArticleContent(article, apListTemplateKey, null, locale, model, themeDisplay) />
361 <#if articleContent?? >
362 <#return articleContent />
363 </#if>
364 <#return "" />
365 <#recover>
366 <#return "" />
367 </#attempt>
368</#function>
369
370
371
372<#function isDescriptionEmpty>
373 <#if description.getData()?trim != "" && description.data?trim != "null">
374 <#return "false" />
375 </#if>
376 <#return "true" />
377</#function>
378
379<#function isDocEmpty>
380 <#list docGroup.getSiblings() as cur_docGroup>
381 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
382 <#if cur_intDoc.data?trim != "" && cur_intDoc.data?trim != "null">
383 <#return "false" />
384 </#if>
385 </#list>
386 <#if cur_docGroup.annexeUrlTitle.getSiblings()?has_content>
387 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
388 <#if cur_extDoc.data?trim != "" && cur_extDoc.data?trim != "null">
389 <#return "false" />
390 </#if>
391 </#list>
392 </#if>
393 <#if cur_docGroup.folderId?? >
394 <#list cur_docGroup.folderId.getSiblings() as cur_folder>
395 <#if cur_folder.data?trim != "" && cur_folder.data?trim != "null">
396 <#return "false" />
397 </#if>
398 </#list>
399 </#if>
400 </#list>
401 <#return "true" />
402</#function>
403
404<#function isLinkEmpty>
405 <#list linkGroup.getSiblings() as cur_linkGroup>
406 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
407 <#if cur_link.data?trim != "">
408 <#return "false" />
409 </#if>
410 </#list>
411 </#list>
412 <#return "true" />
413</#function>
414
415<#function isLexEmpty>
416 <#list lexGroup.getSiblings() as cur_lexGroup>
417 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
418 <#if cur_lex.data?trim != "">
419 <#return "false" />
420 </#if>
421 </#list>
422 </#list>
423 <#return "true" />
424</#function>
425
426<#function isContactEmpty>
427 <#if contact.contactId?? >
428 <#if contact.getData()?trim != "" || contact.contactId.data?trim != "" >
429 <#return "false" />
430 </#if>
431 <#else>
432 <#if contact.getData()?trim != "" >
433 <#return "false" />
434 </#if>
435 </#if>
436 <#return "true" />
437</#function>
438
439<#function isRelatedEmpty relatedEntries>
440 <#if relatedEntries?? >
441 <#list relatedEntries as cur_entry >
442 <#if cur_entry?trim != "">
443 <#return "false">
444 </#if>
445 </#list>
446 </#if>
447 <#return "true" />
448</#function>
449
450<#macro relatedAssets >
451 <#assign relatedEntries = getRelatedContent() />
452 <#-- <#if relatedEntries?? > -->
453 <#if isRelatedEmpty(relatedEntries) == "false">
454 <div class="widget">
455 <h3 class="block-title"><@liferay.language key="vs-en-relation"/></h3>
456 <ul style="list-style: none;padding-left: 0;">
457 <#list relatedEntries as cur_asset_link>
458 <#assign assetEntry = getAssetEntry(cur_asset_link.entryId2) />
459 <#assign lClassName = "com.liferay.journal.model.JournalArticle"/>
460 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(assetEntry.getClassPK())/>
461 <li>
462 <a class="link" href="#">
463 ${journalArticle.getTitle(locale)}
464 <i class="icon icon_arrow-right-xs">
465 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
466 <use xlink:href="/o/vs-theme/images/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
467 <use xlink:href="#svg-arrow-right-xs"></use>
468 </svg>
469 </i>
470 </a>
471 </li>
472 </#list>
473 </ul>
474 </div>
475 </#if>
476</#macro>
477
478<#function getAssetEntry entryId>
479 <#assign entry = AssetLocalService.getAssetEntry(entryId) />
480 <#return entry />
481</#function>
482
483<#function getRelatedContent >
484 <#assign lClassName = "com.liferay.portlet.journal.model.JournalArticle"/>
485 <#assign lArticle = JournalArticleLocalService.getArticle(groupId, gArticleId)/>
486 <#assign lPk = lArticle.getResourcePrimKey()/>
487 <#assign lEntry = AssetLocalService.getEntry(lClassName,lPk)/>
488 <#assign lLinks = AssetLinkService.getDirectLinks(lEntry.getEntryId())/>
489 <#return lLinks />
490</#function>
The following has evaluated to null or missing: ==> cur_docGroup.annexeUrlTitle [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 386, column 10] ---- 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 be 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 cur_docGroup.annexeUrlTitle.getSi... [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" in function "isDocEmpty" at line 386, column 5] - Reached through: #if isDocEmpty() == "false" [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 61, column 9] ----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
2<#assign AssetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign AssetLinkService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DLFolderLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService") />
6<#assign queryDefinition = objectUtil("com.liferay.portal.kernel.dao.orm.QueryDefinition") />
7<#assign QD = queryDefinition />
8<#assign yourChoosenLocal = locale?split("_")[0] />
9<#assign pathFileicon = "/html/themes/classic/images/file_system/small/" />
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign gArticleId = .vars['reserved-article-id'].data />
12<style>
13.block a{
14color:#e22b28;
15}
16.entry-body .vsstruct:first-child h2 {
17 display:none;
18 /*color: #262626;
19 padding-top: 15px;
20 margin-top: 0;
21 margin-bottom: 1.1em;
22 text-transform: uppercase;
23 line-height: 1.1em;
24 font-size: 1.73em;*/
25}
26.doc-item {
27 overflow: auto;
28}
29</style>
30
31<div class="grid__row">
32 <div class="grid__col-xxs--12 grid__col-s--12">
33 <h2 class="block-title">${.vars['reserved-article-title'].data}</h2>
34 </div>
35 <#if isContactEmpty() == "true" >
36 <#assign columnwidth = "grid__col-s--12" />
37 <#else>
38 <#assign columnwidth = "grid__col-s--8" />
39 </#if>
40 <div class="grid__col-xxs--12 ${columnwidth} entry-body">
41 <div class="vsstruct">
42 ${description.getData()}
43 </div>
44 </div>
45 <#if isContactEmpty() == "false">
46 <div class="grid__col-xxs--12 grid__col-s--4">
47 <div class="grid__col-xxs--12 grid__col-s--12 services-header">
48 <div class="grid__col-xxs--12">
49 <h3>
50 <@liferay.language key="vs-contact"/>
51 </h3>
52 <@contactInfo/>
53 <br />
54 </div>
55 </div>
56 </div>
57 </#if>
58</div>
59
60<div>
61 <#if isDocEmpty() == "false" >
62 <h3 class="block-title"><@liferay.language key="${docBlockTitle.data}" /></h3>
63 <@downloads />
64
65 </#if>
66</div>
67
68<section class="services-footer grid__row">
69 <#if isLexEmpty() == "false">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <h3 class="block-title"><@liferay.language key="vs-legal-base"/></h3>
72 <@lex/>
73 <#-- <@relatedAssets /> -->
74 </div>
75 <div class="grid__col-m--1"></div>
76 </#if>
77 <#if isLinkEmpty() == "false">
78 <div class="grid__col-xxs--12 grid__col-m--5">
79 <h3 class="block-title"><@liferay.language key="vs-link"/></h3>
80 <@links/>
81 </div>
82 </#if>
83</section>
84
85<#-- <small class="muted"><@liferay.language key="vs-last-modified" />: ${getArticleDate("modified")}</small>-->
86
87<#-- functions and macros -->
88
89<#macro getBackLink>
90 <#if request.attributes??>
91 <#assign url = request.attributes.CURRENT_URL />
92 <#assign multipleValues = httpUtil.getQueryString(url) />
93 <#assign paramMap = httpUtil.getParameterMap(httpUtil.getQueryString(url)) />
94 <#list paramMap?keys as key>
95 <#if key?contains("_redirect")>
96 <#assign keyFound = key />
97 </#if>
98 </#list>
99 <#if keyFound??>
100 <#assign encodedUrlString = httpUtil.getParameter(url, keyFound, false) />
101 <#assign decodedUrlString = httpUtil.decodeURL(encodedUrlString) />
102 <div class="clearfix">
103 <#-- <span class="pull-left muted">${title.getData()} <@displayArticleDate dateType="published"/></span> -->
104 <#if decodedUrlString??>
105 <a class="pull-left" href="${decodedUrlString}"><i class="icon-chevron-sign-left"></i> <@liferay.language key="back" /></a>
106 </#if>
107 <hr />
108 </div>
109 </#if>
110 </#if>
111</#macro>
112
113<#macro downloads>
114 <#list docGroup.getSiblings() as cur_docGroup>
115 <#if cur_docGroup.data?trim != "">
116 <h3 style="font-size: 1.1em; text-transform: uppercase; color: #e22b28; letter-spacing: 0.01em; margin-bottom: 0.6em;" >${cur_docGroup.data}</h3>
117 </#if>
118 <#if cur_docGroup.folderId?? >
119 <#if cur_docGroup.folderId.data?trim != "">
120 <#assign filesInFolder = getFileEntries(groupId, cur_docGroup.folderId.data) />
121 <div class="grid__row section-docs">
122 <#assign allFiles = [] />
123 <#list filesInFolder as cur_file>
124 <#if cur_file.toFileEntryId??>
125 <#assign entryId = cur_file.toFileEntryId />
126 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
127 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
128 <#else>
129 <#assign entryId = cur_file.fileEntryId />
130 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
131 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
132 </#if>
133 </#list>
134 <#list allFiles as loop_file>
135 <#if loop_file.getTitle()?index_of("/") != 0>
136 <div class="grid__col-xxs--12 grid__col-s--6">
137 <a class="doc-item doc-item-small" href="/documents/${loop_file.groupId}/${loop_file.folderId}/${loop_file.title?url}/${loop_file.uuid}?t=.now?long" target="_blank">
138 <span class="u-table">
139 <span class="u-cell">
140 <span class="subtitle">${loop_file.extension}</span>
141 <span>${loop_file.getTitle()}</span>
142 </span>
143 </span>
144 <i class="icon icon_arrow-right">
145 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
146 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
147 <use xlink:href="#svg-arrow-right"></use>
148 </svg>
149 </i>
150 </a>
151 </div>
152 </#if>
153 </#list>
154 <#assign allFiles = [] />
155 </div>
156 <#assign filesInFolder = "" />
157 </#if>
158 </#if>
159
160
161 <#if cur_docGroup.annexeDocumentLinkTo??>
162 <div class="grid__row section-docs">
163
164 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
165 <#if cur_intDoc.getData()?trim != "" && cur_intDoc.getData() != "null">
166 <@getDocument docLink=cur_intDoc/>
167 </#if>
168 </#list>
169
170 <#if cur_docGroup.annexeUrlTitle??>
171 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
172 <#if cur_extDoc.data?trim != "" && cur_extDoc.data != "null">
173 <div class="grid__col-xxs--12 grid__col-s--6">
174 <a class="doc-item doc-item-small" href="${cur_extDoc.annexeUrl.data}" target="_blank">
175 <span class="u-table">
176 <span class="u-cell">
177 <span class="subtitle"><@liferay.language key="link"/></span>
178 <span>${cur_extDoc.data}</span>
179 </span>
180 </span>
181 <i class="icon icon_arrow-right">
182 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
183 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
184 <use xlink:href="#svg-arrow-right"></use>
185 </svg>
186 </i>
187 </a>
188 </div>
189 </#if>
190 </#list>
191 </#if>
192
193 </div>
194 </#if>
195
196 </#list>
197</#macro>
198
199<#macro getDocument docLink>
200 <#assign docJSON = jsonFactoryUtil.createJSONObject(docLink.data) />
201 <#assign gid = docJSON.groupId />
202 <#assign longGid = getterUtil.getLong(gid) />
203 <#assign uuid = docJSON.uuid />
204 <#if DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid)?? >
205 <#assign document = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid) />
206
207 <div class="grid__col-xxs--12 grid__col-s--6">
208 <a class="doc-item doc-item-small" href="${docLink.getData()}">
209 <span class="u-table">
210 <span class="u-cell">
211 <span class="subtitle">${document.extension}</span>
212 <span>${document.getTitle()}</span>
213 </span>
214 </span>
215 <i class="icon icon_arrow-right">
216 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
217 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
218 <use xlink:href="#svg-arrow-right"></use>
219 </svg>
220 </i>
221 </a>
222 </div>
223 </#if>
224</#macro>
225
226<#macro DocumentFromId entryId>
227 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
228 <#if document.getTitle()?index_of("/") != 0>
229 <div class="grid__col-xxs--12 grid__col-s--6">
230 <a class="doc-item doc-item-small" href="/documents/${document.groupId}/${document.folderId}/${document.title?url}/${document.uuid}?t=.now?long" target="_blank">
231 <span class="u-table">
232 <span class="u-cell">
233 <span class="subtitle"><@liferay.language key="link"/></span>
234 <span>${document.getTitle()}</span>
235 </span>
236 </span>
237 <i class="icon icon_arrow-right">
238 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
239 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
240 <use xlink:href="#svg-arrow-right"></use>
241 </svg>
242 </i>
243 </a>
244 </div>
245 </#if>
246 <#assign document = "" />
247</#macro>
248
249
250<#macro links>
251 <#list linkGroup.getSiblings() as cur_linkGroup>
252 <#if cur_linkGroup.data?trim != "">
253 <strong>${cur_linkGroup.data}</strong>
254 </#if>
255 <ul style="list-style: none; padding-left: 0;">
256 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
257 <#if cur_link.data?trim != "" && cur_link.data != "null">
258 <li >
259 <a href="${cur_link.linkUrl.data}" class="link" target="_blank">
260 <i class="icon icon_arrow-right-xs">
261 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
262 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
263 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-arrow-right-xs"></use>
264 </svg>
265 </i> ${cur_link.data}
266 </a>
267 </li>
268 </#if>
269 </#list>
270 </ul>
271 </#list>
272</#macro>
273
274<#macro lex>
275 <#if yourChoosenLocal == "de">
276 <#assign lexLanguage = "de" />
277 <#assign lexConfLanguage = "d" />
278 <#else>
279 <#assign lexLanguage = "fr" />
280 <#assign lexConfLanguage = "f" />
281 </#if>
282 <#list lexGroup.getSiblings() as cur_lexGroup>
283 <#if cur_lexGroup.data?trim != "">
284 <strong>${cur_lexGroup.data}</strong>
285 </#if>
286 <ul>
287 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
288 <#if cur_lex.data?trim != "" && cur_lex.data != "null">
289 <li>
290 <#assign lexLinkUrl ="" />
291 <#if cur_lex.lexType.data == "legconftype" >
292 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?replace(".", "_") />
293 <#if cur_lex.lexNumbers.getData()?contains("a")>
294 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?split("a")[0]?replace(".", "_") />
295 <#assign lexLinkUrl = lexLinkUrl + "/a" + cur_lex.lexNumbers.getData()?replace(".", "_")?split("a")[1] + ".html" />
296 </#if>
297 <#elseif cur_lex.lexType.data == "leglisttype" >
298 <#assign lexnumbers = cur_lex.lexNumbers.getData()?replace(";", "|") />
299 <#assign lexLinkUrl = "http://lex.vs.ch/frontend/syst_no/" + lexnumbers + "?locale=" + lexLanguage />
300 <#elseif cur_lex.lexType.data == "legdetailtype" || cur_lex.lexType.data == "legpdftype" >
301 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + cur_lex.lexNumbers.getData()+ "/" + lexLanguage />
302 <#if cur_lex.lexNumbers.getData()?contains("a")>
303 <#assign lexNumber = cur_lex.lexNumbers.getData()?split("a")[0] />
304 <#assign lexArticle = cur_lex.lexNumbers.getData()?split("a")[1] />
305 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + lexNumber + "/" + lexLanguage + "/art" + lexArticle />
306 </#if>
307 <#elseif cur_lex.lexType.data == "leglinktype" >
308 <#assign lexLinkUrl = cur_lex.lexNumbers.getData() />
309 </#if>
310 <a href="${lexLinkUrl}" class="red" target="_blank">
311 ${cur_lex.data}
312 </a>
313 </li>
314 </#if>
315 </#list>
316 </ul>
317 </#list>
318</#macro>
319
320
321
322
323<#macro contactInfo>
324 ${contact.getData()}
325 <#if serviceLocator??>
326 <#if contact.contactId?? >
327 <#if contact.contactId.data?trim != "">
328 ${getArticleContent(groupId, contact.contactId.getData())}
329 </#if>
330 </#if>
331 </#if>
332</#macro>
333
334<#function getArticleDate dateType>
335 <#if serviceLocator??>
336 <#assign article = JournalArticleLocalService.getArticle(groupId, gArticleId) />
337 <#if dateType == "published">
338 <#assign date = article.displayDate?date />
339 <#elseif dateType == "modified">
340 <#assign date = article.modifiedDate?date />
341 <#elseif dateType == "created">
342 <#assign date = article.createDate?date />
343 <#else>
344 <#assign date = "???" />
345 </#if>
346 <#return date>
347 </#if>
348</#function>
349
350<#function getFileEntries group folderId>
351 <#if serviceLocator??>
352 <#return DLFolderLocalService.getFileEntriesAndFileShortcuts(getterUtil.getLong(group), getterUtil.getLong(folderId), QD) />
353 </#if>
354 <#return "" />
355</#function>
356
357<#function getArticleContent gid aid>
358 <#attempt>
359 <#assign article = JournalArticleLocalService.getArticle(gid?number, aid?upper_case) />
360 <#assign articleContent = JournalArticleLocalService.getArticleContent(article, apListTemplateKey, null, locale, model, themeDisplay) />
361 <#if articleContent?? >
362 <#return articleContent />
363 </#if>
364 <#return "" />
365 <#recover>
366 <#return "" />
367 </#attempt>
368</#function>
369
370
371
372<#function isDescriptionEmpty>
373 <#if description.getData()?trim != "" && description.data?trim != "null">
374 <#return "false" />
375 </#if>
376 <#return "true" />
377</#function>
378
379<#function isDocEmpty>
380 <#list docGroup.getSiblings() as cur_docGroup>
381 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
382 <#if cur_intDoc.data?trim != "" && cur_intDoc.data?trim != "null">
383 <#return "false" />
384 </#if>
385 </#list>
386 <#if cur_docGroup.annexeUrlTitle.getSiblings()?has_content>
387 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
388 <#if cur_extDoc.data?trim != "" && cur_extDoc.data?trim != "null">
389 <#return "false" />
390 </#if>
391 </#list>
392 </#if>
393 <#if cur_docGroup.folderId?? >
394 <#list cur_docGroup.folderId.getSiblings() as cur_folder>
395 <#if cur_folder.data?trim != "" && cur_folder.data?trim != "null">
396 <#return "false" />
397 </#if>
398 </#list>
399 </#if>
400 </#list>
401 <#return "true" />
402</#function>
403
404<#function isLinkEmpty>
405 <#list linkGroup.getSiblings() as cur_linkGroup>
406 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
407 <#if cur_link.data?trim != "">
408 <#return "false" />
409 </#if>
410 </#list>
411 </#list>
412 <#return "true" />
413</#function>
414
415<#function isLexEmpty>
416 <#list lexGroup.getSiblings() as cur_lexGroup>
417 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
418 <#if cur_lex.data?trim != "">
419 <#return "false" />
420 </#if>
421 </#list>
422 </#list>
423 <#return "true" />
424</#function>
425
426<#function isContactEmpty>
427 <#if contact.contactId?? >
428 <#if contact.getData()?trim != "" || contact.contactId.data?trim != "" >
429 <#return "false" />
430 </#if>
431 <#else>
432 <#if contact.getData()?trim != "" >
433 <#return "false" />
434 </#if>
435 </#if>
436 <#return "true" />
437</#function>
438
439<#function isRelatedEmpty relatedEntries>
440 <#if relatedEntries?? >
441 <#list relatedEntries as cur_entry >
442 <#if cur_entry?trim != "">
443 <#return "false">
444 </#if>
445 </#list>
446 </#if>
447 <#return "true" />
448</#function>
449
450<#macro relatedAssets >
451 <#assign relatedEntries = getRelatedContent() />
452 <#-- <#if relatedEntries?? > -->
453 <#if isRelatedEmpty(relatedEntries) == "false">
454 <div class="widget">
455 <h3 class="block-title"><@liferay.language key="vs-en-relation"/></h3>
456 <ul style="list-style: none;padding-left: 0;">
457 <#list relatedEntries as cur_asset_link>
458 <#assign assetEntry = getAssetEntry(cur_asset_link.entryId2) />
459 <#assign lClassName = "com.liferay.journal.model.JournalArticle"/>
460 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(assetEntry.getClassPK())/>
461 <li>
462 <a class="link" href="#">
463 ${journalArticle.getTitle(locale)}
464 <i class="icon icon_arrow-right-xs">
465 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
466 <use xlink:href="/o/vs-theme/images/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
467 <use xlink:href="#svg-arrow-right-xs"></use>
468 </svg>
469 </i>
470 </a>
471 </li>
472 </#list>
473 </ul>
474 </div>
475 </#if>
476</#macro>
477
478<#function getAssetEntry entryId>
479 <#assign entry = AssetLocalService.getAssetEntry(entryId) />
480 <#return entry />
481</#function>
482
483<#function getRelatedContent >
484 <#assign lClassName = "com.liferay.portlet.journal.model.JournalArticle"/>
485 <#assign lArticle = JournalArticleLocalService.getArticle(groupId, gArticleId)/>
486 <#assign lPk = lArticle.getResourcePrimKey()/>
487 <#assign lEntry = AssetLocalService.getEntry(lClassName,lPk)/>
488 <#assign lLinks = AssetLinkService.getDirectLinks(lEntry.getEntryId())/>
489 <#return lLinks />
490</#function>
The following has evaluated to null or missing: ==> cur_docGroup.annexeUrlTitle [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 386, column 10] ---- 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 be 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 cur_docGroup.annexeUrlTitle.getSi... [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" in function "isDocEmpty" at line 386, column 5] - Reached through: #if isDocEmpty() == "false" [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 61, column 9] ----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
2<#assign AssetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign AssetLinkService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DLFolderLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService") />
6<#assign queryDefinition = objectUtil("com.liferay.portal.kernel.dao.orm.QueryDefinition") />
7<#assign QD = queryDefinition />
8<#assign yourChoosenLocal = locale?split("_")[0] />
9<#assign pathFileicon = "/html/themes/classic/images/file_system/small/" />
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign gArticleId = .vars['reserved-article-id'].data />
12<style>
13.block a{
14color:#e22b28;
15}
16.entry-body .vsstruct:first-child h2 {
17 display:none;
18 /*color: #262626;
19 padding-top: 15px;
20 margin-top: 0;
21 margin-bottom: 1.1em;
22 text-transform: uppercase;
23 line-height: 1.1em;
24 font-size: 1.73em;*/
25}
26.doc-item {
27 overflow: auto;
28}
29</style>
30
31<div class="grid__row">
32 <div class="grid__col-xxs--12 grid__col-s--12">
33 <h2 class="block-title">${.vars['reserved-article-title'].data}</h2>
34 </div>
35 <#if isContactEmpty() == "true" >
36 <#assign columnwidth = "grid__col-s--12" />
37 <#else>
38 <#assign columnwidth = "grid__col-s--8" />
39 </#if>
40 <div class="grid__col-xxs--12 ${columnwidth} entry-body">
41 <div class="vsstruct">
42 ${description.getData()}
43 </div>
44 </div>
45 <#if isContactEmpty() == "false">
46 <div class="grid__col-xxs--12 grid__col-s--4">
47 <div class="grid__col-xxs--12 grid__col-s--12 services-header">
48 <div class="grid__col-xxs--12">
49 <h3>
50 <@liferay.language key="vs-contact"/>
51 </h3>
52 <@contactInfo/>
53 <br />
54 </div>
55 </div>
56 </div>
57 </#if>
58</div>
59
60<div>
61 <#if isDocEmpty() == "false" >
62 <h3 class="block-title"><@liferay.language key="${docBlockTitle.data}" /></h3>
63 <@downloads />
64
65 </#if>
66</div>
67
68<section class="services-footer grid__row">
69 <#if isLexEmpty() == "false">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <h3 class="block-title"><@liferay.language key="vs-legal-base"/></h3>
72 <@lex/>
73 <#-- <@relatedAssets /> -->
74 </div>
75 <div class="grid__col-m--1"></div>
76 </#if>
77 <#if isLinkEmpty() == "false">
78 <div class="grid__col-xxs--12 grid__col-m--5">
79 <h3 class="block-title"><@liferay.language key="vs-link"/></h3>
80 <@links/>
81 </div>
82 </#if>
83</section>
84
85<#-- <small class="muted"><@liferay.language key="vs-last-modified" />: ${getArticleDate("modified")}</small>-->
86
87<#-- functions and macros -->
88
89<#macro getBackLink>
90 <#if request.attributes??>
91 <#assign url = request.attributes.CURRENT_URL />
92 <#assign multipleValues = httpUtil.getQueryString(url) />
93 <#assign paramMap = httpUtil.getParameterMap(httpUtil.getQueryString(url)) />
94 <#list paramMap?keys as key>
95 <#if key?contains("_redirect")>
96 <#assign keyFound = key />
97 </#if>
98 </#list>
99 <#if keyFound??>
100 <#assign encodedUrlString = httpUtil.getParameter(url, keyFound, false) />
101 <#assign decodedUrlString = httpUtil.decodeURL(encodedUrlString) />
102 <div class="clearfix">
103 <#-- <span class="pull-left muted">${title.getData()} <@displayArticleDate dateType="published"/></span> -->
104 <#if decodedUrlString??>
105 <a class="pull-left" href="${decodedUrlString}"><i class="icon-chevron-sign-left"></i> <@liferay.language key="back" /></a>
106 </#if>
107 <hr />
108 </div>
109 </#if>
110 </#if>
111</#macro>
112
113<#macro downloads>
114 <#list docGroup.getSiblings() as cur_docGroup>
115 <#if cur_docGroup.data?trim != "">
116 <h3 style="font-size: 1.1em; text-transform: uppercase; color: #e22b28; letter-spacing: 0.01em; margin-bottom: 0.6em;" >${cur_docGroup.data}</h3>
117 </#if>
118 <#if cur_docGroup.folderId?? >
119 <#if cur_docGroup.folderId.data?trim != "">
120 <#assign filesInFolder = getFileEntries(groupId, cur_docGroup.folderId.data) />
121 <div class="grid__row section-docs">
122 <#assign allFiles = [] />
123 <#list filesInFolder as cur_file>
124 <#if cur_file.toFileEntryId??>
125 <#assign entryId = cur_file.toFileEntryId />
126 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
127 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
128 <#else>
129 <#assign entryId = cur_file.fileEntryId />
130 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
131 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
132 </#if>
133 </#list>
134 <#list allFiles as loop_file>
135 <#if loop_file.getTitle()?index_of("/") != 0>
136 <div class="grid__col-xxs--12 grid__col-s--6">
137 <a class="doc-item doc-item-small" href="/documents/${loop_file.groupId}/${loop_file.folderId}/${loop_file.title?url}/${loop_file.uuid}?t=.now?long" target="_blank">
138 <span class="u-table">
139 <span class="u-cell">
140 <span class="subtitle">${loop_file.extension}</span>
141 <span>${loop_file.getTitle()}</span>
142 </span>
143 </span>
144 <i class="icon icon_arrow-right">
145 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
146 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
147 <use xlink:href="#svg-arrow-right"></use>
148 </svg>
149 </i>
150 </a>
151 </div>
152 </#if>
153 </#list>
154 <#assign allFiles = [] />
155 </div>
156 <#assign filesInFolder = "" />
157 </#if>
158 </#if>
159
160
161 <#if cur_docGroup.annexeDocumentLinkTo??>
162 <div class="grid__row section-docs">
163
164 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
165 <#if cur_intDoc.getData()?trim != "" && cur_intDoc.getData() != "null">
166 <@getDocument docLink=cur_intDoc/>
167 </#if>
168 </#list>
169
170 <#if cur_docGroup.annexeUrlTitle??>
171 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
172 <#if cur_extDoc.data?trim != "" && cur_extDoc.data != "null">
173 <div class="grid__col-xxs--12 grid__col-s--6">
174 <a class="doc-item doc-item-small" href="${cur_extDoc.annexeUrl.data}" target="_blank">
175 <span class="u-table">
176 <span class="u-cell">
177 <span class="subtitle"><@liferay.language key="link"/></span>
178 <span>${cur_extDoc.data}</span>
179 </span>
180 </span>
181 <i class="icon icon_arrow-right">
182 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
183 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
184 <use xlink:href="#svg-arrow-right"></use>
185 </svg>
186 </i>
187 </a>
188 </div>
189 </#if>
190 </#list>
191 </#if>
192
193 </div>
194 </#if>
195
196 </#list>
197</#macro>
198
199<#macro getDocument docLink>
200 <#assign docJSON = jsonFactoryUtil.createJSONObject(docLink.data) />
201 <#assign gid = docJSON.groupId />
202 <#assign longGid = getterUtil.getLong(gid) />
203 <#assign uuid = docJSON.uuid />
204 <#if DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid)?? >
205 <#assign document = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid) />
206
207 <div class="grid__col-xxs--12 grid__col-s--6">
208 <a class="doc-item doc-item-small" href="${docLink.getData()}">
209 <span class="u-table">
210 <span class="u-cell">
211 <span class="subtitle">${document.extension}</span>
212 <span>${document.getTitle()}</span>
213 </span>
214 </span>
215 <i class="icon icon_arrow-right">
216 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
217 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
218 <use xlink:href="#svg-arrow-right"></use>
219 </svg>
220 </i>
221 </a>
222 </div>
223 </#if>
224</#macro>
225
226<#macro DocumentFromId entryId>
227 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
228 <#if document.getTitle()?index_of("/") != 0>
229 <div class="grid__col-xxs--12 grid__col-s--6">
230 <a class="doc-item doc-item-small" href="/documents/${document.groupId}/${document.folderId}/${document.title?url}/${document.uuid}?t=.now?long" target="_blank">
231 <span class="u-table">
232 <span class="u-cell">
233 <span class="subtitle"><@liferay.language key="link"/></span>
234 <span>${document.getTitle()}</span>
235 </span>
236 </span>
237 <i class="icon icon_arrow-right">
238 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
239 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
240 <use xlink:href="#svg-arrow-right"></use>
241 </svg>
242 </i>
243 </a>
244 </div>
245 </#if>
246 <#assign document = "" />
247</#macro>
248
249
250<#macro links>
251 <#list linkGroup.getSiblings() as cur_linkGroup>
252 <#if cur_linkGroup.data?trim != "">
253 <strong>${cur_linkGroup.data}</strong>
254 </#if>
255 <ul style="list-style: none; padding-left: 0;">
256 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
257 <#if cur_link.data?trim != "" && cur_link.data != "null">
258 <li >
259 <a href="${cur_link.linkUrl.data}" class="link" target="_blank">
260 <i class="icon icon_arrow-right-xs">
261 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
262 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
263 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-arrow-right-xs"></use>
264 </svg>
265 </i> ${cur_link.data}
266 </a>
267 </li>
268 </#if>
269 </#list>
270 </ul>
271 </#list>
272</#macro>
273
274<#macro lex>
275 <#if yourChoosenLocal == "de">
276 <#assign lexLanguage = "de" />
277 <#assign lexConfLanguage = "d" />
278 <#else>
279 <#assign lexLanguage = "fr" />
280 <#assign lexConfLanguage = "f" />
281 </#if>
282 <#list lexGroup.getSiblings() as cur_lexGroup>
283 <#if cur_lexGroup.data?trim != "">
284 <strong>${cur_lexGroup.data}</strong>
285 </#if>
286 <ul>
287 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
288 <#if cur_lex.data?trim != "" && cur_lex.data != "null">
289 <li>
290 <#assign lexLinkUrl ="" />
291 <#if cur_lex.lexType.data == "legconftype" >
292 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?replace(".", "_") />
293 <#if cur_lex.lexNumbers.getData()?contains("a")>
294 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?split("a")[0]?replace(".", "_") />
295 <#assign lexLinkUrl = lexLinkUrl + "/a" + cur_lex.lexNumbers.getData()?replace(".", "_")?split("a")[1] + ".html" />
296 </#if>
297 <#elseif cur_lex.lexType.data == "leglisttype" >
298 <#assign lexnumbers = cur_lex.lexNumbers.getData()?replace(";", "|") />
299 <#assign lexLinkUrl = "http://lex.vs.ch/frontend/syst_no/" + lexnumbers + "?locale=" + lexLanguage />
300 <#elseif cur_lex.lexType.data == "legdetailtype" || cur_lex.lexType.data == "legpdftype" >
301 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + cur_lex.lexNumbers.getData()+ "/" + lexLanguage />
302 <#if cur_lex.lexNumbers.getData()?contains("a")>
303 <#assign lexNumber = cur_lex.lexNumbers.getData()?split("a")[0] />
304 <#assign lexArticle = cur_lex.lexNumbers.getData()?split("a")[1] />
305 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + lexNumber + "/" + lexLanguage + "/art" + lexArticle />
306 </#if>
307 <#elseif cur_lex.lexType.data == "leglinktype" >
308 <#assign lexLinkUrl = cur_lex.lexNumbers.getData() />
309 </#if>
310 <a href="${lexLinkUrl}" class="red" target="_blank">
311 ${cur_lex.data}
312 </a>
313 </li>
314 </#if>
315 </#list>
316 </ul>
317 </#list>
318</#macro>
319
320
321
322
323<#macro contactInfo>
324 ${contact.getData()}
325 <#if serviceLocator??>
326 <#if contact.contactId?? >
327 <#if contact.contactId.data?trim != "">
328 ${getArticleContent(groupId, contact.contactId.getData())}
329 </#if>
330 </#if>
331 </#if>
332</#macro>
333
334<#function getArticleDate dateType>
335 <#if serviceLocator??>
336 <#assign article = JournalArticleLocalService.getArticle(groupId, gArticleId) />
337 <#if dateType == "published">
338 <#assign date = article.displayDate?date />
339 <#elseif dateType == "modified">
340 <#assign date = article.modifiedDate?date />
341 <#elseif dateType == "created">
342 <#assign date = article.createDate?date />
343 <#else>
344 <#assign date = "???" />
345 </#if>
346 <#return date>
347 </#if>
348</#function>
349
350<#function getFileEntries group folderId>
351 <#if serviceLocator??>
352 <#return DLFolderLocalService.getFileEntriesAndFileShortcuts(getterUtil.getLong(group), getterUtil.getLong(folderId), QD) />
353 </#if>
354 <#return "" />
355</#function>
356
357<#function getArticleContent gid aid>
358 <#attempt>
359 <#assign article = JournalArticleLocalService.getArticle(gid?number, aid?upper_case) />
360 <#assign articleContent = JournalArticleLocalService.getArticleContent(article, apListTemplateKey, null, locale, model, themeDisplay) />
361 <#if articleContent?? >
362 <#return articleContent />
363 </#if>
364 <#return "" />
365 <#recover>
366 <#return "" />
367 </#attempt>
368</#function>
369
370
371
372<#function isDescriptionEmpty>
373 <#if description.getData()?trim != "" && description.data?trim != "null">
374 <#return "false" />
375 </#if>
376 <#return "true" />
377</#function>
378
379<#function isDocEmpty>
380 <#list docGroup.getSiblings() as cur_docGroup>
381 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
382 <#if cur_intDoc.data?trim != "" && cur_intDoc.data?trim != "null">
383 <#return "false" />
384 </#if>
385 </#list>
386 <#if cur_docGroup.annexeUrlTitle.getSiblings()?has_content>
387 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
388 <#if cur_extDoc.data?trim != "" && cur_extDoc.data?trim != "null">
389 <#return "false" />
390 </#if>
391 </#list>
392 </#if>
393 <#if cur_docGroup.folderId?? >
394 <#list cur_docGroup.folderId.getSiblings() as cur_folder>
395 <#if cur_folder.data?trim != "" && cur_folder.data?trim != "null">
396 <#return "false" />
397 </#if>
398 </#list>
399 </#if>
400 </#list>
401 <#return "true" />
402</#function>
403
404<#function isLinkEmpty>
405 <#list linkGroup.getSiblings() as cur_linkGroup>
406 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
407 <#if cur_link.data?trim != "">
408 <#return "false" />
409 </#if>
410 </#list>
411 </#list>
412 <#return "true" />
413</#function>
414
415<#function isLexEmpty>
416 <#list lexGroup.getSiblings() as cur_lexGroup>
417 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
418 <#if cur_lex.data?trim != "">
419 <#return "false" />
420 </#if>
421 </#list>
422 </#list>
423 <#return "true" />
424</#function>
425
426<#function isContactEmpty>
427 <#if contact.contactId?? >
428 <#if contact.getData()?trim != "" || contact.contactId.data?trim != "" >
429 <#return "false" />
430 </#if>
431 <#else>
432 <#if contact.getData()?trim != "" >
433 <#return "false" />
434 </#if>
435 </#if>
436 <#return "true" />
437</#function>
438
439<#function isRelatedEmpty relatedEntries>
440 <#if relatedEntries?? >
441 <#list relatedEntries as cur_entry >
442 <#if cur_entry?trim != "">
443 <#return "false">
444 </#if>
445 </#list>
446 </#if>
447 <#return "true" />
448</#function>
449
450<#macro relatedAssets >
451 <#assign relatedEntries = getRelatedContent() />
452 <#-- <#if relatedEntries?? > -->
453 <#if isRelatedEmpty(relatedEntries) == "false">
454 <div class="widget">
455 <h3 class="block-title"><@liferay.language key="vs-en-relation"/></h3>
456 <ul style="list-style: none;padding-left: 0;">
457 <#list relatedEntries as cur_asset_link>
458 <#assign assetEntry = getAssetEntry(cur_asset_link.entryId2) />
459 <#assign lClassName = "com.liferay.journal.model.JournalArticle"/>
460 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(assetEntry.getClassPK())/>
461 <li>
462 <a class="link" href="#">
463 ${journalArticle.getTitle(locale)}
464 <i class="icon icon_arrow-right-xs">
465 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
466 <use xlink:href="/o/vs-theme/images/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
467 <use xlink:href="#svg-arrow-right-xs"></use>
468 </svg>
469 </i>
470 </a>
471 </li>
472 </#list>
473 </ul>
474 </div>
475 </#if>
476</#macro>
477
478<#function getAssetEntry entryId>
479 <#assign entry = AssetLocalService.getAssetEntry(entryId) />
480 <#return entry />
481</#function>
482
483<#function getRelatedContent >
484 <#assign lClassName = "com.liferay.portlet.journal.model.JournalArticle"/>
485 <#assign lArticle = JournalArticleLocalService.getArticle(groupId, gArticleId)/>
486 <#assign lPk = lArticle.getResourcePrimKey()/>
487 <#assign lEntry = AssetLocalService.getEntry(lClassName,lPk)/>
488 <#assign lLinks = AssetLinkService.getDirectLinks(lEntry.getEntryId())/>
489 <#return lLinks />
490</#function>
The following has evaluated to null or missing: ==> cur_docGroup.annexeUrlTitle [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 386, column 10] ---- 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 be 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 cur_docGroup.annexeUrlTitle.getSi... [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" in function "isDocEmpty" at line 386, column 5] - Reached through: #if isDocEmpty() == "false" [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 61, column 9] ----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
2<#assign AssetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign AssetLinkService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DLFolderLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService") />
6<#assign queryDefinition = objectUtil("com.liferay.portal.kernel.dao.orm.QueryDefinition") />
7<#assign QD = queryDefinition />
8<#assign yourChoosenLocal = locale?split("_")[0] />
9<#assign pathFileicon = "/html/themes/classic/images/file_system/small/" />
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign gArticleId = .vars['reserved-article-id'].data />
12<style>
13.block a{
14color:#e22b28;
15}
16.entry-body .vsstruct:first-child h2 {
17 display:none;
18 /*color: #262626;
19 padding-top: 15px;
20 margin-top: 0;
21 margin-bottom: 1.1em;
22 text-transform: uppercase;
23 line-height: 1.1em;
24 font-size: 1.73em;*/
25}
26.doc-item {
27 overflow: auto;
28}
29</style>
30
31<div class="grid__row">
32 <div class="grid__col-xxs--12 grid__col-s--12">
33 <h2 class="block-title">${.vars['reserved-article-title'].data}</h2>
34 </div>
35 <#if isContactEmpty() == "true" >
36 <#assign columnwidth = "grid__col-s--12" />
37 <#else>
38 <#assign columnwidth = "grid__col-s--8" />
39 </#if>
40 <div class="grid__col-xxs--12 ${columnwidth} entry-body">
41 <div class="vsstruct">
42 ${description.getData()}
43 </div>
44 </div>
45 <#if isContactEmpty() == "false">
46 <div class="grid__col-xxs--12 grid__col-s--4">
47 <div class="grid__col-xxs--12 grid__col-s--12 services-header">
48 <div class="grid__col-xxs--12">
49 <h3>
50 <@liferay.language key="vs-contact"/>
51 </h3>
52 <@contactInfo/>
53 <br />
54 </div>
55 </div>
56 </div>
57 </#if>
58</div>
59
60<div>
61 <#if isDocEmpty() == "false" >
62 <h3 class="block-title"><@liferay.language key="${docBlockTitle.data}" /></h3>
63 <@downloads />
64
65 </#if>
66</div>
67
68<section class="services-footer grid__row">
69 <#if isLexEmpty() == "false">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <h3 class="block-title"><@liferay.language key="vs-legal-base"/></h3>
72 <@lex/>
73 <#-- <@relatedAssets /> -->
74 </div>
75 <div class="grid__col-m--1"></div>
76 </#if>
77 <#if isLinkEmpty() == "false">
78 <div class="grid__col-xxs--12 grid__col-m--5">
79 <h3 class="block-title"><@liferay.language key="vs-link"/></h3>
80 <@links/>
81 </div>
82 </#if>
83</section>
84
85<#-- <small class="muted"><@liferay.language key="vs-last-modified" />: ${getArticleDate("modified")}</small>-->
86
87<#-- functions and macros -->
88
89<#macro getBackLink>
90 <#if request.attributes??>
91 <#assign url = request.attributes.CURRENT_URL />
92 <#assign multipleValues = httpUtil.getQueryString(url) />
93 <#assign paramMap = httpUtil.getParameterMap(httpUtil.getQueryString(url)) />
94 <#list paramMap?keys as key>
95 <#if key?contains("_redirect")>
96 <#assign keyFound = key />
97 </#if>
98 </#list>
99 <#if keyFound??>
100 <#assign encodedUrlString = httpUtil.getParameter(url, keyFound, false) />
101 <#assign decodedUrlString = httpUtil.decodeURL(encodedUrlString) />
102 <div class="clearfix">
103 <#-- <span class="pull-left muted">${title.getData()} <@displayArticleDate dateType="published"/></span> -->
104 <#if decodedUrlString??>
105 <a class="pull-left" href="${decodedUrlString}"><i class="icon-chevron-sign-left"></i> <@liferay.language key="back" /></a>
106 </#if>
107 <hr />
108 </div>
109 </#if>
110 </#if>
111</#macro>
112
113<#macro downloads>
114 <#list docGroup.getSiblings() as cur_docGroup>
115 <#if cur_docGroup.data?trim != "">
116 <h3 style="font-size: 1.1em; text-transform: uppercase; color: #e22b28; letter-spacing: 0.01em; margin-bottom: 0.6em;" >${cur_docGroup.data}</h3>
117 </#if>
118 <#if cur_docGroup.folderId?? >
119 <#if cur_docGroup.folderId.data?trim != "">
120 <#assign filesInFolder = getFileEntries(groupId, cur_docGroup.folderId.data) />
121 <div class="grid__row section-docs">
122 <#assign allFiles = [] />
123 <#list filesInFolder as cur_file>
124 <#if cur_file.toFileEntryId??>
125 <#assign entryId = cur_file.toFileEntryId />
126 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
127 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
128 <#else>
129 <#assign entryId = cur_file.fileEntryId />
130 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
131 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
132 </#if>
133 </#list>
134 <#list allFiles as loop_file>
135 <#if loop_file.getTitle()?index_of("/") != 0>
136 <div class="grid__col-xxs--12 grid__col-s--6">
137 <a class="doc-item doc-item-small" href="/documents/${loop_file.groupId}/${loop_file.folderId}/${loop_file.title?url}/${loop_file.uuid}?t=.now?long" target="_blank">
138 <span class="u-table">
139 <span class="u-cell">
140 <span class="subtitle">${loop_file.extension}</span>
141 <span>${loop_file.getTitle()}</span>
142 </span>
143 </span>
144 <i class="icon icon_arrow-right">
145 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
146 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
147 <use xlink:href="#svg-arrow-right"></use>
148 </svg>
149 </i>
150 </a>
151 </div>
152 </#if>
153 </#list>
154 <#assign allFiles = [] />
155 </div>
156 <#assign filesInFolder = "" />
157 </#if>
158 </#if>
159
160
161 <#if cur_docGroup.annexeDocumentLinkTo??>
162 <div class="grid__row section-docs">
163
164 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
165 <#if cur_intDoc.getData()?trim != "" && cur_intDoc.getData() != "null">
166 <@getDocument docLink=cur_intDoc/>
167 </#if>
168 </#list>
169
170 <#if cur_docGroup.annexeUrlTitle??>
171 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
172 <#if cur_extDoc.data?trim != "" && cur_extDoc.data != "null">
173 <div class="grid__col-xxs--12 grid__col-s--6">
174 <a class="doc-item doc-item-small" href="${cur_extDoc.annexeUrl.data}" target="_blank">
175 <span class="u-table">
176 <span class="u-cell">
177 <span class="subtitle"><@liferay.language key="link"/></span>
178 <span>${cur_extDoc.data}</span>
179 </span>
180 </span>
181 <i class="icon icon_arrow-right">
182 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
183 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
184 <use xlink:href="#svg-arrow-right"></use>
185 </svg>
186 </i>
187 </a>
188 </div>
189 </#if>
190 </#list>
191 </#if>
192
193 </div>
194 </#if>
195
196 </#list>
197</#macro>
198
199<#macro getDocument docLink>
200 <#assign docJSON = jsonFactoryUtil.createJSONObject(docLink.data) />
201 <#assign gid = docJSON.groupId />
202 <#assign longGid = getterUtil.getLong(gid) />
203 <#assign uuid = docJSON.uuid />
204 <#if DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid)?? >
205 <#assign document = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid) />
206
207 <div class="grid__col-xxs--12 grid__col-s--6">
208 <a class="doc-item doc-item-small" href="${docLink.getData()}">
209 <span class="u-table">
210 <span class="u-cell">
211 <span class="subtitle">${document.extension}</span>
212 <span>${document.getTitle()}</span>
213 </span>
214 </span>
215 <i class="icon icon_arrow-right">
216 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
217 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
218 <use xlink:href="#svg-arrow-right"></use>
219 </svg>
220 </i>
221 </a>
222 </div>
223 </#if>
224</#macro>
225
226<#macro DocumentFromId entryId>
227 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
228 <#if document.getTitle()?index_of("/") != 0>
229 <div class="grid__col-xxs--12 grid__col-s--6">
230 <a class="doc-item doc-item-small" href="/documents/${document.groupId}/${document.folderId}/${document.title?url}/${document.uuid}?t=.now?long" target="_blank">
231 <span class="u-table">
232 <span class="u-cell">
233 <span class="subtitle"><@liferay.language key="link"/></span>
234 <span>${document.getTitle()}</span>
235 </span>
236 </span>
237 <i class="icon icon_arrow-right">
238 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
239 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
240 <use xlink:href="#svg-arrow-right"></use>
241 </svg>
242 </i>
243 </a>
244 </div>
245 </#if>
246 <#assign document = "" />
247</#macro>
248
249
250<#macro links>
251 <#list linkGroup.getSiblings() as cur_linkGroup>
252 <#if cur_linkGroup.data?trim != "">
253 <strong>${cur_linkGroup.data}</strong>
254 </#if>
255 <ul style="list-style: none; padding-left: 0;">
256 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
257 <#if cur_link.data?trim != "" && cur_link.data != "null">
258 <li >
259 <a href="${cur_link.linkUrl.data}" class="link" target="_blank">
260 <i class="icon icon_arrow-right-xs">
261 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
262 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
263 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-arrow-right-xs"></use>
264 </svg>
265 </i> ${cur_link.data}
266 </a>
267 </li>
268 </#if>
269 </#list>
270 </ul>
271 </#list>
272</#macro>
273
274<#macro lex>
275 <#if yourChoosenLocal == "de">
276 <#assign lexLanguage = "de" />
277 <#assign lexConfLanguage = "d" />
278 <#else>
279 <#assign lexLanguage = "fr" />
280 <#assign lexConfLanguage = "f" />
281 </#if>
282 <#list lexGroup.getSiblings() as cur_lexGroup>
283 <#if cur_lexGroup.data?trim != "">
284 <strong>${cur_lexGroup.data}</strong>
285 </#if>
286 <ul>
287 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
288 <#if cur_lex.data?trim != "" && cur_lex.data != "null">
289 <li>
290 <#assign lexLinkUrl ="" />
291 <#if cur_lex.lexType.data == "legconftype" >
292 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?replace(".", "_") />
293 <#if cur_lex.lexNumbers.getData()?contains("a")>
294 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?split("a")[0]?replace(".", "_") />
295 <#assign lexLinkUrl = lexLinkUrl + "/a" + cur_lex.lexNumbers.getData()?replace(".", "_")?split("a")[1] + ".html" />
296 </#if>
297 <#elseif cur_lex.lexType.data == "leglisttype" >
298 <#assign lexnumbers = cur_lex.lexNumbers.getData()?replace(";", "|") />
299 <#assign lexLinkUrl = "http://lex.vs.ch/frontend/syst_no/" + lexnumbers + "?locale=" + lexLanguage />
300 <#elseif cur_lex.lexType.data == "legdetailtype" || cur_lex.lexType.data == "legpdftype" >
301 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + cur_lex.lexNumbers.getData()+ "/" + lexLanguage />
302 <#if cur_lex.lexNumbers.getData()?contains("a")>
303 <#assign lexNumber = cur_lex.lexNumbers.getData()?split("a")[0] />
304 <#assign lexArticle = cur_lex.lexNumbers.getData()?split("a")[1] />
305 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + lexNumber + "/" + lexLanguage + "/art" + lexArticle />
306 </#if>
307 <#elseif cur_lex.lexType.data == "leglinktype" >
308 <#assign lexLinkUrl = cur_lex.lexNumbers.getData() />
309 </#if>
310 <a href="${lexLinkUrl}" class="red" target="_blank">
311 ${cur_lex.data}
312 </a>
313 </li>
314 </#if>
315 </#list>
316 </ul>
317 </#list>
318</#macro>
319
320
321
322
323<#macro contactInfo>
324 ${contact.getData()}
325 <#if serviceLocator??>
326 <#if contact.contactId?? >
327 <#if contact.contactId.data?trim != "">
328 ${getArticleContent(groupId, contact.contactId.getData())}
329 </#if>
330 </#if>
331 </#if>
332</#macro>
333
334<#function getArticleDate dateType>
335 <#if serviceLocator??>
336 <#assign article = JournalArticleLocalService.getArticle(groupId, gArticleId) />
337 <#if dateType == "published">
338 <#assign date = article.displayDate?date />
339 <#elseif dateType == "modified">
340 <#assign date = article.modifiedDate?date />
341 <#elseif dateType == "created">
342 <#assign date = article.createDate?date />
343 <#else>
344 <#assign date = "???" />
345 </#if>
346 <#return date>
347 </#if>
348</#function>
349
350<#function getFileEntries group folderId>
351 <#if serviceLocator??>
352 <#return DLFolderLocalService.getFileEntriesAndFileShortcuts(getterUtil.getLong(group), getterUtil.getLong(folderId), QD) />
353 </#if>
354 <#return "" />
355</#function>
356
357<#function getArticleContent gid aid>
358 <#attempt>
359 <#assign article = JournalArticleLocalService.getArticle(gid?number, aid?upper_case) />
360 <#assign articleContent = JournalArticleLocalService.getArticleContent(article, apListTemplateKey, null, locale, model, themeDisplay) />
361 <#if articleContent?? >
362 <#return articleContent />
363 </#if>
364 <#return "" />
365 <#recover>
366 <#return "" />
367 </#attempt>
368</#function>
369
370
371
372<#function isDescriptionEmpty>
373 <#if description.getData()?trim != "" && description.data?trim != "null">
374 <#return "false" />
375 </#if>
376 <#return "true" />
377</#function>
378
379<#function isDocEmpty>
380 <#list docGroup.getSiblings() as cur_docGroup>
381 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
382 <#if cur_intDoc.data?trim != "" && cur_intDoc.data?trim != "null">
383 <#return "false" />
384 </#if>
385 </#list>
386 <#if cur_docGroup.annexeUrlTitle.getSiblings()?has_content>
387 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
388 <#if cur_extDoc.data?trim != "" && cur_extDoc.data?trim != "null">
389 <#return "false" />
390 </#if>
391 </#list>
392 </#if>
393 <#if cur_docGroup.folderId?? >
394 <#list cur_docGroup.folderId.getSiblings() as cur_folder>
395 <#if cur_folder.data?trim != "" && cur_folder.data?trim != "null">
396 <#return "false" />
397 </#if>
398 </#list>
399 </#if>
400 </#list>
401 <#return "true" />
402</#function>
403
404<#function isLinkEmpty>
405 <#list linkGroup.getSiblings() as cur_linkGroup>
406 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
407 <#if cur_link.data?trim != "">
408 <#return "false" />
409 </#if>
410 </#list>
411 </#list>
412 <#return "true" />
413</#function>
414
415<#function isLexEmpty>
416 <#list lexGroup.getSiblings() as cur_lexGroup>
417 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
418 <#if cur_lex.data?trim != "">
419 <#return "false" />
420 </#if>
421 </#list>
422 </#list>
423 <#return "true" />
424</#function>
425
426<#function isContactEmpty>
427 <#if contact.contactId?? >
428 <#if contact.getData()?trim != "" || contact.contactId.data?trim != "" >
429 <#return "false" />
430 </#if>
431 <#else>
432 <#if contact.getData()?trim != "" >
433 <#return "false" />
434 </#if>
435 </#if>
436 <#return "true" />
437</#function>
438
439<#function isRelatedEmpty relatedEntries>
440 <#if relatedEntries?? >
441 <#list relatedEntries as cur_entry >
442 <#if cur_entry?trim != "">
443 <#return "false">
444 </#if>
445 </#list>
446 </#if>
447 <#return "true" />
448</#function>
449
450<#macro relatedAssets >
451 <#assign relatedEntries = getRelatedContent() />
452 <#-- <#if relatedEntries?? > -->
453 <#if isRelatedEmpty(relatedEntries) == "false">
454 <div class="widget">
455 <h3 class="block-title"><@liferay.language key="vs-en-relation"/></h3>
456 <ul style="list-style: none;padding-left: 0;">
457 <#list relatedEntries as cur_asset_link>
458 <#assign assetEntry = getAssetEntry(cur_asset_link.entryId2) />
459 <#assign lClassName = "com.liferay.journal.model.JournalArticle"/>
460 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(assetEntry.getClassPK())/>
461 <li>
462 <a class="link" href="#">
463 ${journalArticle.getTitle(locale)}
464 <i class="icon icon_arrow-right-xs">
465 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
466 <use xlink:href="/o/vs-theme/images/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
467 <use xlink:href="#svg-arrow-right-xs"></use>
468 </svg>
469 </i>
470 </a>
471 </li>
472 </#list>
473 </ul>
474 </div>
475 </#if>
476</#macro>
477
478<#function getAssetEntry entryId>
479 <#assign entry = AssetLocalService.getAssetEntry(entryId) />
480 <#return entry />
481</#function>
482
483<#function getRelatedContent >
484 <#assign lClassName = "com.liferay.portlet.journal.model.JournalArticle"/>
485 <#assign lArticle = JournalArticleLocalService.getArticle(groupId, gArticleId)/>
486 <#assign lPk = lArticle.getResourcePrimKey()/>
487 <#assign lEntry = AssetLocalService.getEntry(lClassName,lPk)/>
488 <#assign lLinks = AssetLinkService.getDirectLinks(lEntry.getEntryId())/>
489 <#return lLinks />
490</#function>
The following has evaluated to null or missing: ==> cur_docGroup.annexeUrlTitle [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 386, column 10] ---- 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 be 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 cur_docGroup.annexeUrlTitle.getSi... [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" in function "isDocEmpty" at line 386, column 5] - Reached through: #if isDocEmpty() == "false" [in template "10155#10193#TEXT-DOCUMENTS-LOI-CONTACT" at line 61, column 9] ----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
2<#assign AssetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign AssetLinkService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
5<#assign DLFolderLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService") />
6<#assign queryDefinition = objectUtil("com.liferay.portal.kernel.dao.orm.QueryDefinition") />
7<#assign QD = queryDefinition />
8<#assign yourChoosenLocal = locale?split("_")[0] />
9<#assign pathFileicon = "/html/themes/classic/images/file_system/small/" />
10<#setting url_escaping_charset='ISO-8859-1'>
11<#assign gArticleId = .vars['reserved-article-id'].data />
12<style>
13.block a{
14color:#e22b28;
15}
16.entry-body .vsstruct:first-child h2 {
17 display:none;
18 /*color: #262626;
19 padding-top: 15px;
20 margin-top: 0;
21 margin-bottom: 1.1em;
22 text-transform: uppercase;
23 line-height: 1.1em;
24 font-size: 1.73em;*/
25}
26.doc-item {
27 overflow: auto;
28}
29</style>
30
31<div class="grid__row">
32 <div class="grid__col-xxs--12 grid__col-s--12">
33 <h2 class="block-title">${.vars['reserved-article-title'].data}</h2>
34 </div>
35 <#if isContactEmpty() == "true" >
36 <#assign columnwidth = "grid__col-s--12" />
37 <#else>
38 <#assign columnwidth = "grid__col-s--8" />
39 </#if>
40 <div class="grid__col-xxs--12 ${columnwidth} entry-body">
41 <div class="vsstruct">
42 ${description.getData()}
43 </div>
44 </div>
45 <#if isContactEmpty() == "false">
46 <div class="grid__col-xxs--12 grid__col-s--4">
47 <div class="grid__col-xxs--12 grid__col-s--12 services-header">
48 <div class="grid__col-xxs--12">
49 <h3>
50 <@liferay.language key="vs-contact"/>
51 </h3>
52 <@contactInfo/>
53 <br />
54 </div>
55 </div>
56 </div>
57 </#if>
58</div>
59
60<div>
61 <#if isDocEmpty() == "false" >
62 <h3 class="block-title"><@liferay.language key="${docBlockTitle.data}" /></h3>
63 <@downloads />
64
65 </#if>
66</div>
67
68<section class="services-footer grid__row">
69 <#if isLexEmpty() == "false">
70 <div class="grid__col-xxs--12 grid__col-m--5">
71 <h3 class="block-title"><@liferay.language key="vs-legal-base"/></h3>
72 <@lex/>
73 <#-- <@relatedAssets /> -->
74 </div>
75 <div class="grid__col-m--1"></div>
76 </#if>
77 <#if isLinkEmpty() == "false">
78 <div class="grid__col-xxs--12 grid__col-m--5">
79 <h3 class="block-title"><@liferay.language key="vs-link"/></h3>
80 <@links/>
81 </div>
82 </#if>
83</section>
84
85<#-- <small class="muted"><@liferay.language key="vs-last-modified" />: ${getArticleDate("modified")}</small>-->
86
87<#-- functions and macros -->
88
89<#macro getBackLink>
90 <#if request.attributes??>
91 <#assign url = request.attributes.CURRENT_URL />
92 <#assign multipleValues = httpUtil.getQueryString(url) />
93 <#assign paramMap = httpUtil.getParameterMap(httpUtil.getQueryString(url)) />
94 <#list paramMap?keys as key>
95 <#if key?contains("_redirect")>
96 <#assign keyFound = key />
97 </#if>
98 </#list>
99 <#if keyFound??>
100 <#assign encodedUrlString = httpUtil.getParameter(url, keyFound, false) />
101 <#assign decodedUrlString = httpUtil.decodeURL(encodedUrlString) />
102 <div class="clearfix">
103 <#-- <span class="pull-left muted">${title.getData()} <@displayArticleDate dateType="published"/></span> -->
104 <#if decodedUrlString??>
105 <a class="pull-left" href="${decodedUrlString}"><i class="icon-chevron-sign-left"></i> <@liferay.language key="back" /></a>
106 </#if>
107 <hr />
108 </div>
109 </#if>
110 </#if>
111</#macro>
112
113<#macro downloads>
114 <#list docGroup.getSiblings() as cur_docGroup>
115 <#if cur_docGroup.data?trim != "">
116 <h3 style="font-size: 1.1em; text-transform: uppercase; color: #e22b28; letter-spacing: 0.01em; margin-bottom: 0.6em;" >${cur_docGroup.data}</h3>
117 </#if>
118 <#if cur_docGroup.folderId?? >
119 <#if cur_docGroup.folderId.data?trim != "">
120 <#assign filesInFolder = getFileEntries(groupId, cur_docGroup.folderId.data) />
121 <div class="grid__row section-docs">
122 <#assign allFiles = [] />
123 <#list filesInFolder as cur_file>
124 <#if cur_file.toFileEntryId??>
125 <#assign entryId = cur_file.toFileEntryId />
126 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
127 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
128 <#else>
129 <#assign entryId = cur_file.fileEntryId />
130 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
131 <#assign allFiles = allFiles + [DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId))] />
132 </#if>
133 </#list>
134 <#list allFiles as loop_file>
135 <#if loop_file.getTitle()?index_of("/") != 0>
136 <div class="grid__col-xxs--12 grid__col-s--6">
137 <a class="doc-item doc-item-small" href="/documents/${loop_file.groupId}/${loop_file.folderId}/${loop_file.title?url}/${loop_file.uuid}?t=.now?long" target="_blank">
138 <span class="u-table">
139 <span class="u-cell">
140 <span class="subtitle">${loop_file.extension}</span>
141 <span>${loop_file.getTitle()}</span>
142 </span>
143 </span>
144 <i class="icon icon_arrow-right">
145 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
146 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
147 <use xlink:href="#svg-arrow-right"></use>
148 </svg>
149 </i>
150 </a>
151 </div>
152 </#if>
153 </#list>
154 <#assign allFiles = [] />
155 </div>
156 <#assign filesInFolder = "" />
157 </#if>
158 </#if>
159
160
161 <#if cur_docGroup.annexeDocumentLinkTo??>
162 <div class="grid__row section-docs">
163
164 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
165 <#if cur_intDoc.getData()?trim != "" && cur_intDoc.getData() != "null">
166 <@getDocument docLink=cur_intDoc/>
167 </#if>
168 </#list>
169
170 <#if cur_docGroup.annexeUrlTitle??>
171 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
172 <#if cur_extDoc.data?trim != "" && cur_extDoc.data != "null">
173 <div class="grid__col-xxs--12 grid__col-s--6">
174 <a class="doc-item doc-item-small" href="${cur_extDoc.annexeUrl.data}" target="_blank">
175 <span class="u-table">
176 <span class="u-cell">
177 <span class="subtitle"><@liferay.language key="link"/></span>
178 <span>${cur_extDoc.data}</span>
179 </span>
180 </span>
181 <i class="icon icon_arrow-right">
182 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
183 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
184 <use xlink:href="#svg-arrow-right"></use>
185 </svg>
186 </i>
187 </a>
188 </div>
189 </#if>
190 </#list>
191 </#if>
192
193 </div>
194 </#if>
195
196 </#list>
197</#macro>
198
199<#macro getDocument docLink>
200 <#assign docJSON = jsonFactoryUtil.createJSONObject(docLink.data) />
201 <#assign gid = docJSON.groupId />
202 <#assign longGid = getterUtil.getLong(gid) />
203 <#assign uuid = docJSON.uuid />
204 <#if DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid)?? >
205 <#assign document = DLFileEntryLocalService.getFileEntryByUuidAndGroupId(uuid, longGid) />
206
207 <div class="grid__col-xxs--12 grid__col-s--6">
208 <a class="doc-item doc-item-small" href="${docLink.getData()}">
209 <span class="u-table">
210 <span class="u-cell">
211 <span class="subtitle">${document.extension}</span>
212 <span>${document.getTitle()}</span>
213 </span>
214 </span>
215 <i class="icon icon_arrow-right">
216 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
217 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
218 <use xlink:href="#svg-arrow-right"></use>
219 </svg>
220 </i>
221 </a>
222 </div>
223 </#if>
224</#macro>
225
226<#macro DocumentFromId entryId>
227 <#assign document = DLFileEntryLocalService.getDLFileEntry(getterUtil.getLong(entryId)) />
228 <#if document.getTitle()?index_of("/") != 0>
229 <div class="grid__col-xxs--12 grid__col-s--6">
230 <a class="doc-item doc-item-small" href="/documents/${document.groupId}/${document.folderId}/${document.title?url}/${document.uuid}?t=.now?long" target="_blank">
231 <span class="u-table">
232 <span class="u-cell">
233 <span class="subtitle"><@liferay.language key="link"/></span>
234 <span>${document.getTitle()}</span>
235 </span>
236 </span>
237 <i class="icon icon_arrow-right">
238 <svg viewBox="0 0 37.1 12" class="svg_arrow-right">
239 <use xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right"></use>
240 <use xlink:href="#svg-arrow-right"></use>
241 </svg>
242 </i>
243 </a>
244 </div>
245 </#if>
246 <#assign document = "" />
247</#macro>
248
249
250<#macro links>
251 <#list linkGroup.getSiblings() as cur_linkGroup>
252 <#if cur_linkGroup.data?trim != "">
253 <strong>${cur_linkGroup.data}</strong>
254 </#if>
255 <ul style="list-style: none; padding-left: 0;">
256 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
257 <#if cur_link.data?trim != "" && cur_link.data != "null">
258 <li >
259 <a href="${cur_link.linkUrl.data}" class="link" target="_blank">
260 <i class="icon icon_arrow-right-xs">
261 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
262 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/o/vs-theme/css/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
263 <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#svg-arrow-right-xs"></use>
264 </svg>
265 </i> ${cur_link.data}
266 </a>
267 </li>
268 </#if>
269 </#list>
270 </ul>
271 </#list>
272</#macro>
273
274<#macro lex>
275 <#if yourChoosenLocal == "de">
276 <#assign lexLanguage = "de" />
277 <#assign lexConfLanguage = "d" />
278 <#else>
279 <#assign lexLanguage = "fr" />
280 <#assign lexConfLanguage = "f" />
281 </#if>
282 <#list lexGroup.getSiblings() as cur_lexGroup>
283 <#if cur_lexGroup.data?trim != "">
284 <strong>${cur_lexGroup.data}</strong>
285 </#if>
286 <ul>
287 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
288 <#if cur_lex.data?trim != "" && cur_lex.data != "null">
289 <li>
290 <#assign lexLinkUrl ="" />
291 <#if cur_lex.lexType.data == "legconftype" >
292 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?replace(".", "_") />
293 <#if cur_lex.lexNumbers.getData()?contains("a")>
294 <#assign lexLinkUrl = "http://www.admin.ch/ch/" + lexConfLanguage + "/rs/" + cur_lex.lexNumbers.getData()?split("a")[0]?replace(".", "_") />
295 <#assign lexLinkUrl = lexLinkUrl + "/a" + cur_lex.lexNumbers.getData()?replace(".", "_")?split("a")[1] + ".html" />
296 </#if>
297 <#elseif cur_lex.lexType.data == "leglisttype" >
298 <#assign lexnumbers = cur_lex.lexNumbers.getData()?replace(";", "|") />
299 <#assign lexLinkUrl = "http://lex.vs.ch/frontend/syst_no/" + lexnumbers + "?locale=" + lexLanguage />
300 <#elseif cur_lex.lexType.data == "legdetailtype" || cur_lex.lexType.data == "legpdftype" >
301 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + cur_lex.lexNumbers.getData()+ "/" + lexLanguage />
302 <#if cur_lex.lexNumbers.getData()?contains("a")>
303 <#assign lexNumber = cur_lex.lexNumbers.getData()?split("a")[0] />
304 <#assign lexArticle = cur_lex.lexNumbers.getData()?split("a")[1] />
305 <#assign lexLinkUrl = "http://lex.vs.ch/data/" + lexNumber + "/" + lexLanguage + "/art" + lexArticle />
306 </#if>
307 <#elseif cur_lex.lexType.data == "leglinktype" >
308 <#assign lexLinkUrl = cur_lex.lexNumbers.getData() />
309 </#if>
310 <a href="${lexLinkUrl}" class="red" target="_blank">
311 ${cur_lex.data}
312 </a>
313 </li>
314 </#if>
315 </#list>
316 </ul>
317 </#list>
318</#macro>
319
320
321
322
323<#macro contactInfo>
324 ${contact.getData()}
325 <#if serviceLocator??>
326 <#if contact.contactId?? >
327 <#if contact.contactId.data?trim != "">
328 ${getArticleContent(groupId, contact.contactId.getData())}
329 </#if>
330 </#if>
331 </#if>
332</#macro>
333
334<#function getArticleDate dateType>
335 <#if serviceLocator??>
336 <#assign article = JournalArticleLocalService.getArticle(groupId, gArticleId) />
337 <#if dateType == "published">
338 <#assign date = article.displayDate?date />
339 <#elseif dateType == "modified">
340 <#assign date = article.modifiedDate?date />
341 <#elseif dateType == "created">
342 <#assign date = article.createDate?date />
343 <#else>
344 <#assign date = "???" />
345 </#if>
346 <#return date>
347 </#if>
348</#function>
349
350<#function getFileEntries group folderId>
351 <#if serviceLocator??>
352 <#return DLFolderLocalService.getFileEntriesAndFileShortcuts(getterUtil.getLong(group), getterUtil.getLong(folderId), QD) />
353 </#if>
354 <#return "" />
355</#function>
356
357<#function getArticleContent gid aid>
358 <#attempt>
359 <#assign article = JournalArticleLocalService.getArticle(gid?number, aid?upper_case) />
360 <#assign articleContent = JournalArticleLocalService.getArticleContent(article, apListTemplateKey, null, locale, model, themeDisplay) />
361 <#if articleContent?? >
362 <#return articleContent />
363 </#if>
364 <#return "" />
365 <#recover>
366 <#return "" />
367 </#attempt>
368</#function>
369
370
371
372<#function isDescriptionEmpty>
373 <#if description.getData()?trim != "" && description.data?trim != "null">
374 <#return "false" />
375 </#if>
376 <#return "true" />
377</#function>
378
379<#function isDocEmpty>
380 <#list docGroup.getSiblings() as cur_docGroup>
381 <#list cur_docGroup.annexeDocumentLinkTo.getSiblings() as cur_intDoc>
382 <#if cur_intDoc.data?trim != "" && cur_intDoc.data?trim != "null">
383 <#return "false" />
384 </#if>
385 </#list>
386 <#if cur_docGroup.annexeUrlTitle.getSiblings()?has_content>
387 <#list cur_docGroup.annexeUrlTitle.getSiblings() as cur_extDoc>
388 <#if cur_extDoc.data?trim != "" && cur_extDoc.data?trim != "null">
389 <#return "false" />
390 </#if>
391 </#list>
392 </#if>
393 <#if cur_docGroup.folderId?? >
394 <#list cur_docGroup.folderId.getSiblings() as cur_folder>
395 <#if cur_folder.data?trim != "" && cur_folder.data?trim != "null">
396 <#return "false" />
397 </#if>
398 </#list>
399 </#if>
400 </#list>
401 <#return "true" />
402</#function>
403
404<#function isLinkEmpty>
405 <#list linkGroup.getSiblings() as cur_linkGroup>
406 <#list cur_linkGroup.linkTitle.getSiblings() as cur_link>
407 <#if cur_link.data?trim != "">
408 <#return "false" />
409 </#if>
410 </#list>
411 </#list>
412 <#return "true" />
413</#function>
414
415<#function isLexEmpty>
416 <#list lexGroup.getSiblings() as cur_lexGroup>
417 <#list cur_lexGroup.lexTitle.getSiblings() as cur_lex>
418 <#if cur_lex.data?trim != "">
419 <#return "false" />
420 </#if>
421 </#list>
422 </#list>
423 <#return "true" />
424</#function>
425
426<#function isContactEmpty>
427 <#if contact.contactId?? >
428 <#if contact.getData()?trim != "" || contact.contactId.data?trim != "" >
429 <#return "false" />
430 </#if>
431 <#else>
432 <#if contact.getData()?trim != "" >
433 <#return "false" />
434 </#if>
435 </#if>
436 <#return "true" />
437</#function>
438
439<#function isRelatedEmpty relatedEntries>
440 <#if relatedEntries?? >
441 <#list relatedEntries as cur_entry >
442 <#if cur_entry?trim != "">
443 <#return "false">
444 </#if>
445 </#list>
446 </#if>
447 <#return "true" />
448</#function>
449
450<#macro relatedAssets >
451 <#assign relatedEntries = getRelatedContent() />
452 <#-- <#if relatedEntries?? > -->
453 <#if isRelatedEmpty(relatedEntries) == "false">
454 <div class="widget">
455 <h3 class="block-title"><@liferay.language key="vs-en-relation"/></h3>
456 <ul style="list-style: none;padding-left: 0;">
457 <#list relatedEntries as cur_asset_link>
458 <#assign assetEntry = getAssetEntry(cur_asset_link.entryId2) />
459 <#assign lClassName = "com.liferay.journal.model.JournalArticle"/>
460 <#assign journalArticle = JournalArticleLocalService.getLatestArticle(assetEntry.getClassPK())/>
461 <li>
462 <a class="link" href="#">
463 ${journalArticle.getTitle(locale)}
464 <i class="icon icon_arrow-right-xs">
465 <svg viewBox="0 0 27 12" class="svg_arrow-right-xs">
466 <use xlink:href="/o/vs-theme/images/../assets/svg/sprite.svg#svg-arrow-right-xs"></use>
467 <use xlink:href="#svg-arrow-right-xs"></use>
468 </svg>
469 </i>
470 </a>
471 </li>
472 </#list>
473 </ul>
474 </div>
475 </#if>
476</#macro>
477
478<#function getAssetEntry entryId>
479 <#assign entry = AssetLocalService.getAssetEntry(entryId) />
480 <#return entry />
481</#function>
482
483<#function getRelatedContent >
484 <#assign lClassName = "com.liferay.portlet.journal.model.JournalArticle"/>
485 <#assign lArticle = JournalArticleLocalService.getArticle(groupId, gArticleId)/>
486 <#assign lPk = lArticle.getResourcePrimKey()/>
487 <#assign lEntry = AssetLocalService.getEntry(lClassName,lPk)/>
488 <#assign lLinks = AssetLinkService.getDirectLinks(lEntry.getEntryId())/>
489 <#return lLinks />
490</#function>