Biodiversitet i skoven

Skoven er hjemsted for en lang række organismer. Alt fra svampe og planter til insekter og dyreliv. Ved at bevare en konstant dynamik i de naturlige skove, skabes der bedre betingelser for, at naturlige levesteder og økosystemer kan udvikle sig. Det fremmer den lokale biodiversitet i din skov. 

Skovdrift og biodiversitet i samspil

Hver skov er unik. Samtidig har du som skovejer bestemte ønsker og mål med netop din skovs funktioner. Multifunktionel anvendelse af skovarealer giver stor værdi, og betyder at du kan fremme naturværdien i skoven – samtidig med at du anvender området til produktion og rekreative formål. 

Skoven har masser at give af. Det kan være pyntegrønt, byggematerialer og energi. Men skoven kan også være med til at beskytte vores grundvand, og fungere som virkemiddel mod klimaforandringer ved at sikre binding af kulstof. 

Hvordan kan din skov bidrage til biodiversitet?

Du kan som skovejer vælge at lægge vægt på forskellige aspekter af skovens funktioner. For at øge naturværdien for de arter der lever i din skov, findes der en række praktiske tiltag, du kan gennemføre.

Tiltag kan fx være:

  • Bevare og fremme veterantræer samt aktivt skabe mere dødt ved
  • Etablere eller bevare skovenge og lysninger
  • Hel- eller halvårsgræsning med husdyr, for at hæmme tilgroning og understøtte den biologiske mangfoldighed
  • Udtag areal til urørt, eventuelt med tiltag for at gøre arealet klar
  • Indsatser målrettet én eller flere truede arter 

Dokumentation af tiltag

Vi anbefaler at du dokumenterer effekten af de tiltag du gennemfører for biodiversiteten. Det giver troværdighed. Og dataene kan bakke dig op, når du fortæller omverdenen at din skov har bidraget til at fremme biodiversitet.

Hvis dine tiltag samtidig valideres af en uafhængig tredjepart, kan vi hjælpe dig med at opnå en Økosystemtjenestecertificering, FSC®.

Din lokale skovfoged fra Dalgas giver dig vejledning og forslag til tiltag der vil øge naturværdien, og rådgiver om de konkrete muligheder der er i din skov.  

I Dalgas gør vi en forskel – bare spørg vores kunder og samarbejdspartnere

Oceaner af blåmuslinger hjælper Blå Biomasse A/S med at fjerne næringsstoffer fra farvandene

Virksomheden Blå Biomasse A/S har milliarder af ’ansatte’ i form af blåmuslinger, som knokler med at filtrere de danske farvande for belastende næringsstoffer. Desuden skaber de mange skaldyr også værdi som klimavenlig ernæring.

Solars klimaskov

Solars etablering af en 38 hektar stor klimaskov er en investering, der både skaber nytte nu og langt ud i fremtiden.

Bikubenfonden og Dalgas vil sætte standarden for, hvordan vi måler biodiversitet

Gennem et pilotprojekt i Svanninge Bjerge, ønsker Bikubenfonden sammen med Dalgas at udvikle en standard, som andre kan bruge, når de vil skabe reelle og dokumenterbare biodiversitetsforbedringer – kernen i tiltaget er økosystemtjenestecertificering.

HessenForst har effektiviseret og fået certificeret målingen af rundtømmer ved hjælp af LogStackPro

Flere dages potentiel ventetid er skåret ned til få sekunders effektiv computerkalkulation hos HessenForst, der er skovdriftsafdelingen i den tyske forbundsrepublik Hessen.

Gellerup Ny Naturpark

Dalgas har været med i anlæggelsen af byparken i Gellerup i Aarhus, der nu er nomineret til en international byfornyelsespris.

Investeringsrådgiveren har selv investeret i skov

Gustav D. Lassen har de sidste 30 år rådgivet både private og finansielle institutioner om investering i aktier. I hans egen portefølje indgår udover aktier andre aktivklasser herunder baltisk skov som et vigtigt element.

PEFC-certificering af Brøns Skov

