BIS: Suche und Detail

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> $mitarbeiter  [in template "33396#33431#86831" at line 766, column 61]

----
Tip: Variable references must not start with "$", unless the "$" is really part of the variable name.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

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