Alle artikler om skove og træer

Vi formidler om og for naturen, så du kan dykke ned i faglige, politiske eller jordnære emner fra indland og udland. Her på siden finder du en oversigt over alle artikler fra Dalgas inden for skove og træer.

Error executing template "/Designs/Swift/Grid/Page/RowTemplates/Dalgas_KnowledgeCategories.cshtml"
System.ArgumentException: Illegal characters in path.
   at System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
   at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
   at System.IO.FileInfo.Init(String fileName, Boolean checkHost)
   at Dynamicweb.Ecommerce.ProductCatalog.ViewEngine.CreateFieldFileValueView(String path)
   at CompiledRazorTemplates.Dynamic.RazorEngine_6d9a0528dbe342119fa8b8371cba6cbb.Execute() in D:\solutions\dalgas-production\Files\Templates\Designs\Swift\Grid\Page\RowTemplates\Dalgas_KnowledgeCategories.cshtml:line 187
   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 @using System 2 @using System.Collections.Generic 3 @using System.Linq 4 @using Dynamicweb.Content 5 @using Dynamicweb.Frontend 6 @using Dalgas.Custom.Services 7 @using Dalgas.Custom.ViewModels.UI 8 @using Dynamicweb.Core.Json 9 @using Dynamicweb.Ecommerce.ProductCatalog 10 @using Dynamicweb.Indexing.Querying 11 @using Dynamicweb.Indexing.Querying.Faceting 12 @using Dynamicweb.Indexing.Querying.Sorting 13 @using Dynamicweb.Modules 14 @using Page = Dynamicweb.Content.Page 15 @using ParagraphService = Dalgas.Custom.Services.ParagraphService 16 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.GridRowViewModel> 17 18 @using System 19 @using System.Collections.Generic 20 @using System.Linq 21 @using Dalgas.Custom.ViewModels.UI 22 @using Dynamicweb.Content 23 @using Dynamicweb.Ecommerce.ProductCatalog 24 @using Dynamicweb.Frontend 25 @using ParagraphService = Dalgas.Custom.Services.ParagraphService 26 27 @*TODO: Move these functions onto the model *@ 28 29 @functions 30 { 31 32 public string GetSectionClassList(GridRowViewModel model, string overwriteTheme = "") 33 { 34 var returnValues = new List<string> 35 { 36 $"item_{model.Item.SystemName.ToLower()}" 37 }; 38 39 if (Services.Grids.GetGridRowById(model.Id).Sort == 1) 40 { 41 returnValues.Add("dalgas-section-first-on-page"); 42 } 43 44 var sectionBackgroundTheme = model.Item.GetItem("ColorScheme")?.GetString("ColorScheme") ?? string.Empty; 45 46 if (!string.IsNullOrEmpty(overwriteTheme)) 47 { 48 sectionBackgroundTheme = overwriteTheme; 49 } 50 51 // Add theme class if it exists 52 if (!string.IsNullOrWhiteSpace(sectionBackgroundTheme)) 53 { 54 if (sectionBackgroundTheme.Contains("default")) 55 { 56 returnValues.Add("theme theme-light"); 57 } 58 else 59 { 60 returnValues.Add($"theme {sectionBackgroundTheme.Replace(" ", "").Trim().ToLower()}"); 61 } 62 } 63 64 // Determine if top padding should be removed 65 66 string removeTopPadding = model.Item.GetItem("ColorScheme")?.GetString("RemoveTopPadding"); 67 68 returnValues.Add("pb-6"); 69 if (removeTopPadding != "enable") 70 { 71 returnValues.Add("pt-6"); 72 } 73 74 return string.Join(" ", returnValues); 75 } 76 77 } 78 79 80 @{ 81 IEnumerable<HeadingViewModel> headings = ParagraphService.Instance.GetHeadingsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Headings")); 82 string text = Model.Item.GetItem("Paragraph_Text")?.GetString("Text"); 83 string lead = Model.Item.GetItem("Paragraph_Text")?.GetString("Lead"); 84 IEnumerable<ButtonViewModel> buttons = ParagraphService.Instance.GetButtonsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Buttons")); 85 86 bool hasImage = Model.Item.GetItem("Paragraph_Image")?.GetFile("Image") != null; 87 bool hasText = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Text")); 88 bool hasLead = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Lead")); 89 bool hasHeading = headings.Any(); 90 bool hasButton = buttons.Any(); 91 92 var theme = Model.Item.GetItem("ColorScheme")?.GetString("ColorScheme"); 93 var fifthElementTheme = "fifth-element-color-" + Model.Item?.GetItem("ColorScheme")?.GetString("FifthElementColor"); 94 95 var sectionClassList = GetSectionClassList(Model); 96 97 var image = string.Empty; 98 var imageParameters = new Dictionary<string, object>(); 99 100 string layout = string.Empty; 101 Boolean enableFifthElement = false; 102 if (Model?.Item != null) 103 { 104 var paragraphLayout = Model.Item.GetItem("Paragraph_Layout"); 105 106 if (paragraphLayout != null) 107 { 108 layout = paragraphLayout.GetString("Layout"); 109 110 enableFifthElement = !string.IsNullOrEmpty(paragraphLayout.GetString("Layout_FifthElement")); 111 } 112 } 113 114 if (!string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Image")?.GetFile("Image")?.Path)) 115 { 116 image = Model.Item.GetItem("Paragraph_Image").GetFile("Image").Path; 117 imageParameters.Add("alt", Model.Item.GetItem("Paragraph_Image")?.GetString("ImageAltText")); 118 int xPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromLeft ?? 50; 119 int yPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromTop ?? 50; 120 string cssPosition = $"{xPos}% {yPos}%"; 121 imageParameters.Add("style", "object-position:" + cssPosition); 122 } 123 124 LinkViewModel imageLink = new LinkViewModel(); 125 if (Model.Item?.GetItem("Paragraph_Image")?.GetItem("Link") != null && !string.IsNullOrEmpty(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link").GetString("ButtonLink"))) 126 { 127 imageLink = ParagraphService.Instance.GetLinkByItem(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link")); 128 } 129 130 string fifthElementIconPath = "/Files/Templates/Designs/Swift/Assets/Images/DalgasFifthElements/"; 131 } 132 133 134 @{ 135 var knowledgeCategoriesLink = Pageview.AreaSettings.GetLink("KnowledgeCategories"); 136 137 int loopCounter = 1; 138 } 139 140 <section id="section-@Model.Id" class="@sectionClassList" data-swift-gridrow> 141 <div class=""> 142 143 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) && knowledgeCategoriesLink != null) 144 { 145 int knowledgeCategoriesPageId = knowledgeCategoriesLink.PageId; 146 IEnumerable<Page> categoryPages = Services.Pages.GetPagesByParentID(knowledgeCategoriesPageId); 147 IEnumerable<Page> currentCategoryPage = Services.Pages.GetPagesByParentID(PageView.Current().Page.ID); 148 149 bool isCurrentPageInCategoryPages = categoryPages.Any(cp => cp.ID == PageView.Current().Page.ID); 150 151 <div class="container-xl"> 152 <div class="row justify-content-center"> 153 <div class="col-12"> 154 <div class="row"> 155 <div class="col-12"> 156 157 <div class="theme "> 158 159 <div class="row js-dalgas-knowledgecategories dalgas-knowledgecategories"> 160 <div class="mb-4"> 161 <h2 class="h4">@Model.Item.GetString("Title")</h2> 162 </div> 163 164 @if (isCurrentPageInCategoryPages) 165 { 166 string strImage = string.Empty; 167 string strTitle = string.Empty; 168 string strSummary = string.Empty; 169 FileViewModel featuredListImage = new FileViewModel(); 170 ButtonViewModel btnViewResult = new ButtonViewModel 171 { 172 Text = Translate("View more"), 173 Type = ButtonType.Link, 174 DisplayType = ButtonDisplayType.Link 175 }; 176 <div class="row"> 177 @foreach (var categoryPage in currentCategoryPage.Where(cp => cp.Active)) 178 { 179 180 btnViewResult.Id = "pageId_" + categoryPage.ID; 181 btnViewResult.Url = "/Default.aspx?ID=" + categoryPage.ID; 182 183 strSummary = categoryPage.Item["Summary"]?.ToString(); 184 strImage = categoryPage.Item["CoverImage"] == null ? string.Empty : categoryPage.Item["CoverImage"]?.ToString(); 185 strTitle = categoryPage.Item["Title"]?.ToString(); 186 187 featuredListImage = ViewModelFactory.CreateFieldFileValueView(strImage); 188 189 <div class="js-content-container content-container col-12 mb-4 dalgas-list-card col-md-3 "> 190 <a href="@btnViewResult.Url"> 191 <figure class="ratio ratio-4x3 mb-0"> 192 @RenderPartial("Components/Image.cshtml", featuredListImage ?? new FileViewModel()) 193 </figure> 194 </a> 195 <div class="pt-3"> 196 <h4> 197 <a href="@btnViewResult.Url" class="text-decoration-none"> 198 @strTitle 199 </a> 200 </h4> 201 @strSummary 202 <div class="mt-2"> 203 @RenderModel(btnViewResult) 204 </div> 205 </div> 206 </div> 207 } 208 </div> 209 } 210 else 211 { 212 <div class=""> 213 @foreach (var categoryPage in categoryPages) 214 { 215 string categoryPageImage = (categoryPage.Item["CoverImage"] != null ? categoryPage.Item["CoverImage"] : categoryPage.TopImage)?.ToString(); 216 string border = "border-top"; 217 218 if (loopCounter == categoryPages.Count()) 219 { 220 border = "border-top border-bottom"; 221 } 222 223 <div class="d-flex flex-column flex-md-row mb-4 mb-md-0 dalgas-each-knowledgecategory"> 224 <div class="col-12 col-md-3"> 225 @if (!string.IsNullOrEmpty(categoryPageImage)) 226 { 227 <a href="/Default.aspx?ID=@categoryPage.ID"> 228 <figure class="ratio ratio-21x9 mb-0"> 229 <img src="/Admin/Public/GetImage.ashx?image=@(categoryPageImage)&width=600&crop=0&format=webp&compression=75" class="p-img" alt="@categoryPage.GetDisplayName()" loading="lazy" decoding="async" style="object-fit: cover;"> 230 </figure> 231 </a> 232 } 233 else 234 { 235 <figure class="ratio ratio-21x9 mb-0"> 236 237 </figure> 238 } 239 </div> 240 <div class="col-12 col-md-6 d-flex align-items-md-end pt-3 ps-md-3 @border"> 241 <a class="h3 mb-3 text-accent text-decoration-none" href="/Default.aspx?ID=@categoryPage.ID">@categoryPage.GetDisplayName()</a> 242 </div> 243 <div class="col-12 col-md-3 d-flex align-items-md-end justify-content-md-end @border"> 244 <a class="btn btn-link pt-0 mb-2" href="/Default.aspx?ID=@categoryPage.ID"> 245 @Translate("Se artikler og ressourcer") 246 </a> 247 </div> 248 </div> 249 loopCounter++; 250 } 251 </div> 252 } 253 </div > 254 255 </div> 256 257 </div> 258 </div> 259 </div> 260 </div> 261 </div> 262 } 263 else 264 { 265 if (Pageview.IsVisualEditorMode) 266 { 267 <div class="container-xl alert alert-danger" role="alert"> 268 This <strong>@Model.Item.SystemName</strong> is empty 269 </div> 270 <div class="container-xl alert alert-danger" role="alert"> 271 Check <strong>KnowledgeCategories</strong> in website settings, for it to know which categories to show. 272 </div> 273 } 274 } 275 </div> 276 </section > 277

Hedeselskabet – med naturen som partner

Dalgas er en del af Hedeselskabet – grundlagt i 1866 og stadig i vækst. Hedeselskabet er en forening af mennesker, der arbejder for en bæredygtig fremtid. Og som har den nødvendige viden og erfaring til at gå forrest.

Hedeselskabet støtter

Arbejdet for en bæredygtig fremtid kræver ressourcer. Hedeselskabet tager del i udviklingen af naturen og miljøet, og vi tager ansvar. Derfor uddeler vi midler til relevante udviklingsprojekter og til medlemsdrevne projekter, ligesom vi uddeler legater. Til gavn for os alle – nu og i fremtiden.

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.

No products in cart