Waldbewirtschaftung

Wir bewirtschaften Wald. Wir erhalten Ökosysteme. Wir lassen Zukunft wachsen. Für Waldbesitzer. Gesellschaft. Und Zukunft. Mit den individuellen Zielen unser Waldbesitzer im Blick und vorausschauender Planung bewirtschaften wir Wälder. Seit über 150 Jahren, mit fast 200.000 ha Wald in Dänemark und im Baltikum.

Wir sprechen Wald

Seit 150 Jahren pflegen und bewirtschaften wir Wald. In unterschiedlichen Klimazonen, mit unterschiedlichen Bodenqualitäten und immer mit den individuellen, wirtschaftlichen Zielen der Waldbesitzer im Blick.

Mit unseren Kunden entwickeln wir Waldbewirtschaftungsstrategien, die sowohl die wirtschaftlichen Ziele als auch den langfristigen, verantwortungsvollen Wertbeitrag des Waldes vereinen. 

Im Takt des Waldes schreiten wir voran

Gemeinsam mit privaten und institutionellen Waldbesitzern setzen sich unsere Förster vor Ort jeden Tag dafür ein, den ökonomischen, ökologischen und gesellschaftlichen Wert ihres Waldes zu kultivieren und für zukünftige Generationen zu erhalten. Dabei vereinen wir die individuellen, wirtschaftlichen Ziele mit den Anforderungen der Natur und unserer Verantwortung.

  • 1,7 Mio. t/Jahr CO2-Bindung (durch 190.000 ha betreute Waldfläche)
  • 9,8 t CO2-Bindung je ha pro Jahr (Potential in Deutschland)

Zeitgemäße und authentische Beratung

Wir bieten umfangreiche, zeitgemäße und authentische Beratung, vorausschauende Planung sowie Budgetierung von Maßnahmen zur Pflege und Gestaltung von (Privat-) Wäldern, die es Waldbesitzern ermöglicht mit ihrem Wald den bestmöglichen Beitrag zur verantwortungsvollen Nutzung und kommerziellen Bewirtschaftung zu erzielen.

Wir unterstützen Sie auf dem gesamten Weg

Ein breites Spektrum an Dienstleistungen und Lösungen im Waldbewirtschaftung

Leistungen

Mit einem stets offenen Ohr und Herzen für unsere Waldbesitzer bedienen wir die gesamte Leistungskette vom Waldmanagement bis zum Verkauf von Rohholz.

View more

Technologie im Wald

Wir bringen Transparenz und Effizienz in den Wald, denn mit unserer digitalen Kompetenz übersetzen wir Waldeffekte in sichtbare Ergebnisse.

View more

Über uns

Unsere Herkunft, unsere Werte und unser Team machen uns jeden Tag stolz und lassen uns im besten Sinne für unsere Kunden und die Natur handeln.

View more

Waldbewirtschaftung nach Bedarf

Wir unterstützen Waldbesitzer in der Identifikation und Erreichung ihrer Individuellen waldbaulichen Zielsetzungen, so dass sie ökologische und wirtschaftliche Potentiale ausschöpfen. 

Von Forstverwaltung zu Waldgestaltung

Wir unterstützen Waldbesitzer in der Identifikation und Erreichung ihrer individuellen waldbaulichen Zielsetzungen.

Mit Wald die Zukunft gestalten

Einen Wald zu besitzen, bringt Freude und Pflichten zugleich. Gerade für Neu-Waldbesitzer ist der Anschluss an eine gemeinschaftliche Organisation, zum Beispiel in Form einer Forstbetriebsgemeinschaft, eine gute Möglichkeit in die Thematik der Waldbewirtschaftung einzusteigen. Je nach Beschaffenheit des Baumbestandes, wie etwa Hektar und Alter der Bäume, kann eine eigenständige Bewirtschaftung der Waldflächen aus ökologischen und wirtschaftlichen Gesichtspunkten durchaus attraktiv sein. Zudem können individuelle Zielsetzungen in der Regel ausschließlich in der alleinigen Verantwortung umgesetzt werden. Allein bleibt bei uns aber niemand: wir stehen unseren Waldbesitzern zur Seite – professionell, erreichbar, leistungsstark.

  • Potentialausschöpfung ökologischer und wirtschaftlicher Zielsetzungen
  • Langfristige Sicherstellung der Nutzbarkeit des Waldes, im Einklang mit der Natur
  • Echt persönliche Betreuung, unsere Förster kennen jeden Wald mit ihrem Besitzer
  • Mit moderner Technologie transparente Einblicke in das Waldgeschehen 

Unsere Förster sind vertraut mit den Anforderungen an die anspruchsvolle Waldnutzung, auch vor dem Hintergrund der langfristigen Sicherung und dem Ausbau von Vermögenswerten. 
 
