private void AddButton(GetChromeDataArgs args, Item libraryItem, RuleContext ruleContext, string click)
        {
            foreach (var scriptItem in libraryItem.Children.ToList())
            {
                if (!RulesUtils.EvaluateRules(scriptItem["ShowRule"], ruleContext))
                {
                    continue;
                }

                if (scriptItem.IsPowerShellLibrary())
                {
                    AddButton(args,scriptItem,ruleContext,click);
                    continue;
                }

                if (scriptItem.IsPowerShellScript())
                {
                    AddButtonsToChromeData(new[]
                    {
                        new WebEditButton
                        {
                            Click = string.Format(click, scriptItem.ID, scriptItem.Database.Name),
                            Icon = scriptItem.Appearance.Icon,
                            Tooltip = scriptItem.Name,
                            Header = scriptItem.Name,
                            Type = "sticky", // sticky keeps it from being hidden in the 'more' dropdown
                        }
                    }, args);
                }
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            var page = Sitecore.Context.Item;
            var chromeType = args.ChromeType;
            var chromeName = args.ChromeData.DisplayName;
            var click = "webedit:script(scriptId={0}, scriptdB={1})";

            args.CommandContext.Parameters["pageId"] = page.ID.ToString();
            args.CommandContext.Parameters["pageLang"] = page.Language.Name;
            args.CommandContext.Parameters["pageVer"] = page.Version.Number.ToString();
            args.CommandContext.Parameters["ChromeType"] = chromeType;
            args.CommandContext.Parameters["ChromeName"] = chromeName;
            var ruleContext = new RuleContext
            {
                Item = args.Item
            };

            foreach (var parameter in args.CommandContext.Parameters.AllKeys)
            {
                ruleContext.Parameters[parameter] = args.CommandContext.Parameters[parameter];
            }

            foreach (var libraryItem in ModuleManager.GetFeatureRoots(IntegrationPoint))
            {
                if (!libraryItem.HasChildren) return;

                AddButton(args, libraryItem, ruleContext, click);
            }
        }
        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;
                }
            }
        }
        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, "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;
                    }
                }
            }
        }
Beispiel #6
0
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            var page       = Sitecore.Context.Item;
            var chromeType = args.ChromeType;
            var chromeName = args.ChromeData.DisplayName;
            var click      = "webedit:script(scriptId={0}, scriptdB={1})";

            args.CommandContext.Parameters["pageId"]     = page.ID.ToString();
            args.CommandContext.Parameters["pageLang"]   = page.Language.Name;
            args.CommandContext.Parameters["pageVer"]    = page.Version.Number.ToString();
            args.CommandContext.Parameters["ChromeType"] = chromeType;
            args.CommandContext.Parameters["ChromeName"] = chromeName;
            var ruleContext = new RuleContext
            {
                Item = args.Item
            };

            foreach (var parameter in args.CommandContext.Parameters.AllKeys)
            {
                ruleContext.Parameters[parameter] = args.CommandContext.Parameters[parameter];
            }

            foreach (var libraryItem in ModuleManager.GetFeatureRoots(IntegrationPoint))
            {
                if (!libraryItem.HasChildren)
                {
                    return;
                }

                AddButton(args, libraryItem, ruleContext, click);
            }
        }
        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;
                }
            }
        }
Beispiel #8
0
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");

            if (string.Equals("placeholder", args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                var placeholderKey = args.CustomData["placeHolderKey"] as string;
                var regex          = new Regex(DynamicPlaceholders.PlaceholderKeyRegex.DynamicKeyRegex);
                var match          = regex.Match(placeholderKey);

                if (match.Success && match.Groups.Count > 0)
                {
                    var newPlaceholderKey = match.Groups[1].Value;

                    args.CustomData["placeHolderKey"] = newPlaceholderKey;

                    base.Process(args);

                    args.CustomData["placeHolderKey"] = placeholderKey;
                }
                else
                {
                    base.Process(args);
                }
            }
        }
