mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-04-05 21:01:35 +08:00
Merge
--HG-- branch : dev
This commit is contained in:
commit
b13a3baafd
@ -1,6 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<compilation targetFramework="4.0">
|
||||
<assemblies>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -15,7 +15,9 @@
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<appSettings/>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.diagnostics configSource="Config\Diagnostics.config"/>
|
||||
|
||||
<system.web.webPages.razor>
|
||||
|
@ -23,7 +23,9 @@
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<appSettings/>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
|
||||
|
||||
<!--
|
||||
|
@ -191,6 +191,7 @@ namespace Orchard.Tests.Modules.Users.Controllers {
|
||||
registrationSettings.UsersCanRegister = true;
|
||||
registrationSettings.UsersAreModerated = true;
|
||||
registrationSettings.NotifyModeration = true;
|
||||
registrationSettings.NotificationsRecipients = "admin";
|
||||
|
||||
_container.Resolve<IWorkContextAccessor>().GetContext().CurrentSite.As<SiteSettingsPart>().SuperUser = "admin";
|
||||
_session.Flush();
|
||||
|
@ -14,7 +14,21 @@ namespace Orchard.Tests {
|
||||
Resolve(_container);
|
||||
}
|
||||
|
||||
#if false
|
||||
// technically more accurate, and doesn't work
|
||||
[SetUp]
|
||||
public virtual void Init() {
|
||||
var hostBuilder = new ContainerBuilder();
|
||||
var hostContainer = hostBuilder.Build();
|
||||
var shellContainer = hostContainer.BeginLifetimeScope("shell", shellBuilder => Register(shellBuilder));
|
||||
var workContainer = shellContainer.BeginLifetimeScope("work");
|
||||
|
||||
_container = workContainer;
|
||||
Resolve(_container);
|
||||
}
|
||||
#endif
|
||||
|
||||
protected virtual void Register(ContainerBuilder builder) { }
|
||||
protected virtual void Resolve(IContainer container) { }
|
||||
protected virtual void Resolve(ILifetimeScope container) { }
|
||||
}
|
||||
}
|
@ -21,7 +21,7 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
}
|
||||
|
||||
|
||||
protected override void Resolve(IContainer container) {
|
||||
protected override void Resolve(ILifetimeScope container) {
|
||||
_parser = container.Resolve<IPlacementFileParser>();
|
||||
_folder = container.Resolve<InMemoryWebSiteFolder>();
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
builder.RegisterModule(new ShapeAttributeBindingModule());
|
||||
}
|
||||
|
||||
protected override void Resolve(IContainer container) {
|
||||
protected override void Resolve(ILifetimeScope container) {
|
||||
// implementation resorts to orchard host to resolve "current scope" services
|
||||
container.Resolve<Mock<IOrchardHostContainer>>()
|
||||
.Setup(x => x.Resolve<IComponentContext>())
|
||||
|
@ -97,7 +97,7 @@ namespace Orchard.Tests.DisplayManagement.Descriptors {
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Resolve(IContainer container) {
|
||||
protected override void Resolve(ILifetimeScope container) {
|
||||
_features = new List<FeatureDescriptor>();
|
||||
|
||||
container.Resolve<Mock<IExtensionManager>>()
|
||||
|
@ -22,11 +22,12 @@ namespace Orchard.Tests.Environment {
|
||||
}
|
||||
|
||||
protected override void Register(ContainerBuilder builder) {
|
||||
builder.RegisterModule(new WorkContextModule());
|
||||
builder.RegisterType<WorkContextAccessor>().As<IWorkContextAccessor>();
|
||||
builder.RegisterAutoMocking();
|
||||
}
|
||||
|
||||
protected override void Resolve(IContainer container) {
|
||||
protected override void Resolve(ILifetimeScope container) {
|
||||
container.Mock<IHttpContextAccessor>()
|
||||
.Setup(x => x.Current())
|
||||
.Returns(() => _httpContextCurrent);
|
||||
|
@ -21,6 +21,7 @@ namespace Orchard.Tests.Environment.ShellBuilders {
|
||||
public void Init() {
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterType<ShellContextFactory>().As<IShellContextFactory>();
|
||||
builder.RegisterModule(new WorkContextModule());
|
||||
builder.RegisterType<WorkContextAccessor>().As<IWorkContextAccessor>();
|
||||
builder.RegisterAutoMocking(Moq.MockBehavior.Strict);
|
||||
_container = builder.Build();
|
||||
|
@ -23,6 +23,7 @@ namespace Orchard.Tests.Environment.State {
|
||||
public void Init() {
|
||||
var builder = new ContainerBuilder();
|
||||
builder.RegisterType<DefaultProcessingEngine>().As<IProcessingEngine>();
|
||||
builder.RegisterModule(new WorkContextModule());
|
||||
builder.RegisterType<WorkContextAccessor>().As<IWorkContextAccessor>();
|
||||
builder.RegisterAutoMocking();
|
||||
_container = builder.Build();
|
||||
|
@ -36,6 +36,7 @@ namespace Orchard.Tests.Mvc.Routes {
|
||||
rootBuilder.Register(ctx => _routes);
|
||||
rootBuilder.RegisterType<ShellRoute>().InstancePerDependency();
|
||||
rootBuilder.RegisterType<RunningShellTable>().As<IRunningShellTable>().SingleInstance();
|
||||
rootBuilder.RegisterModule(new WorkContextModule());
|
||||
rootBuilder.RegisterType<WorkContextAccessor>().As<IWorkContextAccessor>().InstancePerMatchingLifetimeScope("shell");
|
||||
rootBuilder.RegisterType<HttpContextAccessor>().As<IHttpContextAccessor>();
|
||||
|
||||
|
@ -12,6 +12,7 @@ namespace Orchard.Tests.Tasks {
|
||||
public class SweepGeneratorTests : ContainerTestBase {
|
||||
protected override void Register(ContainerBuilder builder) {
|
||||
builder.RegisterAutoMocking(MockBehavior.Loose);
|
||||
builder.RegisterModule(new WorkContextModule());
|
||||
builder.RegisterType<WorkContextAccessor>().As<IWorkContextAccessor>();
|
||||
builder.RegisterType<SweepGenerator>();
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ namespace Orchard.Tests.UI {
|
||||
throw new NotImplementedException("this test fixture needs to move to modules tests now");
|
||||
}
|
||||
|
||||
protected override void Resolve(IContainer container) {
|
||||
protected override void Resolve(ILifetimeScope container) {
|
||||
_workContext = container.Resolve<IWorkContextAccessor>().CreateWorkContextScope().WorkContext;
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ using Moq;
|
||||
|
||||
namespace Orchard.Tests.Utility {
|
||||
public static class ContainerExtensions {
|
||||
public static Mock<T> Mock<T>(this IContainer container) where T : class {
|
||||
public static Mock<T> Mock<T>(this IComponentContext container) where T : class {
|
||||
return container.Resolve<Mock<T>>();
|
||||
}
|
||||
|
||||
|
@ -1,7 +0,0 @@
|
||||
using Orchard.Core.Common.Fields;
|
||||
|
||||
namespace Orchard.Core.Common.ViewModels {
|
||||
public class TextContentFieldDisplayViewModel {
|
||||
public TextField Text { get; set; }
|
||||
}
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Orchard.Core.Common.Fields;
|
||||
|
||||
namespace Orchard.Core.Common.ViewModels {
|
||||
public class TextContentFieldEditorViewModel {
|
||||
public TextField TextField { get; set; }
|
||||
|
||||
[Required]
|
||||
public string Text {
|
||||
get { return TextField.Value; }
|
||||
set { TextField.Value = value; }
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,30 +0,0 @@
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.Drivers;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.Data;
|
||||
|
||||
namespace Orchard.Core.Containers.Drivers {
|
||||
public class ContainerCustomPartDriver : ContentPartDriver<ContainerCustomPart> {
|
||||
protected override DriverResult Editor(ContainerCustomPart part, dynamic shapeHelper) {
|
||||
return Editor(part, null, shapeHelper);
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(ContainerCustomPart part, IUpdateModel updater, dynamic shapeHelper) {
|
||||
return ContentShape(
|
||||
"Parts_ContainerCustom_Edit",
|
||||
() => {
|
||||
if (updater != null)
|
||||
updater.TryUpdateModel(part, "ContainerCustom", null, null);
|
||||
|
||||
return shapeHelper.EditorTemplate(TemplateName: "ContainerCustom", Model: part, Prefix: "ContainerCustom");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public class ContainerCustomPartHandler : ContentHandler {
|
||||
public ContainerCustomPartHandler(IRepository<ContainerCustomPartRecord> repository) {
|
||||
Filters.Add(StorageFilter.For(repository));
|
||||
}
|
||||
}
|
||||
}
|
@ -86,7 +86,7 @@ namespace Orchard.Core.Containers.Drivers {
|
||||
part.Record.PageSize = 5;
|
||||
part.Record.OrderByProperty = part.Is<CommonPart>() ? "CommonPart.PublishedUtc" : "";
|
||||
part.Record.OrderByDirection = (int)OrderByDirection.Descending;
|
||||
part.Record.FilterByProperty = "ContainerCustomPart.CustomOne";
|
||||
part.Record.FilterByProperty = "CustomPropertiesPart.CustomOne";
|
||||
part.Record.FilterByOperator = "=";
|
||||
});
|
||||
}
|
||||
|
@ -0,0 +1,30 @@
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.Drivers;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.Data;
|
||||
|
||||
namespace Orchard.Core.Containers.Drivers {
|
||||
public class CustomPropertiesPartDriver : ContentPartDriver<CustomPropertiesPart> {
|
||||
protected override DriverResult Editor(CustomPropertiesPart part, dynamic shapeHelper) {
|
||||
return Editor(part, null, shapeHelper);
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(CustomPropertiesPart part, IUpdateModel updater, dynamic shapeHelper) {
|
||||
return ContentShape(
|
||||
"Parts_CustomProperties_Edit",
|
||||
() => {
|
||||
if (updater != null)
|
||||
updater.TryUpdateModel(part, "CustomProperties", null, null);
|
||||
|
||||
return shapeHelper.EditorTemplate(TemplateName: "CustomProperties", Model: part, Prefix: "CustomProperties");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public class CustomPropertiesPartHandler : ContentHandler {
|
||||
public CustomPropertiesPartHandler(IRepository<CustomPropertiesPartRecord> repository) {
|
||||
Filters.Add(StorageFilter.For(repository));
|
||||
}
|
||||
}
|
||||
}
|
@ -21,20 +21,20 @@ namespace Orchard.Core.Containers.Extensions
|
||||
? query.OrderByDescending<RoutePartRecord, string>(record => record.Slug)
|
||||
: query.OrderBy<RoutePartRecord, string>(record => record.Slug);
|
||||
break;
|
||||
case "ContainerCustomPart.CustomOne":
|
||||
case "CustomPropertiesPart.CustomOne":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<ContainerCustomPartRecord, string>(record => record.CustomOne)
|
||||
: query.OrderBy<ContainerCustomPartRecord, string>(record => record.CustomOne);
|
||||
? query.OrderByDescending<CustomPropertiesPartRecord, string>(record => record.CustomOne)
|
||||
: query.OrderBy<CustomPropertiesPartRecord, string>(record => record.CustomOne);
|
||||
break;
|
||||
case "ContainerCustomPart.CustomTwo":
|
||||
case "CustomPropertiesPart.CustomTwo":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<ContainerCustomPartRecord, string>(record => record.CustomTwo)
|
||||
: query.OrderBy<ContainerCustomPartRecord, string>(record => record.CustomTwo);
|
||||
? query.OrderByDescending<CustomPropertiesPartRecord, string>(record => record.CustomTwo)
|
||||
: query.OrderBy<CustomPropertiesPartRecord, string>(record => record.CustomTwo);
|
||||
break;
|
||||
case "ContainerCustomPart.CustomThree":
|
||||
case "CustomPropertiesPart.CustomThree":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<ContainerCustomPartRecord, string>(record => record.CustomThree)
|
||||
: query.OrderBy<ContainerCustomPartRecord, string>(record => record.CustomThree);
|
||||
? query.OrderByDescending<CustomPropertiesPartRecord, string>(record => record.CustomThree)
|
||||
: query.OrderBy<CustomPropertiesPartRecord, string>(record => record.CustomThree);
|
||||
break;
|
||||
default: // "CommonPart.PublishedUtc"
|
||||
query = descendingOrder
|
||||
@ -69,18 +69,18 @@ namespace Orchard.Core.Containers.Extensions
|
||||
{"CommonPart.PublishedUtc|=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CommonPartRecord>(r => r.PublishedUtc == DateTime.Parse(s)))}, // todo: (heskew) not practical as is. needs some sense of precision....
|
||||
{"CommonPart.PublishedUtc|^=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CommonPartRecord>(r => true /* can't modified PublishedUtc for partial comparisons */))},
|
||||
// todo: (hesekw) this could benefit from a better filter implementation as this is currently very limited in functionality and I have no idea how the custom parts will be used by folks
|
||||
{"ContainerCustomPart.CustomOne|<", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => true /* CompareTo is not implemented - r.CustomOne.CompareTo(s) == -1*/))},
|
||||
{"ContainerCustomPart.CustomOne|>", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => true /* CompareTo is not implemented - r.CustomOne.CompareTo(s) == 1*/))},
|
||||
{"ContainerCustomPart.CustomOne|=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => r.CustomOne.Equals(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"ContainerCustomPart.CustomOne|^=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => r.CustomOne.StartsWith(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"ContainerCustomPart.CustomTwo|<", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => true /* CompareTo is not implemented - r.CustomTwo.CompareTo(s) == -1*/))},
|
||||
{"ContainerCustomPart.CustomTwo|>", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => true /* CompareTo is not implemented - r.CustomTwo.CompareTo(s) == 1*/))},
|
||||
{"ContainerCustomPart.CustomTwo|=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => r.CustomTwo.Equals(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"ContainerCustomPart.CustomTwo|^=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => r.CustomTwo.StartsWith(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"ContainerCustomPart.CustomThree|<", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => true /* CompareTo is not implemented - r.CustomThree.CompareTo(s) == -1*/))},
|
||||
{"ContainerCustomPart.CustomThree|>", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => true /* CompareTo is not implemented - r.CustomThree.CompareTo(s) == 1*/))},
|
||||
{"ContainerCustomPart.CustomThree|=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => r.CustomThree.Equals(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"ContainerCustomPart.CustomThree|^=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<ContainerCustomPartRecord>(r => r.CustomThree.StartsWith(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"CustomPropertiesPart.CustomOne|<", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => true /* CompareTo is not implemented - r.CustomOne.CompareTo(s) == -1*/))},
|
||||
{"CustomPropertiesPart.CustomOne|>", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => true /* CompareTo is not implemented - r.CustomOne.CompareTo(s) == 1*/))},
|
||||
{"CustomPropertiesPart.CustomOne|=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => r.CustomOne.Equals(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"CustomPropertiesPart.CustomOne|^=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => r.CustomOne.StartsWith(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"CustomPropertiesPart.CustomTwo|<", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => true /* CompareTo is not implemented - r.CustomTwo.CompareTo(s) == -1*/))},
|
||||
{"CustomPropertiesPart.CustomTwo|>", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => true /* CompareTo is not implemented - r.CustomTwo.CompareTo(s) == 1*/))},
|
||||
{"CustomPropertiesPart.CustomTwo|=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => r.CustomTwo.Equals(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"CustomPropertiesPart.CustomTwo|^=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => r.CustomTwo.StartsWith(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"CustomPropertiesPart.CustomThree|<", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => true /* CompareTo is not implemented - r.CustomThree.CompareTo(s) == -1*/))},
|
||||
{"CustomPropertiesPart.CustomThree|>", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => true /* CompareTo is not implemented - r.CustomThree.CompareTo(s) == 1*/))},
|
||||
{"CustomPropertiesPart.CustomThree|=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => r.CustomThree.Equals(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
{"CustomPropertiesPart.CustomThree|^=", new Func<IContentQuery<ContentItem>, string, IContentQuery<ContentItem>>((q, s) => q.Where<CustomPropertiesPartRecord>(r => r.CustomThree.StartsWith(s, StringComparison.OrdinalIgnoreCase)))},
|
||||
};
|
||||
}
|
||||
}
|
@ -25,7 +25,7 @@ namespace Orchard.Core.Containers {
|
||||
.Column<string>("FilterByOperator")
|
||||
.Column<string>("FilterByValue"));
|
||||
|
||||
SchemaBuilder.CreateTable("ContainerCustomPartRecord",
|
||||
SchemaBuilder.CreateTable("CustomPropertiesPartRecord",
|
||||
table => table
|
||||
.ContentPartRecord()
|
||||
.Column<string>("CustomOne")
|
||||
@ -41,7 +41,7 @@ namespace Orchard.Core.Containers {
|
||||
|
||||
ContentDefinitionManager.AlterPartDefinition("ContainerPart", builder => builder.Attachable());
|
||||
ContentDefinitionManager.AlterPartDefinition("ContainablePart", builder => builder.Attachable());
|
||||
ContentDefinitionManager.AlterPartDefinition("ContainerCustomPart", builder => builder.Attachable());
|
||||
ContentDefinitionManager.AlterPartDefinition("CustomPropertiesPart", builder => builder.Attachable());
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -2,10 +2,10 @@
|
||||
using Orchard.ContentManagement.Records;
|
||||
|
||||
namespace Orchard.Core.Containers.Models {
|
||||
public class ContainerCustomPart : ContentPart<ContainerCustomPartRecord> {
|
||||
public class CustomPropertiesPart : ContentPart<CustomPropertiesPartRecord> {
|
||||
}
|
||||
|
||||
public class ContainerCustomPartRecord : ContentPartRecord {
|
||||
public class CustomPropertiesPartRecord : ContentPartRecord {
|
||||
public virtual string CustomOne { get; set; }
|
||||
public virtual string CustomTwo { get; set; }
|
||||
public virtual string CustomThree { get; set; }
|
@ -7,7 +7,7 @@
|
||||
-->
|
||||
<Place Parts_Containable_Edit="Content:before.3"/>
|
||||
<Place Parts_Container_Edit="Content:5"/>
|
||||
<Place Parts_ContainerCustom_Edit="Content:5"/>
|
||||
<Place Parts_CustomProperties_Edit="Content:5"/>
|
||||
<Place Parts_ContainerWidget_Edit="Content:5"/>
|
||||
<Place Parts_Container_SiteSettings="Content:10"/>
|
||||
<Place Parts_ContainerWidget="Content"/>
|
||||
|
@ -6,9 +6,9 @@
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "CommonPart.PublishedUtc", T("Date Published").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "RoutePart.Title", T("Title").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "RoutePart.Slug", T("Slug").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "ContainerCustomPart.CustomOne", T("Custom 1").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "ContainerCustomPart.CustomTwo", T("Custom 2").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "ContainerCustomPart.CustomThree", T("Custom 3").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "CustomPropertiesPart.CustomOne", T("Custom 1").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "CustomPropertiesPart.CustomTwo", T("Custom 2").Text)
|
||||
@Html.SelectOption(Model.Record.OrderByProperty, "CustomPropertiesPart.CustomThree", T("Custom 3").Text)
|
||||
</select>
|
||||
<select id="@Html.FieldIdFor(m => m.Record.OrderByDirection)" name="@Html.FieldNameFor(m => m.Record.OrderByDirection)">
|
||||
@Html.SelectOption(Model.Record.OrderByDirection, (int)OrderByDirection.Ascending, T("Ascending").Text)
|
||||
|
@ -19,9 +19,9 @@
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "CommonPart.PublishedUtc", T("Date Published").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "RoutePart.Title", T("Title").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "RoutePart.Slug", T("Slug").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "ContainerCustomPart.CustomOne", T("Custom 1").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "ContainerCustomPart.CustomTwo", T("Custom 2").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "ContainerCustomPart.CustomThree", T("Custom 3").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "CustomPropertiesPart.CustomOne", T("Custom 1").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "CustomPropertiesPart.CustomTwo", T("Custom 2").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "CustomPropertiesPart.CustomThree", T("Custom 3").Text)
|
||||
</select>
|
||||
<select title="@T("Order direction")" id="@Html.FieldIdFor(m => m.Part.Record.OrderByDirection)" name="@Html.FieldNameFor(m => m.Part.Record.OrderByDirection)">
|
||||
@Html.SelectOption(Model.Part.Record.OrderByDirection, (int)OrderByDirection.Ascending, T("Ascending").Text)
|
||||
@ -39,9 +39,9 @@
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "CommonPart.PublishedUtc", T("Date Published").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "RoutePart.Title", T("Title").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "RoutePart.Slug", T("Slug").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "ContainerCustomPart.CustomOne", T("Custom 1").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "ContainerCustomPart.CustomTwo", T("Custom 2").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "ContainerCustomPart.CustomThree", T("Custom 3").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "CustomPropertiesPart.CustomOne", T("Custom 1").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "CustomPropertiesPart.CustomTwo", T("Custom 2").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "CustomPropertiesPart.CustomThree", T("Custom 3").Text)
|
||||
</select>
|
||||
<select title="@T("Filter operator")" id="@Html.FieldIdFor(m => m.Part.Record.FilterByOperator)" name="@Html.FieldNameFor(m => m.Part.Record.FilterByOperator)">
|
||||
@Html.SelectOption(Model.Part.Record.FilterByOperator, "=", T("is equal to").Text)
|
||||
|
@ -1,4 +1,4 @@
|
||||
@model Orchard.Core.Containers.Models.ContainerCustomPart
|
||||
@model Orchard.Core.Containers.Models.CustomPropertiesPart
|
||||
<fieldset>
|
||||
@Html.LabelFor(m => m.Record.CustomOne, T("Custom One"))
|
||||
@Html.EditorFor(m => m.Record.CustomOne)
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -71,7 +71,7 @@
|
||||
<Compile Include="Common\Drivers\TextFieldDriver.cs" />
|
||||
<Compile Include="Containers\ContainersPathConstraint.cs" />
|
||||
<Compile Include="Containers\Drivers\ContainerWidgetPartDriver.cs" />
|
||||
<Compile Include="Containers\Drivers\ContainerCustomPartDriver.cs" />
|
||||
<Compile Include="Containers\Drivers\CustomPropertiesDriver.cs" />
|
||||
<Compile Include="Containers\Extensions\ContentQueryExtensions.cs" />
|
||||
<Compile Include="Containers\Migrations.cs" />
|
||||
<Compile Include="Containers\Models\ContainablePart.cs" />
|
||||
@ -79,7 +79,7 @@
|
||||
<Compile Include="Common\Shapes.cs" />
|
||||
<Compile Include="Common\Fields\TextField.cs" />
|
||||
<Compile Include="Containers\Models\ContainerWidgetPart.cs" />
|
||||
<Compile Include="Containers\Models\ContainerCustomPart.cs" />
|
||||
<Compile Include="Containers\Models\CustomPropertiesPart.cs" />
|
||||
<Compile Include="Containers\Models\OrderByDirection.cs" />
|
||||
<Compile Include="Containers\Routes.cs" />
|
||||
<Compile Include="Containers\Services\ContainersPathConstraintUpdater.cs" />
|
||||
@ -92,8 +92,6 @@
|
||||
<Compile Include="Common\Services\CommonService.cs" />
|
||||
<Compile Include="Common\Settings\BodySettings.cs" />
|
||||
<Compile Include="Common\ViewModels\ContainerEditorViewModel.cs" />
|
||||
<Compile Include="Common\ViewModels\TextContentFieldDisplayViewModel.cs" />
|
||||
<Compile Include="Common\ViewModels\TextContentFieldEditorViewModel.cs" />
|
||||
<Compile Include="Contents\Controllers\ItemController.cs" />
|
||||
<Compile Include="Contents\Drivers\ContentsDriver.cs" />
|
||||
<Compile Include="Contents\DynamicPermissions.cs" />
|
||||
@ -366,7 +364,7 @@
|
||||
<Content Include="Containers\Views\DefinitionTemplates\ContainerTypePartSettings.cshtml" />
|
||||
<Content Include="Containers\Views\EditorTemplates\Containable.cshtml" />
|
||||
<Content Include="Containers\Views\Parts\ContainerWidget.cshtml" />
|
||||
<Content Include="Containers\Views\EditorTemplates\ContainerCustom.cshtml" />
|
||||
<Content Include="Containers\Views\EditorTemplates\CustomProperties.cshtml" />
|
||||
<Content Include="Routable\Views\Parts\RoutableTitle_Summary.cshtml" />
|
||||
<Content Include="Routable\Views\Parts\RoutableTitle_SummaryAdmin.cshtml" />
|
||||
</ItemGroup>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,6 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<system.web>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<compilation targetFramework="4.0">
|
||||
<assemblies>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -50,8 +50,15 @@ namespace Orchard.Comments.Controllers {
|
||||
|
||||
CommentPart commentPart = _commentService.CreateComment(context, Services.WorkContext.CurrentSite.As<CommentSettingsPart>().Record.ModerateComments);
|
||||
|
||||
if (commentPart.Record.Status == CommentStatus.Pending)
|
||||
Services.Notifier.Information(T("Your comment will appear after the site administrator approves it."));
|
||||
if (commentPart.Record.Status == CommentStatus.Pending) {
|
||||
// if the user who submitted the comment has the right to moderate, don't make this comment moderated
|
||||
if (Services.Authorizer.Authorize(Permissions.ManageComments)) {
|
||||
commentPart.Record.Status = CommentStatus.Approved;
|
||||
}
|
||||
else {
|
||||
Services.Notifier.Information(T("Your comment will appear after the site administrator approves it."));
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
foreach (var error in ModelState.Values.SelectMany(m => m.Errors).Select( e=> e.ErrorMessage)) {
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -326,8 +326,8 @@ namespace Orchard.ContentTypes.Controllers {
|
||||
if (partViewModel == null) {
|
||||
//id passed in might be that of a type w/ no implicit field
|
||||
if (typeViewModel != null) {
|
||||
partViewModel = new EditPartViewModel { Name = typeViewModel.Name };
|
||||
_contentDefinitionService.AddPart(new CreatePartViewModel { Name = partViewModel.Name });
|
||||
partViewModel = new EditPartViewModel {Name = typeViewModel.Name};
|
||||
_contentDefinitionService.AddPart(new CreatePartViewModel {Name = partViewModel.Name});
|
||||
_contentDefinitionService.AddPartToType(partViewModel.Name, typeViewModel.Name);
|
||||
}
|
||||
else {
|
||||
@ -341,7 +341,14 @@ namespace Orchard.ContentTypes.Controllers {
|
||||
return AddFieldTo(id);
|
||||
}
|
||||
|
||||
_contentDefinitionService.AddFieldToPart(viewModel.DisplayName, viewModel.FieldTypeName, partViewModel.Name);
|
||||
try {
|
||||
_contentDefinitionService.AddFieldToPart(viewModel.DisplayName, viewModel.FieldTypeName, partViewModel.Name);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
Services.Notifier.Information(T("The \"{0}\" field was not added. {1}", viewModel.DisplayName, ex.Message));
|
||||
Services.TransactionManager.Cancel();
|
||||
return AddFieldTo(id);
|
||||
}
|
||||
|
||||
if (!ModelState.IsValid) {
|
||||
Services.TransactionManager.Cancel();
|
||||
|
@ -210,9 +210,11 @@ namespace Orchard.ContentTypes.Services {
|
||||
|
||||
public void AddFieldToPart(string fieldName, string fieldTypeName, string partName) {
|
||||
fieldName = SafeName(fieldName);
|
||||
_contentDefinitionManager.AlterPartDefinition(partName, partBuilder =>
|
||||
partBuilder.WithField(fieldName, fieldBuilder => fieldBuilder.OfType(fieldTypeName))
|
||||
);
|
||||
if (string.IsNullOrEmpty(fieldName)) {
|
||||
throw new OrchardException(T("Fields must have a name containing no spaces or symbols."));
|
||||
}
|
||||
_contentDefinitionManager.AlterPartDefinition(partName,
|
||||
partBuilder => partBuilder.WithField(fieldName, fieldBuilder => fieldBuilder.OfType(fieldTypeName)));
|
||||
}
|
||||
|
||||
public void RemoveFieldFromPart(string fieldName, string partName) {
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,6 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,6 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -24,7 +24,7 @@
|
||||
<p>@module.Description</p>}
|
||||
<ul class="pageStatus" style="color:#666; margin:.6em 0 0 0;">
|
||||
<li>@T("Features: {0}", MvcHtmlString.Create(string.Join(", ", module.Features.Select(f => Html.Link(string.IsNullOrEmpty(f.Name) ? f.Id : f.Name, string.Format("{0}#{1}", Url.Action("features", new { area = "Orchard.Modules" }), f.Id.AsFeatureId(n => T(n)))).ToString()).OrderBy(s => s).ToArray())))</li>
|
||||
<li> | @T("Author: {0}", !string.IsNullOrEmpty(module.Author) ? module.Author : "Unknown")</li>
|
||||
<li> | @T("Author: {0}", !string.IsNullOrEmpty(module.Author) ? module.Author : T("Unknown").ToString())</li>
|
||||
<li> | @T("Website: {0}", !string.IsNullOrEmpty(module.WebSite) ? module.WebSite : "http://orchardproject.net")</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -6,6 +6,7 @@ using System.Web.Hosting;
|
||||
using System.Web.Mvc;
|
||||
using System.Xml.Linq;
|
||||
using NuGet;
|
||||
using Orchard.Environment;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.FileSystems.AppData;
|
||||
using Orchard.Localization;
|
||||
@ -25,16 +26,19 @@ namespace Orchard.Packaging.Controllers {
|
||||
private readonly IPackagingSourceManager _packagingSourceManager;
|
||||
private readonly IAppDataFolderRoot _appDataFolderRoot;
|
||||
private readonly INotifier _notifier;
|
||||
private readonly IHostEnvironment _hostEnvironment;
|
||||
|
||||
public GalleryController(
|
||||
IPackageManager packageManager,
|
||||
IPackagingSourceManager packagingSourceManager,
|
||||
INotifier notifier,
|
||||
IAppDataFolderRoot appDataFolderRoot) {
|
||||
IAppDataFolderRoot appDataFolderRoot,
|
||||
IHostEnvironment hostEnvironment) {
|
||||
_packageManager = packageManager;
|
||||
_packagingSourceManager = packagingSourceManager;
|
||||
_notifier = notifier;
|
||||
_appDataFolderRoot = appDataFolderRoot;
|
||||
_hostEnvironment = hostEnvironment;
|
||||
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
@ -60,12 +64,11 @@ namespace Orchard.Packaging.Controllers {
|
||||
[HttpPost]
|
||||
public ActionResult AddSource(string url) {
|
||||
try {
|
||||
if ( !String.IsNullOrEmpty(url) ) {
|
||||
if (!String.IsNullOrEmpty(url)) {
|
||||
if (!url.StartsWith("http")) {
|
||||
ModelState.AddModelError("Url", T("The Url is not valid").Text);
|
||||
}
|
||||
}
|
||||
else if ( String.IsNullOrWhiteSpace(url)) {
|
||||
} else if (String.IsNullOrWhiteSpace(url)) {
|
||||
ModelState.AddModelError("Url", T("Url is required").Text);
|
||||
}
|
||||
|
||||
@ -73,29 +76,27 @@ namespace Orchard.Packaging.Controllers {
|
||||
// try to load the feed
|
||||
try {
|
||||
|
||||
XNamespace atomns = "http://www.w3.org/2005/Atom" ;
|
||||
XNamespace atomns = "http://www.w3.org/2005/Atom";
|
||||
var feed = XDocument.Load(url, LoadOptions.PreserveWhitespace);
|
||||
var titleNode = feed.Descendants(atomns + "title").FirstOrDefault();
|
||||
if ( titleNode != null )
|
||||
if (titleNode != null)
|
||||
title = titleNode.Value;
|
||||
|
||||
if(String.IsNullOrWhiteSpace(title)) {
|
||||
if (String.IsNullOrWhiteSpace(title)) {
|
||||
ModelState.AddModelError("Url", T("The feed has no title.").Text);
|
||||
}
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
ModelState.AddModelError("Url", T("The url of the feed or its content is not valid.").Text);
|
||||
}
|
||||
|
||||
if ( !ModelState.IsValid )
|
||||
if (!ModelState.IsValid)
|
||||
return View(new PackagingAddSourceViewModel { Url = url });
|
||||
|
||||
_packagingSourceManager.AddSource(title, url);
|
||||
_notifier.Information(T("The feed has been added successfully."));
|
||||
|
||||
return RedirectToAction("Sources");
|
||||
}
|
||||
catch ( Exception exception ) {
|
||||
} catch (Exception exception) {
|
||||
_notifier.Error(T("Adding feed failed: {0}", exception.Message));
|
||||
return View(new PackagingAddSourceViewModel { Url = url });
|
||||
}
|
||||
@ -104,8 +105,8 @@ namespace Orchard.Packaging.Controllers {
|
||||
public ActionResult Modules(int? sourceId) {
|
||||
var selectedSource = _packagingSourceManager.GetSources().Where(s => s.Id == sourceId).FirstOrDefault();
|
||||
|
||||
var sources = selectedSource != null
|
||||
? new [] { selectedSource }
|
||||
var sources = selectedSource != null
|
||||
? new[] { selectedSource }
|
||||
: _packagingSourceManager.GetSources()
|
||||
;
|
||||
|
||||
@ -134,7 +135,7 @@ namespace Orchard.Packaging.Controllers {
|
||||
public ActionResult Install(string packageId, string version, int sourceId, string redirectTo) {
|
||||
var source = _packagingSourceManager.GetSources().Where(s => s.Id == sourceId).FirstOrDefault();
|
||||
|
||||
if(source == null) {
|
||||
if (source == null) {
|
||||
return HttpNotFound();
|
||||
}
|
||||
|
||||
@ -147,15 +148,30 @@ namespace Orchard.Packaging.Controllers {
|
||||
return View();
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("AddTheme")]
|
||||
public ActionResult AddThemePOST(string returnUrl) {
|
||||
return InstallPackage(returnUrl, Request.RawUrl);
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("RemoveTheme")]
|
||||
public ActionResult RemoveThemePOST(string themeId, string returnUrl, string retryUrl) {
|
||||
return UninstallPackage(PackagingSourceManager.ThemesFilter + themeId, returnUrl, retryUrl);
|
||||
}
|
||||
|
||||
public ActionResult AddModule(string returnUrl) {
|
||||
return View();
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("AddModule")]
|
||||
public ActionResult AddModulePOST(string returnUrl) {
|
||||
// module not used for anything o2ther than display (and that only to not have object in the view 'T')
|
||||
return InstallPackage(returnUrl, Request.RawUrl);
|
||||
}
|
||||
|
||||
public ActionResult InstallPackage(string returnUrl, string retryUrl) {
|
||||
try {
|
||||
if (string.IsNullOrWhiteSpace(Request.Files[0].FileName)) {
|
||||
if (Request.Files != null &&
|
||||
Request.Files.Count > 0 &&
|
||||
!string.IsNullOrWhiteSpace(Request.Files[0].FileName)) {
|
||||
ModelState.AddModelError("File", T("Select a file to upload.").ToString());
|
||||
}
|
||||
|
||||
@ -172,16 +188,29 @@ namespace Orchard.Packaging.Controllers {
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(returnUrl))
|
||||
return Redirect(returnUrl);
|
||||
|
||||
return RedirectToAction("Modules");
|
||||
return Redirect(returnUrl);
|
||||
} catch (Exception exception) {
|
||||
for (var scan = exception; scan != null; scan = scan.InnerException) {
|
||||
for (Exception scan = exception; scan != null; scan = scan.InnerException) {
|
||||
_notifier.Error(T("Uploading module package failed: {0}", exception.Message));
|
||||
}
|
||||
|
||||
return View("AddModule");
|
||||
return Redirect(retryUrl);
|
||||
}
|
||||
}
|
||||
|
||||
public ActionResult UninstallPackage(string id, string returnUrl, string retryUrl) {
|
||||
try {
|
||||
_packageManager.Uninstall(id, HostingEnvironment.MapPath("~/"));
|
||||
|
||||
_notifier.Information(T("Uninstalled package \"{0}\"", id));
|
||||
|
||||
return Redirect(returnUrl);
|
||||
} catch (Exception exception) {
|
||||
for (Exception scan = exception; scan != null; scan = scan.InnerException) {
|
||||
_notifier.Error(T("Uninstall failed: {0}", exception.Message));
|
||||
}
|
||||
|
||||
return Redirect(retryUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,9 +1,9 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Web.Hosting;
|
||||
using NuGet;
|
||||
using Orchard.Environment.Extensions;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.FileSystems.AppData;
|
||||
using Orchard.Localization;
|
||||
using Orchard.UI.Notify;
|
||||
using NuGetPackageManager = NuGet.PackageManager;
|
||||
@ -12,17 +12,15 @@ namespace Orchard.Packaging.Services {
|
||||
[OrchardFeature("PackagingServices")]
|
||||
public class PackageInstaller : IPackageInstaller {
|
||||
private const string PackagesPath = "packages";
|
||||
private const string SolutionFilename = "Orchard.sln";
|
||||
|
||||
private readonly INotifier _notifier;
|
||||
private readonly IExtensionManager _extensionManager;
|
||||
private readonly IAppDataFolderRoot _appDataFolderRoot;
|
||||
|
||||
public PackageInstaller(INotifier notifier,
|
||||
IExtensionManager extensionManager,
|
||||
IAppDataFolderRoot appDataFolderRoot) {
|
||||
IExtensionManager extensionManager) {
|
||||
_notifier = notifier;
|
||||
_extensionManager = extensionManager;
|
||||
_appDataFolderRoot = appDataFolderRoot;
|
||||
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
@ -57,22 +55,23 @@ namespace Orchard.Packaging.Services {
|
||||
bool installed = false;
|
||||
|
||||
// if we can access the parent directory, and the solution is inside, NuGet-install the package here
|
||||
var installedPackagesPath = Path.Combine(_appDataFolderRoot.RootFolder, PackagesPath);
|
||||
|
||||
try
|
||||
{
|
||||
var packageManager = new NuGetPackageManager(
|
||||
string solutionPath;
|
||||
var installedPackagesPath = String.Empty;
|
||||
if (TryGetSolutionPath(applicationPath, out solutionPath)) {
|
||||
installedPackagesPath = Path.Combine(solutionPath, PackagesPath);
|
||||
try {
|
||||
var packageManager = new NuGetPackageManager(
|
||||
packageRepository,
|
||||
new DefaultPackagePathResolver(location),
|
||||
new PhysicalFileSystem(installedPackagesPath) { Logger = logger }
|
||||
) { Logger = logger };
|
||||
new PhysicalFileSystem(installedPackagesPath) {Logger = logger}
|
||||
) {Logger = logger};
|
||||
|
||||
packageManager.InstallPackage(package, ignoreDependencies: true);
|
||||
installed = true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// installing the package in the appdata folder failed
|
||||
packageManager.InstallPackage(package, true);
|
||||
installed = true;
|
||||
}
|
||||
catch {
|
||||
// installing the package at the solution level failed
|
||||
}
|
||||
}
|
||||
|
||||
// if the package got installed successfully, use it, otherwise use the previous repository
|
||||
@ -95,7 +94,7 @@ namespace Orchard.Packaging.Services {
|
||||
{
|
||||
ExtensionName = package.Title ?? package.Id,
|
||||
ExtensionVersion = package.Version.ToString(),
|
||||
ExtensionType = package.Id.StartsWith("Orchard.Theme") ? DefaultExtensionTypes.Theme : DefaultExtensionTypes.Module,
|
||||
ExtensionType = package.Id.StartsWith(PackagingSourceManager.ThemesFilter) ? DefaultExtensionTypes.Theme : DefaultExtensionTypes.Module,
|
||||
ExtensionPath = applicationPath
|
||||
};
|
||||
}
|
||||
@ -104,26 +103,58 @@ namespace Orchard.Packaging.Services {
|
||||
// this logger is used to render NuGet's log on the notifier
|
||||
var logger = new NugetLogger(_notifier);
|
||||
|
||||
var installedPackagesPath = Path.Combine(_appDataFolderRoot.RootFolder, PackagesPath);
|
||||
var sourcePackageRepository = new LocalPackageRepository(installedPackagesPath);
|
||||
var project = new FileBasedProjectSystem(applicationPath) { Logger = logger };
|
||||
var projectManager = new ProjectManager(
|
||||
sourcePackageRepository,
|
||||
new DefaultPackagePathResolver(installedPackagesPath),
|
||||
project,
|
||||
new ExtensionReferenceRepository(project, sourcePackageRepository, _extensionManager)
|
||||
) { Logger = logger };
|
||||
string solutionPath;
|
||||
// if we can access the parent directory, and the solution is inside, NuGet-uninstall the package here
|
||||
if (TryGetSolutionPath(applicationPath, out solutionPath)) {
|
||||
var installedPackagesPath = Path.Combine(solutionPath, PackagesPath);
|
||||
var sourcePackageRepository = new LocalPackageRepository(installedPackagesPath);
|
||||
var project = new FileBasedProjectSystem(applicationPath) { Logger = logger };
|
||||
var projectManager = new ProjectManager(
|
||||
sourcePackageRepository,
|
||||
new DefaultPackagePathResolver(installedPackagesPath),
|
||||
project,
|
||||
new ExtensionReferenceRepository(project, sourcePackageRepository, _extensionManager)
|
||||
) { Logger = logger };
|
||||
|
||||
// add the package to the project
|
||||
projectManager.RemovePackageReference(packageId);
|
||||
// add the package to the project
|
||||
projectManager.RemovePackageReference(packageId);
|
||||
|
||||
var packageManager = new NuGetPackageManager(
|
||||
var packageManager = new NuGetPackageManager(
|
||||
sourcePackageRepository,
|
||||
new DefaultPackagePathResolver(applicationPath),
|
||||
new PhysicalFileSystem(installedPackagesPath) { Logger = logger }
|
||||
) { Logger = logger };
|
||||
) { Logger = logger };
|
||||
|
||||
packageManager.UninstallPackage(packageId);
|
||||
packageManager.UninstallPackage(packageId);
|
||||
} else {
|
||||
// otherwise delete the folder
|
||||
|
||||
string extensionPath = packageId.StartsWith(PackagingSourceManager.ThemesFilter)
|
||||
? "~/Themes/" + packageId.Substring(PackagingSourceManager.ThemesFilter.Length)
|
||||
: "~/Modules/" + packageId.Substring(PackagingSourceManager.ModulesFilter.Length);
|
||||
|
||||
string extensionFullPath = HostingEnvironment.MapPath(extensionPath);
|
||||
|
||||
if (Directory.Exists(extensionFullPath)) {
|
||||
Directory.Delete(extensionFullPath, true);
|
||||
}
|
||||
else {
|
||||
throw new OrchardException(T("Package not found: ", packageId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryGetSolutionPath(string applicationPath, out string parentPath) {
|
||||
try {
|
||||
parentPath = Directory.GetParent(applicationPath).Parent.FullName;
|
||||
var solutionPath = Path.Combine(parentPath, SolutionFilename);
|
||||
return File.Exists(solutionPath);
|
||||
}
|
||||
catch {
|
||||
// Either solution does not exist or we are running under medium trust
|
||||
parentPath = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -46,6 +46,7 @@ namespace Orchard.Packaging.Services {
|
||||
public void Uninstall(string packageId, string applicationPath) {
|
||||
_packageExpander.Uninstall(packageId, applicationPath);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -10,8 +10,8 @@ using Orchard.Packaging.Models;
|
||||
namespace Orchard.Packaging.Services {
|
||||
[OrchardFeature("Gallery")]
|
||||
public class PackagingSourceManager : IPackagingSourceManager {
|
||||
private const string ModulesFilter = "Orchard.Module.";
|
||||
private const string ThemesFilter = "Orchard.Theme.";
|
||||
public const string ModulesFilter = "Orchard.Module.";
|
||||
public const string ThemesFilter = "Orchard.Theme.";
|
||||
|
||||
private readonly IRepository<PackagingSource> _packagingSourceRecordRepository;
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,10 +1,11 @@
|
||||
<h1>@Html.TitleForPage(T("Install Theme").ToString())</h1>
|
||||
@using (Html.BeginForm("Install", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" })) {
|
||||
@Html.ValidationSummary()
|
||||
<fieldset>
|
||||
<label for="ThemeZipPath">@T("File Path to the zip file:")</label>
|
||||
<input id="ThemeZipPath" name="ThemeZipPath" type="file" class="text" value="@T("Browse")" size="64" /><br />
|
||||
<button class="primaryAction" type="submit">@T("Install")</button>
|
||||
@Html.AntiForgeryTokenOrchard()
|
||||
</fieldset>
|
||||
}
|
||||
@{
|
||||
<h1>@Html.TitleForPage(T("Install a Theme").ToString())</h1>
|
||||
using (Html.BeginFormAntiForgeryPost(Url.Action("AddTheme", new { area = "Orchard.Gallery" }), FormMethod.Post, new { enctype = "multipart/form-data" })) {
|
||||
Html.ValidationSummary();
|
||||
<fieldset>
|
||||
<label for="ModulePackage">@T("Theme Package")</label>
|
||||
<input type="file" id="ThemePackage" size="64" name="ThemePackage" />
|
||||
</fieldset>
|
||||
<button type="submit" class="primaryAction">@T("Install")</button>
|
||||
}
|
||||
}
|
@ -1,6 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
21
src/Orchard.Web/Modules/Orchard.Setup/Content/Web.config
Normal file
21
src/Orchard.Web/Modules/Orchard.Setup/Content/Web.config
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
<add path="*" verb="*" type="System.Web.StaticFileHandler" />
|
||||
</httpHandlers>
|
||||
</system.web>
|
||||
<system.webServer>
|
||||
<handlers accessPolicy="Script,Read">
|
||||
<!--
|
||||
iis7 - for any request to a file exists on disk, return it via native http module.
|
||||
accessPolicy 'Script' is to allow for a managed 404 page.
|
||||
-->
|
||||
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</configuration>
|
BIN
src/Orchard.Web/Modules/Orchard.Setup/Content/synchronizing.gif
Normal file
BIN
src/Orchard.Web/Modules/Orchard.Setup/Content/synchronizing.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
@ -74,9 +74,9 @@
|
||||
<Compile Include="ViewModels\SetupViewModel.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Setup\Index.cshtml">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="Content\synchronizing.gif" />
|
||||
<Content Include="Scripts\setup.js" />
|
||||
<Content Include="Views\Setup\Index.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
|
||||
@ -100,6 +100,16 @@
|
||||
<Content Include="Module.txt" />
|
||||
<Content Include="Views\Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Content\Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
|
21
src/Orchard.Web/Modules/Orchard.Setup/Scripts/Web.config
Normal file
21
src/Orchard.Web/Modules/Orchard.Setup/Scripts/Web.config
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
<add path="*" verb="*" type="System.Web.StaticFileHandler" />
|
||||
</httpHandlers>
|
||||
</system.web>
|
||||
<system.webServer>
|
||||
<handlers accessPolicy="Script,Read">
|
||||
<!--
|
||||
iis7 - for any request to a file exists on disk, return it via native http module.
|
||||
accessPolicy 'Script' is to allow for a managed 404 page.
|
||||
-->
|
||||
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</configuration>
|
@ -1 +1,14 @@
|
||||
$("#SiteName").closest("form").helpfullyFocus();
|
||||
(function () {
|
||||
function show() {
|
||||
window.setTimeout(function () {
|
||||
document.getElementById("throbber").style.display = "block";
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
if (document.addEventListener) {
|
||||
document.addEventListener("submit", show, false);
|
||||
}
|
||||
else {
|
||||
document.forms[0].attachEvent("onsubmit", show);
|
||||
}
|
||||
})();
|
||||
|
@ -1,5 +1,7 @@
|
||||
@model Orchard.Setup.ViewModels.SetupViewModel
|
||||
|
||||
@{
|
||||
Script.Include("setup.js").AtFoot();
|
||||
}
|
||||
<h1>@Html.TitleForPage(T("Get Started").ToString())</h1>
|
||||
|
||||
@using (Html.BeginFormAntiForgeryPost()) {
|
||||
@ -48,6 +50,18 @@ if (!Model.DatabaseIsPreconfigured) {
|
||||
</div>
|
||||
</fieldset>
|
||||
}
|
||||
<div id="throbber">
|
||||
<div class="curtain"></div>
|
||||
<div class="curtain-content">
|
||||
<div>
|
||||
<h1>@T("Configuring Orchard...")</h1>
|
||||
<p>
|
||||
<img src="@Href("../../content/synchronizing.gif")" alt="" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<button class="primaryAction" type="submit">@T("Finish Setup")</button>
|
||||
</fieldset>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
<!-- iis6 - for any request in this location, return via managed static file handler -->
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<httpHandlers>
|
||||
</httpHandlers>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user