/// <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);
        }
Ejemplo n.º 2
0
 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();
     }
 }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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();
            }
        }
Ejemplo n.º 7
0
        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();
            }
        }
Ejemplo n.º 8
0
        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();
                }
            }
        }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
 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();
     }
 }
Ejemplo n.º 11
0
 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);
        }