diff --git a/src/Orchard.Web/Core/Common/Views/EditorTemplates/Parts/Common.Owner.cshtml b/src/Orchard.Web/Core/Common/Views/EditorTemplates/Parts/Common.Owner.cshtml
index 87035578a..fb6dc30b1 100644
--- a/src/Orchard.Web/Core/Common/Views/EditorTemplates/Parts/Common.Owner.cshtml
+++ b/src/Orchard.Web/Core/Common/Views/EditorTemplates/Parts/Common.Owner.cshtml
@@ -1,7 +1,7 @@
@model OwnerEditorViewModel
@using Orchard.Core.Common.ViewModels;
- @Html.LabelFor(m=>m.Owner)
+ @Html.LabelFor(m => m.Owner, T("Owner"))
@Html.EditorFor(m=>m.Owner)
@Html.ValidationMessageFor(m=>m.Owner)
\ No newline at end of file
diff --git a/src/Orchard.Web/Core/Routable/Views/EditorTemplates/Parts/Routable.RoutePart.cshtml b/src/Orchard.Web/Core/Routable/Views/EditorTemplates/Parts/Routable.RoutePart.cshtml
index 0fe8b6b78..483135db2 100644
--- a/src/Orchard.Web/Core/Routable/Views/EditorTemplates/Parts/Routable.RoutePart.cshtml
+++ b/src/Orchard.Web/Core/Routable/Views/EditorTemplates/Parts/Routable.RoutePart.cshtml
@@ -3,7 +3,7 @@
@{ Script.Require("Slugify"); }
- @Html.LabelFor(m => m.Title)
+ @Html.LabelFor(m => m.Title, T("Title"))
@Html.TextBoxFor(m => m.Title, new { @class = "large text" })
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.Blog.Fields.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.Blog.Fields.cshtml
index 2d884de4c..a9bf742b0 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.Blog.Fields.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.Blog.Fields.cshtml
@@ -1,5 +1,5 @@
@model Orchard.Blogs.Models.BlogPart
- @Html.LabelFor(m => m.Description)
+ @Html.LabelFor(m => m.Description, T("Description"))
@Html.TextAreaFor(m => m.Description, 5, 60, null)
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.BlogArchives.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.BlogArchives.cshtml
index 1f29a1f88..baea01a1e 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.BlogArchives.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.BlogArchives.cshtml
@@ -1,7 +1,7 @@
@model Orchard.Blogs.Models.BlogArchivesPart
- @Html.LabelFor(m => m.ForBlog)
+ @Html.LabelFor(m => m.ForBlog, T("For Blog"))
@Html.TextBoxFor(m => m.ForBlog)
@T("Show the archives for which blog? Note: specify the blog's slug.")
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.RecentBlogPosts.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.RecentBlogPosts.cshtml
index e8cf87dda..f705bf2b3 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.RecentBlogPosts.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts/Blogs.RecentBlogPosts.cshtml
@@ -1,11 +1,11 @@
@model Orchard.Blogs.Models.RecentBlogPostsPart
- @Html.LabelFor(m => m.ForBlog)
+ @Html.LabelFor(m => m.ForBlog, T("For Blog"))
@Html.TextBoxFor(m => m.ForBlog)
- @Html.LabelFor(m => m.Count)
+ @Html.LabelFor(m => m.Count, T("Count"))
@Html.TextBoxFor(m => m.Count)
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Experimental/Views/Commands/Execute.cshtml b/src/Orchard.Web/Modules/Orchard.Experimental/Views/Commands/Execute.cshtml
index 622744600..388ce7a2c 100644
--- a/src/Orchard.Web/Modules/Orchard.Experimental/Views/Commands/Execute.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Experimental/Views/Commands/Execute.cshtml
@@ -12,7 +12,7 @@
}
- @Html.LabelFor(m => m.CommandLine)
+ @Html.LabelFor(m => m.CommandLine, T("Command Line"))
@Html.TextBoxFor(m => m.CommandLine, new { style = "width:100%;" })
@Html.ValidationMessageFor(m => m.CommandLine)
@Model.Results
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml
index 23e3ebc83..816701f86 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Harvest.cshtml
@@ -22,7 +22,7 @@
}
- @Html.LabelFor(m=>m.FeedUrl)
+ @Html.LabelFor(m => m.FeedUrl, T("Feed Url"))
@Html.DropDownListFor(m => m.FeedUrl, new[]{new SelectListItem{Text=T("Download").ToString(),Value="Download"}}.Concat( Model.Sources.Select(x => new SelectListItem { Text = T("Push to {0}", x.FeedUrl).ToString(), Value = x.FeedUrl })))
@Html.ValidationMessageFor(m=>m.FeedUrl)
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml
index ad1922be1..88fcda80c 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/Themes.cshtml
@@ -39,7 +39,7 @@
@T("Download")
@T("By") @author
- @T("Version: {0}", "1.0")
+ @T("Version: {0}", item.SyndicationItem.ElementExtensions.ReadElementExtensions("Version", "http://orchardproject.net").FirstOrDefault() ?? T("N/A").Text)
@(item.SyndicationItem.Summary == null ? T("(No description").Text : item.SyndicationItem.Summary.Text)
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Placement.info b/src/Orchard.Web/Modules/Orchard.Tags/Placement.info
index 8fecfe31d..8a465c8fa 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Placement.info
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Placement.info
@@ -1,4 +1,4 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Create.cshtml b/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Create.cshtml
index 055e5271f..4c02b8174 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Create.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Create.cshtml
@@ -5,7 +5,7 @@
@Html.ValidationSummary()
- @Html.LabelFor(m=>m.TagName)
+ @Html.LabelFor(m => m.TagName, T("Tag Name"))
@Html.TextBoxFor(m=>m.TagName, new { @class = "text" })
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Edit.cshtml
index 4e33a45c5..f316cb394 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Edit.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Views/Admin/Edit.cshtml
@@ -5,7 +5,7 @@
@Html.ValidationSummary()
@Html.HiddenFor(m=>m.Id)
- @Html.LabelFor(m=>m.TagName)
+ @Html.LabelFor(m => m.TagName, T("Tag Name"))
@Html.TextBoxFor(m=>m.TagName, new { @class = "text" })
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Views/EditorTemplates/Parts/Tags.cshtml b/src/Orchard.Web/Modules/Orchard.Tags/Views/EditorTemplates/Parts/Tags.cshtml
index 22e27f20e..a768df01d 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Views/EditorTemplates/Parts/Tags.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Views/EditorTemplates/Parts/Tags.cshtml
@@ -1,6 +1,6 @@
@model Orchard.Tags.ViewModels.EditTagsViewModel
- @Html.LabelFor(m => m.Tags)
+ @Html.LabelFor(m => m.Tags, T("Tags"))
@Html.TextBoxFor(m => m.Tags, new { @class = "large text" })
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Services/ThemeService.cs b/src/Orchard.Web/Modules/Orchard.Themes/Services/ThemeService.cs
index 019ae977c..c58033463 100644
--- a/src/Orchard.Web/Modules/Orchard.Themes/Services/ThemeService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Themes/Services/ThemeService.cs
@@ -154,11 +154,11 @@ namespace Orchard.Themes.Services {
foreach (var theme in requestTheme) {
var t = GetThemeByName(theme.ThemeName);
- if (t != null)
+ if (t != null && t.Enabled)
return t;
}
- return null;
+ return GetThemeByName("SafeMode");
}
public ITheme GetThemeByName(string name) {
@@ -221,7 +221,8 @@ namespace Orchard.Themes.Services {
}
private bool IsThemeEnabled(ExtensionDescriptor descriptor) {
- return _shellDescriptorManager.GetShellDescriptor().Features.Any(sf => sf.Name == descriptor.Name);
+ return (descriptor.Name == "TheAdmin" || descriptor.Name == "SafeMode") ||
+ _shellDescriptorManager.GetShellDescriptor().Features.Any(sf => sf.Name == descriptor.Name);
}
private ITheme CreateTheme(ExtensionDescriptor descriptor) {
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Create.cshtml b/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Create.cshtml
index 277ffc99a..8f4011930 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Create.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Create.cshtml
@@ -5,25 +5,25 @@
@Html.ValidationSummary()
- @Html.LabelFor(m=>m.UserName)
+ @Html.LabelFor(m => m.UserName, T("User Name"))
@Html.TextBoxFor(m=>m.UserName, new { @class = "textMedium" })
@Html.ValidationMessageFor(m=>m.UserName, "*")
- @Html.LabelFor(m=>m.Email)
+ @Html.LabelFor(m => m.Email, T("Email"))
@Html.TextBoxFor(m=>m.Email, new { @class = "textMedium" })
@Html.ValidationMessageFor(m=>m.Email, "*")
- @Html.LabelFor(m=>m.Password)
+ @Html.LabelFor(m => m.Password, T("Password"))
@Html.PasswordFor(m=>m.Password, new { @class = "textMedium" })
@Html.ValidationMessageFor(m=>m.Password, "*")
- @Html.LabelFor(m=>m.ConfirmPassword)
+ @Html.LabelFor(m => m.ConfirmPassword, T("Confirm Password"))
@Html.PasswordFor(m=>m.ConfirmPassword, new { @class = "textMedium" })
@Html.ValidationMessageFor(m=>m.ConfirmPassword, "*")
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Edit.cshtml
index b138c4af4..362228de1 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Edit.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Edit.cshtml
@@ -5,13 +5,13 @@
@Html.ValidationSummary()
@Html.EditorFor(m=>m.Id)
- @Html.LabelFor(m=>m.UserName)
+ @Html.LabelFor(m => m.UserName, T("User Name"))
@Html.TextBoxFor(m=>m.UserName, new { @class = "textMedium" })
@Html.ValidationMessageFor(m=>m.UserName, "*")
- @Html.LabelFor(m=>m.Email)
+ @Html.LabelFor(m => m.Email, T("Email"))
@Html.TextBoxFor(m=>m.Email, new { @class = "textMedium" })
@Html.ValidationMessageFor(m=>m.Email, "*")
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs
index e1264dc24..98217016c 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Controllers/AdminController.cs
@@ -7,6 +7,7 @@ using Orchard.Core.Contents.Controllers;
using Orchard.Localization;
using Orchard.UI.Admin;
using Orchard.UI.Notify;
+using Orchard.UI.Widgets;
using Orchard.Widgets.Models;
using Orchard.Widgets.Services;
using Orchard.Widgets.ViewModels;
@@ -19,13 +20,16 @@ namespace Orchard.Widgets.Controllers {
private const string NotAuthorizedManageWidgetsLabel = "Not authorized to manage widgets";
private readonly IWidgetsService _widgetsService;
+ private readonly IRuleManager _ruleManager;
public AdminController(
IOrchardServices services,
- IWidgetsService widgetsService) {
+ IWidgetsService widgetsService,
+ IRuleManager ruleManager) {
Services = services;
_widgetsService = widgetsService;
+ _ruleManager = ruleManager;
T = NullLocalizer.Instance;
}
@@ -171,6 +175,9 @@ namespace Orchard.Widgets.Controllers {
return HttpNotFound();
var model = Services.ContentManager.UpdateEditor(layerPart, this);
+
+ ValidateLayer(layerPart);
+
if (!ModelState.IsValid) {
Services.TransactionManager.Cancel();
return View(model);
@@ -216,6 +223,9 @@ namespace Orchard.Widgets.Controllers {
return HttpNotFound();
var model = Services.ContentManager.UpdateEditor(layerPart, this);
+
+ ValidateLayer(layerPart);
+
if (!ModelState.IsValid) {
Services.TransactionManager.Cancel();
return View(model);
@@ -325,6 +335,27 @@ namespace Orchard.Widgets.Controllers {
RedirectToAction("Index");
}
+ public bool ValidateLayer(LayerPart layer) {
+ if ( String.IsNullOrWhiteSpace(layer.LayerRule) ) {
+ layer.LayerRule = "true";
+ }
+
+ if(_widgetsService.GetLayers().Any(l => String.CompareOrdinal(l.Name, layer.Name) == 0)) {
+ ModelState.AddModelError("Name", T("A Layer with the same name already exists").Text);
+ return false;
+ }
+
+ try {
+ _ruleManager.Matches(layer.LayerRule);
+ }
+ catch ( Exception e ) {
+ ModelState.AddModelError("Description", T("The rule is not valid: {0}", e.Message).Text);
+ return false;
+ }
+
+ return true;
+ }
+
bool IUpdateModel.TryUpdateModel(TModel model, string prefix, string[] includeProperties, string[] excludeProperties) {
return base.TryUpdateModel(model, prefix, includeProperties, excludeProperties);
}
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs b/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs
index ae148948e..bc0e46f69 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs
@@ -1,7 +1,10 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Web.Mvc;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Aspects;
+using Orchard.Localization;
+using Orchard.Logging;
using Orchard.Mvc.Filters;
using Orchard.UI.Admin;
using Orchard.UI.Widgets;
@@ -17,8 +20,13 @@ namespace Orchard.Widgets.Filters {
_contentManager = contentManager;
_workContextAccessor = workContextAccessor;
_ruleManager = ruleManager;
+ Logger = NullLogger.Instance;
+ T = NullLocalizer.Instance;
}
+ public ILogger Logger { get; set; }
+ public Localizer T { get; private set; }
+
public void OnResultExecuting(ResultExecutingContext filterContext) {
// layers and widgets should only run on a full view rendering result
var viewResult = filterContext.Result as ViewResult;
@@ -42,8 +50,14 @@ namespace Orchard.Widgets.Filters {
List activeLayerIds = new List();
foreach (var activeLayer in activeLayers) {
var context = workContext.HttpContext;
- if (_ruleManager.Matches(activeLayer.Record.LayerRule)) {
- activeLayerIds.Add(activeLayer.ContentItem.Id);
+ // ignore the rule if it fails to execute
+ try {
+ if (_ruleManager.Matches(activeLayer.Record.LayerRule)) {
+ activeLayerIds.Add(activeLayer.ContentItem.Id);
+ }
+ }
+ catch(Exception e) {
+ Logger.Debug(e, T("An error occured during layer evaluation on: {0}", activeLayer.Name).Text);
}
}
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Styles/admin.css b/src/Orchard.Web/Modules/Orchard.Widgets/Styles/admin.css
index c6cfaa63b..9c858e1b1 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Styles/admin.css
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Styles/admin.css
@@ -1,45 +1,64 @@
-.widgetsbag-editor h5 {
+#main #widgets h2
+{
+ border-bottom:none;
+}
+
+.widgetsbag-editor h5 {
color:#4c4c4c;
font-weight:bold;
}
.widgets-availableWidgets {
+ float: right;
float: left;
width: 30%;
+ margin: 0 0 0 2em;
}
.widgets-availableLayers {
float: left;
margin: 0 0 0 2em;
- width: 45%;
+ width: 60%;
+ min-width: 40%;
}
.widgets-layerZones {
font-size: 1.4em;
float: left;
- width: 70%;
+ width: 60%;
border: 1px solid #eaeaea;
- background: #fff;
+ border:1px solid #ccc;
+ background: #fcfcfc;
}
.widgets-layerZones .widgets-zone {
background:#f5f5f5;
border: 1px solid #f1f1f1;
padding: 1em 2em 1em 2em;
- margin: 0 0 1em 0;
+ margin: 0 0 .6em 0;
}
.widgets-layerZones .widgets-zoneWidget {
- margin: 0 0 1em 0;
+ margin: .6em;
padding: 1em 2em 1em 3em;
background:#ffffff;
border: 1px solid #f1f1f1;
vertical-align: middle;
}
+.widgets-availableLayers fieldset {
+ background: #F1F1F1;
+ padding: .6em;
+}
+
+.widgets-availableWidgets fieldset {
+ padding: 0;
+}
+
.widgets-layers {
font-size: 1.4em;
- margin: 1em 0 0 0;
+ border:1px solid #ccc;
+ border-left:none;
float: left;
}
@@ -65,4 +84,13 @@
.widgets-layerZones ul li ul {
margin: 0;
padding: 0;
+}
+
+.new-layer {
+ padding: .6em;
+}
+
+.new-layer a {
+ text-decoration: none;
+ font-weight: 600;
}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Views/Admin/Index.cshtml b/src/Orchard.Web/Modules/Orchard.Widgets/Views/Admin/Index.cshtml
index dfd99c72c..19d953a03 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Views/Admin/Index.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Views/Admin/Index.cshtml
@@ -5,7 +5,7 @@
Style.Require("WidgetsAdmin");
}
@Html.TitleForPage(T("Manage Widgets").ToString())
-@Html.ActionLink(T("Add a layer").ToString(), "AddLayer", new { }, new { @class = "button primaryAction" })
+
@using(Html.BeginFormAntiForgeryPost()) {
Html.ValidationSummary();
@@ -13,31 +13,7 @@
+
+
+
}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.LayerPart.cshtml b/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.LayerPart.cshtml
index e31e1b67e..352b73dc4 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.LayerPart.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.LayerPart.cshtml
@@ -1,16 +1,16 @@
@model Orchard.Widgets.Models.LayerPart
- @Html.LabelFor(layer => layer.Name)
+ @Html.LabelFor(layer => layer.Name, T("Name"))
@Html.TextBoxFor(layer => layer.Name)
- @Html.LabelFor(layer => layer.Description)
+ @Html.LabelFor(layer => layer.Description, T("Description"))
@Html.TextAreaFor(layer => layer.Description)
- @Html.LabelFor(layer => layer.LayerRule)
+ @Html.LabelFor(layer => layer.LayerRule, T("Layer Rule"))
@Html.TextAreaFor(layer => layer.LayerRule)
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.WidgetPart.cshtml b/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.WidgetPart.cshtml
index 573edadd0..c419a0e5e 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.WidgetPart.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts/Widgets.WidgetPart.cshtml
@@ -1,11 +1,11 @@
@model Orchard.Widgets.Models.WidgetPart
- @Html.LabelFor(widget => widget.Zone)
+ @Html.LabelFor(widget => widget.Zone, T("Zone"))
@Html.DropDownListFor(widget => widget.Zone, new SelectList(Model.AvailableZones))
- @Html.LabelFor(widget => widget.Title)
+ @Html.LabelFor(widget => widget.Title, T("Title"))
@Html.TextBoxFor(widget => widget.Title)
\ No newline at end of file
diff --git a/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs b/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs
index 24039ba9d..0c97a6ab0 100644
--- a/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs
+++ b/src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs
@@ -194,7 +194,7 @@ namespace Orchard.Data.Migration.Interpreters {
}
else {
if(command.Length > 0 || command.Precision > 0 || command.Scale > 0) {
- throw new OrchardException(T("Error while executing data migration: you need to specify the field's type in order to change it's properies"));
+ throw new OrchardException(T("Error while executing data migration: you need to specify the field's type in order to change its properties"));
}
}