public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if ("placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                var argument = args.CustomData["placeHolderKey"] as string;

                var placeholderKey = argument;
                if (PlaceholderKeyHelper.IsDynamicPlaceholder(placeholderKey))
                {
                    placeholderKey = PlaceholderKeyHelper.ExtractPlaceholderKey(placeholderKey);
                }
                else
                {
                    return;
                }

                // Handles replacing the displayname of the placeholder area to the master reference
                if (args.Item != null)
                {
                    var layout = ChromeContext.GetLayout(args.Item);
                    var item   = global::Sitecore.Client.Page.GetPlaceholderItem(placeholderKey, args.Item.Database, layout);
                    if (item != null)
                    {
                        args.ChromeData.DisplayName = item.DisplayName;
                    }
                    if (!string.IsNullOrEmpty(item?.Appearance.ShortDescription))
                    {
                        args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
                    }
                }
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, nameof(args));
            Assert.IsNotNull(args.ChromeData, "Chrome Data");

            if (!"placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var placeholderKey = args.CustomData["placeHolderKey"] as string;

            Assert.IsNotNull(placeholderKey, "CustomData[\"{0}\"]", "placeHolderKey");

            var lastPart = StringUtil.GetLastPart(placeholderKey, '/', placeholderKey);

            args.ChromeData.DisplayName = lastPart;
            AddButtonsToChromeData(GetButtons("/sitecore/content/Applications/WebEdit/Default Placeholder Buttons"), args);

            var placeholderItem        = (Item)null;
            var hasPlaceholderSettings = false;

            if (args.Item != null)
            {
                var layout = ChromeContext.GetLayout(args.Item);
                var placeholderRenderingsArgs = new GetPlaceholderRenderingsArgs(placeholderKey, layout, args.Item.Database)
                {
                    OmitNonEditableRenderings = true
                };

                //add full dynamic placeholder key to reference in applicable rules
                placeholderRenderingsArgs.CustomData.Add("fullPlaceholderKey", placeholderKey);

                CorePipeline.Run("getPlaceholderRenderings", placeholderRenderingsArgs);

                hasPlaceholderSettings = placeholderRenderingsArgs.HasPlaceholderSettings;

                var getRenderingList = placeholderRenderingsArgs.PlaceholderRenderings != null
                    ? placeholderRenderingsArgs.PlaceholderRenderings.Select(i => i.ID.ToShortID().ToString()).ToList()
                    : new List <string>();

                args.ChromeData.Custom.Add("allowedRenderings", getRenderingList);
                placeholderItem             = Client.Page.GetPlaceholderItem(placeholderRenderingsArgs.PlaceholderKey, args.Item.Database, layout);
                args.ChromeData.DisplayName = placeholderItem == null?StringUtil.GetLastPart(placeholderRenderingsArgs.PlaceholderKey, '/', placeholderRenderingsArgs.PlaceholderKey) : HttpUtility.HtmlEncode(placeholderItem.DisplayName);

                if (placeholderItem != null && !string.IsNullOrEmpty(placeholderItem.Appearance.ShortDescription))
                {
                    args.ChromeData.ExpandedDisplayName = HttpUtility.HtmlEncode(placeholderItem.Appearance.ShortDescription);
                }
            }
            else
            {
                args.ChromeData.Custom.Add("allowedRenderings", new List <string>());
            }

            var isEditable = (placeholderItem == null || placeholderItem["Editable"] == "1") && Settings.WebEdit.PlaceholdersEditableWithoutSettings | hasPlaceholderSettings;

            args.ChromeData.Custom.Add("editable", isEditable.ToString().ToLowerInvariant());
        }
        ///
        /// Instead of calling ChromeContext.GetLayout(layoutItem) every time, we store it in the request so we only need to do it once
        ///
        ///
        ///
        protected virtual string GetCachedLayout(Item layoutItem)
        {
            var layoutCacheKey = string.Format("edit-layout-item-{0}", layoutItem.ID.Guid.ToString("N"));
            var layout         = Context.Items[layoutCacheKey] as string ?? ChromeContext.GetLayout(layoutItem);

            Context.Item[layoutCacheKey] = layout;

            return(layout);
        }
Example #4
0
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!"placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }
            var argument = args.CustomData["placeHolderKey"] as string;

            var placeholderKey = argument;
            var regex          = new Regex(DynamicKeyRegex);

            Debug.Assert(placeholderKey != null, "placeholderKey != null");
            var match = regex.Match(placeholderKey);

            if (match.Success && match.Groups.Count > 0)
            {
                // Is a Dynamic Placeholder
                placeholderKey = match.Groups[1].Value;
            }
            else
            {
                return;
            }

            // Handles replacing the displayname of the placeholder area to the master reference
            if (args.Item == null)
            {
                return;
            }
            var layout = ChromeContext.GetLayout(args.Item);
            var item   = Sitecore.Client.Page.GetPlaceholderItem(placeholderKey, args.Item.Database, layout);

            if (item != null)
            {
                args.ChromeData.DisplayName = item.DisplayName;
            }
            if ((item != null) && !string.IsNullOrEmpty(item.Appearance.ShortDescription))
            {
                args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
            }
        }
