BIS: Suche und Detail

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> vr.zfinder2017  [in template "90747669430683#32810#42708" at line 18, column 27]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

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