public override TestOfData TestOfDataBinding(object sender, EventArgs e) { var rtnData = new TestOfData(); rtnData.DataValue = null; rtnData.TestValue = null; var lc = (Literal)sender; var container = (IDataItemContainer)lc.NamingContainer; try { NBrightInfo info; ProductData prodData; CatProdXref xrefData; var xmlDoc = new XmlDocument(); CartData currentcart; xmlDoc.LoadXml("<root>" + lc.Text + "</root>"); var xmlNod = xmlDoc.SelectSingleNode("root/tag"); if (container.DataItem != null && xmlNod != null && (xmlNod.Attributes != null && xmlNod.Attributes["function"] != null)) { rtnData.DataValue = "FALSE"; XmlNode nod; var testValue = ""; if ((xmlNod.Attributes["testvalue"] != null)) testValue = xmlNod.Attributes["testvalue"].Value; // check for setting key var settingkey = ""; if ((xmlNod.Attributes["key"] != null)) settingkey = xmlNod.Attributes["key"].Value; var role = ""; if ((xmlNod.Attributes["role"] != null)) role = xmlNod.Attributes["role"].Value; var index = ""; if ((xmlNod.Attributes["index"] != null)) index = xmlNod.Attributes["index"].Value; var modulekey = ""; if ((xmlNod.Attributes["modulekey"] != null)) modulekey = xmlNod.Attributes["modulekey"].Value; var targetmodulekey = ""; if ((xmlNod.Attributes["targetmodulekey"] != null)) targetmodulekey = xmlNod.Attributes["targetmodulekey"].Value; // do special tests for named fucntions switch (xmlNod.Attributes["function"].Value.ToLower()) { case "searchactive": var navdata2 = new NavigationData(PortalSettings.Current.PortalId, targetmodulekey); if (navdata2.Criteria == "") rtnData.DataValue = "FALSE"; else rtnData.DataValue = "TRUE"; break; case "productcount": var navdata = new NavigationData(PortalSettings.Current.PortalId, modulekey); rtnData.DataValue = navdata.RecordCount; break; case "price": rtnData.DataValue = GetFromPrice((NBrightInfo) container.DataItem); break; case "dealerprice": rtnData.DataValue = GetDealerPrice((NBrightInfo) container.DataItem); break; case "saleprice": rtnData.DataValue = GetSalePrice((NBrightInfo) container.DataItem); break; case "imgexists": rtnData.DataValue = testValue; nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/imgs/genxml[" + rtnData.DataValue + "]"); if (nod == null) rtnData.DataValue = "FALSE"; break; case "modelexists": rtnData.DataValue = testValue; nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/models/genxml[" + rtnData.DataValue + "]"); if (nod == null) rtnData.DataValue = "FALSE"; break; case "optionexists": rtnData.DataValue = testValue; nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/options/genxml[" + rtnData.DataValue + "]"); if (nod == null) rtnData.DataValue = "FALSE"; break; case "isinstock": if (IsInStock((NBrightInfo) container.DataItem)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "ismodelinstock": if (IsModelInStock((NBrightInfo) container.DataItem)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "inwishlist": var productid = DataBinder.Eval(container.DataItem, "ItemId").ToString(); if (Utils.IsNumeric(productid)) { var listname = "ItemList"; if ((xmlNod.Attributes["listname"] != null)) listname = xmlNod.Attributes["listname"].Value; var wl = new ItemListData(listname); if (wl.IsInList(productid)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } } break; case "isonsale": var saleprice = GetSalePriceDouble((NBrightInfo) container.DataItem); if (saleprice > 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasrelateditems": info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.GetRelatedProducts().Count > 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasdocuments": info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.Docs.Count > 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "haspurchasedocuments": info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.Docs.Select(i => i.GetXmlProperty("genxml/checkbox/chkpurchase") == "True").Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasproperty": info = (NBrightInfo) container.DataItem; xrefData = new CatProdXref(); if (xrefData.IsProductInCategory(info.ItemID,testValue)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isincategory": info = (NBrightInfo) container.DataItem; xrefData = new CatProdXref(); if (xrefData.IsProductInCategory(info.ItemID,testValue)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isdocpurchasable": nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/docs/genxml[" + index + "]/hidden/docid"); if (nod != null) { info = (NBrightInfo) container.DataItem; prodData = ProductUtils.GetProductData(info.ItemID, info.Lang); if (prodData.Docs.Select(i => i.GetXmlProperty("genxml/checkbox/chkpurchase") == "True" && i.GetXmlProperty("genxml/hidden/docid") == nod.InnerText).Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } } break; case "isdocpurchased": nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/docs/genxml[" + index + "]/hidden/docid"); if (nod != null && Utils.IsNumeric(nod.InnerText)) { var uInfo = UserController.GetCurrentUserInfo(); //[TODO: work out method of finding if user purchased document.] //if (NBrightBuyV2Utils.DocHasBeenPurchasedByDocId(uInfo.UserID, Convert.ToInt32(nod.InnerText))) //{ // rtnData.DataValue = "TRUE"; // rtnData.TestValue = "TRUE"; //} } break; case "hasmodelsoroptions": nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/models/genxml[2]/hidden/modelid"); if (nod != null && nod.InnerText != "") { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } if (rtnData.DataValue == "FALSE") { nod = GenXmlFunctions.GetGenXmLnode(DataBinder.Eval(container.DataItem, _databindColumn).ToString(), "genxml/options/genxml[1]/hidden/optionid"); if (nod != null && nod.InnerText != "") { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } } break; case "isproductincart": var cartData = new CartData(PortalSettings.Current.PortalId); info = (NBrightInfo) container.DataItem; if (cartData.GetCartItemList().Select(i => i.GetXmlProperty("genxml/productid") == info.ItemID.ToString("")).Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "settings": if (_settings != null && _settings.ContainsKey(settingkey) && _settings[settingkey] == testValue) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "debugmode": if (StoreSettings.Current.DebugMode) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isinrole": if (CmsProviderManager.Default.IsInRole(role)) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "issuperuser": if (UserController.GetCurrentUserInfo().IsSuperUser) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isuser": if (UserController.GetCurrentUserInfo().UserID >= 0) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "isclientordermode": currentcart = new CartData(PortalSettings.Current.PortalId); if (currentcart.IsClientOrderMode()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "carteditmode": currentcart = new CartData(PortalSettings.Current.PortalId); var editmode = currentcart.GetInfo().GetXmlProperty("genxml/carteditmode"); if (editmode == testValue) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "iscartempty": currentcart = new CartData(PortalSettings.Current.PortalId); var l = currentcart.GetCartItemList(); if (!l.Any()) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "hasshippingproviders": var pluginData = new PluginData(PortalSettings.Current.PortalId); var provList = pluginData.GetShippingProviders(); if (provList.Count > 1) { rtnData.DataValue = "TRUE"; rtnData.TestValue = "TRUE"; } break; case "profile": var userInfo = UserController.GetCurrentUserInfo(); if (userInfo.UserID >= 0) rtnData.DataValue = userInfo.Profile.GetPropertyValue(settingkey); break; case "static": break; default: rtnData.DataValue = null; break; } } } catch (Exception) { lc.Text = ""; } return rtnData; }