/// <summary> /// Gets the list of placeholder definitions from a Layout field. /// </summary> /// <param name="definition">The parsed Layout field.</param> /// <param name="placeholderKey">The placeholder key.</param> /// <param name="deviceId">The device ID.</param> /// <returns>The list of placeholder definitions.</returns> public static IEnumerable <PlaceholderDefinition> GetPlaceholderDefinitionList(LayoutDefinition definition, string placeholderKey, ID deviceId) { Assert.ArgumentNotNull(definition, nameof(definition)); Assert.ArgumentNotNull(placeholderKey, nameof(placeholderKey)); Assert.ArgumentNotNull(deviceId, nameof(deviceId)); // Gets the list of placeholder definitions for the specified device ArrayList placeholders = definition.GetDevice(deviceId.ToString()).Placeholders; List <PlaceholderDefinition> placeholderDefinitions = new List <PlaceholderDefinition>(); if (placeholders == null || placeholders.Count == 0) { return(null); } PlaceholderDefinition placeholderDefinitionTemp = null; string lastPart = StringUtil.GetLastPart(placeholderKey, '/', placeholderKey); // Search through all the placeholder definitions to find all the ones that have a matching key foreach (PlaceholderDefinition placeholderDefinition in placeholders) { string key = placeholderDefinition.Key; if (string.Equals(key, lastPart, StringComparison.InvariantCultureIgnoreCase) || string.Equals(key, placeholderKey, StringComparison.InvariantCultureIgnoreCase)) { placeholderDefinitions.Add(placeholderDefinition); } } return(placeholderDefinitions); }
protected void AddPlaceholder(ClientPipelineArgs args) { if (args.IsPostBack) { if (string.IsNullOrEmpty(args.Result) || !(args.Result != "undefined")) { return; } LayoutDefinition layoutDefinition = CustomDeviceEditor.GetLayoutDefinition(); DeviceDefinition device = layoutDefinition.GetDevice(this.DeviceID); string placeholderKey; Item dialogResult = SelectPlaceholderSettingsOptions.ParseDialogResult(args.Result, Client.ContentDatabase, out placeholderKey); if (dialogResult == null || string.IsNullOrEmpty(placeholderKey)) { return; } PlaceholderDefinition placeholderDefinition = new PlaceholderDefinition() { UniqueId = ID.NewID.ToString(), MetaDataItemId = dialogResult.Paths.FullPath, Key = placeholderKey }; device.AddPlaceholder(placeholderDefinition); CustomDeviceEditor.SetDefinition(layoutDefinition); this.Refresh(); } else { SheerResponse.ShowModalDialog(new SelectPlaceholderSettingsOptions() { IsPlaceholderKeyEditable = true }.ToUrlString().ToString(), "460px", "460px", string.Empty, true); args.WaitForPostBack(); } }
protected override void ProcessItem(Item item) { var phs = new PlaceholderDefinition { MetaDataItemId = item.Paths.FullPath, Key = Key, UniqueId = ID.NewID.ToString() }; var psobj = ItemShellExtensions.WrapInItemOwner(SessionState, item, phs); WriteObject(psobj); }
protected override void ProcessLayout(Item item, LayoutDefinition layout, DeviceDefinition device) { var key = Key ?? Instance.Key; if (string.IsNullOrWhiteSpace(key)) { WriteError(typeof(ObjectNotFoundException), "A placeholder setting requires a key provided here or in the instance.", ErrorIds.ValueNotFound, ErrorCategory.ObjectNotFound, key); return; } var metadataItemId = MetaDataItemId ?? Instance.MetaDataItemId; if (string.IsNullOrWhiteSpace(metadataItemId)) { WriteError(typeof(ObjectNotFoundException), "A placeholder setting requires a MetaDataItemId provided here or in the instance.", ErrorIds.ValueNotFound, ErrorCategory.ObjectNotFound, metadataItemId); return; } if (!ShouldProcess(item.GetProviderPath(), $"Add placeholder setting '{metadataItemId}'")) { return; } var placeholder = new PlaceholderDefinition { Key = key, MetaDataItemId = metadataItemId, UniqueId = ID.NewID.ToString() }; if (!PlaceholderSettingExists(device, placeholder)) { device.AddPlaceholder(placeholder); item.Edit(p => { var outputXml = layout.ToXml(); LayoutField.SetFieldValue(item.Fields[LayoutFieldId], outputXml); }); } else { WriteError(typeof(DuplicateNameException), $"A placeholder setting with key '{key}' and metadata '{metadataItemId}' already exists.", ErrorIds.PlaceholderSettingAlreadyExists, ErrorCategory.InvalidArgument, placeholder); return; } }
private void WritePlaceholder([NotNull] XmlTextWriter output, [NotNull] PlaceholderDefinition placeholder) { Assert.ArgumentNotNull(output, nameof(output)); Assert.ArgumentNotNull(placeholder, nameof(placeholder)); output.WriteStartElement("p"); output.WriteAttributeString("key", placeholder.Key ?? string.Empty); output.WriteAttributeString("md", placeholder.MetaDataItemId ?? string.Empty); output.WriteAttributeString("uid", placeholder.UniqueId ?? string.Empty); output.WriteAttributeString("ic", Images.GetThemedImageSource("Applications/16x16/selection.png", ImageDimension.id16x16)); output.WriteEndElement(); }
protected void EditPlaceholder(ClientPipelineArgs args) { if (string.IsNullOrEmpty(this.UniqueId)) { return; } LayoutDefinition layoutDefinition = DeviceEditorForm.GetLayoutDefinition(); DeviceDefinition device = layoutDefinition.GetDevice(this.DeviceID); PlaceholderDefinition placeholder = device.GetPlaceholder(this.UniqueId); if (placeholder == null) { return; } if (args.IsPostBack) { if (!string.IsNullOrEmpty(args.Result) && args.Result != "undefined") { string key; Item item = SelectPlaceholderSettingsOptions.ParseDialogResult(args.Result, Client.ContentDatabase, out key); if (item == null) { return; } placeholder.MetaDataItemId = item.Paths.FullPath; placeholder.Key = key; DeviceEditorForm.SetDefinition(layoutDefinition); this.Refresh(); return; } } else { Item item2 = string.IsNullOrEmpty(placeholder.MetaDataItemId) ? null : Client.ContentDatabase.GetItem(placeholder.MetaDataItemId); SelectPlaceholderSettingsOptions selectPlaceholderSettingsOptions = new SelectPlaceholderSettingsOptions { TemplateForCreating = null, PlaceholderKey = placeholder.Key, CurrentSettingsItem = item2, SelectedItem = item2, IsPlaceholderKeyEditable = true }; SheerResponse.ShowModalDialog(selectPlaceholderSettingsOptions.ToUrlString().ToString(), "460px", "460px", string.Empty, true); args.WaitForPostBack(); } }
protected void EditPlaceholder(ClientPipelineArgs args) { if (string.IsNullOrEmpty(this.UniqueId)) { return; } LayoutDefinition layoutDefinition = CustomDeviceEditor.GetLayoutDefinition(); PlaceholderDefinition placeholder = layoutDefinition.GetDevice(this.DeviceID).GetPlaceholder(this.UniqueId); if (placeholder == null) { return; } if (args.IsPostBack) { if (string.IsNullOrEmpty(args.Result) || !(args.Result != "undefined")) { return; } string placeholderKey; Item dialogResult = SelectPlaceholderSettingsOptions.ParseDialogResult(args.Result, Client.ContentDatabase, out placeholderKey); if (dialogResult == null) { return; } placeholder.MetaDataItemId = dialogResult.Paths.FullPath; placeholder.Key = placeholderKey; CustomDeviceEditor.SetDefinition(layoutDefinition); this.Refresh(); } else { Item obj = string.IsNullOrEmpty(placeholder.MetaDataItemId) ? (Item)null : Client.ContentDatabase.GetItem(placeholder.MetaDataItemId); SelectPlaceholderSettingsOptions placeholderSettingsOptions = new SelectPlaceholderSettingsOptions(); placeholderSettingsOptions.TemplateForCreating = (Template)null; placeholderSettingsOptions.PlaceholderKey = placeholder.Key; placeholderSettingsOptions.CurrentSettingsItem = obj; placeholderSettingsOptions.SelectedItem = obj; placeholderSettingsOptions.IsPlaceholderKeyEditable = true; SheerResponse.ShowModalDialog(placeholderSettingsOptions.ToUrlString().ToString(), "460px", "460px", string.Empty, true); args.WaitForPostBack(); } }
protected void EditPlaceholderPipeline(ClientPipelineArgs args) { Assert.ArgumentNotNull(args, "args"); LayoutDefinition definition = LayoutDefinition.Parse(this.GetDoc().OuterXml); PlaceholderDefinition placeholder = definition.GetDevice(args.Parameters["deviceid"]).GetPlaceholder(args.Parameters["uniqueid"]); if (placeholder != null) { if (args.IsPostBack) { if (!string.IsNullOrEmpty(args.Result) && (args.Result != "undefined")) { string str; Item item = SelectPlaceholderSettingsOptions.ParseDialogResult(args.Result, Client.ContentDatabase, out str); if (item != null) { placeholder.MetaDataItemId = item.Paths.FullPath; } if (!string.IsNullOrEmpty(str)) { placeholder.Key = str; } this.SetActiveLayout(definition.ToXml()); this.Refresh(); } } else { Item item2 = string.IsNullOrEmpty(placeholder.MetaDataItemId) ? null : Client.ContentDatabase.GetItem(placeholder.MetaDataItemId); SelectPlaceholderSettingsOptions options = new SelectPlaceholderSettingsOptions { TemplateForCreating = null, PlaceholderKey = placeholder.Key, CurrentSettingsItem = item2, SelectedItem = item2, IsPlaceholderKeyEditable = true }; SheerResponse.ShowModalDialog(options.ToUrlString().ToString(), "460px", "460px", string.Empty, true); args.WaitForPostBack(); } } }
protected void RemovePlaceholder(Message message) { Assert.ArgumentNotNull(message, "message"); if (string.IsNullOrEmpty(this.UniqueId)) { return; } LayoutDefinition layoutDefinition = DeviceEditorForm.GetLayoutDefinition(); DeviceDefinition device = layoutDefinition.GetDevice(this.DeviceID); PlaceholderDefinition placeholder = device.GetPlaceholder(this.UniqueId); if (placeholder == null) { return; } System.Collections.ArrayList placeholders = device.Placeholders; if (placeholders != null) { placeholders.Remove(placeholder); } DeviceEditorForm.SetDefinition(layoutDefinition); this.Refresh(); }
protected void AddPlaceholder(ClientPipelineArgs args) { if (args.IsPostBack) { if (!string.IsNullOrEmpty(args.Result) && args.Result != "undefined") { LayoutDefinition layoutDefinition = DeviceEditorForm.GetLayoutDefinition(); DeviceDefinition device = layoutDefinition.GetDevice(this.DeviceID); string text; Item item = SelectPlaceholderSettingsOptions.ParseDialogResult(args.Result, Client.ContentDatabase, out text); if (item == null || string.IsNullOrEmpty(text)) { return; } PlaceholderDefinition placeholderDefinition = new PlaceholderDefinition { UniqueId = ID.NewID.ToString(), MetaDataItemId = item.Paths.FullPath, Key = text }; device.AddPlaceholder(placeholderDefinition); DeviceEditorForm.SetDefinition(layoutDefinition); this.Refresh(); return; } } else { SelectPlaceholderSettingsOptions selectPlaceholderSettingsOptions = new SelectPlaceholderSettingsOptions { IsPlaceholderKeyEditable = true }; SheerResponse.ShowModalDialog(selectPlaceholderSettingsOptions.ToUrlString().ToString(), "460px", "460px", string.Empty, true); args.WaitForPostBack(); } }
private bool PlaceholderSettingExists(DeviceDefinition device, PlaceholderDefinition ph) { return(device.Placeholders .Cast <PlaceholderDefinition>() .Any(p => p.Key.Equals(ph.Key) && p.MetaDataItemId.Equals(ph.MetaDataItemId, StringComparison.OrdinalIgnoreCase))); }
protected void AddPlaceholder(ClientPipelineArgs args) { string str; if (!args.IsPostBack) { SelectPlaceholderSettingsOptions selectPlaceholderSettingsOption = new SelectPlaceholderSettingsOptions() { IsPlaceholderKeyEditable = true }; SheerResponse.ShowModalDialog(selectPlaceholderSettingsOption.ToUrlString().ToString(), "460px", "460px", string.Empty, true); args.WaitForPostBack(); } else if (!string.IsNullOrEmpty(args.Result) && args.Result != "undefined") { LayoutDefinition layoutDefinition = AdvancedDeviceEditorForm.GetLayoutDefinition(); DeviceDefinition device = layoutDefinition.GetDevice(this.DeviceID); Item item = SelectPlaceholderSettingsOptions.ParseDialogResult(args.Result, Client.ContentDatabase, out str); if (item == null || string.IsNullOrEmpty(str)) { return; } PlaceholderDefinition placeholderDefinition = new PlaceholderDefinition() { UniqueId = ID.NewID.ToString(), MetaDataItemId = item.Paths.FullPath, Key = str }; device.AddPlaceholder(placeholderDefinition); AdvancedDeviceEditorForm.SetDefinition(layoutDefinition); this.Refresh(); return; } }
private void BuildPlaceholder(Border border, DeviceDefinition deviceDefinition, PlaceholderDefinition placeholderDefinition) { string str3; Assert.ArgumentNotNull(border, "border"); Assert.ArgumentNotNull(deviceDefinition, "deviceDefinition"); Assert.ArgumentNotNull(placeholderDefinition, "placeholderDefinition"); string metaDataItemId = placeholderDefinition.MetaDataItemId; Border child = new Border(); border.Controls.Add(child); string str2 = StringUtil.GetString(new string[] { this.EditPlaceholderClick }).Replace("$Device", deviceDefinition.ID).Replace("$UniqueID", placeholderDefinition.UniqueId); Assert.IsNotNull(metaDataItemId, "placeholder id"); Item item = Client.ContentDatabase.GetItem(metaDataItemId); if (item != null) { string displayName = item.DisplayName; str3 = Images.GetImage(item.Appearance.Icon, 0x10, 0x10, "absmiddle", "0px 4px 0px 0px") + displayName; } else { str3 = Images.GetImage("Imaging/16x16/layer_blend.png", 0x10, 0x10, "absmiddle", "0px 4px 0px 0px") + placeholderDefinition.Key; } if (!string.IsNullOrEmpty(str2)) { child.RollOver = true; child.Class = "scRollOver"; child.Click = str2; } Sitecore.Web.UI.HtmlControls.Literal literal = new Sitecore.Web.UI.HtmlControls.Literal("<div style=\"padding:2\">" + str3 + "</div>"); child.Controls.Add(literal); }
/// <summary> /// Copy from Sitecore as as, just to make compile. /// </summary> private void BuildPlaceholder(Border border, DeviceDefinition deviceDefinition, PlaceholderDefinition placeholderDefinition) { Assert.ArgumentNotNull(border, "border"); Assert.ArgumentNotNull(deviceDefinition, "deviceDefinition"); Assert.ArgumentNotNull(placeholderDefinition, "placeholderDefinition"); string metaDataItemId = placeholderDefinition.MetaDataItemId; Border border1 = new Border(); border.Controls.Add(border1); string str1 = StringUtil.GetString(EditPlaceholderClick) .Replace("$Device", deviceDefinition.ID) .Replace("$UniqueID", placeholderDefinition.UniqueId); Assert.IsNotNull(metaDataItemId, "placeholder id"); Item obj = Client.ContentDatabase.GetItem(metaDataItemId); string str2; if (obj != null) { string displayName = obj.DisplayName; str2 = Images.GetImage(obj.Appearance.Icon, 16, 16, "absmiddle", "0px 4px 0px 0px") + displayName; } else { str2 = Images.GetImage("Imaging/16x16/layer_blend.png", 16, 16, "absmiddle", "0px 4px 0px 0px") + placeholderDefinition.Key; } if (!string.IsNullOrEmpty(str1)) { border1.RollOver = true; border1.Class = "scRollOver"; border1.Click = str1; } var literal = new Sitecore.Web.UI.HtmlControls.Literal(string.Format("<div style=\"padding:2\">{0}</div>", str2)); border1.Controls.Add(literal); }