public override void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            var itemUri = validationDescriptor.ItemUri;

            SetHelp(itemUri);
        }
Exemple #2
0
        public void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            var item = validationDescriptor.ItemUri.Site.DataService.GetItemFields(validationDescriptor.ItemUri);

            var document = item.Uri.ToString();

            AppHost.Windows.OpenLayoutDesigner(document, item);
        }
Exemple #3
0
        private string ParseItemName([NotNull] ValidationDescriptor validationDescriptor)
        {
            var start = validationDescriptor.ItemPath.LastIndexOf("/", StringComparison.Ordinal);

            if (start < 0)
            {
                return(string.Empty);
            }

            return(validationDescriptor.ItemPath.Mid(start + 1));
        }
Exemple #4
0
        private string ParseFileName([NotNull] ValidationDescriptor validationDescriptor)
        {
            var start = validationDescriptor.Solution.IndexOf(":", StringComparison.Ordinal);

            if (start < 0)
            {
                return(string.Empty);
            }

            return(validationDescriptor.Solution.Mid(start + 1));
        }
Exemple #5
0
        private void ParseValidationElement([NotNull] XElement element)
        {
            Debug.ArgumentNotNull(element, nameof(element));

            validations.Clear();

            foreach (var item in element.Elements())
            {
                var severity = SeverityLevel.None;

                var severityText = item.GetAttributeValue("severity").ToLowerInvariant();
                switch (severityText)
                {
                case "error":
                    severity = SeverityLevel.Error;
                    break;

                case "warning":
                    severity = SeverityLevel.Warning;
                    break;

                case "suggestion":
                    severity = SeverityLevel.Suggestion;
                    break;

                case "hint":
                    severity = SeverityLevel.Hint;
                    break;
                }

                var record = new ValidationDescriptor(item.GetAttributeValue("name"), severity, item.GetAttributeValue("category"), item.GetElementValue("title"), item.GetElementValue("problem"), item.GetElementValue("solution"))
                {
                    ExternalLink = item.GetAttributeValue("link")
                };

                var id = item.GetAttributeValue("item");
                if (!string.IsNullOrEmpty(id))
                {
                    var parts = id.Split('/');

                    var databaseUri    = new DatabaseUri(ItemUri.Site, new DatabaseName(parts[0]));
                    var itemUri        = new ItemUri(databaseUri, new ItemId(Guid.Parse(parts[1])));
                    var itemVersionUri = new ItemVersionUri(itemUri, new Language(parts[2]), new Data.Version(int.Parse(parts[3])));

                    record.ItemUri  = itemVersionUri;
                    record.ItemPath = item.GetAttributeValue("itempath");
                }

                validations.Add(record);
            }

            RenderValidations();
        }
        public static void LoadType([NotNull] Type type, [NotNull] ValidationAttribute validationAttribute)
        {
            Assert.ArgumentNotNull(type, nameof(type));
            Assert.ArgumentNotNull(validationAttribute, nameof(validationAttribute));

            var i = type.GetInterface(ItemValidationInterfaceName);

            if (i != null)
            {
                var constructor = type.GetConstructor(Type.EmptyTypes);
                if (constructor == null)
                {
                    return;
                }

                var instance = constructor.Invoke(null) as IItemValidation;
                if (instance == null)
                {
                    return;
                }

                var itemValidationDescriptor = new ItemValidationDescriptor(validationAttribute, instance);
                itemValidations.Add(itemValidationDescriptor);
                return;
            }

            i = type.GetInterface(RenderingValidationInterfaceName);
            if (i != null)
            {
                var constructor = type.GetConstructor(Type.EmptyTypes);
                if (constructor == null)
                {
                    return;
                }

                var instance = constructor.Invoke(null) as IRenderingValidation;
                if (instance == null)
                {
                    return;
                }

                var renderingValidationDescriptor = new RenderingValidationDescriptor(validationAttribute, instance);
                renderingValidations.Add(renderingValidationDescriptor);
                return;
            }

            var validationDescriptor = new ValidationDescriptor(validationAttribute, type);

            validations.Add(validationDescriptor);
        }
Exemple #7
0
        public void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            var oldFieldType = Parse(validationDescriptor.Problem);
            var newFieldType = Parse(validationDescriptor.Solution);

            if (AppHost.MessageBox(string.Format("Are you sure you want to change the field type from \"{0}\" to \"{1}\"?", oldFieldType, newFieldType), "Confirmation", MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK)
            {
                return;
            }

            ItemModifier.Edit(validationDescriptor.ItemUri, "Type", newFieldType);
        }
Exemple #8
0
        public void Hide(ValidationDescriptor item)
        {
            Assert.ArgumentNotNull(item, nameof(item));

            var key = item.GetKey();

            if (HiddenItems.Contains(key))
            {
                return;
            }

            HiddenItems += key;

            var profileName = GetProfileName();

            AppHost.Settings.Set("Validation\\Items\\Hidden", profileName, HiddenItems);
        }