Beispiel #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;
            }

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

            if (match.Success)
            {
                var newPlaceholderKey = match.Groups["key"].Value;
                args.CustomData["placeHolderKey"] = newPlaceholderKey;

                base.Process(args);
                args.CustomData["placeHolderKey"] = placeholderKey;
            }
            else
            {
                base.Process(args);
            }
        }
        /// <summary>
        /// Gets the control data.
        ///
        /// </summary>
        /// <param name="reference">The reference.</param><param name="item">The item.</param>
        /// <returns>
        /// The chrome data.
        /// </returns>
        public static ChromeData GetControlData(RenderingReference reference, Item item)
        {
            Assert.ArgumentNotNull((object)reference, "reference");
            Assert.ArgumentNotNull((object)item, "item");
            Item obj = item;

            if (!string.IsNullOrEmpty(reference.Settings.DataSource))
            {
                if (MainUtil.IsFullPath(reference.Settings.DataSource))
                {
                    if (Sitecore.Context.Database != null)
                    {
                        obj = Sitecore.Context.Database.GetItem(reference.Settings.DataSource);
                    }
                }
                else
                {
                    obj = item.Axes.GetItem(reference.Settings.DataSource);
                }
            }
            GetChromeDataArgs args = new GetChromeDataArgs("rendering", obj ?? item);

            args.CustomData["renderingReference"] = (object)reference;
            GetChromeDataPipeline.Run(args);
            return(args.ChromeData);
        }
        /// <summary>
        /// Renders the page design mode.
        /// </summary>
        /// <param name="output">The output.</param>
        private void RenderPlaceholderPageDesignMode(HtmlTextWriter output)
        {
            Assert.ArgumentNotNull((object)output, "output");
            bool flag = true;

            if (!this.CanDesign(Sitecore.Context.Database) || !Policy.IsAllowed("Page Editor/Can Design"))
            {
                flag = false;
            }
            Item contextItem = this.GetContextItem();

            if (contextItem != null && !WebEditUtil.CanDesignItem(contextItem))
            {
                flag = false;
            }
            string            qualifiedKey = this.GetQualifiedKey();
            Item              obj          = this.GetItem();
            GetChromeDataArgs args         = obj != null ? new GetChromeDataArgs("placeholder", obj) : new GetChromeDataArgs("placeholder");

            args.CustomData["placeHolderKey"] = (object)qualifiedKey;
            GetChromeDataPipeline.Run(args);
            ChromeData chromeData  = args.ChromeData;
            string     startMarker = Placeholder72.GetStartMarker(qualifiedKey, chromeData, flag);

            output.Write(startMarker);
            for (int index = 0; index < this.Controls.Count; ++index)
            {
                Control control = this.Controls[index];
                this.RenderControlPageDesignMode(output, flag, control);
            }
            string endMarker = Placeholder72.GetEndMarker(chromeData);

            output.Write(endMarker);
        }
        private void UpdateChromeCompatibleRenderings(GetChromeDataArgs args, List <ID> compatibleRenderings)
        {
            var morphButton = args.ChromeData.Commands.FirstOrDefault(x => x.Click.StartsWith("chrome:rendering:morph"));

            if (compatibleRenderings.Any())
            {
                if (morphButton == null)
                {
                    morphButton = GetDefaultMorphButton();
                    if (morphButton == null)
                    {
                        return;
                    }

                    //add the morph button to the chrome data
                    this.AddButtonToChromeData(morphButton, args);
                }

                //set the morph button ids
                var jsonIds = JsonConvert.SerializeObject(
                    compatibleRenderings.Select(x => x.ToShortID().ToString()).ToList())
                              .Replace("\"", "'");
                morphButton.Click = $"chrome:rendering:morph({jsonIds})";
            }
            else if (morphButton != null)
            {
                args.ChromeData.Commands.Remove(morphButton);
            }
        }
		public override void Process(GetChromeDataArgs args)
		{
			Assert.ArgumentNotNull(args, "args");
			Assert.IsNotNull(args.ChromeData, "Chrome Data");

			if (string.Equals("placeholder", args.ChromeType, StringComparison.OrdinalIgnoreCase))
			{
				var placeholderKey = args.CustomData["placeHolderKey"] as string;
				var regex = new Regex(DynamicPlaceholders.PlaceholderKeyRegex.DynamicKeyRegex);
				var match = regex.Match(placeholderKey);

				if (match.Success && match.Groups.Count > 0)
				{
					var newPlaceholderKey = match.Groups[1].Value;

					args.CustomData["placeHolderKey"] = newPlaceholderKey;

					base.Process(args);

					args.CustomData["placeHolderKey"] = placeholderKey;
				}
				else
				{
					base.Process(args);
				}
			}
		}
