diff --git a/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs b/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs index cb72a284c..d3b6b8b8c 100644 --- a/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs +++ b/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs @@ -9,7 +9,6 @@ using Orchard.Core.Routable.Services; using Orchard.Core.Routable.ViewModels; using Orchard.Localization; using Orchard.Services; -using Orchard.UI.Notify; namespace Orchard.Core.Routable.Drivers { public class RoutePartDriver : ContentPartDriver { @@ -82,7 +81,7 @@ namespace Orchard.Core.Routable.Drivers { if ( slug.StartsWith(".") || slug.EndsWith(".") ) updater.AddModelError("Routable.Slug", T("The \".\" can't be used around routes.")); else - updater.AddModelError("Routable.Slug", T("Please do not use any of the following characters in your slugs: \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\". No spaces are allowed (please use dashes or underscores instead).")); + updater.AddModelError("Routable.Slug", T("Please do not use any of the following characters in your slugs: \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\", \", \"<\", \">\". No spaces are allowed (please use dashes or underscores instead).")); } if (part.ContentItem.Id != 0 && model.PromoteToHomePage && _routableHomePageProvider != null) diff --git a/src/Orchard.Web/Core/Routable/Migrations.cs b/src/Orchard.Web/Core/Routable/Migrations.cs index 4105ca610..22e6f5c2d 100644 --- a/src/Orchard.Web/Core/Routable/Migrations.cs +++ b/src/Orchard.Web/Core/Routable/Migrations.cs @@ -10,7 +10,7 @@ namespace Orchard.Core.Routable { table => table .ContentPartVersionRecord() .Column("Title", column => column.WithLength(1024)) - .Column("Slug") + .Column("Slug", column => column.WithLength(1024)) .Column("Path", column => column.WithLength(2048)) ); diff --git a/src/Orchard.Web/Core/Routable/Models/RoutePart.cs b/src/Orchard.Web/Core/Routable/Models/RoutePart.cs index 8896ff02b..284b0ed97 100644 --- a/src/Orchard.Web/Core/Routable/Models/RoutePart.cs +++ b/src/Orchard.Web/Core/Routable/Models/RoutePart.cs @@ -3,6 +3,7 @@ using Orchard.ContentManagement.Aspects; namespace Orchard.Core.Routable.Models { public class RoutePart : ContentPart, IRoutableAspect { + public string Title { get { return Record.Title; } set { Record.Title = value; } diff --git a/src/Orchard.Web/Core/Routable/Models/RoutePartRecord.cs b/src/Orchard.Web/Core/Routable/Models/RoutePartRecord.cs index b4680d63a..1097d8885 100644 --- a/src/Orchard.Web/Core/Routable/Models/RoutePartRecord.cs +++ b/src/Orchard.Web/Core/Routable/Models/RoutePartRecord.cs @@ -6,6 +6,7 @@ namespace Orchard.Core.Routable.Models { [StringLength(1024)] public virtual string Title { get; set; } + [StringLength(1024)] public virtual string Slug { get; set; } [StringLength(2048)] diff --git a/src/Orchard.Web/Core/Routable/Services/RoutableService.cs b/src/Orchard.Web/Core/Routable/Services/RoutableService.cs index aa6f776d9..2ddea2f21 100644 --- a/src/Orchard.Web/Core/Routable/Services/RoutableService.cs +++ b/src/Orchard.Web/Core/Routable/Services/RoutableService.cs @@ -32,7 +32,7 @@ namespace Orchard.Core.Routable.Services { return; var slug = model.Title; - var dissallowed = new Regex(@"[/:?#\[\]@!$&'()*+,;=\s]+"); + var dissallowed = new Regex(@"[/:?#\[\]@!$&'()*+,;=\s\""\<\>]+"); slug = dissallowed.Replace(slug, "-"); slug = slug.Trim('-'); @@ -79,7 +79,7 @@ namespace Orchard.Core.Routable.Services { } public bool IsSlugValid(string slug) { - return String.IsNullOrWhiteSpace(slug) || Regex.IsMatch(slug, @"^[^:?#\[\]@!$&'()*+,;=\s]+$") && !(slug.StartsWith(".") || slug.EndsWith(".")); + return String.IsNullOrWhiteSpace(slug) || Regex.IsMatch(slug, @"^[^:?#\[\]@!$&'()*+,;=\s\""\<\>]+$") && !(slug.StartsWith(".") || slug.EndsWith(".")); } public bool ProcessSlug(IRoutableAspect part) { diff --git a/src/Orchard.Web/Core/Routable/ViewModels/RoutableEditorViewModel.cs b/src/Orchard.Web/Core/Routable/ViewModels/RoutableEditorViewModel.cs index ec251e4ce..4bdefc198 100644 --- a/src/Orchard.Web/Core/Routable/ViewModels/RoutableEditorViewModel.cs +++ b/src/Orchard.Web/Core/Routable/ViewModels/RoutableEditorViewModel.cs @@ -8,7 +8,9 @@ namespace Orchard.Core.Routable.ViewModels { public string ContentType { get; set; } [Required] + [StringLength(1024)] public string Title { get; set; } + [StringLength(1024)] public string Slug { get; set; } public int? ContainerId { get; set; } public bool PromoteToHomePage { get; set; }