Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        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);
                    }
                }
            }
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        /// <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>";
                        }
                    }
                }
            }
        }