BIS: Suche und Detail

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> einrichtung.anschrift  [in template "33514#33549#116739" at line 947, column 61]

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

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