Exemple #1
0
        public static SiteInfo GetSiteInfo(string itemPath)
        {
            // init itemPath
            if (string.IsNullOrEmpty(itemPath))
            {
                return(null);
            }

            itemPath = NormalizePath(itemPath);

            foreach (var site in SiteContextFactory.Sites)
            {
                // skip system sites
                if (SystemSites.Contains(site.Name))
                {
                    continue;
                }

                if (site.RootPath.Length <= 1) // skip trivial checks
                {
                    continue;
                }

                var startpath = NormalizePath(site.RootPath);
                if (itemPath.StartsWith(startpath))
                {
                    return(site);
                }
            }
            return(null);
        }
Exemple #2
0
        public static string GetSiteNameByItemPath(string itemPath)
        {
            if (string.IsNullOrWhiteSpace(itemPath))
            {
                return(null);
            }

            itemPath = StringUtil.EnsurePrefix('/', itemPath);
            itemPath = StringUtil.EnsurePostfix('/', itemPath);
            itemPath = itemPath.ToUpperInvariant();

            var siteFactory = Sitecore.DependencyInjection.ServiceLocator.ServiceProvider.GetService <Sitecore.Abstractions.BaseSiteContextFactory>();
            var sites       = siteFactory.GetSites();

            foreach (var site in sites)
            {
                // skip system sites
                if (SystemSites.IndexOf(site.Name.ToLowerInvariant()) >= 0)
                {
                    continue;
                }

                // match site
                var sitePath = site.RootPath.ToUpperInvariant();
                sitePath = StringUtil.EnsurePrefix('/', sitePath);
                sitePath = StringUtil.EnsurePostfix('/', sitePath);

                if (itemPath.StartsWith(sitePath))
                {
                    return(site.Name);
                }
            }

            return(null);
        }
Exemple #3
0
        public override void Process(IInstanceResourceContext data, ITestOutputContext output)
        {
            Assert.ArgumentNotNull(data, nameof(data));

            var configuration = data.SitecoreInfo.Configuration;
            var handler       = configuration.SelectElements(XPath).FirstOrDefault();

            if (handler == null)
            {
                output.Warning(MessageNoHandlerElement);
                return;
            }

            if (handler.ChildNodes.Count == 0)
            {
                output.Warning(MessageNoSitesElement);
                return;
            }

            var sitesElement = handler.ChildNodes[0];

            if (sitesElement == null)
            {
                output.Warning(MessageNoSitesElement);
                return;
            }

            // siteNamesInHandler = ["website"] in default Sitecore configuration
            var siteNamesInHandler = sitesElement.ChildNodes.OfType <XmlNode>().Where(x => x != null).Select(x => x.InnerText).ToArray();

            var actualSiteElements = configuration.SelectElements("/configuration/sitecore/sites/site");
            var actualSiteNames    = actualSiteElements.Select(x => x.GetAttribute("name"));

            // frontendSiteNames = ["website"] in default Sitecore configuration
            var frontendSiteNames = actualSiteNames.Where(x => !SystemSites.Contains(x));

            foreach (var frontendSiteName in frontendSiteNames)
            {
                if (frontendSiteName != null && !siteNamesInHandler.Contains(frontendSiteName))
                {
                    output.Warning(GetErrorMessage(frontendSiteName));
                }
            }
        }