Beispiel #14
0
        private void AddButton(GetChromeDataArgs args, Item libraryItem, RuleContext ruleContext, string click)
        {
            foreach (var scriptItem in libraryItem.Children.ToList())
            {
                if (!RulesUtils.EvaluateRules(scriptItem["ShowRule"], ruleContext))
                {
                    continue;
                }

                if (scriptItem.IsPowerShellLibrary())
                {
                    AddButton(args, scriptItem, ruleContext, click);
                    continue;
                }

                if (scriptItem.IsPowerShellScript())
                {
                    AddButtonsToChromeData(new[]
                    {
                        new WebEditButton
                        {
                            Click   = string.Format(click, scriptItem.ID, scriptItem.Database.Name),
                            Icon    = scriptItem.Appearance.Icon,
                            Tooltip = scriptItem.Name,
                            Header  = scriptItem.Name,
                            Type    = "sticky", // sticky keeps it from being hidden in the 'more' dropdown
                        }
                    }, args);
                }
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!"rendering".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var renderingReference = args.CustomData["renderingReference"] as Sitecore.Layouts.RenderingReference;

            if (renderingReference == null || renderingReference.Settings == null)
            {
                return;
            }

            if (StringUtil.ExtractParameter("wascascaded", renderingReference.Settings.Parameters) == "1")
            {
                var cascadedFrom = StringUtil.ExtractParameter("cascadedfrom", renderingReference.Settings.Parameters);
                args.ChromeData.DisplayName += string.IsNullOrWhiteSpace(cascadedFrom)
                                                   ? " (Cascaded)"
                                                   : " (Cascaded from " + cascadedFrom + ")";
                args.ChromeData.Commands.RemoveAll(x =>
                                                   x.Click.StartsWith("chrome:rendering:sort") ||
                                                   x.Click.Contains("webedit:setdatasource") ||
                                                   x.Click.StartsWith("chrome:rendering:delete") ||
                                                   x.Click.StartsWith("chrome:rendering:properties"));
            }
        }
        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());
        }
