示例#1
0
        IEnumerable <TemplateRef> GetTemplateRefs(IEnumerable <string> input)
        {
            List <TemplateRef> items = new List <TemplateRef>();

            foreach (var templateidStr in SitemapUtils.FilterComments(input))
            {
                try
                {
                    int templateId;
                    if (int.TryParse(templateidStr, out templateId))
                    {
                        var templateFolder = Asset.Load(templateId);
                        if (templateFolder.IsLoaded)
                        {
                            items.Add(new TemplateRef(templateFolder.AssetPath.ToString(), templateFolder.Id));
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new ApplicationException(string.Format("Failed while processing '{0}': {1}", templateidStr, ex.Message), ex);
                }
            }

            return(items);
        }
示例#2
0
        IEnumerable <TemplateRef> GetTemplateRefs(PanelEntry panel)
        {
            var input        = SitemapUtils.SplitMultilineInput(panel.Raw["exclude_templates"]);
            var templateRefs = GetTemplateRefs(input);

            return(templateRefs);
        }
示例#3
0
        IEnumerable <TemplateRef> GetTemplateRefs(Asset asset)
        {
            var input        = SitemapUtils.SplitMultilineInput(asset.Raw["exclude_templates"]);
            var templateRefs = GetTemplateRefs(input);

            return(templateRefs);
        }
示例#4
0
        /// <summary>
        /// Retrieves ignored paths from 'ignored_paths' field
        /// </summary>
        /// <param name="siteroot_asset"></param>
        /// <returns></returns>
        public IEnumerable <Regex> GetIgnoredPaths(Asset siteroot_asset)
        {
            var regex_list =
                SitemapUtils.SplitMultilineInput(siteroot_asset.Raw["ignored_paths"])
                .Select(_ => CPContrib.SiteMap.SitemapUtils.PathspecToRegex(_)).ToArray();

            return(regex_list);
        }
        public void SplitMultilineInput()
        {
            //simulates a multiline textbox in crownpeak Input.ShowTextBox(multiline:true)
            var rawinput = "Line 1\r\nLine 2\r\nLine 3";
            var expected = new string[] { "Line 1", "Line 2", "Line 3" };

            var split = SitemapUtils.SplitMultilineInput(rawinput);

            split.Should().ContainInOrder(expected);
        }
        public void ParseOverrides2()
        {
            var pathspec = "/Arbor Memorial/(en|fr)/What We Do/*";
            var input    = pathspec + @" => {""priority"":0.8}";

            var expected = new Override()
            {
                PathSpec           = pathspec,
                PathSpecRegex      = SitemapUtils.PathspecToRegex(pathspec),
                OverrideProperties = new Serialization.@override()
                {
                    changefreq = null, priority = 0.8f
                }
            };

            var sitemapinput = CreateSitemapInput();
            var overrides    = sitemapinput._ParseOverrides(new string[] { input });

            overrides.Should().BeEquivalentTo(expected);
        }
        public void ParseOverrides(string input, string pathspec_value)
        {
            var expected =
                new Override()
            {
                PathSpec           = pathspec_value,
                PathSpecRegex      = SitemapUtils.PathspecToRegex(pathspec_value),
                OverrideProperties = new Serialization.@override()
                {
                    changefreq = "daily", priority = 0.5f
                }
            };
            var lines = new string[] { input };

            var sitemapinput = CreateSitemapInput();
            var overrides    = sitemapinput._ParseOverrides(lines);

            overrides.Should().HaveCount(1);
            overrides.Should().Equal(expected);
        }
示例#8
0
        internal IEnumerable <UrlMetaEntry> _ParseOverrides(IEnumerable <string> input)
        {
            var parsedOverrides = new List <UrlMetaEntry>();

            Regex r = new Regex(@"(.*)\s=>\s(.*)");

            foreach (var line in input)
            {
                var m = r.Match(line);
                if (m.Success)
                {
                    var overrideEntry = new UrlMetaEntry()
                    {
                        PathSpec      = m.Groups[1].Value,
                        PathSpecRegex = SitemapUtils.PathspecToRegex(m.Groups[1].Value),
                        Meta          = (CPContrib.SiteMap.Serialization.UrlMeta)Util.DeserializeDataContractJson(m.Groups[2].Value, typeof(CPContrib.SiteMap.Serialization.UrlMeta))
                    };
                    parsedOverrides.Add(overrideEntry);
                }
            }

            return(parsedOverrides);
        }
        public override void Execute(CommandContext context)
        {
            var siteName      = context.Parameters["siteName"];
            var siteGroupName = context.Parameters["siteGroupName"];

            if (string.IsNullOrWhiteSpace(siteName) && string.IsNullOrWhiteSpace(siteGroupName))
            {
                return;
            }

            var generationIndex = $"sitemap-{(string.IsNullOrWhiteSpace(siteName) ? siteGroupName : siteName)}";

            var coreDb = Factory.GetDatabase("core");

            var previousGeneration = coreDb.Properties[generationIndex];

            if (string.IsNullOrWhiteSpace(previousGeneration))
            {
                SitemapUtils.Generate(siteName, siteGroupName);
                coreDb.Properties[generationIndex] = DateUtil.IsoNow;
                return;
            }

            var previousGenerationDateTime = DateUtil.IsoDateToDateTime(previousGeneration);
            var currentDateTime            = DateUtil.IsoDateToDateTime(DateUtil.IsoNow);
            var possibleRunDateTime        = previousGenerationDateTime.AddSeconds(_localDelay);

            if (possibleRunDateTime > currentDateTime)
            {
                var remainingTime = possibleRunDateTime - currentDateTime;
                SheerResponse.Alert($"Unable to generate sitemap. Must wait {remainingTime.Minutes} minute{(remainingTime.Minutes == 1 ? "" : "s")} {remainingTime.Seconds} second{(remainingTime.Seconds == 1 ? "" : "s")} before attempting to manually regenerate sitemap");
                return;
            }

            SitemapUtils.Generate(siteName, siteGroupName);
            coreDb.Properties[generationIndex] = DateUtil.IsoNow;
        }
示例#10
0
        public IEnumerable <UrlMetaEntry> GetDefaults(Asset asset)
        {
            var input = SitemapUtils.SplitMultilineInput(asset.Raw["sm_defaults"]);

            return(_ParseOverrides(input));
        }
示例#11
0
        public IEnumerable <UrlMetaEntry> GetOverrides(PanelEntry panel)
        {
            var input = SitemapUtils.SplitMultilineInput(panel.Raw["sm_overrides"]);

            return(_ParseOverrides(input));
        }