protected string GetMediaUrl(CatalogContentBase content) // ok for making lab of it { IList <CommerceMedia> mediaList = new List <CommerceMedia>(); // check the model type and fill up with te right stuff if (content.ContentType == CatalogContentType.CatalogNode) { NodeContent node = content as NodeContent; mediaList = node.CommerceMediaCollection; } if (content.ContentType == CatalogContentType.CatalogEntry) { EntryContentBase entry = content as EntryContentBase; mediaList = entry.CommerceMediaCollection; // } // just get the first CommerceMedia media = mediaList.FirstOrDefault(); // ...do it easy in this lab if (media == null) { return(String.Empty); } // load the image url, if it exist... and return it var contentLinkMap = linkMapper.Find(new Guid(media.AssetKey)); if (contentLinkMap == null) { return(String.Empty); } return(contentLinkMap.MappedUrl.ToString()); }
private static void SetMediaCollection(IAssetContainer assetContainer, CommerceMedia media) { assetContainer.CommerceMediaCollection = new ItemCollection <CommerceMedia>() { media }; }
public void Create_WhenSelectedVariationHasImageAssets_ShouldSetImagesToLinkFromImage() { var imageLink = "http://www.episerver.com"; var fashionProduct = CreateFashionProduct(); var fashionVariant = CreateFashionVariant(); SetVariantsToReturn(fashionVariant); IContentImage contentImage; var imageMedia = new CommerceMedia { AssetLink = new ContentReference(237) }; _contentLoaderMock.Setup(x => x.TryGet(imageMedia.AssetLink, out contentImage)).Returns(true); _urlResolverMock.Setup(x => x.GetUrl(imageMedia.AssetLink)).Returns(imageLink); fashionVariant.CommerceMediaCollection = new ItemCollection <CommerceMedia>() { imageMedia }; var result = CreateSubject().Create(fashionProduct, fashionVariant.Code); Assert.Equal(imageLink, result.Images.Single()); }
/// <param name="media">The media to remove as link</param> /// <param name="code">The code of the catalog content from which the <paramref name="media"/> should be removed.</param> private void DeleteMediaLink(MediaData media, string code) { ContentReference contentReference = _referenceConverter.GetContentLink(code); if (ContentReference.IsNullOrEmpty(contentReference)) { return; } IAssetContainer writableContent = null; if (_contentRepository.TryGet(contentReference, out NodeContent nodeContent)) { writableContent = nodeContent.CreateWritableClone <NodeContent>(); } else if (_contentRepository.TryGet(contentReference, out EntryContentBase catalogEntry)) { writableContent = catalogEntry.CreateWritableClone <EntryContentBase>(); } writableContent?.CommerceMediaCollection.CreateWritableClone(); CommerceMedia mediaToRemove = writableContent?.CommerceMediaCollection?.FirstOrDefault(x => x.AssetLink.Equals(media.ContentLink)); if (mediaToRemove == null) { return; } writableContent.CommerceMediaCollection.Remove(mediaToRemove); _contentRepository.Save((IContent)writableContent, SaveAction.Publish, AccessLevel.NoAccess); }
private CommerceMedia CreateImageMedia(ContentReference contentLink, string imageLink) { IContentImage contentImage; var imageMedia = new CommerceMedia { AssetLink = contentLink }; _mockContentLoader.Setup(x => x.TryGet(imageMedia.AssetLink, out contentImage)).Returns(true); _mockUrlResolver.Setup(x => x.GetUrl(imageMedia.AssetLink)).Returns(imageLink); return(imageMedia); }
protected string GetMediaUrl(CommerceMedia media) { if (media == null) { return(String.Empty); } var contentLinkMap = LinkMapper.Find(new Guid(media.AssetKey)); if (contentLinkMap == null) { return(String.Empty); } return(contentLinkMap.MappedUrl.ToString()); }
private void AddLinksFromMediaToCodes(IContent contentMedia, IEnumerable <EntryCode> codes) { var media = new CommerceMedia { AssetLink = contentMedia.ContentLink, GroupName = "default", AssetType = "episerver.core.icontentmedia" }; foreach (EntryCode entryCode in codes) { ContentReference contentReference = _referenceConverter.GetContentLink(entryCode.Code); IAssetContainer writableContent = null; if (_contentRepository.TryGet(contentReference, out EntryContentBase entry)) { writableContent = (EntryContentBase)entry.CreateWritableClone(); } if (_contentRepository.TryGet(contentReference, out NodeContent node)) { writableContent = (NodeContent)node.CreateWritableClone(); } if (writableContent == null) { _logger.Error($"Can't get a suitable content (with code {entryCode.Code} to add CommerceMedia to, meaning it's neither EntryContentBase nor NodeContent."); continue; } CommerceMedia existingMedia = writableContent.CommerceMediaCollection.FirstOrDefault(x => x.AssetLink.Equals(media.AssetLink)); if (existingMedia != null) { writableContent.CommerceMediaCollection.Remove(existingMedia); } if (entryCode.IsMainPicture) { _logger.Debug($"Setting '{contentMedia.Name}' as main media on {entryCode.Code}"); media.SortOrder = 0; writableContent.CommerceMediaCollection.Insert(0, media); } else { _logger.Debug($"Adding '{contentMedia.Name}' as media on {entryCode.Code}"); media.SortOrder = 1; writableContent.CommerceMediaCollection.Add(media); } _contentRepository.Save((IContent)writableContent, SaveAction.Publish, AccessLevel.NoAccess); } }
private static string GetMediaUrl(CommerceMedia media) { if (media == null) { return String.Empty; } var _permanentLinkMapper = ServiceLocator.Current.GetInstance<PermanentLinkMapper>(); PermanentLinkMap contentLinkMap = _permanentLinkMapper.Find(new Guid(media.AssetKey)); if (contentLinkMap == null) { return String.Empty; } return contentLinkMap.MappedUrl.ToString(); }
private void GetProductStuff(AdminPage currentPage) { // added using EPiServer.Commerce.Catalog.ContentTypes; // so we get all the nice extension methods string code = "Long-Sleeve-Shirt_1"; var theThingRef = _referenceConverter.GetContentLink(code); var theThing = _contentLoader.Get <ShirtProduct>(theThingRef); string assetUrl = _assetUrlResolver.GetAssetUrl(theThing); CommerceMedia x = theThing.CommerceMediaCollection.First(); ItemCollection <CommerceMedia> col = theThing.CommerceMediaCollection; Categories y = theThing.Categories; IEnumerable <ContentReference> z = theThing.GetCategories(); }
private static void SetMediaCollection(IAssetContainer assetContainer, CommerceMedia media) { assetContainer.CommerceMediaCollection = new ItemCollection<CommerceMedia>() { media }; }
private CommerceMedia CreateImageMedia(ContentReference contentLink, string imageLink) { IContentImage contentImage; var imageMedia = new CommerceMedia { AssetLink = contentLink }; _mockContentLoader.Setup(x => x.TryGet(imageMedia.AssetLink, out contentImage)).Returns(true); _mockUrlResolver.Setup(x => x.GetUrl(imageMedia.AssetLink)).Returns(imageLink); return imageMedia; }
//public static Guid AssetId(this CommerceMedia media) //{ // return new Guid(media.AssetKey); //} public static ContentReference AssetContentLink(this CommerceMedia media, IPermanentLinkMapper permanentLinkMapper) { return(media.AssetLink); // return PermanentLinkUtility.FindContentReference(media.AssetLink, permanentLinkMapper); }
public Product BuildKaChingProduct( ProductContent product, ICollection <string> tags, KachingConfiguration configuration, string skipVariantCode) { var kachingProduct = new Product(); kachingProduct.Id = product.Code.SanitizeKey(); kachingProduct.Barcode = GetPropertyStringValue(product, configuration.SystemMappings.BarcodeMetaField); kachingProduct.Name = _l10nStringFactory.GetLocalizedString(product, nameof(product.DisplayName)); kachingProduct.Description = _l10nStringFactory.GetLocalizedString(product, configuration.SystemMappings.DescriptionMetaField); foreach (var mapping in configuration.AttributeMappings.Cast <AttributeMappingElement>()) { object value = GetAttributeValue(product, mapping.MetaField); if (value == null) { continue; } kachingProduct.Attributes[mapping.AttributeId] = value; } /* ---------------------------- */ /* Example of dimension and dimension value construction from the Quicksilver site. */ /* ---------------------------- */ //var dimensions = new List<Dimension>(); //var sizeDimension = new Dimension(); //sizeDimension.Id = "Size"; //sizeDimension.Name = new L10nString("Size"); //sizeDimension.Values = new List<DimensionValue>(); //foreach (var size in product.AvailableSizes) //{ // var sizeValue = new DimensionValue(); // sizeValue.Id = size.ToLower().Replace(' ', '_'); // sizeValue.Name = new L10nString(size); // sizeDimension.Values.Add(sizeValue); //} //dimensions.Add(sizeDimension); //var colorDimension = new Dimension(); //colorDimension.Id = "Color"; //colorDimension.Name = new L10nString("Color"); //colorDimension.Values = new List<DimensionValue>(); //foreach (var color in product.AvailableColors) //{ // var colorValue = new DimensionValue(); // colorValue.Id = color.ToLower().Replace(' ', '_'); // colorValue.Name = new L10nString(color); // colorDimension.Values.Add(colorValue); //} //dimensions.Add(colorDimension); //kachingProduct.Dimensions = dimensions; CommerceMedia productImage = product.CommerceMediaCollection.FirstOrDefault(); if (productImage != null) { Uri absoluteUrl = GetAbsoluteUrl(productImage.AssetLink); kachingProduct.ImageUrl = absoluteUrl?.AbsoluteUri; } IEnumerable <ContentReference> variantRefs = _relationRepository .GetChildren <ProductVariation>(product.ContentLink) .Select(r => r.Child); ICollection <VariationContent> variants = _contentLoader .GetItems(variantRefs, LanguageSelector.MasterLanguage()) .OfType <VariationContent>() .ToArray(); if (variants.Count == 1 && configuration.ExportSingleVariantAsProduct) { // If the product has only one variant and ExportSingleVariantAsProduct is configured to true, // then put all variant properties on the product instead. var variant = variants.First(); kachingProduct.Id = variant.Code.SanitizeKey(); kachingProduct.Barcode = GetPropertyStringValue(variant, configuration.SystemMappings.BarcodeMetaField); kachingProduct.Name = _l10nStringFactory.GetLocalizedString(variant, nameof(variant.DisplayName)); MarketPrice retailPrice = MarketPriceForCode(variant.Code); AddProductPricing(kachingProduct, product, retailPrice, configuration.SystemMappings.PriceUnitMetaField); foreach (var mapping in configuration.AttributeMappings.Cast <AttributeMappingElement>()) { object value = GetAttributeValue(variant, mapping.MetaField); if (value == null) { continue; } kachingProduct.Attributes[mapping.AttributeId] = value; } if (kachingProduct.ImageUrl == null) { CommerceMedia variantImage = variant.CommerceMediaCollection.FirstOrDefault(); if (variantImage != null) { Uri absoluteUrl = GetAbsoluteUrl(variantImage.AssetLink); kachingProduct.ImageUrl = absoluteUrl?.AbsoluteUri; } } } else if (variants.Count > 0) { var kachingVariants = new List <Variant>(variants.Count); foreach (var variant in variants) { if (skipVariantCode != null && skipVariantCode == variant.Code) { continue; } var kachingVariant = new Variant(); kachingVariant.Id = variant.Code.SanitizeKey(); kachingVariant.Barcode = GetPropertyStringValue(variant, configuration.SystemMappings.BarcodeMetaField); var variantName = _l10nStringFactory.GetLocalizedString(variant, nameof(variant.DisplayName)); if (!variantName.Equals(kachingProduct.Name)) { kachingVariant.Name = variantName; } if (kachingProduct.UnitPricing == null) { kachingVariant.RetailPrice = MarketPriceForCode(variant.Code); } foreach (var mapping in configuration.AttributeMappings.Cast <AttributeMappingElement>()) { object value = GetAttributeValue(variant, mapping.MetaField); if (value == null) { continue; } kachingVariant.Attributes[mapping.AttributeId] = value; } CommerceMedia variantImage = variant.CommerceMediaCollection.FirstOrDefault(); if (variantImage != null) { Uri absoluteUrl = GetAbsoluteUrl(variantImage.AssetLink); kachingVariant.ImageUrl = absoluteUrl?.AbsoluteUri; } if (kachingProduct.ImageUrl == null) { kachingProduct.ImageUrl = kachingVariant.ImageUrl; } kachingVariants.Add(kachingVariant); } kachingProduct.Variants = kachingVariants; } /* ---------------------------- */ /* Assign tags to enable category navigation */ /* ---------------------------- */ kachingProduct.Tags = new Dictionary <string, bool>(); foreach (var tag in tags) { kachingProduct.Tags[tag] = true; } return(kachingProduct); }