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