Medico

Single Lumen Tubes

Single-lumen tubes can be used in various medical device applications, for example as suction tubes, infusion tubes and protection tubes.

NOT FINDING WHAT YOU ARE LOOKING FOR?

We specialise in customised plastic profiling solutions for Medico 

Learn more about the endless possibilities

Error executing template "Designs/primo/eCom/Productlist/espresso.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_ed6a5a66008e43e0b525af007f0ecb53.Execute() in E:\Dynamicweb.NET\Solutions\primo.espresso4.dk\files\Templates\Designs\primo\eCom\Productlist\espresso.cshtml:line 258
   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.b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module 2 @using Co3.Espresso.Base.Extensions 3 @using Co3.Espresso.Website.Models.FrontEnd 4 @using Co3.Espresso.Website.Services 5 @using Dynamicweb.Content 6 @using Dynamicweb.Content.Items.Metadata 7 @using Dynamicweb.Content.Items 8 @using Dynamicweb.Frontend 9 @using System.Web 10 @using System.Web.Util 11 @using Co3.Espresso.Website.Models.FrontEnd.Paragraphs 12 @using Dynamicweb.Ecommerce.Products 13 @using ProductService = Co3.Espresso.Website.Services.ProductService 14 15 @using System.Globalization 16 @using Co3.Espresso.Base.Extensions 17 @using Co3.Espresso.Website.Models.FrontEnd 18 @using Co3.Espresso.Website.Services 19 @using Dynamicweb.Content 20 @using Dynamicweb.Frontend 21 @using Dynamicweb.Rendering 22 @using EcomContext = Dynamicweb.Ecommerce.Common.Context 23 24 @functions { 25 26 public string getCountryCodeFromArea( Area area ) 27 { 28 RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID ); 29 return regionInfo.TwoLetterISORegionName; 30 } 31 32 } 33 34 @helper ProductDescription( string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null ) 35 { 36 if ( string.IsNullOrEmpty( content ) == false ) 37 { 38 ClassList headingClassList = new ClassList(); 39 headingClassList.AddClasses( "col-12" ); 40 ClassList contentClassList = new ClassList(); 41 contentClassList.AddClasses( "col-12" ); 42 43 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses ) 44 45 if ( string.IsNullOrEmpty( heading ) == false ) 46 { 47 <div class="@headingClassList"> 48 <h2>@heading</h2> 49 </div> 50 } 51 <div class="@contentClassList"> 52 @content 53 </div> 54 55 @sectionEnd() 56 } 57 } 58 59 60 @helper ProductVideo( string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null ) 61 { 62 if ( string.IsNullOrEmpty( videoURL ) == false ) 63 { 64 ClassList headingClassList = new ClassList(); 65 headingClassList.AddClasses( "col-12" ); 66 ClassList contentClassList = new ClassList(); 67 contentClassList.AddClasses( "col-12" ); 68 69 70 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses ) 71 72 if ( string.IsNullOrEmpty( heading ) == false ) 73 { 74 <div class="@headingClassList"> 75 <h2>@heading</h2> 76 </div> 77 } 78 79 <div class="@contentClassList"> 80 <div class="embed-responsive embed-responsive-16by9 mb-2"> 81 <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> 82 </div> 83 </div> 84 @sectionEnd() 85 } 86 } 87 88 @helper ProductRelatedProducts( string sectionClasses = "e-section", string contentClasses = null, string heading = null, 89 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null ) 90 { 91 if ( productLoop != null && productLoop.Any() == true ) 92 { 93 ClassList headingClassList = new ClassList(); 94 headingClassList.AddClasses( "col-12" ); 95 ClassList contentClassList = new ClassList(); 96 contentClassList.AddClasses( "col-12" ); 97 98 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses ) 99 100 if ( string.IsNullOrEmpty( heading ) == false ) 101 { 102 <div class="@headingClassList"> 103 <h2 class="text-center">@heading</h2> 104 </div> 105 } 106 107 108 <div class="@contentClassList"> 109 <div class="e-products mb-2"> 110 <div class="row"> 111 @{ 112 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses(); 113 } 114 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop ) 115 { 116 @ProductlistItem( product, productlistItemClassList ) 117 } 118 </div> 119 </div> 120 </div> 121 122 @sectionEnd() 123 } 124 } 125 126 @helper ProductlistItem( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null ) 127 { 128 if ( product != null ) 129 { 130 dynamic productData = new 131 { 132 id = product.GetString( "Ecom:Product.ID" ), 133 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ) ), 134 number = product.GetString( "Ecom:Product.Number" ), 135 name = product.GetString( "Ecom:Product.Name" ), 136 imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageLarge.Clean" ), 240, 240, 5 ), 137 price = ProductService.Instance.GetPriceFormatted( product.GetDouble( "Ecom:Product.Price.Price" ) ), 138 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ), 139 stock = new 140 { 141 id = product.GetString( "Ecom:Product:Stock.ID" ), 142 quantity = product.GetString( "Ecom:Product.Stock" ), 143 text = product.GetString( "Ecom:Product:Stock.Text" ), 144 delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" ) 145 } 146 }; 147 148 <div class="@productlistItemClassList"> 149 <div class="border-0 e-products-item js-e-products-item"> 150 <div class="e-products-item-container"> 151 <div class="e-products-item-image-container"> 152 <a class="e-products-item-image-wrapper" href="@productData.url"> 153 <img src="@productData.imageLarge" alt="" class="e-products-item-image"> 154 </a> 155 </div> 156 <div class="e-products-item-text-container text-center"> 157 <h3 class="e-products-item-name mb-0"> 158 <a href="@productData.url"> 159 @productData.name 160 </a> 161 </h3> 162 @if ( string.IsNullOrEmpty( productData.descriptionShortExtra01 ) == false ) 163 { 164 <p class="e-products-item-text mb-0"> 165 <a href="@productData.url"> 166 @productData.descriptionShortExtra01 167 </a> 168 </p> 169 } 170 <p class="e-products-item-text mb-0"> 171 <small class="e-products-item-price small text-muted"> 172 <a href="@productData.url"> 173 @productData.price 174 </a> 175 </small> 176 </p> 177 </div> 178 </div> 179 </div> 180 </div> 181 } 182 } 183 184 185 @helper sectionStart( string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false ) 186 { 187 ClassList sectionClassList = new ClassList(); 188 sectionClassList.AddClasses( sectionClasses ); 189 ClassList contentClassList; 190 string collapseId = Guid.NewGuid().ToString( "N" ); 191 ClassList collapseToggleClassList = new ClassList(); 192 string collapseToggleTextExpand = "Se mere"; 193 string collapseToggleTextCollapse = "Se mindre"; 194 if ( contentClasses == null ) 195 { 196 contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item ); 197 } 198 else 199 { 200 contentClassList = new ClassList(); 201 contentClassList.AddClasses( contentClasses ); 202 } 203 if ( sectionCollapse == true ) 204 { 205 sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" ); 206 collapseToggleClassList.AddClasses( contentClasses ); 207 collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" ); 208 contentClassList.AddClasses( "p-section-collapse-content collapse is-md" ); 209 } 210 @:<section class="@sectionClassList"> 211 @:<div class="container-fluid"> 212 @:<div class="row"> 213 214 if ( sectionCollapse == true ) 215 // TODO: SplitPattern into seperate heler function 216 { 217 <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId"> 218 <button class="btn btn-primary p-section-collapse-toggle-btn" type="button"> 219 <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i> 220 </button> 221 <small class="h4 p-section-collapse-toggle-text" data-expand-text="@collapseToggleTextExpand" data-collapse-text="@collapseToggleTextCollapse"></small> 222 </div> 223 } 224 225 @:<div class="@contentClassList" id="@collapseId"> 226 @:<div class="row"> 227 } 228 229 @helper sectionEnd() 230 { 231 @:</div> 232 @:</div> 233 @:</div> 234 @:</div> 235 @:</section> 236 } 237 238 239 240 241 @{ 242 ClassList productlistMainClassList = new ClassList(); 243 productlistMainClassList.AddClasses("col-12"); 244 if ( Espresso.Item.FiltersShow == "True" ) 245 { 246 productlistMainClassList.AddClasses("col-lg-9 col-xl-9"); 247 } 248 ClassList productlistAsideClassList = new ClassList(); 249 productlistAsideClassList.AddClasses("col-12 col-lg-3 col-xl-3 order-lg-first"); 250 251 ClassList productlistItemClassList = new ClassList(); 252 Dictionary<string, decimal> paragraphEcommerceGridItemWidth = ProductlistService.Instance.GetGridItemWidth(PageView.Current().CurrentParagraph.Item.GetValue<string>("ItemWidth")); 253 productlistItemClassList.AddClasses(paragraphEcommerceGridItemWidth.ToResponsiveClasses()); 254 255 string ContactStaff = string.Empty; 256 257 LoopItem primaryProduct = GetLoop("Products").FirstOrDefault(); 258 Group PrimaryOrFirstGroup = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(primaryProduct.GetString("Ecom:Product.PrimaryOrFirstGroupID")); 259 } 260 261 <div class="js-e-loading-wait js-e-productlist"> 262 263 <div class="row"> 264 <div class="col-12"> 265 @{ 266 string groupId = string.Empty; 267 foreach ( LoopItem query in GetLoop("Query.Parameters") ) 268 { 269 if ( string.IsNullOrEmpty(query.GetString("Parameter.Value")) == false ) 270 { 271 if ( query.GetBoolean("Parameter.IsHandledAsFacet") == false && query.GetString("Parameter.Name") == "GroupId" ) 272 { 273 groupId = query.GetString("Parameter.Value"); 274 } 275 } 276 } 277 } 278 279 280 <div class="js-e-productslist-header small"> 281 <div class="align-items-end row"> 282 283 @if ( Espresso.Item.FiltersShow == "True" ) 284 { 285 <div class="@productlistAsideClassList d-lg-block d-none"> 286 <div class="border-bottom e-productslist-header"> 287 <p class="h3 m-0"> 288 <i class="material-icons material-icons-large">tune</i> 289 @Translate( "eCom Productlist Filters - Customize Selection - Heading", "Filter products" ) 290 <span class="e-productlist-product-count font-weight-normal js-e-productlist-product-count pl-1 text-muted"></span> 291 </p> 292 </div> 293 </div> 294 } 295 296 @if ( Espresso.Item.SortShow == "True" || Espresso.Item.PagingShow == "True" || Espresso.Item.FiltersShow == "True" ) 297 { 298 <div class="@productlistMainClassList"> 299 <div class="align-items-end border-bottom d-lg-flex d-none e-productslist-header align-content-between flex-wrap"> 300 @if ( Espresso.Item.HideRelatedProductCategories != "True" ) 301 { 302 <p class="mb-0"> 303 <a href="/system/pdf?PrintGroup=@groupId" class="text-primary"><i class="material-icons primo-btn-icon">print</i> @Translate("Printable PDF with this product overview", "Printable PDF with this product overview")</a> 304 </p> 305 } 306 @if ( Espresso.Item.SortShow == "True" ) 307 { 308 <div class="align-items-center d-flex js-e-productlist-sort"> 309 <script id="js-e-handlebars-tmpl-productlist-sort" type="text/x-handlebars-template"> 310 <fieldset class="form-inline"> 311 <div class=""> 312 <label for="Sort" class="mr-1 d-none"> 313 @Translate( "eCom Productlist - Sorting - Label", "Sort: " ) 314 </label> 315 <select name="Sort" class="js-e-productlist-sort-select custom-select" style="padding-bottom:0.25em;"> 316 <option value="SortName DESC" {{#compare sort.sort '===' 'SortName DESC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Name - DESC - Label", "Name" )</option> 317 <option value="Created ASC" {{#compare sort.sort '===' 'Created ASC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Created - ASC - Label", "Created" )</option> 318 <option value="SortPrice ASC" {{#compare sort.sort '===' 'SortPrice ASC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Price - ASC - Label", "Price - low to high" )</option> 319 <option value="SortPrice DESC" {{#compare sort.sort '===' 'SortPrice DESC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Price - DESC - Label", "Price - high to low" )</option> 320 </select> 321 </div> 322 </fieldset> 323 </script> 324 </div> 325 326 } 327 @if ( Espresso.Item.PagingShow == "True" ) 328 { 329 <div class="align-items-center d-flex e-productlist-paging js-e-productlist-paging justify-content-between ml-auto"> 330 <script id="js-e-handlebars-tmpl-productlist-paging" type="text/x-handlebars-template"> 331 {{#if page.productCount}} 332 <span class="text-nowrap {{#compare page.totalPages '>' 1 }}mr-4{{/compare}}"> 333 <strong>{{page.viewing.from}} - {{page.viewing.to}}</strong> @Translate( "eCom Productlist Paging - Product Count Of - Text", "of" ) 334 <span> {{page.productCount}}</span> 335 </span> 336 337 338 <span class=""> 339 {{#compare page.prevPage '!==' 0 }} 340 <a href="{{page.pagingUrl}}={{page.prevPage}}" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 mr-1 js-e-productlist-set-pagenum" data-page-num="{{page.prevPage}}"> 341 <i class="material-icons">arrow_back</i> 342 <span class="">@Translate( "eCom Productlist Paging - Previous - Text", "Previous" )</span> 343 </a> 344 {{/compare}} 345 346 {{#compare page.nextPage '!==' 0 }} 347 <a href="{{page.pagingUrl}}={{page.nextPage}}" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pr-1 ml-1 js-e-productlist-set-pagenum" data-page-num="{{page.nextPage}}"> 348 <span class="">@Translate( "eCom Productlist Paging - Next - Text", "Next" )</span> 349 <i class="material-icons">arrow_forward</i></a> 350 {{/compare}} 351 352 {{#compare page.pageSize '!==' 999}} 353 {{#compare page.totalPages '>' 1 }} 354 <a href="{{page.pagingUrl}}=9999" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 js-e-productlist-set-pagesize" data-page-size="999"> 355 @Translate( "eCom Productlist Paging - Show All - Text", "Show all" ) 356 </a> 357 {{/compare}} 358 {{/compare}} 359 360 {{#compare page.pageSize '===' 999}} 361 <a href="#" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 js-e-productlist-set-pagesize d-none" data-page-size="@Espresso.Item.Pagesize"> 362 @Translate( "eCom Productlist Paging - Reset - Link", "Reset" ) 363 </a> 364 {{/compare}} 365 366 <span> 367 {{/if}} 368 </script> 369 </div> 370 371 } 372 </div> 373 <div class="align-items-stretch d-flex d-lg-none e-productslist-header flex-wrap justify-content-strech"> 374 <div class="align-items-center bg-light d-flex justify-content-between p-1 w-100"> 375 @if ( Espresso.Item.SortShow == "True" ) 376 { 377 <div class="align-items-center d-flex js-e-productlist-sort"> 378 <script id="js-e-handlebars-tmpl-productlist-sort" type="text/x-handlebars-template"> 379 <fieldset class="form-inline"> 380 <div class=""> 381 <label for="Sort" class="mr-1 d-none"> 382 @Translate( "eCom Productlist - Sorting - Label", "Sort: " ) 383 </label> 384 <select name="Sort" class="js-e-productlist-sort-select custom-select" style="padding-bottom:0.25em;"> 385 <option value="SortName DESC" {{#compare sort.sort '===' 'SortName DESC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Name - DESC - Label", "Name" )</option> 386 <option value="Created ASC" {{#compare sort.sort '===' 'Created ASC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Created - ASC - Label", "Created" )</option> 387 <option value="SortPrice ASC" {{#compare sort.sort '===' 'SortPrice ASC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Price - ASC - Label", "Price - low to high" )</option> 388 <option value="SortPrice DESC" {{#compare sort.sort '===' 'SortPrice DESC'}}selected{{/compare}}>@Translate( "eCom Productlist - Sorting - Price - DESC - Label", "Price - high to low" )</option> 389 </select> 390 </div> 391 </fieldset> 392 </script> 393 </div> 394 395 } 396 @if ( Espresso.Item.FiltersShow == "True" ) 397 { 398 <button class="btn btn-primary js-e-productlist-filters-modal-toggle" data-target="#js-e-productlist-filters-modal" data-toggle="modal" type="button"> 399 <i class="material-icons material-icons-large">tune</i> 400 @Translate( "eCom Productlist Filters - Customize Selection - Button", "Filters" ) 401 <span class="ml-2 badge badge-primary js-e-productlist-filters-applied-count"></span> 402 </button> 403 } 404 </div> 405 <div class="py-1 flex-grow-1"> 406 @if ( Espresso.Item.PagingShow == "True" ) 407 { 408 <div class="align-items-center d-flex e-productlist-paging js-e-productlist-paging justify-content-between ml-auto"> 409 <script id="js-e-handlebars-tmpl-productlist-paging" type="text/x-handlebars-template"> 410 {{#if page.productCount}} 411 <span class="text-nowrap {{#compare page.totalPages '>' 1 }}mr-4{{/compare}}"> 412 <strong>{{page.viewing.from}} - {{page.viewing.to}}</strong> @Translate( "eCom Productlist Paging - Product Count Of - Text", "of" ) 413 <span> {{page.productCount}}</span> 414 </span> 415 416 417 <span class=""> 418 {{#compare page.prevPage '!==' 0 }} 419 <a href="{{page.pagingUrl}}={{page.prevPage}}" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 mr-1 js-e-productlist-set-pagenum" data-page-num="{{page.prevPage}}"> 420 <i class="material-icons">arrow_back</i> 421 <span class="">@Translate( "eCom Productlist Paging - Previous - Text", "Previous" )</span> 422 </a> 423 {{/compare}} 424 425 {{#compare page.nextPage '!==' 0 }} 426 <a href="{{page.pagingUrl}}={{page.nextPage}}" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pr-1 ml-1 js-e-productlist-set-pagenum" data-page-num="{{page.nextPage}}"> 427 <span class="">@Translate( "eCom Productlist Paging - Next - Text", "Next" )</span> 428 <i class="material-icons">arrow_forward</i></a> 429 {{/compare}} 430 431 {{#compare page.pageSize '!==' 999}} 432 {{#compare page.totalPages '>' 1 }} 433 <a href="{{page.pagingUrl}}=9999" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 js-e-productlist-set-pagesize" data-page-size="999"> 434 @Translate( "eCom Productlist Paging - Show All - Text", "Show all" ) 435 </a> 436 {{/compare}} 437 {{/compare}} 438 439 {{#compare page.pageSize '===' 999}} 440 <a href="#" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 js-e-productlist-set-pagesize d-none" data-page-size="@Espresso.Item.Pagesize"> 441 @Translate( "eCom Productlist Paging - Reset - Link", "Reset" ) 442 </a> 443 {{/compare}} 444 445 <span> 446 {{/if}} 447 </script> 448 </div> 449 450 } 451 </div> 452 </div> 453 </div> 454 } 455 456 457 458 </div> 459 </div> 460 461 </div> 462 </div> 463 <div class="row"> 464 <div class="col-12"> 465 466 <div class="e-productlist-body"> 467 <div class="row"> 468 <div class="@productlistMainClassList"> 469 <div id="js-e-productlist-products"> 470 @using Dynamicweb.Frontend 471 472 <ul itemscope itemtype="http://schema.org/ItemList"> 473 @foreach ( LoopItem product in GetLoop( "Products" ) ) 474 { 475 ContactStaff = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(product.GetString("Ecom:Product.PrimaryOrFirstGroupID")).GetProductGroupFieldValueRecursive<string>("ContactStaff"); 476 if (!string.IsNullOrEmpty(ContactStaff) ) 477 { 478 ContactStaff = ContactStaff.Replace("Default.aspx?Id=", ""); 479 } 480 481 <li itemprop="itemListElement" itemscope itemtype="http://schema.org/Product"> 482 <a href="@ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ) )" title="@product.GetString( "Ecom:Product.Name" )" itemprop="url"> 483 <h3 itemprop="name">@product.GetString( "Ecom:Product.Name" )</h3> 484 <p itemprop="description">@product.GetString( "Ecom:Product.ShortDescription" )</p> 485 </a> 486 </li> 487 } 488 </ul> 489 @if ( GetLoop( "Ecom:ProductList.Pages" ).Count > 0 ) 490 { 491 <ol> 492 @foreach ( LoopItem page in GetLoop( "Ecom:ProductList.Pages" ) ) 493 { 494 <li> 495 <a href="@page.GetString( "Ecom:ProductList.Pages.Page.Url" )">@page.GetString( "Ecom:ProductList.Pages.Page.Number" )</a> 496 </li> 497 } 498 </ol> 499 } 500 501 <script id="js-e-handlebars-tmpl-productlist-products" type="text/x-handlebars-template"> 502 <div class="e-products"> 503 <div class="e-loading-overlay e-products-loading-overlay js-e-products-loading-overlay is-loading"> 504 <div class="e-loading-spinner"></div> 505 </div> 506 {{#if page.productCount}} 507 <div class="row"> 508 {{#each products}} 509 510 <div class="@productlistItemClassList"> 511 <div class="e-products-item js-e-products-item js-e-products-item-{{id}} border-bottom"> 512 <div class="e-products-item-container"> 513 <div class="e-products-item-image-container pr-2"> 514 <a href="{{url}}"> 515 <img src="{{imageSmall}}" alt="{{name}}" class="e-products-item-image"> 516 </a> 517 </div> 518 <div class="e-products-item-text-container text-center small"> 519 <h3 class="e-products-item-name mb-1"><a href="{{url}}">{{number}} - {{name}}</a></h3> 520 {{#if descriptionShort}} 521 <p class="e-products-item-text mb-0"> 522 {{{descriptionShort}}} 523 </p> 524 {{/if}} 525 526 <p class="text-primary" style="text-decoration: underline"><a href="{{url}}">@Translate("View more specs","View more specs")</a></p> 527 528 @using Dynamicweb.Frontend 529 530 <div class="container"> 531 <div class="row text-center"> 532 {{#if contactStaff}} 533 <div class="col-12 col-md-4 pl-0 primo-search-remove"> 534 <button data-dismiss="modal" class="btn btn-block btn-secondary float-left mb-1 mr-1" data-toggle="modal" data-contactstaff="{{contactStaff}}" data-target="#primoProductlist" data-productname="{{name}}" data-productid="{{id}}"> 535 <i class="material-icons primo-btn-icon">person</i>@Translate("eCom Product - Contact sales - Button", "Contact sales") 536 </button> 537 </div> 538 <div class="col-12 col-md-4 pl-0 primo-productlist-remove"> 539 <a data-contactstaff="{{contactStaff}}" data-productname="{{name}}" data-productid="{{id}}" class="btn btn-block btn-secondary float-left mb-1 mr-1 js-primo-search-contact-staff"> 540 <i class="material-icons primo-btn-icon">person</i>@Translate("eCom Product - Contact sales - Button", "Contact sales") 541 </a> 542 </div> 543 {{/if}} 544 <div class="col-12 col-md-4 pl-0"> 545 <a target="_blank" href="/system/pdf?PrintProduct={{id}}" class="btn btn-block btn-primary float-left mb-1 mr-1 text-white"> 546 <i class="material-icons primo-btn-icon">print</i>@Translate("eCom Product - Printable PDF - Button", "Printable PDF") 547 </a> 548 </div> 549 <div class="col-12 col-md-4 pl-0"> 550 <form action="/system/data/my-productlist" class="btn-block e-product-form e-product-form-addtocart float-left js-e-product-form js-e-product-form-addtocart js-e-product-form-myproductlist mb-1 mb-1 mr-1" method="post"> 551 <input name="CartCmd" type="hidden" value="Add"> 552 <input name="OrderContext" type="hidden" value="MyProductlist"> 553 <input name="ProductID" type="hidden" value="{{id}}"> 554 <input name="VariantID" type="hidden" value=""> 555 <input name="Redirect" type="hidden" value=""> 556 <input name="Quantity" type="hidden" value="1"> 557 @* <button class="btn btn-tertiary" type="submit"> *@ 558 @* <i class="material-icons material-icons-large text-success">add</i> *@ 559 <button class="btn btn-block btn-primary" type="submit"> 560 <i class="material-icons primo-btn-icon">add</i> 561 @Translate("eCom Product - Add To My List - Button", "Add to my list")</button> 562 </form> 563 <div class="e-product-form-removefromcart"> 564 <button class="btn btn-block btn-primary text-muted" type="submit"> 565 <i class="material-icons primo-btn-icon">done</i> 566 @Translate("eCom Product - Added to My List - Button", "Added to my list")</button> 567 </div> 568 </div> 569 </div> 570 </div> 571 572 </div> 573 </div> 574 </div> 575 </div> 576 577 {{/each}} 578 </div> 579 {{else}} 580 <div class="alert alert-warning mt-2" role="alert"> 581 <strong><i class="material-icons material-icons-2x">sentiment_dissatisfied</i> @Translate( "eCom Productlist - Sorry - Text", "Sorry..")</strong> 582 <br> @Translate( "eCom Productlist - No Products - Text", "No products match your choices.") 583 </div> 584 {{/if}} 585 </div> 586 </script> 587 588 </div> 589 @if ( Espresso.Item.FooterShow == "True" ) 590 { 591 <div class="align-items-end d-flex justify-content-between pt-1 small"> 592 @*<div class="align-items-center d-flex e-products-price-info"> 593 <span>@Translate( "eCom Productlist - Price Info - Text Public", "All prices are incl. VAT" )</span> 594 </div> 595 *@ 596 @if ( Espresso.Item.PagingShow == "True" ) 597 { 598 <div class="align-items-center d-flex e-productlist-paging js-e-productlist-paging justify-content-between ml-auto"> 599 <script id="js-e-handlebars-tmpl-productlist-paging" type="text/x-handlebars-template"> 600 {{#if page.productCount}} 601 <span class="text-nowrap {{#compare page.totalPages '>' 1 }}mr-4{{/compare}}"> 602 <strong>{{page.viewing.from}} - {{page.viewing.to}}</strong> @Translate( "eCom Productlist Paging - Product Count Of - Text", "of" ) 603 <span> {{page.productCount}}</span> 604 </span> 605 606 607 <span class=""> 608 {{#compare page.prevPage '!==' 0 }} 609 <a href="{{page.pagingUrl}}={{page.prevPage}}" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 mr-1 js-e-productlist-set-pagenum" data-page-num="{{page.prevPage}}"> 610 <i class="material-icons">arrow_back</i> 611 <span class="">@Translate( "eCom Productlist Paging - Previous - Text", "Previous" )</span> 612 </a> 613 {{/compare}} 614 615 {{#compare page.nextPage '!==' 0 }} 616 <a href="{{page.pagingUrl}}={{page.nextPage}}" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pr-1 ml-1 js-e-productlist-set-pagenum" data-page-num="{{page.nextPage}}"> 617 <span class="">@Translate( "eCom Productlist Paging - Next - Text", "Next" )</span> 618 <i class="material-icons">arrow_forward</i></a> 619 {{/compare}} 620 621 {{#compare page.pageSize '!==' 999}} 622 {{#compare page.totalPages '>' 1 }} 623 <a href="{{page.pagingUrl}}=9999" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 js-e-productlist-set-pagesize" data-page-size="999"> 624 @Translate( "eCom Productlist Paging - Show All - Text", "Show all" ) 625 </a> 626 {{/compare}} 627 {{/compare}} 628 629 {{#compare page.pageSize '===' 999}} 630 <a href="#" class="text-auto text-uppercase text-nowrap text-decoration-none p-0 pl-1 js-e-productlist-set-pagesize d-none" data-page-size="@Espresso.Item.Pagesize"> 631 @Translate( "eCom Productlist Paging - Reset - Link", "Reset" ) 632 </a> 633 {{/compare}} 634 635 <span> 636 {{/if}} 637 </script> 638 </div> 639 640 } 641 </div> 642 } 643 644 </div> 645 <div class="@productlistAsideClassList"> 646 <form class="js-e-productlist-form"> 647 @{ 648 string pageUrl = GetGlobalValue( "Global:Pageview.Url" ); 649 string sortBy = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? GetString( "Ecom:ProductList.SortBy" ) : HttpContext.Current.Request[ "SortBy" ]; 650 if ( sortBy == "Name" || sortBy == "Price" ) 651 { 652 sortBy = "Sort" + sortBy; 653 } 654 else if ( sortBy == "UserDefined" ) 655 { 656 sortBy = "PrimaryGroupSort"; 657 } 658 string sortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? GetString( "Ecom:ProductList.SortOrder" ) : HttpContext.Current.Request[ "SortOrder" ]; 659 string pageSize = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageSize" ] ) ? GetString( "Ecom:ProductList.PageSize" ) : HttpContext.Current.Request[ "PageSize" ]; 660 string pageNum = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageNum" ] ) ? GetString( "Ecom:ProductList.CurrentPage" ) : HttpContext.Current.Request[ "PageNum" ]; 661 } 662 <input type="hidden" name="ID" value="@Espresso.Page.ID"> 663 <input type="hidden" name="PageNum" value="@HttpUtility.HtmlAttributeEncode( pageNum )"> 664 <input type="hidden" name="PageUrl" value="@HttpUtility.HtmlAttributeEncode( pageUrl )"> 665 <input type="hidden" name="SortBy" value="@HttpUtility.HtmlAttributeEncode( sortBy )"> 666 <input type="hidden" name="SortOrder" value="@HttpUtility.HtmlAttributeEncode( sortOrder )"> 667 <input type="hidden" name="PageSize" value="@HttpUtility.HtmlAttributeEncode( pageSize )"> 668 669 @if ( Espresso.Item.FiltersShow == "True" ) 670 { 671 foreach ( LoopItem facetGroup in GetLoop( "FacetGroups" ) ) 672 { 673 <input type="hidden" name="fg" value="@facetGroup.GetString( "FacetGroup.Name" )"> 674 } 675 <input type="hidden" class="js-e-visible-options-count" value="@Espresso.Item.FiltersVisibleOptionCount"> 676 } 677 @foreach ( LoopItem query in GetLoop( "Query.Parameters" ) ) 678 { 679 if ( string.IsNullOrEmpty( query.GetString( "Parameter.Value" ) ) == false ) 680 { 681 if ( query.GetBoolean( "Parameter.IsHandledAsFacet" ) == false && query.GetString( "Parameter.Name" ) != "q" ) 682 { 683 <input type="hidden" name="@query.GetString( "Parameter.Name" )" value="@query.GetString( "Parameter.Value" )"> 684 } 685 } 686 } 687 688 <div id="js-e-productlist-filters" class="d-lg-block d-none"> 689 <script id="js-e-handlebars-tmpl-productlist-filters" type="text/x-handlebars-template"> 690 {{#if page.filtersAppliedCount}} 691 <div class="e-productlist-filters-group e-productlist-filters-group-summery"> 692 <p class="e-productlist-filters-group-header small mb-0"> 693 <span class="e-productlist-filters-group-name h4 m-0 pl-0">@Translate( "eCom Productlist Filters - Selected - Text", "Selected filters" )</span> 694 <button type="button" class="btn btn-sm btn-link py-1 px-0 js-e-productlist-filters-clear-all">@Translate( "eCom Productlist Filter - Group Reset - Button", "Reset" )</button> 695 </p> 696 <div class="e-productlist-filters-group-options-selected small mb-2"> 697 {{#each facets}} 698 {{#if selectedOptions.length}} 699 {{#each selectedOptions}} 700 <a class="e-productlist-filters-option-selected js-e-productlist-filters-remove d-flex align-items-center text-decoration-none mb-1" href="#" data-value="{{value}}"> 701 <i class="material-icons material-icons-fixed text-danger mr-1">add_circle</i> 702 <span>{{../name}}: {{label}}</span> 703 </a> 704 {{/each}} 705 {{/if}} 706 {{/each}} 707 {{#if page.q}} 708 <a class="e-productlist-filters-option-selected d-flex align-items-center text-decoration-none mb-1 js-e-productlist-filters-search-clear" href="#"> 709 <i class="material-icons material-icons-fixed text-danger mr-1">add_circle</i> 710 <span>@Translate( "eCom Productlist Filters - Search - Text", "Search" ): {{page.q}}</span> 711 </a> 712 {{/if}} 713 {{#compare page.minPrice.clean '&&' page.maxPrice.clean}} 714 <a class="e-productlist-filters-option-selected d-flex align-items-center text-decoration-none mb-1 js-e-productlist-filters-range-clear" href="#" data-group-id="js-e-productlist-filters-range-group-price"> 715 <i class="material-icons material-icons-fixed text-danger mr-1">add_circle</i> 716 <span>@Translate( "eCom Productlist Filters - Price - Heading", "Price" ): {{{page.minPrice.formatted}}} - {{{page.maxPrice.formatted}}}</span> 717 </a> 718 {{/compare}} 719 </div> 720 </div> 721 {{/if}} 722 723 {{#compare "@Espresso.Item.FiltersShow" "===" "True"}} 724 725 @if ( Espresso.Item.NavigationShow == "True" ) 726 { 727 <div class="e-productlist-filters-group js-e-productlist-filters-group"> 728 <p class="e-productlist-filters-group-header small mb-0"> 729 <a class="e-productlist-filters-group-collapse-toggle text-black" data-toggle="collapse" data-target="#e-productlist-filters-group-navigation"> 730 <i class="material-icons material-icons-fixed">arrow_drop_down</i> 731 <span class="e-productlist-filters-group-name h4 m-0"> 732 @Espresso.Item.NavigationHeading 733 </span> 734 </a> 735 </p> 736 <fieldset id="e-productlist-filters-group-navigation" class="e-productlist-filters-group-options mb-2 small collapse show"> 737 <div class="e-nav-local e-nav-local-vertical"> 738 <nav class="e-nav-local-container"> 739 <ul class="nav flex-column"> 740 @RenderNavigation( new 741 { 742 id = "dwnav-local-" + Espresso.Id, 743 parentid = string.IsNullOrEmpty( Espresso.Item.NavigationParentPage ) == false ? Espresso.Item.NavigationParentPage : Espresso.Page.ID, 744 template = "local-vertical.xslt", 745 startlevel = Espresso.Item.NavigationLevelStart, 746 endlevel = Espresso.Item.NavigationLevelEnd, 747 expandmode = "path" 748 } ) 749 </ul> 750 </nav> 751 </div> 752 </fieldset> 753 </div> 754 } 755 @if ( Espresso.Item.SearchShow == "True" ) 756 { 757 <div class="e-productlist-filters-group js-e-productlist-filters-group"> 758 <p class="e-productlist-filters-group-header small mb-0"> 759 <a class="e-productlist-filters-group-collapse-toggle {{#unless page.q}}collapsed{{/unless}}" data-toggle="collapse" data-target="#e-productlist-filters-group-search"> 760 <i class="material-icons material-icons-fixed">arrow_drop_down</i> 761 <span class="e-productlist-filters-group-name h4 m-0">@Translate( "eCom Productlist Filters - Search - Heading", "Search" )</span> 762 </a> 763 {{#if page.q}} 764 <button type="button" class="btn btn-sm btn-link py-1 px-0 js-e-productlist-filters-search-clear"> 765 @Translate( "eCom Productlist Filter - Group Reset - Button", "Reset" ) 766 </button> 767 {{/if}} 768 </p> 769 <fieldset id="e-productlist-filters-group-search" class="e-productlist-filters-group-options mb-2 small collapse {{#if page.q}}show{{/if}}"> 770 <div class="js-e-search-input-group e-search-input-group {{#unless page.q}}is-empty{{/unless}}"> 771 <label class="e-search-label" for="filter_search"><i class="material-icons">search</i></label> 772 <input type="text" class="js-e-search-input e-search-input e-productlist-filters-search-input form-control-plaintext" name="q" id="filter_search" value="{{page.q}}"> 773 <span class="js-e-search-clear e-search-clear"><i class="material-icons">close</i></span> 774 <button class="d-none e-search-submit btn btn-primary js-e-productlist-filters-search-submit" type="button"><i class="material-icons pa-0">search</i></button> 775 </div> 776 </fieldset> 777 </div> 778 } 779 780 {{#each facets}} 781 {{#compare count '>' 0}} 782 <div class="e-productlist-filters-group js-e-productlist-filters-group"> 783 <p class="e-productlist-filters-group-header small mb-0"> 784 <a class="e-productlist-filters-group-collapse-toggle {{#unless selectedOptions.length }}{{#compare @@first '&&' @@root.page.hasNoInteraction}}{{else}}collapsed{{/compare}}{{/unless}}" data-toggle="collapse" data-target="#e-productlist-filters-group-{{param}}"> 785 <i class="material-icons material-icons-fixed">arrow_drop_down</i> 786 <span class="e-productlist-filters-group-name h4 m-0">{{label}}</span> 787 </a> 788 {{#if selectedOptions.length}} 789 <label for="reset-filter-{{param}}" class="btn btn-sm btn-link py-1 px-0 m-0"> 790 @Translate( "eCom Productlist Filter - Group Reset - Label", "Reset" ) 791 </label> 792 {{/if}} 793 </p> 794 <fieldset id="e-productlist-filters-group-{{param}}" class="e-productlist-filters-group-options js-e-productlist-filters-group-options mb-2 small collapse {{#if selectedOptions.length }}is-expanded{{else}}{{#compare @@first '&&' @@root.page.hasNoInteraction}}is-expanded{{/compare}}{{/if}}"> 795 <div class="{{#compare count '>' @Espresso.Item.FiltersVisibleOptionCount }}js-e-productlist-filters-options-collapse-peek e-productlist-filters-options-collapse-peek is-peeking{{/compare}}"> 796 <div class="e-productlist-filters-option js-e-productlist-filters-option"> 797 <label for="reset-filter-{{param}}" class="custom-control custom-checkbox"> 798 <input class="js-e-productlist-filters-option-reset-group custom-control-input" name="reset-filter-{{param}}" id="reset-filter-{{param}}" type="checkbox" value="true" {{#compare isCleared '||' isEmpty}}checked{{/compare}}> 799 <span class="custom-control-indicator"></span> 800 <span class="custom-control-description">@Translate( "eCom Productlist Filter - Options View All - Label", "All" )</span> 801 </label> 802 </div> 803 {{#each options}} 804 <div class="e-productlist-filters-option js-e-productlist-filters-option {{#if isSelected}}is-selected{{/if}} {{#if isDisabled}}is-disabled text-muted{{/if}}"> 805 <label for="{{id}}" class="custom-control custom-checkbox"> 806 <input id="{{id}}" name="{{param}}" class="js-e-productlist-filter custom-control-input" type="checkbox" value="{{value}}" {{#if isSelected}}checked{{/if}} {{#if isDisabled}}disabled{{/if}}> 807 <span class="custom-control-indicator"></span> 808 <span class="custom-control-description">{{label}} <span class="e-productlist-filters-option-count small text-muted">({{count}})</span></span> 809 </label> 810 </div> 811 {{/each}} 812 {{#compare count '>' @Espresso.Item.FiltersVisibleOptionCount }} 813 <a href="#" class="js-e-productlist-filters-options-collapse-peek-toggle e-productlist-filters-options-collapse-peek-toggle" data-closed-text="@Translate( "eCom Productlist Filter - Options Show More - Link", "Show more" )" data-open-text="@Translate( "eCom Productlist Filter - Options Show Less - Link", "Show less" )"><i class="material-icons material-icons-fixed">keyboard_arrow_down</i></a> 814 {{/compare}} 815 </div> 816 </fieldset> 817 </div> 818 {{/compare}} 819 {{/each}} 820 @if ( Espresso.Item.PriceRangeShow == "True" ) 821 { 822 <div class="e-productlist-filters-group js-e-productlist-filters-group"> 823 <p class="e-productlist-filters-group-header small mb-0"> 824 <a class="e-productlist-filters-group-collapse-toggle {{#compare page.minPrice.clean '!!' page.maxPrice.clean}}collapsed{{/compare}}" data-toggle="collapse" data-target="#e-productlist-filters-group-pricerange"> 825 <i class="material-icons material-icons-fixed">arrow_drop_down</i> 826 <span class="e-productlist-filters-group-name h4 m-0">@Translate( "eCom Productlist Filters - Price Range - Heading", "Price" )</span> 827 </a> 828 {{#compare page.minPrice.clean '||' page.maxPrice.clean}} 829 <button type="button" class="btn btn-sm btn-link py-1 px-0 js-e-productlist-filters-range-clear"> 830 @Translate( "eCom Productlist Filter - Group Reset - Button", "Reset" ) 831 </button> 832 {{/compare}} 833 </p> 834 <fieldset id="e-productlist-filters-group-pricerange" class="e-productlist-filters-group-options mb-2 small collapse {{#compare page.minPrice.clean '||' page.maxPrice.clean}}show{{/compare}}"> 835 <div id="js-e-productlist-filters-range-group-price" class="row align-items-center mt-1 e-productlist-filters-range-group js-e-productlist-filters-range-group"> 836 <div class="col-12 col-lg-4 mb-1 mb-lg-0"> 837 <input type="text" class="form-control js-e-productlist-filters-range js-e-productlist-filters-range-min" name="PriceRangeMin" id="PriceRangeMin" value="{{page.minPrice.clean}}" placeholder="@Translate( "eCom Productlist Filters - Price Min - Text", "From" )" min="0"> 838 </div> 839 <div class="col-12 col-lg-4 mb-1 mb-lg-0"> 840 <input type="text" class="form-control js-e-productlist-filters-range js-e-productlist-filters-range-max" name="PriceRangeMax" id="PriceRangeMax" value="{{page.maxPrice.clean}}" placeholder="@Translate( "eCom Productlist Filters - Price Max - Text", "To" )" data-msg-rangeValid="@Translate( "eCom Productlist Filters - Price Error - Msg", "Prices entered incorrectly" )"> 841 </div> 842 <div class="col-12 col-lg-3"> 843 <button type="button" class="btn btn-primary px-0 btn-sm btn-block e-productlist-filters-apply-range js-e-productlist-filters-apply-range"><i class="material-icons">sync</i></button> 844 </div> 845 </div> 846 </fieldset> 847 </div> 848 } 849 {{/compare}} 850 </div> 851 </script> 852 </div> 853 854 <div class="e-productlist-filters-modal fade modal modal-fullscreen" data-backdrop="false" id="js-e-productlist-filters-modal"> 855 <div class="modal-dialog"> 856 <div class="modal-content"> 857 <div class="modal-header"> 858 <h3 class="modal-title"> 859 <i class="material-icons material-icons-large">tune</i> 860 @Translate( "eCom Productlist Filters - Customize Selection - Heading", "Filter products" ) 861 </h3> 862 <button class="close" data-dismiss="modal" type="button"> 863 <i class="material-icons">close</i> 864 </button> 865 </div> 866 <div class="modal-body pt-0"> 867 <div id="js-e-productlist-filters-modal-body" class="d-flex flex-column"> 868 869 </div> 870 </div> 871 <div class="modal-footer bg-info border-top-0"> 872 <button class="btn btn-primary btn-block" data-dismiss="modal" type="button">@Translate( "eCom Productlist Filters - Customize Selection Apply - Button", "Show results" )</button> 873 </div> 874 </div> 875 </div> 876 </div> 877 878 </form> 879 </div> 880 </div> 881 </div> 882 883 </div> 884 </div> 885 </div> 886 887 @if ( Espresso.Item.HideRelatedProductCategories != "True" ) 888 { 889 890 @sectionStart( 891 sectionClasses: "p p-section e-section px-0 mt-4", 892 contentClasses: "col-12 px-0" 893 ) 894 895 <h2 class="col-12">@Translate("Productlist - Other standard products for","Other standard products for") @PrimaryOrFirstGroup.Name</h2> 896 897 foreach ( Group group in PrimaryOrFirstGroup.ParentGroups.FirstOrDefault().Subgroups ) 898 { 899 if ( group.Id != PrimaryOrFirstGroup.Id ) 900 { 901 string siblingsProductlistLink = group.GetProductGroupFieldValueRecursive<string>("ProductlistLink"); 902 string image = "Files/" + group.LargeImage; 903 <div class="col-6 col-lg-3 col-md-6 col-sm-6 col-xl-3 e-block-link js-e-block-link p p-card p-card-border-none p-card-img-bleed p-card-padding-large p-card-shadow-none p-card-top-bottom p-card-txt-small" id="10979"> 904 <div class="card "> 905 <div class="order-first p-img-container"> 906 <div class="card-body"> 907 <div class="row"> 908 <div class="col-12"> 909 <a href="@siblingsProductlistLink"> 910 911 <img alt="" class="p-img" src="@image"> 912 </a> 913 </div> 914 </div> 915 </div> 916 </div> 917 <div class="p-txt-container"> 918 <div class="card-body"> 919 <h3>@group.Name</h3> 920 </div> 921 </div> 922 </div> 923 </div> 924 } 925 } 926 927 @sectionEnd() 928 } 929 930 @sectionStart( 931 sectionClasses: "p p-section e-section px-0", 932 contentClasses: "col-12 px-0" 933 ) 934 935 <div class="col-12 col-lg-2 col-md-2 col-sm-2 col-xl-2 d-lg-block d-none e-text-dark e-theme-light p p-tile p-tile-center-middle p-tile-gradient-disabled p-tile-height-sm p-tile-order- p-tile-txt-medium" id="10986"> 936 <div class="p-tile-container"> 937 <div class="e-text-margin-fixed p-txt-container"></div> 938 </div> 939 </div> 940 <div class="col-12 col-lg-8 col-md-12 col-sm-12 col-xl-8 e-text-light e-theme-quaternary p p-tile p-tile-center-middle p-tile-height-sm p-tile-order- p-tile-txt-medium" id="10987"> 941 <div class="p-tile-container"> 942 <div class="e-text-margin-fixed p-txt-container"> 943 <div class="container-fluid"> 944 <div class="p-txt-wrapper row"> 945 <div class="col-xl-9"> 946 @{ 947 string groupName = PrimaryOrFirstGroup.ParentGroups.FirstOrDefault().Name; 948 string ecommerceCustomSolutionsPage = PageView.Current().Area.Item.GetValue< string >("EcommerceCustomSolutionsPage"); 949 } 950 951 <h2>@Translate("Not finding what you are looking for?","Not finding what you are looking for?")</h2> 952 <p class="lead">@Translate("We specialise in customised plastic profiling solutions for the","We specialise in customised plastic profiling solutions for the")</p> 953 <p> 954 <a class="btn btn-primary" href="@ecommerceCustomSolutionsPage">@Translate("Learn more about the endless possibilities","Learn more about the endless possibilities")</a> 955 </p> 956 </div> 957 </div> 958 </div> 959 </div> 960 </div> 961 </div> 962 <div class="col-12 col-lg-2 col-md-2 col-sm-2 col-xl-2 d-lg-block d-none e-text-light e-theme-secondary p p-tile p-tile-center-middle p-tile-gradient-disabled p-tile-height-sm p-tile-order- p-tile-txt-medium" id="10988"> 963 <div class="p-tile-container"> 964 <div class="e-text-margin-fixed p-txt-container"></div> 965 </div> 966 </div> 967 968 @sectionEnd() 969 970 @sectionStart( 971 contentClasses: "col-12", 972 sectionClasses: "e-section my-4 px-0") 973 @if ( !string.IsNullOrEmpty(ContactStaff) ) 974 { 975 @RenderPageContent(int.Parse(@ContactStaff)) 976 } 977 @sectionEnd() 978 979 980 <div aria-hidden="true" aria-labelledby="primoProductlistLabel" class="fade modal primo-modal-productlist" id="primoProductlist" role="dialog" tabindex="-1"> 981 <div class="modal-dialog modal-xl" role="document"> 982 <div class="modal-content"> 983 <div class="modal-header"> 984 <h3 class="mt-1" id="primoProductlistLabel">@Translate("Product id", "Product id"): <span class="modal-product-id"></span></h3> 985 <button aria-label="Close" class="close" data-dismiss="modal" type="button"> 986 <span aria-hidden="true">&times;</span> 987 </button> 988 </div> 989 <div class="modal-body py-lg-4"> 990 991 <section class="e-section"> 992 <div class="container-fluid"> 993 <div class="row"> 994 <div class="col-12"> 995 <div class="row"> 996 <div class="col-12"> 997 <p class="lead mb-2" id="primoProductlistLabel">@Translate("Do you have any questions regarding the", "Do you have any questions regarding the") <span class="modal-product-name font-weight-bold"></span>?</p> 998 </div> 999 <span class="modal-contact-staff"></span> 1000 @if ( !string.IsNullOrEmpty(ContactStaff) ) 1001 { 1002 @RenderPageContent(int.Parse(@ContactStaff)) 1003 } 1004 </div> 1005 </div> 1006 </div> 1007 </div> 1008 </section> 1009 </div> 1010 </div> 1011 </div> 1012 </div>
keyboard_arrow_up