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