public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { Assert.ArgumentNotNull(context, nameof(context)); Assert.ArgumentNotNull(provider, nameof(provider)); var renderingItem = context.Instance as RenderingItem; if (renderingItem == null) { // ReSharper disable once AssignNullToNotNullAttribute return(value); } var ruleset = value as string ?? string.Empty; if (string.IsNullOrEmpty(ruleset) || ruleset.Contains("<ruleset />")) { ruleset = "<ruleset><rule /></ruleset>"; } var root = ruleset.ToXElement(); if (root == null) { // ReSharper disable once AssignNullToNotNullAttribute return(value); } var dataSource = string.Empty; if (renderingItem.ItemUri.Site.SitecoreVersion >= Constants.Versions.Version7) { // /sitecore/system/Settings/Rules/Conditional Renderings dataSource = "{C3D3CAAF-1F07-43FB-B8FF-3EC6D712262C}"; } var ruleModel = new RuleModel(root); var dialog = new RuleEditorDialog(); dialog.Initialize(renderingItem.ItemUri.DatabaseUri, dataSource, ruleModel); if (AppHost.Shell.ShowDialog(dialog) != true) { // ReSharper disable once AssignNullToNotNullAttribute return(value); } return(ruleModel.ToString()); }
public override void Execute(object parameter) { var context = parameter as LayoutDesignerContext; if (context == null) { return; } var renderingItem = context.SelectedItems.FirstOrDefault() as RenderingItem; if (renderingItem == null) { return; } var ruleset = renderingItem.Ruleset; if (string.IsNullOrEmpty(ruleset) || ruleset.Contains("<ruleset />")) { ruleset = "<ruleset><rule /></ruleset>"; } var root = ruleset.ToXElement(); if (root == null) { return; } var dataSource = string.Empty; if (renderingItem.ItemUri.Site.SitecoreVersion >= Constants.Versions.Version7) { // /sitecore/system/Settings/Rules/Conditional Renderings dataSource = "{C3D3CAAF-1F07-43FB-B8FF-3EC6D712262C}"; } var ruleModel = new RuleModel(root); var dialog = new RuleEditorDialog(); dialog.Initialize(renderingItem.ItemUri.DatabaseUri, dataSource, ruleModel); if (AppHost.Shell.ShowDialog(dialog) == true) { renderingItem.Ruleset = ruleModel.ToString(); } }