Vom Baum bis zum Wild

Mit unserer Expertise an ihrer Seite können Waldbesitzer in einer vertraulichen Zusammenarbeit ansprechende Nutzungskonzepte umsetzen. 
 
Waldkonzepte mit Anspruch

Jeder Wald ist mehr als die Summe der einzelnen Bäume. Für gesellschaftlich engagierte Waldbesitzer bietet ein gesunder Wald einen attraktiven Ort für  Begegnungen in der Natur. Zu Gunsten des Landkreises und der Bevölkerung, aber auch für die Austragung gesellschaftlicher Anlässe, wie Jagden oder Ausritte. Unsere Förster sind vertraut mit den Anforderungen an die anspruchsvolle Waldnutzung, auch vor dem Hintergrund der langfristigen Sicherung und dem Ausbau von Vermögenswerten. Unsere umfangreiche forstwirtschaftliche Beratung lässt keine Idee ungedacht und berücksichtigt neue, innovative Konzepte und Möglichkeiten der Waldbewirtschaftung.

  • Umsetzung anspruchsvoller Waldnutzung, z.B. Jagden 
  • Großes Leistungsspektrum, vom Waldbau bis zur Reviergestaltung
  • Sicherung und Ausbau des Waldvermögens
  • Vertrauensvolle und diskrete Betreuung individueller Anforderungen 

Mit unserer forstwirtschaftlichen Beratung kombinieren wir Erfahrung mit zeitgemässen Technologieeinsatz, so erschliessen wir Wirtschaftspotentiale zügig und natürliche Werte zu schaffen. 
 
Planbar, effizient und mit moderner Technologie

Wir erschließen zügig Potentiale und schaffen aus Waldflächen ökologisch nachhaltige Werte. 
 
Potentiale nutzen, Werte schaffen

So sehr wir die Freigiebigkeit der Natur schätzen, wenn es um das Geschäft geht, vertrauen auch wir am liebsten Zahlen, Daten und Fakten. Ansprechpartner, die es gewohnt sind, nach Effizienz und Nutzenorientierung zu entscheiden, werden bei uns durch modernen Technologieeinsatz mit messbaren Ergebnissen in ihrer Entscheidung unterstützt. Neben der Messbarkeit von Maßnahmen steht die Planbarkeit der Bewirtschaftung des Waldes im Vordergrund. Bestehende Planungszyklen, wie etwa in der Land- und Viehwirtschaft, erfordern eine effektive und zügige Umsetzung fachgerechter Maßnahmen.

  • Forstwirtschaftliche Beratung mit zeitgemäßem Technologieeinsatz
  • Zeitnahe Umsetzung fachgerechter Maßnahmen
  • Steigerung der gesamtökologischen Bilanz von Wirtschaftsflächen
  • Effektive Realisierung vorhandener Potentiale von Waldflächen  

Wir lassen Menschen die Vielfalt erfahren, die Wald zu bieten hat

Für uns ist Wald mehr als nur die Ansammlung von Bäumen. Wald ist Lebensraum für Tiere und Pflanzen; ein gesunder Wald ist aber auch Erholungsgebiet und Ort zum Sein für Menschen – Freizeit, Wohlbefinden und Erfahrungen in der Natur.

Der Wald ist ein komplexes und enorm wertvolles Ökosystem. Attraktive Wälder dienen nicht nur der Erholung und Freizeitgestaltung, sie tragen vielmehr jeden Tag zur Bindung von CO2 bei und helfen bei der Steigerung der Biodiversität.

Verstehen kommt vor machen: Bevor wir mit unseren Kunden in die Definition von Maßnahmen gehen, beleuchten wir daher Beweggründe und erfragen die übergeordneten Ziele. Die Berücksichtigung der Natur ist uns hierbei genauso wichtig wie die individuelle Zielstellung.  

Wir unterstützen Waldbesitzer darin, aus ihrem Landbesitz zum einen langfristigen Wert zu ziehen und zum anderen die Nutzung ihres Waldes attraktiv ökonomisch und ökologisch zu gestalten.

Wir handeln mit Bedacht und Sorgfalt, denn was wir heute tun, zeigt seine volle Wirksamkeit in den nächsten Jahren und Jahrzehnten. Waldpflege ist für uns Werterhaltung unseres Planeten und einer lebenswerten Umwelt im Jetzt für das Morgen.

Mit uns den wahren Wert des Waldes entdecken – es steckt mehr in ihm als auf den ersten Blick zu sehen ist. 

Was uns und unser Miteinander auszeichnet

