mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Compare commits
9 Commits
issue/8208
...
issue/8879
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f4589aaaf | ||
|
|
165505b1db | ||
|
|
d9d071115c | ||
|
|
e5e71c70fb | ||
|
|
df2b7dde3d | ||
|
|
9bc5e7f1e4 | ||
|
|
890f837dfb | ||
|
|
860d6a4aeb | ||
|
|
75a4fd59a2 |
@@ -13,7 +13,6 @@ using Orchard.Data;
|
||||
using Orchard.Environment.Configuration;
|
||||
using Orchard.Services;
|
||||
using Orchard.Tests.ContentManagement;
|
||||
using Orchard.Tests.Data;
|
||||
using Orchard.Tests.Stubs;
|
||||
|
||||
namespace Orchard.Tests.Modules
|
||||
@@ -54,7 +53,6 @@ namespace Orchard.Tests.Modules
|
||||
var builder = new ContainerBuilder();
|
||||
//builder.RegisterModule(new ImplicitCollectionSupportModule());
|
||||
builder.RegisterType<InfosetHandler>().As<IContentHandler>();
|
||||
builder.RegisterInstance(new StubLocator(_session)).As<ISessionLocator>();
|
||||
builder.RegisterInstance(_clock).As<IClock>();
|
||||
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
|
||||
builder.RegisterInstance(new ShellSettings { Name = ShellSettings.DefaultName, DataProvider = "SqlCe" });
|
||||
@@ -84,4 +82,4 @@ namespace Orchard.Tests.Modules
|
||||
Trace.WriteLine("Flushed and cleared session");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,10 +312,6 @@
|
||||
<Project>{5D0F00F0-26C9-4785-AD61-B85710C60EB0}</Project>
|
||||
<Name>Orchard.Tags</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.TaskLease\Orchard.TaskLease.csproj">
|
||||
<Project>{3f72a4e9-7b72-4260-b010-c16ec54f9baf}</Project>
|
||||
<Name>Orchard.TaskLease</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.Themes\Orchard.Themes.csproj">
|
||||
<Project>{CDE24A24-01D3-403C-84B9-37722E18DFB7}</Project>
|
||||
<Name>Orchard.Themes</Name>
|
||||
|
||||
@@ -87,13 +87,9 @@ namespace Orchard.Tests.ContentManagement.Handlers.Coordinators
|
||||
var stub = shapeHelper.Stub(Foo: string.Join(",", part.Foo));
|
||||
if (!string.IsNullOrWhiteSpace(displayType))
|
||||
stub.Metadata.Type = string.Format("{0}.{1}", stub.Metadata.Type, displayType);
|
||||
return ContentShape(stub).Location("TopMeta");
|
||||
|
||||
//var viewModel = new StubViewModel { Foo = string.Join(",", part.Foo) };
|
||||
//if (displayType.StartsWith("Summary"))
|
||||
// return ContentPartTemplate(viewModel, "StubViewModelTerse").Location("TopMeta");
|
||||
|
||||
//return ContentPartTemplate(viewModel).Location("TopMeta");
|
||||
return ContentShape("Parts_Stub", () => {
|
||||
return string.Empty;
|
||||
}).Location("TopMeta");
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(StubPart part, dynamic shapeHelper)
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
using System;
|
||||
using NHibernate;
|
||||
using Orchard.Data;
|
||||
|
||||
namespace Orchard.Tests.Data
|
||||
{
|
||||
public class StubLocator : ISessionLocator
|
||||
{
|
||||
private readonly ISession _session;
|
||||
|
||||
public StubLocator(ISession session)
|
||||
{
|
||||
_session = session;
|
||||
}
|
||||
|
||||
#region ISessionLocator Members
|
||||
|
||||
public ISession For(Type entityType)
|
||||
{
|
||||
return _session;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ using Orchard.Data;
|
||||
using Orchard.Environment.Configuration;
|
||||
using Orchard.Services;
|
||||
using Orchard.Tests.ContentManagement;
|
||||
using Orchard.Tests.Data;
|
||||
using Orchard.Tests.Stubs;
|
||||
|
||||
namespace Orchard.Tests
|
||||
@@ -50,7 +49,6 @@ namespace Orchard.Tests
|
||||
var builder = new ContainerBuilder();
|
||||
//builder.RegisterModule(new ImplicitCollectionSupportModule());
|
||||
builder.RegisterType<InfosetHandler>().As<IContentHandler>();
|
||||
builder.RegisterInstance(new StubLocator(_session)).As<ISessionLocator>();
|
||||
builder.RegisterInstance(_clock).As<IClock>();
|
||||
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();
|
||||
builder.RegisterInstance(_shellSettings = new ShellSettings { Name = ShellSettings.DefaultName, DataProvider = "SqlCe" });
|
||||
@@ -80,4 +78,4 @@ namespace Orchard.Tests
|
||||
Trace.WriteLine("Flushed and cleared session");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,7 +268,6 @@
|
||||
<Compile Include="Data\RepositoryTests.cs" />
|
||||
<Compile Include="Data\ProvidersTests.cs" />
|
||||
<Compile Include="Data\Bags\SettingsTests.cs" />
|
||||
<Compile Include="Data\StubLocator.cs" />
|
||||
<Compile Include="DisplayManagement\ArgsUtility.cs" />
|
||||
<Compile Include="DisplayManagement\CompositeTests.cs" />
|
||||
<Compile Include="DisplayManagement\Descriptors\LocationParserTests.cs" />
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Orchard.Core.Common.Utilities
|
||||
{
|
||||
[Obsolete("Use Orchard.ContentManagement.Utilities.LazyField instead.")]
|
||||
public class LazyField<T>
|
||||
{
|
||||
private T _value;
|
||||
private Func<T> _loader;
|
||||
private Func<T, T> _setter;
|
||||
|
||||
public T Value
|
||||
{
|
||||
get { return GetValue(); }
|
||||
set { SetValue(value); }
|
||||
}
|
||||
|
||||
public void Loader(Func<T> loader)
|
||||
{
|
||||
_loader = loader;
|
||||
}
|
||||
|
||||
public void Setter(Func<T, T> setter)
|
||||
{
|
||||
_setter = setter;
|
||||
}
|
||||
|
||||
private T GetValue()
|
||||
{
|
||||
if (_loader != null)
|
||||
{
|
||||
_value = _loader();
|
||||
_loader = null;
|
||||
}
|
||||
return _value;
|
||||
}
|
||||
|
||||
private void SetValue(T value)
|
||||
{
|
||||
_loader = null;
|
||||
if (_setter != null)
|
||||
{
|
||||
_value = _setter(value);
|
||||
}
|
||||
else
|
||||
{
|
||||
_value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
using System;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.Drivers;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.Data;
|
||||
|
||||
namespace Orchard.Core.Containers.Drivers
|
||||
{
|
||||
[Obsolete("Use Fields instead.")]
|
||||
public class CustomPropertiesPartDriver : ContentPartDriver<CustomPropertiesPart>
|
||||
{
|
||||
protected override DriverResult Editor(CustomPropertiesPart part, dynamic shapeHelper)
|
||||
{
|
||||
return Editor(part, (IUpdateModel)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");
|
||||
});
|
||||
}
|
||||
|
||||
protected override void Importing(CustomPropertiesPart part, ImportContentContext context)
|
||||
{
|
||||
// Don't do anything if the tag is not specified.
|
||||
if (context.Data.Element(part.PartDefinition.Name) == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
context.ImportAttribute(part.PartDefinition.Name, "CustomOne", customOne =>
|
||||
part.Record.CustomOne = customOne
|
||||
);
|
||||
|
||||
context.ImportAttribute(part.PartDefinition.Name, "CustomTwo", customTwo =>
|
||||
part.Record.CustomTwo = customTwo
|
||||
);
|
||||
|
||||
context.ImportAttribute(part.PartDefinition.Name, "CustomThree", customThree =>
|
||||
part.Record.CustomThree = customThree
|
||||
);
|
||||
}
|
||||
|
||||
protected override void Exporting(CustomPropertiesPart part, ExportContentContext context)
|
||||
{
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("CustomOne", part.Record.CustomOne);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("CustomTwo", part.Record.CustomTwo);
|
||||
context.Element(part.PartDefinition.Name).SetAttributeValue("CustomThree", part.Record.CustomThree);
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("Use Fields instead.")]
|
||||
public class CustomPropertiesPartHandler : ContentHandler
|
||||
{
|
||||
public CustomPropertiesPartHandler(IRepository<CustomPropertiesPartRecord> repository)
|
||||
{
|
||||
Filters.Add(StorageFilter.For(repository));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,59 +2,12 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Core.Common.Models;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.Core.Title.Models;
|
||||
|
||||
namespace Orchard.Core.Containers.Extensions
|
||||
{
|
||||
[Obsolete]
|
||||
public static class ContentQueryExtensions
|
||||
{
|
||||
public static IContentQuery<T> OrderBy<T>(this IContentQuery<T> query, string partAndProperty, bool descendingOrder) where T : IContent
|
||||
{
|
||||
//todo: (heskew) order by custom part properties
|
||||
switch (partAndProperty)
|
||||
{
|
||||
case "ContainablePart.Weight":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<ContainablePartRecord>(record => record.Position)
|
||||
: query.OrderBy<ContainablePartRecord>(record => record.Position);
|
||||
break;
|
||||
case "TitlePart.Title":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<TitlePartRecord>(record => record.Title)
|
||||
: query.OrderBy<TitlePartRecord>(record => record.Title);
|
||||
break;
|
||||
case "CustomPropertiesPart.CustomOne":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<CustomPropertiesPartRecord>(record => record.CustomOne)
|
||||
: query.OrderBy<CustomPropertiesPartRecord>(record => record.CustomOne);
|
||||
break;
|
||||
case "CustomPropertiesPart.CustomTwo":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<CustomPropertiesPartRecord>(record => record.CustomTwo)
|
||||
: query.OrderBy<CustomPropertiesPartRecord>(record => record.CustomTwo);
|
||||
break;
|
||||
case "CustomPropertiesPart.CustomThree":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<CustomPropertiesPartRecord>(record => record.CustomThree)
|
||||
: query.OrderBy<CustomPropertiesPartRecord>(record => record.CustomThree);
|
||||
break;
|
||||
case "CommonPart.CreatedUtc":
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<CommonPartRecord>(record => record.CreatedUtc)
|
||||
: query.OrderBy<CommonPartRecord>(record => record.CreatedUtc);
|
||||
break;
|
||||
default: // "CommonPart.PublishedUtc"
|
||||
query = descendingOrder
|
||||
? query.OrderByDescending<CommonPartRecord>(record => record.PublishedUtc)
|
||||
: query.OrderBy<CommonPartRecord>(record => record.PublishedUtc);
|
||||
break;
|
||||
}
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
public static IContentQuery<ContentItem> Where(this IContentQuery<ContentItem> query, string partAndProperty, string comparisonOperator, string comparisonValue)
|
||||
{
|
||||
var filterKey = string.Format("{0}|{1}", partAndProperty, comparisonOperator);
|
||||
@@ -74,19 +27,6 @@ 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)))},
|
||||
{"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
|
||||
{"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)))},
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
using System;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ContentManagement.Records;
|
||||
|
||||
namespace Orchard.Core.Containers.Models
|
||||
{
|
||||
[Obsolete("Use content fields instead.")]
|
||||
public class CustomPropertiesPart : ContentPart<CustomPropertiesPartRecord>
|
||||
{
|
||||
}
|
||||
|
||||
[Obsolete("Use content fields instead.")]
|
||||
public class CustomPropertiesPartRecord : ContentPartRecord
|
||||
{
|
||||
public virtual string CustomOne { get; set; }
|
||||
public virtual string CustomTwo { get; set; }
|
||||
public virtual string CustomThree { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
<Placement>
|
||||
<Placement>
|
||||
<!-- available display shapes -->
|
||||
<!--
|
||||
Parts_Container_Contained
|
||||
@@ -9,7 +9,6 @@
|
||||
</Match>
|
||||
<Place Parts_Containable_Edit="Content:2"/>
|
||||
<Place Parts_Container_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"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
@model Orchard.Core.Containers.ViewModels.ContainerWidgetViewModel
|
||||
@model Orchard.Core.Containers.ViewModels.ContainerWidgetViewModel
|
||||
@{
|
||||
Script.Require("ShapesBase");
|
||||
}
|
||||
@@ -19,9 +19,6 @@
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "CommonPart.CreatedUtc", T("Date Created").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "CommonPart.PublishedUtc", T("Date Published").Text)
|
||||
@Html.SelectOption(Model.Part.Record.OrderByProperty, "TitlePart.Title", T("Title (Title Part)").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)SortDirection.Ascending, T("Ascending").Text)
|
||||
@@ -39,9 +36,6 @@
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "CommonPart.CreatedUtx", T("Date Created").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "CommonPart.PublishedUtc", T("Date Published").Text)
|
||||
@Html.SelectOption(Model.Part.Record.FilterByProperty, "TitlePart.Title", T("Title (Title Part)").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,13 +0,0 @@
|
||||
@model Orchard.Core.Containers.Models.CustomPropertiesPart
|
||||
<fieldset>
|
||||
@Html.LabelFor(m => m.Record.CustomOne, T("Custom One"))
|
||||
@Html.EditorFor(m => m.Record.CustomOne)
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
@Html.LabelFor(m => m.Record.CustomTwo, T("Custom Two"))
|
||||
@Html.EditorFor(m => m.Record.CustomTwo)
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
@Html.LabelFor(m => m.Record.CustomThree, T("Custom Three"))
|
||||
@Html.EditorFor(m => m.Record.CustomThree)
|
||||
</fieldset>
|
||||
@@ -2,7 +2,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
using Orchard.ContentManagement;
|
||||
@@ -17,6 +16,7 @@ using Orchard.Data;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Localization.Services;
|
||||
using Orchard.Logging;
|
||||
using Orchard.Mvc;
|
||||
using Orchard.Mvc.Extensions;
|
||||
using Orchard.Mvc.Html;
|
||||
using Orchard.Settings;
|
||||
@@ -166,7 +166,7 @@ namespace Orchard.Core.Contents.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("List")]
|
||||
[Mvc.FormValueRequired("submit.Filter")]
|
||||
[FormValueRequired("submit.Filter")]
|
||||
public ActionResult ListFilterPOST(ContentOptions options)
|
||||
{
|
||||
var routeValues = ControllerContext.RouteData.Values;
|
||||
@@ -189,7 +189,7 @@ namespace Orchard.Core.Contents.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("List")]
|
||||
[Mvc.FormValueRequired("submit.BulkEdit")]
|
||||
[FormValueRequired("submit.BulkEdit")]
|
||||
public ActionResult ListPOST(ContentOptions options, IEnumerable<int> itemIds, string returnUrl)
|
||||
{
|
||||
if (itemIds != null)
|
||||
@@ -295,14 +295,14 @@ namespace Orchard.Core.Contents.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Create")]
|
||||
[Mvc.FormValueRequired("submit.Save")]
|
||||
[FormValueRequired("submit.Save")]
|
||||
public ActionResult CreatePOST(string id, string returnUrl)
|
||||
{
|
||||
return CreatePOST(id, returnUrl, contentItem => { return false; });
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Create")]
|
||||
[Mvc.FormValueRequired("submit.Publish")]
|
||||
[FormValueRequired("submit.Publish")]
|
||||
public ActionResult CreateAndPublishPOST(string id, string returnUrl)
|
||||
{
|
||||
|
||||
@@ -381,14 +381,14 @@ namespace Orchard.Core.Contents.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Save")]
|
||||
[FormValueRequired("submit.Save")]
|
||||
public ActionResult EditPOST(int id, string returnUrl)
|
||||
{
|
||||
return EditPOST(id, returnUrl, contentItem => { return false; });
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Publish")]
|
||||
[FormValueRequired("submit.Publish")]
|
||||
public ActionResult EditAndPublishPOST(int id, string returnUrl)
|
||||
{
|
||||
var content = _contentManager.Get(id, VersionOptions.Latest);
|
||||
@@ -414,7 +414,7 @@ namespace Orchard.Core.Contents.Controllers
|
||||
/// <param name="returnUrl"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Unpublish")]
|
||||
[FormValueRequired("submit.Unpublish")]
|
||||
public ActionResult EditUnpublishPOST(int id, string returnUrl)
|
||||
{
|
||||
return Unpublish(id, returnUrl);
|
||||
@@ -428,7 +428,7 @@ namespace Orchard.Core.Contents.Controllers
|
||||
/// <param name="returnUrl"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Delete")]
|
||||
[FormValueRequired("submit.Delete")]
|
||||
public ActionResult EditDeletePOST(int id, string returnUrl)
|
||||
{
|
||||
return Remove(id, returnUrl);
|
||||
@@ -623,21 +623,4 @@ namespace Orchard.Core.Contents.Controllers
|
||||
ModelState.AddModelError(key, errorMessage.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("Use Orchard.Mvc.FormValueRequiredAttribute instead.")]
|
||||
public class FormValueRequiredAttribute : ActionMethodSelectorAttribute
|
||||
{
|
||||
private readonly string _submitButtonName;
|
||||
|
||||
public FormValueRequiredAttribute(string submitButtonName)
|
||||
{
|
||||
_submitButtonName = submitButtonName;
|
||||
}
|
||||
|
||||
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
|
||||
{
|
||||
var value = controllerContext.HttpContext.Request.Form[_submitButtonName];
|
||||
return !string.IsNullOrEmpty(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ namespace Orchard.Core.Navigation.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Publish")]
|
||||
[FormValueRequired("submit.Publish")]
|
||||
public ActionResult EditPOST(int id, string returnUrl)
|
||||
{
|
||||
return EditPOST(id, returnUrl, contentItem =>
|
||||
@@ -346,7 +346,7 @@ namespace Orchard.Core.Navigation.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Unpublish")]
|
||||
[FormValueRequired("submit.Unpublish")]
|
||||
public ActionResult EditUnpublishPOST(int id) => Unpublish(id);
|
||||
|
||||
private MenuItemEntry CreateMenuItemEntries(MenuPart menuPart)
|
||||
|
||||
@@ -148,7 +148,6 @@
|
||||
<Compile Include="Common\Drivers\TextFieldDriver.cs" />
|
||||
<Compile Include="Containers\Drivers\ContainerWidgetPartDriver.cs" />
|
||||
<Compile Include="Containers\Extensions\ContentDefinitionManagerExtensions.cs" />
|
||||
<Compile Include="Containers\Drivers\CustomPropertiesDriver.cs" />
|
||||
<Compile Include="Containers\Extensions\ContentQueryExtensions.cs" />
|
||||
<Compile Include="Containers\Handlers\ContainablePartHandler.cs" />
|
||||
<Compile Include="Containers\Handlers\ContainerPartHandler.cs" />
|
||||
@@ -161,7 +160,6 @@
|
||||
<Compile Include="Common\Shapes.cs" />
|
||||
<Compile Include="Common\Fields\TextField.cs" />
|
||||
<Compile Include="Containers\Models\ContainerWidgetPart.cs" />
|
||||
<Compile Include="Containers\Models\CustomPropertiesPart.cs" />
|
||||
<Compile Include="Containers\Services\ContainerService.cs" />
|
||||
<Compile Include="Containers\Services\ListViewProvider.cs" />
|
||||
<Compile Include="Containers\Services\ListViewService.cs" />
|
||||
@@ -219,7 +217,6 @@
|
||||
<Compile Include="Navigation\ViewModels\MenuPartViewModel.cs" />
|
||||
<Compile Include="Navigation\ViewModels\MenuWidgetViewModel.cs" />
|
||||
<Compile Include="Navigation\Migrations.cs" />
|
||||
<Compile Include="Common\Utilities\LazyField.cs" />
|
||||
<Compile Include="Common\Handlers\CommonPartHandler.cs" />
|
||||
<Compile Include="Common\Models\CommonPart.cs" />
|
||||
<Compile Include="Common\Handlers\BodyPartHandler.cs" />
|
||||
@@ -456,7 +453,6 @@
|
||||
<Content Include="Containers\Views\DefinitionTemplates\ContainerPartSettings.cshtml" />
|
||||
<Content Include="Containers\Views\DefinitionTemplates\ContainerTypePartSettingsViewModel.cshtml" />
|
||||
<Content Include="Containers\Views\EditorTemplates\Containable.cshtml" />
|
||||
<Content Include="Containers\Views\EditorTemplates\CustomProperties.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Shapes\Views\ShapeResult\Display.cshtml" />
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Orchard.Core.Settings
|
||||
{
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ManageSettings = new Permission { Description = "Manage Settings", Name = "ManageSettings" };
|
||||
public static readonly Permission ManageSettings = new Permission { Description = "Manage Settings", Name = "ManageSettings", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -28,4 +28,4 @@ namespace Orchard.Core.Settings
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Lucene.Models
|
||||
public string GetString(string name)
|
||||
{
|
||||
var field = _doc.GetField(name);
|
||||
return field == null ? null : field.StringValue;
|
||||
return field?.StringValue;
|
||||
}
|
||||
|
||||
public DateTime GetDateTime(string name)
|
||||
@@ -46,5 +46,11 @@ namespace Lucene.Models
|
||||
var field = _doc.GetField(name);
|
||||
return field == null ? DateTime.MinValue : DateTools.StringToDate(field.StringValue);
|
||||
}
|
||||
|
||||
public DateTime? GetNullableDateTime(string name)
|
||||
{
|
||||
var field = _doc.GetField(name);
|
||||
return field == null ? default(DateTime?) : DateTools.StringToDate(field.StringValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,10 +6,10 @@ namespace Orchard.AuditTrail
|
||||
{
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ViewAuditTrail = new Permission { Description = "View audit trail", Name = "ViewAuditTrail" };
|
||||
public static readonly Permission ManageAuditTrailSettings = new Permission { Description = "Manage audit trail settings", Name = "ManageAuditTrailSettings" };
|
||||
public static readonly Permission ImportAuditTrail = new Permission { Description = "Import audit trail", Name = "ImportAuditTrail" };
|
||||
public static readonly Permission ManageClientIpAddressSettings = new Permission { Description = "Manage client IP address settings", Name = "ManageClientIpAddressSettings" };
|
||||
public static readonly Permission ViewAuditTrail = new Permission { Description = "View audit trail", Name = "ViewAuditTrail", IsSecurityCritical = true };
|
||||
public static readonly Permission ManageAuditTrailSettings = new Permission { Description = "Manage audit trail settings", Name = "ManageAuditTrailSettings", IsSecurityCritical = true };
|
||||
public static readonly Permission ImportAuditTrail = new Permission { Description = "Import audit trail", Name = "ImportAuditTrail", IsSecurityCritical = true };
|
||||
public static readonly Permission ManageClientIpAddressSettings = new Permission { Description = "Manage client IP address settings", Name = "ManageClientIpAddressSettings", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -35,4 +35,4 @@ namespace Orchard.AuditTrail
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ namespace Orchard.Blogs.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Delete")]
|
||||
[FormValueRequired("submit.Delete")]
|
||||
public ActionResult EditDeletePOST(int blogId, int postId, string returnUrl)
|
||||
{
|
||||
return Delete(blogId, postId);
|
||||
@@ -180,7 +180,7 @@ namespace Orchard.Blogs.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Unpublish")]
|
||||
[FormValueRequired("submit.Unpublish")]
|
||||
public ActionResult EditUnpublishPOST(int blogId, int postId, string returnUrl)
|
||||
{
|
||||
return Unpublish(blogId, postId);
|
||||
@@ -331,4 +331,4 @@ namespace Orchard.Blogs.Controllers
|
||||
ModelState.AddModelError(key, errorMessage.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
using System;
|
||||
|
||||
namespace Orchard.Comments.Models
|
||||
{
|
||||
public enum CommentStatus
|
||||
{
|
||||
Pending,
|
||||
Approved,
|
||||
|
||||
[Obsolete]
|
||||
Spam
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
@model Orchard.Comments.Models.CommentSettingsPart
|
||||
@model Orchard.Comments.Models.CommentSettingsPart
|
||||
@using Orchard.Messaging.Services;
|
||||
|
||||
@{
|
||||
var messageManager = WorkContext.Resolve<IMessageManager>();
|
||||
var emailEnabled = messageManager.GetAvailableChannelServices().Contains("email");
|
||||
var messageChannelSelector = WorkContext.Resolve<IMessageChannelSelector>();
|
||||
var emailEnabled = messageChannelSelector.GetChannel("Email", null) != null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Orchard.ContentTypes
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ViewContentTypes = new Permission { Name = "ViewContentTypes", Description = "View content types" };
|
||||
public static readonly Permission EditContentTypes = new Permission { Name = "EditContentTypes", Description = "Edit content types" };
|
||||
public static readonly Permission EditContentTypes = new Permission { Name = "EditContentTypes", Description = "Edit content types", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
|
||||
@@ -147,8 +147,6 @@
|
||||
<Compile Include="Services\DefaultEmailMessageChannelSelector.cs" />
|
||||
<Compile Include="Services\ISmtpChannel.cs" />
|
||||
<Compile Include="Services\SmtpMessageChannel.cs" />
|
||||
<Compile Include="Services\EmailMessageEventHandler.cs" />
|
||||
<Compile Include="Services\EmailMessagingChannel.cs" />
|
||||
<Compile Include="Services\MissingSettingsBanner.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,14 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Core.Common.Models;
|
||||
using Orchard.Events;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Messaging.Events;
|
||||
using Orchard.Messaging.Models;
|
||||
using Orchard.Messaging.Services;
|
||||
using Orchard.Security;
|
||||
|
||||
namespace Orchard.Email.Rules
|
||||
{
|
||||
@@ -17,129 +7,4 @@ namespace Orchard.Email.Rules
|
||||
{
|
||||
void Describe(dynamic describe);
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
public class MailActions : IActionProvider
|
||||
{
|
||||
private readonly IMessageManager _messageManager;
|
||||
private readonly IOrchardServices _orchardServices;
|
||||
private readonly IMembershipService _membershipService;
|
||||
public const string MessageType = "ActionEmail";
|
||||
|
||||
public MailActions(
|
||||
IMessageManager messageManager,
|
||||
IOrchardServices orchardServices,
|
||||
IMembershipService membershipService)
|
||||
{
|
||||
_messageManager = messageManager;
|
||||
_orchardServices = orchardServices;
|
||||
_membershipService = membershipService;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public void Describe(dynamic describe)
|
||||
{
|
||||
Func<dynamic, LocalizedString> display = context => T("Send an e-mail");
|
||||
|
||||
describe.For("Messaging", T("Messaging"), T("Messages"))
|
||||
.Element(
|
||||
"SendEmail", T("Send e-mail"), T("Sends an e-mail to a specific user."), (Func<dynamic, bool>)Send,
|
||||
display, "ActionEmail");
|
||||
}
|
||||
|
||||
private bool Send(dynamic context)
|
||||
{
|
||||
var recipient = context.Properties["Recipient"];
|
||||
var properties = new Dictionary<string, string>(context.Properties);
|
||||
|
||||
if (recipient == "owner")
|
||||
{
|
||||
var content = context.Tokens["Content"] as IContent;
|
||||
if (content.Has<CommonPart>())
|
||||
{
|
||||
var owner = content.As<CommonPart>().Owner;
|
||||
if (owner != null && owner.ContentItem != null && owner.ContentItem.Record != null)
|
||||
{
|
||||
_messageManager.Send(owner.ContentItem.Record, MessageType, "email", properties);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (recipient == "author")
|
||||
{
|
||||
var user = _orchardServices.WorkContext.CurrentUser;
|
||||
|
||||
// can be null if user is anonymous
|
||||
if (user != null && string.IsNullOrWhiteSpace(user.Email))
|
||||
{
|
||||
_messageManager.Send(user.ContentItem.Record, MessageType, "email", properties);
|
||||
}
|
||||
}
|
||||
else if (recipient == "admin")
|
||||
{
|
||||
var username = _orchardServices.WorkContext.CurrentSite.SuperUser;
|
||||
var user = _membershipService.GetUser(username);
|
||||
|
||||
// can be null if user is no super user is defined
|
||||
if (user != null && !string.IsNullOrWhiteSpace(user.Email))
|
||||
{
|
||||
_messageManager.Send(user.ContentItem.Record, MessageType, "email", properties);
|
||||
}
|
||||
}
|
||||
else if (recipient == "other")
|
||||
{
|
||||
var email = properties["RecipientOther"];
|
||||
_messageManager.Send(SplitEmail(email), MessageType, "email", properties);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static IEnumerable<string> SplitEmail(string commaSeparated)
|
||||
{
|
||||
return commaSeparated.Split(new[] { ',', ';' });
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete]
|
||||
public class MailActionsHandler : IMessageEventHandler
|
||||
{
|
||||
public MailActionsHandler()
|
||||
{
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public void Sending(MessageContext context)
|
||||
{
|
||||
if (context.MessagePrepared)
|
||||
return;
|
||||
|
||||
if ((context.Recipients == null || !context.Recipients.Any()) &&
|
||||
(context.Addresses == null || !context.Addresses.Any()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (context.Type)
|
||||
{
|
||||
case MailActions.MessageType:
|
||||
context.MailMessage.Subject = context.Properties["Subject"];
|
||||
context.MailMessage.Body = context.Properties["Body"];
|
||||
FormatEmailBody(context);
|
||||
context.MessagePrepared = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private static void FormatEmailBody(MessageContext context)
|
||||
{
|
||||
context.MailMessage.Body = "<p style=\"font-family:Arial, Helvetica; font-size:10pt;\">" + context.MailMessage.Body + "</p>";
|
||||
}
|
||||
|
||||
public void Sent(MessageContext context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
using System;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Logging;
|
||||
using Orchard.Messaging.Events;
|
||||
using Orchard.Messaging.Models;
|
||||
using Orchard.Security;
|
||||
|
||||
namespace Orchard.Email.Services
|
||||
{
|
||||
[Obsolete]
|
||||
public class EmailMessageEventHandler : IMessageEventHandler
|
||||
{
|
||||
private readonly IContentManager _contentManager;
|
||||
|
||||
public EmailMessageEventHandler(IContentManager contentManager)
|
||||
{
|
||||
_contentManager = contentManager;
|
||||
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
public ILogger Logger { get; set; }
|
||||
|
||||
public void Sending(MessageContext context)
|
||||
{
|
||||
if (context.Recipients != null)
|
||||
{
|
||||
foreach (var rec in context.Recipients)
|
||||
{
|
||||
var contentItem = _contentManager.Get(rec.Id);
|
||||
if (contentItem == null)
|
||||
return;
|
||||
|
||||
var recipient = contentItem.As<IUser>();
|
||||
if (recipient == null)
|
||||
return;
|
||||
|
||||
context.MailMessage.To.Add(recipient.Email);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var address in context.Addresses)
|
||||
{
|
||||
try
|
||||
{
|
||||
context.MailMessage.To.Add(address);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Error(e, "Unexpected error while trying to send email.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Sent(MessageContext context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Mail;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Email.Models;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Logging;
|
||||
using Orchard.Messaging.Models;
|
||||
using Orchard.Messaging.Services;
|
||||
|
||||
namespace Orchard.Email.Services
|
||||
{
|
||||
[Obsolete("Use ISmtpChannel instead")]
|
||||
public class EmailMessagingChannel : IMessagingChannel
|
||||
{
|
||||
private readonly IOrchardServices _orchardServices;
|
||||
|
||||
public const string EmailService = "email";
|
||||
|
||||
public EmailMessagingChannel(IOrchardServices orchardServices)
|
||||
{
|
||||
_orchardServices = orchardServices;
|
||||
Logger = NullLogger.Instance;
|
||||
}
|
||||
|
||||
public ILogger Logger { get; set; }
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public void SendMessage(MessageContext context)
|
||||
{
|
||||
if (!context.Service.Equals(EmailService, StringComparison.InvariantCultureIgnoreCase))
|
||||
return;
|
||||
|
||||
var smtpSettings = _orchardServices.WorkContext.CurrentSite.As<SmtpSettingsPart>();
|
||||
|
||||
// can't process emails if the Smtp settings have not yet been set
|
||||
if (smtpSettings == null || !smtpSettings.IsValid())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
using (var smtpClient = new SmtpClient())
|
||||
{
|
||||
smtpClient.UseDefaultCredentials = !smtpSettings.RequireCredentials;
|
||||
if (!smtpClient.UseDefaultCredentials && !string.IsNullOrWhiteSpace(smtpSettings.UserName))
|
||||
{
|
||||
smtpClient.Credentials = new NetworkCredential(smtpSettings.UserName, smtpSettings.Password);
|
||||
}
|
||||
|
||||
if (context.MailMessage.To.Count == 0)
|
||||
{
|
||||
Logger.Error("Recipient is missing an email address");
|
||||
return;
|
||||
}
|
||||
|
||||
if (smtpSettings.Host != null)
|
||||
smtpClient.Host = smtpSettings.Host;
|
||||
|
||||
smtpClient.Port = smtpSettings.Port;
|
||||
smtpClient.EnableSsl = smtpSettings.EnableSsl;
|
||||
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
|
||||
|
||||
context.MailMessage.From = new MailAddress(smtpSettings.FromAddress);
|
||||
context.MailMessage.IsBodyHtml = !string.IsNullOrWhiteSpace(context.MailMessage.Body) && context.MailMessage.Body.Contains("<") && context.MailMessage.Body.Contains(">");
|
||||
|
||||
try
|
||||
{
|
||||
smtpClient.Send(context.MailMessage);
|
||||
Logger.Debug("Message sent to {0}: {1}", context.MailMessage.To[0].Address, context.Type);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Error(e, "An unexpected error while sending a message to {0}: {1}", context.MailMessage.To[0].Address, context.Type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<string> GetAvailableServices()
|
||||
{
|
||||
return new[] { EmailService };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
var awaiting = [];
|
||||
|
||||
$(imeImage).load(function () {
|
||||
$(imeImage).on('load', function () {
|
||||
$(imeImage).off('load');
|
||||
for (var i = 0; i < awaiting.length; i++) {
|
||||
awaiting[i]();
|
||||
|
||||
@@ -51,8 +51,6 @@ namespace Orchard.ImportExport.Commands
|
||||
[OrchardSwitch]
|
||||
public bool Data { get; set; }
|
||||
[OrchardSwitch]
|
||||
public string Steps { get; set; }
|
||||
[OrchardSwitch]
|
||||
public string Version { get; set; }
|
||||
[OrchardSwitch]
|
||||
public bool SiteSettings { get; set; }
|
||||
@@ -90,8 +88,8 @@ namespace Orchard.ImportExport.Commands
|
||||
}
|
||||
|
||||
[CommandName("export file")]
|
||||
[CommandHelp("export file [/Filename:<path>] [/ConfigFilename:<path>] [/Types:<type-name-1>, ... ,<type-name-n>] [/Metadata:true|false] [/Data:true|false] [/Version:Published|Draft|Latest] [/SiteSettings:true|false] [/Steps:<custom-step-1>, ... ,<custom-step-n>]\r\n\t" + "Create an export file according to the specified options.")]
|
||||
[OrchardSwitches("Filename,ConfigFilename,Types,Metadata,Data,Version,SiteSettings,Steps")]
|
||||
[CommandHelp("export file [/Filename:<path>] [/ConfigFilename:<path>] [/Types:<type-name-1>, ... ,<type-name-n>] [/Metadata:true|false] [/Data:true|false] [/Version:Published|Draft|Latest] [/SiteSettings:true|false]\r\n\t" + "Create an export file according to the specified options.")]
|
||||
[OrchardSwitches("Filename,ConfigFilename,Types,Metadata,Data,Version,SiteSettings")]
|
||||
public void ExportFile()
|
||||
{
|
||||
// Impersonate the Site owner.
|
||||
@@ -99,7 +97,7 @@ namespace Orchard.ImportExport.Commands
|
||||
|
||||
IEnumerable<IExportAction> actions;
|
||||
|
||||
if (!IsAnySwitchDefined("ConfigFilename", "Types", "Metadata", "Version", "SiteSettings", "Steps"))
|
||||
if (!IsAnySwitchDefined("ConfigFilename", "Types", "Metadata", "Version", "SiteSettings"))
|
||||
{
|
||||
// Get default configured actions.
|
||||
actions = GetDefaultConfiguration();
|
||||
@@ -107,7 +105,7 @@ namespace Orchard.ImportExport.Commands
|
||||
else
|
||||
{
|
||||
// Read config file if specified.
|
||||
var configurationDocument = UpdateExportConfiguration(ReadExportConfigurationFile(ConfigFilename), Types, Metadata, Data, Version, SiteSettings, Steps);
|
||||
var configurationDocument = UpdateExportConfiguration(ReadExportConfigurationFile(ConfigFilename), Types, Metadata, Data, Version, SiteSettings);
|
||||
|
||||
// Get all the steps based on the configuration.
|
||||
actions = _importExportService.ParseExportActions(configurationDocument);
|
||||
@@ -145,7 +143,7 @@ namespace Orchard.ImportExport.Commands
|
||||
return _exportActions;
|
||||
}
|
||||
|
||||
private XDocument UpdateExportConfiguration(XDocument configurationDocument, string types, bool metadata, bool data, string version, bool siteSettings, string customSteps)
|
||||
private XDocument UpdateExportConfiguration(XDocument configurationDocument, string types, bool metadata, bool data, string version, bool siteSettings)
|
||||
{
|
||||
var buildRecipeElement = GetOrCreateElement(configurationDocument.Root, "BuildRecipe");
|
||||
var stepsElement = GetOrCreateElement(buildRecipeElement, "Steps");
|
||||
@@ -182,20 +180,6 @@ namespace Orchard.ImportExport.Commands
|
||||
GetOrCreateElement(stepsElement, "Settings");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(customSteps))
|
||||
{
|
||||
var customStepsList = customSteps.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
foreach (var customStepName in customStepsList)
|
||||
{
|
||||
GetOrCreateElement(stepsElement, customStepName);
|
||||
}
|
||||
|
||||
//Still need CustomStepsStep to support older export steps created by users
|
||||
var customStepsElement = GetOrCreateElement(stepsElement, "CustomSteps");
|
||||
customStepsElement.Attr("Steps", customSteps);
|
||||
}
|
||||
|
||||
return configurationDocument;
|
||||
}
|
||||
|
||||
@@ -229,4 +213,4 @@ namespace Orchard.ImportExport.Commands
|
||||
return childElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Orchard.ImportExport.Models
|
||||
{
|
||||
public class ExportContext
|
||||
{
|
||||
public XDocument Document { get; set; }
|
||||
[Obsolete]
|
||||
public ExportOptions ExportOptions { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Orchard.ImportExport.Models
|
||||
{
|
||||
[Obsolete]
|
||||
public class ExportOptions
|
||||
{
|
||||
public IEnumerable<string> CustomSteps { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -114,7 +114,6 @@
|
||||
<Compile Include="Models\ConfigureImportActionsContext.cs" />
|
||||
<Compile Include="Commands\ImportExportCommands.cs" />
|
||||
<Compile Include="Controllers\AdminController.cs" />
|
||||
<Compile Include="Models\ExportOptions.cs" />
|
||||
<Compile Include="Permissions.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Providers\ExportActions\BuildRecipeAction.cs" />
|
||||
@@ -125,20 +124,14 @@
|
||||
<Compile Include="ViewModels\RecipeExecutionStepViewModel.cs" />
|
||||
<Compile Include="ViewModels\UploadRecipeViewModel.cs" />
|
||||
<Compile Include="Providers\ImportActions\ExecuteRecipeAction.cs" />
|
||||
<Compile Include="Recipes\Builders\CustomStepsStep.cs" />
|
||||
<Compile Include="Services\ImportAction.cs" />
|
||||
<Compile Include="Services\ExportAction.cs" />
|
||||
<Compile Include="Models\ImportActionContext.cs" />
|
||||
<Compile Include="Models\ExportActionContext.cs" />
|
||||
<Compile Include="Models\ExportContext.cs" />
|
||||
<Compile Include="Services\IImportAction.cs" />
|
||||
<Compile Include="Services\IExportAction.cs" />
|
||||
<Compile Include="ViewModels\CustomStepEntry.cs" />
|
||||
<Compile Include="Services\ICustomExportStep.cs" />
|
||||
<Compile Include="Services\IExportEventHandler.cs" />
|
||||
<Compile Include="Services\IImportExportService.cs" />
|
||||
<Compile Include="Services\ImportExportService.cs" />
|
||||
<Compile Include="ViewModels\CustomStepsViewModel.cs" />
|
||||
<Compile Include="ViewModels\ImportActionViewModel.cs" />
|
||||
<Compile Include="ViewModels\ExportActionViewModel.cs" />
|
||||
<Compile Include="ViewModels\ExportStepViewModel.cs" />
|
||||
@@ -190,9 +183,6 @@
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\ImportActions\ExecuteRecipe.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\BuilderSteps\CustomSteps.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\ExportActions\BuildRecipe.cshtml" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -6,8 +6,8 @@ namespace Orchard.ImportExport
|
||||
{
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission Import = new Permission { Description = "Import Data", Name = "Import" };
|
||||
public static readonly Permission Export = new Permission { Description = "Export Data", Name = "Export" };
|
||||
public static readonly Permission Import = new Permission { Description = "Import Data", Name = "Import", IsSecurityCritical = true };
|
||||
public static readonly Permission Export = new Permission { Description = "Export Data", Name = "Export", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -26,4 +26,4 @@ namespace Orchard.ImportExport
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.ImportExport.Models;
|
||||
using Orchard.ImportExport.Services;
|
||||
using Orchard.ImportExport.ViewModels;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Recipes.Models;
|
||||
using Orchard.Recipes.Services;
|
||||
|
||||
namespace Orchard.ImportExport.Recipes.Builders
|
||||
{
|
||||
[Obsolete("Implement IRecipeBuilderStep and IRecipeExecutionStep instead of implementing custom export steps.")]
|
||||
public class CustomStepsStep : RecipeBuilderStep
|
||||
{
|
||||
private readonly IEnumerable<IExportEventHandler> _exportEventHandlers;
|
||||
private readonly ICustomExportStep _customExportStep;
|
||||
|
||||
public CustomStepsStep(IEnumerable<IExportEventHandler> exportEventHandlers, ICustomExportStep customExportStep)
|
||||
{
|
||||
_exportEventHandlers = exportEventHandlers;
|
||||
_customExportStep = customExportStep;
|
||||
CustomSteps = new List<string>();
|
||||
}
|
||||
|
||||
public override string Name => "CustomSteps";
|
||||
|
||||
public override LocalizedString DisplayName => T("Additional Export Steps");
|
||||
|
||||
public override LocalizedString Description => T("Exports additional items.");
|
||||
|
||||
public override bool IsVisible => CustomSteps.Any();
|
||||
|
||||
public override int Priority => -50;
|
||||
public override int Position => 500;
|
||||
|
||||
public IList<string> CustomSteps { get; set; }
|
||||
|
||||
public override dynamic BuildEditor(dynamic shapeFactory)
|
||||
{
|
||||
return UpdateEditor(shapeFactory, null);
|
||||
}
|
||||
|
||||
public override dynamic UpdateEditor(dynamic shapeFactory, IUpdateModel updater)
|
||||
{
|
||||
var customSteps = new List<string>();
|
||||
_customExportStep.Register(customSteps);
|
||||
|
||||
var viewModel = new CustomStepsViewModel
|
||||
{
|
||||
CustomSteps = customSteps.Select(x => new CustomStepEntry { CustomStep = x }).ToList()
|
||||
};
|
||||
|
||||
if (updater != null && updater.TryUpdateModel(viewModel, Prefix, null, null))
|
||||
{
|
||||
CustomSteps = viewModel.CustomSteps.Where(x => x.IsChecked).Select(x => x.CustomStep).ToList();
|
||||
}
|
||||
|
||||
return shapeFactory.EditorTemplate(TemplateName: "BuilderSteps/CustomSteps", Model: viewModel, Prefix: Prefix);
|
||||
}
|
||||
|
||||
public override void Configure(RecipeBuilderStepConfigurationContext context)
|
||||
{
|
||||
var steps = (context.ConfigurationElement.Attr("Steps") ?? "").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
CustomSteps = steps.ToList();
|
||||
}
|
||||
|
||||
public override void ConfigureDefault()
|
||||
{
|
||||
_customExportStep.Register(CustomSteps);
|
||||
}
|
||||
|
||||
public override void Build(BuildContext context)
|
||||
{
|
||||
var exportContext = new ExportContext
|
||||
{
|
||||
Document = context.RecipeDocument,
|
||||
ExportOptions = new ExportOptions
|
||||
{
|
||||
CustomSteps = CustomSteps
|
||||
}
|
||||
};
|
||||
_exportEventHandlers.Invoke(x => x.Exporting(exportContext), Logger);
|
||||
_exportEventHandlers.Invoke(x => x.Exported(exportContext), Logger);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Orchard.Events;
|
||||
|
||||
namespace Orchard.ImportExport.Services
|
||||
{
|
||||
[Obsolete("Implement IRecipeBuilderStep instead.")]
|
||||
public interface ICustomExportStep : IEventHandler
|
||||
{
|
||||
void Register(IList<string> steps);
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
using System;
|
||||
using Orchard.Events;
|
||||
using Orchard.ImportExport.Models;
|
||||
|
||||
namespace Orchard.ImportExport.Services
|
||||
{
|
||||
[Obsolete("Implement IRecipeExecutionStep instead.")]
|
||||
public interface IExportEventHandler : IEventHandler
|
||||
{
|
||||
void Exporting(ExportContext context);
|
||||
void Exported(ExportContext context);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
namespace Orchard.ImportExport.ViewModels
|
||||
{
|
||||
public class CustomStepEntry
|
||||
{
|
||||
public string CustomStep { get; set; }
|
||||
public bool IsChecked { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Orchard.ImportExport.ViewModels
|
||||
{
|
||||
public class CustomStepsViewModel
|
||||
{
|
||||
public IList<CustomStepEntry> CustomSteps { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
@using Orchard.Utility.Extensions
|
||||
@model Orchard.ImportExport.ViewModels.CustomStepsViewModel
|
||||
@if (Model.CustomSteps.Any()) {
|
||||
<fieldset>
|
||||
<legend>@T("Choose the custom steps to execute in the export file:")</legend>
|
||||
<ol>
|
||||
@for (var customStepIndex = 0; customStepIndex < Model.CustomSteps.Count; customStepIndex++) {
|
||||
var closureIndex = customStepIndex;
|
||||
<li>
|
||||
<input type="hidden" value="@Model.CustomSteps[customStepIndex].CustomStep" name="@Html.NameFor(m => m.CustomSteps[closureIndex].CustomStep)" />
|
||||
<input type="checkbox" value="true" name="@Html.NameFor(m => m.CustomSteps[closureIndex].IsChecked)" id="@Html.NameFor(m => m.CustomSteps[closureIndex].IsChecked)" />
|
||||
<label class="forcheckbox" for="@Html.NameFor(m => m.CustomSteps[closureIndex].IsChecked)">@Model.CustomSteps[closureIndex].CustomStep.CamelFriendly()</label>
|
||||
</li>
|
||||
}
|
||||
</ol>
|
||||
</fieldset>
|
||||
}
|
||||
else {
|
||||
<p>@T("There are no additional export steps available.")</p>
|
||||
}
|
||||
@@ -130,6 +130,7 @@
|
||||
<Compile Include="Services\IHostNameProvider.cs" />
|
||||
<Compile Include="Services\MessageBusNotificationProvider.cs" />
|
||||
<Compile Include="Handler\MessageBusHandler.cs" />
|
||||
<Compile Include="Services\SqlServerServiceBrokerFeatureGuard.cs" />
|
||||
<Compile Include="SqlServerBrokerMigrations.cs" />
|
||||
<Compile Include="Models\MessageRecord.cs" />
|
||||
<Compile Include="Services\DefaultMessageBus.cs" />
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
using System;
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Environment;
|
||||
using Orchard.Environment.Configuration;
|
||||
using Orchard.Environment.Extensions.Models;
|
||||
using Orchard.Environment.Features;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Mvc;
|
||||
using Orchard.Mvc.Filters;
|
||||
using Orchard.UI.Notify;
|
||||
|
||||
namespace Orchard.MessageBus.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Prevents the SQL Server Service Broker feature from being enabled for tenants that are not using Microsoft SQL
|
||||
/// Server as their database provider.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The implementation is hackish but there seems to be no other way: if it would use <see cref="INotifier"/> it
|
||||
/// wouldn't work since <see cref="NotifyFilter"/> that writes out notifications to TempData runs before feature
|
||||
/// events are raised. Thus we have to manually add the messages to TempData, just as the filter would do.
|
||||
/// </remarks>
|
||||
public class SqlServerServiceBrokerFeatureGuard : FilterProvider, IFeatureEventHandler, IActionFilter
|
||||
{
|
||||
private const string FeatureId = "Orchard.MessageBus.SqlServerServiceBroker";
|
||||
private const string TempDataKey = FeatureId + ".TempData";
|
||||
|
||||
private readonly ShellSettings _shellSettings;
|
||||
private readonly IFeatureManager _featureManager;
|
||||
private readonly IHttpContextAccessor _hca;
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public SqlServerServiceBrokerFeatureGuard(
|
||||
ShellSettings shellSettings,
|
||||
IFeatureManager featureManager,
|
||||
IHttpContextAccessor hca)
|
||||
{
|
||||
_shellSettings = shellSettings;
|
||||
_featureManager = featureManager;
|
||||
_hca = hca;
|
||||
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) { }
|
||||
|
||||
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
|
||||
{
|
||||
var httpContext = _hca.Current();
|
||||
|
||||
if (httpContext == null) return;
|
||||
|
||||
httpContext.Items[TempDataKey] = filterContext.Controller.TempData;
|
||||
}
|
||||
|
||||
public void Installing(Feature feature) { }
|
||||
|
||||
public void Installed(Feature feature) { }
|
||||
|
||||
public void Enabling(Feature feature) { }
|
||||
|
||||
public void Enabled(Feature feature)
|
||||
{
|
||||
if (feature.Descriptor.Id != FeatureId)
|
||||
return;
|
||||
|
||||
if (!_shellSettings.DataProvider.Equals("SqlServer", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
_featureManager.DisableFeatures(new[] { FeatureId }, force: true);
|
||||
|
||||
AddNotification(
|
||||
T("The SQL Server Service Broker cannot be enabled because it requires Microsoft SQL Server."),
|
||||
NotifyType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
public void Disabling(Feature feature) { }
|
||||
|
||||
public void Disabled(Feature feature) { }
|
||||
|
||||
public void Uninstalling(Feature feature) { }
|
||||
|
||||
public void Uninstalled(Feature feature) { }
|
||||
|
||||
private void AddNotification(LocalizedString message, NotifyType notifyType = NotifyType.Warning)
|
||||
{
|
||||
var tempDataDictionary = _hca.Current()?.Items[TempDataKey];
|
||||
|
||||
if (tempDataDictionary == null) return;
|
||||
|
||||
((TempDataDictionary)tempDataDictionary)["messages"] +=
|
||||
$"{notifyType}:{message.Text}{System.Environment.NewLine}-{System.Environment.NewLine}";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ namespace Orchard.Modules
|
||||
{
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ManageFeatures = new Permission { Description = "Manage Features", Name = "ManageFeatures" };
|
||||
public static readonly Permission ManageFeatures = new Permission { Description = "Manage Features", Name = "ManageFeatures", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -25,4 +25,4 @@ namespace Orchard.Modules
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Orchard.Packaging
|
||||
{
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ManagePackages = new Permission { Description = "Manage packages", Name = "ManagePackages" };
|
||||
public static readonly Permission ManagePackages = new Permission { Description = "Manage packages", Name = "ManagePackages", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -21,4 +21,4 @@ namespace Orchard.Packaging
|
||||
return new List<PermissionStereotype>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +136,6 @@
|
||||
<Compile Include="Services\RecipeStepExecutor.cs" />
|
||||
<Compile Include="Services\RecipeStepQueue.cs" />
|
||||
<Compile Include="ViewModels\ContentTypeEntry.cs" />
|
||||
<Compile Include="ViewModels\CustomStepEntry.cs" />
|
||||
<Compile Include="ViewModels\ContentBuilderStepViewModel.cs" />
|
||||
<Compile Include="ViewModels\RecipeResultViewModel.cs" />
|
||||
<Compile Include="ViewModels\ImportViewModel.cs" />
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
namespace Orchard.Recipes.ViewModels
|
||||
{
|
||||
public class CustomStepEntry
|
||||
{
|
||||
public string CustomStep { get; set; }
|
||||
public bool IsChecked { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -65,7 +65,16 @@ namespace Orchard.Roles.Controllers
|
||||
if (!Services.Authorizer.Authorize(Permissions.ManageRoles, T("Not authorized to manage roles")))
|
||||
return new HttpUnauthorizedResult();
|
||||
|
||||
var model = new RolesIndexViewModel { Rows = _roleService.GetRoles().OrderBy(r => r.Name).ToList() };
|
||||
var securityCriticalPermissions = _roleService.GetSecurityCriticalPermissions().ToHashSet();
|
||||
var roles = _roleService.GetRoles().OrderBy(r => r.Name).ToList();
|
||||
|
||||
var model = new RolesIndexViewModel
|
||||
{
|
||||
Rows = roles,
|
||||
RolesWithSecurityCriticalPermissions = roles.ToDictionary(
|
||||
role => role.Name,
|
||||
role => role.RolesPermissions.Any(p => securityCriticalPermissions.Contains(p.Permission.Name)))
|
||||
};
|
||||
|
||||
return View(model);
|
||||
}
|
||||
@@ -250,18 +259,21 @@ namespace Orchard.Roles.Controllers
|
||||
{
|
||||
return new HttpUnauthorizedResult();
|
||||
}
|
||||
|
||||
var securityCriticalPermissions = _roleService.GetSecurityCriticalPermissions().ToHashSet();
|
||||
// create the ViewModel used to manage a user's roles
|
||||
var model = new UserRolesViewModel
|
||||
{
|
||||
User = userRolesPart.As<IUser>(),
|
||||
UserRoles = userRolesPart,
|
||||
Roles = allRoles.Select(x => new UserRoleEntry
|
||||
Roles = allRoles.Select(role => new UserRoleEntry
|
||||
{
|
||||
RoleId = x.Id,
|
||||
Name = x.Name,
|
||||
Granted = userRolesPart.Roles.Contains(x.Name)
|
||||
RoleId = role.Id,
|
||||
Name = role.Name,
|
||||
Granted = userRolesPart.Roles.Contains(role.Name),
|
||||
HasSecurityCriticalPermissions = role.RolesPermissions.Any(p => securityCriticalPermissions.Contains(p.Permission.Name))
|
||||
}).ToList(),
|
||||
AuthorizedRoleIds = authorizedRoleIds
|
||||
AuthorizedRoleIds = authorizedRoleIds,
|
||||
};
|
||||
|
||||
// this calls the same view used by the driver that lets users with higher
|
||||
|
||||
@@ -67,20 +67,22 @@ namespace Orchard.Roles.Drivers
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var allRoles = _allRoles.Value
|
||||
.Select(x => new UserRoleEntry
|
||||
{
|
||||
RoleId = x.Id,
|
||||
Name = x.Name,
|
||||
Granted = userRolesPart.Roles.Contains(x.Name)
|
||||
});
|
||||
|
||||
var securityCriticalPermissions = _roleService.GetSecurityCriticalPermissions().ToHashSet();
|
||||
var model = new UserRolesViewModel
|
||||
{
|
||||
User = userRolesPart.As<IUser>(),
|
||||
UserRoles = userRolesPart,
|
||||
Roles = allRoles.ToList(),
|
||||
AuthorizedRoleIds = authorizedRoleIds
|
||||
Roles = _allRoles.Value.Select(role => new UserRoleEntry
|
||||
{
|
||||
RoleId = role.Id,
|
||||
Name = role.Name,
|
||||
Granted = userRolesPart.Roles.Contains(role.Name),
|
||||
HasSecurityCriticalPermissions = role.RolesPermissions.Any(p => securityCriticalPermissions.Contains(p.Permission.Name))
|
||||
}).ToList(),
|
||||
AuthorizedRoleIds = authorizedRoleIds,
|
||||
};
|
||||
|
||||
return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix);
|
||||
});
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ namespace Orchard.Roles
|
||||
{
|
||||
private readonly IRepository<RoleRecord> _roleRepository;
|
||||
|
||||
public static readonly Permission ManageRoles = new Permission { Description = "Managing Roles", Name = "ManageRoles" };
|
||||
public static readonly Permission AssignRoles = new Permission { Description = "Assign Roles", Name = "AssignRoles", ImpliedBy = new[] { ManageRoles } };
|
||||
public static readonly Permission ManageRoles = new Permission { Description = "Managing Roles", Name = "ManageRoles", IsSecurityCritical = true, };
|
||||
public static readonly Permission AssignRoles = new Permission { Description = "Assign Roles", Name = "AssignRoles", IsSecurityCritical = true, ImpliedBy = new[] { ManageRoles } };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -80,4 +80,4 @@ namespace Orchard.Roles
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Orchard.Roles.Services
|
||||
void UpdateRole(int id, string roleName, IEnumerable<string> rolePermissions);
|
||||
void DeleteRole(int id);
|
||||
IDictionary<string, IEnumerable<Permission>> GetInstalledPermissions();
|
||||
IEnumerable<string> GetSecurityCriticalPermissions();
|
||||
IEnumerable<string> GetPermissionsForRole(int id);
|
||||
|
||||
IEnumerable<string> GetPermissionsForRoleByName(string name);
|
||||
@@ -26,4 +27,4 @@ namespace Orchard.Roles.Services
|
||||
/// <returns>Returns false if a role with the given name already exits</returns>
|
||||
bool VerifyRoleUnicity(string name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,6 +203,9 @@ namespace Orchard.Roles.Services
|
||||
return installedPermissions;
|
||||
}
|
||||
|
||||
public IEnumerable<string> GetSecurityCriticalPermissions() =>
|
||||
_permissionProviders.SelectMany(pp => pp.GetPermissions().Where(p => p.IsSecurityCritical)).Select(p => p.Name);
|
||||
|
||||
public IEnumerable<string> GetPermissionsForRole(int id)
|
||||
{
|
||||
var permissions = new List<string>();
|
||||
@@ -251,4 +254,4 @@ namespace Orchard.Roles.Services
|
||||
_signals.Trigger(SignalName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,5 +6,7 @@ namespace Orchard.Roles.ViewModels
|
||||
public class RolesIndexViewModel
|
||||
{
|
||||
public IList<RoleRecord> Rows { get; set; }
|
||||
|
||||
public Dictionary<string, bool> RolesWithSecurityCriticalPermissions { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,5 +23,6 @@ namespace Orchard.Roles.ViewModels
|
||||
public int RoleId { get; set; }
|
||||
public string Name { get; set; }
|
||||
public bool Granted { get; set; }
|
||||
public bool HasSecurityCriticalPermissions { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,67 +1,93 @@
|
||||
@using Orchard.Roles.ViewModels
|
||||
|
||||
@model RoleEditViewModel
|
||||
@using Orchard.Roles.ViewModels;
|
||||
|
||||
@{ Layout.Title = T("Edit Role").ToString(); }
|
||||
@{
|
||||
Style.Require("FontAwesome");
|
||||
Layout.Title = T("Edit Role").ToString();
|
||||
}
|
||||
|
||||
@using(Html.BeginFormAntiForgeryPost()) {
|
||||
@using (Html.BeginFormAntiForgeryPost())
|
||||
{
|
||||
@Html.ValidationSummary();
|
||||
<fieldset>
|
||||
<legend>@T("Information")</legend>
|
||||
<label for="pageTitle">@T("Role Name:")</label>
|
||||
@if (Model.Name == "Administrator") { // the one special case
|
||||
@if (Model.Name == "Administrator")
|
||||
{ // the one special case
|
||||
<input id="Name" class="text" type="text" value="@Model.Name" readonly="readonly" />
|
||||
<input class="text" name="Name" type="hidden" value="@Model.Name" />
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
<input id="Name" class="text" name="Name" type="text" value="@Model.Name" />
|
||||
}
|
||||
<input type="hidden" value="@Model.Id" name="Id" />
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend>@T("Permissions")</legend>
|
||||
@foreach (var category in Model.RoleCategoryPermissions.Keys) {
|
||||
<fieldset>
|
||||
<legend>@category</legend>
|
||||
<table class="items">
|
||||
<colgroup>
|
||||
<col id="Col1" />
|
||||
<col id="Col2" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">@T("Permission")</th>
|
||||
<th scope="col">@T("Allow")</th>
|
||||
<th scope="col">@T("Effective")</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@foreach (var permission in Model.RoleCategoryPermissions[category]) {
|
||||
<tr>
|
||||
<td>@T(permission.Description)</td>
|
||||
<td style="width:60px;">
|
||||
@if (Model.CurrentPermissions.Contains(permission.Name)) {
|
||||
<input type="checkbox" value="true" name="Checkbox.@permission.Name" checked="checked"/>
|
||||
}
|
||||
else {
|
||||
<input type="checkbox" value="true" name="Checkbox.@permission.Name"/>
|
||||
}
|
||||
</td>
|
||||
<td style="width:60px;">
|
||||
@if (Model.EffectivePermissions.Contains(permission.Name)) {
|
||||
<input type="checkbox" disabled="disabled" name="Effective.@permission.Name" checked="checked"/>
|
||||
} else {
|
||||
<input type="checkbox" disabled="disabled" name="Effective.@permission.Name"/>
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
|
||||
<p>@T("Allow: Permission is granted explicitly.")</p>
|
||||
<p>@T("Effective: Permission is implied by a higher level permission, or explicitly granted.")</p>
|
||||
|
||||
<br />
|
||||
|
||||
@foreach (var category in Model.RoleCategoryPermissions.Keys)
|
||||
{
|
||||
<fieldset>
|
||||
<legend>@category</legend>
|
||||
<table class="items">
|
||||
<colgroup>
|
||||
<col id="Col1" />
|
||||
<col id="Col2" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">@T("Permission")</th>
|
||||
<th scope="col">@T("Allow")</th>
|
||||
<th scope="col">@T("Effective")</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@foreach (var permission in Model.RoleCategoryPermissions[category])
|
||||
{
|
||||
<tr>
|
||||
<td>@T(permission.Description)</td>
|
||||
<td style="width:60px;">
|
||||
@if (Model.CurrentPermissions.Contains(permission.Name))
|
||||
{
|
||||
<input type="checkbox" value="true" name="Checkbox.@permission.Name" checked="checked" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" value="true" name="Checkbox.@permission.Name" />
|
||||
}
|
||||
@if (permission.IsSecurityCritical)
|
||||
{
|
||||
<i class="fa-solid fa-triangle-exclamation" style="color: red"
|
||||
title="@T("This permission could allow a user to elevate their other permissions. Grant it with extreme consideration.")"></i>
|
||||
}
|
||||
</td>
|
||||
<td style="width:60px;">
|
||||
@if (Model.EffectivePermissions.Contains(permission.Name))
|
||||
{
|
||||
<input type="checkbox" disabled="disabled" name="Effective.@permission.Name" checked="checked" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<input type="checkbox" disabled="disabled" name="Effective.@permission.Name" />
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</fieldset>
|
||||
}
|
||||
}
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<button class="primaryAction" type="submit" name="submit.Save" value="@T("Save")">@T("Save")</button>
|
||||
@if (Model.Name != "Administrator") {
|
||||
<button type="submit" name="submit.Delete" value="@T("Delete")" itemprop="RemoveUrl">@T("Delete")</button>
|
||||
@if (Model.Name != "Administrator")
|
||||
{
|
||||
<button type="submit" name="submit.Delete" value="@T("Delete")" itemprop="RemoveUrl">@T("Delete")</button>
|
||||
}
|
||||
</fieldset>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
@using Orchard.Roles.ViewModels
|
||||
|
||||
@model RolesIndexViewModel
|
||||
@using Orchard.Roles.ViewModels;
|
||||
@using Orchard.Utility.Extensions;
|
||||
|
||||
@{
|
||||
Script.Require("ShapesBase");
|
||||
Style.Require("FontAwesome");
|
||||
|
||||
Layout.Title = T("Roles").ToString();
|
||||
}
|
||||
|
||||
@using (Html.BeginFormAntiForgeryPost()) {
|
||||
@Html.ValidationSummary();
|
||||
@using (Html.BeginFormAntiForgeryPost())
|
||||
{
|
||||
@Html.ValidationSummary()
|
||||
<fieldset class="bulk-actions">
|
||||
<label for="publishActions">@T("Actions:")</label>
|
||||
<select id="Select1" name="roleActions">
|
||||
@@ -31,18 +34,28 @@
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@foreach (var row in Model.Rows) {
|
||||
@foreach (var row in Model.Rows)
|
||||
{
|
||||
<tr>
|
||||
<td><input type="checkbox" value="true" name="@("Checkbox." + row.Id)" /></td>
|
||||
<td>@Html.ActionLink(row.Name, "Edit", new { row.Id })</td>
|
||||
<td>
|
||||
@Html.ActionLink(row.Name, "Edit", new { row.Id })
|
||||
@if (Model.RolesWithSecurityCriticalPermissions[row.Name])
|
||||
{
|
||||
<i class="fa-solid fa-triangle-exclamation" style="color: red"
|
||||
title="@T("This role contains security critical permissions.")"></i>
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
<ul class="action-links">
|
||||
<li class="action-link">
|
||||
@Html.ActionLink(T("Edit").ToString(), "Edit", new { row.Id })
|
||||
</li>
|
||||
@if (row.Name != "Administrator") {
|
||||
@if (row.Name != "Administrator")
|
||||
{
|
||||
<li class="action-link">
|
||||
<a href="@Url.Action("Delete", new {row.Id, returnUrl = ViewContext.RequestContext.HttpContext.Request.RawUrl})" itemprop="RemoveUrl UnsafeUrl">@T("Delete")</a>
|
||||
<a href="@Url.Action("Delete", new {row.Id, returnUrl = ViewContext.RequestContext.HttpContext.Request.RawUrl})"
|
||||
itemprop="RemoveUrl UnsafeUrl">@T("Delete")</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
|
||||
@@ -4,13 +4,20 @@
|
||||
|
||||
@model UserRolesViewModel
|
||||
|
||||
@{
|
||||
Style.Require("FontAwesome");
|
||||
}
|
||||
|
||||
<fieldset>
|
||||
<legend>@T("Roles")</legend>
|
||||
|
||||
@if (Model.Roles.Count > 0) {
|
||||
@if (Model.Roles.Count > 0)
|
||||
{
|
||||
var index = 0;
|
||||
foreach (var entry in Model.Roles) {
|
||||
if (SystemRoles.GetSystemRoles().Contains(entry.Name)) {
|
||||
foreach (var entry in Model.Roles)
|
||||
{
|
||||
if (SystemRoles.GetSystemRoles().Contains(entry.Name))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -18,17 +25,26 @@
|
||||
@Html.Hidden("Roles[" + index + "].Name", entry.Name)
|
||||
|
||||
<div>
|
||||
@if (Model.AuthorizedRoleIds.Contains(entry.RoleId)) {
|
||||
@if (Model.AuthorizedRoleIds.Contains(entry.RoleId))
|
||||
{
|
||||
@Html.CheckBox("Roles[" + index + "].Granted", entry.Granted)
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
@Html.CheckBox("Roles[" + index + "].Granted", entry.Granted, new { disabled = true })
|
||||
}
|
||||
<label class="forcheckbox" for="@Html.FieldIdFor(m => m.Roles[index].Granted)">@entry.Name</label>
|
||||
@if (entry.HasSecurityCriticalPermissions)
|
||||
{
|
||||
<i class="fa-solid fa-triangle-exclamation" style="color: red" title="@T("This role contains security critical permissions.")"></i>
|
||||
}
|
||||
</div>
|
||||
|
||||
index++;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>@T("There are no roles.")</p>
|
||||
}
|
||||
</fieldset>
|
||||
|
||||
@@ -5,6 +5,7 @@ using Orchard.ContentManagement.Drivers;
|
||||
using Orchard.ContentManagement.Handlers;
|
||||
using Orchard.Indexing;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Search.Helpers;
|
||||
using Orchard.Search.Models;
|
||||
using Orchard.Search.ViewModels;
|
||||
|
||||
@@ -35,7 +36,9 @@ namespace Orchard.Search.Drivers
|
||||
var model = new SearchSettingsIndexViewModel
|
||||
{
|
||||
SelectedIndex = part.SearchIndex,
|
||||
AvailableIndexes = _indexManager.GetSearchIndexProvider().List().ToList()
|
||||
AvailableIndexes = _indexManager.HasIndexProvider()
|
||||
? _indexManager.GetSearchIndexProvider().List().ToList()
|
||||
: new List<string>()
|
||||
};
|
||||
|
||||
if (updater != null)
|
||||
@@ -102,7 +105,9 @@ namespace Orchard.Search.Drivers
|
||||
|
||||
context.ImportAttribute(part.PartDefinition.Name, "SearchFields", value =>
|
||||
{
|
||||
part.Store("SearchFields", value);
|
||||
part.Store(
|
||||
"SearchFields",
|
||||
SearchSettingsHelper.MergeSearchFields(part.SearchFields, SearchSettingsHelper.DeserializeSearchFields(value)));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,15 +27,43 @@ namespace Orchard.Search.Helpers
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
public static string SerializeSearchFields(IDictionary<string, string[]> value)
|
||||
{
|
||||
var data = string.Join("|", value.Select(x => string.Format("{0}:{1}", x.Key, string.Join(",", x.Value))));
|
||||
return data;
|
||||
}
|
||||
public static string SerializeSearchFields(IDictionary<string, string[]> value) =>
|
||||
string.Join("|", value.Select(x => string.Format("{0}:{1}", x.Key, string.Join(",", x.Value))));
|
||||
|
||||
public static string[] GetSearchFields(this SearchSettingsPart part, string index)
|
||||
public static string[] GetSearchFields(this SearchSettingsPart part, string index) =>
|
||||
part.SearchFields.ContainsKey(index) ? part.SearchFields[index] : new string[0];
|
||||
|
||||
/// <summary>
|
||||
/// Merge existing search index settings with those being imported, with the latter taking precedence.
|
||||
/// </summary>
|
||||
/// <param name="existingSearchFields">The existing search indexes with their search fields. The key is the
|
||||
/// index name and the value is the array of field names.</param>
|
||||
/// <param name="searchFieldsToAdd">The new search indexes with their search fields to import. The key is the
|
||||
/// index name and the value is the array of field names.</param>
|
||||
/// <returns>The merged search indexes with their search fields.</returns>
|
||||
public static string MergeSearchFields(IDictionary<string, string[]> existingSearchFields, IDictionary<string, string[]> searchFieldsToAdd)
|
||||
{
|
||||
return part.SearchFields.ContainsKey(index) ? part.SearchFields[index] : new string[0];
|
||||
var mergedSearchFields = new Dictionary<string, string[]>();
|
||||
|
||||
// Process new search fields to add first so they take precedence.
|
||||
foreach (var newSearchFieldsToAdd in searchFieldsToAdd.Keys)
|
||||
{
|
||||
if (!mergedSearchFields.ContainsKey(newSearchFieldsToAdd))
|
||||
{
|
||||
mergedSearchFields.Add(newSearchFieldsToAdd, searchFieldsToAdd[newSearchFieldsToAdd]);
|
||||
}
|
||||
}
|
||||
|
||||
// Then add existing search fields that are not already present.
|
||||
foreach (var existingSearchFieldsToAdd in existingSearchFields.Keys)
|
||||
{
|
||||
if (!mergedSearchFields.ContainsKey(existingSearchFieldsToAdd))
|
||||
{
|
||||
mergedSearchFields.Add(existingSearchFieldsToAdd, existingSearchFields[existingSearchFieldsToAdd]);
|
||||
}
|
||||
}
|
||||
|
||||
return SerializeSearchFields(mergedSearchFields);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,12 +9,10 @@ namespace Orchard.SecureSocketsLayer.Filters
|
||||
public class SecureSocketsLayersFilter : FilterProvider, IActionFilter
|
||||
{
|
||||
private readonly ISecureSocketsLayerService _sslService;
|
||||
private readonly IOrchardServices _orchardServices;
|
||||
|
||||
public SecureSocketsLayersFilter(ISecureSocketsLayerService sslService, IOrchardServices orchardServices)
|
||||
public SecureSocketsLayersFilter(ISecureSocketsLayerService sslService)
|
||||
{
|
||||
_sslService = sslService;
|
||||
_orchardServices = orchardServices;
|
||||
}
|
||||
public Localizer T { get; set; }
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
using System;
|
||||
using Orchard.Data.Migration;
|
||||
|
||||
namespace Orchard.TaskLease
|
||||
{
|
||||
public class TaskLeaseMigrations : DataMigrationImpl
|
||||
{
|
||||
|
||||
public int Create()
|
||||
{
|
||||
SchemaBuilder.CreateTable("TaskLeaseRecord",
|
||||
table => table
|
||||
.Column<int>("Id", column => column.PrimaryKey().Identity())
|
||||
.Column<string>("TaskName")
|
||||
.Column<string>("MachineName")
|
||||
.Column<DateTime>("UpdatedUtc")
|
||||
.Column<DateTime>("ExpiredUtc")
|
||||
.Column<string>("State", c => c.Unlimited())
|
||||
);
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
using System;
|
||||
using Orchard.Data.Conventions;
|
||||
|
||||
namespace Orchard.TaskLease.Models
|
||||
{
|
||||
public class TaskLeaseRecord
|
||||
{
|
||||
public virtual int Id { get; set; }
|
||||
public virtual string TaskName { get; set; }
|
||||
public virtual string MachineName { get; set; }
|
||||
public virtual DateTime UpdatedUtc { get; set; }
|
||||
public virtual DateTime ExpiredUtc { get; set; }
|
||||
|
||||
[StringLengthMax]
|
||||
public virtual string State { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
Name: Task Lease
|
||||
AntiForgery: enabled
|
||||
Author: The Orchard Team
|
||||
Website: http://www.orchardproject.net
|
||||
Version: 1.10.4
|
||||
OrchardVersion: 1.10.4
|
||||
LifecycleStatus: Deprecated
|
||||
Description: Provides services to synchronize tasks in a farm environment.
|
||||
Category: Hosting
|
||||
@@ -1,139 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{3F72A4E9-7B72-4260-B010-C16EC54F9BAF}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Orchard.TaskLease</RootNamespace>
|
||||
<AssemblyName>Orchard.TaskLease</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>4.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkProfile />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<Use64BitIISExpress />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Autofac, Version=3.5.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Autofac.3.5.2\lib\net40\Autofac.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Content Include="Module.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Migrations.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Models\TaskLeaseRecord.cs" />
|
||||
<Compile Include="Services\ITaskLeaseService.cs" />
|
||||
<Compile Include="Services\TaskLeaseService.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
|
||||
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
||||
<Name>Orchard.Framework</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Core\Orchard.Core.csproj">
|
||||
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
||||
<Name>Orchard.Core</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target> -->
|
||||
<Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
|
||||
<PropertyGroup>
|
||||
<AreasManifestDir>$(ProjectDir)\..\Manifests</AreasManifestDir>
|
||||
</PropertyGroup>
|
||||
<!-- If this is an area child project, uncomment the following line:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Child" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
-->
|
||||
<!-- If this is an area parent project, uncomment the following lines:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Parent" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
<CopyAreaManifests ManifestPath="$(AreasManifestDir)" CrossCopy="false" RenameViews="true" />
|
||||
-->
|
||||
</Target>
|
||||
<Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
|
||||
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
|
||||
</Target>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>45979</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>True</UseCustomServer>
|
||||
<CustomServerUrl>https://github.com/OrchardCMS/Orchard</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -1,34 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Orchard.TaskLease")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyProduct("Orchard")]
|
||||
[assembly: AssemblyCopyright("Copyright <20> .NET Foundation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("3320c438-e92b-4753-bfe5-944f29d13ded")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.10.4")]
|
||||
[assembly: AssemblyFileVersion("1.10.4")]
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Orchard.TaskLease.Services
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Describes a service to save and acquire task leases. A task lease can't be acquired by two different machines,
|
||||
/// for a specific amount of time. Optionnally a State can be saved along with the lease.
|
||||
/// </summary>
|
||||
[Obsolete("Use Orchard.Tasks.Locking.IDistributedLockService instead.")]
|
||||
public interface ITaskLeaseService : IDependency
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Acquires a lease for the specified task name, and amount of time.
|
||||
/// </summary>
|
||||
/// <returns>The state of the lease if it was acquired, otherwise <c>null</c>.</returns>
|
||||
string Acquire(string taskName, DateTime expiredUtc);
|
||||
|
||||
/// <summary>
|
||||
/// Updates a lease for the current machine if it exists
|
||||
/// </summary>
|
||||
void Update(string taskName, string state);
|
||||
|
||||
/// <summary>
|
||||
/// Updates a lease for the current machine if it exists
|
||||
/// </summary>
|
||||
void Update(string taskName, string state, DateTime expiredUtc);
|
||||
}
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
using System;
|
||||
using Orchard.Data;
|
||||
using Orchard.Environment;
|
||||
using Orchard.Services;
|
||||
using Orchard.TaskLease.Models;
|
||||
|
||||
namespace Orchard.TaskLease.Services
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Provides a database driven implementation of <see cref="ITaskLeaseService" />
|
||||
/// </summary>
|
||||
[Obsolete("Use Orchard.Tasks.Locking.DistributedLockService instead.")]
|
||||
public class TaskLeaseService : ITaskLeaseService
|
||||
{
|
||||
|
||||
private readonly IRepository<TaskLeaseRecord> _repository;
|
||||
private readonly IClock _clock;
|
||||
private readonly IApplicationEnvironment _applicationEnvironment;
|
||||
|
||||
public TaskLeaseService(
|
||||
IRepository<TaskLeaseRecord> repository,
|
||||
IClock clock,
|
||||
IApplicationEnvironment applicationEnvironment)
|
||||
{
|
||||
|
||||
_repository = repository;
|
||||
_clock = clock;
|
||||
_applicationEnvironment = applicationEnvironment;
|
||||
}
|
||||
|
||||
public string Acquire(string taskName, DateTime expiredUtc)
|
||||
{
|
||||
var environmentIdentifier = _applicationEnvironment.GetEnvironmentIdentifier();
|
||||
|
||||
// retrieve current lease for the specified task
|
||||
var taskLease = _repository.Get(x => x.TaskName == taskName);
|
||||
|
||||
// create a new lease if there is no current lease for this task
|
||||
if (taskLease == null)
|
||||
{
|
||||
taskLease = new TaskLeaseRecord
|
||||
{
|
||||
TaskName = taskName,
|
||||
MachineName = environmentIdentifier,
|
||||
State = string.Empty,
|
||||
UpdatedUtc = _clock.UtcNow,
|
||||
ExpiredUtc = expiredUtc
|
||||
};
|
||||
|
||||
_repository.Create(taskLease);
|
||||
_repository.Flush();
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
// lease can't be aquired only if for a different machine and it has not expired
|
||||
if (taskLease.MachineName != environmentIdentifier && taskLease.ExpiredUtc >= _clock.UtcNow)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// otherwise update information
|
||||
taskLease.MachineName = environmentIdentifier;
|
||||
taskLease.UpdatedUtc = _clock.UtcNow;
|
||||
taskLease.ExpiredUtc = expiredUtc;
|
||||
|
||||
_repository.Flush();
|
||||
|
||||
return taskLease.State;
|
||||
}
|
||||
|
||||
public void Update(string taskName, string state)
|
||||
{
|
||||
var environmentIdentifier = _applicationEnvironment.GetEnvironmentIdentifier();
|
||||
|
||||
// retrieve current lease for the specified task
|
||||
var taskLease = _repository.Get(x => x.TaskName == taskName && x.MachineName == environmentIdentifier);
|
||||
|
||||
if (taskLease == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
taskLease.State = state;
|
||||
_repository.Flush();
|
||||
}
|
||||
|
||||
public void Update(string taskName, string state, DateTime expiredUtc)
|
||||
{
|
||||
var environmentIdentifier = _applicationEnvironment.GetEnvironmentIdentifier();
|
||||
|
||||
// retrieve current lease for the specified task
|
||||
var taskLease = _repository.Get(x => x.TaskName == taskName && x.MachineName == environmentIdentifier);
|
||||
|
||||
if (taskLease == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
taskLease.ExpiredUtc = expiredUtc;
|
||||
taskLease.State = state;
|
||||
|
||||
_repository.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,110 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{3FD9FA96-F7C9-4E98-BF17-DC75D07B7307}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Orchard.TaskLease.Tests</RootNamespace>
|
||||
<AssemblyName>Orchard.TaskLease.Tests</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject />
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Autofac, Version=2.2.4.900, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL" />
|
||||
<Reference Include="Moq, Version=4.0.812.4, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL" />
|
||||
<Reference Include="NHibernate.ByteCode.Castle">
|
||||
<HintPath>..\..\..\..\..\..\lib\fluentnhibernate\NHibernate.ByteCode.Castle.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="nunit.framework">
|
||||
<HintPath>..\..\..\Contrib.RewriteRules\bin\nunit.framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\..\lib\sqlce\System.Data.SqlServerCe.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Services\TaskLeaseServiceTests.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\..\..\Orchard.Tests.Modules\Orchard.Tests.Modules.csproj">
|
||||
<Project>{6CB3EB30-F725-45C0-9742-42599BA8E8D2}</Project>
|
||||
<Name>Orchard.Tests.Modules</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\..\Orchard.Tests\Orchard.Framework.Tests.csproj">
|
||||
<Project>{ABC826D4-2FA1-4F2F-87DE-E6095F653810}</Project>
|
||||
<Name>Orchard.Framework.Tests</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\..\Orchard\Orchard.Framework.csproj">
|
||||
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
||||
<Name>Orchard.Framework</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\..\..\Core\Orchard.Core.csproj">
|
||||
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
||||
<Name>Orchard.Core</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Orchard.TaskLease.csproj">
|
||||
<Project>{3F72A4E9-7B72-4260-B010-C16EC54F9BAF}</Project>
|
||||
<Name>Orchard.TaskLease</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<Target Name="CopySqlCeBinaries">
|
||||
<ItemGroup>
|
||||
<SqlCeBinariesx86 Include="$(ProjectDir)..\..\lib\sqlce\x86\**\*" />
|
||||
<SqlCeBinariesx64 Include="$(ProjectDir)..\..\lib\sqlce\amd64\**\*" />
|
||||
</ItemGroup>
|
||||
<Copy SourceFiles="@(SqlCeBinariesx86)" DestinationFolder="$(OutputPath)\x86\%(RecursiveDir)" SkipUnchangedFiles="true" />
|
||||
<Copy SourceFiles="@(SqlCeBinariesx64)" DestinationFolder="$(OutputPath)\amd64\%(RecursiveDir)" SkipUnchangedFiles="true" />
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
<CallTarget Targets="CopySqlCeBinaries" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -1,36 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Orchard.TaskLease.Tests")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("Orchard.TaskLease.Tests")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("0435ceba-eada-4dc4-aa03-74a68ccca515")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -1,97 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Autofac;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Orchard.TaskLease.Models;
|
||||
using Orchard.TaskLease.Services;
|
||||
using Orchard.Tests.Modules;
|
||||
|
||||
namespace Orchard.TaskLease.Tests.Services
|
||||
{
|
||||
[TestFixture]
|
||||
public class TaskLeaseServiceTests : DatabaseEnabledTestsBase
|
||||
{
|
||||
private ITaskLeaseService _service;
|
||||
private Mock<IMachineNameProvider> _machineNameProvider;
|
||||
|
||||
protected override IEnumerable<Type> DatabaseTypes
|
||||
{
|
||||
get
|
||||
{
|
||||
return new[] {
|
||||
typeof (TaskLeaseRecord)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public override void Register(ContainerBuilder builder)
|
||||
{
|
||||
builder.RegisterType<TaskLeaseService>().As<ITaskLeaseService>();
|
||||
builder.RegisterInstance((_machineNameProvider = new Mock<IMachineNameProvider>()).Object);
|
||||
|
||||
_machineNameProvider.Setup(x => x.GetMachineName()).Returns("SkyNet");
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
_service = _container.Resolve<ITaskLeaseService>();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AcquireShouldSucceedIfNoTask()
|
||||
{
|
||||
var state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(String.Empty));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AcquireShouldSucceedIfTaskBySameMachine()
|
||||
{
|
||||
var state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(String.Empty));
|
||||
|
||||
state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(String.Empty));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AcquireShouldNotSucceedIfTaskByOtherMachine()
|
||||
{
|
||||
var state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(String.Empty));
|
||||
|
||||
_machineNameProvider.Setup(x => x.GetMachineName()).Returns("TheMatrix");
|
||||
|
||||
state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(null));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ShouldUpdateTask()
|
||||
{
|
||||
var state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(String.Empty));
|
||||
|
||||
_service.Update("Foo", "Other");
|
||||
state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
|
||||
Assert.That(state, Is.EqualTo("Other"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AcquireShouldSucceedIfTaskByOtherMachineAndExpired()
|
||||
{
|
||||
var state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(String.Empty));
|
||||
|
||||
_machineNameProvider.Setup(x => x.GetMachineName()).Returns("TheMatrix");
|
||||
_clock.Advance(new TimeSpan(2,0,0,0));
|
||||
|
||||
state = _service.Acquire("Foo", _clock.UtcNow.AddDays(1));
|
||||
Assert.That(state, Is.EqualTo(String.Empty));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false"/>
|
||||
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false"/>
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<system.web.webPages.razor>
|
||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
|
||||
<pages pageBaseType="Orchard.Mvc.ViewEngines.Razor.WebViewPage">
|
||||
<namespaces>
|
||||
<add namespace="System.Web.Mvc"/>
|
||||
<add namespace="System.Web.Mvc.Ajax"/>
|
||||
<add namespace="System.Web.Mvc.Html"/>
|
||||
<add namespace="System.Web.Routing"/>
|
||||
<add namespace="System.Web.WebPages"/>
|
||||
<add namespace="System.Linq"/>
|
||||
<add namespace="System.Collections.Generic"/>
|
||||
<add namespace="Orchard.Mvc.Html"/>
|
||||
</namespaces>
|
||||
</pages>
|
||||
</system.web.webPages.razor>
|
||||
<system.web>
|
||||
<compilation targetFramework="4.8">
|
||||
<assemblies>
|
||||
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
|
||||
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
|
||||
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
|
||||
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
|
||||
<add assembly="System.Web.Mvc, Version=5.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
|
||||
<add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
|
||||
</assemblies>
|
||||
</compilation>
|
||||
</system.web>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="NHibernate" publicKeyToken="AA95F207798DFDB4" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0"/>
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Autofac" publicKeyToken="17863AF14B0044DA" culture="neutral"/>
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0"/>
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Autofac" version="3.5.2" targetFramework="net48" />
|
||||
</packages>
|
||||
@@ -126,7 +126,7 @@ namespace Orchard.Taxonomies.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Create")]
|
||||
[Mvc.FormValueRequired("submit.Save")]
|
||||
[FormValueRequired("submit.Save")]
|
||||
public ActionResult CreatePOST(string returnUrl)
|
||||
{
|
||||
return CreatePOST(returnUrl, contentItem =>
|
||||
@@ -137,7 +137,7 @@ namespace Orchard.Taxonomies.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Create")]
|
||||
[Mvc.FormValueRequired("submit.Publish")]
|
||||
[FormValueRequired("submit.Publish")]
|
||||
public ActionResult CreateAndPublishPOST(string returnUrl)
|
||||
{
|
||||
|
||||
@@ -195,7 +195,7 @@ namespace Orchard.Taxonomies.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Save")]
|
||||
[FormValueRequired("submit.Save")]
|
||||
public ActionResult EditPOST(int id, string returnUrl)
|
||||
{
|
||||
return EditPOST(id, returnUrl, contentItem =>
|
||||
@@ -206,7 +206,7 @@ namespace Orchard.Taxonomies.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Edit")]
|
||||
[Mvc.FormValueRequired("submit.Publish")]
|
||||
[FormValueRequired("submit.Publish")]
|
||||
public ActionResult EditAndPublishPOST(int id, string returnUrl)
|
||||
{
|
||||
var content = _contentManager.Get(id, VersionOptions.Latest);
|
||||
|
||||
@@ -10,6 +10,7 @@ using Orchard.Core.Contents.ViewModels;
|
||||
using Orchard.Data;
|
||||
using Orchard.DisplayManagement;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Mvc;
|
||||
using Orchard.Mvc.Extensions;
|
||||
using Orchard.Settings;
|
||||
using Orchard.UI.Navigation;
|
||||
@@ -101,7 +102,7 @@ namespace Orchard.Templates.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("List")]
|
||||
[Mvc.FormValueRequired("submit.Filter")]
|
||||
[FormValueRequired("submit.Filter")]
|
||||
public ActionResult ListFilterPOST(ContentOptions options)
|
||||
{
|
||||
if (!Services.Authorizer.Authorize(Permissions.ManageTemplates, T("Not authorized to manage templates")))
|
||||
@@ -127,7 +128,7 @@ namespace Orchard.Templates.Controllers
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("List")]
|
||||
[Mvc.FormValueRequired("submit.BulkEdit")]
|
||||
[FormValueRequired("submit.BulkEdit")]
|
||||
public ActionResult ListPOST(ContentOptions options, IEnumerable<int> itemIds, string returnUrl)
|
||||
{
|
||||
if (!Services.Authorizer.Authorize(Permissions.ManageTemplates, T("Not authorized to manage templates")))
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Orchard.Templates
|
||||
{
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ManageTemplates = new Permission { Description = "Managing Templates", Name = "ManageTemplates" };
|
||||
public static readonly Permission ManageTemplates = new Permission { Description = "Managing Templates", Name = "ManageTemplates", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -39,4 +39,4 @@ namespace Orchard.Templates
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Orchard.Themes
|
||||
{
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ApplyTheme = new Permission { Description = "Apply a Theme", Name = "ApplyTheme" };
|
||||
public static readonly Permission ApplyTheme = new Permission { Description = "Apply a Theme", Name = "ApplyTheme", IsSecurityCritical = true };
|
||||
|
||||
public virtual Feature Feature { get; set; }
|
||||
|
||||
@@ -27,4 +27,4 @@ namespace Orchard.Themes
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Orchard.Users
|
||||
public class Permissions : IPermissionProvider
|
||||
{
|
||||
public static readonly Permission ManageUsers =
|
||||
new Permission { Description = "Managing Users", Name = "ManageUsers" };
|
||||
new Permission { Description = "Managing Users", Name = "ManageUsers", IsSecurityCritical = true };
|
||||
public static readonly Permission ViewUsers =
|
||||
new Permission { Description = "View List of Users", Name = "ViewUsers", ImpliedBy = new[] { ManageUsers } };
|
||||
|
||||
@@ -31,4 +31,4 @@ namespace Orchard.Users
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
@using Orchard.Users.Models;
|
||||
|
||||
@{
|
||||
var messageManager = WorkContext.Resolve<IMessageManager>();
|
||||
var emailEnabled = messageManager.GetAvailableChannelServices().Contains("email");
|
||||
var messageChannelSelector = WorkContext.Resolve<IMessageChannelSelector>();
|
||||
var emailEnabled = messageChannelSelector.GetChannel("Email", null) != null;
|
||||
}
|
||||
|
||||
<fieldset>
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
using System;
|
||||
using Orchard.Conditions.Services;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Widgets.Services;
|
||||
|
||||
namespace Orchard.Widgets.Conditions
|
||||
{
|
||||
/// <summary>
|
||||
/// Evaluates rules implementing the deprecated IRuleProvider (third party modules).
|
||||
/// </summary>
|
||||
[Obsolete("This is here for backwards compatibility during the deprecation period.")]
|
||||
public class LegacyRulesEvaluator : IConditionProvider
|
||||
{
|
||||
private readonly IRuleProvider _ruleProviders;
|
||||
|
||||
public LegacyRulesEvaluator(IRuleProvider ruleProviders)
|
||||
{
|
||||
_ruleProviders = ruleProviders;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public void Evaluate(ConditionEvaluationContext evaluationContext)
|
||||
{
|
||||
var ruleContext = new RuleContext
|
||||
{
|
||||
FunctionName = evaluationContext.FunctionName,
|
||||
Arguments = evaluationContext.Arguments,
|
||||
Result = evaluationContext.Result
|
||||
};
|
||||
|
||||
_ruleProviders.Process(ruleContext);
|
||||
evaluationContext.Result = ruleContext.Result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -92,7 +92,6 @@
|
||||
<Compile Include="AdminMenu.cs" />
|
||||
<Compile Include="Commands\LayerCommands.cs" />
|
||||
<Compile Include="Commands\WidgetCommands.cs" />
|
||||
<Compile Include="Conditions\LegacyRulesEvaluator.cs" />
|
||||
<Compile Include="Controllers\AdminController.cs" />
|
||||
<Compile Include="ControlWrapper.cs" />
|
||||
<Compile Include="Drivers\LayerPartDriver.cs" />
|
||||
@@ -117,14 +116,10 @@
|
||||
<Compile Include="Conditions\ContentDisplayedRuleProvider.cs" />
|
||||
<Compile Include="Security\AuthorizationEventHandler.cs" />
|
||||
<Compile Include="Services\IWidgetCommandsService.cs" />
|
||||
<Compile Include="Services\RuleManager.cs" />
|
||||
<Compile Include="Services\DefaultLayerEvaluationService.cs" />
|
||||
<Compile Include="Services\ILayerEvaluationService.cs" />
|
||||
<Compile Include="Services\IRuleManager.cs" />
|
||||
<Compile Include="Services\IRuleProvider.cs" />
|
||||
<Compile Include="Services\IWidgetsService.cs" />
|
||||
<Compile Include="Services\LayerResolverSelector.cs" />
|
||||
<Compile Include="Services\RuleContext.cs" />
|
||||
<Compile Include="Services\WidgetCommandsService.cs" />
|
||||
<Compile Include="Services\WidgetsService.cs" />
|
||||
<Compile Include="Shapes.cs" />
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Orchard.Widgets.Services
|
||||
{
|
||||
[Obsolete("Use Orchard.Conditions.Services.IConditionManager instead.")]
|
||||
public interface IRuleManager : IDependency
|
||||
{
|
||||
bool Matches(string expression);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
using System;
|
||||
using Orchard.Events;
|
||||
|
||||
namespace Orchard.Widgets.Services
|
||||
{
|
||||
[Obsolete("Use Orchard.Conditions.Services.IConditionProvider instead.")]
|
||||
public interface IRuleProvider : IEventHandler
|
||||
{
|
||||
void Process(RuleContext ruleContext);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Orchard.Widgets.Services
|
||||
{
|
||||
[Obsolete("Use Orchard.Conditions.Services.ConditionEvaluationContext instead.")]
|
||||
public class RuleContext
|
||||
{
|
||||
public string FunctionName { get; set; }
|
||||
public object[] Arguments { get; set; }
|
||||
public object Result { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Scripting;
|
||||
|
||||
namespace Orchard.Widgets.Services
|
||||
{
|
||||
[Obsolete("Use Orchard.Conditions.Services.ConditionManager instead.")]
|
||||
public class RuleManager : IRuleManager
|
||||
{
|
||||
private readonly IRuleProvider _ruleProviders;
|
||||
private readonly IEnumerable<IScriptExpressionEvaluator> _evaluators;
|
||||
|
||||
public RuleManager(IRuleProvider ruleProviders, IEnumerable<IScriptExpressionEvaluator> evaluators)
|
||||
{
|
||||
_ruleProviders = ruleProviders;
|
||||
_evaluators = evaluators;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
|
||||
public bool Matches(string expression)
|
||||
{
|
||||
var evaluator = _evaluators.FirstOrDefault();
|
||||
if (evaluator == null)
|
||||
{
|
||||
throw new OrchardException(T("There are currently no scripting engines enabled"));
|
||||
}
|
||||
|
||||
var result = evaluator.Evaluate(expression, new List<IGlobalMethodProvider> { new GlobalMethodProvider(this) });
|
||||
if (!(result is bool))
|
||||
{
|
||||
throw new OrchardException(T("Expression is not a boolean value"));
|
||||
}
|
||||
return (bool)result;
|
||||
}
|
||||
|
||||
private class GlobalMethodProvider : IGlobalMethodProvider
|
||||
{
|
||||
private readonly RuleManager _ruleManager;
|
||||
|
||||
public GlobalMethodProvider(RuleManager ruleManager)
|
||||
{
|
||||
_ruleManager = ruleManager;
|
||||
}
|
||||
|
||||
public void Process(GlobalMethodContext context)
|
||||
{
|
||||
var ruleContext = new RuleContext
|
||||
{
|
||||
FunctionName = context.FunctionName,
|
||||
Arguments = context.Arguments.ToArray(),
|
||||
Result = context.Result
|
||||
};
|
||||
|
||||
_ruleManager._ruleProviders.Process(ruleContext);
|
||||
|
||||
context.Result = ruleContext.Result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
Name: jQuery
|
||||
Path: Orchard.jQuery
|
||||
AntiForgery: enabled
|
||||
Author: The Orchard Team
|
||||
Website: http://orchardproject.net
|
||||
Version: 1.10.4
|
||||
OrchardVersion: 1.10.4
|
||||
LifecycleStatus: Deprecated
|
||||
Description: The jQuery module contains the jQuery and related script libraries.
|
||||
FeatureDescription: A common location for jQuery and related script libraries.
|
||||
Category: Core
|
||||
@@ -1,661 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{8F116B06-1C0E-4E4C-9A0A-D2FAB851E768}</ProjectGuid>
|
||||
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Orchard.jQuery</RootNamespace>
|
||||
<AssemblyName>Orchard.jQuery</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<LangVersion>7.3</LangVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>4.0</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkProfile />
|
||||
<UseIISExpress>false</UseIISExpress>
|
||||
<IISExpressSSLPort />
|
||||
<IISExpressAnonymousAuthentication />
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<Use64BitIISExpress />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Web.ApplicationServices" />
|
||||
<Reference Include="System.Web.DynamicData" />
|
||||
<Reference Include="System.Web.Entity" />
|
||||
<Reference Include="System.Web.Extensions" />
|
||||
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.Helpers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Mvc, Version=5.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.AspNet.Mvc.5.3.0\lib\net45\System.Web.Mvc.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.AspNet.Razor.3.3.0\lib\net45\System.Web.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.WebPages.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\packages\Microsoft.AspNet.WebPages.3.3.0\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\calendars\jquery.calendars-af.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-am.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ar-DZ.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ar-EG.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ar.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-az.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-bg.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-bs.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ca.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-cs.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-da.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-de-CH.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-de.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-el.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-en-AU.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-en-GB.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-en-NZ.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-eo.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-es-AR.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-es-PE.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-es.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-et.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-eu.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-fa.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-fi.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-fo.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-fr-CH.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-fr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-gl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-gu.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-he.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-hi-IN.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-hr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-hu.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-hy.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-id.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-is.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-it.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ja.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ka.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-km.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ko.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-lt.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-lv.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-me-ME.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-me.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-mk.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ml.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ms.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-mt.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-nl-BE.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-nl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-no.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-pl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-pt-BR.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-rm.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ro.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ru.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-sk.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-sl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-sq.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-sr-SR.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-sr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-sv.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ta.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-th.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-tr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-tt.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-uk.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-ur.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-vi.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-zh-CN.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-zh-HK.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars-zh-TW.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.all.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.all.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.coptic.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.coptic.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.ethiopian-am.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.ethiopian.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.ethiopian.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.hebrew-he.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.hebrew.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.hebrew.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.islamic-ar.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.islamic-fa.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.islamic.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.islamic.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.julian.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.julian.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.lang.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.lang.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.mayan.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.mayan.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.nepali-ne.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.nepali.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.nepali.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.persian-fa.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.persian.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.persian.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-af.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-am.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ar-DZ.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ar-EG.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ar.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-az.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-bg.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-bs.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ca.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-cs.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-da.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-de-CH.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-de.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-el.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-en-AU.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-en-GB.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-en-NZ.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-eo.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-es-AR.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-es-PE.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-es.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-et.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-eu.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-fa.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-fi.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-fo.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-fr-CH.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-fr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-gl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-gu.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-he.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-hi-IN.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-hr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-hu.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-hy.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-id.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-is.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-it.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ja.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ka.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-km.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ko.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-lt.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-lv.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-me-ME.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-me.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-mk.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ml.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ms.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-mt.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-nl-BE.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-nl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-no.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-pl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-pt-BR.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-rm.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ro.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ru.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-sk.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-sl.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-sq.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-sr-SR.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-sr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-sv.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ta.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-th.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-tr.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-tt.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-uk.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-ur.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-vi.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-zh-CN.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-zh-HK.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker-zh-TW.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker.ext.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker.ext.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker.lang.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker.lang.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.picker.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.plus.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.plus.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.taiwan-zh-TW.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.taiwan.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.taiwan.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.thai-th.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.thai.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.thai.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.ummalqura-ar.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.ummalqura.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.ummalqura.min.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.validation.js" />
|
||||
<Content Include="Scripts\calendars\jquery.calendars.validation.min.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-ar.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-bg.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-ca.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-cs.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-da.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-de.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-es.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-et.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-fa.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-fi.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-fr.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-gl.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-gr.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-he.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-hr.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-hu.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-id.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-it.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-ja.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-kr.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-lt.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-lv.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-my.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-nl.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-no.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-pl.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-pt-br.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-ro.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-ru.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-si.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-sk.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-sr.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-sv.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-tr.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-uk.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-zh-CN.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox-zh-TW.js" />
|
||||
<Content Include="Scripts\jquery-1.11.1.js" />
|
||||
<Content Include="Scripts\jquery-1.11.1.min.js" />
|
||||
<Content Include="Scripts\jquery-migrate-1.2.1.js" />
|
||||
<Content Include="Scripts\jquery-migrate-1.2.1.min.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox.min.js" />
|
||||
<Content Include="Scripts\colorbox\jquery.colorbox.js" />
|
||||
<Content Include="Scripts\jquery.cookie.js" />
|
||||
<Content Include="Scripts\jquery.cookie.min.js">
|
||||
<DependentUpon>jquery.cookie.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\jquery.plugin.js" />
|
||||
<Content Include="Scripts\jquery.plugin.min.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-ar.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-ca.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-cs.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-de.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-es.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-fa.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-fr.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-hu.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-is.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-it.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-ja.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-lt.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-lv.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-nl.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-pl.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-pt.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-ro.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-ru.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-sk.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-sv.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-tr.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-vi.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-zh-CN.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry-zh-TW.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry.js" />
|
||||
<Content Include="Scripts\timeentry\jquery.timeentry.min.js" />
|
||||
<Content Include="Scripts\ui\accordion.js" />
|
||||
<Content Include="Scripts\ui\accordion.min.js">
|
||||
<DependentUpon>accordion.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\autocomplete.js" />
|
||||
<Content Include="Scripts\ui\autocomplete.min.js">
|
||||
<DependentUpon>autocomplete.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\button.js" />
|
||||
<Content Include="Scripts\ui\button.min.js">
|
||||
<DependentUpon>button.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\core.js" />
|
||||
<Content Include="Scripts\ui\core.min.js">
|
||||
<DependentUpon>core.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\datepicker.js" />
|
||||
<Content Include="Scripts\ui\datepicker.min.js">
|
||||
<DependentUpon>datepicker.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\dialog.js" />
|
||||
<Content Include="Scripts\ui\dialog.min.js">
|
||||
<DependentUpon>dialog.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\draggable.js" />
|
||||
<Content Include="Scripts\ui\draggable.min.js">
|
||||
<DependentUpon>draggable.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\droppable.js" />
|
||||
<Content Include="Scripts\ui\droppable.min.js">
|
||||
<DependentUpon>droppable.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-blind.js" />
|
||||
<Content Include="Scripts\ui\effect-blind.min.js">
|
||||
<DependentUpon>effect-blind.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-bounce.js" />
|
||||
<Content Include="Scripts\ui\effect-bounce.min.js">
|
||||
<DependentUpon>effect-bounce.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-clip.js" />
|
||||
<Content Include="Scripts\ui\effect-clip.min.js">
|
||||
<DependentUpon>effect-clip.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-drop.js" />
|
||||
<Content Include="Scripts\ui\effect-drop.min.js">
|
||||
<DependentUpon>effect-drop.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-explode.js" />
|
||||
<Content Include="Scripts\ui\effect-explode.min.js">
|
||||
<DependentUpon>effect-explode.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-fade.js" />
|
||||
<Content Include="Scripts\ui\effect-fade.min.js">
|
||||
<DependentUpon>effect-fade.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-fold.js" />
|
||||
<Content Include="Scripts\ui\effect-fold.min.js">
|
||||
<DependentUpon>effect-fold.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-highlight.js" />
|
||||
<Content Include="Scripts\ui\effect-highlight.min.js">
|
||||
<DependentUpon>effect-highlight.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-puff.js" />
|
||||
<Content Include="Scripts\ui\effect-puff.min.js">
|
||||
<DependentUpon>effect-puff.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-pulsate.js" />
|
||||
<Content Include="Scripts\ui\effect-pulsate.min.js">
|
||||
<DependentUpon>effect-pulsate.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-scale.js" />
|
||||
<Content Include="Scripts\ui\effect-scale.min.js">
|
||||
<DependentUpon>effect-scale.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-shake.js" />
|
||||
<Content Include="Scripts\ui\effect-shake.min.js">
|
||||
<DependentUpon>effect-shake.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-size.js" />
|
||||
<Content Include="Scripts\ui\effect-size.min.js">
|
||||
<DependentUpon>effect-size.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-slide.js" />
|
||||
<Content Include="Scripts\ui\effect-slide.min.js">
|
||||
<DependentUpon>effect-slide.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect-transfer.js" />
|
||||
<Content Include="Scripts\ui\effect-transfer.min.js">
|
||||
<DependentUpon>effect-transfer.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\effect.js" />
|
||||
<Content Include="Scripts\ui\effect.min.js">
|
||||
<DependentUpon>effect.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\jquery-ui.js" />
|
||||
<Content Include="Scripts\ui\jquery-ui.min.js" />
|
||||
<Content Include="Scripts\ui\menu.js" />
|
||||
<Content Include="Scripts\ui\menu.min.js">
|
||||
<DependentUpon>menu.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\mouse.js" />
|
||||
<Content Include="Scripts\ui\mouse.min.js">
|
||||
<DependentUpon>mouse.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\position.js" />
|
||||
<Content Include="Scripts\ui\position.min.js">
|
||||
<DependentUpon>position.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\progressbar.js" />
|
||||
<Content Include="Scripts\ui\progressbar.min.js">
|
||||
<DependentUpon>progressbar.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\resizable.js" />
|
||||
<Content Include="Scripts\ui\resizable.min.js">
|
||||
<DependentUpon>resizable.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\selectable.js" />
|
||||
<Content Include="Scripts\ui\selectable.min.js">
|
||||
<DependentUpon>selectable.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\selectmenu.js" />
|
||||
<Content Include="Scripts\ui\selectmenu.min.js">
|
||||
<DependentUpon>selectmenu.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\slider.js" />
|
||||
<Content Include="Scripts\ui\slider.min.js">
|
||||
<DependentUpon>slider.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\sortable.js" />
|
||||
<Content Include="Scripts\ui\sortable.min.js">
|
||||
<DependentUpon>sortable.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\spinner.js" />
|
||||
<Content Include="Scripts\ui\spinner.min.js">
|
||||
<DependentUpon>spinner.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\tabs.js" />
|
||||
<Content Include="Scripts\ui\tabs.min.js">
|
||||
<DependentUpon>tabs.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\tooltip.js" />
|
||||
<Content Include="Scripts\ui\tooltip.min.js">
|
||||
<DependentUpon>tooltip.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\ui\widget.js" />
|
||||
<Content Include="Scripts\ui\widget.min.js">
|
||||
<DependentUpon>widget.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Styles\colorbox.css" />
|
||||
<Content Include="Styles\jquery-datetime-editor.css" />
|
||||
<Content Include="Styles\images\calendar-blue.gif" />
|
||||
<Content Include="Styles\images\calendar-green.gif" />
|
||||
<Content Include="Styles\images\calendar.gif" />
|
||||
<Content Include="Styles\images\colorbox\border.png" />
|
||||
<Content Include="Styles\images\colorbox\controls.png" />
|
||||
<Content Include="Styles\images\colorbox\loading.gif" />
|
||||
<Content Include="Styles\images\colorbox\loading_background.png" />
|
||||
<Content Include="Scripts\jquery.fileupload.js" />
|
||||
<Content Include="Scripts\jquery.fileupload.min.js">
|
||||
<DependentUpon>jquery.fileupload.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\jquery.iframe-transport.js" />
|
||||
<Content Include="Scripts\jquery.iframe-transport.min.js">
|
||||
<DependentUpon>jquery.iframe-transport.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Scripts\jquery.utils.js" />
|
||||
<Content Include="Styles\images\spinnerBlue.png" />
|
||||
<Content Include="Styles\images\spinnerBlueBig.png" />
|
||||
<Content Include="Styles\images\spinnerDefault.png" />
|
||||
<Content Include="Styles\images\spinnerDefaultBig.png" />
|
||||
<Content Include="Styles\images\spinnerGem.png" />
|
||||
<Content Include="Styles\images\spinnerGemBig.png" />
|
||||
<Content Include="Styles\images\spinnerGreen.png" />
|
||||
<Content Include="Styles\images\spinnerGreenBig.png" />
|
||||
<Content Include="Styles\images\spinnerOrange.png" />
|
||||
<Content Include="Styles\images\spinnerOrangeBig.png" />
|
||||
<Content Include="Styles\images\spinnerSquare.png" />
|
||||
<Content Include="Styles\images\spinnerSquareBig.png" />
|
||||
<Content Include="Styles\images\spinnerText.png" />
|
||||
<Content Include="Styles\images\spinnerTextBig.png" />
|
||||
<Content Include="Styles\images\spinnerUpDown.png" />
|
||||
<Content Include="Styles\images\spinnerUpDownBig.png" />
|
||||
<Content Include="Styles\images\ui-bg_flat_0_aaaaaa_40x100.png" />
|
||||
<Content Include="Styles\images\ui-bg_flat_75_ffffff_40x100.png" />
|
||||
<Content Include="Styles\images\ui-bg_glass_55_fbf9ee_1x400.png" />
|
||||
<Content Include="Styles\images\ui-bg_glass_65_ffffff_1x400.png" />
|
||||
<Content Include="Styles\images\ui-bg_glass_75_dadada_1x400.png" />
|
||||
<Content Include="Styles\images\ui-bg_glass_75_e6e6e6_1x400.png" />
|
||||
<Content Include="Styles\images\ui-bg_glass_95_fef1ec_1x400.png" />
|
||||
<Content Include="Styles\images\ui-bg_highlight-soft_75_cccccc_1x100.png" />
|
||||
<Content Include="Styles\images\ui-icons_222222_256x240.png" />
|
||||
<Content Include="Styles\images\ui-icons_2e83ff_256x240.png" />
|
||||
<Content Include="Styles\images\ui-icons_454545_256x240.png" />
|
||||
<Content Include="Styles\images\ui-icons_888888_256x240.png" />
|
||||
<Content Include="Styles\images\ui-icons_cd0a0a_256x240.png" />
|
||||
<Content Include="Styles\jquery-ui.css" />
|
||||
<Content Include="Styles\jquery-ui.min.css" />
|
||||
<Content Include="Styles\jquery-ui.structure.css" />
|
||||
<Content Include="Styles\jquery-ui.structure.min.css" />
|
||||
<Content Include="Styles\jquery-ui.theme.css" />
|
||||
<Content Include="Styles\jquery-ui.theme.min.css" />
|
||||
<Content Include="Styles\jquery.calendars.picker.css" />
|
||||
<Content Include="Styles\jquery.timeentry.css" />
|
||||
<Content Include="Styles\ui.calendars.picker.css" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Orchard\Orchard.Framework.csproj">
|
||||
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
||||
<Name>Orchard.Framework</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\Core\Orchard.Core.csproj">
|
||||
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
||||
<Name>Orchard.Core</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Module.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ResourceManifest.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Styles\Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\CalendarsPickerLocalization.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\TimeEntryLocalization.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\EditorTemplates\DateTimeEditor.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\jquery-1.11.1.min.map" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Scripts\jquery.cookie.min.js.map">
|
||||
<DependentUpon>jquery.cookie.min.js</DependentUpon>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target> -->
|
||||
<Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
|
||||
<PropertyGroup>
|
||||
<AreasManifestDir>$(ProjectDir)\..\Manifests</AreasManifestDir>
|
||||
</PropertyGroup>
|
||||
<!-- If this is an area child project, uncomment the following line:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Child" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
-->
|
||||
<!-- If this is an area parent project, uncomment the following lines:
|
||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Parent" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||
<CopyAreaManifests ManifestPath="$(AreasManifestDir)" CrossCopy="false" RenameViews="true" />
|
||||
-->
|
||||
</Target>
|
||||
<Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
|
||||
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
|
||||
</Target>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
|
||||
<WebProjectProperties>
|
||||
<UseIIS>False</UseIIS>
|
||||
<AutoAssignPort>True</AutoAssignPort>
|
||||
<DevelopmentServerPort>16146</DevelopmentServerPort>
|
||||
<DevelopmentServerVPath>/</DevelopmentServerVPath>
|
||||
<IISUrl>
|
||||
</IISUrl>
|
||||
<NTLMAuthentication>False</NTLMAuthentication>
|
||||
<UseCustomServer>True</UseCustomServer>
|
||||
<CustomServerUrl>https://github.com/OrchardCMS/Orchard/</CustomServerUrl>
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -1,34 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Orchard.jQuery")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyProduct("Orchard")]
|
||||
[assembly: AssemblyCopyright("Copyright © .NET Foundation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("8F116B06-1C0E-4E4C-9A0A-D2FAB851E768")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.10.4")]
|
||||
[assembly: AssemblyFileVersion("1.10.4")]
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
using Orchard.UI.Resources;
|
||||
|
||||
namespace Orchard.jQuery
|
||||
{
|
||||
public class ResourceManifest : IResourceManifestProvider
|
||||
{
|
||||
public void BuildManifests(ResourceManifestBuilder builder)
|
||||
{
|
||||
var manifest = builder.Add();
|
||||
manifest.DefineScript("jQuery").SetUrl("jquery-1.11.1.min.js", "jquery-1.11.1.js").SetVersion("1.11.1").SetCdn("//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js", "//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.js");
|
||||
manifest.DefineScript("jQueryMigrate").SetUrl("jquery-migrate-1.2.1.min.js", "jquery-migrate-1.2.1.js").SetVersion("1.2.1").SetCdn("//ajax.aspnetcdn.com/ajax/jquery.migrate/jquery-migrate-1.2.1.min.js", "//ajax.aspnetcdn.com/ajax/jquery.migrate/jquery-migrate-1.2.1.js");
|
||||
|
||||
// Full jQuery UI package.
|
||||
manifest.DefineScript("jQueryUI").SetUrl("ui/jquery-ui.min.js", "ui/jquery-ui.js").SetVersion("1.11.2").SetDependencies("jQuery").SetCdn("//ajax.aspnetcdn.com/ajax/jquery.ui/1.11.2/jquery-ui.min.js", "//ajax.aspnetcdn.com/ajax/jquery.ui/1.11.2/jquery-ui.js");
|
||||
manifest.DefineStyle("jQueryUI").SetUrl("jquery-ui.min.css", "jquery-ui.css").SetVersion("1.11.2");
|
||||
manifest.DefineStyle("jQueryUI_Structure").SetUrl("jquery-ui.structure.min.css", "jquery-ui.structure.css").SetVersion("1.11.2");
|
||||
manifest.DefineStyle("jQueryUI_Theme").SetUrl("jquery-ui.theme.min.css", "jquery-ui.theme.css").SetVersion("1.11.2");
|
||||
manifest.DefineStyle("jQueryUI_Orchard").SetVersion("1.11.2").SetDependencies("jQueryUI", "jQueryUI_Structure", "jQueryUI_Theme");
|
||||
|
||||
// Individual jQuery UI components.
|
||||
manifest.DefineScript("jQueryUI_Core").SetUrl("ui/core.min.js", "ui/core.js").SetVersion("1.11.2").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryUI_Widget").SetUrl("ui/widget.min.js", "ui/widget.js").SetVersion("1.11.2").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryUI_Mouse").SetUrl("ui/mouse.min.js", "ui/mouse.js").SetVersion("1.11.2").SetDependencies("jQuery", "jQueryUI_Widget");
|
||||
manifest.DefineScript("jQueryUI_Position").SetUrl("ui/position.min.js", "ui/position.js").SetVersion("1.11.2").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryUI_Draggable").SetUrl("ui/draggable.min.js", "ui/draggable.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Mouse");
|
||||
manifest.DefineScript("jQueryUI_Droppable").SetUrl("ui/droppable.min.js", "ui/droppable.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Mouse", "jQueryUI_Draggable");
|
||||
manifest.DefineScript("jQueryUI_Resizable").SetUrl("ui/resizable.min.js", "ui/resizable.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Mouse");
|
||||
manifest.DefineScript("jQueryUI_Selectable").SetUrl("ui/selectable.min.js", "ui/selectable.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Mouse");
|
||||
manifest.DefineScript("jQueryUI_Sortable").SetUrl("ui/sortable.min.js", "ui/sortable.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Mouse");
|
||||
manifest.DefineScript("jQueryUI_Accordion").SetUrl("ui/accordion.min.js", "ui/accordion.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
|
||||
manifest.DefineScript("jQueryUI_Autocomplete").SetUrl("ui/autocomplete.min.js", "ui/autocomplete.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Position", "jQueryUI_Menu");
|
||||
manifest.DefineScript("jQueryUI_Button").SetUrl("ui/button.min.js", "ui/button.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
|
||||
manifest.DefineScript("jQueryUI_Dialog").SetUrl("ui/dialog.min.js", "ui/dialog.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Position", "jQueryUI_Mouse", "jQueryUI_Draggable", "jQueryUI_Resizable", "jQueryUI_Button");
|
||||
manifest.DefineScript("jQueryUI_Slider").SetUrl("ui/slider.min.js", "ui/slider.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Mouse");
|
||||
manifest.DefineScript("jQueryUI_Tabs").SetUrl("ui/tabs.min.js", "ui/tabs.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
|
||||
manifest.DefineScript("jQueryUI_DatePicker").SetUrl("ui/datepicker.min.js", "ui/datepicker.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core");
|
||||
manifest.DefineScript("jQueryUI_Progressbar").SetUrl("ui/progressbar.min.js", "ui/progressbar.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget");
|
||||
manifest.DefineScript("jQueryUI_SelectMenu").SetUrl("ui/selectmenu.min.js", "ui/selectmenu.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Position", "jQueryUI_Menu");
|
||||
manifest.DefineScript("jQueryUI_Spinner").SetUrl("ui/spinner.min.js", "ui/spinner.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Button");
|
||||
manifest.DefineScript("jQueryUI_Tooltip").SetUrl("ui/tooltip.min.js", "ui/tooltip.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Position");
|
||||
manifest.DefineScript("jQueryUI_Menu").SetUrl("ui/menu.min.js", "ui/menu.js").SetVersion("1.11.2").SetDependencies("jQueryUI_Core", "jQueryUI_Widget", "jQueryUI_Position");
|
||||
manifest.DefineScript("jQueryEffects_Core").SetUrl("ui/effect.min.js", "ui/effect.js").SetVersion("1.11.2").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryEffects_Blind").SetUrl("ui/effect-blind.min.js", "ui/effect-blind.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Bounce").SetUrl("ui/effect-bounce.min.js", "ui/effect-bounce.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Clip").SetUrl("ui/effect-clip.min.js", "ui/effect-clip.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Drop").SetUrl("ui/effect-drop.min.js", "ui/effect-drop.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Explode").SetUrl("ui/effect-explode.min.js", "ui/effect-explode.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Fade").SetUrl("ui/effect-fade.min.js", "ui/effect-fade.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Fold").SetUrl("ui/effect-fold.min.js", "ui/effect-fold.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Highlight").SetUrl("ui/effect-highlight.min.js", "ui/effect-highlight.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Puff").SetUrl("ui/effect-puff.min.js", "ui/effect-puff.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Pulsate").SetUrl("ui/effect-pulsate.min.js", "ui/effect-pulsate.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Scale").SetUrl("ui/effect-scale.min.js", "ui/effect-scale.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Shake").SetUrl("ui/effect-shake.min.js", "ui/effect-shake.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Size").SetUrl("ui/effect-size.min.js", "ui/effect-size.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Slide").SetUrl("ui/effect-slide.min.js", "ui/effect-slide.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
manifest.DefineScript("jQueryEffects_Transfer").SetUrl("ui/effect-transfer.min.js", "ui/effect-transfer.js").SetVersion("1.11.2").SetDependencies("jQueryEffects_Core");
|
||||
|
||||
// Additional utilities and plugins.
|
||||
manifest.DefineScript("jQueryUtils").SetUrl("jquery.utils.js").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryPlugin").SetUrl("jquery.plugin.min.js", "jquery.plugin.js").SetDependencies("jQuery");
|
||||
|
||||
// jQuery Calendars.
|
||||
manifest.DefineScript("jQueryCalendars_All").SetUrl("calendars/jquery.calendars.all.min.js", "calendars/jquery.calendars.all.js").SetDependencies("jQueryPlugin").SetVersion("2.0.0");
|
||||
manifest.DefineScript("jQueryCalendars_Picker_Ext").SetUrl("calendars/jquery.calendars.picker.ext.min.js", "calendars/jquery.calendars.picker.ext.js").SetDependencies("jQueryCalendars_Picker").SetVersion("2.0.0");
|
||||
manifest.DefineStyle("jQueryCalendars_Picker").SetUrl("jquery.calendars.picker.css").SetVersion("2.0.0");
|
||||
manifest.DefineStyle("jQueryUI_Calendars_Picker").SetUrl("ui.calendars.picker.css").SetDependencies("jQueryUI_Orchard").SetVersion("2.0.0");
|
||||
|
||||
// jQuery Time Entry.
|
||||
manifest.DefineScript("jQueryTimeEntry").SetUrl("timeentry/jquery.timeentry.min.js", "timeentry/jquery.timeentry.js").SetDependencies("jQueryPlugin").SetVersion("2.0.1");
|
||||
manifest.DefineStyle("jQueryTimeEntry").SetUrl("jquery.timeentry.css").SetVersion("2.0.1");
|
||||
|
||||
// jQuery Date/Time Editor Enhancements.
|
||||
manifest.DefineStyle("jQueryDateTimeEditor").SetUrl("jquery-datetime-editor.css").SetDependencies("DateTimeEditor");
|
||||
|
||||
// jQuery File Upload.
|
||||
manifest.DefineScript("jQueryIFrameTransport").SetUrl("jquery.iframe-transport.min.js", "jquery.iframe-transport.js").SetVersion("1.9.0").SetDependencies("jQuery");
|
||||
manifest.DefineScript("jQueryFileUpload").SetUrl("jquery.fileupload.min.js", "jquery.fileupload.js").SetVersion("5.41.0").SetDependencies("jQueryIFrameTransport").SetDependencies("jQueryUI_Widget");
|
||||
|
||||
// jQuery Color Box.
|
||||
manifest.DefineScript("jQueryColorBox").SetUrl("colorbox/jquery.colorbox.min.js", "colorbox/jquery.colorbox.js").SetVersion("1.5.13").SetDependencies("jQuery");
|
||||
manifest.DefineStyle("jQueryColorBox").SetUrl("colorbox.css").SetVersion("1.5.13");
|
||||
|
||||
// jQuery Cookie.
|
||||
manifest.DefineScript("jQueryCookie").SetUrl("jquery.cookie.min.js", "jquery.cookie.js").SetVersion("1.4.1").SetDependencies("jQuery");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<system.webServer>
|
||||
<staticContent>
|
||||
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
|
||||
</staticContent>
|
||||
<handlers accessPolicy="Script,Read">
|
||||
<!-- For any request to a file exists on disk, return it via native http module. AccessPolicy="Script" above 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,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Afrikaans localisation for Gregorian/Julian calendars for jQuery.
|
||||
Written by Renier Pretorius and Ruediger Thiede. */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['af'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Januarie','Februarie','Maart','April','Mei','Junie',
|
||||
'Julie','Augustus','September','Oktober','November','Desember'],
|
||||
monthNamesShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun',
|
||||
'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
|
||||
dayNames: ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
|
||||
dayNamesShort: ['Son', 'Maan', 'Dins', 'Woens', 'Don', 'Vry', 'Sat'],
|
||||
dayNamesMin: ['So','Ma','Di','Wo','Do','Vr','Sa'],
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['af'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['af'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Amharic (አማርኛ) localisation for Gregorian/Julian calendars for jQuery.
|
||||
Leyu Sisay. */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['am'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['ጃንዋሪ','ፈብርዋሪ','ማርች','አፕሪል','ሜይ','ጁን',
|
||||
'ጁላይ','ኦገስት','ሴፕቴምበር','ኦክቶበር','ኖቬምበር','ዲሴምበር'],
|
||||
monthNamesShort: ['ጃንዋ', 'ፈብር', 'ማርች', 'አፕሪ', 'ሜይ', 'ጁን',
|
||||
'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክቶ', 'ኖቬም', 'ዲሴም'],
|
||||
dayNames: ['ሰንዴይ', 'መንዴይ', 'ትዩስዴይ', 'ዌንስዴይ', 'ተርሰዴይ', 'ፍራይዴይ', 'ሳተርዴይ'],
|
||||
dayNamesShort: ['ሰንዴ', 'መንዴ', 'ትዩስ', 'ዌንስ', 'ተርሰ', 'ፍራይ', 'ሳተር'],
|
||||
dayNamesMin: ['ሰን', 'መን', 'ትዩ', 'ዌን', 'ተር', 'ፍራ', 'ሳተ'],
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['am'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['am'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,22 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Algerian (and Tunisian) Arabic localisation for Gregorian/Julian calendars for jQuery.
|
||||
Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ar-DZ'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان',
|
||||
'جويلية', 'أوت', 'سبتمبر','أكتوبر', 'نوفمبر', 'ديسمبر'],
|
||||
monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
|
||||
dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
||||
dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
||||
dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
firstDay: 6,
|
||||
isRTL: true
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['ar-DZ'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ar-DZ'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Arabic localisation for Gregorian/Julian calendars for jQuery.
|
||||
Mahmoud Khaled -- mahmoud.khaled@badrit.com
|
||||
NOTE: monthNames are the new months names */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ar-EG'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['يناير', 'فبراير', 'مارس', 'إبريل', 'مايو', 'يونية',
|
||||
'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
|
||||
monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
|
||||
dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
||||
dayNamesShort: ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
|
||||
dayNamesMin: ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
firstDay: 6,
|
||||
isRTL: true
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['ar-EG'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ar-EG'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,24 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Arabic localisation for Gregorian/Julian calendars for jQuery.
|
||||
Khaled Al Horani -- خالد الحوراني -- koko.dw@gmail.com. */
|
||||
/* NOTE: monthNames are the original months names and they are the Arabic names,
|
||||
not the new months name فبراير - يناير and there isn't any Arabic roots for these months */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ar'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'آذار', 'حزيران',
|
||||
'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
|
||||
monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
|
||||
dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
||||
dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
||||
dayNamesMin: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
firstDay: 6,
|
||||
isRTL: true
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['ar'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ar'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Azerbaijani localisation for Gregorian/Julian calendars for jQuery.
|
||||
Written by Jamil Najafov (necefov33@gmail.com). */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['az'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Yanvar','Fevral','Mart','Aprel','May','İyun',
|
||||
'İyul','Avqust','Sentyabr','Oktyabr','Noyabr','Dekabr'],
|
||||
monthNamesShort: ['Yan','Fev','Mar','Apr','May','İyun',
|
||||
'İyul','Avq','Sen','Okt','Noy','Dek'],
|
||||
dayNames: ['Bazar','Bazar ertəsi','Çərşənbə axşamı','Çərşənbə','Cümə axşamı','Cümə','Şənbə'],
|
||||
dayNamesShort: ['B','Be','Ça','Ç','Ca','C','Ş'],
|
||||
dayNamesMin: ['B','B','Ç','С','Ç','C','Ş'],
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['az'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['az'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Bulgarian localisation for Gregorian/Julian calendars for jQuery.
|
||||
Written by Stoyan Kyosev (http://svest.org). */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['bg'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
|
||||
'Юли','Август','Септември','Октомври','Ноември','Декември'],
|
||||
monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
|
||||
'Юли','Авг','Сеп','Окт','Нов','Дек'],
|
||||
dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
|
||||
dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
|
||||
dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['bg'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['bg'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Bosnian localisation for Gregorian/Julian calendars for jQuery.
|
||||
Kenan Konjo. */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['bs'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Januar','Februar','Mart','April','Maj','Juni',
|
||||
'Juli','August','Septembar','Oktobar','Novembar','Decembar'],
|
||||
monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
|
||||
'Jul','Aug','Sep','Okt','Nov','Dec'],
|
||||
dayNames: ['Nedelja','Ponedeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
|
||||
dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
|
||||
dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
|
||||
dateFormat: 'dd.mm.yy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['bs'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['bs'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Catalan localisation for Gregorian/Julian calendars for jQuery.
|
||||
Writers: (joan.leon@gmail.com). */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ca'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Gener','Febrer','Març','Abril','Maig','Juny',
|
||||
'Juliol','Agost','Setembre','Octubre','Novembre','Desembre'],
|
||||
monthNamesShort: ['Gen','Feb','Mar','Abr','Mai','Jun',
|
||||
'Jul','Ago','Set','Oct','Nov','Des'],
|
||||
dayNames: ['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'],
|
||||
dayNamesShort: ['Dug','Dln','Dmt','Dmc','Djs','Dvn','Dsb'],
|
||||
dayNamesMin: ['Dg','Dl','Dt','Dc','Dj','Dv','Ds'],
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['ca'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['ca'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Czech localisation for Gregorian/Julian calendars for jQuery.
|
||||
Written by Tomas Muller (tomas@tomas-muller.net). */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['cs'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['leden','únor','březen','duben','květen','červen',
|
||||
'červenec','srpen','září','říjen','listopad','prosinec'],
|
||||
monthNamesShort: ['led','úno','bře','dub','kvě','čer',
|
||||
'čvc','srp','zář','říj','lis','pro'],
|
||||
dayNames: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
|
||||
dayNamesShort: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
|
||||
dayNamesMin: ['ne','po','út','st','čt','pá','so'],
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['cs'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['cs'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Danish localisation for Gregorian/Julian calendars for jQuery.
|
||||
Written by Jan Christensen ( deletestuff@gmail.com). */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['da'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Januar','Februar','Marts','April','Maj','Juni',
|
||||
'Juli','August','September','Oktober','November','December'],
|
||||
monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
|
||||
'Jul','Aug','Sep','Okt','Nov','Dec'],
|
||||
dayNames: ['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],
|
||||
dayNamesShort: ['Søn','Man','Tir','Ons','Tor','Fre','Lør'],
|
||||
dayNamesMin: ['Sø','Ma','Ti','On','To','Fr','Lø'],
|
||||
dateFormat: 'dd-mm-yyyy',
|
||||
firstDay: 0,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['da'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['da'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
Swiss-German localisation for Gregorian/Julian calendars for jQuery.
|
||||
Written by Douglas Jose & Juerg Meier. */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['de-CH'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Januar','Februar','März','April','Mai','Juni',
|
||||
'Juli','August','September','Oktober','November','Dezember'],
|
||||
monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
|
||||
'Jul','Aug','Sep','Okt','Nov','Dez'],
|
||||
dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
|
||||
dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
|
||||
dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['de-CH'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['de-CH'];
|
||||
}
|
||||
})(jQuery);
|
||||
@@ -1,23 +0,0 @@
|
||||
/* http://keith-wood.name/calendars.html
|
||||
German localisation for Gregorian/Julian calendars for jQuery.
|
||||
Written by Milian Wolff (mail@milianw.de). */
|
||||
(function($) {
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['de'] = {
|
||||
name: 'Gregorian',
|
||||
epochs: ['BCE', 'CE'],
|
||||
monthNames: ['Januar','Februar','März','April','Mai','Juni',
|
||||
'Juli','August','September','Oktober','November','Dezember'],
|
||||
monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
|
||||
'Jul','Aug','Sep','Okt','Nov','Dez'],
|
||||
dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
|
||||
dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
|
||||
dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
firstDay: 1,
|
||||
isRTL: false
|
||||
};
|
||||
if ($.calendars.calendars.julian) {
|
||||
$.calendars.calendars.julian.prototype.regionalOptions['de'] =
|
||||
$.calendars.calendars.gregorian.prototype.regionalOptions['de'];
|
||||
}
|
||||
})(jQuery);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user