Error executing template "Designs/BioLegend/_parsed/index.parsed.cshtml"
System.IO.IOException: The process cannot access the file 'f:\Domains\Sites\www.biolegend.com\Files\System\Diagnostics\Products\Products.index\C\2024-03-28 094051\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_311faf217c4a4b23b39969a86d6be737.Execute() in f:\Domains\Sites\www.biolegend.com\Files\Templates\Designs\BioLegend\_parsed\index.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 @{ 720 var renderNavigation = RenderNavigation(new{template = "breadCrumbs.xslt",expandmode = "pathonly",id = "breadCrumbs"}); 721 var titlePageOrProductName = System.Web.HttpUtility.HtmlDecode(GetString("Title").Replace("<!","<").Replace("&lt;!","&lt;")); 722 var searchPageID = GetString("Item.Area.SearchResults"); 723 } 724 725 @*removed responsive design on product pages 071817 sdt *@ 726 @SnippetStart("loadNonResponsive") 727 <link rel="stylesheet" type="text/css" href="@cdnJsCssDomain/Files/Templates/Designs/BioLegend/css/exceptions/non-responsive.css" /> 728 <meta name="viewport" content="width=970, initial-scale=1"> 729 @SnippetEnd("loadNonResponsive") 730 731 @if(!string.IsNullOrEmpty(renderNavigation) || System.Web.HttpContext.Current.Request.Params["productid"] == null) 732 { 733 <div class="breadCrumbs col-xs-12 hidden-xs"> 734 @renderNavigation 735 </div> 736 } 737 738 @RenderSnippet("forcePrintVersion") 739 @SnippetStart("forcePrintVersion") @SnippetEnd("forcePrintVersion") 740 741 <div class="container-fluid noPadding pageTitle"> 742 <div class="container"> 743 <h1 class='@(searchPageID.Equals(Pageview.Page.ID.ToString()) && System.Web.HttpContext.Current.Request.Params["productid"] == null ? "col-xs-12 col-md-5" : "col-xs-12") noPadding @(titlePageOrProductName == "BioLegend - 404" ? "hidden noPage" : "")'> 744 @if(System.Web.HttpContext.Current.Request.Params["productid"] == null) { 745 @titlePageOrProductName 746 } 747 else{ 748 @RenderSnippet("productName") 749 } 750 </h1> 751 </div> 752 </div> 753 754 @if(Pageview.Page.Parent != null) 755 { 756 if(Pageview.Page.Parent.NavigationTag == "myaccount") 757 { 758 if(!String.IsNullOrEmpty(GetString("DwNavigation(subMenu)"))){ 759 <nav class="navbar navbar-default hidden-print" id="subMenuNav"> 760 <div class="navbar-header"> 761 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar4" aria-expanded="false" aria-controls="navbar4"> 762 <i class="fa fa-bars"></i> 763 </button> 764 </div> 765 <div id="navbar4" class="navbar-collapse collapse"> 766 @GetValue("DwNavigation(subMenu)") 767 </div> 768 </nav> 769 } 770 } 771 } 772 @*limit:StandardParagraph.cshtml,moduleClean.cshtml,EmailMarketingParagraph.cshtml;*@ 773 @if(!String.IsNullOrEmpty(GetString("DwContent(centralContent)"))){ 774 <section class="col-xs-12"> 775 <div id="centralContent">@GetValue("DwContent(centralContent)")</div> 776 </section> 777 } 778 </div> 779 </div> 780 @if (sidebarNavigation != "1" && (relatedPages.Any() || relatedPageProducts.Any())) 781 { 782 if(relatedPages.Any() || relatedPageProducts.Any()){ 783 <div class="@sidebarNavigationClass sidebarNavigation"> 784 @if(relatedPageProducts.Any()){ 785 <span class="relatedProductsHeader">@Translate("relatedProducts","Related Products")</span> 786 <ul> 787 @foreach(var row in relatedPageProducts){ 788 string link = !String.IsNullOrWhiteSpace(row["Page"]) ? "/Default.aspx?ID="+ row["Page"] : row["Page_Link"]; 789 string target = link.Contains("http:") ? "target='_blank'" : ""; 790 string iconSrc = !String.IsNullOrWhiteSpace(row["Icon_Source"]) ? row["Icon_Source"].Replace(".png", "_PD.png").Replace(".jpg", "_PD.jpg") : ""; 791 string itemName = row["PageTitle"]; 792 link = LocalizeLinks(link); 793 794 //int pageID = page.GetInteger("Item.Page.Related_Pages.Value.Page"); 795 //string pageTitle = page.GetString("Item.Page.Related_Pages.Value.PageTitle"); 796 //var pageIcon = "/Files/Images/media_assets/Lit_icon.png"; 797 //string pageLink = page.GetString("Item.Page.Related_Pages.Value.Page_Link"); 798 799 <li> 800 <a href="@link" @target="" class="relatedProductsItem"> 801 @if(!String.IsNullOrWhiteSpace(iconSrc)) 802 { 803 <figure> 804 <img width="20" height="20" src="@cdnStaticDomain@iconSrc" title="@itemName" alt="@itemName"> 805 </figure> 806 } 807 @itemName 808 </a> 809 </li> 810 } 811 </ul> 812 <br><br> 813 } 814 @if(relatedPages.Any()){ 815 <span class="relatedProductsHeader">@Translate("relatedPages","Related Pages")</span> 816 <ul> 817 @foreach(var row in relatedPages){ 818 string link = !String.IsNullOrWhiteSpace(row["Page"]) ? "/Default.aspx?ID="+ row["Page"] : row["Page_Link"]; 819 string target = link.Contains("http:") ? "target='_blank'" : ""; 820 string iconSrc = !String.IsNullOrWhiteSpace(row["Icon_Source"]) ? row["Icon_Source"].Replace(".png", "_PD.png").Replace(".jpg", "_PD.jpg") : ""; 821 string itemName = row["PageTitle"]; 822 link = LocalizeLinks(link); 823 824 //int pageID = page.GetInteger("Item.Page.Related_Pages.Value.Page"); 825 //string pageTitle = page.GetString("Item.Page.Related_Pages.Value.PageTitle"); 826 //var pageIcon = "/Files/Images/media_assets/Lit_icon.png"; 827 //string pageLink = page.GetString("Item.Page.Related_Pages.Value.Page_Link"); 828 829 <li> 830 <a href="@link" @target="" class="relatedProductsItem"> 831 @if(!String.IsNullOrWhiteSpace(iconSrc)) 832 { 833 <figure> 834 <img width="20" height="20" src="@cdnStaticDomain@iconSrc" title="@itemName" alt="@itemName"> 835 </figure> 836 } 837 @itemName 838 </a> 839 </li> 840 } 841 </ul> 842 } 843 </div> 844 } 845 } 846 </div> 847 @if (!isPdf) 848 { 849 <!--Recently Viewed--> 850 <div class="row" id="recentlyViewed"> 851 ProductsHere 852 </div> 853 854 } 855 856 857 858 </div> 859 860 861 </section> 862 </div> 863 864 @if (!isPdf) 865 { 866 867 <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" : "")'> 868 <div class="container"> 869 <div id="footerLine" class="col-xs-12"><hr></div> 870 </div> 871 872 <div class='container' id="subfooterContainer"> 873 874 @GetValue("DwNavigation(footerMenu)") 875 876 877 @if(@Pageview.GlobalTags.GetTagByName("DynamicwebNA:CountryCode").Value.ToString() != "CN") 878 { 879 <div class="hidden-xs col-xs-3 pull-right" id="socialMedia"> 880 <div id="sunburst"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Sunburst.png"></div> 881 <h2> 882 @Translate("FollowUs","Follow Us") 883 </h2> 884 <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> 885 <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> 886 <div class="col-xs-4"><a href="https://twitter.com/BioLegend" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Twitter.png"></a></div> 887 888 </div> 889 890 891 892 893 894 } 895 </div> 896 897 898 <div class="hidden-sm hidden-md hidden-lg hidden-xl col-xs-12" id="socialMediaMobile"> 899 <h2> 900 @Translate("FollowUs","Follow Us") 901 </h2> 902 903 <div class="col-xs-12 footerIconContainer"> 904 <a href="https://www.linkedin.com/company/biolegend" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Linkedin.png"></a> 905 <a href="https://www.facebook.com/BioLegend/" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Facebook.png"></a> 906 <a href="https://twitter.com/BioLegend" target="_blank"><img src="@cdnStaticDomain/Files/Images/BioLegend/Footer/Twitter.png"></a> 907 908 </div> 909 </div> 910 911 </div> 912 913 914 915 <footer id="footer" class="container-fluid footer"> 916 917 <div class="container"> 918 <div class="col-xs-12 col-sm-6 noPadding sloganCompany"> 919 <a href="/@localArea" class="footer-logo"> 920 <img class="bllogo" src="@cdnStaticDomain/Files/Templates/Designs/BioLegend/images/BLlogowhite1.png" title="@companyName" alt="@companyName"> 921 </a> 922 923 </div> 924 925 <div class="col-xs-12 col-sm-6 contactsFooter noPadding"> 926 <span class="col-xs-12 noPadding"> 927 &copy; @DateTime.Now.Year @companyName 928 929 @GetString("Item.Area.Copyright") 930 </span> 931 932 </div> 933 934 935 936 </div> 937 </footer> 938 } 939 940 @if(GetBoolean("Item.Area.DemoMode")){ 941 <div class="demoMode">Demo</div> 942 } 943 @RenderLoginRegisterOverlay(bol_userLogged) 944 </body> 945 946 <script data-id="scriptBundle" src="@cdnJsCssDomain@scriptBundle"></script> 947 @checkCookiePreferences() 948 949 <script type="text/javascript"> 950 @if(string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["pdf"])) 951 { 952 <text>if( window.location.protocol != "https:") 953 window.location.href = "https:" + window.location.href.substring(window.location.protocol.length);</text> 954 } 955 956 @RenderSnippet("jsVariables") 957 @SnippetStart("jsVariables") @SnippetEnd("jsVariables") 958 </script> 959 <script data-id="dwScripts" type="text/javascript"> 960 var obj_formErrorMessages = { 961 str_errorMessagesTitle: "@(HttpUtility.JavaScriptStringEncode(Translate("errorMessagesTitle", "Error")))", 962 str_closeWarning: "@(HttpUtility.JavaScriptStringEncode(Translate("errorMessagesCloseWarning", "close")))", 963 str_emptyField: "@(HttpUtility.JavaScriptStringEncode(Translate("emptyField", "Empty fields")))", 964 str_mustBeEqual: "@(HttpUtility.JavaScriptStringEncode(Translate("equalFields", "Fields must be equal")))", 965 str_cannotBeEqual: "@(HttpUtility.JavaScriptStringEncode(Translate("diferentFields", "Cannot be equal to")))", 966 str_viewFullDetail: "@(HttpUtility.JavaScriptStringEncode(Translate("viewFullDetail", "View full detail")))", 967 str_selectDefault: "@(HttpUtility.JavaScriptStringEncode(Translate("selectDefault", "Select default")))", 968 str_invalidEmail: "@(HttpUtility.JavaScriptStringEncode(Translate("invalidEmail", "Invalid e-mail")))", 969 str_invalidPhoneNumber: "@(HttpUtility.JavaScriptStringEncode(Translate("invalidPhoneNumber", "Invalid phone number")))", 970 str_invalidDate: "@(HttpUtility.JavaScriptStringEncode(Translate("invalidDate", "Invalid date")))", 971 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.")))" 972 }, 973 obj_loginMessages = { 974 str_login:"@(HttpUtility.JavaScriptStringEncode(Translate("login", "Login")))", 975 str_emailNotExists:"@(HttpUtility.JavaScriptStringEncode(Translate("emailNotExists", "Email not exists")))", 976 str_password:"@(HttpUtility.JavaScriptStringEncode(Translate("password", "Password")))", 977 str_forgotPassword:"@(HttpUtility.JavaScriptStringEncode(Translate("forgotPassword", "Forgot password?")))", 978 str_email:"@(HttpUtility.JavaScriptStringEncode(Translate("email", "Email")))", 979 str_username:"@(HttpUtility.JavaScriptStringEncode(Translate("username", "Username")))", 980 str_recoverPassword:"@(HttpUtility.JavaScriptStringEncode(Translate("recoverPassword", "Recover password")))", 981 str_errorPassword:"@(HttpUtility.JavaScriptStringEncode(Translate("emptyPassword", "Empty password")))", 982 str_errorEmailEmpty:"@(HttpUtility.JavaScriptStringEncode(Translate("emptyEmail", "Empty email")))", 983 str_errorUserEmpty:"@(HttpUtility.JavaScriptStringEncode(Translate("userEmpty", "Empty user")))", 984 str_errorEmail:"@(HttpUtility.JavaScriptStringEncode(Translate("invalidEmail", "Invalid email")))", 985 str_fillTheFields:"@(HttpUtility.JavaScriptStringEncode(Translate("fillTheFields", "Fill the fields")))", 986 str_wrongData:"@(HttpUtility.JavaScriptStringEncode(Translate("wrongData", "Wrong data")))" 987 }, 988 obj_addToCartMessages = { 989 str_productNotFound :"@(HttpUtility.JavaScriptStringEncode(Translate("productNotFound", "Product not found")))", 990 str_orderContext: '@(GetString("Item.Area.OrderContext"))', 991 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.")', 992 str_guestLimitedFeatures : '@Translate("guestLimitedFeatures","shopping cart items can only be printed, downloaded or emailed.")', 993 str_guestMayContinue : '@Translate("guestMayContinue","You may continue as a Guest with limited features")', 994 str_continueAsGuest : '@Translate("continueAsGuest", "Continue as a Guest")' 995 }, 996 obj_popupMessages = { 997 str_tryAgainFinalMessageButton :"@Translate("Ok")", 998 str_tryAgainButton :"@Translate("Try Again")", 999 str_cancelButton :"@Translate("Cancel")", 1000 str_tryAgainMessage :"@Translate("Please try again")", 1001 str_tryAgainFinalMessage :"@Translate("Please try again later")" 1002 }, 1003 obj_pages = { 1004 str_minicart:'@str_miniCartPage', 1005 str_cart:'@str_CartPage', 1006 str_relatedProducts: '@str_relatedProductsJson', 1007 str_productsPageID: '@str_productDetailPageID', 1008 str_searchPageID: '@str_searchResultsPageID', 1009 str_searchGroups: '@str_groupAjax' 1010 }, 1011 obj_areaItems = { 1012 bol_isTheCheckoutDisabled : "@(GetBoolean("Item.Area.DisableCheckout.Value") || !TemplatesHelper.IsWebServiceConnectionAvailable())" 1013 }, 1014 obj_user = { 1015 bol_isLogged : '@bol_userLogged', 1016 str_country : '@userCountryCode', 1017 str_state: '@Pageview.User?.State' 1018 }; 1019 </script> 1020 <script type="text/javascript"> 1021 $(function () { 1022 @userNotExist() 1023 @RenderSnippet("jsOnLoadVariables") 1024 @SnippetStart("jsOnLoadVariables") @SnippetEnd("jsOnLoadVariables") 1025 @RenderSnippet("jsOnLoad") 1026 @SnippetStart("jsOnLoad") @SnippetEnd("jsOnLoad") 1027 }); 1028 </script> 1029 @RenderSnippet("SpectraAnalyzer") 1030 @RenderSnippet("SpectranalyzerModal") 1031 @RenderSnippet("ExternalResourcesFooter") 1032 </html> 1033 <!-- @GetGlobalValue("Global:Request.PathAndQuery") --> 1034 <!-- @GetGlobalValue("Global:Request.Url") --> 1035 @if (bol_userLogged) 1036 { 1037 @loadOldCart() 1038 } 1039 1040 @helper userNotExist() { 1041 if(Dynamicweb.Environment.ExecutingContext.IsFrontEnd() && !Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) 1042 { 1043 if(System.Web.HttpContext.Current.Request.Params["Password"] != null && System.Web.HttpContext.Current.Request.Params["Username"] != null) 1044 { 1045 @SnippetStart("jsOnLoad") 1046 @:alert('@Translate("incorrectUsernamePassword","Incorrect user name or password. Please verify your credentials and try again")'); 1047 @SnippetEnd("jsOnLoad") 1048 } 1049 1050 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"]) ) 1051 { 1052 @SnippetStart("jsOnLoad") 1053 @:alert('@Translate("Your password has been sent to you by e-mail")'); 1054 @SnippetEnd("jsOnLoad") 1055 } 1056 } 1057 } 1058 1059 @helper RenderHeaderSearchBar(int liveSearchPage) 1060 { 1061 var productDetail = GetString("Item.Area.ProductDetail"); 1062 var searchResultsID = GetInteger("Item.Area.SearchResults"); 1063 var queryStringPage = System.Web.HttpContext.Current.Request.Params["page"] ?? ""; 1064 var queryString = System.Web.HttpContext.Current.Request.Params["queryString"] ?? ""; 1065 var keywordsParam = System.Web.HttpContext.Current.Request.Params["Keywords"] ?? ""; 1066 var valueSearched = !string.IsNullOrWhiteSpace(keywordsParam) ? keywordsParam : queryString; 1067 var autocompletePageID = GetPageIdByNavigationTag("autocompleteFeed"); 1068 1069 //START CUSTOM CODE 1070 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); 1071 var cdnAjaxCalls = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Ajax_Calls", "Ajax_Calls_Domain"); 1072 var cdnVersion = BioLegend.Web.Helpers.CdnFunctions.GetCdnVersion(); 1073 //CUSTOM CODE 1074 1075 <div class="col-xs-12 col-sm-6 col-md-7 col-lg-8 header-search-bar" id="searchFormContainer"> 1076 <div class="form-fields searchMenuItem"> 1077 <form method="get" action="/Default.aspx" id="productSearchForm" autocomplete="off"> 1078 <input type="hidden" id="search-text-target" value="@valueSearched" name="Keywords"> 1079 <input type="hidden" value="@searchResultsID" name="ID" data-productsearch="@searchResultsID"> 1080 <fieldset class="col-xs-12 col-sm-12 noPadding" id="headerSearchBox"> 1081 <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*@ 1082 <button type="submit" id="search-text-button" class="col-xs-1"> 1083 <img src="@cdnStaticDomain/Files/Images/BioLegend/header/Magnifying-Glass.png"> 1084 <span class="hidden">@Translate("search", "Search")</span> 1085 </button> 1086 </fieldset> 1087 1088 </form> 1089 </div> 1090 </div> 1091 1092 } 1093 1094 @helper RenderHeaderSearchBarOptions(int liveSearchPage, int contentSearchPage) 1095 { 1096 @*search options div*@ 1097 <div id="search-options"> 1098 1099 </div> 1100 } 1101 1102 @helper RenderLoginRegister(bool userLoggedIn, string loginRegisterView, string userName = "", bool cartDisabled = false) 1103 { 1104 var linkText = userLoggedIn ? Translate("welcomeMessage", "Welcome") : Translate("loginRegister", "Login / Register"); 1105 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"); 1106 var str_countryCode_a = GetGlobalValue("Global:Area.Culture.CountryCode"); 1107 1108 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); //CUSTOM CODE 1109 1110 if(loginRegisterView == "desktop"){ 1111 <div class="@classCartDisabled noPadding text-right miniInfoArea" id="headerLoginContainer"> 1112 @if(str_countryCode_a.Equals("JP")){ 1113 <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> 1114 } 1115 else{ 1116 <a id="headerExtranet" href="javascript:showLoginMobile();"> 1117 1118 <span class="hidden-xs" style="color:#fff;"><img src="@cdnStaticDomain/Files/Images/BioLegend/header/UserW.png"> @linkText@(userLoggedIn ? ", "+@userName : " ")</span> 1119 </a> 1120 1121 @*Set the site culture to the user culture*@ 1122 var cultureCode = GetUserCulture(GetLoop("Languages")); 1123 if (!string.IsNullOrEmpty(cultureCode) && GetCurrentCulture() != cultureCode) 1124 { 1125 var url = "/" + cultureCode; 1126 <script> 1127 if (typeof(Storage) !== "undefined") { 1128 var isoCode = "@cultureCode".split("-"); 1129 localStorage["currentCountry"] = isoCode[1]; 1130 } 1131 window.location = "@url"; 1132 </script> 1133 } 1134 } 1135 </div> 1136 } 1137 else{ 1138 1139 1140 <div class="hidden-lg hidden-md hidden-sm col-xs-4"> 1141 @if(str_countryCode_a.Equals("JP")){ 1142 <span>&nbsp;</span> 1143 } 1144 else{ 1145 <a id="headerExtranet" href="javascript:showLoginMobile();"><img src="@cdnStaticDomain/Files/Images/BioLegend/header/UserW.png"></a> 1146 } 1147 </div> 1148 1149 1150 } 1151 } 1152 1153 @helper RenderLoginRegisterOverlay(bool userLoggedIn) 1154 { 1155 <div id="accountContainerOverlay" class="blackOverlay"> 1156 <div class="container"> 1157 @if(userLoggedIn) 1158 { 1159 @RenderAccountMenu() 1160 } 1161 else 1162 { 1163 @RenderLoginForm() 1164 } 1165 </div> 1166 </div> 1167 } 1168 1169 @helper RenderCountryFlags( string str_areaID, string referrerUrl, bool isHomepage, string wwOrdering, string str_pageID, string CountryFlagDisplay ){ 1170 1171 var loop_websiteLanguages = GetLoop("Languages"); 1172 1173 //START CUSTOM CODE 1174 var itemArea = Pageview.Area.Item; 1175 var cdnStaticDomain = BioLegend.Web.Helpers.CdnFunctions.GetCdnByType("Static_Content", "Static_Content_Domain"); 1176 //END CUSTOM CODE 1177 1178 if(CountryFlagDisplay == "desktop"){ 1179 var areaCurrent = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaID)); 1180 var cultureCurrent = CultureInfo.GetCultureInfo(areaCurrent.Culture); 1181 var currencyCurrent = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1182 var currencyCodeCurrent = ""; 1183 foreach (var x in currencyCurrent.Where(x => x.Code == areaCurrent.EcomCurrencyId)) 1184 { 1185 currencyCodeCurrent = x.Symbol.ToString().Trim(); 1186 } 1187 var regionCurrent = new RegionInfo(cultureCurrent.Name); 1188 var str_languageCurrent = areaCurrent.Culture.Split('-'); 1189 var currentLanguageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_languageCurrent[0] + str_languageCurrent[1] + "_flag_resized.gif"; 1190 <div class="col-xs-2 col-sm-3 col-md-2" id="countrySelectorContainer"> 1191 <span id="regionSelectText">@regionCurrent.DisplayName.ToString()</span> <img src="@cdnStaticDomain/Files/Images/BioLegend/header/GlobeP.png" alt='@areaCurrent.Culture' title='@areaCurrent.Culture' class="flagLink"> 1192 1193 <ul class="dropdown-menu col-xs-12" role="menu" id="regionMenu"> 1194 @foreach (var i in loop_websiteLanguages) 1195 { 1196 var str_areaLangID = i.GetString("ID"); 1197 var str_language = i.GetString("Culture").Split('-'); 1198 var thisCulture = i.GetString("Culture").ToLower(); 1199 var thisID = i.GetString("PageID"); 1200 var languageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_language[0] + str_language[1] + "_flag_resized.gif"; 1201 1202 var area = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaLangID)); 1203 var culture = CultureInfo.GetCultureInfo(area.Culture); 1204 var currency = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1205 var currencyCode = ""; 1206 var activeClass = ""; 1207 1208 /* Maintain the query string for languages */ 1209 var test = GetGlobalValue("Global:Request.Query").Replace("ID="+str_pageID,"ID="+i.GetString("PageID")); 1210 1211 if(str_areaLangID == str_areaID){ 1212 activeClass = "activeItem"; 1213 } 1214 1215 foreach (var x in currency.Where(x => x.Code == area.EcomCurrencyId)) 1216 { 1217 currencyCode = x.Symbol.ToString().Trim(); 1218 } 1219 1220 var region = new RegionInfo(culture.Name); 1221 1222 if(!isHomepage){ 1223 var urlParams = ""; 1224 if (HttpContext.Current.Request.QueryString.HasKeys()) { 1225 1226 foreach (var thisKey in HttpContext.Current.Request.QueryString.AllKeys){ 1227 if(thisKey == null){} 1228 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")){} 1229 else{ 1230 var thisReturn = HttpContext.Current.Request.QueryString[thisKey]; 1231 urlParams += (!string.IsNullOrEmpty(urlParams) ? "&" : "") + thisKey + "=" + HttpUtility.UrlPathEncode(thisReturn); 1232 } 1233 } 1234 1235 } 1236 else{urlParams = "";} 1237 referrerUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + thisID + (!string.IsNullOrEmpty(urlParams) ? "&" : "") + urlParams); 1238 } 1239 else { 1240 referrerUrl = "/" + thisCulture; 1241 } 1242 1243 <li class="@activeClass col-xs-12 noPadding"> 1244 1245 <a href="#" onclick="changeCountryFlag('@referrerUrl','@region.Name.ToString()');return false;" title='@region.DisplayName.ToString()' class="col-xs-12"> 1246 <img src="@languageFlagSrc" alt='@region.DisplayName.ToString()' title='@region.DisplayName.ToString()'> 1247 <b>@region.DisplayName.ToString()</b>&nbsp;(@currencyCode) @area.EcomCurrencyId 1248 </a> 1249 </li> 1250 } 1251 <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> 1252 </ul> 1253 </div> 1254 1255 1256 } 1257 else{ 1258 var areaCurrent = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaID)); 1259 var cultureCurrent = CultureInfo.GetCultureInfo(areaCurrent.Culture); 1260 var currencyCurrent = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1261 var currencyCodeCurrent = ""; 1262 foreach (var x in currencyCurrent.Where(x => x.Code == areaCurrent.EcomCurrencyId)) 1263 { 1264 currencyCodeCurrent = x.Symbol.ToString().Trim(); 1265 } 1266 var regionCurrent = new RegionInfo(cultureCurrent.Name); 1267 var str_languageCurrent = areaCurrent.Culture.Split('-'); 1268 var currentLanguageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_languageCurrent[0] + str_languageCurrent[1] + "_flag_resized.gif"; 1269 <div class="hidden-lg hidden-md hidden-sm col-xs-4"> 1270 <img src="@cdnStaticDomain/Files/Images/BioLegend/header/GlobeP.png" alt='@areaCurrent.Culture' class="flagLink" id="mobileLanguageIcon"> 1271 </div> 1272 1273 <div class="mobile-language-wrapper mobileMenuItem" id="mobileLanguageMenu"> 1274 <ul> 1275 @foreach (var i in loop_websiteLanguages) 1276 { 1277 var str_areaLangID = i.GetString("ID"); 1278 var str_language = i.GetString("Culture").Split('-'); 1279 var languageFlagSrc = cdnStaticDomain + "/Files/Templates/Designs/BioLegend/images/icons/" + str_language[0] + str_language[1] + "_flag_resized.gif"; 1280 1281 var area = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(str_areaLangID)); 1282 var culture = CultureInfo.GetCultureInfo(area.Culture); 1283 var currency = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); 1284 var currencyCode = ""; 1285 var activeClass = ""; 1286 var thisCulture = i.GetString("Culture").ToLower(); 1287 var thisID = i.GetString("PageID"); 1288 1289 /* Maintain the query string for languages */ 1290 var test = GetGlobalValue("Global:Request.Query").Replace("ID="+str_pageID,"ID="+i.GetString("PageID")); 1291 1292 if(str_areaLangID == str_areaID){ 1293 activeClass = "activeItem"; 1294 } 1295 1296 foreach (var x in currency.Where(x => x.Code == area.EcomCurrencyId)) 1297 { 1298 currencyCode = x.Symbol.ToString().Trim(); 1299 } 1300 1301 var region = new RegionInfo(culture.Name); 1302 1303 if(!isHomepage){ 1304 var urlParams = ""; 1305 if (HttpContext.Current.Request.QueryString.HasKeys()) { 1306 1307 foreach (var thisKey in HttpContext.Current.Request.QueryString.AllKeys){ 1308 if(thisKey == null){} 1309 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")){} 1310 else{ 1311 var thisReturn = HttpContext.Current.Request.QueryString[thisKey]; 1312 urlParams += "&" + thisKey + "=" + HttpUtility.UrlPathEncode(thisReturn); 1313 } 1314 } 1315 1316 } 1317 else{urlParams = "";} 1318 referrerUrl = "/Default.aspx?ID=" + @thisID + @urlParams; 1319 } 1320 else { 1321 referrerUrl = "/" + @thisCulture; 1322 } 1323 1324 <li class="@activeClass col-xs-12 noPadding"> 1325 1326 <a href="#" onclick="changeCountryFlag('@referrerUrl','@region.Name.ToString()');return false;" title='@region.DisplayName.ToString()' class="col-xs-12"> 1327 <img src="@languageFlagSrc" alt='@i.GetString("Culture")' title='@i.GetString("Culture")'> 1328 <b>@region.DisplayName.ToString()</b>&nbsp;(@currencyCode) @area.EcomCurrencyId 1329 </a> 1330 </li> 1331 } 1332 <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> 1333 </ul> 1334 </div> 1335 1336 } 1337 1338 } 1339 1340 @helper RenderAccountMenu() 1341 { 1342 <div id="loginForm" class="col-xs-12 col-sm-4 col-sm-offset-8"> 1343 <span>@Translate("myAccount", "My Account")</span> 1344 <i class="fa fa-close fa-lg"></i> 1345 @if(!String.IsNullOrEmpty(GetString("DwNavigation(myAccountMenu)"))){ 1346 @GetValue("DwNavigation(myAccountMenu)") 1347 } 1348 <a id="logoutBtn" href="/Admin/Public/Extranetlogoff.aspx" class="btn btn-primary">@Translate("logout", "Logout")</a> 1349 </div> 1350 } 1351 1352 @helper RenderLoginForm() 1353 { 1354 var loginLabel = Translate("login", "Login"); 1355 var createAccount = GetString("Item.Area.CreateAccount"); 1356 var viewCart = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetGlobalValue("Global:Request.PathAndQuery")); 1357 var myAccount = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(GetString("Item.Area.MyAccount")); 1358 var forgotPassword = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + GetString("Item.Area.ResetPassword")) + "?LoginAction=Recovery"; 1359 var autoImpersonate = GetString("Item.Area.AutoImpersonate").Replace("Default.aspx?ID=", ""); 1360 1361 <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"> 1362 <div class="hidden"> 1363 <input type="hidden" name="ID" value="@autoImpersonate"> 1364 @*<input type="hidden" value="../Designs/BioLegend/Extranet/recoveryPasswordTemplate.html" name="ForgotPasswordMailTemplate"> 1365 <input type="hidden" value="BioLegend - Password recover" name="ForgotPasswordMailSubject"> 1366 <input type="hidden" value="Your password has been sent to you by e-mail" name="ForgotPasswordConfirm"> 1367 <input type="checkbox" name="ForgotPassword" id="ForgotPasswordCheckbox" value="false" class="hidden">*@ 1368 <input type="hidden" name="DWExtranetUsernameRemember" value="True"> 1369 <input type="hidden" name="DWExtranetPasswordRemember" value="True"> 1370 <input type="hidden" name="referrerID" value="@Pageview.Page.ID"> 1371 <input type="hidden" id="loginRedirect" name="dummyRedirect" value=""> 1372 <input type="hidden" id="jsonAddProduct" name="jsonAddProduct" value=""> 1373 <input type="hidden" name="rawRedirect" value='@GetGlobalValue("Global:Request.PathAndQuery")'> 1374 </div> 1375 1376 <span>@Translate("loginRegister", "Login / Register")</span> 1377 <i class="fa fa-close fa-lg"></i> 1378 1379 <fieldset class="mandatory checkEmail"> 1380 <label for="userEmail">@Translate("emailAddress", "Email Address")</label> 1381 <input type="text" name="Username" id="userEmail"> 1382 </fieldset> 1383 <fieldset class="mandatory"> 1384 <label for="userPassword">@Translate("password", "Password")</label> 1385 <input id="userPassword" type="password" name="Password"> 1386 </fieldset> 1387 <input type="checkbox" name="Autologin"> @Translate("Remember me") 1388 <input type="submit" class="btn btn-primary" value="@loginLabel"> 1389 <div class="forgotButtons"> 1390 @Translate("Forgot your password?") 1391 <a class="pull-right forgotBtn btn btn-default" href="@forgotPassword">@Translate("resetPassword","Reset password?")</a> 1392 </div> 1393 <a href="@createAccount" class="btn btn-default">@Translate("createAccount", "Create an Account")</a> 1394 @*<a href="@viewCart" class="btn btn-default continueAsGuestButton hidden"> 1395 @Translate("continueAsGuest", "Continue as a Guest") 1396 <br> 1397 <small>@Translate("guestLoginMessage","* Shopping cart items can only be printed or emailed")</small> 1398 </a>*@ 1399 </form> 1400 } 1401 1402 @helper ShouldRedirectToSwitchAccount(bool bol_userLogged, List<LoopItem> loop, dynamic SecondaryUserID, string pageID, string myProfile, string switchAccount, string marketingPage){ 1403 if (bol_userLogged) 1404 { 1405 if (DynamicwebNA.PunchOutFacade.IsPunchOutUser()) 1406 { 1407 return; 1408 } 1409 1410 if((SecondaryUserID == 0) && !(pageID.Equals(myProfile.Replace("Default.aspx?ID=", ""))) && !(pageID.Equals(switchAccount.Replace("Default.aspx?ID=", "")))){ 1411 var url = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(switchAccount); 1412 1413 if((pageID.Equals(marketingPage.Replace("Default.aspx?ID=", "")))){ 1414 <div id="switchAccountPage" class="hidden">@url</div> 1415 } 1416 else { 1417 BioLegend.Shared.WebUtility.Redirect(url); 1418 } 1419 } 1420 else if(SecondaryUserID != 0) { 1421 var currentUser = User.GetCurrentUser(); 1422 var secondaryUser = User.GetUserByID(Int32.Parse(SecondaryUserID.ToString())); 1423 // todo remove after DK correct the issue 1424 System.Web.HttpContext.Current.Session["DW_extranet_AccessSecondaryUserID"] = SecondaryUserID; 1425 1426 // Save the current user ID (Impersonated user) 1427 foreach (var customField in secondaryUser.CustomFieldValues) 1428 { 1429 if (customField.CustomField.SystemName == "AccessUser_Last_impersonation_ID") 1430 { 1431 if (customField.Value.ToString() != currentUser.ID.ToString()) 1432 { 1433 customField.Value = currentUser.ID.ToString(); 1434 secondaryUser.Save(); 1435 } 1436 } 1437 } 1438 } 1439 } 1440 } 1441 1442 @helper RenderMiniCart(bool cartDisabled, string miniCartVersion){ 1443 1444 if(!cartDisabled) 1445 { 1446 var item2 = Pageview.Area.Item; 1447 var orderContext2 = item2["OrderContext"] != null ? item2["OrderContext"].ToString() : ""; 1448 var orderlinesContext2 = GetLoop("OrderContextCarts").Where(c => c.GetString("Ecom:OrderContext.ID").Equals(orderContext2)).ToList(); 1449 var totalProdQty2 = orderlinesContext2.FirstOrDefault()?.GetInteger("Ecom:Order.OrderLines.TotalProductQuantity"); 1450 var dateOrderModified = orderlinesContext2.FirstOrDefault()?.GetDate("Ecom:Order.Modified"); 1451 var orderlinesTest= GetLoop("OrderContextCarts").Where(c => c.GetString("Ecom:OrderContext.ID").Equals(orderContext2)); 1452 foreach(var item in GetLoop("OrderContextCarts")) { 1453 if(item.GetString("Ecom:OrderContext.ID") == orderContext2) { 1454 foreach( var orderline in item.GetLoop("OrderLines")) { 1455 if (orderline.GetDate("Ecom:Order:OrderLine.Modified") > dateOrderModified) { 1456 dateOrderModified = orderline.GetDate("Ecom:Order:OrderLine.Modified"); 1457 } 1458 } 1459 } 1460 } 1461 1462 if(miniCartVersion == "mobile"){ 1463 <div class="hidden-lg hidden-md hidden-sm col-xs-4 minicartHeader" id="minicartContainerMobile"> 1464 <a href="javascript:showMobileCart()" id="myCartButton" data-order-modified="@dateOrderModified"> 1465 <img src="/Files/Images/BioLegend/header/CartW.png"> 1466 </a> 1467 </div> 1468 } 1469 else{ 1470 <div class="col-xs-1 col-sm-4 col-md-1 noPadding text-center minicartHeader" id="minicartContainer"> 1471 <a href="javascript:showMobileCart()" id="myCartButton" data-order-modified="@dateOrderModified"> 1472 <span class="hidden-xs header-white-link" style="color:#fff;"><img src="/Files/Images/BioLegend/header/CartW.png"></span> 1473 <span class="cart-count header-white-link" style="color:#fff !important;">(@totalProdQty2)</span> 1474 </a> 1475 </div> 1476 } 1477 } 1478 1479 } 1480 1481 @helper loadOldCart(){ 1482 var savedCartPage = GetPageIdByNavigationTag("SavedCart"); 1483 var thisCart = ""; 1484 var orderContext = GetString("Item.Area.OrderContext"); 1485 var orderlinesContext = GetLoop("OrderContextCarts").Where(c => c.GetString("Ecom:OrderContext.ID").Equals(orderContext)).ToList(); 1486 thisCart = orderlinesContext.FirstOrDefault()?.GetString("Ecom:Order.ID"); 1487 var isCart = GetString("Title") == "BioLegend - View cart" ? true : false; 1488 var dirty = "/dwcountry/saved-cart?SavedCart="; 1489 var sessionCart = ""; 1490 if(System.Web.HttpContext.Current.Session["CurrentCart"] != null){ 1491 sessionCart = System.Web.HttpContext.Current.Session["CurrentCart"].ToString(); 1492 } 1493 1494 1495 var cartList = ""; 1496 if (string.IsNullOrWhiteSpace(thisCart) && (!string.IsNullOrWhiteSpace(sessionCart)) && savedCartPage != Pageview.Page.ID) 1497 { 1498 dirty += sessionCart; 1499 var order = !string.IsNullOrWhiteSpace(sessionCart) ? Dynamicweb.Ecommerce.Orders.Order.GetOrderById(sessionCart) : null; 1500 if(order != null) { 1501 cartList = "["; 1502 var orderlines = order.OrderLines; 1503 foreach (var ol in orderlines) 1504 { 1505 if(!string.IsNullOrWhiteSpace(ol.ProductNumber)){ 1506 cartList += "{catalog : \""+@ol.ProductNumber+"\", qty : \""+@ol.Quantity+"\"},"; 1507 } 1508 } 1509 cartList = cartList + "]"; 1510 cartList = cartList.Replace(",]", "]"); 1511 } 1512 1513 if(!string.IsNullOrWhiteSpace(cartList) && cartList != "[]" && !isCart){ 1514 <script type="text/javascript"> 1515 window.onload = addCatToCart(@cartList); 1516 </script> 1517 } 1518 else if(!string.IsNullOrWhiteSpace(cartList) && cartList != "[]" && isCart){ 1519 <script type="text/javascript"> 1520 document.getElementById("emptyCart").innerHTML = "Loading..."; 1521 document.addEventListener('cartAdded', function (e) { 1522 location.reload(); 1523 }, false); 1524 if (obj_areaItems.bol_isTheCheckoutDisabled == "True" && sessionStorage.getItem('checkoutDisabled') === null) { 1525 document.getElementById("emptyCart").innerHTML = "Checkout is currently disabled. Please try again later."; 1526 } 1527 else{ 1528 window.onload = addCatToCart(@cartList); 1529 } 1530 1531 </script> 1532 } 1533 1534 } 1535 } 1536 1537 @helper checkCookiePreferences(){ 1538 var DWOptin = 0; 1539 if(System.Web.HttpContext.Current.Request.Cookies["Dynamicweb.CookieOptInLevel"] == null){DWOptin = 12;} 1540 else{DWOptin = Int32.Parse(System.Web.HttpContext.Current.Request.Cookies["Dynamicweb.CookieOptInLevel"].Value);} 1541 1542 if(System.Web.HttpContext.Current.Request.Cookies["CookieConsent"] == null){ 1543 <script type="text/javascript"> 1544 window.onload = setOptInCookie(1,@DWOptin); 1545 </script> 1546 } 1547 else{ 1548 if(System.Web.HttpContext.Current.Request.Cookies["CookieConsent"].Value.Equals(0)){ 1549 <script type="text/javascript"> 1550 window.onload = setOptInCookie(1,@DWOptin); 1551 </script> 1552 } 1553 else if(System.Web.HttpContext.Current.Request.Cookies["CookieConsent"].Value.Contains("statistics:true")){ 1554 <script type="text/javascript"> 1555 window.onload = setOptInCookie(2,@DWOptin); 1556 </script> 1557 } 1558 else{} 1559 } 1560 } 1561 1562 @helper renderAlternateTags(){ 1563 1564 1565 var requestHost = GetGlobalValue("Global:Request.Host"); 1566 var baseHref = String.Format("https://{0}",requestHost); 1567 var canonical = GetGlobalValue("Global:Pageview.Url"); 1568 1569 var str_PrettyUrl = baseHref + canonical; 1570 1571 var usTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-us"); 1572 var gbTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-gb"); 1573 var ieTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-ie"); 1574 var atTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "de-at"); 1575 var beTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "nl-be"); 1576 var frTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fr-fr"); 1577 var deTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "de-de"); 1578 var jpTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "ja-jp"); 1579 var luTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fr-lu"); 1580 var nlTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "nl-nl"); 1581 var chTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fr-ch"); 1582 var dkTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "en-dk"); 1583 var fiTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "fi-fi"); 1584 var noTag = str_PrettyUrl.Replace(GetCurrentCulture().ToLower(), "nb-no"); 1585 1586 <link rel="alternate" hreflang="en-us" href="@usTag"> 1587 <link rel="alternate" hreflang="en-gb" href="@gbTag"> 1588 <link rel="alternate" hreflang="en-ie" href="@ieTag"> 1589 <link rel="alternate" hreflang="de-at" href="@atTag"> 1590 <link rel="alternate" hreflang="nl-be" href="@beTag"> 1591 <link rel="alternate" hreflang="fr-fr" href="@frTag"> 1592 <link rel="alternate" hreflang="de-de" href="@deTag"> 1593 <link rel="alternate" hreflang="ja-jp" href="@jpTag"> 1594 <link rel="alternate" hreflang="fr-lu" href="@luTag"> 1595 <link rel="alternate" hreflang="nl-nl" href="@nlTag"> 1596 <link rel="alternate" hreflang="fr-ch" href="@chTag"> 1597 <link rel="alternate" hreflang="en-dk" href="@dkTag"> 1598 <link rel="alternate" hreflang="fi-fi" href="@fiTag"> 1599 <link rel="alternate" hreflang="nb-no" href="@noTag"> 1600 1601 } 1602 1603 @functions { 1604 public static string StripHtml(string source) 1605 { 1606 var teste = source.Replace("&gt;",">").Replace("&lt;","<"); 1607 return Regex.Replace(teste, "<.*?>", string.Empty); 1608 } 1609 1610 public static string GetUserCulture(IList<LoopItem> websiteLanguages) 1611 { 1612 if (Dynamicweb.Frontend.PageView.Current().User == null) return string.Empty; 1613 1614 var user = Dynamicweb.Frontend.PageView.Current().User; 1615 var userCulture = websiteLanguages.FirstOrDefault(x => x.GetString("Name").IndexOf(user.Country, StringComparison.InvariantCultureIgnoreCase) != -1); 1616 1617 return userCulture == null ? string.Empty : userCulture.GetString("Culture"); 1618 } 1619 1620 public static string GetCurrentCulture() 1621 { 1622 var areaId = Dynamicweb.Frontend.PageView.Current().Area.ID; 1623 var areaCurrent = Dynamicweb.Services.Areas.GetArea(Convert.ToInt32(areaId)); 1624 var currentCulture = areaCurrent.Culture; 1625 return currentCulture; 1626 } 1627 }