Example #5
0
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!args.ChromeType.Equals("placeholder", StringComparison.InvariantCultureIgnoreCase))
            {
                return;
            }

            var placeholderKey = (string)args.CustomData["placeHolderKey"];

            if (string.IsNullOrEmpty(placeholderKey))
            {
                return;
            }

            var regex = new Regex(GetDynamicKeyAllowedRenderings.DynamicKeyRegex);
            var match = regex.Match(placeholderKey);

            if (!match.Success || match.Groups.Count <= 0)
            {
                return;
            }

            var newPlaceholderKey = match.Groups[1].Value;

            if (args.Item == null)
            {
                return;
            }
            var layout = ChromeContext.GetLayout(args.Item);
            var item   = Client.Page.GetPlaceholderItem(newPlaceholderKey, args.Item.Database, layout);

            if (item != null)
            {
                args.ChromeData.DisplayName = item.DisplayName;
            }
            if ((item != null) && !string.IsNullOrEmpty(item.Appearance.ShortDescription))
            {
                args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");

            if (!"placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var argument = args.CustomData["placeHolderKey"] as string;

            string placeholderKey;
            string placeholderIndex;

            if (!DynamicPlaceholderKeyProvider.TryGetValue(argument, out placeholderKey, out placeholderIndex))
            {
                return;
            }

            if (args.Item == null)
            {
                return;
            }

            var layout = ChromeContext.GetLayout(args.Item);
            var item   = Client.Page.GetPlaceholderItem(placeholderKey, args.Item.Database, layout);

            if (item == null)
            {
                return;
            }

            args.ChromeData.DisplayName = item.DisplayName;

            if (!string.IsNullOrEmpty(item.Appearance.ShortDescription))
            {
                args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if ("placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                string argument = args.CustomData["placeHolderKey"] as string;

                string placeholderKey = argument;
                Regex  regex          = new Regex(DYNAMIC_KEY_REGEX);
                Match  match          = regex.Match(placeholderKey);
                if (match.Success && match.Groups.Count > 0)
                {
                    // Is a Dynamic Placeholder
                    placeholderKey = placeholderKey.Contains("/") ? placeholderKey.Split('/')[1] : match.Groups[1].Value;
                }
                else
                {
                    return;
                }

                // Handles replacing the displayname of the placeholder area to the master reference
                Item item = null;
                if (args.Item != null)
                {
                    string layout = ChromeContext.GetLayout(args.Item);
                    item = Client.Page.GetPlaceholderItem(placeholderKey, args.Item.Database, layout);
                    if (item != null)
                    {
                        args.ChromeData.DisplayName = item.DisplayName;
                    }
                    if ((item != null) && !string.IsNullOrEmpty(item.Appearance.ShortDescription))
                    {
                        args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
                    }
                }
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!"placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            string placeholderKey = args.CustomData["placeHolderKey"] as string;

            if (!string.IsNullOrEmpty(placeholderKey) && placeholderKey.Contains('|'))
            {
                string[] arrKey = placeholderKey.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

                if (arrKey != null && arrKey.Length > 1)
                {
                    placeholderKey = arrKey[0];
                }
            }

            // Handles Replacing the Displayname of the Placeholder area
            Item item = null;

            if (args.Item != null)
            {
                string layout = ChromeContext.GetLayout(args.Item);
                item = Sitecore.Client.Page.GetPlaceholderItem(placeholderKey, args.Item.Database, layout);
                if (item != null)
                {
                    args.ChromeData.DisplayName = item.DisplayName;
                }
                if ((item != null) && !string.IsNullOrEmpty(item.Appearance.ShortDescription))
                {
                    args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
                }
            }
        }
Example #9
0
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!"placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            // Get the placeholder key values
            string dynamicKey = args.CustomData["placeHolderKey"] as string;
            Regex  regex      = new Regex(GetDynamicKeyPlaceholderAllowedRenderings.DYNAMIC_KEY_REGEX);
            Match  match      = regex.Match(dynamicKey);

            if (!match.Success || match.Groups.Count <= 0)
            {
                return;
            }
            string normalKey = match.Groups[1].Value;

            // Format up some Chrome
            Item item = null;

            if (args.Item != null)
            {
                string layout = ChromeContext.GetLayout(args.Item);
                item = Sitecore.Client.Page.GetPlaceholderItem(normalKey, args.Item.Database, layout);
                if (item != null)
                {
                    args.ChromeData.DisplayName = item.DisplayName;
                    if (!String.IsNullOrEmpty(item.Appearance.ShortDescription))
                    {
                        args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
                    }
                }
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!"placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            string placeholderKey = args.CustomData["placeHolderKey"] as string;
            Regex  regex          = new Regex(GetDynamicKeyAllowedRenderings.DYNAMIC_KEY_REGEX);
            Match  match          = regex.Match(placeholderKey);

            if (!match.Success || match.Groups.Count <= 0)
            {
                return;
            }

            string newPlaceholderKey = match.Groups[1].Value;

            // Handles replacing the displayname and description of the placeholder area to the master reference without changeing other references
            Item item = null;

            if (args.Item != null)
            {
                string layout = ChromeContext.GetLayout(args.Item);
                item = Sitecore.Client.Page.GetPlaceholderItem(newPlaceholderKey, args.Item.Database, layout);
                if (item != null)
                {
                    args.ChromeData.DisplayName = item.DisplayName;
                }
                if ((item != null) && !string.IsNullOrEmpty(item.Appearance.ShortDescription))
                {
                    args.ChromeData.ExpandedDisplayName = item.Appearance.ShortDescription;
                }
            }
        }