public override IEnumerable <TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel)
        {
            if (builder.Name != "AutoroutePart")
            {
                yield break;
            }

            var settings = new AutorouteSettings {
                Patterns = new List <RoutePattern>()
            };

            //get cultures
            settings.SiteCultures = _cultureManager.ListCultures().ToList();

            if (updateModel.TryUpdateModel(settings, "AutorouteSettings", null, null))
            {
                //TODO need to add validations client and/or server side here
                // remove empty patterns
                var patterns = settings.Patterns;
                patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description));

                //If there is no default pattern for each culture we set default ones
                List <RoutePattern> newPatterns = new List <RoutePattern>();
                int current = 0;
                foreach (string culture in settings.SiteCultures)
                {
                    if (settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)))
                    {
                        foreach (RoutePattern routePattern in settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)))
                        {
                            newPatterns.Add(settings.Patterns[current]);
                            current++;
                        }
                    }
                    else
                    {
                        newPatterns.Add(new RoutePattern {
                            Name        = "Title",
                            Description = "my-title",
                            Pattern     = "{Content.Slug}",
                            Culture     = culture
                        });

                        _notifier.Warning(T("A default pattern has been added to AutoroutePart"));
                    }
                }

                settings.Patterns = newPatterns;

                // update the settings builder
                settings.Build(builder);
            }

            yield return(DefinitionTemplate(settings));
        }
        public override IEnumerable <TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel)
        {
            if (builder.Name != "AutoroutePart")
            {
                yield break;
            }

            var settings = new AutorouteSettings {
                Patterns = new List <RoutePattern>()
            };

            if (updateModel.TryUpdateModel(settings, "AutorouteSettings", null, null))
            {
                var defaultPattern = settings.Patterns[settings.DefaultPatternIndex];
                // remove empty patterns
                var patterns = settings.Patterns;
                patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description));

                if (patterns.Count == 0)
                {
                    patterns.Add(new RoutePattern {
                        Name        = "Title",
                        Description = "my-title",
                        Pattern     = "{Content.Slug}"
                    });

                    _notifier.Warning(T("A default pattern has been added to AutoroutePart"));
                }

                settings.Patterns = patterns;
                // search for the pattern which was marked as default, and update its index
                settings.DefaultPatternIndex = patterns.IndexOf(defaultPattern);

                // if a wrong pattern was selected and there is at least one pattern, default to first
                if (settings.DefaultPatternIndex == -1 && settings.Patterns.Any())
                {
                    settings.DefaultPatternIndex = 0;
                }

                // update the settings builder
                settings.Build(builder);
            }

            yield return(DefinitionTemplate(settings));
        }
        public override IEnumerable<TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel) {
            if (builder.Name != "AutoroutePart")
                yield break;

            var settings = new AutorouteSettings {
                Patterns = new List<RoutePattern>()
            };

            if (updateModel.TryUpdateModel(settings, "AutorouteSettings", null, null)) {

                var defaultPattern = settings.Patterns[settings.DefaultPatternIndex];
                // remove empty patterns
                var patterns = settings.Patterns;
                patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description));

                if (patterns.Count == 0) {
                    patterns.Add(new RoutePattern {
                        Name = "Title",
                        Description = "my-title",
                        Pattern = "{Content.Slug}"
                    });

                    _notifier.Warning(T("A default pattern has been added to AutoroutePart"));
                }

                settings.Patterns = patterns;
                // search for the pattern which was marked as default, and update its index
                settings.DefaultPatternIndex = patterns.IndexOf(defaultPattern);

                // if a wrong pattern was selected and there is at least one pattern, default to first
                if (settings.DefaultPatternIndex == -1 && settings.Patterns.Any()) {
                    settings.DefaultPatternIndex = 0;
                }

                // update the settings builder
                settings.Build(builder);
            }

            yield return DefinitionTemplate(settings);
        }
        public override IEnumerable <TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel)
        {
            if (builder.Name != "AutoroutePart")
            {
                yield break;
            }

            var settings = new AutorouteSettings {
                Patterns = new List <RoutePattern>()
            };

            // Get cultures
            settings.SiteCultures = _cultureManager.ListCultures().ToList();

            if (updateModel.TryUpdateModel(settings, "AutorouteSettings", null, null))
            {
                //TODO need to add validations client and/or server side here

                // If some default pattern is an empty pattern set it to the first pattern for the language
                var newDefaultPatterns = new List <DefaultPattern>();

                foreach (var defaultPattern in settings.DefaultPatterns)
                {
                    RoutePattern correspondingPattern = null;

                    if (string.IsNullOrEmpty(defaultPattern.Culture))
                    {
                        correspondingPattern = settings.Patterns.Where(x => String.IsNullOrEmpty(x.Culture)).ElementAt(Convert.ToInt32(defaultPattern.PatternIndex));
                    }
                    else
                    {
                        correspondingPattern = settings.Patterns.Where(x => String.Equals(x.Culture, defaultPattern.Culture, StringComparison.OrdinalIgnoreCase)).ElementAt(Convert.ToInt32(defaultPattern.PatternIndex));
                    }

                    if (String.IsNullOrWhiteSpace(correspondingPattern.Name) && String.IsNullOrWhiteSpace(correspondingPattern.Pattern) && String.IsNullOrWhiteSpace(correspondingPattern.Description))
                    {
                        newDefaultPatterns.Add(new DefaultPattern {
                            Culture = defaultPattern.Culture, PatternIndex = "0"
                        });
                    }
                    else
                    {
                        newDefaultPatterns.Add(defaultPattern);
                    }
                }

                settings.DefaultPatterns = newDefaultPatterns;

                // Remove empty patterns
                var patterns = settings.Patterns;
                patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description));

                // Adding a null culture for the culture neutral pattern
                var cultures = new List <string>();
                cultures.Add(null);
                cultures.AddRange(settings.SiteCultures);

                //If there is no pattern for some culture create a default one
                List <RoutePattern> newPatterns = new List <RoutePattern>();
                int current = 0;
                foreach (string culture in cultures)
                {
                    if (settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)))
                    {
                        foreach (RoutePattern routePattern in settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase)))
                        {
                            newPatterns.Add(settings.Patterns[current]);
                            current++;
                        }
                    }
                    else
                    {
                        newPatterns.Add(new RoutePattern {
                            Name        = "Title",
                            Description = "my-title",
                            Pattern     = "{Content.Slug}",
                            Culture     = culture
                        });

                        _notifier.Warning(T("A default pattern has been added to AutoroutePart"));
                    }
                }

                settings.Patterns = newPatterns;

                // Update the settings builder
                settings.Build(builder);
            }

            yield return(DefinitionTemplate(settings));
        }
