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