Die Wirkung unserer Arbeit zu erleben, bedarf Geduld und Gelassenheit; wir begleiten unsere Kunden und Kundinnen daher stets mit Lockerheit und Humor – ohne dabei jedoch Entscheidungen leichtfertig zu treffen. Ohne Humor ist alles nichts: mit Freude und Leichtigkeit an die Arbeit gehen, anders denken und dabei neue Wege finden.

"Mit uns macht Wald einfach mehr Spaß und bereitet nachhaltig Freude für alle."

Wir denken nicht nur in kurzfristigen Gewinnen, sondern in Dekaden und investieren langfristig in die Zukunft. So bauen wir tiefgehende Beziehungen auf, die auf Ehrlichkeit, Offenheit und gegenseitigem Vertrauen basieren. Wir bewerten Wald mit seinen individuellen Charakteristika. Für uns sind Hektar nicht allein wertbestimmend, sondern die Qualität jedes einzelnen Bestandes. 

"Das ist unser Anspruch an Fairness und Respekt."

Unsere unternehmerische Herkunft, die kommerzielle Stiftung Hedeselskabet, verpflichtet uns seit über 150 Jahren zum Wohle der Natur und der Gesellschaft zu handeln. Diesem Anspruch folgen wir seit 30 Jahren auch in Deutschland.

"Unsere Kunden können sich darauf verlassen, dass wir tun, was wir sagen."

Humor & Kreativität

Die Wirkung unserer Arbeit zu erleben, bedarf Geduld und Gelassenheit; wir begleiten unsere Kunden und Kundinnen daher stets mit Lockerheit und Humor – ohne dabei jedoch Entscheidungen leichtfertig zu treffen. Ohne Humor ist alles nichts: mit Freude und Leichtigkeit an die Arbeit gehen, anders denken und dabei neue Wege finden.

"Mit uns macht Wald einfach mehr Spaß und bereitet nachhaltig Freude für alle."

Fairness & Respekt

Wir denken nicht nur in kurzfristigen Gewinnen, sondern in Dekaden und investieren langfristig in die Zukunft. So bauen wir tiefgehende Beziehungen auf, die auf Ehrlichkeit, Offenheit und gegenseitigem Vertrauen basieren. Wir bewerten Wald mit seinen individuellen Charakteristika. Für uns sind Hektar nicht allein wertbestimmend, sondern die Qualität jedes einzelnen Bestandes. 

"Das ist unser Anspruch an Fairness und Respekt."

Integrität & Glaubwürdigkeit

Unsere unternehmerische Herkunft, die kommerzielle Stiftung Hedeselskabet, verpflichtet uns seit über 150 Jahren zum Wohle der Natur und der Gesellschaft zu handeln. Diesem Anspruch folgen wir seit 30 Jahren auch in Deutschland.

"Unsere Kunden können sich darauf verlassen, dass wir tun, was wir sagen."

