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