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());
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
        private void Edit([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            var value = ((IFieldControl)this).GetValue();

            if (string.IsNullOrEmpty(value) || value.Contains("<ruleset />"))
            {
                value = "<ruleset><rule uid=\"" + Guid.NewGuid().ToString("B").ToUpperInvariant() + "\" /></ruleset>";
            }

            var root = value.ToXElement();

            if (root == null)
            {
                return;
            }

            var ruleModel = new RuleModel(root);

            var dialog = new RuleEditorDialog();

            dialog.Initialize(DatabaseUri, FieldSource, ruleModel);

            if (AppHost.Shell.ShowDialog(dialog) != true)
            {
                return;
            }

            rules = root.Document;
            Presenter.RuleModel = ruleModel;
            Presenter.Render();

            RaiseModified();
        }