/// <summary> /// If CDN is enabled for this request, replace the outgoing media url with the cdn version /// </summary> /// <param name="item"></param> /// <param name="options"></param> /// <returns></returns> public override string GetMediaUrl(Sitecore.Data.Items.MediaItem item, MediaUrlOptions options) { string hostname = CDNManager.GetCDNHostName(); string url = base.GetMediaUrl(item, options); bool shouldReplace = !string.IsNullOrEmpty(hostname) && // cdnHostname exists for site Sitecore.Context.PageMode.IsNormal; // PageMode is normal bool dontReplace = !CDNManager.IsMediaPubliclyAccessible(item) || // media is publicly accessible CDNManager.IsMediaAnalyticsTracked(item); // media is analytics tracked CDNUrlState contextState = CDNUrlSwitcher.CurrentValue; if (contextState == CDNUrlState.Enabled) { shouldReplace = true; } else if (contextState == CDNUrlState.Disabled) { UrlString url2 = new UrlString(url); url2[CDNManager.StopToken] = "1"; url = url2.ToString(); shouldReplace = false; } if (shouldReplace && !dontReplace) // media not DMS tracked { return(CDNManager.ReplaceMediaUrl(url, hostname)); } else { return(url); } }
/// <summary> /// Extension method for Sitecore.Data.Items.Item to return the URL of the item or /// media item. /// </summary> /// <param name="item">The content or media item.</param> /// <param name="except">Whether to throw an exception if the item is neither a /// media nor a content item.</param> /// <returns>The URL of the content or media item.</returns> /// <exception cref="ArgumentException"><c>ArgumentException</c> - Item is neither /// content nor media.</exception> public static string GetUrl( this Sitecore.Data.Items.Item item, bool except) { string url = String.Empty; if (item.Paths.IsMediaItem) { Sitecore.Data.Items.MediaItem media = new Sitecore.Data.Items.MediaItem(item); url = Sitecore.StringUtil.EnsurePrefix( '/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(media)); // If the shared source LinkProvider is in place and configured to lowercase URLs object property = Sitecore.Reflection.ReflectionUtil.GetProperty( Sitecore.Links.LinkManager.Provider, "Lowercase"); if (property != null && Sitecore.MainUtil.GetBool(property, false)) { url = url.ToLower(); } return(url); } if (except && !item.Paths.IsContentItem) { throw new ArgumentException( item.Paths.FullPath + " is not a content item."); } return(Sitecore.Links.LinkManager.GetItemUrl(item)); }
private void AddEnclosure( SyndicationItem syndicationItem, Sitecore.Data.Items.Item item, Sitecore.Syndication.FeedRenderingParameters parameters) { Sitecore.Diagnostics.Assert.ArgumentNotNull(syndicationItem, "syndicationItem"); Sitecore.Diagnostics.Assert.ArgumentNotNull(item, "item"); Sitecore.Diagnostics.Assert.ArgumentNotNull(parameters, "parameters"); Sitecore.Data.Fields.LinkField field = item.Fields[parameters.EnclosureField]; if (field != null) { Sitecore.Data.Items.MediaItem targetItem = field.TargetItem; if (targetItem != null) { Sitecore.Resources.Media.MediaUrlOptions options = new Sitecore.Resources.Media.MediaUrlOptions { AbsolutePath = true, UseItemPath = true }; string mediaUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(item, options); if (!String.IsNullOrEmpty(mediaUrl)) { mediaUrl = Sitecore.Web.WebUtil.GetFullUrl(mediaUrl); string size = targetItem.Size.ToString(); string mimeType = targetItem.MimeType; syndicationItem.ElementExtensions.Add( String.Format("enclosure url=\"{0}\" length=\"{1}\" type=\"{2}\"", mediaUrl, size, mimeType), String.Empty, String.Empty); } } } }
private void BuildProducts() { Sitecore.Data.Database database = Sitecore.Data.Database.GetDatabase("web"); Sitecore.Data.Items.Item[] Productsitems = database.SelectItems("fast:/sitecore/content/home//*[@@templateid='{2EE70A6B-AF13-498E-8419-BDA52C8C05DD}']"); foreach (var Product in Productsitems) { var item = Context.Database.GetItem(Product.ID); var attributes = new List <XElement>(); if (!string.IsNullOrEmpty(Product.Fields["EanBarcode"].Value)) { XAttribute[] familyAttributes = { new XAttribute("id", "BV_FE_FAMILY") }; XAttribute[] expandAttributes = { new XAttribute("id", "BV_FE_EXPAND") }; attributes.Add(new XElement(Bv + "Attribute", familyAttributes, new XElement(Bv + "Value", Product.Fields["EanBarcode"].Value))); attributes.Add(new XElement(Bv + "Attribute", expandAttributes, new XElement(Bv + "Value", "BV_FE_FAMILY:" + Product.Fields["EanBarcode"].Value))); } var productdesc = RemoveHTMLTags(Product.Fields["ProductIntroduction"].Value); var desc = !ExtensionMethods.IsNullOrEmpty(productdesc) ? new XCData(productdesc) : new XCData(""); var options = Sitecore.Links.LinkManager.GetDefaultUrlOptions(); options.LanguageEmbedding = Sitecore.Links.LanguageEmbedding.Never; var productUrl = LinkManager.GetItemUrl(item, options); var catExternalId = item.Parent.ParentID.ToShortID().ToString(); if (catExternalId.IsNullOrEmpty()) { continue; } var brandExternalId = item.ParentID.ToShortID().ToString();; string ImageUrl = string.Empty; Sitecore.Data.Fields.ImageField imageField = item.Fields["ReferenceImage"]; if (imageField != null && imageField.MediaItem != null) { Sitecore.Data.Items.MediaItem image = new Sitecore.Data.Items.MediaItem(imageField.MediaItem); ImageUrl = Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(image)); } //Add a single product var prod = new XElement(Bv + "Product"); prod.Add(new XElement(Bv + "ExternalId", Product.Fields["EanBarcode"].Value)); prod.Add(new XElement(Bv + "Name", new XCData(Product.Fields["__Display Name"].Value))); prod.Add(new XElement(Bv + "Description", desc)); prod.Add(new XElement(Bv + "CategoryExternalId", catExternalId)); prod.Add(new XElement(Bv + "ProductPageUrl", GetFullUrl(productUrl))); prod.Add(new XElement(Bv + "ImageUrl", GetFullUrl(ImageUrl))); prod.Add(new XElement(Bv + "EANs", new XElement(Bv + "EAN", Product.Fields["EanBarcode"].Value))); prod.Add(new XElement(Bv + "Attributes", attributes)); if (!string.IsNullOrEmpty(brandExternalId)) { prod.Add(new XElement(Bv + "BrandExternalId", brandExternalId)); } Products.Add(prod); } }
/// <summary> /// Fill Image Filter Properties from Rendering Data source, if is present /// </summary> /// <param name="model">Image Filter Component model</param> private void FillImageFilterProperties(ImageFilterComponentModel model) { if (string.IsNullOrEmpty(model?.Rendering?.DataSource)) { return; } var item = Sitecore.Context.Database.GetItem(new Sitecore.Data.ID(model.Rendering.DataSource)); model.HasImageCaption = !string.IsNullOrEmpty(item.Fields["HasImageCaption"]?.Value) && int.Parse(item.Fields["HasImageCaption"].Value) == 1; model.HasImageDescription = !string.IsNullOrEmpty(item.Fields["HasImageDescription"]?.Value) && int.Parse(item.Fields["HasImageDescription"].Value) == 1; var imageValue = item.Fields["Image"].Value; var firstLeft = imageValue.IndexOf("{", StringComparison.InvariantCultureIgnoreCase); var firstRight = imageValue.IndexOf("}", StringComparison.InvariantCultureIgnoreCase); model.Id = new Sitecore.Data.ID(imageValue.Substring(firstLeft, firstRight - firstLeft + 1)); var itemImage = Sitecore.Context.Database.GetItem(model.Id); var mediaItem = new Sitecore.Data.Items.MediaItem(itemImage); var image = new System.Drawing.Bitmap(mediaItem.GetMediaStream()); // Save original image as base 64 string model.OriginalImage = $"data:image/png;base64,{Convert.ToBase64String(ImagePreprocessing.ConvertImageToArray(image))}"; model.Filter = item.Fields["Filter"].Value; model.Angle = string.IsNullOrEmpty(item.Fields["Angle"].Value) ? 0 : int.Parse(item.Fields["Angle"].Value); model.Height = string.IsNullOrEmpty(item.Fields["Height"].Value) ? image.Width : int.Parse(item.Fields["Height"].Value); model.Width = string.IsNullOrEmpty(item.Fields["Width"].Value) ? image.Height : int.Parse(item.Fields["Width"].Value); // Set the image filter parameters and process the image var filterParameters = new ImageFilterParameters { Image = image, Filter = (EnumImageFilter)Enum.Parse(typeof(EnumImageFilter), model.Filter), Angle = model.Angle, Height = model.Height, Width = model.Width }; var filterImage = ImagePreprocessing.ApplyFilter(filterParameters); // Save filtered image as base 64 string model.FilterImage = $"data:image/png;base64,{Convert.ToBase64String(ImagePreprocessing.ConvertImageToArray(filterImage))}"; }
public List<string> media_item_info() { List<string> outlist = new List<string>(); string id = req.Params["id"]; outlist.Add(id); Sitecore.Data.Items.Item item = master.GetItem(new Sitecore.Data.ID(id)); Sitecore.Data.Items.MediaItem media_item = new Sitecore.Data.Items.MediaItem(item); Sitecore.Resources.Media.Media media = Sitecore.Resources.Media.MediaManager.GetMedia(media_item); Sitecore.Resources.Media.MediaData media_data = media.MediaData; return outlist; }
/// <summary> /// Retrieve the friendly value of a field. /// </summary> /// <param name="me">The field.</param> /// <returns>The friendly value of the field.</returns> public static string GetFriendlyValue( this Sitecore.Data.Fields.Field me) { switch (me.Type) { case "general link": case "date": case "datetime": case "image": case "integer": case "multi-line text": case "number": case "rich text": case "single-line text": return(Sitecore.Web.UI.WebControls.FieldRenderer.Render( me.Item, me.Name)); case "file": Sitecore.Data.Fields.ImageField media = new Sitecore.Data.Fields.ImageField(me, me.Type); if (media == null || media.MediaItem == null) { return(String.Empty); } string extension = new Sitecore.Data.Items.MediaItem(media.MediaItem).Extension; string url = Sitecore.Resources.Media.MediaManager.GetMediaUrl( media.MediaItem); if (Sitecore.Configuration.Settings.ImageTypes.Contains(extension)) { return(String.Format( @"<img src=""{0}"" alt=""{1}"" />", url, media.MediaItem.Fields["alt"])); } return(String.Format( @"<a href=""{0}"">{1}</a>", Sitecore.Resources.Media.MediaManager.GetMediaUrl(media.MediaItem), media.MediaItem.Name)); case "checkbox": case "checklist": case "droplist": case "grouped droplink": case "grouped droplist": case "multilist": case "treelist": case "treelistex": case "droplink": case "droptree": case "icon": case "iframe": case "tristate": case "internal link": case "password": throw new ArgumentException("Unsupported field type"); default: throw new ArgumentException("Unknown field type: " + me.Type); } }
protected void Go_Click(object sender, EventArgs e) { using (new Sitecore.SecurityModel.SecurityDisabler()) { Label1.Text = ""; Sitecore.Data.Database master = Sitecore.Data.Database.GetDatabase("master"); string DataRoot = Sitecore.Configuration.Settings.DataFolder; string MediaFiles = Sitecore.Configuration.Settings.GetSetting("Media.FileFolder").Replace('/', '\\'); //string MediaFileRoot = DataRoot + "..\\Website" + MediaFiles; string text = TextArea1.InnerText.ToString(); string[] lines = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); foreach (string item_id in lines) { if (item_id != "") { Sitecore.Data.Items.Item item = master.GetItem(new Sitecore.Data.ID(item_id)); if (item != null) { string file_path = item.Fields["File Path"].ToString(); string blob = item.Fields["Blob"].ToString(); if (file_path != "") // This media item has a "File Path" value. That means the data is stored on the filesystem. { Sitecore.Data.Items.MediaItem media_item = new Sitecore.Data.Items.MediaItem(item); string size = media_item.Size.ToString(); string WebRoot = Request.ServerVariables.Get("APPL_PHYSICAL_PATH"); string MediaPath = WebRoot + "\\" + media_item.FilePath; try { if (System.IO.File.Exists(MediaPath)) { System.IO.Stream stream = media_item.GetMediaStream(); string bytes = stream.Length.ToString(); string type = stream.GetType().ToString(); item.Editing.BeginEdit(); item.Fields["File Path"].Value = ""; item.Fields["Blob"].SetBlobStream((System.IO.Stream)stream); item.Editing.EndEdit(); Label1.Text += "<div>" + item.Name.ToString() + ": <b>migrated</b></div>"; } else { Label1.Text += "<div>" + item.Name.ToString() + ": <b>does not exist</b> (" + MediaPath + ")</div>"; } } catch (Exception ex) { Label1.Text += "<div>Caught Exception " + ex.Message + " on item " + item.Name.ToString() + "</div>"; } } else if (blob != "") // This media item has a value in the "Blob" field, so it's stored in the database. { Sitecore.Data.Items.MediaItem media_item = new Sitecore.Data.Items.MediaItem(item); System.IO.Stream stream = media_item.GetMediaStream(); var bytes = stream.Length.ToString(); string type = stream.GetType().ToString(); //Sitecore.Data.SqlServer.SqlServerDataProvider provider = new Sitecore.Data.SqlServer.SqlServerDataProvider(); Label1.Text += "<div>" + item.Name.ToString() + ": <b>" + type + "</b></div>"; } } else { Label1.Text += "<div>No item found for " + item_id + "</div>"; } } } } }