Error executing template "Designs/BioLegend/_parsed/Page.parsed.cshtml"
System.IO.IOException: The process cannot access the file 'f:\Domains\Sites\www.biolegend.com\Files\System\Diagnostics\Products\Products.index\B\2024-04-24 220000\status.xml' because it is being used by another process.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
   at System.IO.File.InternalReadAllText(String path, Encoding encoding, Boolean checkHost)
   at BioLegend.Web.Helpers.CdnFunctions.GetTicksFromXmlFile(String xmlFile)
   at BioLegend.Web.Helpers.CdnFunctions.GetCdnVersion()
   at CompiledRazorTemplates.Dynamic.RazorEngine_4a2ad991f9854089a0de20cd30f34e42.Execute() in f:\Domains\Sites\www.biolegend.com\Files\Templates\Designs\BioLegend\_parsed\Page.parsed.cshtml:line 170
   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 RazorTemplateBase<RazorTemplateModel<Template>> 2 @using System 3 @using Dynamicweb.Rendering 4 @using System.Web; 5 @using System.Text; 6 @using System.Text.RegularExpressions; 7 @using System.Globalization; 8 @using System.Collections.Generic; 9 @using System.Linq; 10 @using Dynamicweb.Security.UserManagement; 11 @using BioLegend.Ecommerce.LiveIntegration; 12 @using Dynamicweb.Environment 13 @using System.Collections.Specialized; 14 @using System.Linq 15 @functions { 16 17 public string LocalizeLinksHTML (string HtmlContent){ 18 int areaID = Pageview.Area.ID; 19 var area = Dynamicweb.Services.Areas.GetArea(areaID); 20 string areaCulture = area.Culture.ToLower(); 21 if(!string.IsNullOrEmpty(HtmlContent)){ 22 if(HtmlContent.IndexOf("dwcountry") > -1){ 23 return HtmlContent.Replace("dwcountry",areaCulture); 24 } else{ 25 return HtmlContent; 26 } 27 28 } else { 29 return HtmlContent; 30 } 31 32 } 33 34 public string LocalizeLinks (string HtmlContent){ 35 int areaID = Pageview.Area.ID; 36 var area = Dynamicweb.Services.Areas.GetArea(areaID); 37 string areaCulture = area.Culture.ToLower(); 38 if(!string.IsNullOrEmpty(HtmlContent)){ 39 if(HtmlContent.IndexOf("dwcountry") > -1){ 40 return HtmlContent.Replace("dwcountry",areaCulture); 41 } else if (HtmlContent.IndexOf("?ID=") > -1) { 42 //do something 43 string baseHref = String.Format("https://{0}",GetGlobalValue("Global:Request.Host")); 44 HtmlContent = HtmlContent.Contains("http") ? HtmlContent : baseHref + "/" + HtmlContent; 45 var uri = new Uri(HtmlContent,UriKind.RelativeOrAbsolute); 46 var parsedQuery = HttpUtility.ParseQueryString(uri.Query); 47 var pageID = parsedQuery.Get("ID"); 48 49 string pageVersionID = pageID; 50 string localizedLink = HtmlContent; 51 if (!string.IsNullOrEmpty(pageID)){ 52 var pageService = new Dynamicweb.Content.PageService(); 53 var linkPage = pageService.GetPagesByAreaID(areaID).FirstOrDefault(x => x.MasterPageId == int.Parse(pageID)); 54 pageVersionID = linkPage != null ? linkPage.ID.ToString() : pageID ; 55 56 localizedLink = ModifyQueryStringValue(HtmlContent,"ID",pageVersionID); 57 } 58 //return string.Join(",", parsedQuery.AllKeys); 59 //return string.Join(HtmlContent,"-",pageVersionID); 60 return localizedLink; 61 } else { 62 return HtmlContent; 63 } 64 }else { 65 return HtmlContent; 66 } 67 68 } 69 70 private string ModifyQueryStringValue(string p_query, string p_Name, string p_NewValue) 71 { 72 Uri uri = new Uri(p_query,UriKind.RelativeOrAbsolute); 73 //if(p_query.Contains("http")) 74 //{ 75 //uri = new Uri(p_query); 76 //} else { 77 //uri = new Uri(p_query, UriKind.Relative); 78 //} 79 //uri = new Uri(p_query); 80 81 82 83 var nameValues = HttpUtility.ParseQueryString(uri.Query); 84 nameValues.Set(p_Name, p_NewValue); 85 string url = uri.AbsolutePath + "?" + nameValues.ToString(); 86 return url; 87 } 88 } 89 @using System.Collections.Generic 90 @using System.Data 91 92 @functions{ 93 94 /* Get related pages */ 95 public static List<Dictionary<string, string>> GetRelatedPages(string productID) 96 { 97 List<Dictionary<string, string>> relatedPages = new List<Dictionary<string, string>>(); 98 99 if(!string.IsNullOrEmpty(productID)){ 100 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 101 { 102 using (var command = connection.CreateCommand()) 103 { 104 string sqlRaw = "SELECT RPI.* FROM Page P JOIN ItemType_PageProperties PP ON PP.Id = P.PagePropertyItemId JOIN ItemListRelation LR ON LR.ItemListRelationItemListId = PP.Related_Pages JOIN ItemType_Related_Product_Item RPI ON RPI.Id = LR.ItemListRelationItemId WHERE P.PageId ='{0}'"; 105 command.CommandText = string.Format(sqlRaw, productID); 106 107 using (var reader = command.ExecuteReader()) 108 { 109 if (reader != null) 110 { 111 while (reader.Read()) 112 { 113 Dictionary<string, string> relatedPagesProperties = new Dictionary<string, string>(); 114 115 relatedPagesProperties.Add("Page", reader["Page"].ToString()); 116 relatedPagesProperties.Add("Page_Link", reader["Page_Link"].ToString()); 117 relatedPagesProperties.Add("Icon_Source", "");//reader["Icon_Source"].ToString()); 118 relatedPagesProperties.Add("PageTitle", reader["PageTitle"].ToString()); 119 relatedPages.Add(relatedPagesProperties); 120 } 121 } 122 } 123 } 124 } 125 } 126 return relatedPages; 127 } 128 129 /* Get related products */ 130 public static List<Dictionary<string, string>> GetRelatedProducts(string productID) 131 { 132 List<Dictionary<string, string>> relatedProducts = new List<Dictionary<string, string>>(); 133 134 if(!string.IsNullOrEmpty(productID)){ 135 using (var connection = Dynamicweb.Data.Database.CreateConnection()) 136 { 137 using (var command = connection.CreateCommand()) 138 { 139 string sqlRaw = "SELECT RPI.* FROM Page P JOIN ItemType_PageProperties PP ON PP.Id = P.PagePropertyItemId JOIN ItemListRelation LR ON LR.ItemListRelationItemListId = PP.Related_Products JOIN ItemType_Related_Products RPI ON RPI.Id = LR.ItemListRelationItemId WHERE P.PageId ='{0}'"; 140 command.CommandText = string.Format(sqlRaw, productID); 141 142 using (var reader = command.ExecuteReader()) 143 { 144 if (reader != null) 145 { 146 while (reader.Read()) 147 { 148 Dictionary<string, string> relatedProductsProperties = new Dictionary<string, string>(); 149 150 relatedProductsProperties.Add("Page", reader["Page"].ToString()); 151 relatedProductsProperties.Add("Page_Link", reader["Page_Link"].ToString()); 152 relatedProductsProperties.Add("Icon_Source", "");//reader["Icon_Source"].ToString()); 153 relatedProductsProperties.Add("PageTitle", reader["PageTitle"].ToString()); 154 relatedProducts.Add(relatedProductsProperties); 155 } 156 } 157 } 158 } 159 } 160 } 161 return relatedProducts; 162 } 163 164 } 165 @{ 166 //START CUSTOM CODE 167 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); 168 var cdnJsCssDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("CSS_JS", "CSS_JS_Domain"); 169 var cdnAjaxCalls = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Ajax_Calls", "Ajax_Calls_Domain"); 170 var cdnVersion = BioLegend.Web.Helpers.CdnFunctions.GetCdnVersion(); 171 //END CUSTOM CODE 172 173 var designFolder = GetString("Template:DesignBaseUrl"); 174 var str_projectName = "BioLegend"; 175 var lst_socialMedia = GetLoop("Item.Area.Social"); 176 var loop_websiteLanguages = GetLoop("Languages"); 177 var companyName = GetString("Item.Area.CompanyName"); 178 var footerSlogan = GetString("Item.Area.FooterSlogan"); 179 var contactsParagraph = GetInteger("Item.Area.ContactsParagraph"); 180 var contactInfo = GetString("Item.Area.ContactInformation"); 181 var liveSearchPage = GetInteger("Item.Area.LiveSearchPage"); 182 var contentSearchPage = GetInteger("Item.Area.ContentSearchPage"); 183 var cartDisabled = GetBoolean("Item.Area.DisableAddToCart"); 184 var requestScheme = GetGlobalValue("Global:Request.Scheme"); 185 var requestHost = GetGlobalValue("Global:Request.Host"); 186 var baseHref = String.Format("https://{0}/",requestHost); 187 188 @* -------------------- Facebook ------------------- *@ 189 var imgBaseHref = String.Format("https://{0}",requestHost); 190 191 var ogImage = string.IsNullOrWhiteSpace(GetString("Item.Page.Og_Image.Value")) ? "" : imgBaseHref + GetString("Item.Page.Og_Image.Value"); 192 var ogImageWidth = string.IsNullOrWhiteSpace(GetString("Item.Page.Og_Image.Value")) ? "" : GetString("Item.Page.Og_Image_Width.Value"); 193 var ogImageHeight = string.IsNullOrWhiteSpace(GetString("Item.Page.Og_Image.Value")) ? "" : GetString("Item.Page.Og_Image_Height.Value"); 194 var ogType = string.IsNullOrWhiteSpace(GetString("Item.Page.Og_Image.Value")) ? "article" : GetString("Item.Page.Og_Type.Value"); 195 196 var printPage = GetString("Item.Area.PrintPage"); 197 var coaPage = GetString("Item.Area.CertificateAnalysisPage"); 198 199 var bol_userLogged = string.IsNullOrWhiteSpace(GetString("DWextranet_AccessUserUserName")) ? false : true; 200 var userName = string.IsNullOrWhiteSpace(GetString("DW_extranet_AccessUserName")) ? "" : GetString("DW_extranet_AccessUserName"); 201 var userCountryCode = !string.IsNullOrEmpty(Pageview.User?.Country) ? Pageview.User.Country.ToString() : ""; 202 203 var str_miniCartPage = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetString("Item.Area.AddToCart")); 204 var str_CartPage = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetString("Item.Area.ViewCart")); 205 var str_relatedProductsJson = cdnAjaxCalls + Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetString("Item.Area.RelatedProductsAjax")) + "&cdnAjax=True&cdnVersion=" + cdnVersion; // CUSTOM CODE 206 207 var str_productDetailPageID = GetString("Item.Area.ProductDetail"); 208 var str_searchResultsPageID = GetString("Item.Area.SearchResults"); 209 var str_groupAjax = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetString("Item.Area.GroupAjax")); 210 211 var localArea = LocalizeLinksHTML("dwcountry"); 212 var wwOrdering = LocalizeLinksHTML("/dwcountry/worldwide-ordering"); 213 214 var isHomepage = GetString("Title") == "BioLegend | Your Partner for Antibodies, Proteins, Kits, Proteogenomics, Custom Services, and Reagents in Life Science" ? true : false; 215 216 @* -------------------- PageView ------------------- *@ 217 var obj_pageViewCurrent = Dynamicweb.Frontend.PageView.Current(); 218 var str_pageID = obj_pageViewCurrent.Page.ID.ToString(); 219 var str_areaID = obj_pageViewCurrent.AreaID.ToString(); 220 var str_countryCode = GetGlobalValue("Global:Area.Culture.CountryCode"); 221 var str_customCSSDeclaration = GetString("Item.Page.Custom_CSS_Declaration"); 222 var str_customCSSFile = GetString("Item.Page.Custom_CSS"); 223 224 @*-----------------Sidebar Navigation-----------------*@ 225 //we need to take related pages from the master page 226 var masterWebsite = loop_websiteLanguages.FirstOrDefault(x => x.GetString("Culture") == "en-US"); 227 var masterPage = masterWebsite?.GetString("PageID") != "" ? masterWebsite?.GetString("PageID") : str_pageID; 228 var relatedPages = GetRelatedPages(masterPage); 229 var relatedPageProducts = GetRelatedProducts(masterPage); 230 var propertyItem = !string.IsNullOrEmpty(masterPage) ? Dynamicweb.Frontend.PageView.GetPageviewByPageID(Int32.Parse(masterPage)).Page.PropertyItem : null; 231 //var relatedPages = GetLoop("Item.Page.Related_Pages.Value"); 232 var sidebarNavigation = propertyItem != null && propertyItem["Sidebar_Navigation"] != null ? propertyItem["Sidebar_Navigation"].ToString() : "1";// GetString("Item.Page.Sidebar_Navigation"); 233 var centralContentClass = "col-xs-12 col-md-9 shadowRight"; 234 var sidebarNavigationClass = "col-xs-12 col-md-3"; 235 var containerStyle = ""; 236 237 if (sidebarNavigation != "1" || ((relatedPages == null || !relatedPages.Any()) && (relatedPageProducts == null || !relatedPageProducts.Any()))) 238 { 239 centralContentClass = "col-md-12"; 240 sidebarNavigationClass = "col-md-12 sidewaysList"; 241 //containerStyle = "background-color:#fff"; 242 } 243 @* --------------- Cookier Setter Page-------------- *@ 244 //If OriginalPage is set then it's likely a call to the template header/footer and it's deliberately set 245 var str_referrerPage = HttpContext.Current.Request.QueryString["OriginalPage"]; 246 var referrerUrl = ""; 247 //If OriginalPage isn't set then it's likely a normal request so create the currentPage from the actual current page 248 if (String.IsNullOrEmpty(str_referrerPage)){ 249 referrerUrl = HttpUtility.UrlEncode("Default.aspx?ID="+GetString("PageID")); 250 } 251 else if (str_referrerPage == "/"){ 252 referrerUrl = ""; 253 } 254 else 255 { 256 referrerUrl = HttpUtility.UrlEncode(str_referrerPage); 257 } 258 259 var totalProdQty = ""; 260 if (bol_userLogged) 261 { 262 if(Pageview.User?.CurrentSecondaryUser != null && Pageview.User.CurrentSecondaryUser?.ID != 0) { 263 var secondaryUser = User.GetUserByID(Int32.Parse(Pageview.User.CurrentSecondaryUser.ID.ToString())); 264 @* var atTranslate = Translate("at", "at"); *@ 265 userName = String.Format("{0}", secondaryUser.Name); 266 } 267 268 @* -------------------- Total products in the cart context ------------------- *@ 269 var orderContext = GetString("Item.Area.OrderContext"); 270 var orderlinesContext = GetLoop("OrderContextCarts").Where(c => c.GetString("Ecom:OrderContext.ID").Equals(orderContext)).ToList(); 271 totalProdQty = orderlinesContext.FirstOrDefault()?.GetString("Ecom:Order.OrderLines.TotalProductQuantity"); 272 } 273 @* -------------------- Cookies ------------------- *@ 274 Dictionary<string, string> languageTypes = new Dictionary<string, string>(); 275 languageTypes.Add("US", "0"); 276 languageTypes.Add("JP", "1"); 277 languageTypes.Add("DE", "2"); 278 languageTypes.Add("GB", "3"); 279 languageTypes.Add("IT", "4"); 280 languageTypes.Add("AT", "5"); 281 languageTypes.Add("CH", "6"); 282 languageTypes.Add("FR", "7"); 283 languageTypes.Add("BE", "8"); 284 languageTypes.Add("LU", "9"); 285 languageTypes.Add("NL", "10"); 286 languageTypes.Add("IE", "11"); 287 languageTypes.Add("NO", "12"); 288 languageTypes.Add("DK", "13"); 289 languageTypes.Add("FI", "14"); 290 291 var languageCookie = new HttpCookie("language"); 292 293 if(languageTypes.ContainsKey(str_countryCode)) 294 { 295 languageCookie.Value = languageTypes[str_countryCode].ToString(); 296 } 297 else{ 298 languageCookie.Value = "0"; 299 } 300 301 languageCookie.Expires = DateTime.Now.AddDays(7); 302 languageCookie.Path = "/"; 303 languageCookie.Domain = ".biolegend.com"; 304 languageCookie.HttpOnly = true; 305 306 System.Web.HttpContext.Current.Response.Cookies.Add(languageCookie); 307 308 @* --- Optimizer --- *@ 309 var minify = GetBoolean("Item.Area.Minify_CSS_And_JavaScript"); 310 var styleBundle = Dna.Optimizer.Renderer.RenderStyles(string.Format("{0}css", designFolder), "-main-styles", null, new[] { "exceptions", "headerFooter" }, minify); 311 var scriptBundle = Dna.Optimizer.Renderer.RenderScripts(string.Format("{0}js", designFolder), "-main-scripts", null, new[] { "exceptions" }, minify); 312 var isPdf = Convert.ToBoolean(Dynamicweb.Context.Current.Request.Params["pdf"]); 313 var isDesktop = GetGlobalValue("Global:Device.IsDesktop"); 314 var isMobile = GetGlobalValue("Global:Device.IsMobile"); 315 var isTablet = GetGlobalValue("Global:Device.IsTablet"); 316 317 /*Google tag manager*/ 318 var googleTagManagerId = Pageview.Area.Item["TagManager"]?.ToString(); 319 /*Google analytics*/ 320 var googleAnalyticsId = Pageview.Area.Item["Analytics"]?.ToString(); 321 } 322 323 <!DOCTYPE HTML> 324 <html lang='@GetGlobalValue("Global:Area.LongLang")'> 325 <head> 326 <title>@GetValue("Title")</title> 327 @GetValue("CopyRightNotice") 328 329 330 @if (isPdf) 331 { 332 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 333 } 334 else 335 { 336 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 337 } 338 339 @* <meta name="viewport" content="initial-scale=1.0, width=device-width, user-scalable=no"> 340 <meta http-equiv="X-UA-Compatible" content="IE=edge"> *@ 341 342 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 343 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 344 <base href="@baseHref"> 345 @renderAlternateTags() 346 347 <meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE"> 348 @if(GetBoolean("Item.Area.DemoSticker")){ 349 <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> 350 } 351 else { 352 if(GetBoolean("Item.Area.NoIndex")){ 353 <meta name="ROBOTS" content="NOINDEX"> 354 } 355 if(GetBoolean("Item.Area.NoFollow")){ 356 <meta name="ROBOTS" content="NOFOLLOW"> 357 } 358 } 359 360 <meta property="og:url:secure_url" content='@GetGlobalValue("Global:Request.Url")'> 361 <meta property="og:type" content='@ogType'> 362 <meta property="og:title" content='@GetString("Title")'> 363 <meta property="og:description" content='@GetString("Meta.Description")'> 364 <meta property="og:image:url" content='@ogImage'> 365 <meta property="og:image:secure_url" content='@ogImage'> 366 <meta property="og:image:width" content='@ogImageWidth'> 367 <meta property="og:image:height" content='@ogImageHeight'> 368 369 @RenderSnippet("metaViewport") 370 @SnippetStart("metaViewport") @SnippetEnd("metaViewport") 371 372 @GetValue("MetaTags") 373 <link rel="shortcut icon" href="@cdnStaticDomain/Files/Templates/Designs/@str_projectName/images/favicon.ico" type="image/x-icon"> 374 <link rel="stylesheet" href="@cdnJsCssDomain@styleBundle"> 375 <link rel="stylesheet" type="text/css" href="@cdnJsCssDomain/Files/Templates/Designs/BioLegend/css/exceptions/print.css" media="print"> 376 377 @RenderSnippet("loadNonResponsive") 378 @SnippetStart("loadNonResponsive") @SnippetEnd("loadNonResponsive") 379 380 @RenderSnippet("forcePrint") 381 @SnippetStart("forcePrint") @SnippetEnd("forcePrint") 382 383 @if (!isPdf) 384 { 385 <script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="fcba3ee2-cd5f-4717-ac84-9a54c43d889f" type="text/javascript" async=""></script> 386 } 387 388 @* Google Tag Manager *@ 389 @if (!string.IsNullOrEmpty(googleTagManagerId)) 390 { 391 <script> 392 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 393 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 394 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 395 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 396 })(window,document,'script','dataLayer','@googleTagManagerId'); 397 </script> 398 } 399 @* End Google Tag Manager *@ 400 401 @* Global site tag (gtag.js) - Google Analytics *@ 402 @if (!string.IsNullOrEmpty(googleAnalyticsId)) 403 { 404 <script async="" src="https://www.googletagmanager.com/gtag/js?id=@googleAnalyticsId"></script> 405 <script> 406 window.dataLayer = window.dataLayer || []; 407 function gtag(){dataLayer.push(arguments);} 408 gtag('js', new Date()); 409 410 gtag('config', '@googleAnalyticsId'); 411 </script> 412 } 413 @* Google Analytics *@ 414 415 @if(!string.IsNullOrEmpty(str_customCSSFile)){ 416 <link href="@cdnJsCssDomain@str_customCSSFile" rel="stylesheet"> 417 } 418 419 420 @RenderSnippet("ExternalResourcesHead") 421 @GetValue("Stylesheets") 422 @GetValue("Javascripts") 423 </head> 424 @str_customCSSFile 425 <body id="body" class="non-non-responsive @str_customCSSDeclaration" data-pageid="@str_pageID" data-coaid="@coaPage" data-culture="" data-browser="@isDesktop" data-ipcountrycode='@Pageview.GlobalTags.GetTagByName("DynamicwebNA:CountryCode").Value.ToString()' data-languageselected='@str_countryCode'> 426 <div id="header-search-bar" class="punchout_@DynamicwebNA.PunchOutFacade.IsPunchOutUser().ToString() logged_@bol_userLogged.ToString()" style="display:none;">&nbsp;</div> 427 428 <!-- Google Tag Manager (noscript) --> 429 @if (!string.IsNullOrEmpty(googleTagManagerId)) 430 { 431 <noscript> 432 <iframe src="https://www.googletagmanager.com/ns.html?id=@googleTagManagerId" height="0" width="0" style="display:none;visibility:hidden"></iframe> 433 </noscript> 434 } 435 <!-- End Google Tag Manager (noscript) --> 436 437 <div class="wrap"> 438 <header data-totalproducts='@totalProdQty' id="blHeader" class="container-fluid noPadding" id="blHeader" data-contrycode="@str_countryCode" data-ipcountrycode='@Pageview.GlobalTags.GetTagByName("DynamicwebNA:CountryCode").Value.ToString()' data-languagecookie='@(System.Web.HttpContext.Current.Request.Cookies["language"] == null ? "" : System.Web.HttpContext.Current.Response.Cookies["language"].Value)'> 439 @* 440 if(GetString("Global.PageId") != GetString("Item.Area.MarketingPage")){ 441 <div style="color:red;">For Marketing site analyses only: Header and footer is loading from page id = <b> @GetString("Global.PageId")</b> instead of page id <b> @GetString("Item.Area.MarketingPage") </b></div> 442 } 443 else { 444 <div style="color:green;">For Marketing site analyses only: Header and footer is loading from the correct page id <b> @GetString("Global.PageId") </b></div> 445 } 446 *@ 447 @ShouldRedirectToSwitchAccount(bol_userLogged, GetLoop("DWExtranetSecondaryUsers"), (Pageview.User?.CurrentSecondaryUser == null ? 0 : Pageview.User.CurrentSecondaryUser?.ID), GetString("Global.PageId"), GetString("Item.Area.MyProfile"), GetString("Item.Area.SwitchAccount"), GetString("Item.Area.MarketingPage")) 448 <div class='container-fluid noPadding headerWrapper @(str_pageID == printPage || str_pageID == coaPage ? "noAffix" : "") @((str_pageID == coaPage && !string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["action"])) ? "coaHidden" : "")'> 449 <div class="container noPadding"> 450 451 452 453 @* Menu Bar *@ 454 455 @if(!String.IsNullOrEmpty(GetString("DwNavigation(menuMain)"))){ 456 <div id="menuMainContainer" class="col-md-12 col-sm-offset-0 noPadding hidden-xs hidden-sm" data-culturearea="@localArea"> 457 <div class="container noPadding"> 458 <nav class="navbar navbar-default"> 459 <div class="navbar-header"> 460 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 461 <i class="fa fa-bars"></i> 462 </button> 463 </div> 464 @* Desktop *@ 465 <div id="navbar" class="navbar-collapse collapse noPadding col-md-8 col-lg-7"> 466 @GetValue("DwNavigation(menuMain)") 467 </div> 468 469 @RenderLoginRegister(bol_userLogged,"desktop",userName,cartDisabled) 470 @RenderMiniCart(cartDisabled,"desktop") 471 472 473 474 475 476 477 478 </nav> 479 </div> 480 </div> 481 } 482 483 484 </div> 485 </div> 486 487 488 489 490 @if (!isPdf) 491 { 492 493 494 @* Tablet *@ 495 <div class='subheader @(str_pageID == printPage || str_pageID == coaPage ? "noAffix" : "") @((str_pageID == coaPage && !string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["action"])) ? "coaHidden" : "")' id="blSubheaderTablet"> 496 <div class="hidden-lg hidden-md hidden-xs col-sm-12 mobileTopBar" id="tabletMenuContainer"> 497 <div id="headerMenuContainerTablet" class="hidden-lg hidden-md hidden-xs col-sm-4"> 498 <button type="button" class="mobile-menu-trigger" id="tabletMenuButton"> 499 <img src="@cdnStaticDomain/Files/Images/BioLegend/header/bars-mobile.png"> 500 <span class="tabletMenuText">Menu</span></button> 501 502 </div> 503 504 @RenderLoginRegister(bol_userLogged,"desktop",userName,cartDisabled) 505 @RenderMiniCart(cartDisabled,"desktop") 506 507 508 </div> 509 510 </div> 511 512 513 514 515 516 517 518 519 @* Mobile *@ 520 <div class='subheader @(str_pageID == printPage || str_pageID == coaPage ? "noAffix" : "") @((str_pageID == coaPage && !string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["action"])) ? "coaHidden" : "")' id="blSubheaderMobile"> 521 522 <div class="hidden-lg hidden-md hidden-sm col-xs-12 mobileTopBar"> 523 <div class="hidden-lg hidden-md hidden-sm col-xs-4"> 524 <button type="button" class="mobile-menu-trigger" id="mobileMenuButton"><i class="fa fa-bars"></i></button> 525 526 </div> 527 528 @RenderLoginRegister(bol_userLogged,"mobile",userName,cartDisabled) 529 @RenderMiniCart(cartDisabled,"mobile") 530 531 532 </div> 533 <div class='hidden-lg hidden-md hidden-sm col-xs-12 mobileBottomBar @(str_pageID == printPage || str_pageID == coaPage ? "noAffix" : "")'> 534 <div class="hidden-lg hidden-md hidden-sm col-xs-4"> 535 <a href="/@localArea"><img src="@cdnStaticDomain/Files/Images/BioLegend/header/Home_Icon_vector.png"></a> 536 </div> 537 538 <div class="hidden-lg hidden-md hidden-sm col-xs-4"> 539 <img src="@cdnStaticDomain/Files/Images/BioLegend/header/Magnifying-Glass.png" id="mobileSearchIcon"> 540 </div> 541 @RenderCountryFlags(str_areaID,referrerUrl,isHomepage,wwOrdering,str_pageID,"mobile") 542 543 544 545 546 547 548 549 </div> 550 551 <div id="mobileMenuContainer">Loading...</div> 552 <div id="mobileSearchContainer" class="col-xs-12 col-sm-12 col-md-8 header-search-bar"> 553 <form action="/@localArea/search-results" autocomplete="off" id="mobileProductSearchForm" method="get"> 554 <fieldset class="col-xs-12 col-sm-12 noPadding"> 555 <input class="mobileSearchField pull-left col-xs-10" id="search-text-mobile" name="Keywords" placeholder="Search For..." type="text" value=""> 556 <button class="mobileSearchButton" type="submit"><img src="@cdnStaticDomain/Files/Images/BioLegend/header/Magnifying-Glass.png"> <span class="hidden">Search</span></button> 557 </fieldset> 558 </form> 559 </div> 560 561 </div> 562 } 563 564 565 566 567 568 569 570 571 </header> 572 573 @if((str_pageID == coaPage) && !string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["action"])){ 574 <div class='container-fluid noPadding headerWrapper noAffix coaHeader'> 575 <div class="container noPadding"> 576 <div class="col-xs-12 col-sm-12 col-md-12 noPadding header-logo-wrapper"> 577 <figure class="header-logo col-xs-3 col-sm-3 col-md-3 text-center"> 578 <img class="hidden-xs target-sticky" src="@cdnStaticDomain/Files/Templates/Designs/BioLegend/images/BioLegendLogo.png" width="200" alt="@companyName" title="@companyName"> 579 </figure> 580 </div> 581 </div> 582 </div> 583 } 584 585 586 587 @if (!isPdf) 588 { 589 @* Desktop *@ 590 <div class='container-fluid subheader @(str_pageID == printPage || str_pageID == coaPage ? "noAffix" : "") @((str_pageID == coaPage && !string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["action"])) ? "coaHidden" : "")' id="blSubheader"> 591 <div class="container"> 592 593 594 <div class="hidden-xs col-sm-12 col-md-12 header-logo-wrapper" id="headerContainer"> 595 <figure class="header-logo col-xs-2 col-sm-3 col-md-3 col-lg-2 text-center"> 596 <a href="/@localArea"> 597 <img class="hidden-xs target-sticky bllogo" src="@cdnStaticDomain/Files/Templates/Designs/BioLegend/images/BioLegendLogo.png" alt="@companyName" title="@companyName"> 598 <img class="img-responsive hidden-xs hidden-sm hidden-md hidden-lg bllogo" src="@cdnStaticDomain/Files/Templates/Designs/BioLegend/images/BioLegendLogo.png" alt="@companyName" title="@companyName"> 599 </a> 600 </figure> 601 602 @RenderHeaderSearchBar(liveSearchPage) 603 604 605 606 607 608 609 610 611 @RenderCountryFlags(str_areaID,referrerUrl,isHomepage,wwOrdering,str_pageID,"desktop") 612 @RenderHeaderSearchBarOptions(liveSearchPage,contentSearchPage) 613 614 </div> 615 616 617 618 619 620 </div> 621 </div> 622 623 624 625 } 626 627 628 629 630 <section id="contentWrapper" class='container-fluid noPadding' style="@containerStyle"> 631 <div class="container"> 632 <div class="row"> 633 @RenderSnippet("topBanner") 634 635 @if (sidebarNavigation != "2" && (relatedPages.Any() || relatedPageProducts.Any())) 636 { 637 if(relatedPages.Any() || relatedPageProducts.Any()){ 638 <div class="@sidebarNavigationClass sidebarNavigation"> 639 @if(relatedPageProducts.Any()){ 640 <span class="relatedProductsHeader">@Translate("relatedProducts","Related Products")</span> 641 <ul> 642 @foreach(var row in relatedPageProducts){ 643 string link = !String.IsNullOrWhiteSpace(row["Page"]) ? "/Default.aspx?ID="+ row["Page"] : row["Page_Link"]; 644 string target = link.Contains("http:") ? "target='_blank'" : ""; 645 string iconSrc = !String.IsNullOrWhiteSpace(row["Icon_Source"]) ? row["Icon_Source"].Replace(".png", "_PD.png").Replace(".jpg", "_PD.jpg") : ""; 646 string itemName = row["PageTitle"]; 647 link = LocalizeLinks(link); 648 649 //int pageID = page.GetInteger("Item.Page.Related_Pages.Value.Page"); 650 //string pageTitle = page.GetString("Item.Page.Related_Pages.Value.PageTitle"); 651 //var pageIcon = "/Files/Images/media_assets/Lit_icon.png"; 652 //string pageLink = page.GetString("Item.Page.Related_Pages.Value.Page_Link"); 653 654 <li> 655 <a href="@link" @target="" class="relatedProductsItem"> 656 @if(!String.IsNullOrWhiteSpace(iconSrc)) 657 { 658 <figure> 659 <img width="20" height="20" src="@cdnStaticDomain@iconSrc" title="@itemName" alt="@itemName"> 660 </figure> 661 } 662 @itemName 663 </a> 664 </li> 665 } 666 </ul> 667 <br><br> 668 } 669 @if(relatedPages.Any()){ 670 <span class="relatedProductsHeader">@Translate("relatedPages","Related Pages")</span> 671 <ul> 672 @foreach(var row in relatedPages){ 673 string link = !String.IsNullOrWhiteSpace(row["Page"]) ? "/Default.aspx?ID="+ row["Page"] : row["Page_Link"]; 674 string target = link.Contains("http:") ? "target='_blank'" : ""; 675 string iconSrc = !String.IsNullOrWhiteSpace(row["Icon_Source"]) ? row["Icon_Source"].Replace(".png", "_PD.png").Replace(".jpg", "_PD.jpg") : ""; 676 string itemName = row["PageTitle"]; 677 link = LocalizeLinks(link); 678 679 //int pageID = page.GetInteger("Item.Page.Related_Pages.Value.Page"); 680 //string pageTitle = page.GetString("Item.Page.Related_Pages.Value.PageTitle"); 681 //var pageIcon = "/Files/Images/media_assets/Lit_icon.png"; 682 //string pageLink = page.GetString("Item.Page.Related_Pages.Value.Page_Link"); 683 684 <li> 685 <a href="@link" @target="" class="relatedProductsItem"> 686 @if(!String.IsNullOrWhiteSpace(iconSrc)) 687 { 688 <figure> 689 <img width="20" height="20" src="@cdnStaticDomain@iconSrc" title="@itemName" alt="@itemName"> 690 </figure> 691 } 692 @itemName 693 </a> 694 </li> 695 } 696 </ul> 697 } 698 </div> 699 } 700 } 701 702 @if(isPdf){ 703 <div class="col-xs-12 col-sm-12 col-md-12 noPadding header-logo-wrapper"> 704 <figure class="header-logo col-xs-3 col-sm-3 col-md-3 text-center"> 705 <img class="img-responsive visible-xs " src="@cdnStaticDomain/Files/Templates/Designs/BioLegend/images/BioLegendLogo.png" width="200"> 706 </figure> 707 </div> 708 } 709 710 <div class="@centralContentClass"> 711 <div class="row"> 712 @inherits RazorTemplateBase<RazorTemplateModel<Template>> 713 @using System; 714 @using System.Linq; 715 @using Dynamicweb.Rendering; 716 717 718 719 @*removed responsive design on product pages 071817 sdt *@ 720 @SnippetStart("loadNonResponsive") 721 <link rel="stylesheet" type="text/css" href="@cdnJsCssDomain/Files/Templates/Designs/BioLegend/css/exceptions/non-responsive.css"> 722 @* <meta name="viewport" content="width=970, initial-scale=1"> *@ 723 @SnippetEnd("loadNonResponsive") 724 725 @RenderSnippet("forcePrintVersion") 726 @SnippetStart("forcePrintVersion") @SnippetEnd("forcePrintVersion") 727 728 @if(!String.IsNullOrEmpty(GetString("DwContent(centralContent)"))){ 729 <section class="col-xs-12"> 730 <div class="row"> 731 @GetValue("DwContent(centralContent)") 732 </div> 733 </section> 734 } 735 @{ 736 //propertyItem is inherited from Master page and hold the propertyItem of the MasterLaguage page of the current page 737 var localHeaderResources = GetString("Item.Page.HeaderResources"); 738 var masterHeaderResources = propertyItem != null && propertyItem["HeaderResources"] != null ? propertyItem["HeaderResources"].ToString() : ""; 739 740 var localFooterResources = GetString("Item.Page.FooterResources"); 741 var masterFooterResources = propertyItem != null && propertyItem["FooterResources"] != null ? propertyItem["FooterResources"].ToString() : ""; 742 743 var headerResources = (localHeaderResources ?? "").Split(new [] { ',' },StringSplitOptions.RemoveEmptyEntries); 744 var footerResources = (localFooterResources ?? "").Split(new [] { ',' },StringSplitOptions.RemoveEmptyEntries); 745 746 headerResources = headerResources.Any() ? headerResources : (masterHeaderResources ?? "").Split(new [] { ',' },StringSplitOptions.RemoveEmptyEntries); 747 footerResources = footerResources.Any() ? footerResources : (masterFooterResources ?? "").Split(new [] { ',' },StringSplitOptions.RemoveEmptyEntries); 748 } 749 750 @SnippetStart("ExternalResourcesHead") 751 @if (headerResources.Any()){ 752 foreach(var resource in headerResources){ 753 var resourceFile = resource;//resource.GetString("Item.Page.HeaderResources.ResourceFile"); 754 var resourceFileExtension = resourceFile.Length > 2 ? resourceFile.Substring(resourceFile.Length - 2) : ""; 755 var resourceLinkEncoded = System.Web.HttpUtility.JavaScriptStringEncode(resourceFile.Substring(1)); 756 757 switch (resourceFileExtension){ 758 case "js": 759 <script src="@cdnJsCssDomain/@resourceLinkEncoded" type='text/javascript'></script> 760 break; 761 case "ss": 762 <link rel='stylesheet' type='text/css' href="@cdnJsCssDomain/@resourceLinkEncoded"> 763 break; 764 case "": 765 break; 766 default: 767 <link rel='stylesheet' type='text/css' href="@cdnJsCssDomain/@resourceLinkEncoded"> 768 break; 769 } 770 } 771 } 772 @SnippetEnd("ExternalResourcesHead") 773 774 @SnippetStart("ExternalResourcesFooter") 775 @if (footerResources.Any()){ 776 foreach(var resource in footerResources){ 777 var resourceFile = resource;//resource.GetString("Item.Page.HeaderResources.ResourceFile"); 778 var resourceFileExtension = resourceFile.Length > 2 ? resourceFile.Substring(resourceFile.Length - 2) : ""; 779 var resourceLinkEncoded = System.Web.HttpUtility.JavaScriptStringEncode(resourceFile.Substring(1)); 780 781 switch (resourceFileExtension){ 782 case "js": 783 <script src="@cdnJsCssDomain/@resourceLinkEncoded" type='text/javascript'></script> 784 break; 785 case "ss": 786 <link rel='stylesheet' type='text/css' href="@cdnJsCssDomain/@resourceLinkEncoded"> 787 break; 788 case "": 789 break; 790 default: 791 <link rel='stylesheet' type='text/css' href="@cdnJsCssDomain/@resourceLinkEncoded"> 792 break; 793 } 794 } 795 } 796 @SnippetEnd("ExternalResourcesFooter") 797 </div> 798 </div> 799 @if (sidebarNavigation != "1" && (relatedPages.Any() || relatedPageProducts.Any())) 800 { 801 if(relatedPages.Any() || relatedPageProducts.Any()){ 802 <div class="@sidebarNavigationClass sidebarNavigation"> 803 @if(relatedPageProducts.Any()){ 804 <span class="relatedProductsHeader">@Translate("relatedProducts","Related Products")</span> 805 <ul> 806 @foreach(var row in relatedPageProducts){ 807 string link = !String.IsNullOrWhiteSpace(row["Page"]) ? "/Default.aspx?ID="+ row["Page"] : row["Page_Link"]; 808 string target = link.Contains("http:") ? "target='_blank'" : ""; 809 string iconSrc = !String.IsNullOrWhiteSpace(row["Icon_Source"]) ? row["Icon_Source"].Replace(".png", "_PD.png").Replace(".jpg", "_PD.jpg") : ""; 810 string itemName = row["PageTitle"]; 811 link = LocalizeLinks(link); 812 813 //int pageID = page.GetInteger("Item.Page.Related_Pages.Value.Page"); 814 //string pageTitle = page.GetString("Item.Page.Related_Pages.Value.PageTitle"); 815 //var pageIcon = "/Files/Images/media_assets/Lit_icon.png"; 816 //string pageLink = page.GetString("Item.Page.Related_Pages.Value.Page_Link"); 817 818 <li> 819 <a href="@link" @target="" class="relatedProductsItem"> 820 @if(!String.IsNullOrWhiteSpace(iconSrc)) 821 { 822 <figure> 823 <img width="20" height="20" src="@cdnStaticDomain@iconSrc" title="@itemName" alt="@itemName"> 824 </figure> 825 } 826 @itemName 827 </a> 828 </li> 829 } 830 </ul> 831 <br><br> 832 } 833 @if(relatedPages.Any()){ 834 <span class="relatedProductsHeader">@Translate("relatedPages","Related Pages")</span> 835 <ul> 836 @foreach(var row in relatedPages){ 837 string link = !String.IsNullOrWhiteSpace(row["Page"]) ? "/Default.aspx?ID="+ row["Page"] : row["Page_Link"]; 838 string target = link.Contains("http:") ? "target='_blank'" : ""; 839 string iconSrc = !String.IsNullOrWhiteSpace(row["Icon_Source"]) ? row["Icon_Source"].Replace(".png", "_PD.png").Replace(".jpg", "_PD.jpg") : ""; 840 string itemName = row["PageTitle"]; 841 link = LocalizeLinks(link); 842 843 //int pageID = page.GetInteger("Item.Page.Related_Pages.Value.Page"); 844 //string pageTitle = page.GetString("Item.Page.Related_Pages.Value.PageTitle"); 845 //var pageIcon = "/Files/Images/media_assets/Lit_icon.png"; 846 //string pageLink = page.GetString("Item.Page.Related_Pages.Value.Page_Link"); 847 848 <li> 849 <a href="@link" @target="" class="relatedProductsItem"> 850 @if(!String.IsNullOrWhiteSpace(iconSrc)) 851 { 852 <figure> 853 <img width="20" height="20" src="@cdnStaticDomain@iconSrc" title="@itemName" alt="@itemName"> 854 </figure> 855 } 856 @itemName 857 </a> 858 </li> 859 } 860 </ul> 861 } 862 </div> 863 } 864 } 865 </div> 866 @if (!isPdf) 867 { 868 <!--Recently Viewed--> 869 <div class="row" id="recentlyViewed"> 870 ProductsHere 871 </div> 872 873 } 874 875 876 877 </div> 878 879 880 </section> 881 </div> 882 883 @if (!isPdf) 884 { 885 886 <div class='container-fluid subfooter @(str_pageID == printPage || str_pageID == coaPage ? "noAffix" : "") @((str_pageID == coaPage && !string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["action"])) ? "coaHidden" : "")'> 887 <div class="container"> 888 <div id="footerLine" class="col-xs-12"><hr></div> 889 </div> 890 891 <div class='container' id="subfooterContainer"> 892 893 @GetValue("DwNavigation(footerMenu)") 894 895 896 @if(@Pageview.GlobalTags.GetTagByName("DynamicwebNA:CountryCode").Value.ToString() != "CN") 897 { 898 <div class="hidden-xs col-xs-3 pull-right" id="socialMedia"> 899 <div id="sunburst"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Sunburst.png"></div> 900 <h2> 901 @Translate("FollowUs","Follow Us") 902 </h2> 903 <div class="col-xs-4"><a href="https://www.linkedin.com/company/biolegend" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Linkedin.png"></a></div> 904 <div class="col-xs-4"><a href="https://www.facebook.com/BioLegend/" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Facebook.png"></a></div> 905 <div class="col-xs-4"><a href="https://twitter.com/BioLegend" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Twitter.png"></a></div> 906 907 </div> 908 909 910 911 912 913 } 914 </div> 915 916 917 <div class="hidden-sm hidden-md hidden-lg hidden-xl col-xs-12" id="socialMediaMobile"> 918 <h2> 919 @Translate("FollowUs","Follow Us") 920 </h2> 921 922 <div class="col-xs-12 footerIconContainer"> 923 <a href="https://www.linkedin.com/company/biolegend" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Linkedin.png"></a> 924 <a href="https://www.facebook.com/BioLegend/" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Facebook.png"></a> 925 <a href="https://twitter.com/BioLegend" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Twitter.png"></a> 926 927 </div> 928 </div> 929 930 </div> 931 932 933 934 <footer id="footer" class="container-fluid footer"> 935 936 <div class="container"> 937 <div class="col-xs-12 col-sm-6 noPadding sloganCompany"> 938 <a href="/@localArea" class="footer-logo"> 939 <img class="bllogo" src="@cdnStaticDomain/Files/Templates/Designs/BioLegend/images/BLlogowhite1.png" title="@companyName" alt="@companyName"> 940 </a> 941 942 </div> 943 944 <div class="col-xs-12 col-sm-6 contactsFooter noPadding"> 945 <span class="col-xs-12 noPadding"> 946 &copy; @DateTime.Now.Year @companyName 947 948 @GetString("Item.Area.Copyright") 949 </span> 950 951 </div> 952 953 954 955 </div> 956 </footer> 957 } 958 959 @if(GetBoolean("Item.Area.DemoMode")){ 960 <div class="demoMode">Demo</div> 961 } 962 @RenderLoginRegisterOverlay(bol_userLogged) 963 </body> 964 965 <script data-id="scriptBundle" src="@cdnJsCssDomain@scriptBundle"></script> 966 @checkCookiePreferences() 967 968 <script type="text/javascript"> 969 @if(string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["pdf"])) 970 { 971 <text>if( window.location.protocol != "https:") 972 window.location.href = "https:" + window.location.href.substring(window.location.protocol.length);</text> 973 } 974 975 @RenderSnippet("jsVariables") 976 @SnippetStart("jsVariables") @SnippetEnd("jsVariables") 977 </script> 978 <script data-id="dwScripts" type="text/javascript"> 979 var obj_formErrorMessages = { 980 str_errorMessagesTitle: "@(HttpUtility.JavaScriptStringEncode(Translate("errorMessagesTitle", "Error")))", 981 str_closeWarning: "@(HttpUtility.JavaScriptStringEncode(Translate("errorMessagesCloseWarning", "close")))", 982 str_emptyField: "@(HttpUtility.JavaScriptStringEncode(Translate("emptyField", "Empty fields")))", 983 str_mustBeEqual: "@(HttpUtility.JavaScriptStringEncode(Translate("equalFields", "Fields must be equal")))", 984 str_cannotBeEqual: "@(HttpUtility.JavaScriptStringEncode(Translate("diferentFields", "Cannot be equal to")))", 985 str_viewFullDetail: "@(HttpUtility.JavaScriptStringEncode(Translate("viewFullDetail", "View full detail")))", 986 str_selectDefault: "@(HttpUtility.JavaScriptStringEncode(Translate("selectDefault", "Select default")))", 987 str_invalidEmail: "@(HttpUtility.JavaScriptStringEncode(Translate("invalidEmail", "Invalid e-mail")))", 988 str_invalidPhoneNumber: "@(HttpUtility.JavaScriptStringEncode(Translate("invalidPhoneNumber", "Invalid phone number")))", 989 str_invalidDate: "@(HttpUtility.JavaScriptStringEncode(Translate("invalidDate", "Invalid date")))", 990 str_checkoutIsUnderMaintenance: "@(HttpUtility.JavaScriptStringEncode(Translate("checkoutIsCurrentlyUnderMaintenance", "Checkout is currently under maintenance and you will only see list prices. You may continue adding products to your shopping cart and complete the checkout process later. Sorry for any inconvenience this may cause.")))" 991 }, 992 obj_loginMessages = { 993 str_login:"@(HttpUtility.JavaScriptStringEncode(Translate("login", "Login")))", 994 str_emailNotExists:"@(HttpUtility.JavaScriptStringEncode(Translate("emailNotExists", "Email not exists")))", 995 str_password:"@(HttpUtility.JavaScriptStringEncode(Translate("password", "Password")))", 996 str_forgotPassword:"@(HttpUtility.JavaScriptStringEncode(Translate("forgotPassword", "Forgot password?")))", 997 str_email:"@(HttpUtility.JavaScriptStringEncode(Translate("email", "Email")))", 998 str_username:"@(HttpUtility.JavaScriptStringEncode(Translate("username", "Username")))", 999 str_recoverPassword:"@(HttpUtility.JavaScriptStringEncode(Translate("recoverPassword", "Recover password")))", 1000 str_errorPassword:"@(HttpUtility.JavaScriptStringEncode(Translate("emptyPassword", "Empty password")))", 1001 str_errorEmailEmpty:"@(HttpUtility.JavaScriptStringEncode(Translate("emptyEmail", "Empty email")))", 1002 str_errorUserEmpty:"@(HttpUtility.JavaScriptStringEncode(Translate("userEmpty", "Empty user")))", 1003 str_errorEmail:"@(HttpUtility.JavaScriptStringEncode(Translate("invalidEmail", "Invalid email")))", 1004 str_fillTheFields:"@(HttpUtility.JavaScriptStringEncode(Translate("fillTheFields", "Fill the fields")))", 1005 str_wrongData:"@(HttpUtility.JavaScriptStringEncode(Translate("wrongData", "Wrong data")))" 1006 }, 1007 obj_addToCartMessages = { 1008 str_productNotFound :"@(HttpUtility.JavaScriptStringEncode(Translate("productNotFound", "Product not found")))", 1009 str_orderContext: '@(GetString("Item.Area.OrderContext"))', 1010 str_pleaseLogin : '@Translate("pleaseLogIn","To make purchases, please login if you are an existing customer. If you do not have an account, request an account after selecting Login.")', 1011 str_guestLimitedFeatures : '@Translate("guestLimitedFeatures","shopping cart items can only be printed, downloaded or emailed.")', 1012 str_guestMayContinue : '@Translate("guestMayContinue","You may continue as a Guest with limited features")', 1013 str_continueAsGuest : '@Translate("continueAsGuest", "Continue as a Guest")' 1014 }, 1015 obj_popupMessages = { 1016 str_tryAgainFinalMessageButton :"@Translate("Ok")", 1017 str_tryAgainButton :"@Translate("Try Again")", 1018 str_cancelButton :"@Translate("Cancel")", 1019 str_tryAgainMessage :"@Translate("Please try again")", 1020 str_tryAgainFinalMessage :"@Translate("Please try again later")" 1021 }, 1022 obj_pages = { 1023 str_minicart:'@str_miniCartPage', 1024 str_cart:'@str_CartPage', 1025 str_relatedProducts: '@str_relatedProductsJson', 1026 str_productsPageID: '@str_productDetailPageID', 1027 str_searchPageID: '@str_searchResultsPageID', 1028 str_searchGroups: '@str_groupAjax' 1029 }, 1030 obj_areaItems = { 1031 bol_isTheCheckoutDisabled : "@(GetBoolean("Item.Area.DisableCheckout.Value") || !TemplatesHelper.IsWebServiceConnectionAvailable())" 1032 }, 1033 obj_user = { 1034 bol_isLogged : '@bol_userLogged', 1035 str_country : '@userCountryCode', 1036 str_state: '@Pageview.User?.State' 1037 }; 1038 </script> 1039 <script type="text/javascript"> 1040 $(function () { 1041 @userNotExist() 1042 @RenderSnippet("jsOnLoadVariables") 1043 @SnippetStart("jsOnLoadVariables") @SnippetEnd("jsOnLoadVariables") 1044 @RenderSnippet("jsOnLoad") 1045 @SnippetStart("jsOnLoad") @SnippetEnd("jsOnLoad") 1046 }); 1047 </script> 1048 @RenderSnippet("SpectraAnalyzer") 1049 @RenderSnippet("SpectranalyzerModal") 1050 @RenderSnippet("ExternalResourcesFooter") 1051 </html> 1052 <!-- @GetGlobalValue("Global:Request.PathAndQuery") --> 1053 <!-- @GetGlobalValue("Global:Request.Url") --> 1054 @if (bol_userLogged) 1055 { 1056 @loadOldCart() 1057 } 1058 1059 @helper userNotExist() { 1060 if(Dynamicweb.Environment.ExecutingContext.IsFrontEnd() && !Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) 1061 { 1062 if(System.Web.HttpContext.Current.Request.Params["Password"] != null && System.Web.HttpContext.Current.Request.Params["Username"] != null) 1063 { 1064 @SnippetStart("jsOnLoad") 1065 @:alert('@Translate("incorrectUsernamePassword","Incorrect user name or password. Please verify your credentials and try again")'); 1066 @SnippetEnd("jsOnLoad") 1067 } 1068 1069 if(System.Web.HttpContext.Current.Request.Params["ForgotPassword"] != null && System.Web.HttpContext.Current.Request.Params["Username"] != null && Convert.ToBoolean(System.Web.HttpContext.Current.Request.Params["ForgotPassword"]) ) 1070 { 1071 @SnippetStart("jsOnLoad") 1072 @:alert('@Translate("Your password has been sent to you by e-mail")'); 1073 @SnippetEnd("jsOnLoad") 1074 } 1075 } 1076 } 1077 1078 @helper RenderHeaderSearchBar(int liveSearchPage) 1079 { 1080 var productDetail = GetString("Item.Area.ProductDetail"); 1081 var searchResultsID = GetInteger("Item.Area.SearchResults"); 1082 var queryStringPage = System.Web.HttpContext.Current.Request.Params["page"] ?? ""; 1083 var queryString = System.Web.HttpContext.Current.Request.Params["queryString"] ?? ""; 1084 var keywordsParam = System.Web.HttpContext.Current.Request.Params["Keywords"] ?? ""; 1085 var valueSearched = !string.IsNullOrWhiteSpace(keywordsParam) ? keywordsParam : queryString; 1086 var autocompletePageID = GetPageIdByNavigationTag("autocompleteFeed"); 1087 1088 //START CUSTOM CODE 1089 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); 1090 var cdnAjaxCalls = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Ajax_Calls", "Ajax_Calls_Domain"); 1091 var cdnVersion = BioLegend.Web.Helpers.CdnFunctions.GetCdnVersion(); 1092 //CUSTOM CODE 1093 1094 <div class="col-xs-12 col-sm-6 col-md-7 col-lg-8 header-search-bar" id="searchFormContainer"> 1095 <div class="form-fields searchMenuItem"> 1096 <form method="get" action="/Default.aspx" id="productSearchForm" autocomplete="off"> 1097 <input type="hidden" id="search-text-target" value="@valueSearched" name="Keywords"> 1098 <input type="hidden" value="@searchResultsID" name="ID" data-productsearch="@searchResultsID"> 1099 <fieldset class="col-xs-12 col-sm-12 noPadding" id="headerSearchBox"> 1100 <input type="text" id="search-text" data-autocomplete-page-id="@autocompletePageID" data-autocomplete-punchout-flag="no" value="@valueSearched" placeholder='@Translate("SearchFor", "Search for")...' class="pull-left col-xs-10" data-cdn-ajax="@cdnAjaxCalls" data-cdn-version="@cdnVersion"> @*CUSTOM CODE*@ 1101 <button type="submit" id="search-text-button" class="col-xs-1"> 1102 <img src="@cdnStaticDomain/Files/Images/BioLegend/header/Magnifying-Glass.png"> 1103 <span class="hidden">@Translate("search", "Search")</span> 1104 </button> 1105 </fieldset> 1106 1107 </form> 1108 </div> 1109 </div> 1110 1111 } 1112 1113 @helper RenderHeaderSearchBarOptions(int liveSearchPage, int contentSearchPage) 1114 { 1115 @*search options div*@ 1116 <div id="search-options"> 1117 1118 </div> 1119 } 1120 1121 @helper RenderLoginRegister(bool userLoggedIn, string loginRegisterView, string userName = "", bool cartDisabled = false) 1122 { 1123 var linkText = userLoggedIn ? Translate("welcomeMessage", "Welcome") : Translate("loginRegister", "Login / Register"); 1124 var classCartDisabled = (!cartDisabled ? "col-xs-2 col-sm-4 col-md-3 col-lg-4" : "col-xs-2 col-sm-4 col-md-3 col-lg-4"); 1125 var str_countryCode_a = GetGlobalValue("Global:Area.Culture.CountryCode"); 1126 1127 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); //CUSTOM CODE 1128 1129 if(loginRegisterView == "desktop"){ 1130 <div class="@classCartDisabled noPadding text-right miniInfoArea" id="headerLoginContainer"> 1131 @if(str_countryCode_a.Equals("JP")){ 1132 <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> 1133 } 1134 else{ 1135 <a id="headerExtranet" href="javascript:showLoginMobile();"> 1136 1137 <span class="hidden-xs" style="color:#fff;"><img src="@cdnStaticDomain/Files/Images/BioLegend/header/UserW.png"> @linkText@(userLoggedIn ? ", "+@userName : " ")</span> 1138 </a> 1139 1140 @*Set the site culture to the user culture*@ 1141 var cultureCode = GetUserCulture(GetLoop("Languages")); 1142 if (!string.IsNullOrEmpty(cultureCode) && GetCurrentCulture() != cultureCode) 1143 { 1144 var url = "/" + cultureCode; 1145 <script> 1146 if (typeof(Storage) !== "undefined") { 1147 var isoCode = "@cultureCode".split("-"); 1148 localStorage["currentCountry"] = isoCode[1]; 1149 } 1150 window.location = "@url"; 1151 </script> 1152 } 1153 } 1154 </div> 1155 } 1156 else{ 1157 1158 1159 <div class="hidden-lg hidden-md hidden-sm col-xs-4"> 1160 @if(str_countryCode_a.Equals("JP")){ 1161 <span>&nbsp;</span> 1162 } 1163 else{ 1164 <a id="headerExtranet" href="javascript:showLoginMobile();"><img src="@cdnStaticDomain/Files/Images/BioLegend/header/UserW.png"></a> 1165 } 1166 </div> 1167 1168 1169 } 1170 } 1171 1172 @helper RenderLoginRegisterOverlay(bool userLoggedIn) 1173 { 1174 <div id="accountContainerOverlay" class="blackOverlay"> 1175 <div class="container"> 1176 @if(userLoggedIn) 1177 { 1178 @RenderAccountMenu() 1179 } 1180 else 1181 { 1182 @RenderLoginForm() 1183 } 1184 </div> 1185 </div> 1186 } 1187 1188 @helper RenderCountryFlags( string str_areaID, string referrerUrl, bool isHomepage, string wwOrdering, string str_pageID, string CountryFlagDisplay ){ 1189 1190 var loop_websiteLanguages = GetLoop("Languages"); 1191 1192 //START CUSTOM CODE 1193 var itemArea = Pageview.Area.Item; 1194 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); 1195 //END CUSTOM CODE 1196 1197 if(CountryFlagDisplay == "desktop"){ 1198 var areaCurrent = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaID)); 1199 var cultureCurrent = CultureInfo.GetCultureInfo(areaCurrent.Culture); 1200 var currencyCurrent = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1201 var currencyCodeCurrent = ""; 1202 foreach (var x in currencyCurrent.Where(x => x.Code == areaCurrent.EcomCurrencyId)) 1203 { 1204 currencyCodeCurrent = x.Symbol.ToString().Trim(); 1205 } 1206 var regionCurrent = new RegionInfo(cultureCurrent.Name); 1207 var str_languageCurrent = areaCurrent.Culture.Split('-'); 1208 var currentLanguageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_languageCurrent[0] + str_languageCurrent[1] + "_flag_resized.gif"; 1209 <div class="col-xs-2 col-sm-3 col-md-2" id="countrySelectorContainer"> 1210 <span id="regionSelectText">@regionCurrent.DisplayName.ToString()</span> <img src="@cdnStaticDomain/Files/Images/BioLegend/header/GlobeP.png" alt='@areaCurrent.Culture' title='@areaCurrent.Culture' class="flagLink"> 1211 1212 <ul class="dropdown-menu col-xs-12" role="menu" id="regionMenu"> 1213 @foreach (var i in loop_websiteLanguages) 1214 { 1215 var str_areaLangID = i.GetString("ID"); 1216 var str_language = i.GetString("Culture").Split('-'); 1217 var thisCulture = i.GetString("Culture").ToLower(); 1218 var thisID = i.GetString("PageID"); 1219 var languageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_language[0] + str_language[1] + "_flag_resized.gif"; 1220 1221 var area = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaLangID)); 1222 var culture = CultureInfo.GetCultureInfo(area.Culture); 1223 var currency = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1224 var currencyCode = ""; 1225 var activeClass = ""; 1226 1227 /* Maintain the query string for languages */ 1228 var test = GetGlobalValue("Global:Request.Query").Replace("ID="+str_pageID,"ID="+i.GetString("PageID")); 1229 1230 if(str_areaLangID == str_areaID){ 1231 activeClass = "activeItem"; 1232 } 1233 1234 foreach (var x in currency.Where(x => x.Code == area.EcomCurrencyId)) 1235 { 1236 currencyCode = x.Symbol.ToString().Trim(); 1237 } 1238 1239 var region = new RegionInfo(culture.Name); 1240 1241 if(!isHomepage){ 1242 var urlParams = ""; 1243 if (HttpContext.Current.Request.QueryString.HasKeys()) { 1244 1245 foreach (var thisKey in HttpContext.Current.Request.QueryString.AllKeys){ 1246 if(thisKey == null){} 1247 else if (thisKey.Equals("ID") || thisKey.Equals("k1") || thisKey.Equals("k2") || thisKey.Equals("k3") || thisKey.Equals("k4") || thisKey.Equals("k5") || thisKey.Equals("k6") || thisKey.Equals("k7") || thisKey.Equals("k8") || thisKey.Equals("k9") || thisKey.Equals("k10") || thisKey.Equals("k11") || thisKey.Equals("k12") || thisKey.Equals("p1") || thisKey.Equals("p2") || thisKey.Equals("p3") || thisKey.Equals("p4") || thisKey.Equals("p5") || thisKey.Equals("p6") || thisKey.Equals("p7") || thisKey.Equals("p8") || thisKey.Equals("p9") || thisKey.Equals("p10") || thisKey.Equals("p11") || thisKey.Equals("p12") || thisKey.Equals("adv1") || thisKey.Equals("adv2") || thisKey.Equals("adv3") || thisKey.Equals("adv4") || thisKey.Equals("adv5") || thisKey.Equals("adv6") || thisKey.Equals("adv7") || thisKey.Equals("adv8")){} 1248 else{ 1249 var thisReturn = HttpContext.Current.Request.QueryString[thisKey]; 1250 urlParams += (!string.IsNullOrEmpty(urlParams) ? "&" : "") + thisKey + "=" + HttpUtility.UrlPathEncode(thisReturn); 1251 } 1252 } 1253 1254 } 1255 else{urlParams = "";} 1256 referrerUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + thisID + (!string.IsNullOrEmpty(urlParams) ? "&" : "") + urlParams); 1257 } 1258 else { 1259 referrerUrl = "/" + thisCulture; 1260 } 1261 1262 <li class="@activeClass col-xs-12 noPadding"> 1263 1264 <a href="#" onclick="changeCountryFlag('@referrerUrl','@region.Name.ToString()');return false;" title='@region.DisplayName.ToString()' class="col-xs-12"> 1265 <img src="@languageFlagSrc" alt='@region.DisplayName.ToString()' title='@region.DisplayName.ToString()'> 1266 <b>@region.DisplayName.ToString()</b>&nbsp;(@currencyCode) @area.EcomCurrencyId 1267 </a> 1268 </li> 1269 } 1270 <li class="col-xs-12 noPadding navwwo"><a href="@wwOrdering">If your country is not listed,<br>click here for <strong>Worldwide Ordering</strong></a></li> 1271 </ul> 1272 </div> 1273 1274 1275 } 1276 else{ 1277 var areaCurrent = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaID)); 1278 var cultureCurrent = CultureInfo.GetCultureInfo(areaCurrent.Culture); 1279 var currencyCurrent = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1280 var currencyCodeCurrent = ""; 1281 foreach (var x in currencyCurrent.Where(x => x.Code == areaCurrent.EcomCurrencyId)) 1282 { 1283 currencyCodeCurrent = x.Symbol.ToString().Trim(); 1284 } 1285 var regionCurrent = new RegionInfo(cultureCurrent.Name); 1286 var str_languageCurrent = areaCurrent.Culture.Split('-'); 1287 var currentLanguageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_languageCurrent[0] + str_languageCurrent[1] + "_flag_resized.gif"; 1288 <div class="hidden-lg hidden-md hidden-sm col-xs-4"> 1289 <img src="@cdnStaticDomain/Files/Images/BioLegend/header/GlobeP.png" alt='@areaCurrent.Culture' class="flagLink" id="mobileLanguageIcon"> 1290 </div> 1291 1292 <div class="mobile-language-wrapper mobileMenuItem" id="mobileLanguageMenu"> 1293 <ul> 1294 @foreach (var i in loop_websiteLanguages) 1295 { 1296 var str_areaLangID = i.GetString("ID"); 1297 var str_language = i.GetString("Culture").Split('-'); 1298 var languageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_language[0] + str_language[1] + "_flag_resized.gif"; 1299 1300 var area = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaLangID)); 1301 var culture = CultureInfo.GetCultureInfo(area.Culture); 1302 var currency = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1303 var currencyCode = ""; 1304 var activeClass = ""; 1305 var thisCulture = i.GetString("Culture").ToLower(); 1306 var thisID = i.GetString("PageID"); 1307 1308 /* Maintain the query string for languages */ 1309 var test = GetGlobalValue("Global:Request.Query").Replace("ID="+str_pageID,"ID="+i.GetString("PageID")); 1310 1311 if(str_areaLangID == str_areaID){ 1312 activeClass = "activeItem"; 1313 } 1314 1315 foreach (var x in currency.Where(x => x.Code == area.EcomCurrencyId)) 1316 { 1317 currencyCode = x.Symbol.ToString().Trim(); 1318 } 1319 1320 var region = new RegionInfo(culture.Name); 1321 1322 if(!isHomepage){ 1323 var urlParams = ""; 1324 if (HttpContext.Current.Request.QueryString.HasKeys()) { 1325 1326 foreach (var thisKey in HttpContext.Current.Request.QueryString.AllKeys){ 1327 if(thisKey == null){} 1328 else if (thisKey.Equals("ID") || thisKey.Equals("k1") || thisKey.Equals("k2") || thisKey.Equals("k3") || thisKey.Equals("k4") || thisKey.Equals("k5") || thisKey.Equals("k6") || thisKey.Equals("k7") || thisKey.Equals("k8") || thisKey.Equals("k9") || thisKey.Equals("k10") || thisKey.Equals("k11") || thisKey.Equals("k12") || thisKey.Equals("p1") || thisKey.Equals("p2") || thisKey.Equals("p3") || thisKey.Equals("p4") || thisKey.Equals("p5") || thisKey.Equals("p6") || thisKey.Equals("p7") || thisKey.Equals("p8") || thisKey.Equals("p9") || thisKey.Equals("p10") || thisKey.Equals("p11") || thisKey.Equals("p12") || thisKey.Equals("adv1") || thisKey.Equals("adv2") || thisKey.Equals("adv3") || thisKey.Equals("adv4") || thisKey.Equals("adv5") || thisKey.Equals("adv6") || thisKey.Equals("adv7") || thisKey.Equals("adv8")){} 1329 else{ 1330 var thisReturn = HttpContext.Current.Request.QueryString[thisKey]; 1331 urlParams += "&" + thisKey + "=" + HttpUtility.UrlPathEncode(thisReturn); 1332 } 1333 } 1334 1335 } 1336 else{urlParams = "";} 1337 referrerUrl = "/Default.aspx?ID=" + @thisID + @urlParams; 1338 } 1339 else { 1340 referrerUrl = "/" + @thisCulture; 1341 } 1342 1343 <li class="@activeClass col-xs-12 noPadding"> 1344 1345 <a href="#" onclick="changeCountryFlag('@referrerUrl','@region.Name.ToString()');return false;" title='@region.DisplayName.ToString()' class="col-xs-12"> 1346 <img src="@languageFlagSrc" alt='@i.GetString("Culture")' title='@i.GetString("Culture")'> 1347 <b>@region.DisplayName.ToString()</b>&nbsp;(@currencyCode) @area.EcomCurrencyId 1348 </a> 1349 </li> 1350 } 1351 <li class="col-xs-12 noPadding navwwo"><a href="@wwOrdering">If your country is not listed,<br>click here for <strong>Worldwide Ordering</strong></a></li> 1352 </ul> 1353 </div> 1354 1355 } 1356 1357 } 1358 1359 @helper RenderAccountMenu() 1360 { 1361 <div id="loginForm" class="col-xs-12 col-sm-4 col-sm-offset-8"> 1362 <span>@Translate("myAccount", "My Account")</span> 1363 <i class="fa fa-close fa-lg"></i> 1364 @if(!String.IsNullOrEmpty(GetString("DwNavigation(myAccountMenu)"))){ 1365 @GetValue("DwNavigation(myAccountMenu)") 1366 } 1367 <a id="logoutBtn" href="/Admin/Public/Extranetlogoff.aspx" class="btn btn-primary">@Translate("logout", "Logout")</a> 1368 </div> 1369 } 1370 1371 @helper RenderLoginForm() 1372 { 1373 var loginLabel = Translate("login", "Login"); 1374 var createAccount = GetString("Item.Area.CreateAccount"); 1375 var viewCart = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetGlobalValue("Global:Request.PathAndQuery")); 1376 var myAccount = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetString("Item.Area.MyAccount")); 1377 var forgotPassword = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + GetString("Item.Area.ResetPassword")) + "?LoginAction=Recovery"; 1378 var autoImpersonate = GetString("Item.Area.AutoImpersonate").Replace("Default.aspx?ID=", ""); 1379 1380 <form action="Default.aspx?ID=@autoImpersonate" id="loginForm" method="post" class="col-xs-12 col-sm-6 col-sm-offset-6 col-lg-4 col-lg-offset-8"> 1381 <div class="hidden"> 1382 <input type="hidden" name="ID" value="@autoImpersonate"> 1383 @*<input type="hidden" value="../Designs/BioLegend/Extranet/recoveryPasswordTemplate.html" name="ForgotPasswordMailTemplate"> 1384 <input type="hidden" value="BioLegend - Password recover" name="ForgotPasswordMailSubject"> 1385 <input type="hidden" value="Your password has been sent to you by e-mail" name="ForgotPasswordConfirm"> 1386 <input type="checkbox" name="ForgotPassword" id="ForgotPasswordCheckbox" value="false" class="hidden">*@ 1387 <input type="hidden" name="DWExtranetUsernameRemember" value="True"> 1388 <input type="hidden" name="DWExtranetPasswordRemember" value="True"> 1389 <input type="hidden" name="referrerID" value="@Pageview.Page.ID"> 1390 <input type="hidden" id="loginRedirect" name="dummyRedirect" value=""> 1391 <input type="hidden" id="jsonAddProduct" name="jsonAddProduct" value=""> 1392 <input type="hidden" name="rawRedirect" value='@GetGlobalValue("Global:Request.PathAndQuery")'> 1393 </div> 1394 1395 <span>@Translate("loginRegister", "Login / Register")</span> 1396 <i class="fa fa-close fa-lg"></i> 1397 1398 <fieldset class="mandatory checkEmail"> 1399 <label for="userEmail">@Translate("emailAddress", "Email Address")</label> 1400 <input type="text" name="Username" id="userEmail"> 1401 </fieldset> 1402 <fieldset class="mandatory"> 1403 <label for="userPassword">@Translate("password", "Password")</label> 1404 <input id="userPassword" type="password" name="Password"> 1405 </fieldset> 1406 <input type="checkbox" name="Autologin"> @Translate("Remember me") 1407 <input type="submit" class="btn btn-primary" value="@loginLabel"> 1408 <div class="forgotButtons"> 1409 @Translate("Forgot your password?") 1410 <a class="pull-right forgotBtn btn btn-default" href="@forgotPassword">@Translate("resetPassword","Reset password?")</a> 1411 </div> 1412 <a href="@createAccount" class="btn btn-default">@Translate("createAccount", "Create an Account")</a> 1413 @*<a href="@viewCart" class="btn btn-default continueAsGuestButton hidden"> 1414 @Translate("continueAsGuest", "Continue as a Guest") 1415 <br> 1416 <small>@Translate("guestLoginMessage","* Shopping cart items can only be printed or emailed")</small> 1417 </a>*@ 1418 </form> 1419 } 1420 1421 @helper ShouldRedirectToSwitchAccount(bool bol_userLogged, List<LoopItem> loop, dynamic SecondaryUserID, string pageID, string myProfile, string switchAccount, string marketingPage){ 1422 if (bol_userLogged) 1423 { 1424 if (DynamicwebNA.PunchOutFacade.IsPunchOutUser()) 1425 { 1426 return; 1427 } 1428 1429 if((SecondaryUserID == 0) && !(pageID.Equals(myProfile.Replace("Default.aspx?ID=", ""))) && !(pageID.Equals(switchAccount.Replace("Default.aspx?ID=", "")))){ 1430 var url = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(switchAccount); 1431 1432 if((pageID.Equals(marketingPage.Replace("Default.aspx?ID=", "")))){ 1433 <div id="switchAccountPage" class="hidden">@url</div> 1434 } 1435 else { 1436 BioLegend.Shared.WebUtility.Redirect(url); 1437 } 1438 } 1439 else if(SecondaryUserID != 0) { 1440 var currentUser = User.GetCurrentUser(); 1441 var secondaryUser = User.GetUserByID(Int32.Parse(SecondaryUserID.ToString())); 1442 // todo remove after DK correct the issue 1443 System.Web.HttpContext.Current.Session["DW_extranet_AccessSecondaryUserID"] = SecondaryUserID; 1444 1445 // Save the current user ID (Impersonated user) 1446 foreach (var customField in secondaryUser.CustomFieldValues) 1447 { 1448 if (customField.CustomField.SystemName == "AccessUser_Last_impersonation_ID") 1449 { 1450 if (customField.Value.ToString() != currentUser.ID.ToString()) 1451 { 1452 customField.Value = currentUser.ID.ToString(); 1453 secondaryUser.Save(); 1454 } 1455 } 1456 } 1457 } 1458 } 1459 } 1460 1461 @helper RenderMiniCart(bool cartDisabled, string miniCartVersion){ 1462 1463 if(!cartDisabled) 1464 { 1465 var item2 = Pageview.Area.Item; 1466 var orderContext2 = item2["OrderContext"] != null ? item2["OrderContext"].ToString() : ""; 1467 var orderlinesContext2 = GetLoop("OrderContextCarts").Where(c => c.GetString("Ecom:OrderContext.ID").Equals(orderContext2)).ToList(); 1468 var totalProdQty2 = orderlinesContext2.FirstOrDefault()?.GetInteger("Ecom:Order.OrderLines.TotalProductQuantity"); 1469 var dateOrderModified = orderlinesContext2.FirstOrDefault()?.GetDate("Ecom:Order.Modified"); 1470 var orderlinesTest= GetLoop("OrderContextCarts").Where(c => c.GetString("Ecom:OrderContext.ID").Equals(orderContext2)); 1471 foreach(var item in GetLoop("OrderContextCarts")) { 1472 if(item.GetString("Ecom:OrderContext.ID") == orderContext2) { 1473 foreach( var orderline in item.GetLoop("OrderLines")) { 1474 if (orderline.GetDate("Ecom:Order:OrderLine.Modified") > dateOrderModified) { 1475 dateOrderModified = orderline.GetDate("Ecom:Order:OrderLine.Modified"); 1476 } 1477 } 1478 } 1479 } 1480 1481 if(miniCartVersion == "mobile"){ 1482 <div class="hidden-lg hidden-md hidden-sm col-xs-4 minicartHeader" id="minicartContainerMobile"> 1483 <a href="javascript:showMobileCart()" id="myCartButton" data-order-modified="@dateOrderModified"> 1484 <img src="/Files/Images/BioLegend/header/CartW.png"> 1485 </a> 1486 </div> 1487 } 1488 else{ 1489 <div class="col-xs-1 col-sm-4 col-md-1 noPadding text-center minicartHeader" id="minicartContainer"> 1490 <a href="javascript:showMobileCart()" id="myCartButton" data-order-modified="@dateOrderModified"> 1491 <span class="hidden-xs header-white-link" style="color:#fff;"><img src="/Files/Images/BioLegend/header/CartW.png"></span> 1492 <span class="cart-count header-white-link" style="color:#fff !important;">(@totalProdQty2)</span> 1493 </a> 1494 </div> 1495 } 1496 } 1497 1498 } 1499 1500 @helper loadOldCart(){ 1501 var savedCartPage = GetPageIdByNavigationTag("SavedCart"); 1502 var thisCart = ""; 1503 var orderContext = GetString("Item.Area.OrderContext"); 1504 var orderlinesContext = GetLoop("OrderContextCarts").Where(c => c.GetString("Ecom:OrderContext.ID").Equals(orderContext)).ToList(); 1505 thisCart = orderlinesContext.FirstOrDefault()?.GetString("Ecom:Order.ID"); 1506 var isCart = GetString("Title") == "BioLegend - View cart" ? true : false; 1507 var dirty = "/dwcountry/saved-cart?SavedCart="; 1508 var sessionCart = ""; 1509 if(System.Web.HttpContext.Current.Session["CurrentCart"] != null){ 1510 sessionCart = System.Web.HttpContext.Current.Session["CurrentCart"].ToString(); 1511 } 1512 1513 1514 var cartList = ""; 1515 if (string.IsNullOrWhiteSpace(thisCart) && (!string.IsNullOrWhiteSpace(sessionCart)) && savedCartPage != Pageview.Page.ID) 1516 { 1517 dirty += sessionCart; 1518 var order = !string.IsNullOrWhiteSpace(sessionCart) ? Dynamicweb.Ecommerce.Orders.Order.GetOrderById(sessionCart) : null; 1519 if(order != null) { 1520 cartList = "["; 1521 var orderlines = order.OrderLines; 1522 foreach (var ol in orderlines) 1523 { 1524 if(!string.IsNullOrWhiteSpace(ol.ProductNumber)){ 1525 cartList += "{catalog : \""+@ol.ProductNumber+"\", qty : \""+@ol.Quantity+"\"},"; 1526 } 1527 } 1528 cartList = cartList + "]"; 1529 cartList = cartList.Replace(",]", "]"); 1530 } 1531 1532 if(!string.IsNullOrWhiteSpace(cartList) && cartList != "[]" && !isCart){ 1533 <script type="text/javascript"> 1534 window.onload = addCatToCart(@cartList); 1535 </script> 1536 } 1537 else if(!string.IsNullOrWhiteSpace(cartList) && cartList != "[]" && isCart){ 1538 <script type="text/javascript"> 1539 document.getElementById("emptyCart").innerHTML = "Loading..."; 1540 document.addEventListener('cartAdded', function (e) { 1541 location.reload(); 1542 }, false); 1543 if (obj_areaItems.bol_isTheCheckoutDisabled == "True" && sessionStorage.getItem('checkoutDisabled') === null) { 1544 document.getElementById("emptyCart").innerHTML = "Checkout is currently disabled. Please try again later."; 1545 } 1546 else{ 1547 window.onload = addCatToCart(@cartList); 1548 } 1549 1550 </script> 1551 } 1552 1553 } 1554 } 1555 1556 @helper checkCookiePreferences(){ 1557 var DWOptin = 0; 1558 if(System.Web.HttpContext.Current.Request.Cookies["Dynamicweb.CookieOptInLevel"] == null){DWOptin = 12;} 1559 else{DWOptin = Int32.Parse(System.Web.HttpContext.Current.Request.Cookies["Dynamicweb.CookieOptInLevel"].Value);} 1560 1561 if(System.Web.HttpContext.Current.Request.Cookies["CookieConsent"] == null){ 1562 <script type="text/javascript"> 1563 window.onload = setOptInCookie(1,@DWOptin); 1564 </script> 1565 } 1566 else{ 1567 if(System.Web.HttpContext.Current.Request.Cookies["CookieConsent"].Value.Equals(0)){ 1568 <script type="text/javascript"> 1569 window.onload = setOptInCookie(1,@DWOptin); 1570 </script> 1571 } 1572 else if(System.Web.HttpContext.Current.Request.Cookies["CookieConsent"].Value.Contains("statistics:true")){ 1573 <script type="text/javascript"> 1574 window.onload = setOptInCookie(2,@DWOptin); 1575 </script> 1576 } 1577 else{} 1578 } 1579 } 1580 1581 @helper renderAlternateTags(){ 1582 1583 1584 var requestHost = GetGlobalValue("Global:Request.Host"); 1585 var baseHref = String.Format("https://{0}",requestHost); 1586 var canonical = GetGlobalValue("Global:Pageview.Url"); 1587 1588 var str_PrettyUrl = baseHref + canonical; 1589 1590 var usTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-us"); 1591 var gbTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-gb"); 1592 var ieTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-ie"); 1593 var atTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "de-at"); 1594 var beTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "nl-be"); 1595 var frTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fr-fr"); 1596 var deTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "de-de"); 1597 var jpTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "ja-jp"); 1598 var luTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fr-lu"); 1599 var nlTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "nl-nl"); 1600 var chTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fr-ch"); 1601 var dkTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-dk"); 1602 var fiTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fi-fi"); 1603 var noTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "nb-no"); 1604 1605 <link rel="alternate" hreflang="en-us" href="@usTag"> 1606 <link rel="alternate" hreflang="en-gb" href="@gbTag"> 1607 <link rel="alternate" hreflang="en-ie" href="@ieTag"> 1608 <link rel="alternate" hreflang="de-at" href="@atTag"> 1609 <link rel="alternate" hreflang="nl-be" href="@beTag"> 1610 <link rel="alternate" hreflang="fr-fr" href="@frTag"> 1611 <link rel="alternate" hreflang="de-de" href="@deTag"> 1612 <link rel="alternate" hreflang="ja-jp" href="@jpTag"> 1613 <link rel="alternate" hreflang="fr-lu" href="@luTag"> 1614 <link rel="alternate" hreflang="nl-nl" href="@nlTag"> 1615 <link rel="alternate" hreflang="fr-ch" href="@chTag"> 1616 <link rel="alternate" hreflang="en-dk" href="@dkTag"> 1617 <link rel="alternate" hreflang="fi-fi" href="@fiTag"> 1618 <link rel="alternate" hreflang="nb-no" href="@noTag"> 1619 1620 } 1621 1622 @functions { 1623 public static string StripHtml(string source) 1624 { 1625 var teste = source.Replace("&gt;",">").Replace("&lt;","<"); 1626 return Regex.Replace(teste, "<.*?>", string.Empty); 1627 } 1628 1629 public static string GetUserCulture(IList<LoopItem> websiteLanguages) 1630 { 1631 if (Dynamicweb.Frontend.PageView.Current().User == null) return string.Empty; 1632 1633 var user = Dynamicweb.Frontend.PageView.Current().User; 1634 var userCulture = websiteLanguages.FirstOrDefault(x => x.GetString("Name").IndexOf(user.Country, StringComparison.InvariantCultureIgnoreCase) != -1); 1635 1636 return userCulture == null ? string.Empty : userCulture.GetString("Culture"); 1637 } 1638 1639 public static string GetCurrentCulture() 1640 { 1641 var areaId = Dynamicweb.Frontend.PageView.Current().Area.ID; 1642 var areaCurrent = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(areaId)); 1643 var currentCulture = areaCurrent.Culture; 1644 return currentCulture; 1645 } 1646 }