Brøns Skov har netop fået papir på, at den drives på ansvarlig vis, men siden anlæggelsen er skoven blevet drevet, så den i dag er bedre rustet til fremtidens klimaudfordringer.

Skovdrift, udvikling og pleje på Moesgaard Museum

Museumsgæster skal fremover have større glæde af de grønne arealer omkring Moesgaard Museum. Nyt samarbejde med Dalgas skal sikre udvikling af skov og pleje af fortidsminder omkring det østjyske museum.

Grøn pleje og vintersikring hos Gentofte Ejendomme

Efter fire års samarbejde har Dalgas netop genvundet udbuddet om den grønne pleje på institutionerne i Gentofte Kommune.

Nu ødelægger maskinstøj ikke længere søvn

Flere glade borgere, mere fleksibilitet og bedre arbejdsmiljø erstatter den utilfredshed, som Gentofte Ejendommes grønne entreprenør, Dalgas, tidligere kunne møde, når der skulle klippes hæk eller slås græs.

Kontakt din lokale skovfoged

Forest Denmark and Trading

T. +45 43 32 00 10

Get Contacted

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo.
Ved indsendelse af formularen giver du samtykke til, at Hedeselskabet, CVR 42344613 og dets datterselskaber må behandle dine personoplysninger jf. Hedeselskabets privatlivspolitik.
Error executing template "/Designs/Swift/Grid/Page/RowTemplates/Dalgas_Featured_Lists.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_6e0341eaf3cc4eb9b1049f4e899a7bf5.Execute() in D:\solutions\dalgas-production\Files\Templates\Designs\Swift\Grid\Page\RowTemplates\Dalgas_Featured_Lists.cshtml:line 467
   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.Models.Content 7 @using Dalgas.Custom.Services 8 @using Dalgas.Custom.ViewModels.UI 9 @using Dynamicweb.Content 10 @using Dynamicweb.Core.Encoders 11 @using Dynamicweb.Frontend 12 @using Dynamicweb.Ecommerce.ProductCatalog 13 @using Page = Dynamicweb.Content.Page 14 @using System 15 @using System.Collections.Generic 16 @using System.Linq 17 @using Dalgas.Custom.ViewModels.UI 18 @using Dynamicweb.Content 19 @using Dynamicweb.Ecommerce.ProductCatalog 20 @using Dynamicweb.Frontend 21 @using ParagraphService = Dalgas.Custom.Services.ParagraphService 22 23 @*TODO: Move these functions onto the model *@ 24 25 @functions 26 { 27 28 public string GetSectionClassList(GridRowViewModel model, string overwriteTheme = "") 29 { 30 var returnValues = new List<string> 31 { 32 $"item_{model.Item.SystemName.ToLower()}" 33 }; 34 35 if (Services.Grids.GetGridRowById(model.Id).Sort == 1) 36 { 37 returnValues.Add("dalgas-section-first-on-page"); 38 } 39 40 var sectionBackgroundTheme = model.Item.GetItem("ColorScheme")?.GetString("ColorScheme") ?? string.Empty; 41 42 if (!string.IsNullOrEmpty(overwriteTheme)) 43 { 44 sectionBackgroundTheme = overwriteTheme; 45 } 46 47 // Add theme class if it exists 48 if (!string.IsNullOrWhiteSpace(sectionBackgroundTheme)) 49 { 50 if (sectionBackgroundTheme.Contains("default")) 51 { 52 returnValues.Add("theme theme-light"); 53 } 54 else 55 { 56 returnValues.Add($"theme {sectionBackgroundTheme.Replace(" ", "").Trim().ToLower()}"); 57 } 58 } 59 60 // Determine if top padding should be removed 61 62 string removeTopPadding = model.Item.GetItem("ColorScheme")?.GetString("RemoveTopPadding"); 63 64 returnValues.Add("pb-6"); 65 if (removeTopPadding != "enable") 66 { 67 returnValues.Add("pt-6"); 68 } 69 70 return string.Join(" ", returnValues); 71 } 72 73 } 74 75 76 @{ 77 IEnumerable<HeadingViewModel> headings = ParagraphService.Instance.GetHeadingsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Headings")); 78 string text = Model.Item.GetItem("Paragraph_Text")?.GetString("Text"); 79 string lead = Model.Item.GetItem("Paragraph_Text")?.GetString("Lead"); 80 IEnumerable<ButtonViewModel> buttons = ParagraphService.Instance.GetButtonsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Buttons")); 81 82 bool hasImage = Model.Item.GetItem("Paragraph_Image")?.GetFile("Image") != null; 83 bool hasText = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Text")); 84 bool hasLead = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Lead")); 85 bool hasHeading = headings.Any(); 86 bool hasButton = buttons.Any(); 87 88 var theme = Model.Item.GetItem("ColorScheme")?.GetString("ColorScheme"); 89 var fifthElementTheme = "fifth-element-color-" + Model.Item?.GetItem("ColorScheme")?.GetString("FifthElementColor"); 90 91 var sectionClassList = GetSectionClassList(Model); 92 93 var image = string.Empty; 94 var imageParameters = new Dictionary<string, object>(); 95 96 string layout = string.Empty; 97 Boolean enableFifthElement = false; 98 if (Model?.Item != null) 99 { 100 var paragraphLayout = Model.Item.GetItem("Paragraph_Layout"); 101 102 if (paragraphLayout != null) 103 { 104 layout = paragraphLayout.GetString("Layout"); 105 106 enableFifthElement = !string.IsNullOrEmpty(paragraphLayout.GetString("Layout_FifthElement")); 107 } 108 } 109 110 if (!string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Image")?.GetFile("Image")?.Path)) 111 { 112 image = Model.Item.GetItem("Paragraph_Image").GetFile("Image").Path; 113 imageParameters.Add("alt", Model.Item.GetItem("Paragraph_Image")?.GetString("ImageAltText")); 114 int xPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromLeft ?? 50; 115 int yPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromTop ?? 50; 116 string cssPosition = $"{xPos}% {yPos}%"; 117 imageParameters.Add("style", "object-position:" + cssPosition); 118 } 119 120 LinkViewModel imageLink = new LinkViewModel(); 121 if (Model.Item?.GetItem("Paragraph_Image")?.GetItem("Link") != null && !string.IsNullOrEmpty(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link").GetString("ButtonLink"))) 122 { 123 imageLink = ParagraphService.Instance.GetLinkByItem(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link")); 124 } 125 126 string fifthElementIconPath = "/Files/Templates/Designs/Swift/Assets/Images/DalgasFifthElements/"; 127 } 128 129 130 @{ 131 ClassList rowWidthClasslist = new ClassList("col-12"); 132 ClassList colClasslist = new ClassList("js-content-container content-container col-12 mb-4 dalgas-list-card"); 133 ClassList cardClasslist = new ClassList("pt-3"); 134 string imageAspectRatio = string.Empty; 135 string newsModolusClasslist = string.Empty; 136 string iconPath = "/Files/Templates/Designs/Swift/Assets/icons/"; 137 138 FileViewModel featuredListImage = new FileViewModel(); 139 List<FileViewModel> imageList = new List<FileViewModel>(); // List to hold images for the modal 140 IList<ItemViewModel> featureListItems = Model.Item?.GetItem("Content")?.GetItems("PageSelector") ?? Enumerable.Empty<ItemViewModel>().ToList(); 141 bool hasFeatureListItems = featureListItems.Any(); 142 143 int.TryParse(Dynamicweb.Context.Current.Request["PageSize"], out int pageSize); 144 string showAllUrl = $"{Pageview.SearchFriendlyUrl}?PageSize=999"; 145 146 bool showAll = Model.Item.GetItem("Content").GetBoolean("ShowAll"); 147 bool showFacets = Model.Item.GetItem("Content").GetBoolean("ShowFacets"); 148 bool showSearch = Model.Item.GetItem("Content").GetBoolean("ShowSearch"); 149 bool allowAllQueryItems = showFacets || showSearch; 150 showAll = allowAllQueryItems || showAll; 151 int numberOfItemsToShow = 999; 152 int rowsPerPage = 3; 153 154 155 List<FacetOption> selectedFacetOptions = new List<FacetOption>(); 156 if (hasFeatureListItems) 157 { 158 allowAllQueryItems = false; 159 } 160 161 QueryResult queryResult = new QueryResult(); 162 string contentType = Model.Item.GetItem("Content").GetString("FeatureOptions"); 163 int totaleCount = 0; 164 165 switch (contentType) 166 { 167 case "articles": 168 numberOfItemsToShow = 4; 169 numberOfItemsToShow = showAll ? numberOfItemsToShow * rowsPerPage : numberOfItemsToShow; 170 numberOfItemsToShow = pageSize > 0 ? pageSize : numberOfItemsToShow; 171 if (!hasFeatureListItems) 172 { 173 queryResult = showAll ? ContentRelationService.Instance.GetAllKnowledge(numberOfItemsToShow) : ContentRelationService.Instance.GetKnowledgeByCurrentPage(numberOfItemsToShow); 174 } 175 imageAspectRatio = "ratio-4x3"; 176 colClasslist.Add("col-md-3"); 177 break; 178 case "events": 179 numberOfItemsToShow = 3; 180 numberOfItemsToShow = showAll ? numberOfItemsToShow * rowsPerPage : numberOfItemsToShow; 181 numberOfItemsToShow = pageSize > 0 ? pageSize : numberOfItemsToShow; 182 if (!hasFeatureListItems) 183 { 184 queryResult = showAll ? ContentRelationService.Instance.GetAllEvents(numberOfItemsToShow) : ContentRelationService.Instance.GetEventsByCurrentPage(numberOfItemsToShow); 185 } 186 cardClasslist.Add("theme theme-mud p-4 pt-4 h-100"); 187 colClasslist.Add("col-md-4"); 188 break; 189 case "cases": 190 numberOfItemsToShow = 3; 191 numberOfItemsToShow = showAll ? numberOfItemsToShow * rowsPerPage : numberOfItemsToShow; 192 numberOfItemsToShow = pageSize > 0 ? pageSize : numberOfItemsToShow; 193 if (!hasFeatureListItems) 194 { 195 queryResult = showAll ? ContentRelationService.Instance.GetAllCaseCustomerStoriesByCurrentPage(numberOfItemsToShow) : ContentRelationService.Instance.GetCaseCustomerStoriesByCurrentPage(numberOfItemsToShow); 196 } 197 cardClasslist.Add("theme theme-mud p-4 pt-4 h-100"); 198 imageAspectRatio = "ratio-16x9"; 199 colClasslist.Add("col-md-4 d-flex flex-column"); 200 break; 201 case "news": 202 numberOfItemsToShow = 3; 203 numberOfItemsToShow = showAll ? numberOfItemsToShow * rowsPerPage : numberOfItemsToShow; 204 numberOfItemsToShow = pageSize > 0 ? pageSize : numberOfItemsToShow; 205 if (!hasFeatureListItems) 206 { 207 queryResult = showAll ? ContentRelationService.Instance.GetAllNews(numberOfItemsToShow) : ContentRelationService.Instance.GetNewsByCurrentPage(numberOfItemsToShow); 208 } 209 rowWidthClasslist.Add("col-lg-11 ms-auto"); 210 colClasslist.Add("mb-5"); 211 break; 212 case "projects": 213 numberOfItemsToShow = 3; 214 numberOfItemsToShow = showAll ? numberOfItemsToShow * rowsPerPage : numberOfItemsToShow; 215 numberOfItemsToShow = pageSize > 0 ? pageSize : numberOfItemsToShow; 216 if (!hasFeatureListItems) 217 { 218 queryResult = showAll ? ContentRelationService.Instance.GetAllCaseProjectsByCurrentPage(numberOfItemsToShow) : ContentRelationService.Instance.GetCaseProjectsByCurrentCase(numberOfItemsToShow); 219 } 220 cardClasslist.Add("theme theme-mud p-4 pt-4 h-100"); 221 imageAspectRatio = "ratio-16x9"; 222 colClasslist.Add("col-md-4 d-flex flex-column"); 223 break; 224 case "related-services": 225 numberOfItemsToShow = 6; 226 numberOfItemsToShow = showAll ? numberOfItemsToShow * rowsPerPage : numberOfItemsToShow; 227 numberOfItemsToShow = pageSize > 0 ? pageSize : numberOfItemsToShow; 228 if (!hasFeatureListItems) 229 { 230 queryResult = ContentRelationService.Instance.GetRelatedServicesByCurrentPage(numberOfItemsToShow); 231 } 232 cardClasslist.Add("theme theme-mud p-4 pt-5 h-100"); 233 imageAspectRatio = "ratio-16x9"; 234 colClasslist.Add("col-md-4 d-flex flex-column"); 235 break; 236 } 237 238 int pageNum = int.TryParse(Dynamicweb.Context.Current.Request["PageNum"], out int result) ? result : 1; 239 string searchTerm = Dynamicweb.Context.Current.Request["q"]; 240 241 List<string> pageIds = new List<string>(); 242 if (hasFeatureListItems) 243 { 244 pageIds.AddRange(featureListItems.Select(fli => fli.Fields.FirstOrDefault(f => f.Name == "Page")?.GetLink().PageId.ToString())); 245 } 246 else if (queryResult.Results.Any()) 247 { 248 pageIds.AddRange(queryResult.Results.Select(qrr => qrr["PageId"].ToString())); 249 } 250 251 string strTitle = string.Empty; 252 string strLink = string.Empty; 253 string strSummary = string.Empty; 254 string strImage = string.Empty; 255 string strType = string.Empty; 256 string badgeTheme = string.Empty; 257 DateTime strDate = new DateTime(); 258 } 259 260 @if ((queryResult.FacetGroups.Any() && allowAllQueryItems) || (queryResult.Results.Any() && !allowAllQueryItems) || featureListItems.Any()) 261 { 262 int loopCounter = 1; // Initialize loop counter for each group 263 264 <section id="section-@Model.Id" class="@sectionClassList" data-swift-gridrow> 265 <div class="container-xl"> 266 <div class="row justify-content-center"> 267 <div class="@rowWidthClasslist"> 268 <div class="js-dalgas-queryresult-container dalgas-queryresult-container" id="@($"query-result-{Model.Id}")"> 269 270 @if (hasLead || hasText || hasHeading) 271 { 272 <div class="js-content-container content-container col-12 mb-3"> 273 274 <div class="col-lg-6"> 275 <span> 276 @string.Join("", headings.Select(h => h.ToString())) 277 </span> 278 279 @if (!string.IsNullOrEmpty(lead)) 280 { 281 <p class="lead">@lead</p> 282 } 283 284 @text 285 286 </div> 287 </div> 288 } 289 290 @{ 291 ButtonViewModel btnViewResult = new ButtonViewModel 292 { 293 Text = Translate("View more"), 294 Type = ButtonType.Link, 295 DisplayType = ButtonDisplayType.Link 296 }; 297 298 if (showAll) 299 { 300 totaleCount = queryResult.TotalCount; 301 } 302 303 <a href="@showAllUrl" class="d-none">show all</a> 304 <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="@numberOfItemsToShow"> 305 <input type="hidden" name="LayoutTemplate" value="Designs/Swift/Swift_PageClean.cshtml"/> 306 <input type="hidden" name="PageNum" value="@pageNum"/> 307 <input type="hidden" name="PageSize" value="@numberOfItemsToShow"/> 308 @if (allowAllQueryItems) 309 { 310 if (showFacets) 311 { 312 foreach (FacetGroup facetGroup in queryResult.FacetGroups) 313 { 314 foreach (Facet facet in facetGroup.Facets) 315 { 316 string showClass = " show"; 317 string ariaExpanded = "true"; 318 string facetGroupId = Regex.Replace(Convert.ToBase64String(Guid.NewGuid().ToByteArray()), "[/+=]", string.Empty, RegexOptions.None, TimeSpan.FromMilliseconds(5000)); 319 320 321 if (facet.Options.Any()) 322 { 323 int selectedFacetsInGroup = 0; 324 325 foreach (FacetOption option in facet.Options) 326 { 327 if (option.Selected) 328 { 329 selectedFacetsInGroup++; 330 } 331 } 332 333 string label = selectedFacetsInGroup > 0 ? Translate(facet.Name) + "<span style=\"padding: 0.3em 0.6em\" class=\"badge badge ms-2\">" + selectedFacetsInGroup + "</span>" : Translate(facet.Name); 334 335 <div class="dropdown js-facets-selector"> 336 <button class="btn dropdown-toggle" type="button" id="FacetGroup_@facetGroupId" data-bs-toggle="dropdown" aria-expanded="false"> 337 @label 338 </button> 339 <div data-lenis-prevent class="dropdown-menu p-3" aria-labelledby="FacetGroup_@facetGroupId" style="min-width: 280px"> 340 @foreach (FacetOption facetOption in facet.Options) 341 { 342 string facetLabel = HtmlEncoder.HtmlEncode(facetOption.Label); 343 string disabled = facetOption.Count <= 0 ? "disabled" : string.Empty; 344 string selected = facetOption.Selected ? "checked" : string.Empty; 345 string facetValue = Uri.UnescapeDataString(facetOption.Value); 346 string optionValue = $"[{facetValue}]"; 347 348 facetLabel = facetLabel.ToLower() == "true" ? facetLabel = Translate("Yes") : facetLabel; 349 facetLabel = facetLabel.ToLower() == "false" ? facetLabel = Translate("No") : facetLabel; 350 351 <label class="form-check mt-1" @disabled> 352 <input type="checkbox" onclick="custom.QueryResult.update(event)" class="form-check-input" name="@facet.QueryParameter" value="@optionValue" data-filter-value="@facetLabel" @selected> 353 <span class="form-check-label d-flex align-items-center"> 354 <span class="flex-fill">@facetLabel </span> 355 <small class="opacity-85">@facetOption.Count</small> 356 </span> 357 </label> 358 359 if (facetOption.Selected) 360 { 361 FacetOption selectFacetOption = facetOption; 362 selectFacetOption.Name = facet.QueryParameter; 363 selectedFacetOptions.Add(selectFacetOption); 364 } 365 } 366 </div> 367 </div> 368 } 369 } 370 } 371 372 if (!string.IsNullOrEmpty(searchTerm)) 373 { 374 selectedFacetOptions.Add(new FacetOption() 375 { 376 Count = 1, 377 Label = searchTerm, 378 Name = "q", 379 Selected = true, 380 Value = searchTerm 381 }); 382 } 383 } 384 385 if (showSearch) 386 { 387 <div class="type-ahead-dropdown"> 388 <div class="position-relative suggest-form"> 389 <span class="position-absolute top-0 end-0 icon-3 px-3 d-flex align-items-center h-100 search-icon"> 390 @ReadFile(iconPath + "search.svg") 391 </span> 392 393 <input id="searchField_@Model.Id" 394 class="form-control custom-header-searchbar js-custom-facets-search-field pe-5 ps-3 js-" 395 type="search" 396 placeholder="@Translate("Search here")" 397 autocomplete="off" 398 maxlength="255" 399 name="q" 400 value="@searchTerm" 401 data-original="@searchTerm"> 402 403 <button type="button" 404 onclick="custom.QueryResult.clearSearchField(event)" 405 class="btn h-100 icon-2 reset-search" 406 aria-label="@Translate("Clear search")" 407 style="opacity: 0; position: absolute; top: 0; right: 0; visibility: hidden;"> 408 @ReadFile(iconPath + "x.svg") 409 </button> 410 </div> 411 </div> 412 <input type="submit" onclick="custom.QueryResult.update(event)" class="btn btn-primary" value="@Translate("Search", "Search")"> 413 } 414 } 415 </form> 416 417 if (showFacets && selectedFacetOptions.Any()) 418 { 419 <div class="js-dalgas-queryresult-selectedfacets-container dalgas-queryresult-selectedfacets-container mt-3"> 420 @foreach (FacetOption facetOption in selectedFacetOptions) 421 { 422 string facetValue = Uri.UnescapeDataString(facetOption.Value); 423 string optionValue = $"[{facetValue}]"; 424 <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> 425 <label class="badge theme border border-dark text-nowrap" for="Selected_@(Model.Id)_@facetOption.Value.Replace("#", string.Empty)"> 426 <span class="text-nowrap">@(facetOption.Label)</span> 427 <span class="icon-2 ms-2"> 428 @ReadFile(iconPath + "x.svg") 429 </span> 430 </label> 431 } 432 433 @if (selectedFacetOptions.Count >= 3) 434 { 435 <input class="visually-hidden" id="ClearAll" name="ClearAll" onclick="custom.QueryResult.clearAll(event)" type="checkbox" value="" title="" checked> 436 <label class="badge theme border border-dark dalgas-btn-clear-all" for="ClearAll"> 437 <span class="text-nowrap">@Translate("Clear all")</span> 438 <span class="icon-2 ms-2"> 439 @ReadFile(iconPath + "x.svg") 440 </span> 441 </label> 442 } 443 </div> 444 } 445 } 446 447 @if (pageIds.Any() == false) 448 { 449 <div class="mt-4">@Translate("Your search returned no results...")</div> 450 } 451 452 <div class="row @(!showAll ? "dalgas-featured-list-mobile-horizontal-scroll" : "mt-5") js-dalgas-queryresult-itemlist dalgas-queryresult-itemlist mt-2"> 453 @foreach (string pageId in pageIds) 454 { 455 if (!int.TryParse(pageId, out int intPageId)) 456 { 457 continue; 458 } 459 460 Page page = Services.Pages.GetPage(intPageId); 461 462 if (page == null) 463 { 464 continue; 465 } 466 467 strTitle = page.Item["Title"]?.ToString(); 468 strSummary = page.Item["Summary"]?.ToString(); 469 strImage = page.Item["CoverImage"] == null ? string.Empty : page.Item["CoverImage"]?.ToString(); 470 btnViewResult.Id = "pageId_" + page.ID; 471 btnViewResult.Url = "/Default.aspx?ID=" + page.ID; 472 if (page.Item["Date"] != null) 473 { 474 strDate = (DateTime)page.Item["Date"]; 475 } 476 477 int jpgIndex = strImage.IndexOf(".jpg", StringComparison.OrdinalIgnoreCase); 478 if (jpgIndex != -1) 479 { 480 strImage = strImage.Substring(0, jpgIndex + 4); 481 } 482 483 featuredListImage = ViewModelFactory.CreateFieldFileValueView(strImage); 484 imageList.Add(featuredListImage); 485 486 487 if (Model.Item.GetItem("Content").GetString("FeatureOptions") == "news") 488 { 489 badgeTheme = ""; 490 if (loopCounter % 6 == 2 || loopCounter % 6 == 4) 491 { 492 newsModolusClasslist = "col-lg-5"; 493 imageAspectRatio = "ratio-16x9"; 494 if (showAll) 495 { 496 imageAspectRatio = "ratio-3x4 ratio-custom-news"; 497 } 498 } 499 else 500 { 501 newsModolusClasslist = "col-lg-3"; 502 imageAspectRatio = "ratio-16x9 ratio-lg-3x4"; 503 if (showAll) 504 { 505 imageAspectRatio = "ratio-3x4"; 506 } 507 } 508 509 loopCounter++; 510 } 511 512 513 <div class="@colClasslist @newsModolusClasslist"> 514 515 <a href="@btnViewResult.Url"> 516 <figure class="ratio @imageAspectRatio mb-0"> 517 @RenderPartial("Components/Image.cshtml", featuredListImage ?? new FileViewModel()) 518 </figure> 519 </a> 520 521 <div class="@cardClasslist"> 522 @if (Model.Item.GetItem("Content").GetString("FeatureOptions") == "events") 523 { 524 badgeTheme = "mb-5"; 525 } 526 @if (Model.Item.GetItem("Content").GetString("FeatureOptions") == "events" || Model.Item.GetItem("Content").GetString("FeatureOptions") == "news") 527 { 528 if (strDate != null) 529 { 530 var date = strDate; 531 var formattedDate = date.ToString("d. MMMM yyyy"); 532 533 <div class="badge mb-3 @badgeTheme"> 534 @formattedDate 535 </div> 536 } 537 } 538 539 @if (Model.Item.GetItem("Content").GetString("FeatureOptions") == "cases" || Model.Item.GetItem("Content").GetString("FeatureOptions") == "projects") 540 { 541 var selectedValues = page.Item["Type"].ToString(); 542 var itemIdsFromSelectedValues = selectedValues.Split(',').Select(v => v.Trim()).ToList(); 543 544 foreach (var itemId in itemIdsFromSelectedValues) 545 { 546 if (!string.IsNullOrEmpty(itemId)) 547 { 548 var item = Services.Items.GetItem("HD_ArticleType", itemId); 549 string selectedTitle = !string.IsNullOrEmpty(item["Title"]?.ToString()) ? item["Title"].ToString() : ""; 550 <div class="badge mb-5 mr-3 @badgeTheme"> 551 @selectedTitle 552 </div> 553 } 554 } 555 } 556 557 558 <h4> 559 <a href="@btnViewResult.Url" class="text-decoration-none"> 560 @strTitle 561 </a> 562 </h4> 563 @if (strSummary != null) 564 { 565 <span class="small">@strSummary</span> 566 } 567 568 <div class="mt-2"> 569 @RenderModel(btnViewResult) 570 </div> 571 </div> 572 </div> 573 } 574 </div> 575 576 @if (showAll && totaleCount > numberOfItemsToShow) 577 { 578 <div class="row"> 579 <div class="col-12 text-center"> 580 <button onclick="custom.QueryResult.getNextPage(event)" class="btn btn-primary">@Translate("Vis flere")</button> 581 </div> 582 </div> 583 } 584 585 @if (hasButton) 586 { 587 <div class="js-content-container content-container col-12"> 588 589 <div class="d-flex flex-wrap gap-3"> 590 @foreach (ButtonViewModel button in buttons) 591 { 592 @button 593 } 594 </div> 595 596 </div> 597 } 598 599 </div> 600 </div> 601 </div> 602 </div> 603 @if (enableFifthElement) 604 { 605 <div class="fifth-element-section-container"> 606 <div class="fifth-element size-2 bottom-0 ob-50 right-0 @fifthElementTheme"> 607 @ReadFile(fifthElementIconPath + "sun.svg") 608 </div> 609 </div> 610 } 611 </section> 612 } 613 else 614 { 615 if (Pageview.IsVisualEditorMode) 616 { 617 <div class="container-xl alert alert-danger" role="alert"> 618 This <strong>@Model.Item.SystemName</strong> is empty 619 </div> 620 } 621 } 622

Sådan arbejder vi med naturbaserede løsninger

End-to-end løsninger til din ESG-strategi

Vores Naturbaserede Løsninger genopretter økosystemer og fremmer bæredygtighed gennem innovative handlinger. Vi udvikler skræddersyede projekter, der gavner miljøet og bidrager til din virksomheds ESG-strategi.

Med en komplet service - helt fra rådgivning til implementering og monitorering sikrer vi, at projekterne er baseret på nyeste viden og bedste praksis. Vi hjælper med at realisere ambitiøse økosystemgenopretningsprojekter, sikre compliance og skabe synlige resultater, der styrker jeres ESG-profil og brand.

Sådan arbejder vi med biodiversitet

En digital og databaseret tilgang

Hos Dalgas skaber vi levesteder, hvor forskellige arter kan trives og bidrage til et sundt og robust økosystem. Et mangfoldigt økosystem, der fremmer både naturens og menneskers trivsel. 

Vi kombinerer data, videnskabelig viden og praktisk erfaring for at sikre, at dit biodiversitetsprojekt har en positiv og varig effekt i naturen. Derfor er dokumentation og monitorering helt centrale elementer i vores arbejde. Og så kan du bruge dataene i din ESG-rapportering.

Vi skaber værdi for din branche

Dalgas løser alle typer grønne opgaver i en række forskellige brancher og sektorer på tværs af ydelser. Vi har erfaringen, maskinparken og referencerne, der sikrer dig den bedst mulige løsning.