Exemple #9
0
        public ValidationPresenter([NotNull] IValidationViewerSkin skin, [NotNull] ValidationDescriptor item)
        {
            Assert.ArgumentNotNull(skin, nameof(skin));
            Assert.ArgumentNotNull(item, nameof(item));

            InitializeComponent();

            Skin = skin;
            Item = item;

            Severity = item.Severity;
            Title    = item.Title;
            Problem  = item.Problem;
            Solution = item.Solution;

            if (string.IsNullOrEmpty(item.Problem))
            {
                ProblemField.Visibility = Visibility.Collapsed;
            }

            if (string.IsNullOrEmpty(item.Solution))
            {
                SolutionField.Visibility = Visibility.Collapsed;
            }

            if (string.IsNullOrEmpty(item.ExternalLink))
            {
                ExternalLink.Visibility = Visibility.Collapsed;
            }

            if (item.ItemUri != ItemVersionUri.Empty)
            {
                ItemPath.Inlines.Add(item.ItemPath);
            }
            else
            {
                ItemLink.Visibility = Visibility.Collapsed;
            }

            var fix = FixManager.GetFix(item);

            if (fix == null)
            {
                FixButton.Visibility = Visibility.Collapsed;
            }
        }
        public void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            var itemName = ParseItemName(validationDescriptor);

            if (AppHost.MessageBox(string.Format("Are you sure you want to delete '{0}'?", itemName), "Confirmation", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation) != MessageBoxResult.OK)
            {
                return;
            }

            var pipeline = PipelineManager.GetPipeline <DeleteItemPipeline>();

            pipeline.ItemUri     = validationDescriptor.ItemUri.ItemUri;
            pipeline.DeleteFiles = false;

            pipeline.Start();
        }
Exemple #11
0
        public void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            var name = Parse(validationDescriptor.Problem);

            if (AppHost.MessageBox(string.Format(Resources.Delete_Execute_Are_you_sure_you_want_to_delete___0___, name), Resources.Confirmation, MessageBoxButton.OKCancel, MessageBoxImage.Exclamation) != MessageBoxResult.OK)
            {
                return;
            }

            var pipeline = PipelineManager.GetPipeline <DeleteItemPipeline>();

            pipeline.ItemUri     = validationDescriptor.ItemUri.ItemUri;
            pipeline.DeleteFiles = false;

            pipeline.Start();
        }
Exemple #12
0
        /// <summary>Determines whether this instance can fix the specified validation.</summary>
        /// <param name="validationDescriptor">The validation.</param>
        /// <returns><c>true</c> if this instance can fix the specified validation; otherwise, <c>false</c>.</returns>
        public bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, "validationDescriptor");

            if (validationDescriptor.Name != "Control does not have an Example file")
            {
                return(false);
            }

            if (string.IsNullOrEmpty(validationDescriptor.ItemUri.Site.WebRootPath))
            {
                return(false);
            }

            var fileName = this.ParseFileName(validationDescriptor);

            return(!string.IsNullOrEmpty(fileName));
        }
Exemple #13
0
        public void Disable(ValidationDescriptor item)
        {
            Assert.ArgumentNotNull(item, nameof(item));

            var profileName = GetProfileName();
            var key         = "[" + item.Name + "]";

            var inactive = AppHost.Settings.GetString("Validation\\Items\\Profiles", profileName, string.Empty);

            if (inactive.Contains(key))
            {
                return;
            }

            inactive += key;

            AppHost.Settings.Set("Validation\\Items\\Profiles", profileName, inactive);
        }
        public bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            var customValidation = CustomValidationManager.CustomValidations.FirstOrDefault(c => c.Title == validationDescriptor.Title);

            if (customValidation == null)
            {
                return(false);
            }

            if (string.IsNullOrWhiteSpace(customValidation.Fix))
            {
                return(false);
            }

            return(true);
        }
        public void Hide(ValidationDescriptor item)
        {
            Assert.ArgumentNotNull(item, nameof(item));

            ValidationViewer.Hide(item);

            var treeViewItem = entries.FirstOrDefault(e => e.Tag == item);

            if (treeViewItem == null)
            {
                return;
            }

            var parent = treeViewItem.GetAncestor <TreeViewItem>();

            if (parent != null)
            {
                parent.Items.Remove(treeViewItem);
            }

            treeViewItem = parent;
            while (treeViewItem != null)
            {
                parent = treeViewItem.GetAncestor <TreeViewItem>();

                if (treeViewItem.Items.Count == 0)
                {
                    if (parent != null)
                    {
                        parent.Items.Remove(treeViewItem);
                    }
                }
                else
                {
                    var header = treeViewItem.Header as TreeViewHeader;
                    if (header != null)
                    {
                        header.Count--;
                    }
                }

                treeViewItem = parent;
            }
        }
        public void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            var customValidation = CustomValidationManager.CustomValidations.FirstOrDefault(c => c.Title == validationDescriptor.Title);

            if (customValidation == null)
            {
                return;
            }

            if (AppHost.MessageBox(string.Format("Are you sure you want to apply the fix?\n\nFix:\n{0}", customValidation.Fix), "Confirmation", MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK)
            {
                return;
            }

            ExecuteCompleted completed = delegate(string response, ExecuteResult result) { DataService.HandleExecute(response, result, true); };

            validationDescriptor.ItemUri.DatabaseUri.Site.DataService.ExecuteAsync("QueryAnalyzer.Run", completed, validationDescriptor.ItemUri.DatabaseUri.DatabaseName.ToString(), validationDescriptor.ItemUri.ItemId.ToString(), customValidation.Fix, "0");
        }
        public void Hide(ValidationDescriptor item)
        {
            Assert.ArgumentNotNull(item, nameof(item));

            ValidationViewer.Hide(item);

            var control = entries.FirstOrDefault(e => e.Item == item);

            if (control == null)
            {
                return;
            }

            entries.Remove(control);

            var header = control.GetAncestor <CategoryHeader>();

            Assert.IsNotNull(header, "header");

            header.List.Children.Remove(control);

            if (header.List.Children.Count == 0)
            {
                header.Visibility = Visibility.Collapsed;
            }
            else
            {
                var text = header.HeaderField.Text;

                var n = text.LastIndexOf(" (", StringComparison.Ordinal);
                if (n >= 0)
                {
                    text = text.Left(n);
                }

                text += " (" + header.List.Children.Count + ")";

                header.HeaderField.Text = text;
            }
        }