Beispiel #17
0
        /// <summary>
        /// Gets the client data.
        /// </summary>
        /// <returns>Client data</returns>
        protected virtual ChromeData GetClientData()
        {
            var args = new GetChromeDataArgs("rendering", this.renderingContext.Rendering.Item);

            GetChromeDataPipeline.Run(args);

            return(args.ChromeData);
        }
     public override void Process(GetChromeDataArgs args)
     {
         Assert.ArgumentNotNull(args, “args”);
         Assert.IsNotNull(args.ChromeData, “Chrome Data”);
 
         if (“field”.Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
         {
             Field argument = args.CustomData["field"] asField;
             Assert.ArgumentNotNull(argument, “CustomData[\"{0}\"]“.FormatWith(new object[] { “field” }));
        ///The process.
        ///The pipeline args.
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!ChromeType.Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

            var placeholderPath = args.CustomData[PlaceholderKey] as string;

            Assert.ArgumentNotNull(placeholderPath, string.Format("CustomData[\"{0}\"]", PlaceholderKey));

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

            args.ChromeData.DisplayName = placeholderKey;
            AddButtonsToChromeData(GetButtons(DefaultButtonsRoot), args);

            Item placeholderItem        = null;
            var  hasPlaceholderSettings = false;

            if (args.Item != null)
            {
                //this is the part modified from base implementation
                var layout = GetCachedLayout(args.Item);

                var placeholderRenderingsArgs = new GetPlaceholderRenderingsArgs(placeholderPath, layout, args.Item.Database)
                {
                    OmitNonEditableRenderings = true
                };
                CorePipeline.Run("getPlaceholderRenderings", placeholderRenderingsArgs);

                hasPlaceholderSettings = placeholderRenderingsArgs.HasPlaceholderSettings;
                var stringList = new List <string>();
                if (placeholderRenderingsArgs.PlaceholderRenderings != null)
                {
                    stringList = placeholderRenderingsArgs.PlaceholderRenderings.Select(i => i.ID.ToShortID().ToString()).ToList() ?? new List <string>();
                }
                args.ChromeData.Custom.Add("allowedRenderings", stringList);
                placeholderItem = Client.Page.GetPlaceholderItem(placeholderPath, args.Item.Database, layout);
                if (placeholderItem != null)
                {
                    args.ChromeData.DisplayName = 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());
        }
        protected ChromeData GetClientData()
        {
            var args = new GetChromeDataArgs("rendering", this.RenderingContext.Rendering.Item);
            var renderingReference = this.RenderingContext.Rendering.GetRenderingReference(Context.Language,
                                                                                           this.RenderingContext.PageContext.Database);

            args.CustomData["renderingReference"] = (object)renderingReference;
            GetChromeDataPipeline.Run(args);

            return(args.ChromeData);
        }
        public override void Process(GetChromeDataArgs args)
        {
            var isAuthorized = ServiceAuthorizationManager.IsUserAuthorized(WebServiceSettings.ServiceExecution, Context.User.Name);

            if (!isAuthorized)
            {
                return;
            }

            Assert.ArgumentNotNull(args, "args");
            var page = Sitecore.Context.Item;

            if (page == null)
            {
                // a bit of a hacky way to determine the caller so we can have page context
                var parameters = new UrlString("?" + Context.Items["SC_FORM"]);
                var itemId     = ID.Parse(parameters.Parameters["itemid"], args.Item.ID);
                var language   = string.IsNullOrWhiteSpace(parameters.Parameters["language"])
                    ? args.Item.Language
                    : LanguageManager.GetLanguage(parameters.Parameters["language"]);
                page = args.Item.Database.GetItem(itemId, language);
            }

            var chromeType = args.ChromeType;
            var chromeName = args.ChromeData.DisplayName;
            var click      = "webedit:script(scriptId={0}, scriptdB={1})";

            args.CommandContext.Parameters["pageId"]     = page.ID.ToString();
            args.CommandContext.Parameters["pageLang"]   = page.Language.Name;
            args.CommandContext.Parameters["pageVer"]    = page.Version.Number.ToString();
            args.CommandContext.Parameters["ChromeType"] = chromeType;
            args.CommandContext.Parameters["ChromeName"] = chromeName;
            var ruleContext = new RuleContext
            {
                Item = args.Item
            };

            foreach (var parameter in args.CommandContext.Parameters.AllKeys)
            {
                ruleContext.Parameters[parameter] = args.CommandContext.Parameters[parameter];
            }

            foreach (var libraryItem in ModuleManager.GetFeatureRoots(IntegrationPoint))
            {
                if (!libraryItem.HasChildren)
                {
                    return;
                }

                AddButton(args, libraryItem, ruleContext, click);
            }
        }
        private static IEnumerable <ID> GetCompatibleRenderingsList(GetChromeDataArgs args)
        {
            var morphButton = args.ChromeData.Commands.FirstOrDefault(x => x.Click.StartsWith("chrome:rendering:morph"));

            if (morphButton == null)
            {
                return(new ID[0]);
            }

            var ids = morphButton.Click.Split(',', '\'', '"', '(', ')');

            return(ids.Where(ShortID.IsShortID).Select(x => ShortID.Parse(x).ToID()));
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");

            switch (args.ChromeType.ToLower())
            {
                case "rendering":
                    RenderingElement(args);
                    break;
                case "field":
                    FieldElement(args);
                    break;
            }
        }
        public override void Process(GetChromeDataArgs args)
        {
            var renderingReference = args.CustomData["renderingReference"] as RenderingReference;

            if (renderingReference == null)
            {
                return;
            }

            var startingCompatibleRenderings = GetCompatibleRenderingsList(args);
            var context = new GetCompatibleRenderingsRuleContext(renderingReference, startingCompatibleRenderings, args.Item);

            _rulesRunner.RunGlobalRules("Get Compatible Renderings", renderingReference.Database, context);

            UpdateChromeCompatibleRenderings(args, context.CompatibleRenderings);
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");

            switch (args.ChromeType.ToLower())
            {
            case "rendering":
                RenderingElement(args);
                break;

            case "field":
                FieldElement(args);
                break;
            }
        }
Beispiel #26
0
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if ("placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                string placeholderKey = args.CustomData["placeHolderKey"] as string;

                Sitecore.Data.Fields.LayoutField layoutField = new Sitecore.Data.Fields.LayoutField(Context.Item.Fields[Sitecore.FieldIDs.FinalLayoutField]);
                LayoutDefinition layoutDefinition            = LayoutDefinition.Parse(layoutField.Value);
                DeviceDefinition deviceDefinition            = layoutDefinition.GetDevice(Context.Device.ID.ToString());

                // Initial repository path is "/sitecore/system/Modules/USF Health Restriction Manager/Remove Delete Button"
                Item removeDeleteButtonItem = Context.Item.Database.GetItem("/sitecore/system/Modules/USF Health Restriction Manager/Remove Delete Button");

                if (removeDeleteButtonItem == null)
                {
                    Assert.IsNull(removeDeleteButtonItem, "Item is null");
                    return;
                }

                MultilistField listOfRenderingItems = removeDeleteButtonItem.Fields["List of Rendering Items"];
                string         listOfUserRoles      = removeDeleteButtonItem.Fields["List of User Roles"].Value.Trim();
                List <string>  eachListOfUserRoles  = listOfUserRoles.Split(';').ToList();


                // Remove "Delete" button in placeholder
                if (eachListOfUserRoles.Where(e => User.Current.IsInRole(e)).Any())
                {
                    args.ChromeData.Custom["removeAddHereButton"] = true;
                    foreach (ID renderingItemId in listOfRenderingItems.TargetIDs)
                    {
                        RenderingItem r             = RenderingItem.GetItem(renderingItemId, Context.Data.Database, true);
                        string        renderingName = Regex.Replace(r.Name.ToLower(), @"\s+", "");
                        string        displayName   = Regex.Replace(args.ChromeData.DisplayName.ToLower(), @"\s+", "");

                        // Only when rendering name matches to its display name
                        // Only when rendering item's display name contains rendering name
                        // Only when master rendering item has 'Main Layout' placeholder key
                        if (renderingName == displayName || displayName.Contains(renderingName) || (r.Name.ToLower().Contains(" master") && displayName == "mainlayout"))
                        {
                            args.ChromeData.Custom["editable"] = false;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Checks the references to this field-item
        /// </summary>
        /// <param name="args">Sitecore Chrome Data Arguments</param>
        private void FieldElement(GetChromeDataArgs args)
        {
            Field argument   = args.CustomData["field"] as Field;
            Item  item       = args.Item;
            var   refBuilder = new StringBuilder();

            if (item != null && argument != null)
            {
                var format = "{0} (" + item.DisplayName + ")";
                args.ChromeData.DisplayName = string.Format(format, argument.DisplayName);
                if (!string.IsNullOrEmpty(argument.ToolTip))
                {
                    refBuilder.Append(string.Format(format, argument.ToolTip));
                }

                args.ChromeData.ExpandedDisplayName = refBuilder.ToString();
            }
        }
        /// <summary>
        /// Checks the references to this field-item
        /// </summary>
        /// <param name="args">Sitecore Chrome Data Arguments</param>
        private void FieldElement(GetChromeDataArgs args)
        {
            Field argument = args.CustomData["field"] as Field;
            Item item = args.Item;
            var refBuilder = new StringBuilder();

            if (item != null && argument != null)
            {
                var format = "{0} (" + item.DisplayName + ")";
                args.ChromeData.DisplayName = string.Format(format, argument.DisplayName);
                if (!string.IsNullOrEmpty(argument.ToolTip))
                {
                    refBuilder.Append(string.Format(format, argument.ToolTip));
                }

                args.ChromeData.ExpandedDisplayName = refBuilder.ToString();
            }
        }
 public override void Process(GetChromeDataArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     Assert.IsNotNull(args.ChromeData, "Chrome Data");
     if ("field".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
     {
         Field argument = args.CustomData["field"] as Field;
         Item currentItem = args.Item;
         if (currentItem != null)
         {
             if (currentItem.IsClone)
             {
                 args.ChromeData.DisplayName = string.Format("<b>This field is a Clone!</b> {0}", argument.DisplayName);
                 args.ChromeData.ExpandedDisplayName = string.Format("If you change this field, changes from the original Item will be ignored! {0}", argument.ToolTip);
             }
         }
     }
 }
        /// <summary>
        /// Checks the references and the item information of the rendering datasource
        /// </summary>
        /// <param name="args">Sitecore Chrome Data Arguments</param>
        private void RenderingElement(GetChromeDataArgs args)
        {
            var    argument       = args.CustomData["renderingReference"] as RenderingReference;
            string format         = string.Empty;
            Item   item           = args.Item;
            Item   datasourceItem = argument != null && (!string.IsNullOrEmpty(argument.Settings.DataSource))
                ? argument.RenderingItem.Database.GetItem(new ID(argument.Settings.DataSource))
                : null;

            item = datasourceItem ?? item;
            var refBuilder = new StringBuilder();

            if (item != null)
            {
                var referenceItems = Globals.LinkDatabase.GetReferrers(item);
                if (referenceItems.Any())
                {
                    format = string.Format("{0} ({1}) - {2} References", item.DisplayName, args.ChromeData.DisplayName,
                                           referenceItems.Count());

                    refBuilder.Append(string.Format("{0} \n ------------", format));

                    foreach (var referenceItem in referenceItems)
                    {
                        var sourceItem = referenceItem.GetSourceItem();
                        if (sourceItem != null)
                        {
                            refBuilder.Append(string.Format("\n - {0} ({1} - {2})", sourceItem.DisplayName,
                                                            sourceItem.Paths.FullPath, sourceItem.ID));
                        }
                    }
                    args.ChromeData.ExpandedDisplayName = refBuilder.ToString();
                }

                args.ChromeData.DisplayName = (string.IsNullOrEmpty(format)) ? args.ChromeData.DisplayName : format;
            }

            if (argument != null && !string.IsNullOrEmpty(argument.RenderingItem.InnerItem.Appearance.ShortDescription))
            {
                refBuilder.Append(string.Format("{0} \n\n", argument.RenderingItem.InnerItem.Appearance.ShortDescription));
            }

            args.ChromeData.ExpandedDisplayName = refBuilder.ToString();
        }
        /// <summary>
        /// Checks the references and the item information of the rendering datasource
        /// </summary>
        /// <param name="args">Sitecore Chrome Data Arguments</param>
        private void RenderingElement(GetChromeDataArgs args)
        {
            var argument = args.CustomData["renderingReference"] as RenderingReference;
            string format = string.Empty;
            Item item = args.Item;
            Item datasourceItem = argument != null && (!string.IsNullOrEmpty(argument.Settings.DataSource))
                ? argument.RenderingItem.Database.GetItem(new ID(argument.Settings.DataSource))
                : null;
            item = datasourceItem ?? item;
            var refBuilder = new StringBuilder();

            if (item != null)
            {
                var referenceItems = Globals.LinkDatabase.GetReferrers(item);
                if (referenceItems.Any())
                {
                    format = string.Format("{0} ({1}) - {2} References", item.DisplayName, args.ChromeData.DisplayName,
                        referenceItems.Count());

                    refBuilder.Append(string.Format("{0} \n ------------", format));

                    foreach (var referenceItem in referenceItems)
                    {
                        var sourceItem = referenceItem.GetSourceItem();
                        if (sourceItem != null)
                        {
                            refBuilder.Append(string.Format("\n - {0} ({1} - {2})", sourceItem.DisplayName,
                                sourceItem.Paths.FullPath, sourceItem.ID));
                        }
                    }
                    args.ChromeData.ExpandedDisplayName = refBuilder.ToString();
                }

                args.ChromeData.DisplayName = (string.IsNullOrEmpty(format)) ? args.ChromeData.DisplayName : format;
            }

            if (argument != null && !string.IsNullOrEmpty(argument.RenderingItem.InnerItem.Appearance.ShortDescription))
            {
                refBuilder.Append(string.Format("{0} \n\n", argument.RenderingItem.InnerItem.Appearance.ShortDescription));
            }

            args.ChromeData.ExpandedDisplayName = refBuilder.ToString();
        }
Beispiel #32
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;
            }
        }
Beispiel #33
0
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");
            if (!"rendering".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
            {
                return;
            }

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

            var renderingReference = args.CustomData["renderingReference"] as Sitecore.Layouts.RenderingReference;

            if (renderingReference == null || renderingReference.Settings == null)
            {
                return;
            }

            var fragmentId  = StringUtil.ExtractParameter("fragmentid", renderingReference.Settings.Parameters);
            var wasfragment = "1" == StringUtil.ExtractParameter("wasfragment", renderingReference.Settings.Parameters);

            var datasourceItem      = renderingReference.Database.ResolveDatasource(renderingReference.Settings.DataSource);
            var editFragmentCommand = args.ChromeData.Commands
                                      .FirstOrDefault(x => x.Click.Contains("deg:rendering:editfragment()"));

            if (editFragmentCommand != null)
            {
                if (string.IsNullOrWhiteSpace(fragmentId) || !wasfragment)
                {
                    args.ChromeData.Commands.Remove(editFragmentCommand);
                }
                else
                {
                    editFragmentCommand.Click = editFragmentCommand
                                                .Click.Replace("deg:rendering:editfragment()",
                                                               string.Format("deg:rendering:editfragment(fragmentid={0})", fragmentId));
                }
            }
        }
Beispiel #34
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;
            }
        }
Beispiel #36
0
 public override void Process(GetChromeDataArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     Assert.IsNotNull(args.ChromeData, "Chrome Data");
     if ("placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
     {
         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)
         {
             string newPlaceholderKey = match.Groups[1].Value;
             args.CustomData["placeHolderKey"] = newPlaceholderKey;
             base.Process(args);
             args.CustomData["placeHolderKey"] = placeholderKey;
         }
         else
         {
             base.Process(args);
         }
     }
 }
 public override void Process(GetChromeDataArgs args)
 {
     Assert.ArgumentNotNull(args, "args");
     Assert.IsNotNull(args.ChromeData, "Chrome Data");
     if ("placeholder".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
     {
         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)
         {
             string newPlaceholderKey = match.Groups[1].Value;
             args.CustomData["placeHolderKey"] = newPlaceholderKey;
             base.Process(args);
             args.CustomData["placeHolderKey"] = placeholderKey;
         }
         else
         {
             base.Process(args);
         }
     }
 }
        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;
                }
            }
        }
        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 (!"rendering".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
     {
         return;
     }
     //We need to ensure that the cache is fully populated
     args.Item.Fields.ReadAll();
     var fields = string.Join("|", args.Item.Fields.Where(f => !f.Name.StartsWith("__")).Select(f => f.Name));
     AddButtonsToChromeData(new[] {
         new WebEditButton
         {
             Click = string.Format("webedit:fieldeditor(fields={0}, command={{70C4EED5-D4CD-4D7D-9763-80C42504F5E7}})", fields),
             Icon = args.Item.Appearance.Icon,
             Tooltip = "Edit the fields for "+args.Item.Name,
             Header = "Edit fields",
             Type = "sticky" // sticky keeps it from being hidden in the 'more' dropdown
         }
     }
     , args);
 }
        public override void Process(GetChromeDataArgs args)
        {
            const string websiteSharedContentFolderItemId = "{9B2493D2-6270-4BEA-A58B-64321C1E1D2F}";
            const string globalSharedContentFolderItemId  = "{0A71BD21-0EB1-4345-AC43-6FA4BDBB87B2}";

            Assert.ArgumentNotNull(args, "args");

            if (args.ChromeType.Equals("Rendering", StringComparison.InvariantCultureIgnoreCase))
            {
                var websiteSharedQuery         = $"./ancestor::*[@@tid=\"{websiteSharedContentFolderItemId}\"]";
                var globalSharedQuery          = $"./ancestor::*[@@id=\"{globalSharedContentFolderItemId}\"]";
                var websiteSharedContentFolder = args.Item.Axes.SelectSingleItem(websiteSharedQuery);
                var globalSharedContentFolder  = args.Item.Axes.SelectSingleItem(globalSharedQuery);
                if (websiteSharedContentFolder != null)
                {
                    args.ChromeData.DisplayName += " (SHARED)";
                }
                else if (globalSharedContentFolder != null)
                {
                    args.ChromeData.DisplayName += " (GLOBAL SHARED)";
                }
            }
        }
Beispiel #42
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 placeholderKey = args.CustomData["placeHolderKey"] as string;

            // Is a Dynamic Placeholder
            if (placeholderKey != null && placeholderKey.Contains("_dph_"))
            {
                placeholderKey = placeholderKey.Substring(0, placeholderKey.LastIndexOf("_dph_", StringComparison.Ordinal));
                if (placeholderKey.LastIndexOf("/", StringComparison.Ordinal) >= 0)
                {
                    placeholderKey = placeholderKey.Substring(placeholderKey.LastIndexOf("/", StringComparison.Ordinal) + 1);
                }
            }

            args.ChromeData.DisplayName         = placeholderKey;
            args.ChromeData.ExpandedDisplayName = placeholderKey + " Dynamic Placeholder";
        }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            Assert.IsNotNull(args.ChromeData, "Chrome Data");

            // Can't process chrome for a null item.
            if (args.Item == null) return;

            // If this request is for placeholder chrome...
            if (args.ChromeType.Equals("placeholder", StringComparison.OrdinalIgnoreCase))
            {
                // Get the placeholder key.
                var placeholderKey = args.CustomData["placeHolderKey"] as string;

                // If this placeholder is not a dynamic placeholder, do nothing.
                if (!placeholderKey.ToLower().Contains(Constants.DynamicPlaceholderSuffix.ToLower()))
                    return;

                // Strip off the suffix to get the actual placeholder key.
                var actualKey = placeholderKey.ToLower().Substring(0, placeholderKey.ToLower().LastIndexOf(Constants.DynamicPlaceholderSuffix.ToLower()));

                // Get the current item's layout definition.
                var layout = args.Item[Sitecore.FieldIDs.LayoutField];

                // Get the placeholder item for this placeholder on the current item's layout definition.
                var placeholderItem = Sitecore.Client.Page.GetPlaceholderItem(placeholderKey, args.Item.Database, layout);
                if (placeholderItem == null) return;

                // Use the placeholder's display name as the display name in the chrome data.
                args.ChromeData.DisplayName = placeholderItem.DisplayName;

                // If the placeholder has a short description, use that in the chrome data's expanded display name.
                if (!string.IsNullOrWhiteSpace(placeholderItem.Appearance.ShortDescription))
                    args.ChromeData.ExpandedDisplayName = placeholderItem.Appearance.ShortDescription;
            }
        }
 /// <summary>Renders the bottom bar.</summary>
 /// <param name="args">The arguments.</param>
 /// <param name="field">The field.</param>
 /// <param name="controlID"> </param>
 private static string GetFieldData(RenderFieldArgs args, Field field, string controlID)
 {
     Assert.ArgumentNotNull((object)args, "args");
     Assert.ArgumentNotNull((object)field, "field");
     Assert.ArgumentNotNull((object)controlID, "controlID");
     Item obj = field.Item;
     Assert.IsNotNull((object)Sitecore.Context.Site, "site");
     using (new LanguageSwitcher(WebUtil.GetCookieValue("shell", "lang", Sitecore.Context.Site.Language)))
     {
         GetChromeDataArgs args1 = new GetChromeDataArgs("field", obj, args.Parameters);
         args1.CustomData["field"] = (object)field;
         GetChromeDataPipeline.Run(args1);
         ChromeData chromeData = args1.ChromeData;
         SetCommandParametersValue((IEnumerable<WebEditButton>)chromeData.Commands, field, controlID);
         return chromeData.ToJson();
     }
 }
 protected abstract void DoGetChromeData(GetChromeDataArgs args);
 public override void Process(GetChromeDataArgs args)
 {
     KernelContainer.Inject(this);
     this.DoGetChromeData(args);
 }
        public override void Process(GetChromeDataArgs args)
        {
            Assert.ArgumentNotNull((object)args, "args");
            Assert.IsNotNull((object)args.ChromeData, "Chrome Data");
            if (!"editFrame".Equals(args.ChromeType, StringComparison.OrdinalIgnoreCase))
                return;

            string str = StringUtil.GetString(args.CustomData["buttonsPath"], Settings.WebEdit.DefaultButtonPath);
            Assert.IsNotNull((object)str, "path");
            if (str.StartsWith(BuildToken, StringComparison.InvariantCulture))
            {


                string defaultTitle = DefaultTitle;

                if (str.Contains("<title>"))
                {
                    var match = _titleRegex.Match(str);
                    var title = match.Groups["title"].Value;
                    defaultTitle = title;
                    str = _titleRegex.Replace(str, "");
                }

                var fields = str.Substring(BuildToken.Length);

                var name = ItemUtil.ProposeValidItemName(fields);

                //me this is hack for really long names
                if (name.Length > 40)
                {
                    var hash = name.GetHashCode();
                    if (hash < 0)
                    {
                        hash *= -1;
                    }
                    name = hash.ToString();
                }

                str = "/sitecore/content/Applications/WebEdit/Edit Frame Buttons/" + name;
                Database database = Factory.GetDatabase("core");
                Assert.IsNotNull((object)database, "core");
                using (new SecurityDisabler())
                {
                    Item folderItem = database.GetItem(str);

                    if (folderItem == null)
                    {


                        var rootItem = database.GetItem(WebEditButtonRoot);

                        folderItem = rootItem.Add(name, _folderTemplateId);

                        string toolTipText = Tooltip.Formatted(fields.Replace("|", ", "));

                        folderItem.Editing.BeginEdit();
                        folderItem[DefaultTooltipField] = toolTipText;
                        folderItem[DefaultTitleField] = defaultTitle;
                        folderItem.Editing.EndEdit();



                        var editItem = folderItem.Add(EditName, _editTemplateId);

                        editItem.Editing.BeginEdit();

                        editItem[HeaderField] = EditName;
                        editItem[FieldsField] = fields;
                        editItem[IconField] = Icon;
                        editItem[TooltipField] = toolTipText;

                        editItem.Editing.EndEdit();

                    }

                    args.CustomData["buttonsPath"] = folderItem.Paths.Path;

                }


            }


        }