Files
Orchard/src/Orchard.Web/Core/Shapes/CoreShapes.cs

856 lines
36 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using System.Web.Routing;
using Orchard.ContentManagement;
using Orchard.DisplayManagement;
using Orchard.DisplayManagement.Descriptors;
using Orchard.DisplayManagement.Descriptors.ResourceBindingStrategy;
using Orchard.Environment;
using Orchard.Localization;
using Orchard.Mvc;
using Orchard.Settings;
using Orchard.UI;
using Orchard.UI.Resources;
using Orchard.UI.Zones;
using Orchard.Utility.Extensions;
// ReSharper disable InconsistentNaming
namespace Orchard.Core.Shapes {
public class CoreShapes : IShapeTableProvider {
private readonly Work<WorkContext> _workContext;
private readonly Work<IResourceManager> _resourceManager;
private readonly Work<IHttpContextAccessor> _httpContextAccessor;
private readonly Work<IShapeFactory> _shapeFactory;
public CoreShapes(
Work<WorkContext> workContext,
Work<IResourceManager> resourceManager,
Work<IHttpContextAccessor> httpContextAccessor,
Work<IShapeFactory> shapeFactory
) {
_workContext = workContext;
_resourceManager = resourceManager;
_httpContextAccessor = httpContextAccessor;
_shapeFactory = shapeFactory;
T = NullLocalizer.Instance;
}
public Localizer T { get; set; }
public dynamic New { get { return _shapeFactory.Value; } }
public void Discover(ShapeTableBuilder builder) {
// the root page shape named 'Layout' is wrapped with 'Document'
// and has an automatic zone creating behavior
builder.Describe("Layout")
.Configure(descriptor => descriptor.Wrappers.Add("Document"))
.OnCreating(creating => creating.Create = () => new ZoneHolding(() => creating.New.Zone()))
.OnCreated(created => {
var layout = created.Shape;
layout.Head = created.New.DocumentZone(ZoneName: "Head");
layout.Body = created.New.DocumentZone(ZoneName: "Body");
layout.Tail = created.New.DocumentZone(ZoneName: "Tail");
layout.Body.Add(created.New.PlaceChildContent(Source: layout));
layout.Content = created.New.Zone();
layout.Content.ZoneName = "Content";
layout.Content.Add(created.New.PlaceChildContent(Source: layout));
});
// 'Zone' shapes are built on the Zone base class
// They have class="zone zone-{name}"
// and the template can be specialized with "Zone-{Name}" base file name
builder.Describe("Zone")
.OnCreating(creating => creating.Create = () => new Zone())
.OnDisplaying(displaying => {
var zone = displaying.Shape;
string zoneName = zone.ZoneName;
zone.Classes.Add("zone-" + zoneName.HtmlClassify());
zone.Classes.Add("zone");
// Zone__[ZoneName] e.g. Zone-SideBar
zone.Metadata.Alternates.Add("Zone__" + zoneName);
});
builder.Describe("Menu")
.OnDisplaying(displaying => {
var menu = displaying.Shape;
string menuName = menu.MenuName;
menu.Classes.Add("menu-" + menuName.HtmlClassify());
menu.Classes.Add("menu");
menu.Metadata.Alternates.Add("Menu__" + EncodeAlternateElement(menuName));
});
builder.Describe("MenuItem")
.OnDisplaying(displaying => {
var menuItem = displaying.Shape;
var menu = menuItem.Menu;
int level = menuItem.Level;
menuItem.Metadata.Alternates.Add("MenuItem__level__" + level);
menuItem.Metadata.Alternates.Add("MenuItem__" + EncodeAlternateElement(menu.MenuName));
menuItem.Metadata.Alternates.Add("MenuItem__" + EncodeAlternateElement(menu.MenuName) + "__level__" + level);
});
builder.Describe("MenuItemLink")
.OnDisplaying(displaying => {
var menuItem = displaying.Shape;
string menuName = menuItem.Menu.MenuName;
string contentType = null;
int level = menuItem.Level;
if (menuItem.Content != null) {
contentType = ((IContent) menuItem.Content).ContentItem.ContentType;
}
menuItem.Metadata.Alternates.Add("MenuItemLink__level__" + level);
// MenuItemLink__[ContentType] e.g. MenuItemLink-HtmlMenuItem
// MenuItemLink__[ContentType]__level__[level] e.g. MenuItemLink-HtmlMenuItem-level-2
if (contentType != null) {
menuItem.Metadata.Alternates.Add("MenuItemLink__" + EncodeAlternateElement(contentType));
menuItem.Metadata.Alternates.Add("MenuItemLink__" + EncodeAlternateElement(contentType) + "__level__" + level);
}
// MenuItemLink__[MenuName] e.g. MenuItemLink-Main-Menu
// MenuItemLink__[MenuName]__level__[level] e.g. MenuItemLink-Main-Menu-level-2
menuItem.Metadata.Alternates.Add("MenuItemLink__" + EncodeAlternateElement(menuName));
menuItem.Metadata.Alternates.Add("MenuItemLink__" + EncodeAlternateElement(menuName) + "__level__" + level);
// MenuItemLink__[MenuName]__[ContentType] e.g. MenuItemLink-Main-Menu-HtmlMenuItem
// MenuItemLink__[MenuName]__[ContentType] e.g. MenuItemLink-Main-Menu-HtmlMenuItem-level-2
if (contentType != null) {
menuItem.Metadata.Alternates.Add("MenuItemLink__" + EncodeAlternateElement(menuName) + "__" + EncodeAlternateElement(contentType));
menuItem.Metadata.Alternates.Add("MenuItemLink__" + EncodeAlternateElement(menuName) + "__" + EncodeAlternateElement(contentType) + "__level__" + level);
}
});
builder.Describe("LocalMenu")
.OnDisplaying(displaying => {
var menu = displaying.Shape;
string menuName = menu.MenuName;
menu.Classes.Add("localmenu-" + menuName.HtmlClassify());
menu.Classes.Add("localmenu");
menu.Metadata.Alternates.Add("LocalMenu__" + EncodeAlternateElement(menuName));
});
builder.Describe("LocalMenuItem")
.OnDisplaying(displaying => {
var menuItem = displaying.Shape;
var menu = menuItem.Menu;
menuItem.Metadata.Alternates.Add("LocalMenuItem__" + EncodeAlternateElement(menu.MenuName));
});
#region Pager alternates
builder.Describe("Pager")
.OnDisplaying(displaying => {
var pager = displaying.Shape;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
displaying.Shape.Metadata.Alternates.Add("Pager__" + EncodeAlternateElement(pagerId));
});
builder.Describe("Pager_Gap")
.OnDisplaying(displaying => {
var pager = displaying.Shape.Pager;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
pager.Metadata.Alternates.Add("Pager_Gap__" + EncodeAlternateElement(pagerId));
});
builder.Describe("Pager_First")
.OnDisplaying(displaying => {
var pager = displaying.Shape.Pager;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
displaying.Shape.Metadata.Alternates.Add("Pager_First__" + EncodeAlternateElement(pagerId));
});
builder.Describe("Pager_Previous")
.OnDisplaying(displaying => {
var pager = displaying.Shape.Pager;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
displaying.Shape.Metadata.Alternates.Add("Pager_Previous__" + EncodeAlternateElement(pagerId));
});
builder.Describe("Pager_Next")
.OnDisplaying(displaying => {
var pager = displaying.Shape.Pager;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
displaying.Shape.Metadata.Alternates.Add("Pager_Next__" + EncodeAlternateElement(pagerId));
});
builder.Describe("Pager_Last")
.OnDisplaying(displaying => {
var pager = displaying.Shape.Pager;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
displaying.Shape.Metadata.Alternates.Add("Pager_Last__" + EncodeAlternateElement(pagerId));
});
builder.Describe("Pager_CurrentPage")
.OnDisplaying(displaying => {
var pager = displaying.Shape.Pager;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
displaying.Shape.Metadata.Alternates.Add("Pager_CurrentPage__" + EncodeAlternateElement(pagerId));
});
builder.Describe("Pager_Links")
.OnDisplaying(displaying => {
var pager = displaying.Shape;
string pagerId = pager.PagerId;
if (!String.IsNullOrWhiteSpace(pagerId))
displaying.Shape.Metadata.Alternates.Add("Pager_Links__" + EncodeAlternateElement(pagerId));
});
#endregion
// 'List' shapes start with several empty collections
builder.Describe("List")
.OnCreated(created => {
var list = created.Shape;
list.Tag = "ul";
list.ItemClasses = new List<string>();
list.ItemAttributes = new Dictionary<string, string>();
});
builder.Describe("Style")
.OnDisplaying(displaying => {
var resource = displaying.Shape;
string url = resource.Url;
var fileName = url != null ? StaticFileBindingStrategy.GetAlternateShapeNameFromFileName(url) : default(string);
if (!string.IsNullOrEmpty(fileName)) {
resource.Metadata.Alternates.Add("Style__" + fileName);
}
});
builder.Describe("Script")
.OnDisplaying(displaying => {
var resource = displaying.Shape;
string url = resource.Url;
var fileName = url != null ? StaticFileBindingStrategy.GetAlternateShapeNameFromFileName(url) : default(string);
if (!string.IsNullOrEmpty(fileName)) {
resource.Metadata.Alternates.Add("Script__" + fileName);
}
});
builder.Describe("Resource")
.OnDisplaying(displaying => {
var resource = displaying.Shape;
string url = resource.Url;
var fileName = url != null ? StaticFileBindingStrategy.GetAlternateShapeNameFromFileName(url) : default(string);
if (!string.IsNullOrEmpty(fileName)) {
resource.Metadata.Alternates.Add("Resource__" + fileName);
}
});
}
static TagBuilder GetTagBuilder(string tagName, string id, IEnumerable<string> classes, IDictionary<string, string> attributes) {
var tagBuilder = new TagBuilder(tagName);
tagBuilder.MergeAttributes(attributes, false);
foreach (var cssClass in classes ?? Enumerable.Empty<string>())
tagBuilder.AddCssClass(cssClass);
if (!string.IsNullOrWhiteSpace(id))
tagBuilder.GenerateId(id);
return tagBuilder;
}
[Shape]
public void Zone(dynamic Display, dynamic Shape, TextWriter Output) {
string id = Shape.Id;
IEnumerable<string> classes = Shape.Classes;
IDictionary<string, string> attributes = Shape.Attributes;
var zoneWrapper = GetTagBuilder("div", id, classes, attributes);
Output.Write(zoneWrapper.ToString(TagRenderMode.StartTag));
foreach (var item in Order(Shape))
Output.Write(Display(item));
Output.Write(zoneWrapper.ToString(TagRenderMode.EndTag));
}
[Shape]
public void ContentZone(dynamic Display, dynamic Shape, TextWriter Output) {
Merge branch 'refs/heads/1.9.x' into dev Conflicts: ClickToBuild.cmd Orchard.proj lib/msbuild/MSBuild.Community.Tasks.Targets lib/newtonsoft.json/Newtonsoft.Json.xml lib/windowsazure/Microsoft.WindowsAzure.Diagnostics.xml src/Orchard.Azure.Tests/Orchard.Azure.Tests.csproj src/Orchard.Azure/Orchard.Azure.Web/Config/Host.config src/Orchard.Azure/Orchard.Azure.Web/Config/HostComponents.config src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj src/Orchard.Azure/Orchard.Azure.Web/Web.config src/Orchard.Azure/Orchard.Azure.sln src/Orchard.Core.Tests/Body/BodyPartTests.cs src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs src/Orchard.Core.Tests/Orchard.Core.Tests.csproj src/Orchard.Profile/profiling-setup-commands.txt src/Orchard.Specs/Bindings/OrchardSiteFactory.cs src/Orchard.Specs/Blogs.feature src/Orchard.Specs/Blogs.feature.cs src/Orchard.Specs/Comments.feature src/Orchard.Specs/Comments.feature.cs src/Orchard.Specs/Hosting/Orchard.Web/Config/Host.config src/Orchard.Specs/Hosting/Orchard.Web/Web.config src/Orchard.Specs/Hosting/Simple.Web/Web.config src/Orchard.Specs/Lists.feature src/Orchard.Specs/Lists.feature.cs src/Orchard.Specs/Media.feature src/Orchard.Specs/Media.feature.cs src/Orchard.Specs/MultiTenancy.feature src/Orchard.Specs/MultiTenancy.feature.cs src/Orchard.Specs/Orchard.Specs.csproj src/Orchard.Specs/Pages.feature src/Orchard.Specs/Pages.feature.cs src/Orchard.Specs/PermissionModel.feature src/Orchard.Specs/PermissionModel.feature.cs src/Orchard.Specs/Setup.feature src/Orchard.Specs/Setup.feature.cs src/Orchard.Specs/Tags.feature src/Orchard.Specs/Tags.feature.cs src/Orchard.Specs/Users.feature src/Orchard.Specs/Users.feature.cs src/Orchard.Tests.Modules/Comments/Services/CommentServiceTests.cs src/Orchard.Tests.Modules/Conditions/Providers/UrlRuleConditionTest.cs src/Orchard.Tests.Modules/DatabaseEnabledTestsBase.cs src/Orchard.Tests.Modules/ImportExport/Services/ImportExportServiceTests.cs src/Orchard.Tests.Modules/Media/Services/MediaServiceTests.cs src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ModuleStepTest.cs src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ThemeStepTest.cs src/Orchard.Tests.Modules/Recipes/Services/RecipeManagerTests.cs src/Orchard.Tests.Modules/Users/Controllers/AccountControllerTests.cs src/Orchard.Tests.Modules/Users/Services/MembershipServiceTests.cs src/Orchard.Tests.Modules/Widgets/WidgetsTests.cs src/Orchard.Tests/App.config src/Orchard.Tests/ContainerTestBase.cs src/Orchard.Tests/ContentManagement/ContentQueryTests.cs src/Orchard.Tests/ContentManagement/DefaultContentManagerTests.cs src/Orchard.Tests/ContentManagement/DynamicContentQueryTests.cs src/Orchard.Tests/ContentManagement/HqlExpressionTests.cs src/Orchard.Tests/DataMigration/SchemaBuilderTests.cs src/Orchard.Tests/DataMigration/Utilities/NullInterpreter.cs src/Orchard.Tests/DatabaseEnabledTestsBase.cs src/Orchard.Tests/DisplayManagement/DefaultDisplayManagerTests.cs src/Orchard.Tests/DisplayManagement/Descriptors/ShapeAttributeBindingStrategyTests.cs src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs src/Orchard.Tests/Environment/Extensions/ExtensionLoaderCoordinatorTests.cs src/Orchard.Tests/Environment/Extensions/ExtensionManagerTests.cs src/Orchard.Tests/Environment/Loaders/DynamicExtensionLoaderTests.cs src/Orchard.Tests/Orchard.Framework.Tests.csproj src/Orchard.Tests/Stubs/StubReportsCoordinator.cs src/Orchard.Tests/Stubs/StubWorkContextAccessor.cs src/Orchard.Tests/Time/TimeZoneSelectorTests.cs src/Orchard.Web.Tests/Orchard.Web.Tests.csproj src/Orchard.Web/Config/Host.config src/Orchard.Web/Config/HostComponents.config src/Orchard.Web/Config/log4net.config src/Orchard.Web/Core/Common/DateEditor/DateEditorHandler.cs src/Orchard.Web/Core/Common/Drivers/BodyPartDriver.cs src/Orchard.Web/Core/Common/Drivers/IdentityPartDriver.cs src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs src/Orchard.Web/Core/Common/Handlers/BodyPartHandler.cs src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs src/Orchard.Web/Core/Common/Handlers/IdentityPartHandler.cs src/Orchard.Web/Core/Common/Migrations.cs src/Orchard.Web/Core/Common/Models/CommonPart.cs src/Orchard.Web/Core/Common/Models/CommonPartVersionRecord.cs src/Orchard.Web/Core/Common/Services/IdentifierResolverSelector.cs src/Orchard.Web/Core/Common/Utilities/LazyField.cs src/Orchard.Web/Core/Common/Views/CommonMetadataOwner.cshtml src/Orchard.Web/Core/Common/Views/Parts.Common.Metadata.SummaryAdmin.cshtml src/Orchard.Web/Core/Containers/Models/ContainerPart.cs src/Orchard.Web/Core/Containers/ViewModels/ContainerViewModel.cs src/Orchard.Web/Core/Containers/Views/EditorTemplates/ContainerWidget.cshtml src/Orchard.Web/Core/Contents/Controllers/ItemController.cs src/Orchard.Web/Core/Contents/Security/AuthorizationEventHandler.cs src/Orchard.Web/Core/Contents/Views/Admin/List.cshtml src/Orchard.Web/Core/Contents/Views/Content.Edit.cshtml src/Orchard.Web/Core/Dashboard/Views/Admin/Index.cshtml src/Orchard.Web/Core/Feeds/Rss/RssFeedBuilder.cs src/Orchard.Web/Core/Feeds/Services/FeedFilter.cs src/Orchard.Web/Core/Feeds/Services/FeedManager.cs src/Orchard.Web/Core/Feeds/StandardBuilders/CorePartsFeedItemBuilder.cs src/Orchard.Web/Core/Feeds/StandardQueries/ContainerFeedQuery.cs src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs src/Orchard.Web/Core/Navigation/Drivers/AdminMenuPartDriver.cs src/Orchard.Web/Core/Navigation/Drivers/MenuItemPartDriver.cs src/Orchard.Web/Core/Navigation/Drivers/MenuPartDriver.cs src/Orchard.Web/Core/Navigation/Handlers/AdminMenuPartHandler.cs src/Orchard.Web/Core/Navigation/Handlers/MenuHandler.cs src/Orchard.Web/Core/Navigation/Handlers/MenuPartHandler.cs src/Orchard.Web/Core/Navigation/Scripts/navigation-admin.js src/Orchard.Web/Core/Navigation/Services/AdminMenuNavigationProvider.cs src/Orchard.Web/Core/Navigation/Services/MainMenuService.cs src/Orchard.Web/Core/Navigation/Services/NavigationManager.cs src/Orchard.Web/Core/Navigation/Styles/navigation-admin.css src/Orchard.Web/Core/Navigation/Views/Admin/Index.cshtml src/Orchard.Web/Core/Navigation/Views/MenuItem.Edit.cshtml src/Orchard.Web/Core/Orchard.Core.csproj src/Orchard.Web/Core/Scheduling/Services/ScheduledTaskExecutor.cs src/Orchard.Web/Core/Scheduling/Services/ScheduledTaskManager.cs src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs src/Orchard.Web/Core/Settings/Handlers/SiteSettingsPartHandler.cs src/Orchard.Web/Core/Settings/Migrations.cs src/Orchard.Web/Core/Settings/Services/SiteService.cs src/Orchard.Web/Core/Settings/State/ShellStateManager.cs src/Orchard.Web/Core/Shapes/CoreShapes.cs src/Orchard.Web/Core/Shapes/DateTimeShapes.cs src/Orchard.Web/Core/Shapes/ResourceManifest.cs src/Orchard.Web/Core/Shapes/Scripts/base.js src/Orchard.Web/Modules/Lucene/Lucene.csproj src/Orchard.Web/Modules/Markdown/Markdown.csproj src/Orchard.Web/Modules/Orchard.Alias/AdminMenu.cs src/Orchard.Web/Modules/Orchard.Alias/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Alias/IAliasService.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/AliasRoute.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/DefaultAliasService.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/AliasInfo.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/IAliasHolder.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Map/AliasMap.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Storage/AliasStorage.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Utils.cs src/Orchard.Web/Modules/Orchard.Alias/Migrations.cs src/Orchard.Web/Modules/Orchard.Alias/Orchard.Alias.csproj src/Orchard.Web/Modules/Orchard.Alias/Records/AliasRecord.cs src/Orchard.Web/Modules/Orchard.Alias/Routes.cs src/Orchard.Web/Modules/Orchard.Alias/ViewModels/AdminIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Add.cshtml src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Delete.cshtml src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Edit.cshtml src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Alias/Web.config src/Orchard.Web/Modules/Orchard.AntiSpam/Drivers/ReCaptchaPartDriver.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Handlers/AkismetSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Handlers/ReCaptchaSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Handlers/TypePadSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Module.txt src/Orchard.Web/Modules/Orchard.AntiSpam/Orchard.AntiSpam.csproj src/Orchard.Web/Modules/Orchard.AntiSpam/ViewModels/ReCaptchaPartEditViewModel.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Views/EditorTemplates/Parts.ReCaptcha.Fields.cshtml src/Orchard.Web/Modules/Orchard.AntiSpam/Web.config src/Orchard.Web/Modules/Orchard.ArchiveLater/Handlers/ArchiveLaterPartHandler.cs src/Orchard.Web/Modules/Orchard.ArchiveLater/Handlers/UnpublishingTaskHandler.cs src/Orchard.Web/Modules/Orchard.ArchiveLater/Orchard.ArchiveLater.csproj src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs src/Orchard.Web/Modules/Orchard.Autoroute/Handlers/AutoroutePartHandler.cs src/Orchard.Web/Modules/Orchard.Autoroute/Migrations.cs src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePart.cs src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePartRecord.cs src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj src/Orchard.Web/Modules/Orchard.Autoroute/Providers/SlugTokens.cs src/Orchard.Web/Modules/Orchard.Autoroute/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/AliasResolverSelector.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/DefaultSlugService.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/IAutorouteService.cs src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettings.cs src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs src/Orchard.Web/Modules/Orchard.Autoroute/Settings/RoutePattern.cs src/Orchard.Web/Modules/Orchard.Autoroute/Styles/orchard-autoroute-settings.css src/Orchard.Web/Modules/Orchard.Autoroute/ViewModels/AutoroutePartEditViewModel.cs src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml src/Orchard.Web/Modules/Orchard.Autoroute/Views/EditorTemplates/Parts.Autoroute.Edit.cshtml src/Orchard.Web/Modules/Orchard.Autoroute/Web.config src/Orchard.Web/Modules/Orchard.Azure/Constants.cs src/Orchard.Web/Modules/Orchard.Azure/Orchard.Azure.csproj src/Orchard.Web/Modules/Orchard.Azure/Services/Environment/Configuration/AzureBlobShellSettingsManager.cs src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/Media/AzureBlobStorageProvider.cs src/Orchard.Web/Modules/Orchard.Azure/Web.config src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogPartDriver.cs src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogPostPartDriver.cs src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RemoteBlogPublishingDriver.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogArchivesPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartArchiveHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPostPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/RecentBlogPostsPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs src/Orchard.Web/Modules/Orchard.Blogs/Module.txt src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj src/Orchard.Web/Modules/Orchard.Blogs/Routing/ArchiveConstraint.CS src/Orchard.Web/Modules/Orchard.Blogs/Routing/RsdConstraint.CS src/Orchard.Web/Modules/Orchard.Blogs/Security/BlogAuthorizationEventHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogPostService.cs src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogService.cs src/Orchard.Web/Modules/Orchard.Blogs/Services/XmlRpcHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.cshtml src/Orchard.Web/Modules/Orchard.Blogs/Views/Parts.Blogs.BlogPost.ListAdmin.cshtml src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ModuleRootWebConfig.txt src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs src/Orchard.Web/Modules/Orchard.CodeGeneration/Orchard.CodeGeneration.csproj src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs src/Orchard.Web/Modules/Orchard.Comments/Feeds/CommentFeedItemBuilder.cs src/Orchard.Web/Modules/Orchard.Comments/Feeds/CommentedOnContainerFeedQuery.cs src/Orchard.Web/Modules/Orchard.Comments/Feeds/CommentedOnFeedQuery.cs src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentPartHandler.cs src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj src/Orchard.Web/Modules/Orchard.Comments/Services/CommentService.cs src/Orchard.Web/Modules/Orchard.Comments/Views/Parts.Comment.cshtml src/Orchard.Web/Modules/Orchard.Conditions/Providers/UrlCondition.cs src/Orchard.Web/Modules/Orchard.ContentPermissions/Drivers/ContentPermissionsPartDriver.cs src/Orchard.Web/Modules/Orchard.ContentPermissions/Orchard.ContentPermissions.csproj src/Orchard.Web/Modules/Orchard.ContentPermissions/Web.config src/Orchard.Web/Modules/Orchard.ContentPicker/Drivers/ContentMenuItemPartDriver.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Handlers/ContentMenuItemPartHandler.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Handlers/ContentPickerFieldHandler.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Handlers/NavigationPartHandler.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Orchard.ContentPicker.csproj src/Orchard.Web/Modules/Orchard.ContentPicker/Web.config src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.csproj src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.sln src/Orchard.Web/Modules/Orchard.ContentTypes/Services/ContentDefinitionService.cs src/Orchard.Web/Modules/Orchard.CustomForms/Module.txt src/Orchard.Web/Modules/Orchard.CustomForms/Orchard.CustomForms.csproj src/Orchard.Web/Modules/Orchard.CustomForms/Security/AuthorizationEventHandler.cs src/Orchard.Web/Modules/Orchard.CustomForms/Web.config src/Orchard.Web/Modules/Orchard.DesignerTools/Module.txt src/Orchard.Web/Modules/Orchard.DesignerTools/Orchard.DesignerTools.csproj src/Orchard.Web/Modules/Orchard.DesignerTools/Services/UrlAlternatesFactory.cs src/Orchard.Web/Modules/Orchard.DesignerTools/Web.config src/Orchard.Web/Modules/Orchard.Email/Handlers/SmtpSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPart.cs src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj src/Orchard.Web/Modules/Orchard.Email/Views/EditorTemplates/Parts/SmtpSettings.cshtml src/Orchard.Web/Modules/Orchard.Fields/Drivers/BooleanFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/DateTimeFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/EnumerationFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/InputFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Module.txt src/Orchard.Web/Modules/Orchard.Fields/Orchard.Fields.csproj src/Orchard.Web/Modules/Orchard.Fields/Web.config src/Orchard.Web/Modules/Orchard.Forms/Orchard.Forms.csproj src/Orchard.Web/Modules/Orchard.Forms/Web.config src/Orchard.Web/Modules/Orchard.ImageEditor/Orchard.ImageEditor.csproj src/Orchard.Web/Modules/Orchard.ImageEditor/Web.config src/Orchard.Web/Modules/Orchard.ImportExport/Commands/ImportExportCommands.cs src/Orchard.Web/Modules/Orchard.ImportExport/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.ImportExport/Models/ExportOptions.cs src/Orchard.Web/Modules/Orchard.ImportExport/Module.txt src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj src/Orchard.Web/Modules/Orchard.ImportExport/Services/ICustomExportStep.cs src/Orchard.Web/Modules/Orchard.ImportExport/Services/IExportEventHandler.cs src/Orchard.Web/Modules/Orchard.ImportExport/Services/IImportExportService.cs src/Orchard.Web/Modules/Orchard.ImportExport/Services/ImportExportService.cs src/Orchard.Web/Modules/Orchard.ImportExport/ViewModels/ExportViewModel.cs src/Orchard.Web/Modules/Orchard.ImportExport/ViewModels/ImportViewModel.cs src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/Export.cshtml src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/Import.cshtml src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/ImportResult.cshtml src/Orchard.Web/Modules/Orchard.Indexing/Commands/IndexingCommands.cs src/Orchard.Web/Modules/Orchard.Indexing/Migrations.cs src/Orchard.Web/Modules/Orchard.Indexing/Module.txt src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj src/Orchard.Web/Modules/Orchard.Indexing/Services/IndexingBackgroundTask.cs src/Orchard.Web/Modules/Orchard.Indexing/Services/IndexingTaskExecutor.cs src/Orchard.Web/Modules/Orchard.Indexing/Services/IndexingTaskManager.cs src/Orchard.Web/Modules/Orchard.Indexing/Settings/EditorEvents.cs src/Orchard.Web/Modules/Orchard.Indexing/Views/Admin/Create.cshtml src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj src/Orchard.Web/Modules/Orchard.Lists/Migrations.cs src/Orchard.Web/Modules/Orchard.Lists/Orchard.Lists.csproj src/Orchard.Web/Modules/Orchard.Lists/Web.config src/Orchard.Web/Modules/Orchard.Localization/Drivers/LocalizationPartDriver.cs src/Orchard.Web/Modules/Orchard.Localization/Handlers/LocalizationPartHandler.cs src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj src/Orchard.Web/Modules/Orchard.Media/Handlers/MediaSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Media/Module.txt src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj src/Orchard.Web/Modules/Orchard.Media/Services/MediaService.cs src/Orchard.Web/Modules/Orchard.Media/Services/XmlRpcHandler.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/ClientStorageController.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Factories/ImageFactory.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/MediaPartHandler.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/WebSearchSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Module.txt src/Orchard.Web/Modules/Orchard.MediaLibrary/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Import.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/ClientStorage/Index.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/EditorTemplates/Parts/WebSearch.WebSearchSettings.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Fields/MediaLibraryPicker.SummaryAdmin.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Fields/MediaLibraryPicker.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/WebSearch/Index.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config src/Orchard.Web/Modules/Orchard.MediaPicker/Handlers/MediaGalleryFieldHandler.cs src/Orchard.Web/Modules/Orchard.MediaPicker/Module.txt src/Orchard.Web/Modules/Orchard.MediaPicker/Orchard.MediaPicker.csproj src/Orchard.Web/Modules/Orchard.MediaProcessing/Handlers/ImageProfilePartHandler.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Orchard.MediaProcessing.csproj src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/IImageProfileManager.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileManager.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileService.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Web.config src/Orchard.Web/Modules/Orchard.Migrations/Orchard.Migrations.csproj src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Modules/Module.txt src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj src/Orchard.Web/Modules/Orchard.Modules/Recipes/Executors/FeatureStep.cs src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml src/Orchard.Web/Modules/Orchard.Modules/styles/orchard-modules-admin.css src/Orchard.Web/Modules/Orchard.MultiTenancy/Commands/TenantCommand.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Extensions/UrlHelperExtensions.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Module.txt src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj src/Orchard.Web/Modules/Orchard.MultiTenancy/Services/ITenantService.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Services/TenantService.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.OutputCache/Filters/OutputCacheFilter.cs src/Orchard.Web/Modules/Orchard.OutputCache/Handlers/CacheSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.OutputCache/Orchard.OutputCache.csproj src/Orchard.Web/Modules/Orchard.OutputCache/Services/DefaultCacheStorageProvider.cs src/Orchard.Web/Modules/Orchard.OutputCache/Web.config src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryUpdatesController.cs src/Orchard.Web/Modules/Orchard.Packaging/Controllers/PackagingServicesController.cs src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj src/Orchard.Web/Modules/Orchard.Pages/Commands/PageCommands.cs src/Orchard.Web/Modules/Orchard.Pages/Migrations.cs src/Orchard.Web/Modules/Orchard.Pages/Module.txt src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj src/Orchard.Web/Modules/Orchard.Projections/Controllers/LayoutController.cs src/Orchard.Web/Modules/Orchard.Projections/Drivers/ProjectionPartDriver.cs src/Orchard.Web/Modules/Orchard.Projections/Drivers/QueryPartDriver.cs src/Orchard.Web/Modules/Orchard.Projections/Migrations.cs src/Orchard.Web/Modules/Orchard.Projections/Orchard.Projections.csproj src/Orchard.Web/Modules/Orchard.Projections/Providers/Layouts/GridLayout.cs src/Orchard.Web/Modules/Orchard.Projections/Providers/Layouts/ListLayout.cs src/Orchard.Web/Modules/Orchard.Projections/Providers/Layouts/RawLayout.cs src/Orchard.Web/Modules/Orchard.Projections/Tests/Orchard.Projections.Tests.csproj src/Orchard.Web/Modules/Orchard.Projections/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Projections/Web.config src/Orchard.Web/Modules/Orchard.PublishLater/Drivers/PublishLaterPartDriver.cs src/Orchard.Web/Modules/Orchard.PublishLater/Handlers/PublishLaterPartHandler.cs src/Orchard.Web/Modules/Orchard.PublishLater/Handlers/PublishingTaskHandler.cs src/Orchard.Web/Modules/Orchard.PublishLater/Orchard.PublishLater.csproj src/Orchard.Web/Modules/Orchard.PublishLater/Services/PublishingTaskManager.cs src/Orchard.Web/Modules/Orchard.Recipes/Commands/RecipesCommands.cs src/Orchard.Web/Modules/Orchard.Recipes/Orchard.Recipes.csproj src/Orchard.Web/Modules/Orchard.Recipes/Providers/Executors/CommandStep.cs src/Orchard.Web/Modules/Orchard.Recipes/Providers/Executors/ModuleStep.cs src/Orchard.Web/Modules/Orchard.Recipes/Providers/Executors/SettingsStep.cs src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/DataRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MetaDataRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MigrationRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeHarvester.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeJournalManager.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeManager.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeParser.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeScheduler.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeStepExecutor.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeStepQueue.cs src/Orchard.Web/Modules/Orchard.Roles/DefaultRoleUpdater.cs src/Orchard.Web/Modules/Orchard.Roles/Drivers/UserRolesPartDriver.cs src/Orchard.Web/Modules/Orchard.Roles/Handlers/UserRolesPartHandler.cs src/Orchard.Web/Modules/Orchard.Roles/Module.txt src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs src/Orchard.Web/Modules/Orchard.Roles/Services/RolesBasedAuthorizationService.cs src/Orchard.Web/Modules/Orchard.Rules/Handlers/ScheduledActionTaskHandler.cs src/Orchard.Web/Modules/Orchard.Rules/Handlers/ScheduledActionTaskPartHandler.cs src/Orchard.Web/Modules/Orchard.Rules/ImportExport/RulesCustomExportStep.cs src/Orchard.Web/Modules/Orchard.Rules/ImportExport/RulesRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Rules/Module.txt src/Orchard.Web/Modules/Orchard.Rules/Orchard.Rules.csproj src/Orchard.Web/Modules/Orchard.Rules/Recipes/Builders/RulesStep.cs src/Orchard.Web/Modules/Orchard.Rules/Web.config src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Orchard.Scripting.CSharp.csproj src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Web.config src/Orchard.Web/Modules/Orchard.Search/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Search/Controllers/ContentPickerController.cs src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchFormPartDriver.cs src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs src/Orchard.Web/Modules/Orchard.Search/Handlers/SearchSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Search/Models/SearchFormPart.cs src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj src/Orchard.Web/Modules/Orchard.Search/Placement.info src/Orchard.Web/Modules/Orchard.Search/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.Search/Routes.cs src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-admin.css src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-search.css src/Orchard.Web/Modules/Orchard.Search/ViewModels/SearchSettingsIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Search/Views/EditorTemplates/Parts/Search.SiteSettings.cshtml src/Orchard.Web/Modules/Orchard.Search/Views/Parts/Search.SearchForm.cshtml src/Orchard.Web/Modules/Orchard.Setup/Commands/SetupCommand.cs src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupDatabaseType.cs src/Orchard.Web/Modules/Orchard.Setup/Module.txt src/Orchard.Web/Modules/Orchard.Setup/Orchard.Setup.csproj src/Orchard.Web/Modules/Orchard.Setup/Recipes/blog.recipe.xml src/Orchard.Web/Modules/Orchard.Setup/Recipes/core.recipe.xml src/Orchard.Web/Modules/Orchard.Setup/Recipes/default.recipe.xml src/Orchard.Web/Modules/Orchard.Setup/Routes.cs src/Orchard.Web/Modules/Orchard.Setup/Scripts/setup.js src/Orchard.Web/Modules/Orchard.Setup/Services/SetupContext.cs src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.cshtml src/Orchard.Web/Modules/Orchard.Tags/Drivers/TagsPartDriver.cs src/Orchard.Web/Modules/Orchard.Tags/Module.txt src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj src/Orchard.Web/Modules/Orchard.Tags/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.Tags/Services/TagService.cs src/Orchard.Web/Modules/Orchard.TaskLease/Migrations.cs src/Orchard.Web/Modules/Orchard.TaskLease/Models/TaskLeaseRecord.cs src/Orchard.Web/Modules/Orchard.TaskLease/Module.txt src/Orchard.Web/Modules/Orchard.TaskLease/Orchard.TaskLease.csproj src/Orchard.Web/Modules/Orchard.TaskLease/Services/ITaskLeaseService.cs src/Orchard.Web/Modules/Orchard.TaskLease/Services/TaskLeaseService.cs src/Orchard.Web/Modules/Orchard.TaskLease/Tests/Orchard.TaskLease.Tests/Orchard.TaskLease.Tests.csproj src/Orchard.Web/Modules/Orchard.TaskLease/Web.config src/Orchard.Web/Modules/Orchard.Taxonomies/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Controllers/TermAdminController.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyFieldDriver.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyPartDriver.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Handlers/TaxonomyPartHandler.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Handlers/TermsPartHandler.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Helpers/PathExtensions.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Migrations.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Models/TermContentItem.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Models/TermPart.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Models/TermsPart.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Navigation/TaxonomyNavigationProvider.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilterForms.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Scripts/admin-taxonomy-tags.js src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Shapes.cs src/Orchard.Web/Modules/Orchard.Taxonomies/StandardQueries/TermFeedQuery.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Styles/admin-taxonomy-tags.css src/Orchard.Web/Modules/Orchard.Taxonomies/ViewModels/TaxonomyAdminIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Taxonomies/ViewModels/TaxonomyFieldViewModel.cs src/Orchard.Web/Modules/Orchard.Taxonomies/ViewModels/TermAdminIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Admin/Import.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/DefinitionTemplates/TaxonomyFieldSettings.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/EditorTemplates/Fields/TaxonomyField.Autocomplete.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/EditorTemplates/Fields/TaxonomyField.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/EditorTemplates/Parts/Navigation.Taxonomy.Edit.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Fields/TaxonomyField.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Taxonomy.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TaxonomyItem.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/Index.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/Merge.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/MoveTerm.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/RenderTermSelect.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/SelectTerm.cshtml src/Orchard.Web/Modules/Orchard.Themes/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Themes/Handlers/ThemeSiteSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Themes/Module.txt src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj src/Orchard.Web/Modules/Orchard.Themes/Recipes/Executors/ThemeStep.cs src/Orchard.Web/Modules/Orchard.Themes/Services/IThemeService.cs src/Orchard.Web/Modules/Orchard.Themes/Services/SafeModeThemeSelector.cs src/Orchard.Web/Modules/Orchard.Themes/Services/SiteThemeSelector.cs src/Orchard.Web/Modules/Orchard.Themes/Services/ThemeService.cs src/Orchard.Web/Modules/Orchard.Tokens/Orchard.Tokens.csproj src/Orchard.Web/Modules/Orchard.Tokens/Styles/orchard-tokens-admin.css src/Orchard.Web/Modules/Orchard.Tokens/Tests/Orchard.Tokens.Tests.csproj src/Orchard.Web/Modules/Orchard.Tokens/Tests/StubWorkContextAccessor.cs src/Orchard.Web/Modules/Orchard.Tokens/Tests/TestTokenProvider.cs src/Orchard.Web/Modules/Orchard.Tokens/Views/TokenHint.cshtml src/Orchard.Web/Modules/Orchard.Tokens/Web.config src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Users/Handlers/RegistrationSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Users/Handlers/UserPartHandler.cs src/Orchard.Web/Modules/Orchard.Users/Migrations.cs src/Orchard.Web/Modules/Orchard.Users/Models/UserPart.cs src/Orchard.Web/Modules/Orchard.Users/Models/UserPartRecord.cs src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs src/Orchard.Web/Modules/Orchard.Users/Services/UserResolverSelector.cs src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs src/Orchard.Web/Modules/Orchard.Users/ViewModels/UsersIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailSent.cshtml src/Orchard.Web/Modules/Orchard.Users/Views/Account/RegistrationPending.cshtml src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Warmup/Handlers/WarmupSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Warmup/Orchard.Warmup.csproj src/Orchard.Web/Modules/Orchard.Warmup/Web.config src/Orchard.Web/Modules/Orchard.Widgets/Drivers/LayerPartDriver.cs src/Orchard.Web/Modules/Orchard.Widgets/Drivers/WidgetPartDriver.cs src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs src/Orchard.Web/Modules/Orchard.Widgets/Handlers/LayerPartHandler.cs src/Orchard.Web/Modules/Orchard.Widgets/Handlers/WidgetPartHandler.cs src/Orchard.Web/Modules/Orchard.Widgets/Models/WidgetPart.cs src/Orchard.Web/Modules/Orchard.Widgets/Module.txt src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/AuthenticatedRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/BuiltinRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/ContentDisplayedRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/IRuleManager.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/IRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/LayerResolverSelector.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/RuleContext.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/RuleManager.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/WidgetsService.cs src/Orchard.Web/Modules/Orchard.Widgets/Shapes.cs src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts.Widgets.WidgetPart.cshtml src/Orchard.Web/Modules/Orchard.Widgets/Views/WidgetPlacement.Orphans.cshtml src/Orchard.Web/Modules/Orchard.Workflows/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Workflows/ImportExport/WorkflowsCustomExportStep.cs src/Orchard.Web/Modules/Orchard.Workflows/ImportExport/WorkflowsRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Workflows/Module.txt src/Orchard.Web/Modules/Orchard.Workflows/Recipes/Builders/WorkflowsStep.cs src/Orchard.Web/Modules/Orchard.Workflows/Scripts/orchard-workflows-serialize.js src/Orchard.Web/Modules/Orchard.Workflows/Scripts/orchard-workflows.js src/Orchard.Web/Modules/Orchard.Workflows/Styles/orchard-workflows-admin.css src/Orchard.Web/Modules/Orchard.Workflows/Views/ActivityToolbox.cshtml src/Orchard.Web/Modules/Orchard.Workflows/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Workflows/Web.config src/Orchard.Web/Modules/Orchard.jQuery/Module.txt src/Orchard.Web/Modules/Orchard.jQuery/Orchard.jQuery.csproj src/Orchard.Web/Modules/SysCache/SysCache.csproj src/Orchard.Web/Modules/SysCache/Web.config src/Orchard.Web/Modules/TinyMce/Module.txt src/Orchard.Web/Modules/TinyMce/TinyMce.csproj src/Orchard.Web/Modules/Upgrade/Controllers/RouteController.cs src/Orchard.Web/Modules/Upgrade/Upgrade.csproj src/Orchard.Web/Modules/Upgrade/Web.config src/Orchard.Web/Orchard.Web.csproj src/Orchard.Web/Themes/TheAdmin/Scripts/admin.js src/Orchard.Web/Themes/TheAdmin/Styles/site.css src/Orchard.Web/Themes/TheAdmin/Views/User.cshtml src/Orchard.Web/Themes/Themes.csproj src/Orchard.Web/Themes/Web.config src/Orchard.Web/Web.config src/Orchard.sln src/Orchard/Commands/Builtin/HelpCommand.cs src/Orchard/Commands/CommandBackgroundService.cs.rej src/Orchard/Commands/CommandHostAgent.cs src/Orchard/ContentManagement/Aspects/ICommonPart.cs src/Orchard/ContentManagement/DataMigrations/FrameworkDataMigration.cs src/Orchard/ContentManagement/DefaultContentManager.cs src/Orchard/ContentManagement/Drivers/ContentFieldDriver.cs src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs src/Orchard/ContentManagement/Drivers/ContentShapeResult.cs src/Orchard/ContentManagement/Drivers/Coordinators/ContentFieldDriverCoordinator.cs src/Orchard/ContentManagement/Drivers/Coordinators/ContentPartDriverCoordinator.cs src/Orchard/ContentManagement/Drivers/IContentFieldDriver.cs src/Orchard/ContentManagement/Drivers/IContentPartDriver.cs src/Orchard/ContentManagement/Handlers/ContentHandler.cs src/Orchard/ContentManagement/Handlers/ContentHandlerBase.cs src/Orchard/ContentManagement/Handlers/IContentHandler.cs src/Orchard/ContentManagement/Handlers/IContentStorageFilter.cs src/Orchard/ContentManagement/Handlers/StorageFilter.cs src/Orchard/ContentManagement/Handlers/StorageFilterBase.cs src/Orchard/ContentManagement/Handlers/StorageVersionFilter.cs src/Orchard/ContentManagement/IContentManager.cs src/Orchard/ContentManagement/MetaData/Services/ContentDefinitionWriter.cs src/Orchard/ContentManagement/Utilities/LazyField.cs src/Orchard/Data/Migration/AutomaticDataMigrations.cs src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs src/Orchard/Data/Migration/Interpreters/IDataMigrationInterpreter.cs src/Orchard/Data/Migration/Interpreters/MySqlCommandInterpreter.cs src/Orchard/Data/Migration/Schema/AlterTableCommand.cs src/Orchard/Data/Migration/Schema/SchemaBuilder.cs src/Orchard/Data/Migration/Schema/SchemaCommand.cs src/Orchard/DisplayManagement/Descriptors/ResourceBindingStrategy/StylesheetBindingStrategy.cs src/Orchard/DisplayManagement/Shapes/ShapeMetadata.cs src/Orchard/Environment/Configuration/ShellSettingsManager.cs src/Orchard/Environment/Configuration/TenantState.cs src/Orchard/Environment/DefaultOrchardHost.cs src/Orchard/Environment/DefaultOrchardShell.cs src/Orchard/Environment/Descriptor/IShellDescriptorManager.cs src/Orchard/Environment/Extensions/ExtensionMonitoringCoordinator.cs src/Orchard/Environment/Extensions/Folders/ExtensionHarvester.cs src/Orchard/Environment/Extensions/IExtensionManager.cs src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs src/Orchard/Environment/Extensions/Loaders/RawThemeExtensionLoader.cs src/Orchard/Environment/Extensions/Models/ExtensionDescriptor.cs src/Orchard/Environment/Features/FeatureManager.cs src/Orchard/Environment/Features/IFeatureManager.cs src/Orchard/Environment/IOrchardHost.cs src/Orchard/Environment/OrchardServices.cs src/Orchard/Environment/OrchardStarter.cs src/Orchard/Environment/ShellBuilders/CompositionStrategy.cs src/Orchard/Environment/ShellBuilders/ShellContainerFactory.cs src/Orchard/Environment/ShellBuilders/ShellContextFactory.cs src/Orchard/Environment/State/DefaultProcessingEngine.cs src/Orchard/Environment/ViewsBackgroundCompilation.cs src/Orchard/Environment/WorkContextAccessor.cs src/Orchard/Environment/WorkContextImplementation.cs src/Orchard/Events/DelegateHelper.cs src/Orchard/FileSystems/Dependencies/DynamicModuleVirtualPathProvider.cs src/Orchard/FileSystems/Media/FileSystemStorageProvider.cs src/Orchard/Localization/Services/DefaultLocalizedStringManager.cs src/Orchard/Localization/Text.cs src/Orchard/Logging/OrchardLog4netLogger.cs src/Orchard/Mvc/AntiForgery/AntiForgeryAuthorizationFilter.cs src/Orchard/Mvc/Html/ContentItemExtensions.cs
2015-12-13 23:46:19 +01:00
var unordered = ((IEnumerable<dynamic>)Shape).ToArray();
var tabbed = unordered.GroupBy(x => (string)x.Metadata.Tab);
if (tabbed.Count() > 1) {
foreach (var tab in tabbed) {
var tabName = String.IsNullOrWhiteSpace(tab.Key) ? "Content" : tab.Key;
var tabBuilder = new TagBuilder("div");
tabBuilder.Attributes["id"] = "tab-" + tabName.HtmlClassify();
tabBuilder.Attributes["data-tab"] = tabName;
Output.Write(tabBuilder.ToString(TagRenderMode.StartTag));
foreach (var item in Order(tab))
Output.Write(Display(item));
Output.Write(tabBuilder.ToString(TagRenderMode.EndTag));
}
}
else {
foreach (var item in Order(unordered))
Output.Write(Display(item));
}
}
[Shape]
public void DocumentZone(dynamic Display, dynamic Shape, TextWriter Output) {
foreach (var item in Order(Shape))
Output.Write(Display(item));
}
public static IEnumerable<dynamic> Order(dynamic shape) {
IEnumerable<dynamic> unordered = shape;
if (unordered == null || unordered.Count() < 2)
return shape;
var i = 1;
var progress = 1;
var flatPositionComparer = new FlatPositionComparer();
var ordering = unordered.Select(item => {
string position = null;
var itemPosition = item as IPositioned;
if (itemPosition != null) {
position = itemPosition.Position;
}
return new { item, position };
}).ToList();
// since this isn't sticking around (hence, the "hack" in the name), throwing (in) a gnome
while (i < ordering.Count()) {
if (flatPositionComparer.Compare(ordering[i].position, ordering[i - 1].position) > -1) {
if (i == progress)
progress = ++i;
else
i = progress;
}
else {
var higherThanItShouldBe = ordering[i];
ordering[i] = ordering[i - 1];
ordering[i - 1] = higherThanItShouldBe;
if (i > 1)
--i;
}
}
return ordering.Select(ordered => ordered.item).ToList();
}
Merge branch 'refs/heads/1.9.x' into dev Conflicts: ClickToBuild.cmd Orchard.proj lib/msbuild/MSBuild.Community.Tasks.Targets lib/newtonsoft.json/Newtonsoft.Json.xml lib/windowsazure/Microsoft.WindowsAzure.Diagnostics.xml src/Orchard.Azure.Tests/Orchard.Azure.Tests.csproj src/Orchard.Azure/Orchard.Azure.Web/Config/Host.config src/Orchard.Azure/Orchard.Azure.Web/Config/HostComponents.config src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj src/Orchard.Azure/Orchard.Azure.Web/Web.config src/Orchard.Azure/Orchard.Azure.sln src/Orchard.Core.Tests/Body/BodyPartTests.cs src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs src/Orchard.Core.Tests/Orchard.Core.Tests.csproj src/Orchard.Profile/profiling-setup-commands.txt src/Orchard.Specs/Bindings/OrchardSiteFactory.cs src/Orchard.Specs/Blogs.feature src/Orchard.Specs/Blogs.feature.cs src/Orchard.Specs/Comments.feature src/Orchard.Specs/Comments.feature.cs src/Orchard.Specs/Hosting/Orchard.Web/Config/Host.config src/Orchard.Specs/Hosting/Orchard.Web/Web.config src/Orchard.Specs/Hosting/Simple.Web/Web.config src/Orchard.Specs/Lists.feature src/Orchard.Specs/Lists.feature.cs src/Orchard.Specs/Media.feature src/Orchard.Specs/Media.feature.cs src/Orchard.Specs/MultiTenancy.feature src/Orchard.Specs/MultiTenancy.feature.cs src/Orchard.Specs/Orchard.Specs.csproj src/Orchard.Specs/Pages.feature src/Orchard.Specs/Pages.feature.cs src/Orchard.Specs/PermissionModel.feature src/Orchard.Specs/PermissionModel.feature.cs src/Orchard.Specs/Setup.feature src/Orchard.Specs/Setup.feature.cs src/Orchard.Specs/Tags.feature src/Orchard.Specs/Tags.feature.cs src/Orchard.Specs/Users.feature src/Orchard.Specs/Users.feature.cs src/Orchard.Tests.Modules/Comments/Services/CommentServiceTests.cs src/Orchard.Tests.Modules/Conditions/Providers/UrlRuleConditionTest.cs src/Orchard.Tests.Modules/DatabaseEnabledTestsBase.cs src/Orchard.Tests.Modules/ImportExport/Services/ImportExportServiceTests.cs src/Orchard.Tests.Modules/Media/Services/MediaServiceTests.cs src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ModuleStepTest.cs src/Orchard.Tests.Modules/Recipes/RecipeHandlers/ThemeStepTest.cs src/Orchard.Tests.Modules/Recipes/Services/RecipeManagerTests.cs src/Orchard.Tests.Modules/Users/Controllers/AccountControllerTests.cs src/Orchard.Tests.Modules/Users/Services/MembershipServiceTests.cs src/Orchard.Tests.Modules/Widgets/WidgetsTests.cs src/Orchard.Tests/App.config src/Orchard.Tests/ContainerTestBase.cs src/Orchard.Tests/ContentManagement/ContentQueryTests.cs src/Orchard.Tests/ContentManagement/DefaultContentManagerTests.cs src/Orchard.Tests/ContentManagement/DynamicContentQueryTests.cs src/Orchard.Tests/ContentManagement/HqlExpressionTests.cs src/Orchard.Tests/DataMigration/SchemaBuilderTests.cs src/Orchard.Tests/DataMigration/Utilities/NullInterpreter.cs src/Orchard.Tests/DatabaseEnabledTestsBase.cs src/Orchard.Tests/DisplayManagement/DefaultDisplayManagerTests.cs src/Orchard.Tests/DisplayManagement/Descriptors/ShapeAttributeBindingStrategyTests.cs src/Orchard.Tests/Environment/DefaultOrchardHostTests.cs src/Orchard.Tests/Environment/Extensions/ExtensionLoaderCoordinatorTests.cs src/Orchard.Tests/Environment/Extensions/ExtensionManagerTests.cs src/Orchard.Tests/Environment/Loaders/DynamicExtensionLoaderTests.cs src/Orchard.Tests/Orchard.Framework.Tests.csproj src/Orchard.Tests/Stubs/StubReportsCoordinator.cs src/Orchard.Tests/Stubs/StubWorkContextAccessor.cs src/Orchard.Tests/Time/TimeZoneSelectorTests.cs src/Orchard.Web.Tests/Orchard.Web.Tests.csproj src/Orchard.Web/Config/Host.config src/Orchard.Web/Config/HostComponents.config src/Orchard.Web/Config/log4net.config src/Orchard.Web/Core/Common/DateEditor/DateEditorHandler.cs src/Orchard.Web/Core/Common/Drivers/BodyPartDriver.cs src/Orchard.Web/Core/Common/Drivers/IdentityPartDriver.cs src/Orchard.Web/Core/Common/Drivers/TextFieldDriver.cs src/Orchard.Web/Core/Common/Handlers/BodyPartHandler.cs src/Orchard.Web/Core/Common/Handlers/CommonPartHandler.cs src/Orchard.Web/Core/Common/Handlers/IdentityPartHandler.cs src/Orchard.Web/Core/Common/Migrations.cs src/Orchard.Web/Core/Common/Models/CommonPart.cs src/Orchard.Web/Core/Common/Models/CommonPartVersionRecord.cs src/Orchard.Web/Core/Common/Services/IdentifierResolverSelector.cs src/Orchard.Web/Core/Common/Utilities/LazyField.cs src/Orchard.Web/Core/Common/Views/CommonMetadataOwner.cshtml src/Orchard.Web/Core/Common/Views/Parts.Common.Metadata.SummaryAdmin.cshtml src/Orchard.Web/Core/Containers/Models/ContainerPart.cs src/Orchard.Web/Core/Containers/ViewModels/ContainerViewModel.cs src/Orchard.Web/Core/Containers/Views/EditorTemplates/ContainerWidget.cshtml src/Orchard.Web/Core/Contents/Controllers/ItemController.cs src/Orchard.Web/Core/Contents/Security/AuthorizationEventHandler.cs src/Orchard.Web/Core/Contents/Views/Admin/List.cshtml src/Orchard.Web/Core/Contents/Views/Content.Edit.cshtml src/Orchard.Web/Core/Dashboard/Views/Admin/Index.cshtml src/Orchard.Web/Core/Feeds/Rss/RssFeedBuilder.cs src/Orchard.Web/Core/Feeds/Services/FeedFilter.cs src/Orchard.Web/Core/Feeds/Services/FeedManager.cs src/Orchard.Web/Core/Feeds/StandardBuilders/CorePartsFeedItemBuilder.cs src/Orchard.Web/Core/Feeds/StandardQueries/ContainerFeedQuery.cs src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs src/Orchard.Web/Core/Navigation/Drivers/AdminMenuPartDriver.cs src/Orchard.Web/Core/Navigation/Drivers/MenuItemPartDriver.cs src/Orchard.Web/Core/Navigation/Drivers/MenuPartDriver.cs src/Orchard.Web/Core/Navigation/Handlers/AdminMenuPartHandler.cs src/Orchard.Web/Core/Navigation/Handlers/MenuHandler.cs src/Orchard.Web/Core/Navigation/Handlers/MenuPartHandler.cs src/Orchard.Web/Core/Navigation/Scripts/navigation-admin.js src/Orchard.Web/Core/Navigation/Services/AdminMenuNavigationProvider.cs src/Orchard.Web/Core/Navigation/Services/MainMenuService.cs src/Orchard.Web/Core/Navigation/Services/NavigationManager.cs src/Orchard.Web/Core/Navigation/Styles/navigation-admin.css src/Orchard.Web/Core/Navigation/Views/Admin/Index.cshtml src/Orchard.Web/Core/Navigation/Views/MenuItem.Edit.cshtml src/Orchard.Web/Core/Orchard.Core.csproj src/Orchard.Web/Core/Scheduling/Services/ScheduledTaskExecutor.cs src/Orchard.Web/Core/Scheduling/Services/ScheduledTaskManager.cs src/Orchard.Web/Core/Settings/Drivers/SiteSettingsPartDriver.cs src/Orchard.Web/Core/Settings/Handlers/SiteSettingsPartHandler.cs src/Orchard.Web/Core/Settings/Migrations.cs src/Orchard.Web/Core/Settings/Services/SiteService.cs src/Orchard.Web/Core/Settings/State/ShellStateManager.cs src/Orchard.Web/Core/Shapes/CoreShapes.cs src/Orchard.Web/Core/Shapes/DateTimeShapes.cs src/Orchard.Web/Core/Shapes/ResourceManifest.cs src/Orchard.Web/Core/Shapes/Scripts/base.js src/Orchard.Web/Modules/Lucene/Lucene.csproj src/Orchard.Web/Modules/Markdown/Markdown.csproj src/Orchard.Web/Modules/Orchard.Alias/AdminMenu.cs src/Orchard.Web/Modules/Orchard.Alias/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Alias/IAliasService.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/AliasRoute.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/DefaultAliasService.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/AliasInfo.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Holder/IAliasHolder.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Map/AliasMap.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Storage/AliasStorage.cs src/Orchard.Web/Modules/Orchard.Alias/Implementation/Utils.cs src/Orchard.Web/Modules/Orchard.Alias/Migrations.cs src/Orchard.Web/Modules/Orchard.Alias/Orchard.Alias.csproj src/Orchard.Web/Modules/Orchard.Alias/Records/AliasRecord.cs src/Orchard.Web/Modules/Orchard.Alias/Routes.cs src/Orchard.Web/Modules/Orchard.Alias/ViewModels/AdminIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Add.cshtml src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Delete.cshtml src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Edit.cshtml src/Orchard.Web/Modules/Orchard.Alias/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Alias/Web.config src/Orchard.Web/Modules/Orchard.AntiSpam/Drivers/ReCaptchaPartDriver.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Handlers/AkismetSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Handlers/ReCaptchaSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Handlers/TypePadSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Module.txt src/Orchard.Web/Modules/Orchard.AntiSpam/Orchard.AntiSpam.csproj src/Orchard.Web/Modules/Orchard.AntiSpam/ViewModels/ReCaptchaPartEditViewModel.cs src/Orchard.Web/Modules/Orchard.AntiSpam/Views/EditorTemplates/Parts.ReCaptcha.Fields.cshtml src/Orchard.Web/Modules/Orchard.AntiSpam/Web.config src/Orchard.Web/Modules/Orchard.ArchiveLater/Handlers/ArchiveLaterPartHandler.cs src/Orchard.Web/Modules/Orchard.ArchiveLater/Handlers/UnpublishingTaskHandler.cs src/Orchard.Web/Modules/Orchard.ArchiveLater/Orchard.ArchiveLater.csproj src/Orchard.Web/Modules/Orchard.Autoroute/Drivers/AutoroutePartDriver.cs src/Orchard.Web/Modules/Orchard.Autoroute/Handlers/AutoroutePartHandler.cs src/Orchard.Web/Modules/Orchard.Autoroute/Migrations.cs src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePart.cs src/Orchard.Web/Modules/Orchard.Autoroute/Models/AutoroutePartRecord.cs src/Orchard.Web/Modules/Orchard.Autoroute/Orchard.Autoroute.csproj src/Orchard.Web/Modules/Orchard.Autoroute/Providers/SlugTokens.cs src/Orchard.Web/Modules/Orchard.Autoroute/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/AliasResolverSelector.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/AutorouteService.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/DefaultSlugService.cs src/Orchard.Web/Modules/Orchard.Autoroute/Services/IAutorouteService.cs src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettings.cs src/Orchard.Web/Modules/Orchard.Autoroute/Settings/AutorouteSettingsEvents.cs src/Orchard.Web/Modules/Orchard.Autoroute/Settings/RoutePattern.cs src/Orchard.Web/Modules/Orchard.Autoroute/Styles/orchard-autoroute-settings.css src/Orchard.Web/Modules/Orchard.Autoroute/ViewModels/AutoroutePartEditViewModel.cs src/Orchard.Web/Modules/Orchard.Autoroute/Views/DefinitionTemplates/AutorouteSettings.cshtml src/Orchard.Web/Modules/Orchard.Autoroute/Views/EditorTemplates/Parts.Autoroute.Edit.cshtml src/Orchard.Web/Modules/Orchard.Autoroute/Web.config src/Orchard.Web/Modules/Orchard.Azure/Constants.cs src/Orchard.Web/Modules/Orchard.Azure/Orchard.Azure.csproj src/Orchard.Web/Modules/Orchard.Azure/Services/Environment/Configuration/AzureBlobShellSettingsManager.cs src/Orchard.Web/Modules/Orchard.Azure/Services/FileSystems/Media/AzureBlobStorageProvider.cs src/Orchard.Web/Modules/Orchard.Azure/Web.config src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogPartDriver.cs src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogPostPartDriver.cs src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RemoteBlogPublishingDriver.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogArchivesPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartArchiveHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPostPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Handlers/RecentBlogPostsPartHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs src/Orchard.Web/Modules/Orchard.Blogs/Module.txt src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj src/Orchard.Web/Modules/Orchard.Blogs/Routing/ArchiveConstraint.CS src/Orchard.Web/Modules/Orchard.Blogs/Routing/RsdConstraint.CS src/Orchard.Web/Modules/Orchard.Blogs/Security/BlogAuthorizationEventHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogPostService.cs src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogService.cs src/Orchard.Web/Modules/Orchard.Blogs/Services/XmlRpcHandler.cs src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/List.cshtml src/Orchard.Web/Modules/Orchard.Blogs/Views/Parts.Blogs.BlogPost.ListAdmin.cshtml src/Orchard.Web/Modules/Orchard.CodeGeneration/CodeGenerationTemplates/ModuleRootWebConfig.txt src/Orchard.Web/Modules/Orchard.CodeGeneration/Commands/CodeGenerationCommands.cs src/Orchard.Web/Modules/Orchard.CodeGeneration/Orchard.CodeGeneration.csproj src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentPartDriver.cs src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsContainerPartDriver.cs src/Orchard.Web/Modules/Orchard.Comments/Drivers/CommentsPartDriver.cs src/Orchard.Web/Modules/Orchard.Comments/Feeds/CommentFeedItemBuilder.cs src/Orchard.Web/Modules/Orchard.Comments/Feeds/CommentedOnContainerFeedQuery.cs src/Orchard.Web/Modules/Orchard.Comments/Feeds/CommentedOnFeedQuery.cs src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentPartHandler.cs src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Comments/Handlers/CommentsPartHandler.cs src/Orchard.Web/Modules/Orchard.Comments/Orchard.Comments.csproj src/Orchard.Web/Modules/Orchard.Comments/Services/CommentService.cs src/Orchard.Web/Modules/Orchard.Comments/Views/Parts.Comment.cshtml src/Orchard.Web/Modules/Orchard.Conditions/Providers/UrlCondition.cs src/Orchard.Web/Modules/Orchard.ContentPermissions/Drivers/ContentPermissionsPartDriver.cs src/Orchard.Web/Modules/Orchard.ContentPermissions/Orchard.ContentPermissions.csproj src/Orchard.Web/Modules/Orchard.ContentPermissions/Web.config src/Orchard.Web/Modules/Orchard.ContentPicker/Drivers/ContentMenuItemPartDriver.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Handlers/ContentMenuItemPartHandler.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Handlers/ContentPickerFieldHandler.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Handlers/NavigationPartHandler.cs src/Orchard.Web/Modules/Orchard.ContentPicker/Orchard.ContentPicker.csproj src/Orchard.Web/Modules/Orchard.ContentPicker/Web.config src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.csproj src/Orchard.Web/Modules/Orchard.ContentTypes/Orchard.ContentTypes.sln src/Orchard.Web/Modules/Orchard.ContentTypes/Services/ContentDefinitionService.cs src/Orchard.Web/Modules/Orchard.CustomForms/Module.txt src/Orchard.Web/Modules/Orchard.CustomForms/Orchard.CustomForms.csproj src/Orchard.Web/Modules/Orchard.CustomForms/Security/AuthorizationEventHandler.cs src/Orchard.Web/Modules/Orchard.CustomForms/Web.config src/Orchard.Web/Modules/Orchard.DesignerTools/Module.txt src/Orchard.Web/Modules/Orchard.DesignerTools/Orchard.DesignerTools.csproj src/Orchard.Web/Modules/Orchard.DesignerTools/Services/UrlAlternatesFactory.cs src/Orchard.Web/Modules/Orchard.DesignerTools/Web.config src/Orchard.Web/Modules/Orchard.Email/Handlers/SmtpSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Email/Models/SmtpSettingsPart.cs src/Orchard.Web/Modules/Orchard.Email/Orchard.Email.csproj src/Orchard.Web/Modules/Orchard.Email/Views/EditorTemplates/Parts/SmtpSettings.cshtml src/Orchard.Web/Modules/Orchard.Fields/Drivers/BooleanFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/DateTimeFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/EnumerationFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/InputFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/LinkFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Drivers/NumericFieldDriver.cs src/Orchard.Web/Modules/Orchard.Fields/Module.txt src/Orchard.Web/Modules/Orchard.Fields/Orchard.Fields.csproj src/Orchard.Web/Modules/Orchard.Fields/Web.config src/Orchard.Web/Modules/Orchard.Forms/Orchard.Forms.csproj src/Orchard.Web/Modules/Orchard.Forms/Web.config src/Orchard.Web/Modules/Orchard.ImageEditor/Orchard.ImageEditor.csproj src/Orchard.Web/Modules/Orchard.ImageEditor/Web.config src/Orchard.Web/Modules/Orchard.ImportExport/Commands/ImportExportCommands.cs src/Orchard.Web/Modules/Orchard.ImportExport/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.ImportExport/Models/ExportOptions.cs src/Orchard.Web/Modules/Orchard.ImportExport/Module.txt src/Orchard.Web/Modules/Orchard.ImportExport/Orchard.ImportExport.csproj src/Orchard.Web/Modules/Orchard.ImportExport/Services/ICustomExportStep.cs src/Orchard.Web/Modules/Orchard.ImportExport/Services/IExportEventHandler.cs src/Orchard.Web/Modules/Orchard.ImportExport/Services/IImportExportService.cs src/Orchard.Web/Modules/Orchard.ImportExport/Services/ImportExportService.cs src/Orchard.Web/Modules/Orchard.ImportExport/ViewModels/ExportViewModel.cs src/Orchard.Web/Modules/Orchard.ImportExport/ViewModels/ImportViewModel.cs src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/Export.cshtml src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/Import.cshtml src/Orchard.Web/Modules/Orchard.ImportExport/Views/Admin/ImportResult.cshtml src/Orchard.Web/Modules/Orchard.Indexing/Commands/IndexingCommands.cs src/Orchard.Web/Modules/Orchard.Indexing/Migrations.cs src/Orchard.Web/Modules/Orchard.Indexing/Module.txt src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj src/Orchard.Web/Modules/Orchard.Indexing/Services/IndexingBackgroundTask.cs src/Orchard.Web/Modules/Orchard.Indexing/Services/IndexingTaskExecutor.cs src/Orchard.Web/Modules/Orchard.Indexing/Services/IndexingTaskManager.cs src/Orchard.Web/Modules/Orchard.Indexing/Settings/EditorEvents.cs src/Orchard.Web/Modules/Orchard.Indexing/Views/Admin/Create.cshtml src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj src/Orchard.Web/Modules/Orchard.Lists/Migrations.cs src/Orchard.Web/Modules/Orchard.Lists/Orchard.Lists.csproj src/Orchard.Web/Modules/Orchard.Lists/Web.config src/Orchard.Web/Modules/Orchard.Localization/Drivers/LocalizationPartDriver.cs src/Orchard.Web/Modules/Orchard.Localization/Handlers/LocalizationPartHandler.cs src/Orchard.Web/Modules/Orchard.Localization/Orchard.Localization.csproj src/Orchard.Web/Modules/Orchard.Media/Handlers/MediaSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Media/Module.txt src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj src/Orchard.Web/Modules/Orchard.Media/Services/MediaService.cs src/Orchard.Web/Modules/Orchard.Media/Services/XmlRpcHandler.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Controllers/ClientStorageController.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Factories/ImageFactory.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/MediaPartHandler.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Handlers/WebSearchSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Module.txt src/Orchard.Web/Modules/Orchard.MediaLibrary/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Import.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/ClientStorage/Index.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/EditorTemplates/Parts/WebSearch.WebSearchSettings.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Fields/MediaLibraryPicker.SummaryAdmin.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/Fields/MediaLibraryPicker.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Views/WebSearch/Index.cshtml src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config src/Orchard.Web/Modules/Orchard.MediaPicker/Handlers/MediaGalleryFieldHandler.cs src/Orchard.Web/Modules/Orchard.MediaPicker/Module.txt src/Orchard.Web/Modules/Orchard.MediaPicker/Orchard.MediaPicker.csproj src/Orchard.Web/Modules/Orchard.MediaProcessing/Handlers/ImageProfilePartHandler.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Orchard.MediaProcessing.csproj src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/IImageProfileManager.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileManager.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Services/ImageProfileService.cs src/Orchard.Web/Modules/Orchard.MediaProcessing/Web.config src/Orchard.Web/Modules/Orchard.Migrations/Orchard.Migrations.csproj src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Modules/Module.txt src/Orchard.Web/Modules/Orchard.Modules/Orchard.Modules.csproj src/Orchard.Web/Modules/Orchard.Modules/Recipes/Executors/FeatureStep.cs src/Orchard.Web/Modules/Orchard.Modules/Views/Admin/Features.cshtml src/Orchard.Web/Modules/Orchard.Modules/styles/orchard-modules-admin.css src/Orchard.Web/Modules/Orchard.MultiTenancy/Commands/TenantCommand.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Extensions/UrlHelperExtensions.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Module.txt src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj src/Orchard.Web/Modules/Orchard.MultiTenancy/Services/ITenantService.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Services/TenantService.cs src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.cshtml src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.OutputCache/Filters/OutputCacheFilter.cs src/Orchard.Web/Modules/Orchard.OutputCache/Handlers/CacheSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.OutputCache/Orchard.OutputCache.csproj src/Orchard.Web/Modules/Orchard.OutputCache/Services/DefaultCacheStorageProvider.cs src/Orchard.Web/Modules/Orchard.OutputCache/Web.config src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryUpdatesController.cs src/Orchard.Web/Modules/Orchard.Packaging/Controllers/PackagingServicesController.cs src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj src/Orchard.Web/Modules/Orchard.Pages/Commands/PageCommands.cs src/Orchard.Web/Modules/Orchard.Pages/Migrations.cs src/Orchard.Web/Modules/Orchard.Pages/Module.txt src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj src/Orchard.Web/Modules/Orchard.Projections/Controllers/LayoutController.cs src/Orchard.Web/Modules/Orchard.Projections/Drivers/ProjectionPartDriver.cs src/Orchard.Web/Modules/Orchard.Projections/Drivers/QueryPartDriver.cs src/Orchard.Web/Modules/Orchard.Projections/Migrations.cs src/Orchard.Web/Modules/Orchard.Projections/Orchard.Projections.csproj src/Orchard.Web/Modules/Orchard.Projections/Providers/Layouts/GridLayout.cs src/Orchard.Web/Modules/Orchard.Projections/Providers/Layouts/ListLayout.cs src/Orchard.Web/Modules/Orchard.Projections/Providers/Layouts/RawLayout.cs src/Orchard.Web/Modules/Orchard.Projections/Tests/Orchard.Projections.Tests.csproj src/Orchard.Web/Modules/Orchard.Projections/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Projections/Web.config src/Orchard.Web/Modules/Orchard.PublishLater/Drivers/PublishLaterPartDriver.cs src/Orchard.Web/Modules/Orchard.PublishLater/Handlers/PublishLaterPartHandler.cs src/Orchard.Web/Modules/Orchard.PublishLater/Handlers/PublishingTaskHandler.cs src/Orchard.Web/Modules/Orchard.PublishLater/Orchard.PublishLater.csproj src/Orchard.Web/Modules/Orchard.PublishLater/Services/PublishingTaskManager.cs src/Orchard.Web/Modules/Orchard.Recipes/Commands/RecipesCommands.cs src/Orchard.Web/Modules/Orchard.Recipes/Orchard.Recipes.csproj src/Orchard.Web/Modules/Orchard.Recipes/Providers/Executors/CommandStep.cs src/Orchard.Web/Modules/Orchard.Recipes/Providers/Executors/ModuleStep.cs src/Orchard.Web/Modules/Orchard.Recipes/Providers/Executors/SettingsStep.cs src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/DataRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MetaDataRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Recipes/RecipeHandlers/MigrationRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeHarvester.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeJournalManager.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeManager.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeParser.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeScheduler.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeStepExecutor.cs src/Orchard.Web/Modules/Orchard.Recipes/Services/RecipeStepQueue.cs src/Orchard.Web/Modules/Orchard.Roles/DefaultRoleUpdater.cs src/Orchard.Web/Modules/Orchard.Roles/Drivers/UserRolesPartDriver.cs src/Orchard.Web/Modules/Orchard.Roles/Handlers/UserRolesPartHandler.cs src/Orchard.Web/Modules/Orchard.Roles/Module.txt src/Orchard.Web/Modules/Orchard.Roles/Orchard.Roles.csproj src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs src/Orchard.Web/Modules/Orchard.Roles/Services/RolesBasedAuthorizationService.cs src/Orchard.Web/Modules/Orchard.Rules/Handlers/ScheduledActionTaskHandler.cs src/Orchard.Web/Modules/Orchard.Rules/Handlers/ScheduledActionTaskPartHandler.cs src/Orchard.Web/Modules/Orchard.Rules/ImportExport/RulesCustomExportStep.cs src/Orchard.Web/Modules/Orchard.Rules/ImportExport/RulesRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Rules/Module.txt src/Orchard.Web/Modules/Orchard.Rules/Orchard.Rules.csproj src/Orchard.Web/Modules/Orchard.Rules/Recipes/Builders/RulesStep.cs src/Orchard.Web/Modules/Orchard.Rules/Web.config src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Orchard.Scripting.CSharp.csproj src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Web.config src/Orchard.Web/Modules/Orchard.Search/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Search/Controllers/ContentPickerController.cs src/Orchard.Web/Modules/Orchard.Search/Controllers/SearchController.cs src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchFormPartDriver.cs src/Orchard.Web/Modules/Orchard.Search/Drivers/SearchSettingsPartDriver.cs src/Orchard.Web/Modules/Orchard.Search/Handlers/SearchSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Search/Models/SearchFormPart.cs src/Orchard.Web/Modules/Orchard.Search/Orchard.Search.csproj src/Orchard.Web/Modules/Orchard.Search/Placement.info src/Orchard.Web/Modules/Orchard.Search/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.Search/Routes.cs src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-admin.css src/Orchard.Web/Modules/Orchard.Search/Styles/orchard-search-search.css src/Orchard.Web/Modules/Orchard.Search/ViewModels/SearchSettingsIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Search/Views/EditorTemplates/Parts/Search.SiteSettings.cshtml src/Orchard.Web/Modules/Orchard.Search/Views/Parts/Search.SearchForm.cshtml src/Orchard.Web/Modules/Orchard.Setup/Commands/SetupCommand.cs src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupDatabaseType.cs src/Orchard.Web/Modules/Orchard.Setup/Module.txt src/Orchard.Web/Modules/Orchard.Setup/Orchard.Setup.csproj src/Orchard.Web/Modules/Orchard.Setup/Recipes/blog.recipe.xml src/Orchard.Web/Modules/Orchard.Setup/Recipes/core.recipe.xml src/Orchard.Web/Modules/Orchard.Setup/Recipes/default.recipe.xml src/Orchard.Web/Modules/Orchard.Setup/Routes.cs src/Orchard.Web/Modules/Orchard.Setup/Scripts/setup.js src/Orchard.Web/Modules/Orchard.Setup/Services/SetupContext.cs src/Orchard.Web/Modules/Orchard.Setup/Services/SetupService.cs src/Orchard.Web/Modules/Orchard.Setup/SetupMode.cs src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.cshtml src/Orchard.Web/Modules/Orchard.Tags/Drivers/TagsPartDriver.cs src/Orchard.Web/Modules/Orchard.Tags/Module.txt src/Orchard.Web/Modules/Orchard.Tags/Orchard.Tags.csproj src/Orchard.Web/Modules/Orchard.Tags/ResourceManifest.cs src/Orchard.Web/Modules/Orchard.Tags/Services/TagService.cs src/Orchard.Web/Modules/Orchard.TaskLease/Migrations.cs src/Orchard.Web/Modules/Orchard.TaskLease/Models/TaskLeaseRecord.cs src/Orchard.Web/Modules/Orchard.TaskLease/Module.txt src/Orchard.Web/Modules/Orchard.TaskLease/Orchard.TaskLease.csproj src/Orchard.Web/Modules/Orchard.TaskLease/Services/ITaskLeaseService.cs src/Orchard.Web/Modules/Orchard.TaskLease/Services/TaskLeaseService.cs src/Orchard.Web/Modules/Orchard.TaskLease/Tests/Orchard.TaskLease.Tests/Orchard.TaskLease.Tests.csproj src/Orchard.Web/Modules/Orchard.TaskLease/Web.config src/Orchard.Web/Modules/Orchard.Taxonomies/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Controllers/TermAdminController.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyFieldDriver.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Drivers/TaxonomyPartDriver.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Handlers/TaxonomyPartHandler.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Handlers/TermsPartHandler.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Helpers/PathExtensions.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Migrations.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Models/TermContentItem.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Models/TermPart.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Models/TermsPart.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Navigation/TaxonomyNavigationProvider.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilter.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Projections/TermsFilterForms.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Scripts/admin-taxonomy-tags.js src/Orchard.Web/Modules/Orchard.Taxonomies/Services/ITaxonomyService.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Services/TaxonomyService.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Shapes.cs src/Orchard.Web/Modules/Orchard.Taxonomies/StandardQueries/TermFeedQuery.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Styles/admin-taxonomy-tags.css src/Orchard.Web/Modules/Orchard.Taxonomies/ViewModels/TaxonomyAdminIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Taxonomies/ViewModels/TaxonomyFieldViewModel.cs src/Orchard.Web/Modules/Orchard.Taxonomies/ViewModels/TermAdminIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Admin/Import.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/DefinitionTemplates/TaxonomyFieldSettings.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/EditorTemplates/Fields/TaxonomyField.Autocomplete.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/EditorTemplates/Fields/TaxonomyField.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/EditorTemplates/Parts/Navigation.Taxonomy.Edit.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Fields/TaxonomyField.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/Taxonomy.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TaxonomyItem.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/Index.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/Merge.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/MoveTerm.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/RenderTermSelect.cshtml src/Orchard.Web/Modules/Orchard.Taxonomies/Views/TermAdmin/SelectTerm.cshtml src/Orchard.Web/Modules/Orchard.Themes/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Themes/Handlers/ThemeSiteSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Themes/Module.txt src/Orchard.Web/Modules/Orchard.Themes/Orchard.Themes.csproj src/Orchard.Web/Modules/Orchard.Themes/Recipes/Executors/ThemeStep.cs src/Orchard.Web/Modules/Orchard.Themes/Services/IThemeService.cs src/Orchard.Web/Modules/Orchard.Themes/Services/SafeModeThemeSelector.cs src/Orchard.Web/Modules/Orchard.Themes/Services/SiteThemeSelector.cs src/Orchard.Web/Modules/Orchard.Themes/Services/ThemeService.cs src/Orchard.Web/Modules/Orchard.Tokens/Orchard.Tokens.csproj src/Orchard.Web/Modules/Orchard.Tokens/Styles/orchard-tokens-admin.css src/Orchard.Web/Modules/Orchard.Tokens/Tests/Orchard.Tokens.Tests.csproj src/Orchard.Web/Modules/Orchard.Tokens/Tests/StubWorkContextAccessor.cs src/Orchard.Web/Modules/Orchard.Tokens/Tests/TestTokenProvider.cs src/Orchard.Web/Modules/Orchard.Tokens/Views/TokenHint.cshtml src/Orchard.Web/Modules/Orchard.Tokens/Web.config src/Orchard.Web/Modules/Orchard.Users/Controllers/AccountController.cs src/Orchard.Web/Modules/Orchard.Users/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Users/Handlers/RegistrationSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Users/Handlers/UserPartHandler.cs src/Orchard.Web/Modules/Orchard.Users/Migrations.cs src/Orchard.Web/Modules/Orchard.Users/Models/UserPart.cs src/Orchard.Web/Modules/Orchard.Users/Models/UserPartRecord.cs src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj src/Orchard.Web/Modules/Orchard.Users/Services/MembershipService.cs src/Orchard.Web/Modules/Orchard.Users/Services/UserResolverSelector.cs src/Orchard.Web/Modules/Orchard.Users/Services/UserService.cs src/Orchard.Web/Modules/Orchard.Users/ViewModels/UsersIndexViewModel.cs src/Orchard.Web/Modules/Orchard.Users/Views/Account/ChallengeEmailSent.cshtml src/Orchard.Web/Modules/Orchard.Users/Views/Account/RegistrationPending.cshtml src/Orchard.Web/Modules/Orchard.Users/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Warmup/Handlers/WarmupSettingsPartHandler.cs src/Orchard.Web/Modules/Orchard.Warmup/Orchard.Warmup.csproj src/Orchard.Web/Modules/Orchard.Warmup/Web.config src/Orchard.Web/Modules/Orchard.Widgets/Drivers/LayerPartDriver.cs src/Orchard.Web/Modules/Orchard.Widgets/Drivers/WidgetPartDriver.cs src/Orchard.Web/Modules/Orchard.Widgets/Filters/WidgetFilter.cs src/Orchard.Web/Modules/Orchard.Widgets/Handlers/LayerPartHandler.cs src/Orchard.Web/Modules/Orchard.Widgets/Handlers/WidgetPartHandler.cs src/Orchard.Web/Modules/Orchard.Widgets/Models/WidgetPart.cs src/Orchard.Web/Modules/Orchard.Widgets/Module.txt src/Orchard.Web/Modules/Orchard.Widgets/Orchard.Widgets.csproj src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/AuthenticatedRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/BuiltinRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/RuleEngine/ContentDisplayedRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/IRuleManager.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/IRuleProvider.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/LayerResolverSelector.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/RuleContext.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/RuleManager.cs src/Orchard.Web/Modules/Orchard.Widgets/Services/WidgetsService.cs src/Orchard.Web/Modules/Orchard.Widgets/Shapes.cs src/Orchard.Web/Modules/Orchard.Widgets/Views/EditorTemplates/Parts.Widgets.WidgetPart.cshtml src/Orchard.Web/Modules/Orchard.Widgets/Views/WidgetPlacement.Orphans.cshtml src/Orchard.Web/Modules/Orchard.Workflows/Controllers/AdminController.cs src/Orchard.Web/Modules/Orchard.Workflows/ImportExport/WorkflowsCustomExportStep.cs src/Orchard.Web/Modules/Orchard.Workflows/ImportExport/WorkflowsRecipeHandler.cs src/Orchard.Web/Modules/Orchard.Workflows/Module.txt src/Orchard.Web/Modules/Orchard.Workflows/Recipes/Builders/WorkflowsStep.cs src/Orchard.Web/Modules/Orchard.Workflows/Scripts/orchard-workflows-serialize.js src/Orchard.Web/Modules/Orchard.Workflows/Scripts/orchard-workflows.js src/Orchard.Web/Modules/Orchard.Workflows/Styles/orchard-workflows-admin.css src/Orchard.Web/Modules/Orchard.Workflows/Views/ActivityToolbox.cshtml src/Orchard.Web/Modules/Orchard.Workflows/Views/Admin/Index.cshtml src/Orchard.Web/Modules/Orchard.Workflows/Web.config src/Orchard.Web/Modules/Orchard.jQuery/Module.txt src/Orchard.Web/Modules/Orchard.jQuery/Orchard.jQuery.csproj src/Orchard.Web/Modules/SysCache/SysCache.csproj src/Orchard.Web/Modules/SysCache/Web.config src/Orchard.Web/Modules/TinyMce/Module.txt src/Orchard.Web/Modules/TinyMce/TinyMce.csproj src/Orchard.Web/Modules/Upgrade/Controllers/RouteController.cs src/Orchard.Web/Modules/Upgrade/Upgrade.csproj src/Orchard.Web/Modules/Upgrade/Web.config src/Orchard.Web/Orchard.Web.csproj src/Orchard.Web/Themes/TheAdmin/Scripts/admin.js src/Orchard.Web/Themes/TheAdmin/Styles/site.css src/Orchard.Web/Themes/TheAdmin/Views/User.cshtml src/Orchard.Web/Themes/Themes.csproj src/Orchard.Web/Themes/Web.config src/Orchard.Web/Web.config src/Orchard.sln src/Orchard/Commands/Builtin/HelpCommand.cs src/Orchard/Commands/CommandBackgroundService.cs.rej src/Orchard/Commands/CommandHostAgent.cs src/Orchard/ContentManagement/Aspects/ICommonPart.cs src/Orchard/ContentManagement/DataMigrations/FrameworkDataMigration.cs src/Orchard/ContentManagement/DefaultContentManager.cs src/Orchard/ContentManagement/Drivers/ContentFieldDriver.cs src/Orchard/ContentManagement/Drivers/ContentPartDriver.cs src/Orchard/ContentManagement/Drivers/ContentShapeResult.cs src/Orchard/ContentManagement/Drivers/Coordinators/ContentFieldDriverCoordinator.cs src/Orchard/ContentManagement/Drivers/Coordinators/ContentPartDriverCoordinator.cs src/Orchard/ContentManagement/Drivers/IContentFieldDriver.cs src/Orchard/ContentManagement/Drivers/IContentPartDriver.cs src/Orchard/ContentManagement/Handlers/ContentHandler.cs src/Orchard/ContentManagement/Handlers/ContentHandlerBase.cs src/Orchard/ContentManagement/Handlers/IContentHandler.cs src/Orchard/ContentManagement/Handlers/IContentStorageFilter.cs src/Orchard/ContentManagement/Handlers/StorageFilter.cs src/Orchard/ContentManagement/Handlers/StorageFilterBase.cs src/Orchard/ContentManagement/Handlers/StorageVersionFilter.cs src/Orchard/ContentManagement/IContentManager.cs src/Orchard/ContentManagement/MetaData/Services/ContentDefinitionWriter.cs src/Orchard/ContentManagement/Utilities/LazyField.cs src/Orchard/Data/Migration/AutomaticDataMigrations.cs src/Orchard/Data/Migration/Interpreters/DefaultDataMigrationInterpreter.cs src/Orchard/Data/Migration/Interpreters/IDataMigrationInterpreter.cs src/Orchard/Data/Migration/Interpreters/MySqlCommandInterpreter.cs src/Orchard/Data/Migration/Schema/AlterTableCommand.cs src/Orchard/Data/Migration/Schema/SchemaBuilder.cs src/Orchard/Data/Migration/Schema/SchemaCommand.cs src/Orchard/DisplayManagement/Descriptors/ResourceBindingStrategy/StylesheetBindingStrategy.cs src/Orchard/DisplayManagement/Shapes/ShapeMetadata.cs src/Orchard/Environment/Configuration/ShellSettingsManager.cs src/Orchard/Environment/Configuration/TenantState.cs src/Orchard/Environment/DefaultOrchardHost.cs src/Orchard/Environment/DefaultOrchardShell.cs src/Orchard/Environment/Descriptor/IShellDescriptorManager.cs src/Orchard/Environment/Extensions/ExtensionMonitoringCoordinator.cs src/Orchard/Environment/Extensions/Folders/ExtensionHarvester.cs src/Orchard/Environment/Extensions/IExtensionManager.cs src/Orchard/Environment/Extensions/Loaders/DynamicExtensionLoader.cs src/Orchard/Environment/Extensions/Loaders/RawThemeExtensionLoader.cs src/Orchard/Environment/Extensions/Models/ExtensionDescriptor.cs src/Orchard/Environment/Features/FeatureManager.cs src/Orchard/Environment/Features/IFeatureManager.cs src/Orchard/Environment/IOrchardHost.cs src/Orchard/Environment/OrchardServices.cs src/Orchard/Environment/OrchardStarter.cs src/Orchard/Environment/ShellBuilders/CompositionStrategy.cs src/Orchard/Environment/ShellBuilders/ShellContainerFactory.cs src/Orchard/Environment/ShellBuilders/ShellContextFactory.cs src/Orchard/Environment/State/DefaultProcessingEngine.cs src/Orchard/Environment/ViewsBackgroundCompilation.cs src/Orchard/Environment/WorkContextAccessor.cs src/Orchard/Environment/WorkContextImplementation.cs src/Orchard/Events/DelegateHelper.cs src/Orchard/FileSystems/Dependencies/DynamicModuleVirtualPathProvider.cs src/Orchard/FileSystems/Media/FileSystemStorageProvider.cs src/Orchard/Localization/Services/DefaultLocalizedStringManager.cs src/Orchard/Localization/Text.cs src/Orchard/Logging/OrchardLog4netLogger.cs src/Orchard/Mvc/AntiForgery/AntiForgeryAuthorizationFilter.cs src/Orchard/Mvc/Html/ContentItemExtensions.cs
2015-12-13 23:46:19 +01:00
public static IEnumerable<string> HarvestAndSortTabs(IEnumerable<dynamic> shapes) {
var orderedShapes = Order(shapes).ToArray();
var tabs = new List<string>();
foreach (var shape in orderedShapes) {
var tab = (string)shape.Metadata.Tab;
if (String.IsNullOrEmpty(tab))
continue;
if(!tabs.Contains(tab))
tabs.Add(tab);
}
// If we have any tabs, make sure we have at least the Content tab and that it is the first one,
// since that's where we will put anything else not part of a tab.
if (tabs.Any()) {
tabs.Remove("Content");
tabs.Insert(0, "Content");
}
return tabs;
}
[Shape]
public void HeadScripts(dynamic Display, TextWriter Output) {
WriteResources(Display, Output, "script", ResourceLocation.Head, null);
WriteLiteralScripts(Output, _resourceManager.Value.GetRegisteredHeadScripts());
}
[Shape]
public void FootScripts(dynamic Display, TextWriter Output) {
WriteResources(Display, Output, "script", null, ResourceLocation.Head);
WriteLiteralScripts(Output, _resourceManager.Value.GetRegisteredFootScripts());
}
[Shape]
public void Metas(TextWriter Output) {
foreach (var meta in _resourceManager.Value.GetRegisteredMetas() ) {
Output.WriteLine(meta.GetTag());
}
}
[Shape]
public void HeadLinks(TextWriter Output) {
foreach (var link in _resourceManager.Value.GetRegisteredLinks() ) {
Output.WriteLine(link.GetTag());
}
}
[Shape]
public void StylesheetLinks(dynamic Display, TextWriter Output) {
WriteResources(Display, Output, "stylesheet", null, null);
}
[Shape]
public void Style(dynamic Display, HtmlHelper Html, TextWriter Output, ResourceDefinition Resource, string Url, string Condition, Dictionary<string, string> TagAttributes) {
// do not write to Output directly as Styles are rendered in Zones
ResourceManager.WriteResource(Html.ViewContext.Writer, Resource, Url, Condition, TagAttributes);
}
[Shape]
public void Script(HtmlHelper Html, TextWriter Output, ResourceDefinition Resource, string Url, string Condition, Dictionary<string, string> TagAttributes) {
// do not write to Output directly as Styles are rendered in Zones
ResourceManager.WriteResource(Html.ViewContext.Writer, Resource, Url, Condition, TagAttributes);
}
[Shape]
public void Resource(TextWriter Output, ResourceDefinition Resource, string Url, string Condition, Dictionary<string, string> TagAttributes) {
ResourceManager.WriteResource(Output, Resource, Url, Condition, TagAttributes);
}
private static void WriteLiteralScripts(TextWriter output, IEnumerable<string> scripts) {
if (scripts == null) {
return;
}
foreach (string script in scripts) {
output.WriteLine(script);
}
}
private void WriteResources(dynamic Display, TextWriter Output, string resourceType, ResourceLocation? includeLocation, ResourceLocation? excludeLocation) {
bool debugMode;
var site = _workContext.Value.CurrentSite;
switch (site.ResourceDebugMode) {
case ResourceDebugMode.Enabled:
debugMode = true;
break;
case ResourceDebugMode.Disabled:
debugMode = false;
break;
default:
Debug.Assert(site.ResourceDebugMode == ResourceDebugMode.FromAppSetting, "Unknown ResourceDebugMode value.");
debugMode = _httpContextAccessor.Value.Current().IsDebuggingEnabled;
break;
}
var defaultSettings = new RequireSettings {
DebugMode = debugMode,
CdnMode = site.UseCdn,
Culture = _workContext.Value.CurrentCulture,
};
var requiredResources = _resourceManager.Value.BuildRequiredResources(resourceType);
var appPath = _httpContextAccessor.Value.Current().Request.ApplicationPath;
foreach (var context in requiredResources.Where(r =>
(includeLocation.HasValue ? r.Settings.Location == includeLocation.Value : true) &&
(excludeLocation.HasValue ? r.Settings.Location != excludeLocation.Value : true))) {
var path = context.GetResourceUrl(defaultSettings, appPath);
var condition = context.Settings.Condition;
var attributes = context.Settings.HasAttributes ? context.Settings.Attributes : null;
IHtmlString result;
if (resourceType == "stylesheet") {
result = Display.Style(Url: path, Condition: condition, Resource: context.Resource, TagAttributes: attributes);
}
else if (resourceType == "script") {
result = Display.Script(Url: path, Condition: condition, Resource: context.Resource, TagAttributes: attributes);
}
else {
result = Display.Resource(Url: path, Condition: condition, Resource: context.Resource, TagAttributes: attributes);
}
Output.Write(result);
}
}
[Shape]
public IHtmlString Pager_Links(dynamic Shape, dynamic Display,
HtmlHelper Html,
int Page,
int PageSize,
double TotalItemCount,
int? Quantity,
object FirstText,
object PreviousText,
object NextText,
object LastText,
object GapText,
string PagerId
// parameter omitted to workaround an issue where a NullRef is thrown
// when an anonymous object is bound to an object shape parameter
/*object RouteValues*/) {
var currentPage = Page;
if (currentPage < 1)
currentPage = 1;
var pageSize = PageSize;
var numberOfPagesToShow = Quantity ?? 0;
if (Quantity == null || Quantity < 0)
numberOfPagesToShow = 7;
var totalPageCount = pageSize > 0 ? (int)Math.Ceiling(TotalItemCount / pageSize) : 1;
var firstText = FirstText ?? T("&lt;&lt;");
var previousText = PreviousText ?? T("&lt;");
var nextText = NextText ?? T("&gt;");
var lastText = LastText ?? T("&gt;&gt;");
var gapText = GapText ?? T("...");
var routeData = new RouteValueDictionary(Html.ViewContext.RouteData.Values);
var queryString = _workContext.Value.HttpContext.Request.QueryString;
if (queryString != null) {
foreach (var key in from string key in queryString.Keys where key != null && !routeData.ContainsKey(key) let value = queryString[key] select key) {
routeData[key] = queryString[key];
}
}
// specific cross-requests route data can be passed to the shape directly (e.g., Orchard.Users)
var shapeRoute = (object)Shape.RouteData;
if (shapeRoute != null) {
var shapeRouteData = shapeRoute as RouteValueDictionary;
if (shapeRouteData == null) {
var route = shapeRoute as RouteData;
if (route != null) {
shapeRouteData = (route).Values;
}
}
if (shapeRouteData != null) {
foreach (var rd in shapeRouteData) {
routeData[rd.Key] = rd.Value;
}
}
}
// HACK: MVC 3 is adding a specific value in System.Web.Mvc.Html.ChildActionExtensions.ActionHelper
// when a content item is set as home page, it is rendered by using Html.RenderAction, and the routeData is altered
// This code removes this extra route value
var removedKeys = routeData.Keys.Where(key => routeData[key] is DictionaryValueProvider<object>).ToList();
foreach (var key in removedKeys) {
routeData.Remove(key);
}
int firstPage = Math.Max(1, Page - (numberOfPagesToShow / 2));
int lastPage = Math.Min(totalPageCount, Page + (int)(numberOfPagesToShow / 2));
var pageKey = String.IsNullOrEmpty(PagerId) ? "page" : PagerId;
Shape.Classes.Add("pager");
Shape.Metadata.Alternates.Clear();
Shape.Metadata.Type = "List";
// first and previous pages
if (Page > 1) {
if (routeData.ContainsKey(pageKey)) {
routeData.Remove(pageKey); // to keep from having "page=1" in the query string
}
// first
Shape.Add(New.Pager_First(Value: firstText, RouteValues: new RouteValueDictionary(routeData), Pager: Shape));
// previous
if (currentPage > 2) { // also to keep from having "page=1" in the query string
routeData[pageKey] = currentPage - 1;
}
Shape.Add(New.Pager_Previous(Value: previousText, RouteValues: new RouteValueDictionary(routeData), Pager: Shape));
}
// gap at the beginning of the pager
if (firstPage > 1 && numberOfPagesToShow > 0) {
Shape.Add(New.Pager_Gap(Value: gapText, Pager: Shape));
}
// page numbers
if (numberOfPagesToShow > 0 && lastPage > 1) {
for (var p = firstPage; p <= lastPage; p++) {
if (p == currentPage) {
Shape.Add(New.Pager_CurrentPage(Value: p, RouteValues: new RouteValueDictionary(routeData), Pager: Shape));
}
else {
if (p == 1)
routeData.Remove(pageKey);
else
routeData[pageKey] = p;
Shape.Add(New.Pager_Link(Value: p, RouteValues: new RouteValueDictionary(routeData), Pager: Shape));
}
}
}
// gap at the end of the pager
if (lastPage < totalPageCount && numberOfPagesToShow > 0) {
Shape.Add(New.Pager_Gap(Value: gapText, Pager: Shape));
}
// next and last pages
if (Page < totalPageCount) {
// next
routeData[pageKey] = Page + 1;
Shape.Add(New.Pager_Next(Value: nextText, RouteValues: new RouteValueDictionary(routeData), Pager: Shape));
// last
routeData[pageKey] = totalPageCount;
Shape.Add(New.Pager_Last(Value: lastText, RouteValues: new RouteValueDictionary(routeData), Pager: Shape));
}
return Display(Shape);
}
[Shape]
public IHtmlString Pager(dynamic Shape, dynamic Display) {
Shape.Metadata.Alternates.Clear();
Shape.Metadata.Type = "Pager_Links";
return Display(Shape);
}
[Shape]
public IHtmlString Pager_First(dynamic Shape, dynamic Display) {
Shape.Metadata.Alternates.Clear();
Shape.Metadata.Type = "Pager_Link";
return Display(Shape);
}
[Shape]
public IHtmlString Pager_Previous(dynamic Shape, dynamic Display) {
Shape.Metadata.Alternates.Clear();
Shape.Metadata.Type = "Pager_Link";
return Display(Shape);
}
[Shape]
public IHtmlString Pager_CurrentPage(HtmlHelper Html, dynamic Display, object Value) {
var tagBuilder = new TagBuilder("span");
tagBuilder.InnerHtml = EncodeOrDisplay(Value, Display, Html).ToString();
return MvcHtmlString.Create(tagBuilder.ToString());
}
[Shape]
public IHtmlString Pager_Next(dynamic Shape, dynamic Display) {
Shape.Metadata.Alternates.Clear();
Shape.Metadata.Type = "Pager_Link";
return Display(Shape);
}
[Shape]
public IHtmlString Pager_Last(dynamic Shape, dynamic Display) {
Shape.Metadata.Alternates.Clear();
Shape.Metadata.Type = "Pager_Link";
return Display(Shape);
}
[Shape]
public IHtmlString Pager_Link(HtmlHelper Html, dynamic Shape, dynamic Display, object Value) {
Shape.Metadata.Alternates.Clear();
Shape.Metadata.Type = "ActionLink";
return Display(Shape);
}
[Shape]
public IHtmlString ActionLink(HtmlHelper Html, UrlHelper Url, dynamic Shape, dynamic Display, object Value) {
var RouteValues = (object)Shape.RouteValues;
RouteValueDictionary rvd;
if (RouteValues == null) {
rvd = new RouteValueDictionary();
}
else {
rvd = RouteValues is RouteValueDictionary ? (RouteValueDictionary)RouteValues : new RouteValueDictionary(RouteValues);
}
var action = Url.Action((string)rvd["action"], (string)rvd["controller"], rvd);
IEnumerable<string> classes = Shape.Classes;
IDictionary<string, string> attributes = Shape.Attributes;
attributes["href"] = action;
string id = Shape.Id;
var tag = GetTagBuilder("a", id, classes, attributes);
tag.InnerHtml = EncodeOrDisplay(Value, Display, Html).ToString();
return Html.Raw(tag.ToString());
}
[Shape]
public IHtmlString Pager_Gap(HtmlHelper Html, dynamic Display, object Value) {
var tagBuilder = new TagBuilder("span");
tagBuilder.InnerHtml = EncodeOrDisplay(Value, Display, Html).ToString();
return MvcHtmlString.Create(tagBuilder.ToString());
}
[Shape]
public void List(
dynamic Display,
TextWriter Output,
IEnumerable<dynamic> Items,
string Tag,
string Id,
IEnumerable<string> Classes,
IDictionary<string, string> Attributes,
string ItemTag,
IEnumerable<string> ItemClasses,
IDictionary<string, string> ItemAttributes) {
if (Items == null)
return;
// prevent multiple enumerations
var items = Items.ToList();
// var itemDisplayOutputs = Items.Select(item => Display(item)).Where(output => !string.IsNullOrWhiteSpace(output.ToHtmlString())).ToList();
var count = items.Count();
if (count < 1)
return;
string listTagName = null;
if (Tag != "-") {
listTagName = string.IsNullOrEmpty(Tag) ? "ul" : Tag;
}
var listTag = String.IsNullOrEmpty(listTagName) ? null : GetTagBuilder(listTagName, Id, Classes, Attributes);
string itemTagName = null;
if (ItemTag != "-") {
itemTagName = string.IsNullOrEmpty(ItemTag) ? "li" : ItemTag;
}
if (listTag != null) {
Output.Write(listTag.ToString(TagRenderMode.StartTag));
}
var itemTags = new List<TagBuilder>();
var itemOutputs = new List<string>();
// give the item shape the possibility to alter its container tag
var index = 0;
foreach (var item in items) {
var itemTag = String.IsNullOrEmpty(itemTagName) ? null : GetTagBuilder(itemTagName, null, ItemClasses, ItemAttributes);
if (item is IShape) {
item.Tag = itemTag;
}
var itemOutput = Display(item).ToHtmlString();
if (!String.IsNullOrWhiteSpace(itemOutput)) {
itemTags.Add(itemTag);
itemOutputs.Add(itemOutput);
}
else {
count--;
}
++index;
}
index = 0;
foreach(var itemOutput in itemOutputs) {
var itemTag = itemTags[index];
if (itemTag != null) {
if (index == 0)
itemTag.AddCssClass("first");
if (index == count - 1)
itemTag.AddCssClass("last");
Output.Write(itemTag.ToString(TagRenderMode.StartTag));
}
Output.Write(itemOutput);
if (itemTag != null) {
Output.WriteLine(itemTag.ToString(TagRenderMode.EndTag));
}
++index;
}
if (listTag != null) {
Output.WriteLine(listTag.ToString(TagRenderMode.EndTag));
}
}
[Shape]
public IHtmlString PlaceChildContent(dynamic Source) {
return Source.Metadata.ChildContent;
}
[Shape]
public void Partial(HtmlHelper Html, TextWriter Output, string TemplateName, object Model, string Prefix) {
RenderInternal(Html, Output, TemplateName, Model, Prefix);
}
[Shape]
public void DisplayTemplate(HtmlHelper Html, TextWriter Output, string TemplateName, object Model, string Prefix) {
RenderInternal(Html, Output, "DisplayTemplates/" + TemplateName, Model, Prefix);
}
[Shape]
public void EditorTemplate(HtmlHelper Html, TextWriter Output, string TemplateName, object Model, string Prefix) {
RenderInternal(Html, Output, "EditorTemplates/" + TemplateName, Model, Prefix);
}
static void RenderInternal(HtmlHelper Html, TextWriter Output, string TemplateName, object Model, string Prefix) {
var adjustedViewData = new ViewDataDictionary(Html.ViewDataContainer.ViewData) {
Model = DetermineModel(Html, Model),
TemplateInfo = new TemplateInfo {
HtmlFieldPrefix = DeterminePrefix(Html, Prefix)
}
};
var adjustedViewContext = new ViewContext(Html.ViewContext, Html.ViewContext.View, adjustedViewData, Html.ViewContext.TempData, Output);
var adjustedHtml = new HtmlHelper(adjustedViewContext, new ViewDataContainer(adjustedViewData));
adjustedHtml.RenderPartial(TemplateName);
}
static object DetermineModel(HtmlHelper Html, object Model) {
bool isNull = ((dynamic)Model) == null;
return isNull ? Html.ViewData.Model : Model;
}
static string DeterminePrefix(HtmlHelper Html, string Prefix) {
var actualPrefix = string.IsNullOrEmpty(Prefix)
? Html.ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix
: Html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(Prefix);
return actualPrefix;
}
private class ViewDataContainer : IViewDataContainer {
public ViewDataContainer(ViewDataDictionary viewData) { ViewData = viewData; }
public ViewDataDictionary ViewData { get; set; }
}
/// <summary>
/// Encodes dashed and dots so that they don't conflict in filenames
/// </summary>
/// <param name="alternateElement"></param>
/// <returns></returns>
private string EncodeAlternateElement(string alternateElement) {
return alternateElement.Replace("-", "__").Replace(".", "_");
}
/// <summary>
/// Encode a value if it's a string, or render it if it's a Shape
/// </summary>
private IHtmlString EncodeOrDisplay(dynamic Value, dynamic Display, HtmlHelper Html) {
if (Value is IHtmlString) {
return Value;
}
if (Value is IShape) {
return Display(Value).ToString();
}
return Html.Raw(Html.Encode(Value.ToString()));
}
}
}