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; } } } }
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; } } }
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); } } }
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); } } }
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()); }
/// <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; } }
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(); }
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; } }
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)); } } }
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 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)"; } } }
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; } } }