private void BindSkins() { var allSkins = SkinProvider.GetSkins(); //exclude mobile skins from the options var skins = allSkins.Where(s => !s.IsMobile); SkinNavigationList.DataSource = skins; SkinNavigationList.DataBind(); SkinInfo.DataSource = skins; SkinInfo.DataBind(); }
IEnumerable <ListItem> BuildXmlPackageListItems() { // Get available skins var allSkinIds = SkinProvider .GetSkins() .Where(skin => !skin.IsMobile) .Select(skin => skin.Id); // Load root and skin XmlPackages var availableXmlPackages = XmlPackageManager .GetXmlPackageInfosByPrefix( httpContext: new HttpContextWrapper(HttpContext.Current), searchLocations: (XmlPackageLocation)Locations, prefix: Prefix, skinIds: allSkinIds); // Group XmlPackages together and denote skin-specific ones var xmlPackageListItems = availableXmlPackages .GroupBy(info => info.Name) .Select(packages => new { name = packages.Key, displayName = packages.All(x => x.Location == XmlPackageLocation.Admin) || // Display all admin packages packages.Any(x => x.Location == XmlPackageLocation.Root) || // Display all packages that are in root only or overridden in a skin packages.Where(x => x.SkinId.HasValue).Select(x => x.SkinId.Value).SequenceEqual(allSkinIds) // Display all packages that are in all skins ? packages.First().DisplayName : string.Format( // Display skin-specific skins with a note on which skins "{0} ({1} skin(s) only)", packages.First().DisplayName, string.Join(", ", packages .Where(x => x.SkinId.HasValue) .Select(x => string.Format("\"{0}\"", SkinProvider.GetSkinById(x.SkinId.Value).Name)))) }) .Select(listing => new ListItem(listing.displayName, listing.name)); return(xmlPackageListItems); }