Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> vr.zfinder2017 [in template "90747669430683#32810#42708" at line 18, column 27]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: zfinder = vr.zfinder2017 [in template "90747669430683#32810#42708" at line 18, column 17]
----
1<#assign
2aui = PortletJspTagLibs["/META-INF/liferay-aui.tld"]
3liferay_portlet = PortletJspTagLibs["/META-INF/liferay-portlet-ext.tld"]
4liferay_security = PortletJspTagLibs["/META-INF/liferay-security.tld"]
5liferay_theme = PortletJspTagLibs["/META-INF/liferay-theme.tld"]
6liferay_ui = PortletJspTagLibs["/META-INF/liferay-ui.tld"]
7liferay_util = PortletJspTagLibs["/META-INF/liferay-util.tld"]
8portlet = PortletJspTagLibs["/META-INF/liferay-portlet.tld"]
9/>
10
11<@liferay_theme["defineObjects"]/>
12<@portlet["defineObjects"]/>
13
14<#if vr?has_content>
15 <#assign
16 bis2017 = vr.bis2017
17 utils = vr.utils2017
18 zfinder = vr.zfinder2017
19 ansicht = utils.ansicht
20 current_url_WithHtml = themeDisplay.getPortalURL()
21 current_uri_WithHtml = themeDisplay.getURLCurrent()
22 currentURL = current_url_WithHtml + current_uri_WithHtml
23 login_url= getterUtil.getString(themeDisplay.getThemeSetting("Login-URI"))
24
25 login_url1_WithHtml = 'href="'+login_url+'?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=0&_com_liferay_login_web_portlet_LoginPortlet_redirect='
26 login_url2_WithHtml = '" rel="nofollow" data-redirect="true"'
27 login_url_WithHtml = login_url1_WithHtml + current_url_WithHtml + current_uri_WithHtml + login_url2_WithHtml
28
29 header_type = getterUtil.getString(themeDisplay.getThemeSetting("header-type"))
30 hasLongHeader = header_type == 'long'
31
32
33 showTags = getterUtil.getBoolean(themeDisplay.getThemeSetting("01-show-tags"))
34
35 showCollapse = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-collapse"))
36 collapseIcon = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-left-collapse-icon"))
37 collapseOnlineServcieIcon = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-left-collapse-online-services-icon"))
38
39 IconBeforeOnlineServices = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-left-online-services-icon"))
40 downloadsIcon = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-left-downloads-icon"))
41 linksAsButton = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-right-online-services-as-button"))
42 showLines = !showCollapse
43
44 showEmployeesCollapse = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-employees-collapse"))
45 showEmployeesCollapseAs = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-show-employees-collapse-as"))
46 employeesCollapseIcon = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-employees-collapse-icon"))
47
48 showEmployeeMap = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-employee-map"))
49 showFacilityMap = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-facility-map"))
50
51 showOnlineServicesInMainContent = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-left-online-services-show"))
52
53 showOnlineServicesInMobilePosition = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-show-online-services-in-mobile"))
54
55 plid = themeDisplay.getPlid()
56 createAccountURL = portletURLFactory.create(renderRequest,"com_liferay_login_web_portlet_LoginPortlet", plid,"RENDER_PHASE")
57
58 vsmGebietID = getterUtil.getString(themeDisplay.getThemeSetting("vsm-gebiet-id"))
59
60
61 showDLIcons = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-icon-legend"))
62 showDLPersoLogo = false
63 showDLMoneyIcon = false
64 showDLLockIcon = false
65
66 showEinrichtungAnschriftName = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-einrichtung-anschrift-name"))
67 showEinrichtungAnschriftNameAlt= getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-show-einrichtung-anschrift-name-alt"))
68
69 barrierefreiheitserklaerung_kartenerklarung = getterUtil.getString(themeDisplay.getThemeSetting("barrierefreiheitserklaerung-kartenerklarung"))
70 barrierefreiheitserklaerung_url = getterUtil.getString(themeDisplay.getThemeSetting("barrierefreiheitserklaerung-url"))
71
72 loginForAllExtensions = getterUtil.getBoolean(themeDisplay.getThemeSetting("login-for-all-extensions"))
73
74 downloadCollapse = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-documents-collapse"))
75 downloadCollapseIcon = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-documents-collapse-icon"))
76 downloadCollapseShowAs = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-show-documents-collapse-as"))
77
78 dienstleistungShow = "vr-bis-detail-dienstleistung-show"
79 einrichtungShow = "vr-bis-detail-einrichtung-show"
80 mitarbeiterShow = "vr-bis-detail-mitarbeiter-show"
81
82 showEmployeeDescriptionInContact = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-employee-description-in-contact"))
83 showEmployeeDescriptionInternalInContact = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-employee-description-internal-in-contact"))
84 employeesCollapseProfilLinkText = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-employees-collapse-profil-link-text"))
85
86
87
88 showFeedbackInServices = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback-in-services"))
89 showFeedbackInFacility = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback-in-facility"))
90 showFeedbackInEmployee = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback-in-employee"))
91 />
92
93 <#assign
94 linkCss = ""
95 linkClass = ""
96 />
97 <#if linksAsButton>
98 <#assign linkClass = linkClass + "btn btn-secondary w-100 text-left text-break" />
99 </#if>
100
101
102
103
104 <#assign
105 iconStyling = getServiceIconStyling()[0]
106 iconClass = getServiceIconStyling()[1]
107 iconWrapperClass = getServiceIconStyling()[2]
108 lockIcon = '<i aria-hidden="true" class="'+iconWrapperClass+'"><svg role="img" aria-hidden="true" style="'+iconStyling+'" xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="'+iconClass+' bi bi-person-lock" viewBox="0 0 16 16"> <path d="M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 5.996V14H3s-1 0-1-1 1-4 6-4q.845.002 1.544.107a4.5 4.5 0 0 0-.803.918A11 11 0 0 0 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664zM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1"/></svg></i>'
109 moneyIcon = '<i aria-hidden="true" class="'+iconWrapperClass+'"><svg role="img" aria-hidden="true" style="'+iconStyling+'" width="16" height="16" fill="currentColor" class="'+iconClass+' bi bi-credit-card" viewBox="0 0 16 16"><path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v1h14V4a1 1 0 0 0-1-1H2zm13 4H1v5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V7z"/><path d="M2 10a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-1z"/></svg></i>'
110 iconArray = iconArray(lockIcon,moneyIcon)
111 beforeLinkTitle = ""
112 dlNeedsLogin = 'Diese Dienstleistung erfordert eine Anmeldung'
113 dlNeedsEidLogin = 'Anmeldung mit elektronischen Personalausweis erforderlich'
114 dlHasCosts = 'Diese Dienstleitung ist kostenpflichtig'
115 dlAndHasCosts = 'und ist kostenpflichtig'
116 loginInfo = "Anmeldung erforderlich"
117 paymentInfo = "Kostenpflichtig"
118 eidInfo = "Anmeldung mit elektronischen Personalausweis erforderlich"
119 loginInfoTextArray = infoTextArray(dlNeedsLogin,dlHasCosts, dlAndHasCosts,dlNeedsEidLogin)
120 iconLegendTextArray = iconLegendTextArray(loginInfo,paymentInfo,eidInfo)
121 />
122
123 ${createAccountURL.setParameter("mvcRenderCommandName", "/login/create_account")}
124 ${createAccountURL.setParameter("p_p_state", "maximized")}
125 ${createAccountURL.setParameter("p_p_mode", "view")}
126
127 <#assign showLeftInCard = showLeftInCardFunction()/>
128
129
130
131 <@addTopline/>
132 <#if bis2017.ausgewaehlteDienstleistung??>
133 <#-- Dienstleistungen -->
134 <#assign
135 dienstleistung = bis2017.ausgewaehlteDienstleistung
136 textmodul = dienstleistung.textmodul
137 infodienste = zfinder.ausgewaehlteLeistung
138 landbeschreibung = dienstleistung.zfinderLeistungsBeschreibungAnzeigen
139 landkurztext = dienstleistung.zfinderKurztextAnzeigen
140 />
141
142 <div class="row">
143 <div class="col-12 col-sm-12 col-md-8 px-4 pl-lg-3">
144 <div class="mdl--page__default__01 vr-details-left">
145 <#if showLeftInCard>
146 <div class="card">
147 </#if>
148 <div class="service-detail-header">
149 <div class="sideHeadline" id="seitentitel">
150 <h1 class="m-0">${dienstleistung.name}</h1>
151 </div>
152 <#if showTags >
153 <#list dienstleistung.tags as t>
154 <span class="badge badge-bot-primary">${t.name}</span>
155 </#list>
156 </#if>
157
158 <#if existsAndHasContent1(textmodul.kurztext.inhalt!'') || existsAndHasContent1(infodienste.kurztext)>
159 <h2 class="sr-only">${getLabelName4(dienstleistung, 'adt.label.dienstleistung.kurztext','Kurzbeschreibung')}</h2>
160 <#if landkurztext>${infodienste.kurztext} </#if> ${textmodul.kurztext.inhalt}
161 </#if>
162 </div>
163 <#if showOnlineServicesInMobilePosition == "top" || showOnlineServicesInMobilePosition == "both">
164 <div class="d-block d-md-none w-100">
165 <div class="vr-details-right" style="padding: 0 !important;">
166 <#if existsAndSizeGTZero(dienstleistung.extensions) || existsAndSizeGTZero(dienstleistung.formulare) || (dienstleistung.kontaktformularUrl?? && dienstleistung.kontaktformularUrl?has_content) || existsAndSizeGTZero(dienstleistung.textmodul.formulare.weiterfuehrenderLink)>
167 <div class="card" id="Onlinedienstleistungen-top" style="padding: 0 !important;">
168 <div class="card-header" style="padding-left: 0 !important; padding-right: 0 !important;">
169 <h2>${getLabelName4(dienstleistung, 'adt.label.dienstleistung.onlinedienstleistung','Onlinedienstleistungen')}</h2>
170 </div>
171 <div class="card-body" style="padding-left: 0 !important; padding-right: 0 !important;">
172
173 <@onlineServices147 "onlineservicesMid", "onlineservicesIconsMid", dienstleistung, linkCss, linkClass, beforeLinkTitle, iconArray, loginInfoTextArray, false, utils, showDLIcons, showDLLockIcon, showDLMoneyIcon />
174 <@iconLegendList10 "onlineservicesIconsMid", "onlineservicesMid", "black", iconArray, iconLegendTextArray, showDLIcons, showDLLockIcon, showDLMoneyIcon, showDLPersoLogo />
175 </div>
176 </div>
177 </#if>
178 </div>
179 </div>
180 </#if>
181 <div class="el-textmodul">
182
183 <#if existsAndHasContent1(textmodul.volltext.inhalt!'') || existsAndHasContent1(infodienste.leistungsBeschreibung)>
184 <h2 class="sr-only">${getLabelName4(dienstleistung, 'adt.label.dienstleistung.volltext','Beschreibung')}</h2>
185 <#if landbeschreibung>${infodienste.leistungsBeschreibung}</#if> ${textmodul.volltext.inhalt}
186 </#if>
187
188 ${renderTextmodul12(textmodul.rechtsgrundlagen,"adt.label.dienstleistung.rechtsgrundlagen","Rechtsgrundlagen")}
189 ${renderTextmodul12(textmodul.erforderlicheUnterlagen,"adt.label.dienstleistung.unterlagen","Erforderliche Unterlagen")}
190
191 <#if existsAndHasContent1(dienstleistung.amtFachbereich!'')>
192 <#if showCollapse>
193 ${collapseBefore20(getLabelName4(dienstleistung, 'adt.label.dienstleistung.amtfachbereich','Amt/Fachbereich'),collapseIcon, 'amtfachbereich')}
194 </#if>
195 ${content_item3(getLabelName4(dienstleistung, 'adt.label.dienstleistung.amtfachbereich','Amt/Fachbereich'),dienstleistung.amtFachbereich, showLines)}
196 <#if showCollapse>
197 ${collapseAfter()}
198 </#if>
199 </#if>
200
201 ${renderTextmodul12(textmodul.fristen,"adt.label.dienstleistung.fristen","Fristen")}
202
203 ${renderTextmodul12(textmodul.bearbeitungsdauer,"adt.label.dienstleistung.bearbeitungsdauer","Bearbeitungsdauer")}
204
205 ${renderTextmodul12(textmodul.weiterfuehrendeInformationen,"adt.label.dienstleistung.weitereinfos","Weitere Informationen")}
206
207 ${renderTextmodul12(textmodul.hinweiseBesonderheiten,"adt.label.dienstleistung.hinweiseBesonderheiten","Hinweise und Besonderheiten")}
208
209 ${renderTextmodul12(textmodul.voraussetzungen,"adt.label.dienstleistung.voraussetzungen","Voraussetzungen")}
210
211 ${renderTextmodul12(textmodul.verfahrensablauf,"adt.label.dienstleistung.verfahrensablauf","Verfahrensablauf")}
212
213 ${renderTextmodul12(textmodul.rechtsbehelf,"adt.label.dienstleistung.rechtsbehelf","Rechtsbehelf")}
214
215 ${renderTextmodul12(textmodul.zusatzAnWenWenden,"adt.label.dienstleistung.zusatzAnWenWenden","An wen wenden")}
216
217 ${renderTextmodul12(textmodul.zusatzAntraegeFormulare,"adt.label.dienstleistung.zusatzAntraegeFormulare","Anträge/Formulare")}
218
219 ${renderTextmodul12(textmodul.zusatzFreigegebenDurch,"adt.label.dienstleistung.zusatzFreigegebenDurch","Freigegeben durch")}
220
221 ${renderTextmodul12(textmodul.zusatzFreigegebenAm,"adt.label.dienstleistung.zusatzFreigegebenAm","Freigegeben am")}
222
223 ${renderTextmodul12(textmodul.zusatzUrheber,"adt.label.dienstleistung.zusatzUrheber","Urheber")}
224
225 ${renderTextmodul12(textmodul.zusatzZustaendigeStelle,"adt.label.dienstleistung.zusatzZustaendigeStelle","Zuständige Stelle")}
226
227 <#if existsAndHasContent1(dienstleistung.kostenmodul.beschreibung!'') ||
228 existsAndHasContent1(dienstleistung.kostenmodul.kosten!'')>
229 <#if showCollapse >
230 ${collapseBefore20(getLabelName4(dienstleistung, 'adt.label.dienstleistung.gebuehr','Kosten'), collapseIcon, 'kosten')}
231 <#else>
232 <hr>
233 <h2>${getLabelName4(dienstleistung, 'adt.label.dienstleistung.gebuehr','Kosten')}</h2>
234 </#if>
235 <@kostenliste3 />
236 <#if showCollapse>
237 ${collapseAfter()}
238 </#if>
239 </#if>
240
241 <#if existsAndHasContent1(dienstleistung.zahlungsweisen!'')>
242 <#if showCollapse>
243 ${collapseBefore20(getLabelName4(dienstleistung, 'adt.label.dienstleistung.zahlungsweisen','Zahlungsweisen'),collapseIcon,'zahlungsweisen')}
244 </#if>
245 <#assign zahlungsweiseOutput = ''/>
246 <#list dienstleistung.zahlungsweisen as zahlungsweise>
247 <#assign zahlungsweiseOutput = zahlungsweiseOutput+"<p>${zahlungsweise.name}</p>" />
248 </#list>
249 ${content_item3(getLabelName4(dienstleistung, 'adt.label.dienstleistung.zahlungsweisen','Zahlungsweisen'),zahlungsweiseOutput,showLines)}
250 <#if showCollapse>
251 ${collapseAfter()}
252 </#if>
253 </#if>
254
255 <#if existsAndHasContent1(dienstleistung.verwandteDienstleistungen!'')>
256 <#if showCollapse>
257 ${collapseBefore20(getLabelName4(dienstleistung, 'adt.label.dienstleistung.verwandtedienstleistungen','Verwandte Dienstleistungen'),collapseIcon,'verwandteDienstleistungen')}
258 <#else>
259 <hr>
260 <h2>${getLabelName4(dienstleistung, 'adt.label.dienstleistung.verwandtedienstleistungen','Verwandte Dienstleistungen')}</h2>
261 </#if>
262
263 <ul style="padding-top:0 !important;padding-bottom:0 !important;">
264 <#list dienstleistung.verwandteDienstleistungen as dl>
265 <li>
266 <a href="${utils.createRenderUrl(renderResponse,dienstleistungShow, dl.id)}">${dl.name}</a>
267 </li>
268 </#list>
269 </ul>
270 <br>
271
272 <#if showCollapse>
273 ${collapseAfter()}
274 </#if>
275 </#if>
276 <#if showOnlineServicesInMainContent>
277 <div id="onlineServicesInMainSection" aria-hidden="true" class="d-none d-sm-none d-md-none d-lg-block">
278 <#if existsAndSizeGTZero(dienstleistung.extensions) || existsAndSizeGTZero(dienstleistung.formulare) || (dienstleistung.kontaktformularUrl?? && dienstleistung.kontaktformularUrl?has_content) || existsAndSizeGTZero(dienstleistung.textmodul.formulare.weiterfuehrenderLink)>
279 <#if showCollapse>
280 ${collapseBefore20(getLabelName4(dienstleistung, 'adt.label.dienstleistung.onlinedienstleistung','Onlinedienstleistungen'),collapseOnlineServcieIcon,'onlinedienstleistungenLeftBottom')}
281 </#if>
282 <#if !showCollapse>
283 <div class="card" id="OnlinedienstleistungenMain">
284 <div class="card-header">
285 <h2>${getLabelName4(dienstleistung, 'adt.label.dienstleistung.onlinedienstleistung','Onlinedienstleistungen')}</h2>
286 </div>
287 <div class="card-body">
288 </#if>
289
290 <#assign internetAdressen = false />
291
292 <@onlineServices147 "olDlTopMain", "olDlIconsMain", dienstleistung, linkCss, linkClass, beforeLinkTitle, iconArray, loginInfoTextArray, false, utils, showDLIcons, showDLLockIcon, showDLMoneyIcon/>
293 <@iconLegendList10 "olDlIconsMain", "olDlTopMain", "black", iconArray, iconLegendTextArray, showDLIcons, showDLLockIcon, showDLMoneyIcon, showDLPersoLogo/>
294
295 <#if !showCollapse>
296 </div>
297 </div>
298 </#if>
299 <#if showCollapse>
300 ${collapseAfter()}
301 </#if>
302 </#if>
303 </div>
304 </#if>
305 </div>
306 <#if showLeftInCard>
307 </div>
308 </#if>
309 </div>
310 </div>
311 <div class="col-12 col-sm-12 col-md-4 px-4 pr-lg-3">
312 <div class="mdl--page__default__02 vr-details-right">
313 <#if showFeedbackInServices>
314 <@addFeedback/>
315 </#if>
316
317 <#if existsAndSizeGTZero(dienstleistung.extensions) || existsAndSizeGTZero(dienstleistung.formulare) || (dienstleistung.kontaktformularUrl?? && dienstleistung.kontaktformularUrl?has_content) || existsAndSizeGTZero(dienstleistung.textmodul.formulare.weiterfuehrenderLink)>
318 <div class="card <#if showOnlineServicesInMobilePosition == "top">d-none d-md-block </#if> " id="onlinedienstleistungen-right">
319 <div class="card-header">
320 <h2>${getLabelName4(dienstleistung, 'adt.label.dienstleistung.onlinedienstleistung','Onlinedienstleistungen')}</h2>
321 </div>
322 <div class="card-body">
323 <@onlineServices147 "olDlTopSide", "olDlIconsSide", dienstleistung, linkCss, linkClass, beforeLinkTitle, iconArray, loginInfoTextArray, false, utils, showDLIcons, showDLLockIcon, showDLMoneyIcon />
324 <@iconLegendList10 "olDlIconsSide", "olDlTopSide", "black", iconArray, iconLegendTextArray, showDLIcons, showDLLockIcon, showDLMoneyIcon, showDLPersoLogo/>
325 </div>
326 </div>
327 </#if>
328
329 <#if existsAndHasContent1(dienstleistung.dokumentList!'')>
330
331 <div class="card" id="downloads">
332 <div class="card-header">
333 <h2>${getLabelName4(dienstleistung, 'adt.label.dienstleistung.downloads','Downloads')}</h2>
334 </div>
335 <div class="card-body">
336 <ul class="el--downloads">
337
338 <#list dienstleistung.dokumentList as dokument>
339 <#assign url = renderResponse.createResourceURL()/>
340 ${url.setResourceID("vr-bis-detail-document-download")}
341 ${url.setParameter("id", "${dokument.id}")}
342 <li class="mb-2">
343 <#if downloadCollapse>
344 <#if existsAndHasContent1(dokument.beschreibung!'')>
345 <#assign description = "<div class='mt-2' style='font-size:medium;'>${dokument.beschreibung}</div>" />
346 <#else>
347 <#assign description = "" />
348 </#if>
349 <#assign docContent ="<div class='mt-2 mb-4'>
350 <a href='${url}' title='Download ${dokument.name}' download>
351 <i class='bi bi-download mr-2'></i>
352 <span class='ml-2'>Herunterladen</span>
353 </a>
354 <${description}>
355 </div>"
356 />
357
358 <@collapseList6 "doc${dokument.id}", "${downloadCollapseIcon}$dokument.name", docContent,'downloadCollapse',downloadCollapseShowAs />
359 <#else>
360
361 <a href="${url}" title="Download ${dokument.name}" download>
362 ${downloadsIcon}${dokument.name}
363 </a>
364 </#if>
365 </li>
366 </#list>
367 </ul>
368 </div>
369 </div>
370 </#if>
371 <#if dienstleistung.einrichtungList?size gt 0>
372 <div class="card" id="zustaendigeEinrichtungen">
373 <div class="card-header">
374 <h2 class="el--location__headline el--textmodul__h3">${getLabelName4(dienstleistung, 'adt.label.dienstleistung.einrichtungen','Zuständige Einrichtungen')}</h2>
375 </div>
376 <div class="card-body">
377 <ul class="list-unstyled pl-0" aria-label="Liste der zuständigen Einrichtungen">
378 <#assign erCounter = 0/>
379 <#assign size = dienstleistung.einrichtungList?size/>
380 <#list dienstleistung.einrichtungList as einrichtung>
381 <#assign erCounter = erCounter + 1 />
382 <li class="mb-2" aria-label="Einrichtung ${einrichtung.name}">
383 <a href="${utils.createRenderUrl(renderResponse,einrichtungShow, einrichtung.id)}">${getFullFacilityName9(einrichtung,'dl-facility-address')}</a>
384 <ul class="list-unstyled pl-0" aria-label="Angaben zur Einrichtung">
385 <#if existsAndHasContent1(einrichtung.anschrift!'')>
386 <li aria-label="Adresse der Einrichtung">
387 <ul class="list-unstyled pl-0" >
388 <#if existsAndHasContent1(einrichtung.anschrift.name!'') && showEinrichtungAnschriftName>
389 <li aria-label="${showEinrichtungAnschriftNameAlt}"><strong>${einrichtung.anschrift.name}</strong></li>
390 </#if>
391 <li class="el--location__description__item"><@sr_only>Straße:</@sr_only>${einrichtung.anschrift.strasse} <@sr_only>Hausnummer:</@sr_only> ${einrichtung.anschrift.hausnummer}</li>
392 <li class="el--location__description__item"><@sr_only>PLZ:</@sr_only>${einrichtung.anschrift.postleitzahl} <@sr_only>Ort:</@sr_only>${einrichtung.anschrift.ort}</li>
393
394 <#if existsAndHasContent1(einrichtung.anschrift.postfach!'')>
395 <li class="el--location__description__item">Postfach ${einrichtung.anschrift.getPostfach()}</li>
396 </#if>
397 <#if existsAndHasContent1(einrichtung.anschrift.zusatz!'')>
398 <li class="mt-2 el--location__description__item"><strong>Adresszusatz:</strong><br/>${einrichtung.anschrift.getZusatz()}</li>
399 </#if>
400 </ul>
401 </li>
402 </#if>
403 <#if
404 (existsAndHasContent1(einrichtung.telefonnummer!'')) ||
405 (existsAndHasContent1(einrichtung.faxnummer!''))||
406 (existsAndHasContent1(einrichtung.email!''))
407 >
408 <li aria-label="Erreichbarkeiten der Einrichtung" class="mt-2">
409 <ul class="list-unstyled pl-0" >
410 <#if existsAndHasContent1(einrichtung.telefonnummer!'')>
411 <li class="el--location__description__item"><strong>Telefon:</strong><br> <a href="${createPhoneHref3(einrichtung)}">${einrichtung.telefonnummer}</a></li>
412 </#if>
413 <#if existsAndHasContent1(einrichtung.faxnummer!'')>
414 <li class="el--location__description__item"><strong>Fax:</strong><br> <a href="${createFaxHref3(einrichtung)}">${einrichtung.faxnummer}</a> </li>
415 </#if>
416 <#if existsAndHasContent1(einrichtung.email!'')>
417 <li class="el--location__description__item"><strong>E-Mail:</strong><br> <a href="${createMailHref5(einrichtung)}">${einrichtung.email}</a></li>
418 </#if>
419 </ul>
420 </li>
421 </#if>
422 </ul>
423 <#if erCounter < size>
424 <hr>
425 </#if>
426 </li>
427 </#list>
428 </ul>
429 </div>
430 </div>
431 </#if>
432 <@employeesBox dienstleistung, 'adt.label.dienstleistung.kontaktpersonen', 'Zuständige Kontaktpersonen', showEmployeesCollapse, showEmployeesCollapseAs, employeesCollapseProfilLinkText,employeesCollapseIcon, mitarbeiterShow, renderResponse, utils/>
433
434 <#if
435 existsAndHasContent1(textmodul.volltext.weiterfuehrenderLink!'') ||
436 existsAndHasContent1(textmodul.kurztext.weiterfuehrenderLink!'') ||
437 existsAndHasContent1(textmodul.rechtsgrundlagen.weiterfuehrenderLink!'') ||
438 existsAndHasContent1(textmodul.erforderlicheUnterlagen.weiterfuehrenderLink!'') ||
439 existsAndHasContent1(textmodul.voraussetzungen.weiterfuehrenderLink!'') ||
440 existsAndHasContent1(textmodul.verfahrensablauf.weiterfuehrenderLink!'') ||
441 existsAndHasContent1(textmodul.weiterfuehrendeInformationen.weiterfuehrenderLink!'') ||
442 existsAndHasContent1(textmodul.hinweiseBesonderheiten.weiterfuehrenderLink!'') ||
443 existsAndHasContent1(textmodul.rechtsbehelf.weiterfuehrenderLink!'') ||
444 existsAndHasContent1(textmodul.bearbeitungsdauer.weiterfuehrenderLink!'') ||
445 existsAndHasContent1(textmodul.fristen.weiterfuehrenderLink!'')>
446 <div class="card" id="weiterfuehrendeLinks">
447 <div class="card-header">
448 <h2>${getLabelName4(dienstleistung, 'adt.label.dienstleistung.weitereinfos','Weiterführende Informationen')}</h2>
449 </div>
450 <div class="card-body">
451 <ul class="list-unstyled pl-0">
452 ${linklooper7(textmodul.volltext)}
453 ${linklooper7(textmodul.kurztext)}
454 ${linklooper7(textmodul.rechtsgrundlagen)}
455 ${linklooper7(textmodul.erforderlicheUnterlagen)}
456 ${linklooper7(textmodul.voraussetzungen)}
457 ${linklooper7(textmodul.verfahrensablauf)}
458 ${linklooper7(textmodul.weiterfuehrendeInformationen)}
459 ${linklooper7(textmodul.hinweiseBesonderheiten)}
460 ${linklooper7(textmodul.rechtsbehelf)}
461 ${linklooper7(textmodul.bearbeitungsdauer)}
462 ${linklooper7(textmodul.fristen)}
463 </ul>
464 </div>
465 </div>
466 </#if>
467 </div>
468 </div>
469 </div>
470 </#if>
471 <#if bis2017.ausgewaehlteEinrichtung??>
472 <#-- Einrichtungen -->
473 <#assign
474 einrichtung = bis2017.ausgewaehlteEinrichtung
475 />
476 <div class="row">
477 <div class="col-12 col-sm-12 col-md-8 px-4 pl-lg-3">
478 <div class="vr-details-left">
479 <#if showLeftInCard>
480 <div class="card">
481 </#if>
482 <div class="facility-detail-header">
483 <div class="sideHeadline" id="seitentitel">
484 <h1>${getFullFacilityName9(einrichtung,'siteTitle')}</h1>
485 </div>
486 <#if existsAndHasContent1(einrichtung.kurzbezeichnung!'')>
487 <h2 class="sr-only">Kurzbezeichnung</h2>
488 <p>${einrichtung.kurzbezeichnung}</p>
489 </#if>
490 </div>
491
492 <#if existsAndHasContent1(einrichtung.aktuelles!'')>
493 <div class="alert alert-info">
494 <h2 class="">Aktuelles</h2>
495 <p>${einrichtung.aktuelles}</p>
496 </div>
497 </#if>
498 <#if existsAndHasContent1(einrichtung.beschreibung!'')>
499 <h2 class="sr-only">Beschreibung</h2>
500 <div>${einrichtung.beschreibung}</div>
501 </#if>
502
503 <#if existsAndHasContent1(einrichtung.beschreibungIntern!'')>
504 <h2 class="sr-only">Beschreibung Intern</h2>
505 <p>${einrichtung.beschreibungIntern}</p>
506 <hr/>
507 </#if>
508
509 <#if existsAndHasContent1(einrichtung.anschrift!'')>
510 <h2 class="">Anschrift</h2>
511 <div class="el--maplocation__card__content el--textmodul">
512 ${createAddressUL16(einrichtung, 'facility-address','')}
513 </div>
514
515 <#if existsAndHasContent1(einrichtung.telefonnummer!'') ||
516 existsAndHasContent1(einrichtung.faxnummer!'') ||
517 existsAndHasContent1(einrichtung.email!'')>
518 <hr>
519 <h2>Kontakt</h2>
520 ${createContactList9(einrichtung, 'facility-contact')}
521 </#if>
522 </#if>
523
524 <div class="el-textmodul">
525 <@addMap einrichtung, showFacilityMap, 'Karte'/>
526 <#if existsAndHasContent1(einrichtung.barrierefreieErreichbarkeit!'')>
527 <#if showCollapse>
528 ${collapseBefore20('Barrierefreie Erreichbarkeit',collapseIcon,'')}
529 <#else>
530 <hr>
531 <h2>Barrierefreie Erreichbarkeit</h2>
532 </#if>
533 <div class="text">
534 ${einrichtung.barrierefreieErreichbarkeit}
535 </div>
536 <#if showCollapse>
537 ${collapseAfter()}
538 </#if>
539 </#if>
540
541 <#if existsAndHasContent1(einrichtung.anschrift!'') && (existsAndHasContent1(einrichtung.anschrift.verkehrsanbindung!'') || existsAndHasContent1(einrichtung.anschrift.anfahrtUrl!''))>
542 <#if showCollapse>
543 ${collapseBefore20('Verkehrsanbindung',collapseIcon,'')}
544 <#else>
545 <hr>
546 <h2>Verkehrsanbindung</h2>
547 </#if>
548 <#if existsAndHasContent1(einrichtung.anschrift.verkehrsanbindung!'')>
549 ${einrichtung.anschrift.verkehrsanbindung}
550 </#if>
551 <#if existsAndHasContent1(einrichtung.anschrift.anfahrtUrl!'')>
552 <#list einrichtung.anschrift.anfahrtUrl as url>
553 <a href="${url.uri}" title="${url.titel}">${url.titel}</a>
554 </#list>
555 </#if>
556 <#if showCollapse>
557 ${collapseAfter()}
558 </#if>
559 </#if>
560
561 <#assign serviceZeitenEmpty = einrichtung.servicezeitenFreitext?has_content />
562 <#assign serviceZeitenEmpty = true />
563 <#if einrichtung.servicezeitenStrukturiert?? && einrichtung.servicezeitenStrukturiert.tage??>
564 <#list einrichtung.servicezeitenStrukturiert.tage?values as value>
565 <#list value.paare?values as paare>
566 <#if paare?? && paare?has_content && paare != '-'>
567 <#assign serviceZeitenEmpty = false />
568 <#break>
569 </#if>
570 </#list>
571 <#if serviceZeitenEmpty == false>
572 <#break>
573 </#if>
574 </#list>
575 </#if>
576
577
578
579 <#if !serviceZeitenEmpty || einrichtung.servicezeitenFreitext?has_content>
580 <#if showCollapse>
581 ${collapseBefore20('Servicezeiten',collapseIcon,'')}
582 <#else>
583 <hr>
584 <h2>Servicezeiten</h2>
585 </#if>
586
587 <@createTimeTable15 einrichtung/>
588 <p class="mt-2">${einrichtung.servicezeitenFreitext}</p>
589 <#if showCollapse>
590 ${collapseAfter()}
591 </#if>
592 <#elseif existsAndHasContent1(einrichtung.servicezeiten!'')>
593 <#if showCollapse>
594 ${collapseBefore20('Servicezeiten',collapseIcon,'')}
595 <#else>
596 <hr>
597 <h2>Servicezeiten</h2>
598 </#if>
599 <p>
600 ${einrichtung.servicezeiten}
601 </p>
602 <#if existsAndHasContent1(einrichtung.servicezeitenFreitext!'')>
603 <p class="mt-2">
604 ${einrichtung.servicezeitenFreitext}
605 </p>
606 </#if>
607 <#if showCollapse>
608 ${collapseAfter()}
609 </#if>
610 </#if>
611
612 <#if existsAndHasContent1(einrichtung.dienstleistungList!'')>
613 <#if showCollapse>
614 ${collapseBefore20('Dienstleistungen der Einrichtung',collapseIcon,'')}
615 <#else>
616 <hr>
617 <h2>Dienstleistungen der Einrichtung</h2>
618 </#if>
619 <ul style="padding:0;">
620 <#list einrichtung.dienstleistungList as dienstleistung>
621 <li>
622 <p class="m-0">
623 <a href="${utils.createRenderUrl(renderResponse, dienstleistungShow, dienstleistung.id)}">${dienstleistung.name}</a>
624 </p>
625 </li>
626 </#list>
627 </ul>
628 <#if showCollapse>
629 ${collapseAfter()}
630 </#if>
631 </#if>
632
633
634 <#if einrichtung.uebereinrichtung??>
635 <#if showCollapse>
636 ${collapseBefore20('Diese Einrichtung gehört zu',collapseIcon,'')}
637 <#else>
638 <hr>
639 <h2>Diese Einrichtung gehört zu</h2>
640 </#if>
641 <p>
642 <a href="${utils.createRenderUrl(renderResponse, einrichtungShow, einrichtung.uebereinrichtung.id)}">${getFullFacilityName9(einrichtung.uebereinrichtung,'uebereinrichtung')}</a>
643 </p>
644 <#if showCollapse>
645 ${collapseAfter()}
646 </#if>
647 </#if>
648
649 <#if existsAndHasContent1(einrichtung.untereinrichtungList!'')>
650 <#if showCollapse>
651 ${collapseBefore20('Zu dieser Einrichtung gehören',collapseIcon,'')}
652 <#else>
653 <hr>
654 <h2>Zu dieser Einrichtung gehören</h2>
655 </#if>
656 <ul style="">
657 <#list einrichtung.untereinrichtungList as child>
658 <li>
659 <p class="m-0">
660 <a href="${utils.createRenderUrl(renderResponse,einrichtungShow, child.id)}">${getFullFacilityName9(child,'untereinrichtungList')}</a>
661 </p>
662 </li>
663 </#list>
664 </ul>
665 <#if showCollapse>
666 ${collapseAfter()}
667 </#if>
668 </#if>
669 <#if existsAndHasContent1(einrichtung.internetadressen!'')>
670 <#if showCollapse>
671 ${collapseBefore20('Internetadressen', collapseIcon,'')}
672 <#else>
673 <hr>
674 <h2>Internetadressen</h2>
675 </#if>
676 <ul class="list-unstyled" style="padding-top:0 !important;padding-bottom:0 !important;">
677 <#list einrichtung.internetadressen as link>
678 <li>
679 <a href="${link.uri}" title="${link.titel}"
680 <#if link.neuesFenster> target="_blank" </#if>
681 >
682 ${link.titel}
683 </a>
684 </li>
685 </#list>
686 </ul>
687 <#if showCollapse>
688 ${collapseAfter()}
689 </#if>
690 </#if>
691 </div>
692 </div>
693 <#if showLeftInCard>
694 </div>
695 </#if>
696
697 </div>
698
699 <div class="col-12 col-sm-12 col-md-4 px-4 pr-lg-3">
700 <div class="vr-details-right">
701 <#if showFeedbackInFacility>
702 <@addFeedback/>
703 </#if>
704 <@employeesBox einrichtung, 'adt.label.dienstleistung.kontaktpersonen', 'Zuständige Kontaktpersonen', showEmployeesCollapse, showEmployeesCollapseAs, employeesCollapseProfilLinkText,employeesCollapseIcon, mitarbeiterShow, renderResponse, utils/>
705 </div>
706 </div>
707 </div>
708 </#if>
709 <#if bis2017.ausgewaehlterMitarbeiter??>
710 <#-- Mitarbeitende -->
711 <#assign
712 mitarbeiter = bis2017.ausgewaehlterMitarbeiter
713 />
714
715 <div class="row">
716 <div class="col-12 col-sm-12 col-md-8 px-4 pl-lg-3">
717 <div class="vr-details-left">
718 <#if showLeftInCard>
719 <div class="card">
720 </#if>
721 <div class="">
722 <div class="employee-header">
723 <div class="sideHeadline" id="seitentitel">
724 <h1>${mitarbeiter.volleAnsprache()}</h1>
725 </div>
726
727 <#if existsAndHasContent1(mitarbeiter.position!'')>
728 <p>${mitarbeiter.position}</p>
729 </#if>
730 </div>
731 <div class="el-textmodul">
732 <#if existsAndHasContent1(mitarbeiter.beschreibung!'')>
733 <h2 class="sr-only">Beschreibung</h2>
734 <p>${mitarbeiter.beschreibung}</p>
735 <hr/>
736 </#if>
737
738 <#if existsAndHasContent1(mitarbeiter.beschreibungIntern!'')>
739 <h2 class="sr-only">Beschreibung Intern</h2>
740 <p>${mitarbeiter.beschreibungIntern}</p>
741 <hr/>
742 </#if>
743
744 <#if existsAndHasContent1(mitarbeiter.einrichtungList!'')>
745 <h2>Anschrift</h2>
746 <#assign i = 0 />
747 <#list mitarbeiter.einrichtungList as einrichtung>
748 <#if i < 1>
749 <#if existsAndHasContent1(einrichtung.anschrift!'')>
750 ${createAddressUL16(einrichtung, 'employee-address',mitarbeiter)}
751 <#else>
752 <p><strong><a href="${utils.createRenderUrl(renderResponse,$einrichtungShow, $einrichtung.id)}">${einrichtung.name}</a></strong></p> <br/>
753 </#if>
754 <#if existsAndHasContent1(mitarbeiter.telefonnummer!'')
755 || existsAndHasContent1(mitarbeiter.faxnummer!'')
756 || existsAndHasContent1(mitarbeiter.mobil!'')
757 ||existsAndHasContent1(mitarbeiter.email!'')
758 >
759 <hr>
760 <h2>Kontakt</h2>
761 ${createContactList9(mitarbeiter, 'employee-contact')}
762 </#if>
763
764 <@addMap einrichtung, showEmployeeMap, 'Karte'/>
765 </#if>
766 <#assign i = i+1/>
767 </#list>
768 <#else>
769 <#if existsAndHasContent1(mitarbeiter.telefonnummer!'')
770 || existsAndHasContent1(mitarbeiter.faxnummer!'')
771 || existsAndHasContent1(mitarbeiter.mobil!'')
772 || existsAndHasContent1(mitarbeiter.email!'')
773 >
774 <h2>Kontakt</h2>
775 ${createContactList9(mitarbeiter, 'employee-contact')}
776 </#if>
777 </#if>
778
779 <#assign serviceZeitenEmpty = true />
780 <#if mitarbeiter.servicezeitenStrukturiert?? && mitarbeiter.servicezeitenStrukturiert.tage??>
781 <#list mitarbeiter.servicezeitenStrukturiert.tage?values as value>
782 <#list value.paare?values as paare>
783 <#if paare?? && paare?has_content && paare != '-'>
784 <#assign serviceZeitenEmpty = false />
785 <#break>
786 </#if>
787 </#list>
788 <#if serviceZeitenEmpty == false>
789 <#break>
790 </#if>
791 </#list>
792 </#if>
793
794 <#if !serviceZeitenEmpty || mitarbeiter.servicezeitenFreitext?has_content>
795 <#if showCollapse>
796 ${collapseBefore20('Servicezeiten',collapseIcon,'')}
797 <#else>
798 <hr>
799 <h2>Servicezeiten</h2>
800 </#if>
801 <@createTimeTable15 mitarbeiter/>
802 <p class="mt-2">
803 ${mitarbeiter.servicezeitenFreitext}
804 </p>
805 <#if showCollapse>
806 ${collapseAfter()}
807 </#if>
808 <#elseif existsAndHasContent1(mitarbeiter.servicezeiten!'')>
809 <#if showCollapse>
810 ${collapseBefore20('Servicezeiten',collapseIcon,'')}
811 <#else>
812 <hr>
813 <h2>Servicezeiten</h2>
814 </#if>
815 <p>
816 ${mitarbeiter.servicezeiten}
817 </p>
818 <#if mitarbeiter.servicezeitenFreitext>
819 <p class="mt-2">
820 ${mitarbeiter.servicezeitenFreitext}
821 </p>
822 </#if>
823 <#if showCollapse>
824 ${collapseAfter()}
825 </#if>
826 </#if>
827 <#if existsAndHasContent1(mitarbeiter.dienstleistungList!'')>
828 <#if showCollapse>
829 ${collapseBefore20('Dienstleistungen',collapseIcon,'')}
830 <#else>
831 <hr>
832 <h2>Dienstleistungen</h2>
833 </#if>
834 <ul style="padding: 0">
835 <#list mitarbeiter.dienstleistungList as dienstleistung>
836 <li>
837 <p>
838 <a href="${utils.createRenderUrl(renderResponse,dienstleistungShow, dienstleistung.id)}">${dienstleistung.name}</a>
839 </p>
840 </li>
841 </#list>
842 </ul>
843
844 <#if showCollapse>
845 ${collapseAfter()}
846 </#if>
847 </#if>
848 </div>
849 </div>
850 <#if showLeftInCard>
851 </div>
852 </#if>
853 </div>
854 </div>
855 <div class="col-12 col-sm-12 col-md-4 px-4 pr-lg-3">
856 <div class="vr-details-right">
857 <#if showFeedbackInEmployee>
858 <@addFeedback/>
859 </#if>
860 <#if existsAndHasContent1(mitarbeiter.portrait!'')>
861 <#if !showLeftInCard>
862 <#assign portrait = '<div class="w-100"><img src="${mitarbeiter.portrait}" alt="Mitarbeitenden Portrait" style="width: 100%;height: 100%;"/></div>' />
863 <#else>
864 <#assign portrait = '<div class="w-100" style="text-align:center;"><img src="${mitarbeiter.portrait}" alt="Mitarbeitenden Portrait" style="width: 100%;height: 100%; max-width:200px"/></div>' />
865 </#if>
866 ${card3('Mitarbeitenden Portrait',portrait)}
867 </#if>
868
869 <#if existsAndHasContent1(mitarbeiter.einrichtungList!'')>
870 <div class="card" id="mbZustaendigeEinrichtungen">
871 <div class="card-header">
872 <#if mitarbeiter.einrichtungList?size gt 1 >
873 <h2>Zuständige Einrichtungen</h2>
874 <#else>
875 <h2>Zuständige Einrichtung</h2>
876 </#if>
877 </div>
878 <div class="card-body">
879 <ul>
880 <#assign counter = 0 />
881 <#list mitarbeiter.einrichtungList as einrichtung >
882 <#assign counter = counter + 1/>
883 <li>
884 <a href="${utils.createRenderUrl(renderResponse,einrichtungShow, einrichtung.id)}">${getFullFacilityName9(einrichtung,'employee-facility-list')}</a>
885 <#if counter < mitarbeiter.einrichtungList?size>
886 <hr>
887 </#if>
888 </li>
889 </#list>
890 </ul>
891 </div>
892 </div>
893 </#if>
894 </div>
895 </div>
896 </div>
897 <@employeesExport16 employeeData=mitarbeiter />
898 </#if>
899
900 <#if vr.zfinder2017??>
901 <#if vr.zfinder2017.ausgewaehlteLeistung??>
902
903 </#if>
904 <#if vr.zfinder2017.additionalInformation??>
905
906 </#if>
907 </#if>
908<#else>
909 <div class="alert alert-info">
910 <h1>Detailseite nicht gefunden</h1>
911 <p>
912 Die Angeforderte Detailseite konnte nicht gefunden werden.
913 </p>
914 </div>
915</#if>
916<@addFeedbackButtonJavascript />
917
918
919
920
921
922
923
924
925
926
927
928<#function createLoginURL destination>
929 <#assign
930 login_url1_WithHtml = 'href="'+ login_url +'?p_p_id=com_liferay_login_web_portlet_LoginPortlet&p_p_lifecycle=0&_com_liferay_login_web_portlet_LoginPortlet_redirect='
931 login_url2_WithHtml = '" rel="nofollow" data-redirect="true"'
932 login_url_WithHtml = login_url1_WithHtml + destination + login_url2_WithHtml
933 />
934 <#return login_url_WithHtml />
935</#function>
936
937<#macro employeesExport16 employeeData>
938 <div id="export" style="display:none;">
939 <div id="export-id">${employeeData.id}</div>
940 <div id="export-person">
941 <div id="export-person-anrede"><#if employeeData.anrede??>${employeeData.anrede}</#if></div>
942 <div id="export-person-titel"><#if employeeData.titel??>${employeeData.titel}</#if></div>
943 <div id="export-person-vorname"><#if employeeData.vorname??>${employeeData.vorname} </#if></div>
944 <div id="export-person-familienname"><#if employeeData.familienname??>${employeeData.familienname} </#if></div>
945 <div id="export-person-funktion"><#if employeeData.position??>${employeeData.position} </#if></div>
946 </div>
947 <div id="export-beschreibung"><#if employeeData.beschreibung??>${employeeData.beschreibung}</#if></div>
948 <div id="export-kontakt">
949 <div id="export-kontakt-telefonnummer"><#if employeeData.telefonnummer??>${employeeData.telefonnummer}</#if></div>
950 <div id="export-kontakt-faxnummer"><#if employeeData.faxnummer??>${employeeData.faxnummer} </#if></div>
951 <div id="export-kontakt-telefonnummer-mobil"><#if employeeData.mobil??>${employeeData.mobil} </#if></div>
952 <div id="export-kontakt-email-adresse"><#if employeeData.email??>${employeeData.email} </#if></div>
953 </div>
954 <div id="export-anschrift">
955 <#if existsAndSizeGTZero(employeeData.einrichtungList)>
956 <#assign einrichtung = employeeData.einrichtungList[0]/>
957 <#else>
958 <#assign einrichtung = '' />
959 </#if>
960 <div id="export-anschrift-url-einrichtung">
961 <#if einrichtung?? && einrichtung?has_content>
962 <a href="${utils.createRenderUrl(renderResponse,einrichtungShow, einrichtung.id)}">
963 ${einrichtung.name}
964 </a>
965 </#if>
966 </div>
967 <#if einrichtung?? && einrichtung?has_content>
968 <div id="export-anschrift-strasse"><#if einrichtung.anschrift.strasse??>${einrichtung.anschrift.strasse} </#if></div>
969 <div id="export-anschrift-hausnummer"><#if einrichtung.anschrift.hausnummer??>${einrichtung.anschrift.hausnummer} </#if></div>
970 <div id="export-anschrift-ort"><#if einrichtung.anschrift.ort??>${einrichtung.anschrift.ort}</#if></div>
971 <div id="export-anschrift-postleitzahl"><#if einrichtung.anschrift.postleitzahl??>${einrichtung.anschrift.postleitzahl} </#if></div>
972 <div id="export-anschrift-zusatz"><#if einrichtung.anschrift.zusatz??>${einrichtung.anschrift.zusatz} </#if></div>
973 <div id="export-anschrift-postfach"><#if einrichtung.anschrift.postfach??>${einrichtung.anschrift.postfach} </#if></div>
974 </#if>
975
976 <div id="export-anschrift-raum"><#if employeeData.raum??>${employeeData.raum} </#if></div>
977 </div>
978 <div id="export-servicezeiten">
979 <div id="export-servicezeiten-tabelle">
980 <#assign serviceZeitenEmpty = employeeData.servicezeitenFreitext?has_content />
981 <#if employeeData.servicezeitenStrukturiert?? && employeeData.servicezeitenStrukturiert.tage??>
982 <#list employeeData.servicezeitenStrukturiert.tage?values as value>
983 <#list value.paare?values as paare>
984 <#if paare?? && paare?has_content>
985 <#assign serviceZeitenEmpty = false />
986 <#break>
987 </#if>
988 </#list>
989 <#if !serviceZeitenEmpty>
990 <#break>
991 </#if>
992 </#list>
993 </#if>
994 <#if serviceZeitenEmpty??>
995 <@createTimeTable15 employeeData/>
996 <#elseif employeeData.servicezeiten??>
997 ${employeeData.servicezeiten}
998 </#if>
999 </div>
1000 <div id="export-servicezeiten-anmerkungen"><#if employeeData.servicezeitenFreitext??> ${employeeData.servicezeitenFreitext} </#if></div>
1001 </div>
1002
1003 <div id="export-amt-fachbereich">
1004 <#if employeeData.amtFachbereich??>
1005 <a href="${utils.createRenderUrl(renderResponse,einrichtungShow, employeeData.amtFachbereich.id)}">${employeeData.amtFachbereich.name}</a>
1006 </#if>
1007 </div>
1008
1009 <#if einrichtung?? && einrichtung?has_content>
1010 <#if einrichtung.anschrift??>
1011 <div id="export-verkehrsanbindung">
1012 <#if einrichtung.anschrift.verkehrsanbindung??>
1013 ${einrichtung.anschrift.verkehrsanbindung}
1014 </#if>
1015 </div>
1016 <div id="export-geokoordinaten">
1017 <#if einrichtung.anschrift.geokodierung??>
1018 <div id="export-geokooridnaten-breitengrad">
1019 <#if einrichtung.anschrift.geokodierung.latitude??>
1020 ${einrichtung.anschrift.geokodierung.latitude}
1021 </#if>
1022 </div>
1023 <div id="export-geokooridnaten-laengengrad">
1024 <#if einrichtung.anschrift.geokodierung.longitude??>
1025 ${einrichtung.anschrift.geokodierung.longitude} </#if>
1026 </div>
1027 </#if>
1028 <div id="export-geokooridnaten-anfahrt-url">
1029 <#if einrichtung.anschrift.anfahrtUrl?? && einrichtung.anschrift.anfahrtUrl?has_content>
1030 <#assign anfahrtUrl = einrichtung.anschrift.anfahrtUrl[0]/>
1031 <a href="${anfahrtUrl.uri}">${anfahrtUrl.titel}</a>
1032 </#if>
1033 </div>
1034
1035 </div>
1036 </#if>
1037 </#if>
1038 <div id="export-dienstleistungen">
1039 <ul>
1040 <#if mitarbeiter.dienstleistungList??>
1041 <#list employeeData.dienstleistungList as dienstleistung>
1042 <li>
1043 <a href="${utils.createRenderUrl(renderResponse,dienstleistungShow, dienstleistung.id)}">
1044 ${dienstleistung.name}
1045 </a>
1046 </li>
1047 </#list>
1048 </#if>
1049 </ul>
1050 </div>
1051 <div id="export-einrichtungen">
1052 <ul>
1053 <#list employeeData.einrichtungList as einrichtung>
1054 <li>
1055 <a href="${utils.createRenderUrl(renderResponse,einrichtungShow, einrichtung.id)}">
1056 ${einrichtung.name}
1057 </a>
1058 </li>
1059 </#list>
1060 </ul>
1061 </div>
1062 </div>
1063</#macro>
1064
1065<#macro portletSearch>
1066</#macro>
1067
1068<#function createPersoIcon13 class>
1069 <#local
1070 iconStyling = getServiceIconStyling()[0]
1071 iconClass = getServiceIconStyling()[1]
1072 iconWrapperClass = getServiceIconStyling()[2]
1073 />
1074 <#return '<i aria-hidden="true" class="'+class+' '+iconWrapperClass+'"><img aria-hidden="true" style="'+iconStyling+' background: white !important;border-radius: 0.2rem;" class="persoIcon '+class+' '+iconClass+'" src ="/o/bot-theme/images/perso.svg" alt=""/></i>' />
1075</#function>
1076
1077<#macro externContentLoader9 headline content contentUrl privacyTitle privacyUrl showButtonText hideButtonText>
1078 <div class="externContentLoader" aria-hidden="true">
1079 <div class="row">
1080 <div class="col-12 contentCol">
1081 <div class="extern-hide">
1082 ${headline}
1083 ${content}
1084 </div>
1085 <div class="extern-show d-none" data-content="${contentUrl}"></div>
1086 </div>
1087 <div class="col-6 mt-2">
1088 <button class="btn btn-primary load-extern">
1089 ${showButtonText}
1090 </button>
1091 <button class="btn btn-primary remove-extern d-none">
1092 ${hideButtonText}
1093 </button>
1094 </div>
1095 <div class="col-6 mt-3 privacyUrl">
1096 <a href="${privacyUrl}">
1097 ${privacyTitle}
1098 </a>
1099 </div>
1100 </div>
1101 </div>
1102
1103 <script>
1104 $(document).ready(function(){
1105
1106 function loadExtern(element,url){
1107 $(element).append('<iframe style="height: 100%" src=' + url +' width="100%"></iframe>');
1108 }
1109
1110 function removeExtern(element){
1111 $(element).remove();
1112 }
1113
1114 function showContent(contentElement,buttonElement){
1115 contentElement.removeClass("d-none");
1116 buttonElement.removeClass("d-none");
1117 contentElement.addClass("d-block");
1118 buttonElement.addClass("d-block");
1119 }
1120 function hideContent(contentElement,buttonElement){
1121 contentElement.removeClass("d-block");
1122 buttonElement.removeClass("d-block");
1123 contentElement.addClass("d-none");
1124 buttonElement.addClass("d-none");
1125 }
1126 function findClosest(element,toFindElement){
1127 return $(element).find(toFindElement);
1128 }
1129
1130 function getParent(element){
1131 return $(element).closest(".externContentLoader");
1132 }
1133
1134 $(".load-extern").on("click",function(){
1135 let parent = getParent(this);
1136 let externShow = findClosest(parent,".extern-show");
1137 let externHide = findClosest(parent,".extern-hide");
1138 let externShowBtn = $(this);
1139 let externHideBtn = findClosest(parent,".remove-extern");
1140
1141
1142 showContent(externShow,externHideBtn);
1143 hideContent(externHide,externShowBtn);
1144 loadExtern(externShow,$(externShow).attr("data-content"))
1145 })
1146
1147 $(".remove-extern").on("click",function(){
1148 let parent = getParent(this);
1149 let externShow = findClosest(parent,".extern-show");
1150 let externHide = findClosest(parent,".extern-hide");
1151 let externShowBtn = findClosest(parent,".load-extern");
1152 let externHideBtn = $(this);
1153
1154 hideContent(externShow,externHideBtn);
1155 showContent(externHide,externShowBtn);
1156 removeExtern(externShow.children());
1157 })
1158 })
1159 </script>
1160</#macro>
1161
1162<#macro createTimeTable15 baseVariable>
1163 <#assign serviceZeitenEmpty = true />
1164 <#if baseVariable.servicezeitenStrukturiert?? && baseVariable.servicezeitenStrukturiert.tage??>
1165 <#list baseVariable.servicezeitenStrukturiert.tage?values as value>
1166 <#list value.paare?values as paare>
1167 <#if paare?? && paare?has_content && paare != '-'>
1168 <#assign serviceZeitenEmpty = false />
1169 <#break>
1170 </#if>
1171 </#list>
1172 <#if serviceZeitenEmpty == false>
1173 <#break>
1174 </#if>
1175 </#list>
1176 </#if>
1177
1178 <!-- serviceZeitenEmpty ${serviceZeitenEmpty?string('true','false')}-->
1179 <#if serviceZeitenEmpty == false>
1180 <table id="serviceTimeTable" class="table table-striped" style="width:100%;">
1181 <thead class="">
1182 <tr>
1183 <th style="width: calc(20%)" class="">Wochentag</th>
1184 <th style="width: calc(80% / 2)" class="">Servicezeitraum 1</th>
1185 <th style="width: calc(80% / 2)" class="">Servicezeitraum 2</th>
1186 </tr>
1187 </thead>
1188 <tbody>
1189 <#list baseVariable.servicezeitenStrukturiert.tage as tagName, tagZeiten>
1190 <#assign emptyTag = true />
1191 <#list tagZeiten.paare?values as tagZeitenPaar>
1192 <#if tagZeitenPaar?? && tagZeitenPaar?has_content && tagZeitenPaar != '-' >
1193 <#assign emptyTag = false />
1194 <#break>
1195 </#if>
1196 </#list>
1197 <#if emptyTag>
1198 <#else>
1199 <#if tagName??>
1200 <#assign
1201 tagNameFormated = tagName?substring(0, 1)?upper_case
1202 tagNameFormated = tagNameFormated + tagName?substring(1)?lower_case
1203 />
1204 <tr>
1205 <td>${tagNameFormated}</td>
1206 <#assign ersterEintraginSpalte = true />
1207 <#list tagZeiten.paare as key, value>
1208 <#if key == "VORMITTAGS">
1209 <#if value.getVon()?? && value.getBis()?has_content && value.getBis()?? && value.getBis()?has_content>
1210 <td class="">
1211 ${value.getVon()} bis ${value.getBis()} Uhr
1212 </td>
1213 <#else>
1214 <td class=""></td>
1215 </#if>
1216 </#if>
1217 <#if key == "NACHMITTAGS">
1218 <#if value.getVon()?? && value.getBis()?has_content && value.getBis()?? && value.getBis()?has_content>
1219 <td class="">
1220 ${value.getVon()} bis ${value.getBis()} Uhr
1221 </td>
1222 <#else>
1223 <td class=""></td>
1224 </#if>
1225 </#if>
1226 </#list>
1227 </tr>
1228 </#if>
1229 </#if>
1230 </#list>
1231 </tbody>
1232 </table>
1233 </#if>
1234</#macro>
1235
1236<#function createPhoneHref3 baseObject >
1237 <#return createNumberHref3(baseObject.telefonnummer,'tel') />
1238</#function>
1239<#function createFaxHref3 baseObject >
1240 <#return createNumberHref3(baseObject.faxnummer,'fax') />
1241</#function>
1242<#function createMailHref5 baseObject >
1243 <#return 'mailto:'+baseObject.email />
1244</#function>
1245<#function createMobilHref3 baseObject >
1246 <#return createNumberHref3(baseObject.mobil,'tel' ) />
1247</#function>
1248<#function createNumberHref3 baseObject prefix>
1249 <#local
1250 phonenumber = baseObject?replace('-','')?replace(' ','')?replace('+49','')
1251 />
1252 <#if phonenumber?index_of('0') == 0>
1253 <#local
1254 index = phonenumber?index_of('0')
1255 index = index + 1
1256 combinatedPhonenumber = prefix + ":+49" + phonenumber?substring(index)
1257 />
1258 <#else>
1259 <#local
1260 combinatedPhonenumber = prefix + ":+49" + phonenumber
1261 />
1262 </#if>
1263 <#return combinatedPhonenumber />
1264</#function>
1265
1266<#function createContactList9 base listClass>
1267 <#assign
1268 listString = "<ul class='${listClass} mb-4' aria-label='Kontaktmöglichkeiten' style='list-style: none !important;padding: 0 !important;'>"
1269 />
1270 <#if existsAndHasContent1(base.telefonnummer!'')>
1271 <#assign listString = listString+
1272 "<li class='telefonnummer-li'>
1273 <p class='m-0'>Telefon:
1274 <a href='${createPhoneHref3(base)}' title='Anrufen'>${base.telefonnummer} </a>
1275 </p>
1276 </li>"
1277 />
1278 </#if>
1279 <#if existsAndHasContent1(base.mobil!'')>
1280 <#assign listString = listString+
1281 "<li class='mobilnummer-li'>
1282 <p class='m-0'>Mobil:
1283 <a href='${createMobilHref3(base)}' title='Anrufen'>${base.mobil} </a>
1284 </p>
1285 </li>"
1286 />
1287 </#if>
1288 <#if existsAndHasContent1(base.faxnummer!'')>
1289 <#assign listString = listString+
1290 "<li class='faxnummer-li'>
1291 <p class='m-0'>Fax:
1292 <a href='${createFaxHref3(base)}' title='Faxen'>${base.faxnummer} </a>
1293 </p>
1294 </li>"
1295 />
1296 </#if>
1297 <#if existsAndHasContent1(base.email!'')>
1298 <#assign listString = listString+
1299 "<li class='email-li'>
1300 <p class='m-0'>E-Mail:
1301 <a href='${createMailHref5(base)}' title='E-Mail schreiben'>${base.email}</a>
1302 </p>
1303 </li>"
1304 />
1305 </#if>
1306 <#assign listString = listString+"</ul>" />
1307 <#return listString />
1308</#function>
1309
1310<#function getFullFacilityName9 einrichtung spanClass>
1311 <#assign
1312 getFullFacilityNameCounter = 1
1313 einrichtungsname = ''
1314 />
1315 <#if einrichtung.breadcrumb?? && einrichtung.breadcrumb?has_content>
1316 <#list einrichtung.breadcrumb as i>
1317 <#if i.showAlways && i.name != einrichtung.name>
1318 <#assign
1319 einrichtungsname = einrichtungsname+' <span class="facility-name-level-'+getFullFacilityNameCounter+' '+spanClass+'">'+i.name+' </span>'
1320 getFullFacilityNameCounter = getFullFacilityNameCounter+1
1321 />
1322 </#if>
1323 </#list>
1324
1325 </#if>
1326
1327 <#if einrichtungsname == ''>
1328 <#assign einrichtungsname = '<span class="facility-name-level-1 '+spanClass+'">'+einrichtung.name+'</span>' />
1329 <#else>
1330 <#assign einrichtungsname = einrichtungsname+'<span class="facility-name-level-'+getFullFacilityNameCounter+' '+spanClass+'">'+einrichtung.name+' </span>' />
1331 </#if>
1332 <#return einrichtungsname />
1333</#function>
1334
1335<#function createAddressUL16 einrichtung listClass mitarbeiter>
1336 <#assign
1337 fullFacilityNameClass = listClass+'name'
1338 listString ="<ul aria-label='Adresse' class='address-list ${listClass}' style='list-style: none !important;padding: 0 !important;'>"
1339 listString = listString+
1340 "<li>
1341 ${getFullFacilityName9(einrichtung,fullFacilityNameClass)}
1342 </li>"
1343 listString = listString+
1344 "<li class='nameDerAdresse-li'>
1345 <span class='nameDerAdresse'>
1346 ${einrichtung.anschrift.name}
1347 </span>
1348 </li>"
1349 />
1350 <#if existsAndHasContent1(einrichtung.anschrift.strasse!'') || existsAndHasContent1(einrichtung.anschrift.hausnummer!'') >
1351 <#assign listString = listString+ "<li class='strasse-hausnummer-li'>" />
1352 <#if existsAndHasContent1(einrichtung.anschrift.strasse!'')>
1353 <#assign listString = listString+ "<span aria-label='Strasse' class='strasse'>${einrichtung.anschrift.strasse}</span> "/>
1354 </#if>
1355 <#if existsAndHasContent1(einrichtung.anschrift.hausnummer!'')>
1356 <#assign listString = listString+ "<span aria-label='Hausnummer' class='hausnummer'>${einrichtung.anschrift.hausnummer}</span> "/>
1357 </#if>
1358 <#assign listString = listString+ "</li>" />
1359 </#if>
1360 <#if existsAndHasContent1(einrichtung.anschrift.postleitzahl!'') || existsAndHasContent1(einrichtung.anschrift.ort!'')>
1361 <#assign listString = listString+ "<li class='postleitzahl-ort-li'>" />
1362 <#if existsAndHasContent1(einrichtung.anschrift.postleitzahl!'')>
1363 <#assign listString = listString+ "<span aria-label='Postleitzahl' class='postleitzahl'>${einrichtung.anschrift.postleitzahl}</span> "/>
1364 </#if>
1365 <#if existsAndHasContent1(einrichtung.anschrift.ort!'')>
1366 <#assign listString = listString+ "<span aria-label='Ort' class='ort'>${einrichtung.anschrift.ort}</span>" />
1367 </#if>
1368 <#assign listString = listString+ "</li>"/>
1369 </#if>
1370 <#if existsAndHasContent1(mitarbeiter!'')>
1371 <#if existsAndHasContent1(mitarbeiter.raum!'')>
1372 <#assign listString = listString+ "<li class='raum-li'>" />
1373 <#if einrichtung.anschrift.postleitzahl??>
1374 <#assign listString = listString+ "<span aria-label='Raum' class='raum'>Raum ${mitarbeiter.raum}</span> "/>
1375 </#if>
1376 <#assign listString = listString+ "</li>" />
1377 </#if>
1378 </#if>
1379
1380 <#if existsAndHasContent1(einrichtung.anschrift.postfach!'')>
1381 <#assign listString = listString+
1382 "<li class='mt-2 postfach-li'>
1383 <p class='m-0'><span class='postfach'>Postfach ${einrichtung.anschrift.getPostfach()}</span></p>
1384 <p class='m-0'>"
1385 />
1386
1387 <#if existsAndHasContent1(einrichtung.anschrift.postfachPostleitzahl!'')>
1388 <#assign listString = listString+ "<span aria-label='Postfach Postleitzahl' class='postleitzahl'>
1389 ${einrichtung.anschrift.postfachPostleitzahl}
1390 </span>"
1391 />
1392 </#if>
1393 <#if existsAndHasContent1(einrichtung.anschrift.postfachOrt!'')>
1394 <#assign listString = listString+ "<span aria-label='Postfach Ort' class='ort'>
1395 ${einrichtung.anschrift.postfachOrt}
1396 </span>"
1397 />
1398 </#if>
1399 <#assign listString = listString+ "</p></li>"/>
1400 </#if>
1401 <#if existsAndHasContent1(einrichtung.anschrift.zusatz!'')>
1402 <#assign listString = listString+
1403 "<li class='mt-2 adresszusatz-li'>
1404 <p class='m-0'>
1405 <span class='adresszusatz'>
1406 <strong>Adresszusatz: </strong>
1407 <br/>
1408 ${einrichtung.anschrift.getZusatz()}
1409 </span>
1410 </p></li>"
1411 />
1412 </#if>
1413 <#assign listString = listString+'</ul>'/>
1414 <#return listString />
1415</#function>
1416
1417<#macro kostenliste3>
1418 <#if existsAndHasContent1(dienstleistung.kostenmodul.beschreibung!'') || existsAndHasContent1(dienstleistung.kostenmodul.kosten!'')>
1419 <#if existsAndHasContent1(dienstleistung.kostenmodul.kosten!'')>
1420 <#assign showDescription = false />
1421 <#list dienstleistung.kostenmodul.kosten as kosten>
1422 <#if existsAndHasContent1(kosten.beschreibung!'')>
1423 <#assign showDescription = true />
1424 </#if>
1425 </#list>
1426 <table class="w-100">
1427 <thead>
1428 <tr>
1429 <th <#if showDescription> style="width:60%" <#else> style="width:80%" </#if>
1430 class="pl-0 pr-2 py-2">Name
1431 </th>
1432 <th class="p-2 d-none">Typ</th>
1433 <th <#if showDescription> style="width:15%" <#else> style="width:20%" </#if>
1434 class="p-2">Kosten</th>
1435 <#if showDescription>
1436 <th class="p-2" style="width:25%">Beschreibung</th>
1437 </#if>
1438 </tr>
1439 </thead>
1440 <tbody>
1441 <#list dienstleistung.kostenmodul.kosten as kosten>
1442 <tr>
1443 <td class="pl-0 pr-2 py-2">${kosten.name}</td>
1444 <td class="p-2 d-none">
1445 <#if kosten.typ?? && kosten.typ?length gt 0>
1446 <#assign kostenTypeName = kosten.typ+'' />
1447 ${kostenTypeName?substring(0, 1)?upper_case}${kostenTypeName?substring(1)?lower_case}
1448 <#else>
1449 <span class="sr-only">Keine Angabe</span>
1450 </#if>
1451 </td>
1452 <td class="p-2">
1453 <#if kosten.isKostenfrei()>
1454 kostenfrei
1455 <#elseif kosten.isKostenVariabel()>
1456 zwischen ${utils.formatCurrency(kosten.von)} und ${utils.formatCurrency(kosten.bis)} EUR
1457 <#else>
1458 ${utils.formatCurrency(kosten.von)} EUR
1459 </#if>
1460 </td>
1461 <#if showDescription>
1462 <td class="p-2"> <#if kosten.beschreibung??> ${kosten.beschreibung} </#if></td>
1463 </#if>
1464 </tr>
1465 </#list>
1466 </tbody>
1467 </table>
1468 </#if>
1469 ${dienstleistung.kostenmodul.beschreibung}
1470 </#if>
1471</#macro>
1472
1473<#macro openstreetmap52 headline lat lng>
1474 <#if (lat?has_content && lng?has_content) && (lat gt 0 && lng gt 0)>
1475 <hr>
1476 <h2>${headline}</h2>
1477 <div style="">
1478 <#assign
1479 url = 'https://www.openstreetmap.org'
1480 uri = '/export/embed.html?'
1481 delimiter = '%2C'
1482 box = 'bbox=' + (lng + 0.000911951065064) + delimiter + (lat + 0.00044345841716) + delimiter + (lng - 0.000911951065064) + delimiter + (lat - 0.00044345421122) + '&layer=mapnik&marker='+lat+delimiter+lng
1483 headline = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-extern-content-map-headline"))
1484 content = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-extern-content-map-content"))
1485 privacyTitle = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-extern-content-map-privacy-title"))
1486 privacyUrl = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-extern-content-map-privacy-url"))
1487 showButtonText = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-extern-content-map-show-button-title"))
1488 hideButtonText = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-extern-content-map-hide-button-title"))
1489 contentUrl = url+uri+box
1490 />
1491 <@externContentLoader9 headline content contentUrl privacyTitle privacyUrl showButtonText hideButtonText />
1492 <hr>
1493 </div>
1494 </#if>
1495</#macro>
1496
1497<#function collapseBefore20 title icon colappseId>
1498 <#if dienstleistung?has_content>
1499 <#assign shortName = 'dl'/>
1500 <#elseif einrichtung?has_content>
1501 <#assign shortName = 'fa'/>
1502 <#elseif mitarbeiter?has_content>
1503 <#assign shortName = 'mi'/>
1504 </#if>
1505
1506 <#if colappseId != ''>
1507 <#assign collapeId = colappseId?replace(' ','')?replace('\\.','')?replace('/','')/>
1508 <#else>
1509 <#assign collapeId = title?replace(' ','')?replace('\\.','')?replace('/','')/>
1510 </#if>
1511 <#return "<div class='card collapseCard' id='collapse-${shortName}-base-${collapeId}'>
1512 <div class='card-header'>
1513 <a class='card-link collapsed' data-toggle='collapse' href='#${shortName}-${collapeId}' aria-expanded='false'>
1514 ${icon}
1515 <h2>${title}</h2>
1516 </a>
1517 </div>
1518 <div id='${shortName}-${collapeId}' class='collapse'>
1519 <div class='card-body'> "/>
1520</#function>
1521
1522<#function collapseAfter>
1523 <#return "</div></div></div>"/>
1524</#function>
1525
1526<#function createDLnewLink8 css, linkClass, bevoreLinkTitle, icon, title, targetParam, descriptionParam, hrefParam, aditionalAttributsParams>
1527 <#if descriptionParam?? && descriptionParam?has_content>
1528 <#assign descriptionTitle = "title='${descriptionParam}'" />
1529 </#if>
1530 <#if targetParam == "blank">
1531 <#assign target = "_blank" />
1532 <#elseif targetParam == "self">
1533 <#assign target = "_self" />
1534 <#else>
1535 <#assign target = "_blank" />
1536 </#if>
1537 <#if hrefParam?has_content && hrefParam != ''>
1538 <#assign href= "href='${hrefParam}'" />
1539 <#else>
1540 <#assign href = '' />
1541 </#if>
1542
1543 <#if aditionalAttributsParams?? && aditionalAttributsParams?has_content>
1544 <#assign attributs = aditionalAttributsParams />
1545 <#else>
1546 <#assign attributs = '' />
1547 </#if>
1548 <#return "<a class='${linkClass}'
1549 style='${css}'
1550 target='${target}'
1551 ${descriptionTitle}
1552 ${href}
1553 ${attributs}
1554 >
1555 ${bevoreLinkTitle}
1556 <span class='buttonServiceIconsWrapper'>
1557 ${icon}
1558 </span>
1559 <span>${title?trim}</span>
1560 </a>" />
1561</#function>
1562
1563<#function iconLegendListEntry5 show icon content>
1564 <#local value = '' />
1565 <#if show>
1566 <#local value = "<li class=''>
1567 <div class='row'>
1568 <div class='col-2' style='min-height: 35px;display: flex;justify-content: center;align-items: center;'>
1569 <p class='mb-0'>${icon}
1570 </div>
1571 <div class='col-10' style='min-height: 35px;display: flex;justify-content:left ;align-items: center;'>
1572 <p class='mb-0'>${content}
1573 </div>
1574 </div>
1575 </li>"
1576 />
1577 </#if>
1578 <#return value>
1579</#function>
1580
1581<#macro iconLegendList10 elementId, destination, fontColor, iconArray, iconLegendTextArray, showDLIcons, showDLLockIcon, showDLMoneyIcon, showDLPersoLogo>
1582 <#if showDLLockIcon || showDLMoneyIcon || showDLPersoLogo>
1583 <div class="<#if !showDLIcons> sr-only </#if>" style="font-size: 0.7rem" id="${elementId}">
1584 <h3 class="mb-0 mt-3" style="color:${fontColor}; font-weight: 700 !important;font-size: small !important;">Icon Legende</h3>
1585 <ul style="font-size: 0.7rem; list-style: none !important; padding-left: 0 !important;" aria-label="Icon Legende">
1586 ${iconLegendListEntry5(showDLPersoLogo,createPersoIcon13('persoLogoTable'), iconLegendTextArray[2])}
1587 ${iconLegendListEntry5(showDLLockIcon,iconArray[0], iconLegendTextArray[0])}
1588 ${iconLegendListEntry5(showDLMoneyIcon,iconArray[1], iconLegendTextArray[1])}
1589 </ul>
1590 <a class="sr-only sr-only-focusable" href="#${destination}" >Sprung zur den Onlinedienstleistungen</a>
1591 </div>
1592 </#if>
1593</#macro>
1594
1595<#macro collapseList6 collapseId headline htmlContent htmlClass showAs>
1596 <button
1597 data-toggle="collapse"
1598 data-target="#${collapseId}"
1599 class="${htmlClass} <#if showAs == "button"> btn btn-secondary </#if> w-100 text-left text-break">
1600 ${headline}
1601 </button>
1602 <div id="${collapseId}" class="collapse">
1603 ${htmlContent}
1604 </div>
1605</#macro>
1606
1607<#function card3 title content>
1608 <#return "<div class='card'>
1609 <div class='card-header'>
1610 <h2>${title}</h2>
1611 </div>
1612 <div class='card-body'>
1613 ${content}
1614 </div>
1615 </div>" />
1616</#function>
1617
1618<#function getLabelName4 dienstleistung pathName default >
1619<#-- <#if dienstleistung.labels?? && dienstleistung.labels?has_content>
1620 ${dienstleistung.labels?size}
1621 <#if dienstleistung.labels.getOrDefault(pathName, default)?? && dienstleistung.labels.getOrDefault(pathName, default)?has_content>
1622 <#return dienstleistung.labels.getOrDefault(pathName, default) />
1623 </#if>
1624 <#else>-->
1625 <#return default>
1626<#-- </#if>-->
1627</#function>
1628
1629<#function renderTextmodul12 modul labelPath defaultLabelName>
1630 <#assign
1631 value =""
1632 label = "${getLabelName4(dienstleistung, labelPath,defaultLabelName)}"
1633 elementId = labelPath?replace('.','')
1634 />
1635 <#if existsAndHasContent1(modul.inhalt!'')>
1636 <#if showCollapse>
1637 <#assign value = value + "${collapseBefore20(label,collapseIcon,elementId)}"/>
1638 </#if>
1639 <#assign value = value + "${content_item3(label,modul.inhalt ,showLines)}"/>
1640 <#if showCollapse>
1641 <#assign value = value + "${collapseAfter()}"/>
1642 </#if>
1643 </#if>
1644 <#return value/>
1645</#function>
1646
1647<#function content_item3 title content line>
1648 <#assign value = "<div>" />
1649 <#if line == true>
1650 <#assign value = value + "<hr>"/>
1651 </#if>
1652 <#if line == true>
1653 <#assign value = value + "<h2>${title}</h2>"/>
1654 </#if>
1655 <#assign value = value + "${content}</div>"/>
1656 <#return value />
1657</#function>
1658
1659<#function linklooper7 linkList>
1660 <#local
1661 value = ""
1662 class = ""
1663 target = ""
1664 />
1665 <#if linkList??>
1666 <#list linkList.weiterfuehrenderLink as link>
1667 <#if linksAsButton>
1668 <#local class = "btn btn-secondary w-100 text-left mt-2" />
1669 </#if>
1670 <#local
1671 targetValue = link.neuesFenster?string('_blank','_self')
1672 value = value + "<li><a href='${link.uri}' title='${link.titel}' class='${class}' target='${targetValue}' >${IconBeforeOnlineServices}${link.titel}</a></li>"/>
1673 </#list>
1674 </#if>
1675 <#return value>
1676</#function>
1677
1678<#function linklooperUL1 linkList>
1679 <#assign
1680 value = ""
1681 class = ""
1682 target = ""
1683 />
1684 <#if linkList??>
1685 <#list linkList.weiterfuehrenderLink as link>
1686 <#if linksAsButton>
1687 <#assign class = "btn btn-secondary w-100 text-left" />
1688 </#if>
1689 <#assign
1690 targetValue = link.neuesFenster?string('_blank','_self')
1691 value = value + "<li><a href='${link.uri}' title='${link.titel}' class='${class}' target='${targetValue}'>${link.titel}</a></li>"/>
1692 </#list>
1693 </#if>
1694 <#return value>
1695</#function>
1696
1697<#macro onlineServices147 linkToIconsid destination dienstleistung linkCss linkClass beforeLinkTitle iconArray infoTextArray internetAdressen, utils, showDLIcons, showDLLockIcon, showDLMoneyIcon>
1698 <#local
1699 iconBefore = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-left-online-services-icon"))
1700 beforeLinkTitle = iconBefore
1701 showLoginModal = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-login-modal"))
1702 showLoginModalHigherAuthLvl = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-login-higher-authlvl-required-modal-easy-show"))
1703 showLoginModalRequired = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-login-required-modal-easy-show"))
1704 showLoginModalOptional = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-login-optional-modal-easy-show"))
1705 formularWithLogin = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-formular-with-login"))
1706 loginForAllExtensions = getterUtil.getBoolean(themeDisplay.getThemeSetting("login-for-all-extensions"))
1707 eIDLoginURLLevel3 = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-show-eid-login-url-level3"))
1708 eIDLoginURLLevel4 = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-show-eid-login-url-level4"))
1709 />
1710
1711 <#if existsAndSizeGTZero(dienstleistung.extensions)
1712 || existsAndSizeGTZero(dienstleistung.formulare)
1713 || (dienstleistung.kontaktformularUrl?? && dienstleistung.kontaktformularUrl?has_content)
1714 || existsAndSizeGTZero(dienstleistung.internetadressen)
1715 || existsAndSizeGTZero(dienstleistung.textmodul.formulare.weiterfuehrenderLink)>
1716 <#if showDLIcons && (showDLLockIcon || showDLMoneyIcon)>
1717 <a class="sr-only sr-only-focusable" href="#${destination}" id="${linkToIconsid}">Sprung zur Icon Legende.</a>
1718 </#if>
1719 <ul style="list-style: none !important; padding-left: 0 !important;">
1720 <#local
1721 css = linkCss
1722 dlElementClass = linkClass
1723 />
1724 <#if existsAndSizeGTZero(dienstleistung.extensions)>
1725 <!-- extension -->
1726 <#local
1727 userAuthLevel = utils.getAuthLevel(renderRequest)
1728 idCounter = 1
1729 />
1730 <#list dienstleistung.extensions as formular>
1731
1732 <#local
1733 title = formular.titel
1734 minAuthLevel = formular.minAuthLevel
1735 />
1736 <#if loginForAllExtensions>
1737 <#if minAuthLevel == 0 >
1738 <#assign minAuthLevel = 1 />
1739 </#if>
1740 </#if>
1741 <#local userAuthLevel_GTE_minAuthLevl = userAuthLevel gte minAuthLevel/>
1742 <#if userAuthLevel_GTE_minAuthLevl>
1743 <li class="mb-2">
1744 <p class="mb-0">
1745 <#local
1746 description = "${formular.titel}."
1747 icon = ''
1748 />
1749 <#if formular.paymentSupported>
1750 <#assign showDLMoneyIcon = true />
1751 <#local
1752 description =description + infoTextArray[1]
1753 icon = icon + iconArray[1]
1754 />
1755 </#if>
1756 <#local
1757 target = 'self'
1758 href = formular.uri
1759 aditionalAttributs = ''
1760 />
1761 <@serviceButton css, dlElementClass, iconBefore, icon, title, description, href, target, aditionalAttributs, modalArray(showLoginModal && showLoginModalOptional && !utils.angemeldet ,modalClassArray()[0], formular.uri)/>
1762 </p>
1763 </li>
1764 <#else>
1765 <#if minAuthLevel == 1>
1766 <#assign showDLLockIcon = true />
1767 <li class="mb-2">
1768 <p class="mb-0">
1769 <#assign description = "${formular.titel}. "+infoTextArray[0] + ' ' />
1770 <#assign icon = iconArray[0] />
1771 <#if formular.paymentSupported>
1772 <#assign showDLMoneyIcon = true />
1773 <#local
1774 description = description + infoTextArray[2]
1775 icon =icon+iconArray[1]
1776 />
1777 </#if>
1778 <#assign target = 'self' />
1779 <#assign href = '' />
1780 <#assign aditionalAttributs = "${createLoginURL(themeDisplay.getPortalURL()+themeDisplay.getURLCurrent())}"/>
1781 <@serviceButton css, dlElementClass, iconBefore, icon, title, description, href, target, aditionalAttributs, modalArray(showLoginModal && showLoginModalRequired ,modalClassArray()[1], formular.uri)/>
1782 </p>
1783 </li>
1784 <#elseif minAuthLevel == 2>
1785 <#assign showDLLockIcon = true />
1786 <li class="mb-2">
1787 <p class="mb-0">
1788 <#local
1789 description = "${formular.titel}. "+infoTextArray[0] + ' '
1790 icon =iconArray[0]
1791 />
1792 <#if formular.paymentSupported >
1793 <#assign showDLMoneyIcon = true />
1794 <#local
1795 description = description + infoTextArray[2]
1796 icon =icon + iconArray[1]
1797 />
1798 </#if>
1799 <#local
1800 target = 'self'
1801 href = ''
1802 aditionalAttributs = "${createLoginURL(themeDisplay.getPortalURL()+themeDisplay.getURLCurrent())}"
1803 />
1804 <@serviceButton css, dlElementClass, iconBefore, icon, title, description, href, target, aditionalAttributs, modalArray(showLoginModal && showLoginModalRequired ,modalClassArray()[1], formular.uri)/>
1805 </p>
1806 </li>
1807 <#elseif minAuthLevel == 3>
1808 <#assign showDLPersoLogo = true />
1809 <li class="mb-2">
1810 <p class="mb-0">
1811 <#local
1812 description = "${formular.titel}. "+infoTextArray[3] +' '
1813 persoIconId = 'PersoIcon'+idCounter
1814 icon = "${createPersoIcon13(persoIconId)}"
1815 />
1816 <#if formular.paymentSupported>
1817 <#assign showDLMoneyIcon = true />
1818 <#local
1819 description = description + infoTextArray[2]
1820 icon =icon+iconArray[1]
1821 />
1822 </#if>
1823 <#local
1824 target = 'self'
1825 serviceName = dienstleistung.name
1826 nameForDescrptionSite = serviceName?replace('\\&','')?replace(' ',' ')?replace('\\?','')?replace('\\#','')?replace('\\*','')?replace('\\+','')?replace('\\','')?replace('\\/','')
1827 />
1828 <#if utils.angemeldet>
1829 <#local
1830 href = "/${eIDLoginURLLevel4}?dlname=${nameForDescrptionSite}&dlurl=${themeDisplay.getURLCurrent()}"
1831 aditionalAttributs = ''
1832 modalURL = "/${eIDLoginURLLevel4}?dlname=${nameForDescrptionSite}&dlurl=${themeDisplay.getURLCurrent()}"
1833 />
1834 <#else>
1835 <#local
1836 href = ''
1837 aditionalAttributs = "${createLoginURL(themeDisplay.getPortalURL()+themeDisplay.getURLCurrent())}"
1838 modalURL = themeDisplay.getPortalURL()+themeDisplay.getURLCurrent()
1839 />
1840 </#if>
1841 <@serviceButton css, dlElementClass, iconBefore, icon, title, description, href, target, aditionalAttributs, modalArray(showLoginModal && showLoginModalHigherAuthLvl ,modalClassArray()[2], modalURL)/>
1842 </p>
1843 </li>
1844 </#if>
1845 </#if>
1846 <#assign idCounter = idCounter + 1 />
1847 </#list>
1848 </#if>
1849 <#if !utils.angemeldet && !dienstleistung.nutzbarAlsGast>
1850 <#if existsAndSizeGTZero(dienstleistung.formulare)>
1851 <!-- formulare -->
1852 <#assign showDLLockIcon = true/>
1853 <#list dienstleistung.formulare as formular>
1854 <li class="mb-2">
1855 <p class="mb-0">
1856 <@addFormularButton formular true css dlElementClass iconBefore iconArray, infoTextArray, modalArray(showLoginModal && showLoginModalRequired ,modalClassArray()[1],'')/>
1857 </p>
1858 </li>
1859 </#list>
1860 </#if>
1861 <#if dienstleistung.kontaktformularUrl?? && dienstleistung.kontaktformularUrl?has_content>
1862 <!-- kontaktformular -->
1863 <#assign showDLLockIcon = true />
1864 <li class="mb-2">
1865 <p class="mb-0">
1866 <@addContactFormularButton true css dlElementClass iconBefore iconArray, infoTextArray, dienstleistung, modalArray(showLoginModal && showLoginModalRequired ,modalClassArray()[1],'')/>
1867 </p>
1868 </li>
1869 </#if>
1870 <#if formularWithLogin>
1871 <#if existsAndSizeGTZero(dienstleistung.textmodul.formulare.weiterfuehrenderLink)>
1872 <!-- Linkformulare und Links-->
1873 <#assign showDLLockIcon = true />
1874 <#list dienstleistung.textmodul.formulare.weiterfuehrenderLink as formular>
1875 <li class="mb-2">
1876 <p class="mb-0">
1877 <@addWeiterfuehrenderLinkButton formular, true css dlElementClass iconBefore iconArray, infoTextArray, modalArray(showLoginModal && showLoginModalRequired ,modalClassArray()[1],'')/>
1878 </p>
1879 </li>
1880 </#list>
1881 </#if>
1882 <#if internetAdressen == true && existsAndSizeGTZero(dienstleistung.internetadressen)>
1883 <!-- internetAdressen -->
1884 <#assign showDLLockIcon = true />
1885 <#list dienstleistung.internetadressen as link>
1886 <li class="mb-2">
1887 <p class="mb-0">
1888 <@addWeiterfuehrenderLinkButton link,true,css,dlElementClass,iconBefore,iconArray, infoTextArray, modalArray(showLoginModal && showLoginModalRequired ,modalClassArray()[1],'') />
1889 </p>
1890 </li>
1891 </#list>
1892 </#if>
1893 <!-- Linkformulare und Links ende-->
1894 </#if>
1895 <#else>
1896 <#if existsAndSizeGTZero(dienstleistung.formulare)>
1897 <!-- formulare -->
1898 <#list dienstleistung.formulare as formular>
1899 <li class="mb-2">
1900 <p class="mb-0">
1901 <@addFormularButton formular false css dlElementClass iconBefore iconArray, infoTextArray, modalArray(showLoginModal && showLoginModalOptional ,modalClassArray()[0],'')/>
1902 </p>
1903 </li>
1904 </#list>
1905 </#if>
1906 <#if dienstleistung.kontaktformularUrl?? && dienstleistung.kontaktformularUrl?has_content>
1907 <!-- kontaktformular -->
1908 <li class="mb-2">
1909 <p class="mb-0">
1910 <@addContactFormularButton false css dlElementClass iconBefore iconArray, infoTextArray, dienstleistung, modalArray(showLoginModal && showLoginModalOptional ,modalClassArray()[0],'')/>
1911 </p>
1912 </li>
1913 </#if>
1914 </#if>
1915 <#if formularWithLogin == false || utils.angemeldet || dienstleistung.nutzbarAlsGast>
1916 <#if existsAndSizeGTZero(dienstleistung.textmodul.formulare.weiterfuehrenderLink)>
1917 <!-- textmodul.formulare -->
1918 <#list dienstleistung.textmodul.formulare.weiterfuehrenderLink as formular >
1919 <li class="mb-2">
1920 <p class="mb-0">
1921 <@addWeiterfuehrenderLinkButton formular,false,css,dlElementClass,iconBefore,iconArray, infoTextArray />
1922 </p>
1923 </li>
1924 </#list>
1925 </#if>
1926 <#if internetAdressen == true && existsAndSizeGTZero(dienstleistung.internetadressen)>
1927 <!-- internetAdressen -->
1928 <#list dienstleistung.internetadressen as link>
1929 <li class="mb-2">
1930 <p class="mb-0">
1931 <@addWeiterfuehrenderLinkButton link,false,css,dlElementClass,iconBefore,iconArray, infoTextArray />
1932 </p>
1933 </li>
1934 </#list>
1935 </#if>
1936 </#if>
1937 </ul>
1938 </#if>
1939
1940</#macro>
1941
1942<#macro employeesBox baseVariable, labelName, labelNameAlt, showEmployeesCollapse, showEmployeesCollapseAs, employeesCollapseProfilLinkText,employeesCollapseIcon, mitarbeiterShow, renderResponse, utils>
1943 <#assign
1944 headline = getLabelName4(baseVariable, labelName,labelNameAlt)
1945 wrapperID = "zustaendigeKontaktpersonen"
1946 />
1947 <#if existsAndHasContent1(baseVariable.mitarbeiterList!'') && !showEmployeesCollapse>
1948 <div class="card" id="${wrapperID}">
1949 <div class="card-header">
1950 <h2>${headline}</h2>
1951 </div>
1952 <div class="card-body">
1953 <ul class="el--contact">
1954 <#assign loop = 1/>
1955 <#list baseVariable.mitarbeiterList as mitarbeiter>
1956 <#if mitarbeiter??>
1957 <li>
1958 <#if loop != 1>
1959 <hr class="mb-2">
1960 </#if>
1961 <p class="el--contact__content">
1962 <a href="${utils.createRenderUrl(renderResponse,mitarbeiterShow, mitarbeiter.id)}">${mitarbeiter.volleAnsprache()}</a>
1963 <#if existsAndHasContent1(mitarbeiter.position!'')>
1964 <br/><i class="el--contact__content__position"><@sr_only>Position:</@sr_only>${mitarbeiter.position}</i>
1965 </#if>
1966 </p>
1967 <dl class="el--contact__list">
1968 <#if existsAndHasContent1(mitarbeiter.telefonnummer!'')>
1969 <dt>Telefon:</dt>
1970 <dd><a href="${createPhoneHref3(mitarbeiter)}">${mitarbeiter.telefonnummer}</a></dd>
1971 </#if>
1972 <#if existsAndHasContent1(mitarbeiter.mobil!'')>
1973 <dt>Mobil:</dt>
1974 <dd><a href="${createMobilHref3(mitarbeiter)}">${mitarbeiter.mobil}</a></dd>
1975 </#if>
1976 <#if existsAndHasContent1(mitarbeiter.email!'')>
1977 <dt>E-Mail:</dt>
1978 <dd><a href="${createMailHref5(mitarbeiter)}">${mitarbeiter.email}</a></dd>
1979 </#if>
1980 </dl>
1981 </li>
1982 <#assign loop = loop + 1 />
1983 </#if>
1984 </#list>
1985 </ul>
1986 </div>
1987 </div>
1988 </#if>
1989 <#if existsAndHasContent1(baseVariable.mitarbeiterList!'') && showEmployeesCollapse>
1990 <div class="card" id="${wrapperID}">
1991 <div class="card-header">
1992 <h2>${headline}</h2>
1993 </div>
1994 <div class="card-body">
1995 <ul class="el--contact">
1996 <#assign loop = 1/>
1997 <#list baseVariable.mitarbeiterList as mitarbeiter>
1998 <li class="mb-2">
1999 <#assign collapseContent = createEmployeeCollapseListEntry(mitarbeiter, employeesCollapseProfilLinkText, renderResponse, mitarbeiterShow, utils)/>
2000 <@collapseList6 "mit${mitarbeiter.id}", "${employeesCollapseIcon}${mitarbeiter.volleAnsprache()}",collapseContent,"employeeCollapse",showEmployeesCollapseAs />
2001 <#assign loop = loop + 1 />
2002 </li>
2003 </#list>
2004 </ul>
2005 </div>
2006 </div>
2007 </#if>
2008</#macro>
2009
2010<#function createEmployeeCollapseListEntry mitarbeiter, employeesCollapseProfilLinkText, renderResponse, mitarbeiterShow, utils>
2011 <#assign collapseContent = "<ul class='mt-2'>
2012 <li >
2013 <p>
2014 <a href='${utils.createRenderUrl(renderResponse,mitarbeiterShow, mitarbeiter.id)}'>${employeesCollapseProfilLinkText}</a>
2015 </p>
2016 </li>"
2017 />
2018 <#if existsAndHasContent1(mitarbeiter.position!'')>
2019 <#assign collapseContent = collapseContent +"<li>
2020 <p>
2021 <span style='font-weight:600;'>Position:</span> <i class='el--contact__content__position'>${mitarbeiter.position}</i>
2022 </p>
2023 </li>"/>
2024 </#if>
2025 <#if existsAndHasContent1(mitarbeiter.telefonnummer!'')>
2026 <#assign collapseContent = collapseContent +"<li>
2027 <p>
2028 <span style='font-weight:600;'>Telefon:</span> <a href='${createPhoneHref3(mitarbeiter)}'>${mitarbeiter.telefonnummer}</a>
2029 </p>
2030 </li>"/>
2031 </#if>
2032 <#if existsAndHasContent1(mitarbeiter.mobil!'')>
2033 <#assign collapseContent = collapseContent +"<li>
2034 <p>
2035 <span style='font-weight:600;'>Mobil:</span> <a href='${createMobilHref3(mitarbeiter)}'>${mitarbeiter.mobil}</a>
2036 </p>
2037 </li>"/>
2038 </#if>
2039 <#if existsAndHasContent1(mitarbeiter.email!'')>
2040 <#assign collapseContent = collapseContent +"<li>
2041 <p>
2042 <span style='font-weight:600;'>E-Mail:</span> <a href='${createMailHref5(mitarbeiter)}'>${mitarbeiter.email}</a>
2043 </p>
2044 </li>"/>
2045 </#if>
2046 <#assign collapseContent = collapseContent +"</ul>"/>
2047 <#return collapseContent>
2048</#function>
2049
2050<#function existsAndSizeGTZero element>
2051 <#if element?? && element?size gt 0>
2052 <#return true />
2053 <#else>
2054 <#return false />
2055 </#if>
2056</#function>
2057
2058<#function existsAndHasContent1 element>
2059 <#if element?? && element?has_content>
2060 <#return true />
2061 <#else>
2062 <#return false />
2063 </#if>
2064</#function>
2065
2066<#macro addMap baseVariable, showMap, mapTitle>
2067 <#if existsAndHasContent1(baseVariable.anschrift!'') && showMap>
2068 <#assign lat = 0/>
2069 <#assign lng = 0/>
2070 <#assign mapTitle = 'Karte'/>
2071
2072 <#if existsAndHasContent1(baseVariable.anschrift.geokodierung!'')>
2073 <#if baseVariable.anschrift.geokodierung.latitude?has_content>
2074 <#assign lat = baseVariable.anschrift.geokodierung.latitude?number/>
2075 </#if>
2076 <#if baseVariable.anschrift.geokodierung.longitude?has_content>
2077 <#assign lng = baseVariable.anschrift.geokodierung.longitude?number/>
2078 </#if>
2079 </#if>
2080 <@openstreetmap52 mapTitle lat lng />
2081 </#if>
2082</#macro>
2083
2084<#macro createLoginModalButton css, linkClass, bevoreLinkTitle, icon, title, description, href, modal_class>
2085 <a class="${linkClass} ${modal_class}" style='${css}' data-href="${href}" title="${description}" role="button">
2086 ${bevoreLinkTitle}
2087 <span class="buttonServiceIconsWrapper">
2088 ${icon}
2089 </span>
2090 <span>${title?trim}</span>
2091 </a>
2092</#macro>
2093
2094
2095
2096<#function getModalClass userAuthLevel>
2097 <#assign modal_class = '' />
2098 <#switch userAuthLevel>
2099 <#case 0>
2100 <#assign modal_class = 'modal-login-optional' />
2101 <#break>
2102 <#case 1>
2103 <#assign modal_class = 'modal-login-required' />
2104 <#break>
2105 <#case 2>
2106 <#assign modal_class = 'modal-login-required' />
2107 <#break>
2108 <#case 3>
2109 <#assign modal_class = 'login-higher-authlvl-required' />
2110 <#break>
2111 </#switch>
2112 <#return modal_class/>
2113</#function>
2114
2115
2116<#macro addFormularButton formular,needsLogin,css,class,iconBefore,iconArray, infoTextArray, modalArray=[]>
2117 <#assign
2118 title = formular.titel
2119 icon = ''
2120 description = "${title}."
2121 href = ''
2122 aditionalAttributs =''
2123 />
2124 <#if modalArray?size gt 0>
2125 <#local modalArray = [modalArray[0],modalArray[1],formular.uri] />
2126 </#if>
2127 <#if formular.neuesFenster?? && formular.neuesFenster>
2128 <#assign target = "blank"/>
2129 <#else>
2130 <#assign target = 'self'/>
2131 </#if>
2132
2133 <#if needsLogin>
2134 <#assign
2135 icon = iconArray[0]
2136 description = description + " ${infoTextArray[0]}"
2137 aditionalAttributs = "${createLoginURL(formular.uri)}"
2138 />
2139 <#else>
2140 <#assign href = formular.uri/>
2141 </#if>
2142 <@serviceButton css, class, iconBefore, icon, title, description, href, target, aditionalAttributs, modalArray/>
2143</#macro>
2144
2145<#macro addContactFormularButton needsLogin,css,class,iconBefore, iconArray, infoTextArray, dienstleistung, modalArray=[]>
2146 <#local
2147 title = 'Zum Kontaktformular'
2148 icon = ''
2149 description = "${title}."
2150 href = ''
2151 aditionalAttributs =''
2152 target = "blank"
2153 />
2154 <#if modalArray?size gt 0>
2155 <#local modalArray = [modalArray[0],modalArray[1],dienstleistung.kontaktformularUrl] />
2156 </#if>
2157 <#if needsLogin>
2158 <#local
2159 icon = iconArray[0]
2160 description = description + " ${infoTextArray[0]}"
2161 aditionalAttributs = "${createLoginURL(dienstleistung.kontaktformularUrl)}"
2162 />
2163 <#else>
2164 <#local href = dienstleistung.kontaktformularUrl/>
2165 </#if>
2166 <@serviceButton css, class, iconBefore, icon, title, description, href, target, aditionalAttributs, modalArray/>
2167</#macro>
2168
2169<#macro addWeiterfuehrenderLinkButton formular,needsLogin,css,class,iconBefore,iconArray, infoTextArray, modalArray=[]>
2170 <#if formular?? && formular.titel?? && formular.titel != "">
2171 <#local title = formular.titel />
2172 <#else>
2173 <#local title = formular.uri />
2174 </#if>
2175 <#local
2176 icon = ''
2177 description = "${title}. "
2178 href = ''
2179 aditionalAttributs =''
2180 />
2181 <#if modalArray?size gt 0>
2182 <#local modalArray = [modalArray[0],modalArray[1],formular.uri] />
2183 </#if>
2184 <#if formular.neuesFenster >
2185 <#local target = 'blank'/>
2186 <#else>
2187 <#local target = 'self'/>
2188 </#if>
2189
2190 <#if needsLogin>
2191 <#local
2192 icon = iconArray[0]
2193 description = description + " ${infoTextArray[0]}"
2194 aditionalAttributs = "${createLoginURL(formular.uri)}"
2195 />
2196 <#else>
2197 <#local href = formular.uri/>
2198 </#if>
2199 <@serviceButton css, class, iconBefore, icon, title, description, href, target, aditionalAttributs, modalArray/>
2200</#macro>
2201
2202<#function modalArray showModal, modalType, formularURL>
2203 <#return [showModal,modalType, formularURL]/>
2204</#function>
2205
2206<#function iconArray lock,payment>
2207 <#return [lock,payment]/>
2208</#function>
2209
2210<#function infoTextArray login, hasPayment, andHasPayment, eid>
2211 <#return [ login, hasPayment, andHasPayment, eid]/>
2212</#function>
2213
2214<#function iconLegendTextArray loginInfo, paymentInfo, eidInfo>
2215 <#return [loginInfo,paymentInfo, eidInfo]/>
2216</#function>
2217
2218
2219
2220<#function modalClassArray >
2221 <#assign
2222 optional = 'modal-login-optional'
2223 required = 'modal-login-required'
2224 higher_authlvl = 'modal-login-higher-authlvl-required'
2225 />
2226 <#return [optional,required,higher_authlvl]/>
2227</#function>
2228
2229
2230<#macro serviceButton css, elementClass, iconBefore, icon, title, description, href, target, aditionalAttributs='', modalArray=[]>
2231 <!-- serviceButton -->
2232 <#if modalArray?size gt 0 && modalArray[0]>
2233 <@createLoginModalButton css, elementClass, iconBefore, icon, title, description, modalArray[2], modalArray[1]/>
2234 <#else>
2235 ${createDLnewLink8(css elementClass iconBefore icon title target description href aditionalAttributs)}
2236 </#if>
2237</#macro>
2238
2239<#function getServiceIconStyling>
2240 <#local
2241 iconStyling = "width:100% !important;height:100% !important; position: absolute; top: 2px;"
2242 iconClass = "dlInfoIcons"
2243 iconWrapperClass = "dlInfoIconsWrapper"
2244 />
2245 <#return [iconStyling, iconClass, iconWrapperClass] />
2246</#function>
2247
2248<#macro addTopline>
2249 <#assign
2250 showSearch = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-search"))
2251 />
2252 <#if showSearch>
2253 <@addSearch/>
2254 </#if>
2255</#macro>
2256<#macro addFeedback>
2257 <#assign
2258 feedbackPosition = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-position"))
2259 showFeedback = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback"))
2260 feedbackDescriptions = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-descriptions"))
2261 feedbackHeadline = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-headline"))
2262 feedbackName = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-name"))
2263 feedbackTitle = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-title"))
2264 feedbackClasses = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-classes"))
2265 feedbackUrl = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-url"))
2266 feedbackAddCurrentURLParam = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-feedback-add-current-url-param"))
2267 feedbackAddSearchValueParam = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-feedback-add-search-value-param"))
2268 />
2269 <#if showFeedback && feedbackPosition="right">
2270 <div class="card" id="feedback">
2271 <div class="card-header">
2272 <h2>${feedbackHeadline}</h2>
2273 </div>
2274 <div class="card-body">
2275 <#if feedbackDescriptions != "">
2276 <p>${feedbackDescriptions}</p>
2277 </#if>
2278 <@addFeedbackButton feedbackName feedbackTitle feedbackUrl feedbackClasses feedbackAddCurrentURLParam feedbackAddSearchValueParam/>
2279 </div>
2280 </div>
2281 </#if>
2282</#macro>
2283
2284<#macro addFeedbackButton feedbackName feedbackTitle feedbackUrl feedbackClasses="" addCurrentURLParam=false addSearchValueParam=false>
2285 <#assign params = ""/>
2286 <#if addCurrentURLParam>
2287 <#assign params = "?currentUrl=${themeDisplay.getURLPortal()}${themeDisplay.getURLCurrent()}"/>
2288 </#if>
2289 <#if addSearchValueParam>
2290 <#if params == "">
2291 <#assign params = params+"?" />
2292 <#else>
2293 <#assign params = params+"&" />
2294 </#if>
2295 <#assign params = params+"searchValue=" />
2296
2297 </#if>
2298 <a id="feedbackButton"
2299 class="${feedbackClasses}"
2300 target="_blank"
2301 title="${feedbackTitle}"
2302 href="${feedbackUrl}${params}">
2303 ${feedbackName}
2304 </a>
2305</#macro>
2306<#macro addFeedbackButtonJavascript>
2307 <#assign
2308 showFeedback = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback"))
2309 feedbackAddCurrentURLParam = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-feedback-add-current-url-param"))
2310 feedbackAddSearchValueParam = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-feedback-add-search-value-param"))
2311 feedbackUrl = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-url"))
2312 />
2313 <#if showFeedback>
2314 <script>
2315 let feedback_url = "${feedbackUrl}";
2316 let current_url = "currentUrl=${themeDisplay.getURLPortal()}${themeDisplay.getURLCurrent()}";
2317 let feedbackAddCurrentURLParam = ${feedbackAddCurrentURLParam?string('true','false')};
2318 let feedbackAddSearchValueParam = ${feedbackAddSearchValueParam?string('true','false')};
2319 $("#searchInput").on('input',function(){
2320 let params = "";
2321 if (feedbackAddCurrentURLParam){
2322 if (params === ""){
2323 params = params+"?";
2324 }else{
2325 params = params+"&";
2326 }
2327 params = params + current_url.replaceAll('&','%26').replaceAll('?','%3F');
2328 }
2329 if (feedbackAddSearchValueParam){
2330 if (params === ""){
2331 params = params+"?";
2332 }else{
2333 params = params+"&";
2334 }
2335 params = params+"searchValue="+this.value
2336 }
2337 $('#feedbackButton').attr('href',feedback_url+params);
2338 })
2339
2340 </script>
2341 </#if>
2342</#macro>
2343
2344
2345<#macro addSearch>
2346 <#local
2347 service_uri = getterUtil.getString(themeDisplay.getThemeSetting("service-a-z"))
2348 facility_uri = getterUtil.getString(themeDisplay.getThemeSetting("facility-a-z"))
2349 search_area_title = getterUtil.getString(themeDisplay.getThemeSetting("19-search-area-title"))
2350 search_area_input_placeholder = getterUtil.getString(themeDisplay.getThemeSetting("19-search-area-input-placeholder"))
2351
2352 header_type = getterUtil.getString(themeDisplay.getThemeSetting("header-type"))
2353 hasLongHeader = header_type == 'long'
2354 hasExtendedHeader = header_type == 'extended'
2355
2356 additional_button_title = getterUtil.getString(themeDisplay.getThemeSetting("28-header-extended-header-search-additional-button-title"))
2357 additional_button_href = getterUtil.getString(themeDisplay.getThemeSetting("28-header-extended-header-search-additional-button-href"))
2358 showLabel = getterUtil.getBoolean(themeDisplay.getThemeSetting("19-search-area-show-title"))
2359
2360 feedbackPosition = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-position"))
2361
2362 showFeedbackInServices = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback-in-services"))
2363 showFeedbackInFacility = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback-in-facility"))
2364 showFeedbackInEmployee = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback-in-employee"))
2365 showFeedback = false
2366 showLeftInCard = showLeftInCardFunction()
2367 />
2368
2369 <#if search_area_input_placeholder == ''>
2370 <#local search_area_input_placeholder = "Was suchen Sie?" />
2371 </#if>
2372
2373 <#if feedbackPosition=="top">
2374 <#if bis2017.ausgewaehlteEinrichtung?? && showFeedbackInFacility>
2375 <#local showFeedback = true/>
2376 </#if>
2377 <#if bis2017.ausgewaehlterMitarbeiter?? && showFeedbackInFacility>
2378 <#local showFeedback = true/>
2379 </#if>
2380 <#if bis2017.ausgewaehlteDienstleistung?? && showFeedbackInServices>
2381 <#local showFeedback = true/>
2382 </#if>
2383 </#if>
2384
2385
2386 <div id="listBoxSearch" class="detail-search">
2387 <div class="row">
2388 <div class="vr-details-left search-area searchbar searchLeft <#if hasExtendedHeader>col-12 col-lg-9 <#elseif showFeedback && !hasExtendedHeader>col-12 col-sm-12 col-md-8 px-4 pl-lg-3<#else> col-12 col-lg-12 col-xl-12 </#if>" id="suchseite">
2389 <#if showLeftInCard>
2390 <div class="card mb-0">
2391 </#if>
2392 <div class="searchbar-inner js-suggestion-anchor">
2393 <div class="combobox-wrapper" id="searchBox">
2394 <#if search_area_title != ''>
2395 <h1 id="searchInputHeader" class="mb-1" <#if showLabel == false> class="sr-only" </#if>><label id="searchBoxLabel" for="searchInput" class="">${search_area_title}</label></h1>
2396 <#else>
2397 <h1 id="searchInputHeader" class="sr-only"><label id="searchBoxLabel" for="searchInput" class="">Suche</label></h1>
2398 </#if>
2399 <form id="searchform" method="post">
2400 <div
2401 role="combobox"
2402 aria-expanded="false"
2403 aria-owns="searchResultList"
2404 aria-haspopup="listbox"
2405 id="searchCombobox"
2406 >
2407 <input
2408 name="query"
2409 type="text"
2410 aria-controls="searchResultList"
2411 id="searchInput"
2412 placeholder="${search_area_input_placeholder}"
2413 aria-autocomplete="list"
2414 autocomplete="off"
2415 class="w-100"
2416 aria-busy="false"
2417 >
2418 </div>
2419 </form>
2420 <div id="searchInProgress" class="" style="display: none">
2421 <div class="lds-spinner" style=""><div></div><div></div><div></div></div>
2422 </div>
2423 <div id="searchResultContent">
2424 <div
2425 class="row mx-0"
2426 role="listbox"
2427 id="searchResultList"
2428 aria-label="Suchergebnisse"
2429 aria-hidden="true"
2430 tabindex="-1"
2431 >
2432 <#if vr??>
2433 <#assign
2434 bis2017 = vr.bis2017
2435 utils = vr.utils2017
2436 suchergebnisDienstleistung = bis2017.suchergebnisDienstleistung
2437 suchergebnisEinrichtung = bis2017.suchergebnisEinrichtung
2438 suchergebnisMitarbeiter = bis2017.suchergebnisMitarbeiter
2439 />
2440 <#if !suchergebnisDienstleistung?? && !suchergebnisEinrichtung?? && !suchergebnisMitarbeiter?? && (!dienstleistung) && (!mitarbeiter) && (!einrichtung)>
2441 <ul role="group" class="resultList" aria-labelledby="non" id="nothing">
2442 <li tabindex="0" role="option" class="resultOption" >
2443 <span id="non">Es gab keine Treffer.</span>
2444 </li>
2445 </ul>
2446 <#else>
2447 <@searchResult13 type='dl' suchergebnisse=suchergebnisDienstleistung/>
2448 <@searchResult13 type='mb' suchergebnisse=suchergebnisMitarbeiter />
2449 <@searchResult13 type='er' suchergebnisse=suchergebnisEinrichtung />
2450 </#if>
2451 </#if>
2452 </div>
2453 </div>
2454 </div>
2455 </div>
2456 <#if showLeftInCard>
2457 </div>
2458 </#if>
2459 </div>
2460 <#if hasExtendedHeader>
2461 <div class="searchRight col-12 col-lg-3">
2462 <a id="extendedHeaderSearchButton" href="${additional_button_href}">
2463 <span>
2464 ${additional_button_title}
2465 </span>
2466 </a>
2467 </div>
2468 <#elseif showFeedback && !hasExtendedHeader>
2469 <#local
2470 feedbackHeadline = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-headline"))
2471 />
2472 <div class="vr-details-right searchRight feedback-right col-12 col-sm-12 col-md-4 px-4 pr-lg-3 <#if showLeftInCard> with-card </#if>">
2473 <#if showLeftInCard>
2474 <div class="card" id="feedback-card-top">
2475 <div class="card-header">
2476 <h2>
2477 ${feedbackHeadline}
2478 </h2>
2479 </div>
2480 <div class="card-body">
2481 </#if>
2482 <#local
2483 feedbackPosition = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-position"))
2484 showFeedback = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-show-feedback"))
2485 feedbackName = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-name"))
2486 feedbackTitle = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-title"))
2487 feedbackClasses = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-classes"))
2488 feedbackUrl = getterUtil.getString(themeDisplay.getThemeSetting("03-vr-details-feedback-url"))
2489 feedbackAddCurrentURLParam = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-feedback-add-current-url-param"))
2490 feedbackAddSearchValueParam = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-feedback-add-search-value-param"))
2491 />
2492 <div class="feedback-right-button-wrapper">
2493 <@addFeedbackButton feedbackName feedbackTitle feedbackUrl feedbackClasses feedbackAddCurrentURLParam feedbackAddSearchValueParam/>
2494 </div>
2495 <#if showLeftInCard>
2496 </div>
2497 </#if>
2498 </div>
2499 </#if>
2500 </div>
2501 </div>
2502
2503 <script>
2504
2505
2506 const portlet = $('#p_p_id_19_WAR_vrportlet_');
2507 const searchSection = $('#p_p_id_19_WAR_vrportlet_');
2508 const search_input = $("#form-element-query");
2509 const combobox2 = $('#searchCombobox');
2510 const searchSection2 = $('#searchBox');
2511 const dropdownList = $("#searchResultList");
2512 const searchInput = $("#searchInput");
2513 const searchButton = $("#searchInputButton");
2514 const resultLinks = '#searchResultList .resultOption';
2515
2516 const arrow_keys_handler = function (e) {
2517 switch (e.keyCode) {
2518 case 37:
2519 case 39:
2520 case 38:
2521 case 40:
2522 case 13:
2523 e.preventDefault();
2524 break;
2525 default:
2526 break;
2527 }
2528 };
2529
2530 $(document).ready(function(){
2531 addListener();
2532 const combobox = searchSection.find('.portlet-body');
2533 const portletBodyOldSearchRow = combobox.find(".row:first")
2534 portletBodyOldSearchRow.attr('aria-hidden', "true");
2535 portletBodyOldSearchRow.hide();
2536 searchInput.val(search_input.val());
2537
2538 searchInput.on("keyup paste", function() {
2539 addFromFakeInputToInput();
2540 });
2541
2542 $(document).on('keypress keyup',function(event){
2543 if(clickHomeInSearchBox(event) || clickEndInSearchBox(event)){
2544 event.preventDefault();
2545 return false;
2546 }
2547 })
2548 //key interaction input & button
2549 searchInput.on('keydown', function (event) {
2550 if (event.key === "Escape") {
2551 searchInput.val("");
2552 closeDropdown();
2553 }
2554 if(clickHomeInSearchBox(event)){
2555 event.preventDefault();
2556 $(resultLinks)[0].focus()
2557 return false;
2558 }
2559 if(clickEndInSearchBox(event)){
2560 event.preventDefault();
2561 $(resultLinks)[$(resultLinks).length -1].focus()
2562 return false;
2563 }
2564 if (event.key === "Enter"){
2565 event.preventDefault();
2566 if (!isDropdownHidden()){
2567 console.log('enter2')
2568 $(resultLinks)[0].focus()
2569 }
2570 return false;
2571 }
2572 });
2573 searchInput.on('keyup', function (event) {
2574 if (event.key === "ArrowDown" || event.key === "ArrowUp" || event.key === "Enter" ) {
2575 event.preventDefault();
2576 if (isDropdownHidden() && searchInput.val().length > 1) {
2577 setAriaBusy(true);
2578 ajax(
2579 $(".search-form input").val(),
2580 function (data) {
2581 dropdownList.empty();
2582 dropdownList.append($(data).find("#nothing"));
2583 dropdownList.append($(data).find("#mainCategoryDL"));
2584 dropdownList.append($(data).find("#mainCategoryMB"));
2585 dropdownList.append($(data).find("#mainCategoryER"));
2586 portlet.find('#searchCombobox').attr('aria-expanded', 'true');
2587 portlet.find('#searchResultList').attr('aria-hidden', 'false');
2588 setAriaBusy(false);
2589 },
2590 function(){
2591 if(event.key === "Enter"){
2592 event.key = "ArrowDown"
2593 }
2594 dropdownListNavigation(event);
2595 }
2596 )
2597 }
2598 }
2599 });
2600
2601 //key interaction list box
2602 dropdownList.on('keydown',function(event) {
2603 if(dropdownList.find($(':focus')).length === 1){
2604 if (event.key === "Tab") {
2605 closeDropdown();
2606 }
2607 if (event.key === "Escape") {
2608 closeDropdown();
2609 searchInput.focus();
2610 }
2611 if(clickHomeInSearchBox(event)){
2612 event.preventDefault();
2613 $(resultLinks)[0].focus()
2614 return false;
2615 }
2616 if(clickEndInSearchBox(event)){
2617 event.preventDefault();
2618 $(resultLinks)[$(resultLinks).length -1].focus()
2619 return false;
2620 }
2621 }
2622 });
2623
2624 $(document).on('keydown',function(event){
2625 let nextFocusItemID = getNextFocusElementId()
2626 if(event.key === "Tab"){
2627 if( searchSection2.find($(':focus')).length === 1 && searchButton[0].id !== nextFocusItemID) {
2628 if(searchInput[0].id !== nextFocusItemID){
2629 //closeDropdown();
2630 }
2631 }
2632 }
2633 if(event.key === "Enter"){
2634 console.log('enter1')
2635 if(dropdownList.find($(':focus')).length === 1) {
2636 event.preventDefault();
2637 if (!isDropdownHidden()) {
2638 if (($(':focus').children()[0] !== undefined)) {
2639 $(':focus').children()[0].click();
2640 }
2641 }
2642 }
2643 }
2644 })
2645 $(document).on('keydown',function(event){
2646 dropdownListNavigation(event);
2647 });
2648 });
2649
2650 function dropdownListNavigation(event) {
2651 if(searchSection2.find($(':focus')).length === 1){
2652 if(!isDropdownHidden() && resultListHasContent()){
2653 window.addEventListener("keydown", arrow_keys_handler, false);
2654 let resultItemCount = $(resultLinks).length;
2655 let currentFocus = $('#searchResultContent').find($(':focus'));
2656 let focusId = $(':focus')[0].id;
2657 let index = getDropdownResultIndex(focusId);
2658 switch(event.key) {
2659 case 'ArrowUp':
2660 dropdownListArrowUp(currentFocus,resultItemCount, index, focusId)
2661 break;
2662 case 'ArrowDown':
2663 dropdownListArrowDown(currentFocus,resultItemCount, index, focusId)
2664 break;
2665 }
2666 }
2667 }else{
2668 window.removeEventListener("keydown", arrow_keys_handler, false);
2669 }
2670 return true;
2671 }
2672 function dropdownListArrowUp(currentFocus, resultItemCount, index, focusId){
2673 if(currentFocus.length === 0 || index === 0) {
2674 let link = '#' + $(resultLinks)[resultItemCount - 1].id;
2675 if ($(link).length > 0) {
2676 $(link).focus();
2677 } else {
2678 $(resultLinks)[resultItemCount - 1].focus();
2679 }
2680 }else{
2681 let link = '#' + $(resultLinks)[index-1].id ;
2682 if ($(link).length > 0) {
2683 $(link).focus();
2684 } else {
2685 $(resultLinks)[index-1].focus();
2686 }
2687 }
2688 searchInput.attr('aria-activedescendant',focusId);
2689 }
2690 function dropdownListArrowDown(currentFocus, resultItemCount, index, focusId){
2691 if(currentFocus.length === 0 || $(resultLinks)[index+1] === undefined){
2692 let link = '#' + $(resultLinks)[0].id;
2693 if ($(link).length > 0) {
2694 $(link).focus();
2695 } else {
2696 $(resultLinks)[0].focus();
2697 }
2698 }else{
2699 let link = '#' + $(resultLinks)[index+1].id;
2700 if ($(link).length > 0) {
2701 $(link).focus();
2702 } else {
2703 $(resultLinks)[index+1].focus();
2704 }
2705 }
2706 searchInput.attr('aria-activedescendant',focusId);
2707 }
2708 let typingTimer;
2709 let doneTypingInterval = 500;
2710 function addListener() {
2711 searchInput.on("keydown", function (event) {
2712 clearTimeout(typingTimer);
2713 });
2714 searchInput.on("keyup", function (event) {
2715 closeDropdown();
2716 clearTimeout(typingTimer);
2717 typingTimer = setTimeout(()=>{
2718 postSearchQuery(event, function(){})
2719 }, doneTypingInterval);
2720 });
2721 }
2722 function getNextFocusElementId(){
2723 let nextFocusItem = $(':focus').next();
2724 let nextFocusItemID = undefined
2725 if(nextFocusItem[0] !== undefined && nextFocusItem[0] !== ""){
2726 nextFocusItemID = nextFocusItem[0].id
2727 }
2728 return nextFocusItemID
2729 }
2730 function clickHomeInSearchBox(event) {
2731 return event.keyCode === 36 && focusInSearchBox() && resultListHasContent();
2732 }
2733 function clickEndInSearchBox(event) {
2734 return event.keyCode === 35 && focusInSearchBox() && resultListHasContent();
2735 }
2736 function focusInSearchBox() {
2737 return searchSection2.find($(':focus')).length === 1;
2738 }
2739 function resultListHasContent() {
2740 return $(resultLinks).length > 0
2741 }
2742 function isDropdownHidden(){
2743 return dropdownList.attr('aria-hidden') === "true";
2744 }
2745 function closeDropdown() {
2746 dropdownList.empty();
2747 dropdownList.attr('aria-hidden', 'true');
2748 combobox2.attr('aria-expanded', 'false');
2749 }
2750 function openDropdown() {
2751 dropdownList.attr('aria-hidden', 'false');
2752 }
2753 function getDropdownResultIndex(id) {
2754 let returningValue = undefined;
2755 $(resultLinks).each(function (index, item) {
2756 if (item.id === id) {
2757 returningValue = index;
2758 return false;
2759 }
2760 });
2761 return returningValue;
2762 }
2763 function addFromFakeInputToInput() {
2764 let value = searchInput.val();
2765 search_input.val(value);
2766 if (value.length < 1) {
2767 searchInput.attr('aria-activedescendant', '');
2768 closeDropdown()
2769 } else {
2770 }
2771 }
2772 function setAriaBusy(boolean){
2773 searchInput.attr('aria-busy', boolean);
2774 portlet.find('#searchInput').attr('aria-busy', boolean);
2775 $('#searchInProgress').css('display',boolean?'block':'none')
2776 }
2777 function ajax(queryString, successFunction,completeFunction) {
2778 jQuery.ajax({
2779 url: url2,
2780 data: {
2781 query:queryString
2782 },
2783 type: 'POST',
2784 success: successFunction
2785
2786 }).done(completeFunction)
2787 }
2788 function postSearchQuery(e, complete) {
2789 if (![37, 39, 9, 13, 27,38,40,35,36,13].includes(e.keyCode)) {
2790 if (searchInput.val().length > 1) {
2791 setAriaBusy(true);
2792 ajax(
2793 $(".search-form input").val(),
2794 function (data) {
2795 dropdownList.empty();
2796 dropdownList.append($(data).find("#nothing"));
2797 dropdownList.append($(data).find("#mainCategoryDL"));
2798 dropdownList.append($(data).find("#mainCategoryMB"));
2799 dropdownList.append($(data).find("#mainCategoryER"));
2800
2801 portlet.find('#searchCombobox').attr('aria-expanded', 'true');
2802 portlet.find('#searchResultList').attr('aria-hidden', 'false');
2803 setAriaBusy(false);
2804 },
2805 complete
2806 )
2807 }
2808 }
2809
2810 }
2811 </script>
2812</#macro>
2813
2814
2815
2816
2817
2818<#macro searchResult13 type suchergebnisse>
2819 <#if type == "ER" || type == "er">
2820 <#assign resultName = "Einrichtungen" />
2821 <#elseif type == "MB" || type == "mb">
2822 <#assign resultName = "Mitarbeitende" />
2823 <#elseif type == "DL" || type == "dl">
2824 <#assign resultName = "Dienstleistungen" />
2825 </#if>
2826
2827 <ul role="group" class="col-12 col-sm-12 col-md-12 col-lg-4 resultList" aria-labelledby="${type}0" id="mainCategory${type?upper_case}">
2828 <li class="" role="presentation" id="${type}0">
2829 <#assign hits = suchergebnisse?size />
2830 <#if suchergebnisse?size < hits >
2831 <span aria-hidden="true">${resultName} (${hits})</span>
2832 <span class="sr-only">${resultName}. Es werden ${suchergebnisse?size} von ${hits} Ergebnissen in der Liste angezeigt. Bitte schränken Sie die Suche weiter ein.</span>
2833 <#else>
2834 <span>${resultName} (${hits})</span>
2835 </#if>
2836 </li>
2837 <#if suchergebnisse?size gt 0 >
2838 <#list suchergebnisse as suchergebnis>
2839 <li tabindex="0" role="option" class="result-cell resultOption" id="${type}${suchergebnis.id}">
2840 <#if type == "ER" || type == "er">
2841 <#assign resultUrl = utils.getEinrichtungUrl(suchergebnis.id) />
2842 <#assign resultTitle = "${getFullFacilityName3(suchergebnis,'facilityName-search')}" />
2843 <#elseif type == "MB" || type == "mb">
2844 <#assign resultUrl = utils.getMitarbeiterUrl(suchergebnis.id) />
2845 <#assign resultTitle = suchergebnis.name />
2846 <#elseif type == "DL" || type == "dl">
2847 <#assign resultUrl = utils.getDienstleistungUrl(suchergebnis.id) />
2848 <#assign resultTitle = suchergebnis.name />
2849 </#if>
2850 <a id="${resultName?lower_case}${suchergebnis.id}" href="${resultUrl}" class="cBlue underline">${resultTitle}</a>
2851 </li>
2852 </#list>
2853 ${restrictSearch5(suchergebnisse?size, hits)}
2854 <#else>
2855 <li tabindex="0" role="option" class="result-cell resultOption" id="${type}1">Es gab keine Treffer in dieser Kategorie.</li>
2856 </#if>
2857 </ul>
2858</#macro>
2859
2860<#function restrictSearch5 size hits >
2861 <#if size < hits>
2862 <#return "<li><p class='small'><strong>Es werden ${size} von $hits Ergebnissen angezeigt.<br>Bitte Suche weiter einschränken.</strong></p></li>" />
2863 </#if>
2864 <#return ''/>
2865</#function>
2866
2867<#function getFullFacilityName3 einrichtung spanClass >
2868 <#assign
2869 counter = 1
2870 einrichtungsname = ''
2871 />
2872 <#list einrichtung.breadcrumb as i>
2873 <#if i.showAlways && i.name != einrichtung.name>
2874 <#assign
2875 einrichtungsname = einrichtungsname + ' <span class="facility-name-level-' + counter + ' ' + spanClass + '">' + i.name + '</span>'
2876 counter = counter+1
2877 />
2878 </#if>
2879 </#list>
2880 <#return einrichtungsname + ' <span class="facility-name-level-1 '+spanClass+'">'+einrichtung.name+'</span>'/>
2881</#function>
2882
2883<#function showLeftInCardFunction>
2884 <#local
2885 showLeftInCard = false
2886 vr_details_card_padding = getterUtil.getBoolean(themeDisplay.getThemeSetting("03-vr-details-card-padding"))
2887 header_type = getterUtil.getString(themeDisplay.getThemeSetting("header-type"))
2888 hasLongHeader = header_type == 'long'
2889 />
2890 <#if hasLongHeader>
2891 <#local showLeftInCard = true/>
2892 <#else>
2893 <#local showLeftInCard = !vr_details_card_padding?? && vr_details_card_padding != 0 && vr_details_card_padding != '0' />
2894 </#if>
2895 <#return showLeftInCard/>
2896</#function>
2897
2898<#macro sr_only>
2899 <span class="sr-only">
2900 <#nested/>
2901 </span>
2902</#macro>