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