Beispiel #1
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();
     }
 }
        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;
            }
        }
Beispiel #3
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();
     }
 }