public void SetIndexSettings(IEnumerable <IndexSettingsModel> settings)
 {
     foreach (var item in settings)
     {
         var item1  = item;
         var record = _settingsRepository.Fetch(q => q.ContentType == item1.Name).FirstOrDefault();
         if (record == null)
         {
             record                 = new SitemapSettingsRecord();
             record.ContentType     = item.Name;
             record.IndexForDisplay = item.IndexForDisplay;
             record.IndexForXml     = item.IndexForXml;
             record.Priority        = item.Priority;
             record.UpdateFrequency = item.UpdateFrequency;
             _settingsRepository.Create(record);
         }
         else
         {
             record.IndexForDisplay = item.IndexForDisplay;
             record.IndexForXml     = item.IndexForXml;
             record.Priority        = item.Priority;
             record.UpdateFrequency = item.UpdateFrequency;
             _settingsRepository.Update(record);
         }
     }
     _signals.Trigger("WebAdvanced.Sitemap.IndexSettings");
 }
Example #2
0
        public IEnumerable <IndexSettingsModel> GetIndexSettings()
        {
            var settings = _cacheManager.Get <string, IEnumerable <IndexSettingsModel> >("Digic.Sitemap.IndexSettings",
                                                                                         ctx =>
            {
                var contentTypes = _contentManager.GetContentTypeDefinitions()
                                   .Where(ctd => ctd.Parts.FirstOrDefault(p => p.PartDefinition.Name == "AutoroutePart") != null)
                                   .ToList();

                var typeNames = contentTypes.Select(t => t.Name).ToArray();

                // Delete everything that no longer corresponds to these allowed content types
                var toDelete = _settingsRepository.Fetch(q => !typeNames.Contains(q.ContentType)).ToList();
                foreach (var record in toDelete)
                {
                    _settingsRepository.Delete(record);
                }
                _settingsRepository.Flush();



                var contentSettings = new List <IndexSettingsModel>();
                foreach (var type in contentTypes)
                {
                    var _type = type;
                    // Get the record, generate a new one if it doesn't exist.
                    SitemapSettingsRecord record = _settingsRepository.Fetch(q => q.ContentType == _type.Name).FirstOrDefault();
                    if (record == null)
                    {
                        record                 = new SitemapSettingsRecord();
                        record.ContentType     = type.Name;
                        record.IndexForDisplay = false;
                        record.IndexForXml     = false;
                        record.Priority        = 3;
                        record.UpdateFrequency = "weekly";
                        _settingsRepository.Create(record);
                    }

                    var model = new IndexSettingsModel()
                    {
                        DisplayName     = type.DisplayName,
                        Name            = type.Name,
                        IndexForDisplay = record.IndexForDisplay,
                        IndexForXml     = record.IndexForXml,
                        Priority        = record.Priority,
                        UpdateFrequency = record.UpdateFrequency
                    };
                    contentSettings.Add(model);
                }


                ctx.Monitor(_signals.When("ContentDefinitionManager"));
                ctx.Monitor(_signals.When("Digic.Sitemap.IndexSettings"));

                return(contentSettings);
            });

            return(settings);
        }
 public void SetIndexSettings(IEnumerable<IndexSettingsModel> settings)
 {
     foreach (var item in settings) {
         var item1 = item;
         var record = _settingsRepository.Fetch(q => q.ContentType == item1.Name).FirstOrDefault();
         if (record == null) {
             record = new SitemapSettingsRecord();
             record.ContentType = item.Name;
             record.IndexForDisplay = item.IndexForDisplay;
             record.IndexForXml = item.IndexForXml;
             record.Priority = item.Priority;
             record.UpdateFrequency = item.UpdateFrequency;
             _settingsRepository.Create(record);
         } else {
             record.IndexForDisplay = item.IndexForDisplay;
             record.IndexForXml = item.IndexForXml;
             record.Priority = item.Priority;
             record.UpdateFrequency = item.UpdateFrequency;
             _settingsRepository.Update(record);
         }
     }
     _signals.Trigger("WebAdvanced.Sitemap.IndexSettings");
 }
        public IEnumerable<IndexSettingsModel> GetIndexSettings()
        {
            var settings = _cacheManager.Get("WebAdvanced.Sitemap.IndexSettings",
                ctx => {
                    ctx.Monitor(_signals.When("ContentDefinitionManager"));
                    ctx.Monitor(_signals.When("WebAdvanced.Sitemap.IndexSettings"));

                    var contentTypes = _contentDefinitionManager.ListTypeDefinitions()
                        .Where(ctd => ctd.Parts.FirstOrDefault(p => p.PartDefinition.Name == "AutoroutePart") != null)
                        .ToList();

                    var typeNames = contentTypes.Select(t => t.Name).ToArray();

                    // Delete everything that no longer corresponds to these allowed content types
                    var toDelete = _settingsRepository.Fetch(q => !typeNames.Contains(q.ContentType)).ToList();
                    foreach (var record in toDelete) {
                        _settingsRepository.Delete(record);
                    }
                    _settingsRepository.Flush();

                    var contentSettings = new List<IndexSettingsModel>();
                    foreach (var type in contentTypes) {
                        var _type = type;
                        // Get the record, generate a new one if it doesn't exist.
                        SitemapSettingsRecord record = _settingsRepository.Fetch(q => q.ContentType == _type.Name).FirstOrDefault();
                        if (record == null) {
                            record = new SitemapSettingsRecord();
                            record.ContentType = type.Name;
                            record.IndexForDisplay = false;
                            record.IndexForXml = false;
                            record.Priority = 3;
                            record.UpdateFrequency = "weekly";
                            _settingsRepository.Create(record);
                        }

                        var model = new IndexSettingsModel() {
                            DisplayName = type.DisplayName,
                            Name = type.Name,
                            IndexForDisplay = record.IndexForDisplay,
                            IndexForXml = record.IndexForXml,
                            Priority = record.Priority,
                            UpdateFrequency = record.UpdateFrequency
                        };
                        contentSettings.Add(model);
                    }

                    return contentSettings;
                });

            return settings;
        }