BIS: Suche und Detail

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

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

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