…FORDI I FORTJENER SÆRLIGE KAFFEØJEBLIKKE!
Barista PRO bringer glæden ved kvalitetskaffe ind på arbejdspladsen. Du ved, den slags kaffe, der får skuldrene til at sænke sig, smilene til at bredes og samtalerne til at flyde.
Det er baristakvalitet, altid certificerede bønner og ren kaffelykke! En hel symfoni af smagsnuancer og ægte ristekunst - og det er uanset om I brygger espresso, cappuccino eller kræser for et filterbryg til mødet på en tirsdag… for hvorfor egentlig ikke?
I fortjener mere end bare et koffeinkick. I fortjener et mmm-øjeblik!
En symfoni af smagsnuancer
og ægte ristekunst!
Hver variant i Barista PRO-sortimentet har en unik smagsprofil, der er udviklet og specialristet til at udfolde sit fulde smagspotentiale på de professionelle og fuldautomatiske kaffemaskiner, I bruger i jeres hverdag. Naturligvis!
De spænder fra lysere mellemristninger til ekstra mørkristede bønner, så I kan gå på oplevelse i en hel symfoni af smagsnuancer og ægte ristekunst!
Fra frugtig honningmelon til chokolade, nødder, og helt over i mørke, røgede og ristede noter (jeps, de skal nok få jer op af kontorstolen - hvis ikke af intensitet, så af ren begejstring!)
… det sværeste er nok at vælge.
Men hos os må I heldigvis gerne have mere end én favorit!
Error executing template "Designs/Swift_custom/Paragraph/Swift_TextAndImage.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_0d5e191f33d24c81841ff3dc3215c8a4.<>c__DisplayClass4_0.<RenderButtons>b__0(TextWriter __razor_helper_writer) in D:\Solution\BKI Foods Swift - STAGING\Files\Templates\Designs\Swift_custom\Paragraph\Swift_TextAndImage.cshtml:line 289 at CompiledRazorTemplates.Dynamic.RazorEngine_0d5e191f33d24c81841ff3dc3215c8a4.Execute() in D:\Solution\BKI Foods Swift - STAGING\Files\Templates\Designs\Swift_custom\Paragraph\Swift_TextAndImage.cshtml:line 98 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.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 @using S_DW_BKI_Swift.CustomModules.Extensions 4 5 @{ 6 Dynamicweb.Frontend.LinkViewModel link1 = new Dynamicweb.Frontend.LinkViewModel(); 7 Dynamicweb.Frontend.LinkViewModel link2 = new Dynamicweb.Frontend.LinkViewModel(); 8 9 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : string.Empty; 10 string layout = Model.Item.GetRawValueString("Layout", "image-top"); 11 string contentPadding = Model.Item.GetRawValueString("ContentPadding", string.Empty); 12 string contentPaddingClass = string.Empty; 13 string gapClass = " gap-3"; 14 15 switch (contentPadding) 16 { 17 case "small": 18 contentPaddingClass = " p-3"; 19 gapClass = " gap-0"; 20 break; 21 case "large": 22 contentPaddingClass = " p-5"; 23 gapClass = " gap-0"; 24 break; 25 } 26 } 27 28 <div class="d-flex flex-column@(gapClass) h-100 position-relative@(theme) item_@Model.Item.SystemName.ToLower()"> 29 <a id="@Model.ID" class="user-select-none position-absolute top-0" style="scroll-margin-top:var(--header-height,150px)"></a> 30 @switch (layout) 31 { 32 case "image-top": 33 @RenderImage() 34 if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Lead")) || !string.IsNullOrEmpty(Model.Item.GetString("Text")) || link1 != null && !string.IsNullOrEmpty(link1.Url) || link2 != null && !string.IsNullOrEmpty(link2.Url)) 35 { 36 <div class="d-flex flex-column gap-3 h-100@(contentPaddingClass)"> 37 @{ 38 @RenderTitle() 39 @RenderLead() 40 @RenderText() 41 @RenderButtons(link1, link2) 42 } 43 </div> 44 } 45 break; 46 47 case "title-top": 48 if (!string.IsNullOrEmpty(Model.Item.GetString("Title"))) 49 { 50 <div class="@(contentPaddingClass)"> 51 @{ @RenderTitle() } 52 </div> 53 } 54 @RenderImage() 55 if (!string.IsNullOrEmpty(Model.Item.GetString("Lead")) || !string.IsNullOrEmpty(Model.Item.GetString("Text")) || link1 != null && !string.IsNullOrEmpty(link1.Url) || link2 != null && !string.IsNullOrEmpty(link2.Url)) 56 { 57 <div class="d-flex flex-column gap-3@(contentPaddingClass)"> 58 @{ 59 @RenderLead() 60 @RenderText() 61 @RenderButtons(link1, link2) 62 } 63 </div> 64 } 65 break; 66 67 case "title-lead-top": 68 if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Lead"))) 69 { 70 <div class="d-flex flex-column gap-3@(contentPaddingClass)"> 71 @{ 72 @RenderTitle() 73 @RenderLead() 74 } 75 </div> 76 } 77 @RenderImage() 78 if (!string.IsNullOrEmpty(Model.Item.GetString("Text")) || link1 != null && !string.IsNullOrEmpty(link1.Url) || link2 != null && !string.IsNullOrEmpty(link2.Url)) 79 { 80 <div class="d-flex flex-column gap-3@(contentPaddingClass)"> 81 @{ 82 @RenderText() 83 @RenderButtons(link1, link2) 84 } 85 </div> 86 } 87 break; 88 89 case "text-center": 90 @RenderImage() 91 if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Lead")) || !string.IsNullOrEmpty(Model.Item.GetString("Text")) || link1 != null && !string.IsNullOrEmpty(link1.Url) || link2 != null && !string.IsNullOrEmpty(link2.Url)) 92 { 93 <div class="d-flex flex-column gap-3 align-items-center text-center h-100@(contentPaddingClass)"> 94 @{ 95 @RenderTitle() 96 @RenderLead() 97 @RenderText() 98 @RenderButtons(link1, link2) 99 } 100 </div> 101 } 102 break; 103 104 case "image-bottom": 105 if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Lead")) || !string.IsNullOrEmpty(Model.Item.GetString("Text")) || link1 != null && !string.IsNullOrEmpty(link1.Url) || link2 != null && !string.IsNullOrEmpty(link2.Url)) 106 { 107 <div class="d-flex flex-column gap-3@(contentPaddingClass)"> 108 @{ 109 @RenderTitle() 110 @RenderLead() 111 @RenderText() 112 @RenderButtons(link1, link2) 113 } 114 </div> 115 } 116 @RenderImage() 117 break; 118 } 119 </div> 120 121 @helper RenderTitle() 122 { 123 bool hideTitle = Model.Item?.GetBoolean("HideTitle") ?? false; 124 string title = !hideTitle ? Model.Item.GetString("Title", string.Empty) : string.Empty; 125 126 if (!string.IsNullOrEmpty(title)) 127 { 128 string maxWidth = Model.Item.GetRawValueString("TextReadability", string.Empty) == "max-width-on" ? " mw-75ch" : string.Empty; 129 string titleFontSize = Model.Item.GetString("TitleFontSize", "h2"); 130 string titleColor = Model.Item.GetString("TitleColor", "text-inherit"); 131 string titleOpacity = Model.Item.GetString("TitleOpacity", "opacity-100"); 132 133 string headingLevel = Model.Item.GetString("HeadingLevel", "h2"); 134 string headingLevelStart = $"<{headingLevel} class=\"{titleFontSize} {titleColor} {titleOpacity}{maxWidth} m-0\">"; 135 string headingLevelStop = $"</{headingLevel}>"; 136 137 @headingLevelStart 138 @title 139 @headingLevelStop 140 } 141 } 142 143 @helper RenderLead() 144 { 145 if (!string.IsNullOrEmpty(Model.Item.GetString("Lead"))) 146 { 147 string subtitleColor = Model.Item.GetString("SubtitleColor", "text-inherit"); 148 string subtitleOpacity = Model.Item.GetString("SubtitleOpacity", "opacity-100"); 149 string maxWidth = Model.Item.GetRawValueString("TextReadability", string.Empty) == "max-width-on" ? " mw-75ch" : string.Empty; 150 string subtitleFontSize = Model.Item.GetRawValueString("SubtitleFontSize", "fs-5"); 151 152 <p class="m-0 lead @(subtitleFontSize) @(subtitleColor) @(subtitleOpacity)@(maxWidth)"> 153 @Model.Item.GetString("Lead") 154 </p> 155 } 156 } 157 158 @helper RenderText() 159 { 160 if (!string.IsNullOrEmpty(Model.Item.GetString("Text"))) 161 { 162 string maxWidth = Model.Item.GetRawValueString("TextReadability", string.Empty) == "max-width-on" ? " mw-75ch" : string.Empty; 163 string textColor = Model.Item.GetString("TextColor", "text-inherit"); 164 string textOpacity = Model.Item.GetString("TextOpacity", "opacity-100"); 165 166 <div class="mb-0-last-child @textColor @(textOpacity)@(maxWidth)"> 167 @Model.Item.GetString("Text") 168 </div> 169 } 170 } 171 172 @helper RenderImage() 173 { 174 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 175 { 176 int xPos = Model.Item?.GetFile("Image")?.FocalPositionFromLeft ?? 50; 177 int yPos = Model.Item?.GetFile("Image")?.FocalPositionFromTop ?? 50; 178 string ratioCssClass = Model.Item.GetRawValueString("ImageAspectRatio") != "0" && Model.Item.GetRawValueString("ImageAspectRatio") != "" ? "ratio" : string.Empty; 179 string ratioVariable = Model.Item.GetRawValueString("ImageAspectRatio") != "0" && Model.Item.GetRawValueString("ImageAspectRatio") != "" ? "style=\"--bs-aspect-ratio: " + Model.Item.GetRawValueString("ImageAspectRatio") + "\"" : string.Empty; 180 string imageAspect = Model.Item.GetRawValueString("ImageAspectRatio", string.Empty); 181 string ImageObjectFit = Model.Item.GetRawValueString("ImageObjectFit", string.Empty); 182 ImageObjectFit = ImageObjectFit == "cover" ? string.Empty : ImageObjectFit; 183 ImageObjectFit = ImageObjectFit == "contain" ? "object-fit:contain" : ImageObjectFit; 184 185 var parms = new Dictionary<string, object>(); 186 parms.Add("loading", "lazy"); 187 parms.Add("style", ImageObjectFit); 188 parms.Add("alt", Model.Item.GetString("ImageAltText")); 189 parms.Add("columns", Model.GridRowColumnCount); 190 191 if (Model.Item.GetRawValueString("ImageAspectRatio") == "0") 192 { 193 parms.Add("fullwidth", true); 194 parms.Add("cssClass", "img-fluid"); 195 196 if (Model.Item.GetString("Layout") == "text-center") 197 { 198 <figure class="d-flex flex-column align-items-center"> 199 @RenderPartial("Components/Image.cshtml", Model.Item.GetFile("Image") ?? new Dynamicweb.Frontend.FileViewModel(), parms) 200 </figure> 201 } 202 else 203 { 204 <figure> 205 @RenderPartial("Components/Image.cshtml", Model.Item.GetFile("Image") ?? new Dynamicweb.Frontend.FileViewModel(), parms) 206 </figure> 207 } 208 } 209 else 210 { 211 <figure class="mb-0 @ratioCssClass" @ratioVariable> 212 @RenderPartial("Components/Image.cshtml", Model.Item.GetFile("Image") ?? new Dynamicweb.Frontend.FileViewModel(), parms) 213 </figure> 214 215 } 216 } 217 } 218 219 @helper RenderButtons(Dynamicweb.Frontend.LinkViewModel link1, Dynamicweb.Frontend.LinkViewModel link2) 220 { 221 int shopId = Pageview.GetProductPageId(); 222 string linkType = Model.Item.GetRawValueString("LinkType", "page"); 223 string linkType2 = Model.Item.GetRawValueString("LinkType2", "page2"); 224 225 if (linkType == "page" && Model.Item.GetLink("ButtonLink") != null) 226 { 227 link1 = Model.Item.GetLink("ButtonLink"); 228 } 229 230 if (linkType2 == "page2" && Model.Item.GetLink("ButtonLink2") != null) 231 { 232 link2 = Model.Item.GetLink("ButtonLink2"); 233 } 234 235 if (linkType == "product-group") 236 { 237 IList<ProductGroupViewModel> selectedGroups = Model.Item.GetValue<IList<ProductGroupViewModel>>("ProductGroupLink"); 238 IList<string> groupIds = new List<string> { }; 239 240 if (selectedGroups != null) 241 { 242 foreach (var fromGroup in selectedGroups) 243 { 244 groupIds.Add(fromGroup.Id); 245 } 246 } 247 248 link1 = new Dynamicweb.Frontend.LinkViewModel() 249 { 250 Url = "/Default.aspx?ID=" + shopId + "&GroupID=" + string.Join(",", groupIds).Trim(), 251 IsExternal = false 252 }; 253 } 254 255 if (linkType2 == "product-group2") 256 { 257 IList<ProductGroupViewModel> selectedGroups = Model.Item.GetValue<IList<ProductGroupViewModel>>("ProductGroupLink2"); 258 IList<string> groupIds = new List<string> { }; 259 260 if (selectedGroups != null) 261 { 262 foreach (var fromGroup in selectedGroups) 263 { 264 groupIds.Add(fromGroup.Id); 265 } 266 } 267 268 link2 = new Dynamicweb.Frontend.LinkViewModel() 269 { 270 Url = "/Default.aspx?ID=" + shopId + "&GroupID=" + string.Join(",", groupIds).Trim(), 271 IsExternal = false 272 }; 273 } 274 275 if (linkType == "product") 276 { 277 ProductListViewModel products = Model.Item.GetValue<ProductListViewModel>("ProductLink"); 278 IList<string> productIds = new List<string> { }; 279 280 if (products != null) 281 { 282 foreach (var product in products.Products) 283 { 284 productIds.Add(product.Id); 285 } 286 } 287 288 string productParameter = productIds.Count == 1 ? "ProductID" : "MainProductId"; 289 string productLink = products.Products.FirstOrDefault().GetProductLink(shopId, false); 290 productLink = productIds.Count != 1 ? "/Default.aspx?ID=" + shopId + "&" + productParameter + "=" + string.Join(",", productIds).Trim() : productLink; 291 292 link1 = new Dynamicweb.Frontend.LinkViewModel() 293 { 294 Url = productLink, 295 IsExternal = false 296 }; 297 } 298 299 if (linkType2 == "product2") 300 { 301 ProductListViewModel products = Model.Item.GetValue<ProductListViewModel>("ProductLink2"); 302 IList<string> productIds = new List<string> { }; 303 304 if (products != null) 305 { 306 foreach (var product in products.Products) 307 { 308 productIds.Add(product.Id); 309 } 310 } 311 312 string productParameter = productIds.Count == 1 ? "ProductID" : "MainProductId"; 313 string productLink = products.Products.FirstOrDefault().GetProductLink(shopId, false); 314 productLink = productIds.Count != 1 ? "/Default.aspx?ID=" + shopId + "&" + productParameter + "=" + string.Join(",", productIds).Trim() : productLink; 315 316 link2 = new Dynamicweb.Frontend.LinkViewModel() 317 { 318 Url = productLink, 319 IsExternal = false 320 }; 321 } 322 323 if (link1 != null && !string.IsNullOrEmpty(link1.Url) || link2 != null && !string.IsNullOrEmpty(link2.Url)) 324 { 325 string buttonStyle = Model.Item.GetRawValueString("ButtonStyle", "primary"); 326 buttonStyle = buttonStyle == "primary" ? " btn-primary" : buttonStyle; 327 buttonStyle = buttonStyle == "secondary" ? " btn-secondary" : buttonStyle; 328 buttonStyle = buttonStyle == "link" ? " btn-link" : buttonStyle; 329 string buttonStyle2 = Model.Item.GetRawValueString("ButtonStyle2", "secondary"); 330 buttonStyle2 = buttonStyle2 == "primary" ? " btn-primary" : buttonStyle2; 331 buttonStyle2 = buttonStyle2 == "secondary" ? " btn-secondary" : buttonStyle2; 332 buttonStyle2 = buttonStyle2 == "link" ? " btn-link" : buttonStyle2; 333 string target1 = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link1.IsExternal ? "target=\"_blank\"" : string.Empty; 334 string target2 = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link2.IsExternal ? "target=\"_blank\"" : string.Empty; 335 string rel1 = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link1.IsExternal ? "rel=\"noopener\"" : string.Empty; 336 string rel2 = Pageview.AreaSettings.GetBoolean("OpenLinksInNewTab") && link2.IsExternal ? "rel=\"noopener\"" : string.Empty; 337 string buttonLabel = Model.Item.GetString("ButtonLabel", string.Empty); 338 string buttonLabel2 = Model.Item.GetString("ButtonLabel2", string.Empty); 339 string stretchedLink = Model.Item.GetRawValueString("StretchedLink", "column-not-clickable"); 340 string stretchedLink2 = Model.Item.GetRawValueString("StretchedLink2", "column-not-clickable"); 341 string stretchedLinkClass = stretchedLink == "column-clickable" && string.IsNullOrEmpty(link2.Url) && string.IsNullOrEmpty(buttonLabel2) ? " stretched-link" : string.Empty; 342 string stretchedLinkClass2 = stretchedLink2 == "column-clickable" && string.IsNullOrEmpty(link1.Url) && string.IsNullOrEmpty(buttonLabel) ? " stretched-link" : string.Empty; 343 string buttonSize = Model.Item.GetRawValueString("ButtonSize", "regular"); 344 buttonSize = buttonSize == "small" ? " btn-sm" : buttonSize; 345 buttonSize = buttonSize == "regular" ? string.Empty : buttonSize; 346 buttonSize = buttonSize == "large" ? " btn-lg" : buttonSize; 347 string alignmentClass = string.Empty; 348 349 if (Model.Item.GetString("Layout") == "text-center") 350 { 351 alignmentClass = " justify-content-center"; 352 } 353 354 <div class="d-flex flex-wrap gap-3@(alignmentClass)"> 355 356 @if (link1 != null && !string.IsNullOrEmpty(link1.Url)) 357 { 358 if (!string.IsNullOrEmpty(buttonLabel)) 359 { 360 <a href="@link1.Url" @target1 @rel1 class="text-nowrap btn@(buttonStyle)@(buttonSize)@(stretchedLinkClass)">@buttonLabel</a> 361 } 362 else 363 { 364 <a href="@link1.Url" @target1 @rel1 class="@(stretchedLinkClass)"> 365 <span class="visually-hidden">@Model.Item.GetString("Title")</span> 366 </a> 367 } 368 } 369 370 @if (link2 != null && !string.IsNullOrEmpty(link2.Url)) 371 { 372 if (!string.IsNullOrEmpty(buttonLabel2)) 373 { 374 <a href="@link2.Url" @target2 @rel2 class="text-nowrap btn@(buttonStyle2)@(buttonSize)@(stretchedLinkClass2)">@buttonLabel2</a> 375 } 376 else 377 { 378 <a href="@link2.Url" @target2 @rel2 class="@(stretchedLinkClass)"> 379 <span class="visually-hidden">@Model.Item.GetString("Title")</span> 380 </a> 381 } 382 } 383 </div> 384 } 385 } 386