diff --git a/Orchard.proj b/Orchard.proj
index a68d2afa3..b907eb655 100644
--- a/Orchard.proj
+++ b/Orchard.proj
@@ -69,7 +69,7 @@
-
+
@@ -126,7 +126,7 @@
-
+
@@ -293,10 +293,18 @@
+
+
-
+
+
+
+
+
@@ -307,7 +315,6 @@
-
diff --git a/src/Orchard.Core.Tests/Routable/Services/RoutableServiceTests.cs b/src/Orchard.Core.Tests/Routable/Services/RoutableServiceTests.cs
index 62493aaab..c696c8b75 100644
--- a/src/Orchard.Core.Tests/Routable/Services/RoutableServiceTests.cs
+++ b/src/Orchard.Core.Tests/Routable/Services/RoutableServiceTests.cs
@@ -46,7 +46,7 @@ namespace Orchard.Core.Tests.Routable.Services {
builder.RegisterInstance(new Mock().Object);
builder.RegisterInstance(new Mock().Object);
builder.RegisterType().As();
- builder.RegisterType().As();
+ builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
diff --git a/src/Orchard.Profile/Tests/Profiling.feature b/src/Orchard.Profile/Tests/Profiling.feature
index 267b90d37..cadf674cb 100644
--- a/src/Orchard.Profile/Tests/Profiling.feature
+++ b/src/Orchard.Profile/Tests/Profiling.feature
@@ -22,5 +22,8 @@ Scenario: Hitting blogs
When I go to "/blog4" 10 times
Scenario: Hitting home page
- Given I am logged in
- When I go to "/" 40 times
+ //Given I am logged in
+ When I go to "/" 10 times
+ When I go to "/" 10 times
+ When I go to "/" 10 times
+ When I go to "/" 10 times
diff --git a/src/Orchard.Profile/Tests/Profiling.feature.cs b/src/Orchard.Profile/Tests/Profiling.feature.cs
index ae57373ee..75bb2fb49 100644
--- a/src/Orchard.Profile/Tests/Profiling.feature.cs
+++ b/src/Orchard.Profile/Tests/Profiling.feature.cs
@@ -1,7 +1,7 @@
// ------------------------------------------------------------------------------
//
// This code was generated by SpecFlow (http://www.specflow.org/).
-// SpecFlow Version:1.3.2.0
+// SpecFlow Version:1.4.0.0
// Runtime Version:4.0.30319.1
//
// Changes to this file may cause incorrect behavior and will be lost if
@@ -9,12 +9,12 @@
//
// ------------------------------------------------------------------------------
#region Designer generated code
-namespace Orchard.Specs.Le.Tests
+namespace Orchard.Profile.Tests
{
using TechTalk.SpecFlow;
- [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.2.0")]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.4.0.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[NUnit.Framework.TestFixtureAttribute()]
[NUnit.Framework.DescriptionAttribute("Profiling")]
@@ -31,7 +31,7 @@ namespace Orchard.Specs.Le.Tests
{
testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner();
TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Profiling", "In order to profile the site\r\nAs a developer\r\nI want to generate a fixed number o" +
- "f repeatable requests", ((string[])(null)));
+ "f repeatable requests", GenerationTargetLanguage.CSharp, ((string[])(null)));
testRunner.OnFeatureStart(featureInfo);
}
@@ -61,13 +61,13 @@ namespace Orchard.Specs.Le.Tests
#line 6
this.ScenarioSetup(scenarioInfo);
#line 7
-testRunner.Given("I am logged in");
+ testRunner.Given("I am logged in");
#line 8
-testRunner.When("I go to \"/admin\"");
+ testRunner.When("I go to \"/admin\"");
#line 9
-testRunner.When("I go to \"/blog0\"");
+ testRunner.When("I go to \"/blog0\"");
#line 10
-testRunner.When("I go to \"/\"");
+ testRunner.When("I go to \"/\"");
#line hidden
testRunner.CollectScenarioErrors();
}
@@ -80,9 +80,9 @@ testRunner.When("I go to \"/\"");
#line 12
this.ScenarioSetup(scenarioInfo);
#line 13
-testRunner.Given("I am logged in");
+ testRunner.Given("I am logged in");
#line 14
-testRunner.When("I go to \"/admin\" 40 times");
+ testRunner.When("I go to \"/admin\" 40 times");
#line hidden
testRunner.CollectScenarioErrors();
}
@@ -95,17 +95,17 @@ testRunner.When("I go to \"/admin\" 40 times");
#line 16
this.ScenarioSetup(scenarioInfo);
#line 17
-testRunner.Given("I am logged in");
+ testRunner.Given("I am logged in");
#line 18
-testRunner.When("I go to \"/blog0\" 10 times");
+ testRunner.When("I go to \"/blog0\" 10 times");
#line 19
-testRunner.When("I go to \"/blog1\" 10 times");
+ testRunner.When("I go to \"/blog1\" 10 times");
#line 20
-testRunner.When("I go to \"/blog2\" 10 times");
+ testRunner.When("I go to \"/blog2\" 10 times");
#line 21
-testRunner.When("I go to \"/blog3\" 10 times");
+ testRunner.When("I go to \"/blog3\" 10 times");
#line 22
-testRunner.When("I go to \"/blog4\" 10 times");
+ testRunner.When("I go to \"/blog4\" 10 times");
#line hidden
testRunner.CollectScenarioErrors();
}
@@ -117,10 +117,14 @@ testRunner.When("I go to \"/blog4\" 10 times");
TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Hitting home page", ((string[])(null)));
#line 24
this.ScenarioSetup(scenarioInfo);
-#line 25
-testRunner.Given("I am logged in");
#line 26
-testRunner.When("I go to \"/\" 40 times");
+ testRunner.When("I go to \"/\" 10 times");
+#line 27
+ testRunner.When("I go to \"/\" 10 times");
+#line 28
+ testRunner.When("I go to \"/\" 10 times");
+#line 29
+ testRunner.When("I go to \"/\" 10 times");
#line hidden
testRunner.CollectScenarioErrors();
}
diff --git a/src/Orchard.Tests/Environment/DefaultWorkContextAccessorTests.cs b/src/Orchard.Tests/Environment/DefaultWorkContextAccessorTests.cs
index 8edd2de91..5de77cf97 100644
--- a/src/Orchard.Tests/Environment/DefaultWorkContextAccessorTests.cs
+++ b/src/Orchard.Tests/Environment/DefaultWorkContextAccessorTests.cs
@@ -22,7 +22,7 @@ namespace Orchard.Tests.Environment {
}
protected override void Register(ContainerBuilder builder) {
- builder.RegisterType().As();
+ builder.RegisterType().As();
builder.RegisterAutoMocking();
}
diff --git a/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContextFactoryTests.cs b/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContextFactoryTests.cs
index 56a96df61..4857f4b72 100644
--- a/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContextFactoryTests.cs
+++ b/src/Orchard.Tests/Environment/ShellBuilders/DefaultShellContextFactoryTests.cs
@@ -21,7 +21,7 @@ namespace Orchard.Tests.Environment.ShellBuilders {
public void Init() {
var builder = new ContainerBuilder();
builder.RegisterType().As();
- builder.RegisterType().As();
+ builder.RegisterType().As();
builder.RegisterAutoMocking(Moq.MockBehavior.Strict);
_container = builder.Build();
}
diff --git a/src/Orchard.Tests/Environment/State/DefaultProcessingEngineTests.cs b/src/Orchard.Tests/Environment/State/DefaultProcessingEngineTests.cs
index e35a2f401..d564bb24c 100644
--- a/src/Orchard.Tests/Environment/State/DefaultProcessingEngineTests.cs
+++ b/src/Orchard.Tests/Environment/State/DefaultProcessingEngineTests.cs
@@ -23,7 +23,7 @@ namespace Orchard.Tests.Environment.State {
public void Init() {
var builder = new ContainerBuilder();
builder.RegisterType().As();
- builder.RegisterType().As();
+ builder.RegisterType().As();
builder.RegisterAutoMocking();
_container = builder.Build();
diff --git a/src/Orchard.Tests/Localization/CultureManagerTests.cs b/src/Orchard.Tests/Localization/CultureManagerTests.cs
index 9d202c2d0..4a0d9e1ce 100644
--- a/src/Orchard.Tests/Localization/CultureManagerTests.cs
+++ b/src/Orchard.Tests/Localization/CultureManagerTests.cs
@@ -51,7 +51,7 @@ namespace Orchard.Tests.Localization {
builder.RegisterInstance(new Mock().Object);
builder.RegisterInstance(new Mock().Object);
builder.RegisterType().As();
- builder.RegisterType().As();
+ builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
diff --git a/src/Orchard.Tests/Mvc/Routes/ShellRouteTests.cs b/src/Orchard.Tests/Mvc/Routes/ShellRouteTests.cs
index 80a99f72f..33bbfb968 100644
--- a/src/Orchard.Tests/Mvc/Routes/ShellRouteTests.cs
+++ b/src/Orchard.Tests/Mvc/Routes/ShellRouteTests.cs
@@ -36,7 +36,7 @@ namespace Orchard.Tests.Mvc.Routes {
rootBuilder.Register(ctx => _routes);
rootBuilder.RegisterType().InstancePerDependency();
rootBuilder.RegisterType().As().SingleInstance();
- rootBuilder.RegisterType().As().InstancePerMatchingLifetimeScope("shell");
+ rootBuilder.RegisterType().As().InstancePerMatchingLifetimeScope("shell");
rootBuilder.RegisterType().As();
_rootContainer = rootBuilder.Build();
diff --git a/src/Orchard.Tests/Tasks/SweepGeneratorTests.cs b/src/Orchard.Tests/Tasks/SweepGeneratorTests.cs
index 9e0469631..9bb99fa08 100644
--- a/src/Orchard.Tests/Tasks/SweepGeneratorTests.cs
+++ b/src/Orchard.Tests/Tasks/SweepGeneratorTests.cs
@@ -12,7 +12,7 @@ namespace Orchard.Tests.Tasks {
public class SweepGeneratorTests : ContainerTestBase {
protected override void Register(ContainerBuilder builder) {
builder.RegisterAutoMocking(MockBehavior.Loose);
- builder.RegisterType().As();
+ builder.RegisterType().As();
builder.RegisterType();
}
diff --git a/src/Orchard.Tests/UI/ShapeTests.cs b/src/Orchard.Tests/UI/ShapeTests.cs
index f5d8fb4c0..efac540ea 100644
--- a/src/Orchard.Tests/UI/ShapeTests.cs
+++ b/src/Orchard.Tests/UI/ShapeTests.cs
@@ -19,7 +19,7 @@ namespace Orchard.Tests.UI {
protected override void Register(ContainerBuilder builder) {
builder.RegisterType().As();
- builder.RegisterType().As();
+ builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
builder.RegisterType().As();
diff --git a/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs b/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs
index c012a3ddb..0c939952f 100644
--- a/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs
+++ b/src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs
@@ -1,7 +1,6 @@
using System.Linq;
using JetBrains.Annotations;
using Orchard.ContentManagement.MetaData;
-using Orchard.ContentManagement.MetaData.Models;
using Orchard.Core.Common.Models;
using Orchard.Data;
using Orchard.Localization;
@@ -67,9 +66,11 @@ namespace Orchard.Core.Common.Handlers {
bool ContentTypeWithACommonPart(string typeName) {
//Note: What about content type handlers which activate "CommonPart" in code?
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(typeName);
- if (contentTypeDefinition == null)
- return false;
- return contentTypeDefinition.Parts.Any(part => part.PartDefinition.Name == "CommonPart");
+
+ if (contentTypeDefinition != null)
+ return contentTypeDefinition.Parts.Any(part => part.PartDefinition.Name == "CommonPart");
+
+ return false;
}
void AssignCreatingOwner(InitializingContentContext context, CommonPart part) {
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml
index 61f660f70..61ebb0c70 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml
@@ -44,6 +44,7 @@
}
var dependencies = (from d in feature.Descriptor.Dependencies
select (from f in Model.Features where f.Descriptor.Id == d select f).SingleOrDefault()).Where(f => f != null).OrderBy(f => f.Descriptor.Name);
+ @* todo: missingDependencies -- show them in a special way. Can be found like this:
var missingDependencies = feature.Descriptor.Dependencies
.Where(d => !Model.Features.Any(f => f.Descriptor.Id == d));
if (showActions) {
diff --git a/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs b/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs
index bd77e21af..f7f185abb 100644
--- a/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs
+++ b/src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs
@@ -45,6 +45,8 @@ namespace Orchard.Setup {
// standard services needed in setup mode
builder.RegisterModule(new MvcModule());
builder.RegisterModule(new CommandModule());
+ builder.RegisterModule(new WorkContextModule());
+
builder.RegisterType().As().InstancePerLifetimeScope();
builder.RegisterType().As().InstancePerLifetimeScope();
builder.RegisterType().As().As().InstancePerLifetimeScope();
@@ -58,7 +60,7 @@ namespace Orchard.Setup {
builder.RegisterType().As().InstancePerLifetimeScope();
builder.RegisterType().As().InstancePerLifetimeScope();
builder.RegisterType().As().InstancePerLifetimeScope();
- builder.RegisterType().As().InstancePerMatchingLifetimeScope("shell");
+ builder.RegisterType().As().InstancePerMatchingLifetimeScope("shell");
builder.RegisterType().As().InstancePerLifetimeScope();
builder.RegisterType().As().InstancePerLifetimeScope();
builder.RegisterType().As().InstancePerLifetimeScope();
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs
index ae4951d35..a1ed2f3fc 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs
@@ -38,32 +38,30 @@ namespace Orchard.Users.Services {
public ILogger Logger { get; set; }
public string VerifyUserUnicity(string userName, string email) {
- IEnumerable allUsers = _contentManager.Query().List();
+ string normalizedUserName = userName.ToLower();
- foreach (var user in allUsers) {
- if (String.Equals(userName.ToLower(), user.NormalizedUserName, StringComparison.OrdinalIgnoreCase)) {
- return "A user with that name already exists";
- }
- if (String.Equals(email, user.Email, StringComparison.OrdinalIgnoreCase)) {
- return "A user with that email already exists";
- }
+ if (_contentManager.Query()
+ .Where(user =>
+ user.NormalizedUserName == normalizedUserName ||
+ user.Email == email)
+ .List().Any()) {
+ return "User with that username and/or email already exists.";
}
return null;
}
public string VerifyUserUnicity(int id, string userName, string email) {
- IEnumerable allUsers = _contentManager.Query().List();
- foreach (var user in allUsers) {
- if (user.Id == id)
- continue;
- if (String.Equals(userName.ToLower(), user.NormalizedUserName, StringComparison.OrdinalIgnoreCase)) {
- return "A user with that name already exists";
- }
- if (String.Equals(email, user.Email, StringComparison.OrdinalIgnoreCase)) {
- return "A user with that email already exists";
- }
+ string normalizedUserName = userName.ToLower();
+
+ if (_contentManager.Query()
+ .Where(user =>
+ user.NormalizedUserName == normalizedUserName ||
+ user.Email == email)
+ .List().Any(user => user.Id != id)) {
+ return "User with that username and/or email already exists.";
}
+
return null;
}
diff --git a/src/Orchard/Environment/DefaultWorkContextAccessor.cs b/src/Orchard/Environment/WorkContextAccessor.cs
similarity index 60%
rename from src/Orchard/Environment/DefaultWorkContextAccessor.cs
rename to src/Orchard/Environment/WorkContextAccessor.cs
index 9a2c6816f..307ed2dd2 100644
--- a/src/Orchard/Environment/DefaultWorkContextAccessor.cs
+++ b/src/Orchard/Environment/WorkContextAccessor.cs
@@ -1,13 +1,11 @@
using System;
using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Linq;
using System.Web;
using Autofac;
using Orchard.Mvc;
namespace Orchard.Environment {
- public class DefaultWorkContextAccessor : IWorkContextAccessor {
+ public class WorkContextAccessor : IWorkContextAccessor {
readonly ILifetimeScope _lifetimeScope;
readonly IHttpContextAccessor _httpContextAccessor;
@@ -18,7 +16,7 @@ namespace Orchard.Environment {
[ThreadStatic]
static ConcurrentDictionary