Exemple #18
0
        private bool IsItemVisible([NotNull] ValidationDescriptor item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            if (HiddenItems.Contains(item.GetKey()))
            {
                return(false);
            }

            if (!string.IsNullOrEmpty(FilterText))
            {
                var filtered = item.Title.IsFilterMatch(FilterText);
                filtered |= item.Problem.IsFilterMatch(FilterText);
                filtered |= item.Solution.IsFilterMatch(FilterText);

                if (!filtered)
                {
                    return(false);
                }
            }

            return(true);
        }
Exemple #19
0
        /// <summary>Fixes the specified validation.</summary>
        /// <param name="validationDescriptor">The validation.</param>
        public void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, "validationDescriptor");

            var fileName = this.ParseFileName(validationDescriptor);
            var itemName = this.ParseItemName(validationDescriptor);

            fileName = Path.Combine(validationDescriptor.ItemUri.Site.WebRootPath, fileName);

            const string Text = @"@using Sitecore.Mvc.Presentation
@using Sitecore.Mvc
@using Sitecore.Web.UI.Controls.Common
@model RenderingModel

<h3>Apperance</h3>
<p>
  {0} is a good control, does what it is supposed to do and clean up after itself.
</p>
<p>
  @Html.Sitecore().Controls().{0}(""{0}1"", new {{ Text = ""Hello"" }})
</p>

<pre>
&#64;Html.Sitecore().Controls().{0}(""{0}1"", new {{ Text = ""Hello"" }})
</pre>
";

            var contents = string.Format(Text, itemName);

            var folder = Path.GetDirectoryName(fileName);

            Directory.CreateDirectory(folder);

            File.WriteAllText(fileName, contents);

            AppHost.Files.OpenFile(fileName);
        }
        /// <summary>Fixes the specified validation.</summary>
        /// <param name="validationDescriptor">The validation.</param>
        public void Fix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, "validationDescriptor");

            var fileName = this.ParseFileName(validationDescriptor);
            var itemName = this.ParseItemName(validationDescriptor);

            fileName = Path.Combine(validationDescriptor.ItemUri.Site.WebRootPath, fileName);

            const string Text = @"(function ()
{{
  ""use strict"";
  
  describe(""Given a {0} model"", function ()
  {{
    var model = new Sitecore.Definitions.Models.{0}();

    describe(""when I create a {0} model"", function() {{
      it(""it should have a 'text' property"", function ()
      {{
        expect(model.get(""text"")).toBeDefined();
      }});
    }});
  }});
}}());
";

            var contents = string.Format(Text, itemName);

            var folder = Path.GetDirectoryName(fileName);

            Directory.CreateDirectory(folder);

            File.WriteAllText(fileName, contents);

            AppHost.Files.OpenFile(fileName);
        }
        public override bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            return(validationDescriptor.Name == "Parameter must have help text");
        }
Exemple #22
0
        public bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            return(validationDescriptor.Name == "Unused templates");
        }
Exemple #23
0
        public bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            return(validationDescriptor.Name == "Page is missing 'PageCode' rendering");
        }
Exemple #24
0
 public abstract bool CanFix(ValidationDescriptor validationDescriptor);
        public override bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            return(validationDescriptor.Name == "Control help text must end with a dot");
        }
Exemple #26
0
        public bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            return(validationDescriptor.Name == "Deprecated template field type");
        }
Exemple #27
0
 public abstract void Fix(ValidationDescriptor validationDescriptor);
Exemple #28
0
        public static IFix GetFix([NotNull] ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            return(Fixes.FirstOrDefault(f => f.CanFix(validationDescriptor)));
        }
        public bool CanFix(ValidationDescriptor validationDescriptor)
        {
            Assert.ArgumentNotNull(validationDescriptor, nameof(validationDescriptor));

            return(validationDescriptor.Name == "Empty PageSettings items can safely be deleted");
        }