Error executing template "/Designs/Swift/Grid/Page/RowTemplates/Dalgas_Contact.cshtml"
System.Exception: Custom field 'AccessUser_JobTitleTranslatedDE' was not found.
   at Dalgas.Custom.Extensions.UserViewModelExtensions.GetCustomFieldValue[T](UserViewModel user, String fieldSystemName) in D:\a\1\s\Custom\Extensions\UserViewModelExtensions.cs:line 34
   at Dalgas.Custom.Extensions.UserViewModelExtensions.GetJobTitleTranslatedDE(UserViewModel user) in D:\a\1\s\Custom\Extensions\UserViewModelExtensions.cs:line 236
   at Dalgas.Custom.Extensions.UserViewModelExtensions.GetJobTitle(UserViewModel user) in D:\a\1\s\Custom\Extensions\UserViewModelExtensions.cs:line 255
   at CompiledRazorTemplates.Dynamic.RazorEngine_2befce59cd7c4d60889e99ed78fc01de.Execute() in E:\Solutions\dalgas\Files\Templates\Designs\Swift\Grid\Page\RowTemplates\Dalgas_Contact.cshtml:line 451
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.GridRowViewModel> 2 @using System 3 @using System.Collections.Generic 4 @using System.Linq 5 @using System.Text.RegularExpressions 6 @using Dalgas.Custom.Extensions 7 @using Dalgas.Custom.Models.Content 8 @using Dalgas.Custom.Services 9 @using Dalgas.Custom.ViewModels.UI 10 @using Dynamicweb.Core.Encoders 11 @using Dynamicweb.Core.Json 12 @using Dynamicweb.Ecommerce.ProductCatalog 13 @using Dynamicweb.Frontend 14 @using Dynamicweb.Security.UserManagement 15 16 @using System 17 @using System.Collections.Generic 18 @using System.Linq 19 @using Dalgas.Custom.ViewModels.UI 20 @using Dynamicweb.Content 21 @using Dynamicweb.Ecommerce.ProductCatalog 22 @using Dynamicweb.Frontend 23 @using ParagraphService = Dalgas.Custom.Services.ParagraphService 24 25 @*TODO: Move these functions onto the model *@ 26 27 @functions 28 { 29 30 public string GetSectionClassList(GridRowViewModel model, string overwriteTheme = "") 31 { 32 var returnValues = new List<string> 33 { 34 $"item_{model.Item.SystemName.ToLower()}" 35 }; 36 37 if (Services.Grids.GetGridRowById(model.Id).Sort == 1) 38 { 39 returnValues.Add("dalgas-section-first-on-page"); 40 } 41 42 var sectionBackgroundTheme = model.Item.GetItem("ColorScheme")?.GetString("ColorScheme") ?? string.Empty; 43 44 if (!string.IsNullOrEmpty(overwriteTheme)) 45 { 46 sectionBackgroundTheme = overwriteTheme; 47 } 48 49 // Add theme class if it exists 50 if (!string.IsNullOrWhiteSpace(sectionBackgroundTheme)) 51 { 52 if (sectionBackgroundTheme.Contains("default")) 53 { 54 returnValues.Add("theme theme-light"); 55 } 56 else 57 { 58 returnValues.Add($"theme {sectionBackgroundTheme.Replace(" ", "").Trim().ToLower()}"); 59 } 60 } 61 62 // Determine if top padding should be removed 63 64 string removeTopPadding = model.Item.GetItem("ColorScheme")?.GetString("RemoveTopPadding"); 65 66 returnValues.Add("pb-6"); 67 if (removeTopPadding != "enable") 68 { 69 returnValues.Add("pt-6"); 70 } 71 72 return string.Join(" ", returnValues); 73 } 74 75 } 76 77 78 @{ 79 IEnumerable<HeadingViewModel> headings = ParagraphService.Instance.GetHeadingsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Headings")); 80 string text = Model.Item.GetItem("Paragraph_Text")?.GetString("Text"); 81 string lead = Model.Item.GetItem("Paragraph_Text")?.GetString("Lead"); 82 IEnumerable<ButtonViewModel> buttons = ParagraphService.Instance.GetButtonsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Buttons")); 83 84 bool hasImage = Model.Item.GetItem("Paragraph_Image")?.GetFile("Image") != null; 85 bool hasText = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Text")); 86 bool hasLead = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Lead")); 87 bool hasHeading = headings.Any(); 88 bool hasButton = buttons.Any(); 89 90 var theme = Model.Item.GetItem("ColorScheme")?.GetString("ColorScheme"); 91 var fifthElementTheme = "fifth-element-color-" + Model.Item?.GetItem("ColorScheme")?.GetString("FifthElementColor"); 92 93 var sectionClassList = GetSectionClassList(Model); 94 95 var image = string.Empty; 96 var imageParameters = new Dictionary<string, object>(); 97 98 string layout = string.Empty; 99 Boolean enableFifthElement = false; 100 if (Model?.Item != null) 101 { 102 var paragraphLayout = Model.Item.GetItem("Paragraph_Layout"); 103 104 if (paragraphLayout != null) 105 { 106 layout = paragraphLayout.GetString("Layout"); 107 108 enableFifthElement = !string.IsNullOrEmpty(paragraphLayout.GetString("Layout_FifthElement")); 109 } 110 } 111 112 if (!string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Image")?.GetFile("Image")?.Path)) 113 { 114 image = Model.Item.GetItem("Paragraph_Image").GetFile("Image").Path; 115 imageParameters.Add("alt", Model.Item.GetItem("Paragraph_Image")?.GetString("ImageAltText")); 116 int xPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromLeft ?? 50; 117 int yPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromTop ?? 50; 118 string cssPosition = $"{xPos}% {yPos}%"; 119 imageParameters.Add("style", "object-position:" + cssPosition); 120 } 121 122 LinkViewModel imageLink = new LinkViewModel(); 123 if (Model.Item?.GetItem("Paragraph_Image")?.GetItem("Link") != null && !string.IsNullOrEmpty(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link").GetString("ButtonLink"))) 124 { 125 imageLink = ParagraphService.Instance.GetLinkByItem(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link")); 126 } 127 128 string fifthElementIconPath = "/Files/Templates/Designs/Swift/Assets/Images/DalgasFifthElements/"; 129 } 130 131 132 @{ 133 QueryResult queryResult = new QueryResult(); 134 int numberOfPersons = Convert.ToInt32(Model.Item.GetItem("Paragraph_Layout").GetString("NumberOfPersons")); 135 bool showForm = Model.Item.GetItem("Paragraph_Layout").GetBoolean("ShowForm"); 136 bool showFacets = Model.Item.GetItem("Paragraph_Layout").GetBoolean("ShowFacets"); 137 bool showSearch = Model.Item.GetItem("Paragraph_Layout").GetBoolean("ShowSearch"); 138 139 string cardInformationLayout = Model.Item.GetItem("Paragraph_Layout").GetString("Layout"); 140 141 bool allowAllQueryItems = showFacets || showSearch; 142 int formParagraphId = Pageview.AreaSettings.GetLink("FormGetContacted").PageId; 143 string iconPath = "/Files/Templates/Designs/Swift/Assets/icons/"; 144 145 string formType = Model.Item.GetItem("Paragraph_Layout").GetString("FormType"); //Default or Microsoft 146 string formBlockId = Model.Item.GetItem("Paragraph_Layout").GetString("FormId"); // Microsoft form 147 string formContainerId = Model.Item.GetItem("Paragraph_Layout").GetString("ContainerId"); // Microsoft form 148 149 ButtonViewModel btnOpenForm = new ButtonViewModel 150 { 151 Id = "formParagraphId_" + formParagraphId, 152 Text = Translate("Contact me"), 153 Type = ButtonType.Button, 154 DisplayType = ButtonDisplayType.Primary, 155 Classes = new ClassList("js-show-paragraph-form") 156 }; 157 158 IList<UserViewModel> contactPersonListItems = Model.Item?.GetItem("Paragraph_Layout")?.GetUsers("ContactPersonSelector") ?? Enumerable.Empty<UserViewModel>().ToList(); 159 bool hasContactPersonListItems = contactPersonListItems.Any(); 160 List<User> users = new List<User>(); 161 List<string> userIds = new List<string>(); 162 163 if (hasContactPersonListItems) 164 { 165 userIds.AddRange(contactPersonListItems.Select(cp => cp.ID.ToString())); 166 allowAllQueryItems = false; 167 showFacets = false; 168 showSearch = false; 169 } 170 else 171 { 172 if (showFacets) 173 { 174 numberOfPersons = 12; 175 queryResult = ContentRelationService.Instance.GetAllContacts(numberOfPersons); 176 } 177 else 178 { 179 queryResult = ContentRelationService.Instance.GetRelatedContactsByCurrentPage(numberOfPersons); 180 } 181 182 userIds.AddRange(queryResult.Results.Select(qrr => qrr["UserID"]?.ToString())); 183 } 184 185 bool showPersons = Model.Item.GetItem("Paragraph_Layout").GetBoolean("showPersons") && userIds.Any(); 186 int pageNum = int.TryParse(Dynamicweb.Context.Current.Request["PageNum"], out int pageNumResult) ? pageNumResult : 1; 187 string searchTerm = Dynamicweb.Context.Current.Request["q"]; 188 List<FacetOption> selectedFacetOptions = new List<FacetOption>(); 189 int totaleCount = 0; 190 bool enableShowZeroResultMsg = true; 191 192 bool showAlternativeLayout = false; 193 194 if (showFacets && showSearch || showPersons && numberOfPersons >= 2 && userIds.Count >= 2 && showForm || showPersons && numberOfPersons >= 3 && userIds.Count >= 3 && !showForm) 195 { 196 showAlternativeLayout = true; 197 } 198 } 199 200 201 @if (queryResult.FacetGroups.Any() || hasContactPersonListItems || showForm) 202 { 203 <section id="section-@Model.Id" class="@sectionClassList item_@Model.Item.SystemName.ToLower()" data-swift-gridrow> 204 <div class=""> 205 206 <div class="container-xl"> 207 <div class="row justify-content-center"> 208 <div class="col-12"> 209 <div class="row"> 210 211 <div class="col-12 @(showAlternativeLayout ? "flex-column flex-lg-row mb-5" : "col-lg-4 flex-column") d-flex justify-content-between"> 212 <div class="js-content-container content-container col-12 @(showAlternativeLayout ? "col-lg-5" : string.Empty)"> 213 214 <span> 215 @string.Join("", headings.Select(h => h.ToString())) 216 </span> 217 218 @if (!string.IsNullOrEmpty(lead)) 219 { 220 <p class="lead">@lead</p> 221 } 222 223 @text 224 225 </div> 226 <div class="js-content-container content-container @(showAlternativeLayout ? "col-lg-5 d-inline-flex justify-content-lg-end align-items-end" : string.Empty)"> 227 <div class="d-flex flex-wrap gap-3 @(showAlternativeLayout ? "mb-4" : "mb-4 mb-lg-0")"> 228 @foreach (ButtonViewModel button in buttons) 229 { 230 @button 231 } 232 </div> 233 </div> 234 </div> 235 236 <div class="col"> 237 <div class="position-relative g-4 js-card-person-container js-dalgas-queryresult-container" id="@($"query-result-{Model.Id}")"> 238 239 @if (allowAllQueryItems) 240 { 241 totaleCount = queryResult.TotalCount; 242 } 243 244 <form method="post" action="@Pageview.SearchFriendlyUrl" data-response-target-element="content" tabindex="-1" aria-hidden="false" class="d-flex js-dalgas-facets-form dalgas-facets-form" data-total-count="@totaleCount" data-page-size="@numberOfPersons"> 245 <input type="hidden" name="LayoutTemplate" value="Designs/Swift/Swift_PageClean.cshtml"/> 246 <input type="hidden" name="PageNum" value="@pageNum"/> 247 @if (showFacets) 248 { 249 foreach (FacetGroup facetGroup in queryResult.FacetGroups) 250 { 251 foreach (Facet facet in facetGroup.Facets) 252 { 253 string showClass = " show"; 254 string ariaExpanded = "true"; 255 string facetGroupId = Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", string.Empty); 256 257 258 if (facet.Options.Any()) 259 { 260 int selectedFacetsInGroup = 0; 261 262 foreach (FacetOption option in facet.Options) 263 { 264 if (option.Selected) 265 { 266 selectedFacetsInGroup++; 267 } 268 } 269 270 string label = selectedFacetsInGroup > 0 ? Translate(facet.Name) + "<span style=\"padding: 0.3em 0.6em\" class=\"badge ms-2\">" + selectedFacetsInGroup + "</span>" : Translate(facet.Name); 271 272 <div class="dropdown js-facets-selector"> 273 <button class="btn dropdown-toggle" type="button" id="FacetGroup_@facetGroupId" data-bs-toggle="dropdown" aria-expanded="false"> 274 @label 275 </button> 276 <div data-lenis-prevent class="dropdown-menu p-3" aria-labelledby="FacetGroup_@facetGroupId" style="min-width: 280px"> 277 @foreach (FacetOption facetOption in facet.Options.OrderBy(fo => fo.Label)) 278 { 279 string facetLabel = HtmlEncoder.HtmlEncode(facetOption.Label); 280 string disabled = facetOption.Count <= 0 ? "disabled" : string.Empty; 281 string selected = facetOption.Selected ? "checked" : string.Empty; 282 string facetValue = Uri.UnescapeDataString(facetOption.Value); 283 string optionValue = $"[{facetValue}]"; 284 285 facetLabel = facetLabel.ToLower() == "true" ? facetLabel = Translate("Yes") : facetLabel; 286 facetLabel = facetLabel.ToLower() == "false" ? facetLabel = Translate("No") : facetLabel; 287 288 <label class="form-check mt-1" @disabled> 289 <input type="checkbox" onclick="custom.QueryResult.update(event)" class="form-check-input" name="@facet.QueryParameter" value="@optionValue" data-filter-value="@facetLabel" @selected> 290 <span class="form-check-label d-flex align-items-center"> 291 <span class="flex-fill">@facetLabel </span> 292 <small class="opacity-85">@facetOption.Count</small> 293 </span> 294 </label> 295 296 if (facetOption.Selected) 297 { 298 FacetOption selectFacetOption = facetOption; 299 selectFacetOption.Name = facet.QueryParameter; 300 selectedFacetOptions.Add(selectFacetOption); 301 } 302 } 303 </div> 304 </div> 305 } 306 } 307 } 308 309 if (!string.IsNullOrEmpty(searchTerm)) 310 { 311 selectedFacetOptions.Add(new FacetOption() 312 { 313 Count = 1, 314 Label = searchTerm, 315 Name = "q", 316 Selected = true, 317 Value = searchTerm 318 }); 319 } 320 } 321 322 @if (showSearch) 323 { 324 <div class="type-ahead-dropdown"> 325 <div class="position-relative suggest-form"> 326 <span class="position-absolute top-0 end-0 icon-3 px-3 d-flex align-items-center h-100 search-icon"> 327 @ReadFile(iconPath + "search.svg") 328 </span> 329 330 <input id="searchField_@Model.Id" 331 class="form-control custom-header-searchbar js-custom-facets-search-field pe-5 ps-3 js-" 332 type="search" 333 placeholder="@Translate("Enter postcode or name of person")" 334 autocomplete="off" 335 maxlength="255" 336 name="q" 337 minlength="3" 338 value="@searchTerm" 339 data-original="@searchTerm"> 340 341 <button type="button" 342 onclick="custom.QueryResult.clearSearchField(event)" 343 class="btn h-100 icon-2 reset-search" 344 aria-label="@Translate("Clear search")" 345 style="opacity: 0; position: absolute; top: 0; right: 0; visibility: hidden;"> 346 @ReadFile(iconPath + "x.svg") 347 </button> 348 </div> 349 </div> 350 <input type="submit" onclick="custom.QueryResult.update(event)" class="btn btn-primary col-md-2" value="@Translate("Search", "Search")"> 351 } 352 </form> 353 354 @if (showFacets && selectedFacetOptions.Any()) 355 { 356 <div class="mt-3 d-flex gap-3 mb-4 js-dalgas-queryresult-selectedfacets-container dalgas-queryresult-selectedfacets-container"> 357 @foreach (FacetOption facetOption in selectedFacetOptions) 358 { 359 string facetValue = Uri.UnescapeDataString(facetOption.Value); 360 string optionValue = $"[{facetValue}]"; 361 <input class="visually-hidden" id="Selected_@(Model.Id)_@facetOption.Value.Replace("#", string.Empty)" name="@facetOption.Name" onclick="custom.QueryResult.deselectFacetOption(event)" type="checkbox" value="@optionValue" title="@facetOption.Label" checked> 362 <label class="badge theme border border-dark" for="Selected_@(Model.Id)_@facetOption.Value.Replace("#", string.Empty)"> 363 <span class="text-nowrap">@(facetOption.Label)</span> 364 <span class="icon-2 ms-2"> 365 @ReadFile(iconPath + "x.svg") 366 </span> 367 </label> 368 } 369 370 @if (selectedFacetOptions.Count >= 3) 371 { 372 <input class="visually-hidden" id="ClearAll" name="ClearAll" onclick="custom.QueryResult.clearAll(event)" type="checkbox" value="" title="" checked> 373 <label class="badge text-nowrap dalgas-btn-clear-all" for="ClearAll"> 374 <span class="text-nowrap">@Translate("Clear all")</span> 375 <span class="icon-2 ms-2"> 376 @ReadFile(iconPath + "x.svg") 377 </span> 378 </label> 379 } 380 </div> 381 } 382 383 @if (showFacets && selectedFacetOptions.Any() == false && string.IsNullOrEmpty(searchTerm)) 384 { 385 enableShowZeroResultMsg = false; 386 userIds = new List<string>(); 387 } 388 389 @if (showFacets && enableShowZeroResultMsg && userIds.Any() == false) 390 { 391 <div class="mt-4">@Translate("Your search returned no results...")</div> 392 } 393 394 395 @if (showPersons && userIds.Any() || showPersons && hasContactPersonListItems) 396 { 397 <div class="row @(showAlternativeLayout ? "g-4" : "mt-3") js-dalgas-queryresult-itemlist dalgas-queryresult-itemlist"> 398 399 @foreach (string userId in userIds) 400 { 401 if (!int.TryParse(userId, out int intUserId)) 402 { 403 continue; 404 } 405 406 //UserViewModel result = new UserViewModel(); 407 408 User result = User.GetUserByID(intUserId); 409 410 if (result == null) 411 { 412 continue; 413 } 414 415 UserViewModel resultViewModel = result.ToViewModel(); 416 417 <div class="col-12 js-col-card-person col-lg @(showAlternativeLayout ? "col-lg-4" : "")"> 418 419 @{ 420 FileViewModel imageFile = ViewModelFactory.CreateFieldFileValueView(result.Image); 421 } 422 423 <div class="theme theme-light h-100"> 424 <div class="p-img-container d-flex"> 425 <figure class="ratio ratio-1x1 @(!string.IsNullOrEmpty(result.Image) ? "has-image" : string.Empty)"> 426 @RenderPartial("Components/Image.cshtml", imageFile ?? new FileViewModel()) 427 </figure> 428 <figure class="ratio ratio-1x1"> 429 <span class="fifth-element @fifthElementTheme opacity-50"> 430 @ReadFile(fifthElementIconPath + "canopy.svg") 431 </span> 432 </figure> 433 </div> 434 <div class="p-txt-container p-4 pt-5"> 435 <h4>@resultViewModel.Name</h4> 436 437 @if (cardInformationLayout == "title-and-description") 438 { 439 <div class="small d-flex flex-column mb-3 opacity-75"> 440 <span>@resultViewModel.GetJobTitle()</span> 441 442 @if (!string.IsNullOrEmpty(resultViewModel.GetDescription())) 443 { 444 <span class="mt-3">@resultViewModel.GetDescription()</span> 445 } 446 </div> 447 } 448 else 449 { 450 <div class="small d-flex flex-column mb-3 opacity-75"> 451 <span>@resultViewModel.GetJobTitle()</span> 452 <span>@resultViewModel.GetDepartment()</span> 453 454 @if (resultViewModel.GetLocations().Any()) 455 { 456 foreach (var test in resultViewModel.GetLocations()) 457 { 458 @test.Text 459 } 460 } 461 462 <span>@resultViewModel.GetComment()</span> 463 </div> 464 465 466 if (!string.IsNullOrEmpty(resultViewModel.GetContactEmail())) 467 { 468 <div class="d-flex gap-3 small opacity-75"> 469 <span>E.</span> 470 <a style="font-size: 1em" class="text-decoration-none" href="mailto:@resultViewModel.GetContactEmail()">@resultViewModel.GetContactEmail().ToLower()</a> 471 </div> 472 } 473 if (!string.IsNullOrEmpty(resultViewModel.Phone)) 474 { 475 <div class="d-flex gap-3 small opacity-75"> 476 <span>T.</span> 477 <span>@resultViewModel.Phone</span> 478 </div> 479 } 480 } 481 </div> 482 </div> 483 484 </div> 485 } 486 @if (showForm) 487 { 488 <div class="col-12 js-col-card-person col-lg"> 489 490 <div class="h-100 contact-person-card js-contact-person-card"> 491 492 <div class="card-front theme theme-light "> 493 <div class="p-img-container d-none d-lg-flex"> 494 <figure class="ratio ratio-1x1"> 495 @* Empty space *@ 496 </figure> 497 <figure class="ratio ratio-1x1"> 498 <span class="fifth-element @fifthElementTheme opacity-50"> 499 @ReadFile(fifthElementIconPath + "canopy.svg") 500 </span> 501 </figure> 502 </div> 503 <div class="p-txt-container p-4 pt-6"> 504 <h4>@Translate("Get Contacted")</h4> 505 506 <div class="small d-flex flex-column mb-3 opacity-75"> 507 @Translate("Dalgas - Get Contacted - Card Text", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.") 508 </div> 509 510 @RenderModel(btnOpenForm) 511 </div> 512 </div> 513 <div class="card-back theme theme-light "> 514 515 @if (formParagraphId != null) 516 { 517 <div class="contact-person-form-container js-contact-person-form-container theme p-4"> 518 519 520 @if (formType == "microsoft") 521 { 522 <div class="js-remove-microsoft-form-styling microsoft-form-container"> 523 <script src="https://cxppusa1formui01cdnsa01-endpoint.azureedge.net/eur/FormLoader/FormLoader.bundle.js" crossorigin="anonymous" defer></script> 524 <div data-cached-form-url="https://assets-eur.mkt.dynamics.com/@formBlockId/digitalassets/forms/@formContainerId" data-form-api-url="https://public-eur.mkt.dynamics.com/api/v1.0/orgs/@formBlockId/landingpageforms" data-form-id="@formContainerId"></div> 525 </div> 526 } 527 else 528 { 529 @RenderParagraphContent(formParagraphId) 530 } 531 532 533 </div> 534 } 535 536 </div> 537 538 </div> 539 </div> 540 } 541 </div> 542 543 if (allowAllQueryItems && totaleCount > numberOfPersons) 544 { 545 <div class="row mt-4"> 546 <div class="col-12 text-center"> 547 <button onclick="custom.QueryResult.getNextPage(event)" class="btn btn-primary">@Translate("Vis flere")</button> 548 </div> 549 </div> 550 } 551 } 552 else 553 { 554 if (showForm) 555 { 556 <div class="col-12 col-lg"> 557 558 @if (formParagraphId != null) 559 { 560 if (formType == "microsoft") 561 { 562 if (Pageview.IsVisualEditorMode) 563 { 564 <div class="container-xl alert alert-danger" role="alert"> 565 <h4>Use the "Microsoft Form" Paragraph instead</h4> 566 <p>Due to technical limitations within Microsoft Form Markup & Styling, we prefer that you use the "Microsoft Form" item instead, when you have no contact persons attatched this Contact Paragraph.</p> 567 <p>We are showing the default form in the frontend.</p> 568 </div> 569 } else { 570 @RenderParagraphContent(formParagraphId) 571 } 572 } 573 else 574 { 575 @RenderParagraphContent(formParagraphId) 576 } 577 } 578 </div> 579 } 580 } 581 </div> 582 </div> 583 </div> 584 </div> 585 </div> 586 </div> 587 </div> 588 </section> 589 } 590 else 591 { 592 if (Pageview.IsVisualEditorMode) 593 { 594 <div class="container-xl alert alert-danger" role="alert"> 595 This <strong>@Model.Item.SystemName</strong> is empty 596 </div> 597 } 598 } 599

Wir schaffen Wert für Ihre Branche

Dalgas löst alle Arten von grünen Aufgaben in verschiedenen Branchen und Sektoren über verschiedene Dienstleistungen hinweg. Wir haben die Erfahrung, den Maschinenpark und die Referenzen, die Ihnen die bestmögliche Lösung garantieren.

No products in cart