void BuildVariantColors() { VariantColors = new string[1] { "" }; if (VariantColorsCsv == string.Empty) { using (var dbconn = new SqlConnection(DB.GetDBConn())) { dbconn.Open(); using (var rs = DB.GetRS("select Colors from productvariant with (NOLOCK) where VariantID=" + VariantId.ToString(), dbconn)) { if (rs.Read()) { VariantColorsCsv = DB.RSFieldByLocale(rs, "Colors", Localization.GetDefaultLocale()); // remember to add "empty" color to front, for no color selected if (VariantColorsCsv.Length != 0) { VariantColors = ("," + VariantColorsCsv).Split(','); } } } } } else { VariantColors = ("," + VariantColorsCsv).Split(','); } if (VariantColorsCsv.Length != 0) { for (int i = VariantColors.GetLowerBound(0); i <= VariantColors.GetUpperBound(0); i++) { string s2 = AppLogic.RemoveAttributePriceModifier(VariantColors[i]); VariantColors[i] = CommonLogic.MakeSafeFilesystemName(s2); } } }
public void LoadFromDB() { string suffix = "_" + m_ProductID.ToString(); string pvsuffix = "_" + m_ProductID.ToString() + "_" + m_VariantID.ToString(); m_ImageNumbersSplit = m_ImageNumbers.Split(','); bool m_WatermarksEnabled = AppLogic.AppConfigBool("Watermark.Enabled"); m_ColorsSplit = new String[1] { "" }; if (m_Colors == String.Empty) { using (SqlConnection dbconn = new SqlConnection(DB.GetDBConn())) { dbconn.Open(); using (IDataReader rs = DB.GetRS("select Colors from productvariant with (NOLOCK) where VariantID=" + m_VariantID.ToString(), dbconn)) { if (rs.Read()) { m_Colors = DB.RSFieldByLocale(rs, "Colors", Localization.GetDefaultLocale()); // remember to add "empty" color to front, for no color selected if (m_Colors.Length != 0) { m_ColorsSplit = ("," + m_Colors).Split(','); } } } } } else { m_ColorsSplit = ("," + m_Colors).Split(','); } if (m_Colors.Length != 0) { for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { String s2 = AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]); m_ColorsSplit[i] = CommonLogic.MakeSafeFilesystemName(s2); } } if (AppLogic.AppConfigBool("MultiImage.UseProductIconPics")) { m_ImageUrlsicon = new String[m_ImageNumbersSplit.Length, m_ColorsSplit.Length]; for (int x = m_ImageNumbersSplit.GetLowerBound(0); x <= m_ImageNumbersSplit.GetUpperBound(0); x++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[x]); for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { String Url = string.Empty; if (m_ProductSKU == string.Empty) { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "icon"); } else { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_ProductSKU, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "icon"); } if (m_WatermarksEnabled && Url.Length != 0 && Url.IndexOf("nopicture") == -1) { if (Url.StartsWith("/")) { m_ImageUrlsicon[x, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length); } else { m_ImageUrlsicon[x, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length - 1); } if (m_ImageUrlsicon[x, i].StartsWith("/")) { m_ImageUrlsicon[x, i] = m_ImageUrlsicon[x, i].TrimStart('/'); } } else { m_ImageUrlsicon[x, i] = Url; } } } for (int x = m_ImageNumbersSplit.GetLowerBound(0); x <= m_ImageNumbersSplit.GetUpperBound(0); x++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[x]); if (m_ImageUrlsicon[x, 0].IndexOf("nopicture") == -1) { m_MaxImageIndex = ImgIdx; } } } m_ImageUrlsmedium = new String[m_ImageNumbersSplit.Length, m_ColorsSplit.Length]; for (int j = m_ImageNumbersSplit.GetLowerBound(0); j <= m_ImageNumbersSplit.GetUpperBound(0); j++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[j]); for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { String Url = string.Empty; if (m_ProductSKU == string.Empty) { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "medium"); } else { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_ProductSKU, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "medium"); } if (m_WatermarksEnabled && Url.Length != 0 && Url.IndexOf("nopicture") == -1) { if (Url.StartsWith("/")) { m_ImageUrlsmedium[j, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length); } else { m_ImageUrlsmedium[j, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length - 1); } if (m_ImageUrlsmedium[j, i].StartsWith("/")) { m_ImageUrlsmedium[j, i] = m_ImageUrlsmedium[j, i].TrimStart('/'); } } else { m_ImageUrlsmedium[j, i] = Url; } } } for (int j = m_ImageNumbersSplit.GetLowerBound(0); j <= m_ImageNumbersSplit.GetUpperBound(0); j++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[j]); if (m_ImageUrlsmedium[j, 0].IndexOf("nopicture") == -1) { m_MaxImageIndex = ImgIdx; } } m_ImageUrlslarge = new String[m_ImageNumbersSplit.Length, m_ColorsSplit.Length]; for (int j = m_ImageNumbersSplit.GetLowerBound(0); j <= m_ImageNumbersSplit.GetUpperBound(0); j++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[j]); for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { String Url = string.Empty; if (m_ProductSKU == string.Empty) { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "large"); } else { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_ProductSKU, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "large"); } if (m_WatermarksEnabled && Url.Length != 0 && Url.IndexOf("nopicture") == -1) { if (Url.StartsWith("/")) { m_ImageUrlslarge[j, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length); } else { m_ImageUrlslarge[j, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length - 1); } if (m_ImageUrlslarge[j, i].StartsWith("/")) { m_ImageUrlslarge[j, i] = m_ImageUrlslarge[j, i].TrimStart('/'); } m_HasSomeLarge = true; } else if (Url.Length == 0 || Url.IndexOf("nopicture") != -1) { m_ImageUrlslarge[j, i] = String.Empty; } else { m_HasSomeLarge = true; m_ImageUrlslarge[j, i] = Url; } } } if (!IsEmpty()) { bool AttemptZoomify = AppLogic.AppConfigBool("Zoomify.Active") && (AppLogic.AppConfigBool("Zoomify.GalleryMedium") || AppLogic.AppConfigBool("Zoomify.ProductMedium")); bool GalleryZoomify = AttemptZoomify && AppLogic.AppConfigBool("Zoomify.GalleryMedium"); StringBuilder tmpS = new StringBuilder(4096); tmpS.Append("<script type=\"text/javascript\">\n"); tmpS.Append("var ProductPicIndex" + suffix + " = 1;\n"); tmpS.Append("var ProductColor" + suffix + " = '';\n"); tmpS.Append("var boardpics" + suffix + " = new Array();\n"); tmpS.Append("var boardpicslg" + suffix + " = new Array();\n"); tmpS.Append("var boardpicslgwidth" + suffix + " = new Array();\n"); tmpS.Append("var boardpicslgheight" + suffix + " = new Array();\n"); if (AttemptZoomify) { tmpS.Append("var boardpicsZ" + suffix + " = new Array();\n"); } for (int i = 1; i <= m_MaxImageIndex; i++) { foreach (String c in m_ColorsSplit) { String MdUrl = ImageUrl(i, c, "medium").ToLowerInvariant(); String MdWatermarkedUrl = MdUrl; if (m_WatermarksEnabled) { if (MdUrl.Length > 0) { string[] split = MdUrl.Split('/'); string lastPart = split.Last(); MdUrl = AppLogic.LocateImageURL(lastPart, "PRODUCT", "medium", ""); } } tmpS.Append("boardpics" + suffix + "['" + i.ToString() + "," + c + "'] = '" + MdWatermarkedUrl + "';\n"); String LgUrl = ImageUrl(i, c, "large").ToLowerInvariant(); String LgWatermarkedUrl = LgUrl; if (m_WatermarksEnabled) { if (LgUrl.Length > 0) { string[] split = LgUrl.Split('/'); string lastPart = split.Last(); LgUrl = AppLogic.LocateImageURL(lastPart, "PRODUCT", "large", ""); } } tmpS.Append("boardpicslg" + suffix + "['" + i.ToString() + "," + c + "'] = '" + LgWatermarkedUrl + "';\n"); if (LgUrl.Length > 0) { System.Drawing.Size lgsz = CommonLogic.GetImagePixelSize(LgUrl); tmpS.Append("boardpicslgwidth" + suffix + "['" + i.ToString() + "," + c + "'] = '" + lgsz.Width.ToString() + "';\n"); tmpS.Append("boardpicslgheight" + suffix + "['" + i.ToString() + "," + c + "'] = '" + lgsz.Height.ToString() + "';\n"); } if (AttemptZoomify) { String ZMdUrl = string.Empty; // Yes we use the large url here, because the Zoomify data is always in Large if (LgUrl.Length > 0) { ZMdUrl = LgUrl.Remove(LgUrl.Length - 4); // remove extension } if (GalleryZoomify && CommonLogic.FileExists(CommonLogic.SafeMapPath(LgUrl))) { tmpS.Append("boardpicsZ" + suffix + "['" + i.ToString() + "," + c + "'] = '" + AppLogic.RunXmlPackage("Zoomify.Medium", null, null, m_SkinID, "", "ImagePath=" + ZMdUrl + "&AltSrc=" + LgUrl, false, false).Replace("\r\n", " ").Replace("\r", " ").Replace("\n", " ").Replace("'", "\\'") + "';\n"); // the Replace's are to make the xmlpackage output consumable by javascript } else { tmpS.Append("boardpicsZ" + suffix + "['" + i.ToString() + "," + c + "'] = '';\n"); } } } } if (AttemptZoomify) { tmpS.Append("function changeContent(markup)\n"); tmpS.Append("{\n"); tmpS.Append(" id='divProductPicZ"+ m_ProductID.ToString() + "';\n"); tmpS.Append(" if (document.getElementById || document.all)\n"); tmpS.Append(" {\n"); tmpS.Append(" var el = document.getElementById? document.getElementById(id): document.all[id];\n"); tmpS.Append(" if (el && typeof el.innerHTML != \"undefined\") el.innerHTML = markup;\n"); tmpS.Append(" }\n"); tmpS.Append("}\n"); } tmpS.Append("function changecolorimg" + suffix + "()\n"); tmpS.Append("{\n"); tmpS.Append(" var scidx = ProductPicIndex"+ suffix + " + ',' + ProductColor" + suffix + ".toLowerCase();\n"); if (AttemptZoomify) { tmpS.Append("if (boardpicsZ" + suffix + "[scidx]!='') {\n"); tmpS.Append(" divProductPicZ" + m_ProductID.ToString() + ".style.display='inline';\n"); tmpS.Append(" divProductPic" + m_ProductID.ToString() + ".style.display='none';\n"); tmpS.Append(" changeContent(boardpicsZ" + suffix + "[scidx]); }\n"); tmpS.Append("else {\n"); tmpS.Append(" divProductPicZ" + m_ProductID.ToString() + ".style.display='none';\n"); tmpS.Append(" divProductPic" + m_ProductID.ToString() + ".style.display='inline';\n"); tmpS.Append(" document.ProductPic" + m_ProductID.ToString() + ".src=boardpics" + suffix + "[scidx]; }\n"); } else { tmpS.Append(" document.ProductPic"+ m_ProductID.ToString() + ".src=boardpics" + suffix + "[scidx];\n"); } tmpS.Append("}\n"); tmpS.Append("function popuplarge" + suffix + "()\n"); tmpS.Append("{\n"); tmpS.Append(" var scidx = ProductPicIndex"+ suffix + " + ',' + ProductColor" + suffix + ".toLowerCase();\n"); tmpS.Append(" var LargeSrc = boardpicslg"+ suffix + "[scidx];\n"); if (m_WatermarksEnabled) { tmpS.AppendFormat(" var imageName = LargeSrc.split(\"/\").pop(-1);{0}", Environment.NewLine); tmpS.AppendFormat(" LargeSrc = 'watermark.axd?size=large&imgurl=images/product/large/' + imageName;{0}", Environment.NewLine); } tmpS.Append("if(boardpicslg" + suffix + "[scidx] != '')\n"); tmpS.Append("{\n"); tmpS.Append(" window.open('popup.aspx?src=' + LargeSrc,'LargerImage"+ CommonLogic.GetRandomNumber(1, 100000) + "','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=" + CommonLogic.IIF(AppLogic.AppConfigBool("ResizableLargeImagePopup"), "yes", "no") + ",resizable=" + CommonLogic.IIF(AppLogic.AppConfigBool("ResizableLargeImagePopup"), "yes", "no") + ",copyhistory=no,width=' + boardpicslgwidth" + suffix + "[scidx] + ',height=' + boardpicslgheight" + suffix + "[scidx] + ',left=0,top=0');\n"); tmpS.Append("}\n"); tmpS.Append("else\n"); tmpS.Append("{\n"); tmpS.Append(" alert('There is no large image available for this picture');\n"); tmpS.Append("}\n"); tmpS.Append("}\n"); tmpS.Append("function setcolorpicidx" + suffix + "(idx)\n"); tmpS.Append("{\n"); tmpS.Append(" ProductPicIndex"+ suffix + " = idx;\n"); tmpS.Append(" changecolorimg"+ suffix + "();\n"); tmpS.Append("}\n"); tmpS.Append("function setActive(element)\n"); tmpS.Append("{\n"); tmpS.Append(" adnsf$('li.page-link').removeClass('active');\n"); tmpS.Append(" adnsf$(element).parent().addClass('active');\n"); tmpS.Append("}\n"); tmpS.Append("function cleansizecoloroption" + suffix + "(theVal)\n"); tmpS.Append("{\n"); tmpS.Append(" if(theVal.indexOf('[') != -1){theVal = theVal.substring(0, theVal.indexOf('['))}"); tmpS.Append(" theVal = theVal.replace(/[\\W]/g,\"\");\n"); tmpS.Append(" theVal = theVal.toLowerCase();\n"); tmpS.Append(" return theVal;\n"); tmpS.Append("}\n"); tmpS.Append("function setcolorpic" + suffix + "(color)\n"); tmpS.Append("{\n"); tmpS.Append(" while(color != unescape(color))\n"); tmpS.Append(" {\n"); tmpS.Append(" color = unescape(color);\n"); tmpS.Append(" }\n"); tmpS.Append(" if(color == '-,-' || color == '-')\n"); tmpS.Append(" {\n"); tmpS.Append(" color = '';\n"); tmpS.Append(" }\n"); tmpS.Append(" if(color != '' && color.indexOf(',') != -1)\n"); tmpS.Append(" {\n"); tmpS.Append(" color = color.substring(0,color.indexOf(',')).replace(new RegExp(\"'\", 'gi'), '');\n"); // remove sku from color select value tmpS.Append(" }\n"); tmpS.Append(" if(color != '' && color.indexOf('[') != -1)\n"); tmpS.Append(" {\n"); tmpS.Append(" color = color.substring(0,color.indexOf('[')).replace(new RegExp(\"'\", 'gi'), '');\n"); tmpS.Append(" color = color.replace(/[\\s]+$/g,\"\");\n"); tmpS.Append(" }\n"); tmpS.Append(" ProductColor"+ suffix + " = cleansizecoloroption" + suffix + "(color);\n"); tmpS.Append(" changecolorimg"+ suffix + "();\n"); tmpS.Append(" setcolorlisttoactiveitem"+ suffix + "(color);\n"); tmpS.Append(" return (true);\n"); tmpS.Append("}\n"); // this one (without suffix) added back for backwards compatibility with older existing product data, where // the swatch map called to this js routine directly tmpS.Append("function setcolorpic(color)\n"); tmpS.Append("{\n"); tmpS.Append(" if(color == '-,-' || color == '-')\n"); tmpS.Append(" {\n"); tmpS.Append(" color = '';\n"); tmpS.Append(" }\n"); tmpS.Append(" if(color != '' && color.indexOf(',') != -1)\n"); tmpS.Append(" {\n"); tmpS.Append(" color = color.substring(0,color.indexOf(',')).replace(new RegExp(\"'\", 'gi'), '');\n"); // remove sku from color select value tmpS.Append(" }\n"); tmpS.Append(" if(color != '' && color.indexOf('[') != -1)\n"); tmpS.Append(" {\n"); tmpS.Append(" color = color.substring(0,color.indexOf('[')).replace(new RegExp(\"'\", 'gi'), '');\n"); tmpS.Append(" color = color.replace(/[\\s]+$/g,\"\");\n"); tmpS.Append(" }\n"); tmpS.Append(" ProductColor"+ suffix + " = cleansizecoloroption" + suffix + "(color);\n"); tmpS.Append(" changecolorimg"+ suffix + "();\n"); tmpS.Append(" setcolorlisttoactiveitem"+ suffix + "(color.toLowerCase());\n"); tmpS.Append(" return (true);\n"); tmpS.Append("}\n"); tmpS.Append("function setcolorlisttoactiveitem" + suffix + "(color)\n"); tmpS.Append("{\n"); tmpS.Append("var lst = document.getElementById('Color" + pvsuffix + "');\n"); tmpS.Append("var matchColor = cleansizecoloroption" + suffix + "(color);\n"); tmpS.Append("for (var i=0; i < lst.length; i++)\n"); tmpS.Append(" {\n"); tmpS.Append("var value = lst[i].value;\n"); tmpS.Append("var arrayValue = value.split(',');\n"); tmpS.Append("var lstColor = cleansizecoloroption" + suffix + "(arrayValue[0]);\n"); //tmpS.Append(" var lstColor = cleansizecoloroption" + suffix + "(lst[i].value);\n"); tmpS.Append(" if (lstColor == matchColor)\n"); tmpS.Append(" {\n"); tmpS.Append(" lst.selectedIndex = i;\n"); tmpS.Append(" return (true);\n"); tmpS.Append(" }\n"); tmpS.Append(" }\n"); tmpS.Append("return (true);\n"); tmpS.Append("}\n"); tmpS.Append("</script>\n"); m_ImgDHTML = tmpS.ToString(); bool useMicros = AppLogic.AppConfigBool("UseImagesForMultiNav"); bool microAction = CommonLogic.IIF(AppLogic.AppConfigBool("UseRolloverForMultiNav"), true, false); if (m_MaxImageIndex > 1) { tmpS.Remove(0, tmpS.Length); if (!AppLogic.AppConfigBool("MultiImage.UseProductIconPics") && !useMicros) { tmpS.Append("<ul class=\"pagination image-paging\">"); for (int i = 1; i <= m_MaxImageIndex; i++) { if (i == 1) { tmpS.Append("<li class=\"page-link active\">"); } else { tmpS.Append("<li class=\"page-link\">"); } tmpS.Append(string.Format("<a href=\"javascript:void(0);\" onclick='setcolorpicidx{0}({1});setActive(this);' class=\"page-number\">{1}</a>", suffix, i)); tmpS.Append("</li>"); } tmpS.Append("</ul>"); } else { tmpS.Append("<div class=\"product-gallery-items\">"); for (int i = 1; i <= m_MaxImageIndex; i++) { tmpS.Append("<div class=\"product-gallery-item\">"); tmpS.Append(" <div class=\"gallery-item-inner\">"); if (AppLogic.AppConfigBool("MultiImage.UseProductIconPics")) { string strImageTag = "<img class='product-gallery-image' onclick='setcolorpicidx{0}({1});setImageURL(\"{2}\")' alt='Show Picture {1}' src='{2}' border='0' />"; tmpS.AppendFormat(strImageTag, new object[] { suffix, i, m_ImageUrlsicon[i - 1, 0].ToString() }); } else { // check for different extensions but don't let the non existance leave a gap // or crash because it can't find an image String ImageLoc = String.Empty; if (AppLogic.AppConfigBool("UseSKUForProductImageName")) { using (SqlConnection dbconn = new SqlConnection(DB.GetDBConn())) { dbconn.Open(); using (IDataReader skus = DB.GetRS("SELECT p.SKU FROM Product p with (NOLOCK) WHERE p.ProductID=" + m_ProductID.ToString(), dbconn)) { try { String microSKU = String.Empty; if (skus.Read()) { microSKU = DB.RSField(skus, "SKU"); } ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + microSKU.ToString() + "_" + i.ToString() + ".gif"); if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + microSKU.ToString() + "_" + i.ToString() + "_" + ".gif"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + microSKU.ToString() + "_" + i.ToString() + ".jpg"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + microSKU.ToString() + "_" + i.ToString() + "_" + ".jpg"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + microSKU.ToString() + "_" + i.ToString() + ".png"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + microSKU.ToString() + "_" + i.ToString() + "_" + ".png"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("App_Themes/skin_" + m_SkinID + "/images/nopicturemicro.gif"); } } catch { } } } } else { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + m_ProductID.ToString() + "_" + i.ToString() + ".gif"); if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + m_ProductID.ToString() + "_" + i.ToString() + "_" + ".gif"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + m_ProductID.ToString() + "_" + i.ToString() + ".jpg"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + m_ProductID.ToString() + "_" + i.ToString() + "_" + ".jpg"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + m_ProductID.ToString() + "_" + i.ToString() + ".png"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("images/product/micro/" + m_ProductID.ToString() + "_" + i.ToString() + "_" + ".png"); } if (!CommonLogic.FileExists(ImageLoc)) { ImageLoc = AppLogic.LocateImageURL("App_Themes/skin_" + m_SkinID + "/images/nopicturemicro.gif"); } } // if not using rollover to change the images if (!microAction && ImageLoc.Length > 0) { string strImageTag = string.Format("<img class='product-gallery-image' onclick='setcolorpicidx{0}({1});setImageURL(\"{2}\")' alt='Show Picture {1}' src='{2}' border='0' />", new object[] { suffix, i, ImageLoc }); tmpS.Append(strImageTag); } else if (ImageLoc.Length > 0) { string strImageTag = string.Format("<img class='product-gallery-image' onMouseOver='setcolorpicidx{0}({1});setImageURL(\"{2}\")' alt='Show Picture {1}' src='{2}' border='0' />", new object[] { suffix, i, ImageLoc }); tmpS.Append(strImageTag); } } tmpS.Append(" </div>"); tmpS.Append("</div>"); } tmpS.Append("</div>"); } m_ImgGalIcons = tmpS.ToString(); } } }
public void LoadFromDB() { var suffix = "_" + m_ProductID.ToString(); m_ImageNumbersSplit = m_ImageNumbers.Split(','); var m_WatermarksEnabled = AppLogic.AppConfigBool("Watermark.Enabled"); var urlHelper = DependencyResolver.Current.GetService <UrlHelper>(); m_ColorsSplit = new String[1] { "" }; if (m_Colors == string.Empty) { using (var dbconn = new SqlConnection(DB.GetDBConn())) { dbconn.Open(); using (var rs = DB.GetRS("select Colors from productvariant with (NOLOCK) where VariantID=" + m_VariantID.ToString(), dbconn)) { if (rs.Read()) { m_Colors = DB.RSFieldByLocale(rs, "Colors", Localization.GetDefaultLocale()); // remember to add "empty" color to front, for no color selected if (m_Colors.Length != 0) { m_ColorsSplit = ("," + m_Colors).Split(','); } } } } } else { m_ColorsSplit = ("," + m_Colors).Split(','); } if (m_Colors.Length != 0) { for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { String s2 = AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]); m_ColorsSplit[i] = CommonLogic.MakeSafeFilesystemName(s2); } } if (AppLogic.AppConfigBool("MultiImage.UseProductIconPics")) { m_ImageUrlsicon = new String[m_ImageNumbersSplit.Length, m_ColorsSplit.Length]; for (int x = m_ImageNumbersSplit.GetLowerBound(0); x <= m_ImageNumbersSplit.GetUpperBound(0); x++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[x]); for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { String Url = string.Empty; if (m_ProductSKU == string.Empty) { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "icon"); } else { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_ProductSKU, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "icon"); } if (m_WatermarksEnabled && Url.Length != 0 && Url.IndexOf("nopicture") == -1) { if (Url.StartsWith("/")) { m_ImageUrlsicon[x, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length); } else { m_ImageUrlsicon[x, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length - 1); } if (m_ImageUrlsicon[x, i].StartsWith("/")) { m_ImageUrlsicon[x, i] = m_ImageUrlsicon[x, i].TrimStart('/'); } } else { m_ImageUrlsicon[x, i] = Url; } } } for (int x = m_ImageNumbersSplit.GetLowerBound(0); x <= m_ImageNumbersSplit.GetUpperBound(0); x++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[x]); if (m_ImageUrlsicon[x, 0].IndexOf("nopicture") == -1) { m_MaxImageIndex = ImgIdx; } } } m_ImageUrlsmedium = new String[m_ImageNumbersSplit.Length, m_ColorsSplit.Length]; for (int j = m_ImageNumbersSplit.GetLowerBound(0); j <= m_ImageNumbersSplit.GetUpperBound(0); j++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[j]); for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { if (m_ProductSKU == string.Empty) { m_ImageUrlsmedium[j, i] = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "medium"); } else { m_ImageUrlsmedium[j, i] = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_ProductSKU, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "medium"); } } } for (int j = m_ImageNumbersSplit.GetLowerBound(0); j <= m_ImageNumbersSplit.GetUpperBound(0); j++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[j]); if (m_ImageUrlsmedium[j, 0].IndexOf("nopicture") == -1) { m_MaxImageIndex = ImgIdx; } } m_ImageUrlslarge = new String[m_ImageNumbersSplit.Length, m_ColorsSplit.Length]; for (int j = m_ImageNumbersSplit.GetLowerBound(0); j <= m_ImageNumbersSplit.GetUpperBound(0); j++) { int ImgIdx = Localization.ParseUSInt(m_ImageNumbersSplit[j]); for (int i = m_ColorsSplit.GetLowerBound(0); i <= m_ColorsSplit.GetUpperBound(0); i++) { String Url = string.Empty; if (m_ProductSKU == string.Empty) { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "large"); } else { Url = AppLogic.LookupProductImageByNumberAndColor(m_ProductID, m_SkinID, m_ProductSKU, m_LocaleSetting, ImgIdx, AppLogic.RemoveAttributePriceModifier(m_ColorsSplit[i]), "large"); } if (m_WatermarksEnabled && Url.Length != 0 && Url.IndexOf("nopicture") == -1) { if (Url.StartsWith("/")) { m_ImageUrlslarge[j, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length); } else { m_ImageUrlslarge[j, i] = Url.Substring(HttpContext.Current.Request.ApplicationPath.Length - 1); } if (m_ImageUrlslarge[j, i].StartsWith("/")) { m_ImageUrlslarge[j, i] = m_ImageUrlslarge[j, i].TrimStart('/'); } m_HasSomeLarge = true; } else if (Url.Length == 0 || Url.IndexOf("nopicture") != -1) { m_ImageUrlslarge[j, i] = String.Empty; } else { m_HasSomeLarge = true; m_ImageUrlslarge[j, i] = Url; } } } if (!IsEmpty()) { StringBuilder tmpS = new StringBuilder(4096); tmpS.Append("<script type=\"text/javascript\">\n"); tmpS.Append("var ProductPicIndex" + suffix + " = 1;\n"); tmpS.Append("var ProductColor" + suffix + " = '';\n"); tmpS.Append("var boardpics" + suffix + " = new Array();\n"); tmpS.Append("var boardpicslg" + suffix + " = new Array();\n"); tmpS.Append("var boardpicslgwidth" + suffix + " = new Array();\n"); tmpS.Append("var boardpicslgheight" + suffix + " = new Array();\n"); for (int i = 1; i <= m_MaxImageIndex; i++) { foreach (String c in m_ColorsSplit) { String MdUrl = ImageUrl(i, c, "medium").ToLowerInvariant(); String MdWatermarkedUrl = MdUrl; if (m_WatermarksEnabled) { if (MdUrl.Length > 0) { string[] split = MdUrl.Split('/'); string lastPart = split.Last(); MdUrl = AppLogic.LocateImageURL(lastPart, "PRODUCT", "medium", ""); } } tmpS.Append("boardpics" + suffix + "['" + i.ToString() + "," + c + "'] = '" + MdWatermarkedUrl + "';\n"); String LgUrl = ImageUrl(i, c, "large").ToLowerInvariant(); String LgWatermarkedUrl = LgUrl; if (m_WatermarksEnabled) { if (LgUrl.Length > 0) { string[] split = LgUrl.Split('/'); string lastPart = split.Last(); LgUrl = AppLogic.LocateImageURL(lastPart, "PRODUCT", "large", ""); } } tmpS.Append("boardpicslg" + suffix + "['" + i.ToString() + "," + c + "'] = '" + LgWatermarkedUrl + "';\n"); if (LgUrl.Length > 0) { System.Drawing.Size lgsz = CommonLogic.GetImagePixelSize(LgUrl); tmpS.Append("boardpicslgwidth" + suffix + "['" + i.ToString() + "," + c + "'] = '" + lgsz.Width.ToString() + "';\n"); tmpS.Append("boardpicslgheight" + suffix + "['" + i.ToString() + "," + c + "'] = '" + lgsz.Height.ToString() + "';\n"); } } } tmpS.Append("function changecolorimg" + suffix + "()\n"); tmpS.Append("{\n"); tmpS.Append(" var scidx = ProductPicIndex"+ suffix + " + ',' + ProductColor" + suffix + ".toLowerCase();\n"); tmpS.Append(" document.ProductPic"+ m_ProductID.ToString() + ".src=boardpics" + suffix + "[scidx];\n"); tmpS.Append("}\n"); tmpS.Append("function popuplarge" + suffix + "()\n"); tmpS.Append("{\n"); tmpS.Append(" var scidx = ProductPicIndex"+ suffix + " + ',' + ProductColor" + suffix + ".toLowerCase();\n"); tmpS.Append(" var LargeSrc = encodeURIComponent(boardpicslg"+ suffix + "[scidx]);\n"); tmpS.Append("if(boardpicslg" + suffix + "[scidx] != '')\n"); tmpS.Append("{\n"); var popupUrl = urlHelper.Action(ActionNames.PopUp, ControllerNames.Image); tmpS.Append(" window.open('"+ popupUrl + "?" + RouteDataKeys.ImagePath + "=' + LargeSrc,'LargerImage" + CommonLogic.GetRandomNumber(1, 100000) + "','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=" + CommonLogic.IIF(AppLogic.AppConfigBool("ResizableLargeImagePopup"), "yes", "no") + ",resizable=" + CommonLogic.IIF(AppLogic.AppConfigBool("ResizableLargeImagePopup"), "yes", "no") + ",copyhistory=no,width=' + boardpicslgwidth" + suffix + "[scidx] + ',height=' + boardpicslgheight" + suffix + "[scidx] + ',left=0,top=0');\n"); tmpS.Append("}\n"); tmpS.Append("else\n"); tmpS.Append("{\n"); tmpS.Append(" alert('There is no large image available for this picture');\n"); tmpS.Append("}\n"); tmpS.Append("}\n"); tmpS.Append("function setcolorpicidx" + suffix + "(idx)\n"); tmpS.Append("{\n"); tmpS.Append(" ProductPicIndex"+ suffix + " = idx;\n"); tmpS.Append(" changecolorimg"+ suffix + "();\n"); tmpS.Append("}\n"); tmpS.Append("function setActive(element)\n"); tmpS.Append("{\n"); tmpS.Append(" adnsf$('li.page-link').removeClass('active');\n"); tmpS.Append(" adnsf$(element).parent().addClass('active');\n"); tmpS.Append("}\n"); tmpS.Append("function cleansizecoloroption" + suffix + "(theVal)\n"); tmpS.Append("{\n"); tmpS.Append(" if(theVal.indexOf('[') != -1){theVal = theVal.substring(0, theVal.indexOf('['))}"); tmpS.Append(" theVal = theVal.replace(/[\\W]/g,\"\");\n"); tmpS.Append(" theVal = theVal.toLowerCase();\n"); tmpS.Append(" return theVal;\n"); tmpS.Append("}\n"); tmpS.Append("function setcolorpic" + suffix + "(color)\n"); tmpS.Append("{\n"); tmpS.Append(" while(color != unescape(color))\n"); tmpS.Append(" {\n"); tmpS.Append(" color = unescape(color);\n"); tmpS.Append(" }\n"); tmpS.Append(" if(color == '-,-' || color == '-')\n"); tmpS.Append(" {\n"); tmpS.Append(" color = '';\n"); tmpS.Append(" }\n"); tmpS.Append(" if(color != '' && color.indexOf(',') != -1)\n"); tmpS.Append(" {\n"); tmpS.Append(" color = color.substring(0,color.indexOf(',')).replace(new RegExp(\"'\", 'gi'), '');\n"); // remove sku from color select value tmpS.Append(" }\n"); tmpS.Append(" if(color != '' && color.indexOf('[') != -1)\n"); tmpS.Append(" {\n"); tmpS.Append(" color = color.substring(0,color.indexOf('[')).replace(new RegExp(\"'\", 'gi'), '');\n"); tmpS.Append(" color = color.replace(/[\\s]+$/g,\"\");\n"); tmpS.Append(" }\n"); tmpS.Append(" ProductColor"+ suffix + " = cleansizecoloroption" + suffix + "(color);\n"); tmpS.Append(" changecolorimg"+ suffix + "();\n"); tmpS.Append(" return (true);\n"); tmpS.Append("}\n"); tmpS.Append("</script>\n"); m_ImgDHTML = tmpS.ToString(); bool useMicros = AppLogic.AppConfigBool("UseImagesForMultiNav"); bool microAction = CommonLogic.IIF(AppLogic.AppConfigBool("UseRolloverForMultiNav"), true, false); if (m_MaxImageIndex > 1) { tmpS.Remove(0, tmpS.Length); if (!AppLogic.AppConfigBool("MultiImage.UseProductIconPics") && !useMicros) { tmpS.Append("<ul class=\"pagination image-paging\">"); for (int i = 1; i <= m_MaxImageIndex; i++) { if (i == 1) { tmpS.Append("<li class=\"page-link active\">"); } else { tmpS.Append("<li class=\"page-link\">"); } tmpS.Append(string.Format("<a href=\"javascript:void(0);\" onclick='setcolorpicidx{0}({1});setActive(this);' class=\"page-number\">{1}</a>", suffix, i)); tmpS.Append("</li>"); } tmpS.Append("</ul>"); } else { tmpS.Append("<div class=\"product-gallery-items\">"); for (int i = 1; i <= m_MaxImageIndex; i++) { tmpS.Append("<div class=\"product-gallery-item\">"); tmpS.Append(" <div class=\"gallery-item-inner\">"); var imageUrl = GetImageUrl( size: AppLogic.AppConfigBool("MultiImage.UseProductIconPics") ? "icon" : "micro", identifier: AppLogic.AppConfigBool("UseSKUForProductImageName") ? m_ProductSKU : m_ProductID.ToString(), index: i); // if not using rollover to change the images if (!microAction && imageUrl.Length > 0) { var strImageTag = string.Format("<img class='product-gallery-image' onclick='setcolorpicidx{0}({1});' alt='Show Picture {1}' src='{2}' border='0' />", suffix, i, imageUrl ); tmpS.Append(strImageTag); } else if (imageUrl.Length > 0) { var strImageTag = string.Format("<img class='product-gallery-image' onMouseOver='setcolorpicidx{0}({1});' alt='Show Picture {1}' src='{2}' border='0' />", suffix, i, imageUrl ); tmpS.Append(strImageTag); } tmpS.Append(" </div>"); tmpS.Append("</div>"); } tmpS.Append("</div>"); } m_ImgGalIcons = tmpS.ToString(); } } }