Пример #5
0
        public override IEnumerable<TemplateViewModel> TypePartEditorUpdate(ContentTypePartDefinitionBuilder builder, IUpdateModel updateModel) {
            if (builder.Name != "AutoroutePart")
                yield break;

            var settings = new AutorouteSettings {
                Patterns = new List<RoutePattern>()
            };

            //get cultures
            settings.SiteCultures = _cultureManager.ListCultures().ToList();

            if (updateModel.TryUpdateModel(settings, "AutorouteSettings", null, null)) {
                //TODO need to add validations client and/or server side here
                // remove empty patterns
                var patterns = settings.Patterns;
                patterns.RemoveAll(p => String.IsNullOrWhiteSpace(p.Name) && String.IsNullOrWhiteSpace(p.Pattern) && String.IsNullOrWhiteSpace(p.Description));

                //If there is no default pattern for each culture we set default ones
                List<RoutePattern> newPatterns = new List<RoutePattern>();
                int current = 0;
                foreach (string culture in settings.SiteCultures) {
                    if (settings.Patterns.Any(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
                        foreach (RoutePattern routePattern in settings.Patterns.Where(x => String.Equals(x.Culture, culture, StringComparison.OrdinalIgnoreCase))) {
                            newPatterns.Add(settings.Patterns[current]);
                            current++;
                        }
                    } else {
                        newPatterns.Add(new RoutePattern {
                            Name = "Title",
                            Description = "my-title",
                            Pattern = "{Content.Slug}",
                            Culture = culture
                        });

                        _notifier.Warning(T("A default pattern has been added to AutoroutePart"));
                    }
                }

                settings.Patterns = newPatterns;

                // update the settings builder
                settings.Build(builder);
            }

            yield return DefinitionTemplate(settings);
        }