--HG--
branch : 1.x
This commit is contained in:
Dave Reed
2011-04-05 15:02:31 -07:00
4 changed files with 7 additions and 6 deletions

View File

@@ -72,7 +72,7 @@ namespace Orchard.Core.Tests.Routable.Services {
var thing = contentManager.Create<Thing>("thing", t => { var thing = contentManager.Create<Thing>("thing", t => {
t.As<RoutePart>().Record = new RoutePartRecord(); t.As<RoutePart>().Record = new RoutePartRecord();
t.Title = "Please do not use any of the following characters in your permalink: \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\", \"\"\", \"<\", \">\""; t.Title = "Please do not use any of the following characters in your permalink: \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\", \"\"\", \"<\", \">\", \"\\\"";
}); });
_routableService.FillSlugFromTitle(thing.As<RoutePart>()); _routableService.FillSlugFromTitle(thing.As<RoutePart>());
@@ -120,7 +120,7 @@ namespace Orchard.Core.Tests.Routable.Services {
public void InvalidCharacterShouldBeRefusedInSlugs() { public void InvalidCharacterShouldBeRefusedInSlugs() {
Assert.That(_routableService.IsSlugValid("aaaa-_aaaa"), Is.True); Assert.That(_routableService.IsSlugValid("aaaa-_aaaa"), Is.True);
foreach (var c in @":?#[]@!$&'()*+,;= ") { foreach (var c in @":?#[]@!$&'()*+,;= \") {
Assert.That(_routableService.IsSlugValid("a" + c + "b"), Is.False); Assert.That(_routableService.IsSlugValid("a" + c + "b"), Is.False);
} }
} }

View File

@@ -89,7 +89,7 @@ namespace Orchard.Core.Routable.Drivers {
if ( slug.StartsWith(".") || slug.EndsWith(".") ) if ( slug.StartsWith(".") || slug.EndsWith(".") )
updater.AddModelError("Routable.Slug", T("The \".\" can't be used at either end of the permalink.")); updater.AddModelError("Routable.Slug", T("The \".\" can't be used at either end of the permalink."));
else else
updater.AddModelError("Routable.Slug", T("Please do not use any of the following characters in your permalink: \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\", \", \"<\", \">\". 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 permalink: \":\", \"?\", \"#\", \"[\", \"]\", \"@\", \"!\", \"$\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \";\", \"=\", \", \"<\", \">\", \"\\\". No spaces are allowed (please use dashes or underscores instead)."));
} }
return Editor(part, shapeHelper); return Editor(part, shapeHelper);

View File

@@ -57,7 +57,7 @@ namespace Orchard.Core.Routable.Services {
} }
if (!slugContext.Adjusted) { if (!slugContext.Adjusted) {
var disallowed = new Regex(@"[/:?#\[\]@!$&'()*+,;=\s\""\<\>]+"); var disallowed = new Regex(@"[/:?#\[\]@!$&'()*+,;=\s\""\<\>\\]+");
slugContext.Slug = disallowed.Replace(slugContext.Slug, "-").Trim('-'); slugContext.Slug = disallowed.Replace(slugContext.Slug, "-").Trim('-');
@@ -108,7 +108,7 @@ namespace Orchard.Core.Routable.Services {
} }
public bool IsSlugValid(string slug) { 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) { public bool ProcessSlug(IRoutableAspect part) {

View File

@@ -344,8 +344,9 @@ namespace Orchard.Widgets.Controllers {
if (widgetPart == null) if (widgetPart == null)
return HttpNotFound(); return HttpNotFound();
widgetPart.LayerPart = _widgetsService.GetLayer(layerId);
var model = Services.ContentManager.UpdateEditor(widgetPart, this); var model = Services.ContentManager.UpdateEditor(widgetPart, this);
// override the CommonPart's persisting of the current container
widgetPart.LayerPart = _widgetsService.GetLayer(layerId);
if (!ModelState.IsValid) { if (!ModelState.IsValid) {
Services.TransactionManager.Cancel(); Services.TransactionManager.Cancel();
// Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation. // Casting to avoid invalid (under medium trust) reflection over the protected View method and force a static invocation.