{
@@ -57,11 +58,33 @@ namespace Orchard.Fields.Drivers {
if (settings.Required && String.IsNullOrWhiteSpace(field.Value)) {
updater.AddModelError(GetPrefix(field, part), T("Url is required for {0}", T(field.DisplayName)));
}
- else if (!String.IsNullOrWhiteSpace(field.Value) && !Uri.IsWellFormedUriString(field.Value, UriKind.RelativeOrAbsolute)) {
- updater.AddModelError(GetPrefix(field, part), T("{0} is an invalid url.", field.Value));
- }
else if (settings.LinkTextMode == LinkTextMode.Required && String.IsNullOrWhiteSpace(field.Text)) {
updater.AddModelError(GetPrefix(field, part), T("Text is required for {0}.", T(field.DisplayName)));
+ } else if (!String.IsNullOrWhiteSpace(field.Value)) {
+ // Check if it's a valid uri, considering that there may be the link to an anchor only
+ // e.g.: field.Value = "#divId"
+ // Take everything before the first "#" character and check if it's a valid uri.
+ // If there is no character before the first "#", consider the value as a valid one (because it is a reference to a div inside the same page)
+ if (field.Value.StartsWith("#")) {
+ // The field value is a tag id reference
+ // For html 5, a tag id is valid as long as it doesn't contain white spaces
+ if (field.Value.IndexOf(' ') >= 0) {
+ updater.AddModelError(GetPrefix(field, part), T("{0} is an invalid url.", field.Value));
+ }
+ } else {
+ var urlAndRef = field.Value.Split(new char[] { '#' }, 2);
+
+ // Since field value is a proper url and not a tag id only, assume the first part of the array is the actual url to link to
+ if (!String.IsNullOrWhiteSpace(urlAndRef[0]) && !Uri.IsWellFormedUriString(urlAndRef[0], UriKind.RelativeOrAbsolute)) {
+ updater.AddModelError(GetPrefix(field, part), T("{0} is an invalid url.", field.Value));
+ } else if (urlAndRef.Length > 1) {
+ // The second part of the url is the id reference
+ // For html 5, a tag id is valid as long as it doesn't contain white spaces
+ if (urlAndRef[1].IndexOf(' ') >= 0) {
+ updater.AddModelError(GetPrefix(field, part), T("{0} is an invalid url.", field.Value));
+ }
+ }
+ }
}
}
diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Link.Edit.cshtml b/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Link.Edit.cshtml
index 89bcbfdbf..c35df6491 100644
--- a/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Link.Edit.cshtml
+++ b/src/Orchard.Web/Modules/Orchard.Fields/Views/EditorTemplates/Fields/Link.Edit.cshtml
@@ -25,7 +25,7 @@
@(settings.Required ? Html.TextBoxFor(m => m.Value, new { @class = "text large", required = "required" }) : Html.TextBoxFor(m => m.Value, new { @class = "text large" }))
- @T("A valid url, i.e. http://orchardproject.net, /content/file.pdf, ...")
+ @T("A valid url, i.e. http://orchardproject.net, /content/file.pdf, #some_id, ...")
@if (settings.LinkTextMode == LinkTextMode.Optional || settings.LinkTextMode == LinkTextMode.Required) {
diff --git a/src/Orchard.Web/Modules/Orchard.Fields/Web.config b/src/Orchard.Web/Modules/Orchard.Fields/Web.config
index 8fae9643f..a5c193197 100644
--- a/src/Orchard.Web/Modules/Orchard.Fields/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Fields/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Forms/Orchard.Forms.csproj b/src/Orchard.Web/Modules/Orchard.Forms/Orchard.Forms.csproj
index 621b2818a..17d3fa58b 100644
--- a/src/Orchard.Web/Modules/Orchard.Forms/Orchard.Forms.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Forms/Orchard.Forms.csproj
@@ -54,8 +54,8 @@
..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
@@ -172,4 +172,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Forms/Web.config b/src/Orchard.Web/Modules/Orchard.Forms/Web.config
index 68cba4a35..df4c6983f 100644
--- a/src/Orchard.Web/Modules/Orchard.Forms/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Forms/Web.config
@@ -51,7 +51,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Forms/packages.config b/src/Orchard.Web/Modules/Orchard.Forms/packages.config
index 96de43e4a..423014ad0 100644
--- a/src/Orchard.Web/Modules/Orchard.Forms/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.Forms/packages.config
@@ -4,5 +4,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.ImageEditor/Web.config b/src/Orchard.Web/Modules/Orchard.ImageEditor/Web.config
index 510d562fe..434d94d1a 100644
--- a/src/Orchard.Web/Modules/Orchard.ImageEditor/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.ImageEditor/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.ImportExport/Web.config b/src/Orchard.Web/Modules/Orchard.ImportExport/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.ImportExport/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.ImportExport/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Web.config b/src/Orchard.Web/Modules/Orchard.Indexing/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Indexing/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Indexing/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.JobsQueue/Orchard.JobsQueue.csproj b/src/Orchard.Web/Modules/Orchard.JobsQueue/Orchard.JobsQueue.csproj
index 323423ca7..7d665223d 100644
--- a/src/Orchard.Web/Modules/Orchard.JobsQueue/Orchard.JobsQueue.csproj
+++ b/src/Orchard.Web/Modules/Orchard.JobsQueue/Orchard.JobsQueue.csproj
@@ -60,8 +60,8 @@
..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
@@ -196,4 +196,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config b/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config
index 1149fd7ed..975f0c223 100644
--- a/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.JobsQueue/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.JobsQueue/packages.config b/src/Orchard.Web/Modules/Orchard.JobsQueue/packages.config
index 3a05f90ac..4edd53141 100644
--- a/src/Orchard.Web/Modules/Orchard.JobsQueue/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.JobsQueue/packages.config
@@ -5,5 +5,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj
index 1c544f1c0..aeaf2d938 100644
--- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj
@@ -58,8 +58,8 @@
..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Web.config b/src/Orchard.Web/Modules/Orchard.Layouts/Web.config
index 0908d535f..390cce3a8 100644
--- a/src/Orchard.Web/Modules/Orchard.Layouts/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Layouts/Web.config
@@ -43,7 +43,7 @@
-
+
@@ -69,6 +69,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/packages.config b/src/Orchard.Web/Modules/Orchard.Layouts/packages.config
index d391928d1..9504b7d9d 100644
--- a/src/Orchard.Web/Modules/Orchard.Layouts/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.Layouts/packages.config
@@ -7,6 +7,6 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Lists/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Lists/AdminMenu.cs
index fbb99bd8d..eb2ad4627 100644
--- a/src/Orchard.Web/Modules/Orchard.Lists/AdminMenu.cs
+++ b/src/Orchard.Web/Modules/Orchard.Lists/AdminMenu.cs
@@ -1,98 +1,15 @@
-using System;
-using System.Linq;
-using Orchard.ContentManagement;
-using Orchard.Core.Containers.Models;
-using Orchard.Core.Containers.Services;
-using Orchard.Localization;
-using Orchard.Security;
+using Orchard.Localization;
using Orchard.UI.Navigation;
-using Orchard.Utility.Extensions;
namespace Orchard.Lists {
public class AdminMenu : INavigationProvider {
- private readonly IContainerService _containerService;
- private readonly IContentManager _contentManager;
- private readonly IAuthorizationService _authorizationService;
- private readonly IWorkContextAccessor _workContextAccessor;
-
- public AdminMenu(
- IContainerService containerService,
- IContentManager contentManager,
- IAuthorizationService authorizationService,
- IWorkContextAccessor workContextAccessor
- ) {
- _containerService = containerService;
- _contentManager = contentManager;
- _authorizationService = authorizationService;
- _workContextAccessor = workContextAccessor;
- }
-
public Localizer T { get; set; }
public string MenuName { get { return "admin"; } }
- public void GetNavigation(NavigationBuilder builder) {
- builder.AddImageSet("list");
-
- CreateListManagementMenuItem(builder);
- CreateListMenuItems(builder);
- }
-
- private void CreateListManagementMenuItem(NavigationBuilder builder) {
- builder.Add(T("Lists"), "11", item => item
- .Action("Index", "Admin", new {area = "Orchard.Lists"}).Permission(Permissions.ManageLists)
- );
- }
-
- private void CreateListMenuItems(NavigationBuilder builder) {
- var containers = _containerService
- .GetContainersQuery(VersionOptions.Latest)
- .Where(x => x.ShowOnAdminMenu)
- .List()
- .Where(x => _authorizationService.TryCheckAccess(Orchard.Core.Contents.Permissions.EditContent, _workContextAccessor.GetContext().CurrentUser, x))
- .ToList();
-
- foreach (var container in containers) {
- var closureContainer = container;
-
- if (!String.IsNullOrWhiteSpace(container.AdminMenuImageSet)) {
- builder.AddImageSet(container.AdminMenuImageSet.Trim());
- }
-
- builder.Add(T(container.AdminMenuText), container.AdminMenuPosition, item => {
- var containedItems = _containerService.GetContentItems(closureContainer.Id, VersionOptions.Latest).ToList();
- var actualContainer = closureContainer;
- var position = 0;
-
- // If the list has just a single item that happens to be a container itself,
- // we will treat that one as the actual container to provide a nice & quick way to manage that list.
- if (containedItems.Count == 1) {
- var containedItem = containedItems.First().As();
-
- if (containedItem != null) {
- actualContainer = containedItem;
- foreach (var itemContentType in containedItem.ItemContentTypes) {
- var closureItemContentType = itemContentType;
- item.Add(T("New {0}", itemContentType.DisplayName), String.Format("1.{0}", position++), subItem => subItem
- .Action("Create", "Admin", new { id = closureItemContentType.Name, containerid = containedItem.Id, area = "Contents" }));
- }
- }
- }
-
- var containerMetadata = _contentManager.GetItemMetadata(actualContainer);
- item.Action(containerMetadata.AdminRouteValues);
-
- item.Action(containerMetadata.AdminRouteValues);
- item.AddClass("nav-list");
- item.AddClass(closureContainer.AdminMenuText.HtmlClassify());
- item.LinkToFirstChild(false);
-
- foreach (var itemContentType in closureContainer.ItemContentTypes) {
- var closureItemContentType = itemContentType;
- item.Add(T("New {0}", itemContentType.DisplayName), String.Format("1.{0}", position++), subItem => subItem
- .Action("Create", "Admin", new { id = closureItemContentType.Name, containerid = container.Id, area = "Contents" }));
- }
- });
- }
- }
+ public void GetNavigation(NavigationBuilder builder) =>
+ builder
+ .AddImageSet("lists")
+ .Add(T("Lists"), "11", item => item
+ .Action("Index", "Admin", new { area = "Orchard.Lists" }).Permission(Permissions.ManageLists));
}
-}
\ No newline at end of file
+}
diff --git a/src/Orchard.Web/Modules/Orchard.Lists/Orchard.Lists.csproj b/src/Orchard.Web/Modules/Orchard.Lists/Orchard.Lists.csproj
index 2826072e4..f8b3eb32f 100644
--- a/src/Orchard.Web/Modules/Orchard.Lists/Orchard.Lists.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Lists/Orchard.Lists.csproj
@@ -115,6 +115,7 @@
+
@@ -143,16 +144,14 @@
orchard-lists-admin.js
-
+
-
list-admin.css
-
@@ -272,4 +271,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Lists/Styles/images/menu.list-definition.png b/src/Orchard.Web/Modules/Orchard.Lists/Styles/images/menu.lists.png
similarity index 100%
rename from src/Orchard.Web/Modules/Orchard.Lists/Styles/images/menu.list-definition.png
rename to src/Orchard.Web/Modules/Orchard.Lists/Styles/images/menu.lists.png
diff --git a/src/Orchard.Web/Modules/Orchard.Lists/Styles/menu.list-admin.css b/src/Orchard.Web/Modules/Orchard.Lists/Styles/menu.list-admin.css
deleted file mode 100644
index 9d43ff049..000000000
--- a/src/Orchard.Web/Modules/Orchard.Lists/Styles/menu.list-admin.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.navicon-list,
-.navicon-lists,
-.section-new .subnavicon-list,
-.nav-list > h3 > a,
-.nav-list-definition > h3 > a {
- background-image:url(images/menu.list.png) !important;
-}
-
-.navicon-list:hover,
-.navicon-lists:hover,
-.nav-list > h3 > a:hover,
-.nav-list-definition > h3 > a:hover {
- background-position:0 -30px !important;
-}
-
-.navicon-lists {
- background-image:url(images/menu.list.png) !important;
-}
-
-.navicon-lists:hover {
- background-position:0 -30px !important;
-}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Lists/Styles/menu.lists-admin.css b/src/Orchard.Web/Modules/Orchard.Lists/Styles/menu.lists-admin.css
new file mode 100644
index 000000000..2199b6ee8
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Lists/Styles/menu.lists-admin.css
@@ -0,0 +1,7 @@
+.navicon-lists {
+ background-image: url(images/menu.lists.png) !important;
+}
+
+.navicon-lists:hover {
+ background-position: 0 -30px !important;
+}
diff --git a/src/Orchard.Web/Modules/Orchard.Lists/Web.config b/src/Orchard.Web/Modules/Orchard.Lists/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Lists/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Lists/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Localization/Web.config b/src/Orchard.Web/Modules/Orchard.Localization/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Localization/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Localization/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj b/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj
index b01ce63de..c4a391378 100644
--- a/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Media/Orchard.Media.csproj
@@ -52,9 +52,6 @@
false
-
- ..\..\..\packages\DotNetZip.1.12.0\lib\net20\DotNetZip.dll
-
..\..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\lib\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
@@ -64,6 +61,7 @@
+
@@ -204,4 +202,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Media/Services/MediaService.cs b/src/Orchard.Web/Modules/Orchard.Media/Services/MediaService.cs
index f11190b7c..3084bd871 100644
--- a/src/Orchard.Web/Modules/Orchard.Media/Services/MediaService.cs
+++ b/src/Orchard.Web/Modules/Orchard.Media/Services/MediaService.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO;
+using System.IO.Compression;
using System.Linq;
using System.Web;
-using Ionic.Zip;
using Orchard.ContentManagement;
using Orchard.FileSystems.Media;
using Orchard.Localization;
@@ -194,7 +194,7 @@ namespace Orchard.Media.Services {
/// The array of bytes with the file's contents.
/// Boolean value indicating weather zip files should be extracted.
/// The path to the uploaded file.
- public string UploadMediaFile(string folderPath, string fileName, byte [] bytes, bool extractZip) {
+ public string UploadMediaFile(string folderPath, string fileName, byte[] bytes, bool extractZip) {
Argument.ThrowIfNullOrEmpty(folderPath, "folderPath");
Argument.ThrowIfNullOrEmpty(fileName, "fileName");
Argument.ThrowIfNull(bytes, "bytes");
@@ -274,16 +274,16 @@ namespace Orchard.Media.Services {
// must be in the whitelist
MediaSettingsPart mediaSettings = currentSite.As();
-
+
if (mediaSettings == null) {
return false;
- }
-
- if(String.IsNullOrWhiteSpace(mediaSettings.UploadAllowedFileTypeWhitelist)) {
- return true;
- }
+ }
- if(!mediaSettings.UploadAllowedFileTypeWhitelist.ToUpperInvariant().Split(' ').Contains(extension.ToUpperInvariant())) {
+ if (String.IsNullOrWhiteSpace(mediaSettings.UploadAllowedFileTypeWhitelist)) {
+ return true;
+ }
+
+ if (!mediaSettings.UploadAllowedFileTypeWhitelist.ToUpperInvariant().Split(' ').Contains(extension.ToUpperInvariant())) {
return false;
}
}
@@ -305,28 +305,26 @@ namespace Orchard.Media.Services {
Argument.ThrowIfNullOrEmpty(targetFolder, "targetFolder");
Argument.ThrowIfNull(zipStream, "zipStream");
- using (var fileInflater = ZipFile.Read(zipStream)) {
+ using (var fileInflater = new ZipArchive(zipStream)) {
// We want to preserve whatever directory structure the zip file contained instead
// of flattening it.
// The API below doesn't necessarily return the entries in the zip file in any order.
// That means the files in subdirectories can be returned as entries from the stream
// before the directories that contain them, so we create directories as soon as first
// file below their path is encountered.
- foreach (ZipEntry entry in fileInflater) {
+ foreach (var entry in fileInflater.Entries) {
if (entry == null) {
continue;
}
- if (!entry.IsDirectory && !string.IsNullOrEmpty(entry.FileName)) {
-
+ if (!string.IsNullOrEmpty(entry.Name)) {
// skip disallowed files
- if (FileAllowed(entry.FileName, false)) {
- string fullFileName = _storageProvider.Combine(targetFolder, entry.FileName);
+ if (FileAllowed(entry.Name, false)) {
+ string fullFileName = _storageProvider.Combine(targetFolder, entry.FullName);
- using (var stream = entry.OpenReader()) {
+ using (var stream = entry.Open()) {
// the call will return false if the file already exists
if (!_storageProvider.TrySaveStream(fullFileName, stream)) {
-
// try to delete the file and save again
try {
_storageProvider.DeleteFile(fullFileName);
diff --git a/src/Orchard.Web/Modules/Orchard.Media/Web.config b/src/Orchard.Web/Modules/Orchard.Media/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Media/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Media/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Media/packages.config b/src/Orchard.Web/Modules/Orchard.Media/packages.config
index 5de97f737..1c55d6960 100644
--- a/src/Orchard.Web/Modules/Orchard.Media/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.Media/packages.config
@@ -1,6 +1,5 @@
-
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
index 11f70f309..c896c8e71 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Orchard.MediaLibrary.csproj
@@ -58,8 +58,8 @@
..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
@@ -451,4 +451,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config
index 3ab218f54..6467d9f0d 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/packages.config b/src/Orchard.Web/Modules/Orchard.MediaLibrary/packages.config
index 3a05f90ac..4edd53141 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/packages.config
@@ -5,5 +5,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.MediaPicker/Web.config b/src/Orchard.Web/Modules/Orchard.MediaPicker/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaPicker/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.MediaPicker/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Web.config b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.MediaProcessing/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.MediaProcessing/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.MessageBus/Web.config b/src/Orchard.Web/Modules/Orchard.MessageBus/Web.config
index 9b5d042d1..d3d43517f 100644
--- a/src/Orchard.Web/Modules/Orchard.MessageBus/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.MessageBus/Web.config
@@ -49,7 +49,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Migrations/Web.config b/src/Orchard.Web/Modules/Orchard.Migrations/Web.config
index 9b5d042d1..d3d43517f 100644
--- a/src/Orchard.Web/Modules/Orchard.Migrations/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Migrations/Web.config
@@ -49,7 +49,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Web.config b/src/Orchard.Web/Modules/Orchard.Modules/Web.config
index 5d7a337e5..d7b3d6256 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Web.config
@@ -53,7 +53,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Web.config b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Web.config
index 5d7a337e5..d7b3d6256 100644
--- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Web.config
@@ -53,7 +53,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.OutputCache/Web.config b/src/Orchard.Web/Modules/Orchard.OutputCache/Web.config
index 64b9971e8..d85ea246e 100644
--- a/src/Orchard.Web/Modules/Orchard.OutputCache/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.OutputCache/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Web.config b/src/Orchard.Web/Modules/Orchard.Packaging/Web.config
index 5706c1b4b..9d27699e2 100644
--- a/src/Orchard.Web/Modules/Orchard.Packaging/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Packaging/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Web.config b/src/Orchard.Web/Modules/Orchard.Pages/Web.config
index 55653b53f..6295ffe08 100644
--- a/src/Orchard.Web/Modules/Orchard.Pages/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Pages/Web.config
@@ -51,7 +51,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Projections/Controllers/AdminController.cs
index 01b79f29d..eb9dfc794 100644
--- a/src/Orchard.Web/Modules/Orchard.Projections/Controllers/AdminController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Projections/Controllers/AdminController.cs
@@ -1,9 +1,13 @@
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using System.Web.Routing;
+using Orchard.ContentManagement;
using Orchard.Core.Title.Models;
+using Orchard.DisplayManagement;
using Orchard.Forms.Services;
+using Orchard.Localization;
using Orchard.Mvc;
using Orchard.Projections.Descriptors.Filter;
using Orchard.Projections.Descriptors.Layout;
@@ -11,13 +15,9 @@ using Orchard.Projections.Descriptors.SortCriterion;
using Orchard.Projections.Models;
using Orchard.Projections.Services;
using Orchard.Projections.ViewModels;
-using Orchard.ContentManagement;
-using Orchard.DisplayManagement;
-using Orchard.Localization;
-using Orchard.UI.Notify;
-using System;
using Orchard.Settings;
using Orchard.UI.Navigation;
+using Orchard.UI.Notify;
namespace Orchard.Projections.Controllers {
[ValidateInput(false)]
@@ -84,7 +84,7 @@ namespace Orchard.Projections.Controllers {
var model = new AdminIndexViewModel {
Queries = results.Select(x => new QueryEntry {
- Query = x.As
().Record,
+ Query = x.As().Record,
QueryId = x.Id,
Name = x.As().Name
}).ToList(),
@@ -158,16 +158,21 @@ namespace Orchard.Projections.Controllers {
Category = f.Category,
Type = f.Type,
FilterRecordId = filter.Id,
- DisplayText = String.IsNullOrWhiteSpace(filter.Description) ? f.Display(new FilterContext {State = FormParametersHelper.ToDynamic(filter.State)}).Text : filter.Description
+ DisplayText = String.IsNullOrWhiteSpace(filter.Description) ? f.Display(new FilterContext { State = FormParametersHelper.ToDynamic(filter.State) }).Text : filter.Description
});
}
}
- filterGroupEntries.Add( new FilterGroupEntry { Id = group.Id, Filters = filterEntries } );
+ filterGroupEntries.Add(new FilterGroupEntry { Id = group.Id, Filters = filterEntries });
}
viewModel.FilterGroups = filterGroupEntries;
+ if (viewModel.FilterGroups.Any(group => group.Filters.Count() == 0)) {
+ _services.Notifier.Warning(
+ T("This Query has at least one empty filter group, which will cause all content items to be returned, unless the Projection using this Query limits the number of content items displayed."));
+ }
+
#endregion
#region Load Sort criterias
@@ -185,7 +190,7 @@ namespace Orchard.Projections.Controllers {
Category = f.Category,
Type = f.Type,
SortCriterionRecordId = sortCriterion.Id,
- DisplayText = String.IsNullOrWhiteSpace(sortCriterion.Description) ? f.Display(new SortCriterionContext { State = FormParametersHelper.ToDynamic(sortCriterion.State) }).Text : sortCriterion.Description
+ DisplayText = String.IsNullOrWhiteSpace(sortCriterion.Description) ? f.Display(new SortCriterionContext { State = FormParametersHelper.ToDynamic(sortCriterion.State) }).Text : sortCriterion.Description
});
}
}
diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Drivers/ProjectionPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Projections/Drivers/ProjectionPartDriver.cs
index 352368fe6..7230ac7c3 100644
--- a/src/Orchard.Web/Modules/Orchard.Projections/Drivers/ProjectionPartDriver.cs
+++ b/src/Orchard.Web/Modules/Orchard.Projections/Drivers/ProjectionPartDriver.cs
@@ -20,10 +20,12 @@ using Orchard.Projections.Settings;
using Orchard.Projections.ViewModels;
using Orchard.Tokens;
using Orchard.UI.Navigation;
+using Orchard.UI.Notify;
using Orchard.Utility.Extensions;
namespace Orchard.Projections.Drivers {
public class ProjectionPartDriver : ContentPartDriver {
+ private readonly IOrchardServices _orchardServices;
private readonly IRepository _queryRepository;
private readonly IProjectionManagerExtension _projectionManager;
private readonly IFeedManager _feedManager;
@@ -33,25 +35,25 @@ namespace Orchard.Projections.Drivers {
private const string TemplateName = "Parts/ProjectionPart";
public ProjectionPartDriver(
- IOrchardServices services,
+ IOrchardServices orchardServices,
IRepository queryRepository,
IProjectionManagerExtension projectionManager,
IFeedManager feedManager,
ITokenizer tokenizer,
IDisplayHelperFactory displayHelperFactory,
IWorkContextAccessor workContextAccessor) {
+ _orchardServices = orchardServices;
_queryRepository = queryRepository;
_projectionManager = projectionManager;
_feedManager = feedManager;
_tokenizer = tokenizer;
_displayHelperFactory = displayHelperFactory;
_workContextAccessor = workContextAccessor;
+
T = NullLocalizer.Instance;
- Services = services;
}
public Localizer T { get; set; }
- public IOrchardServices Services { get; set; }
protected override string Prefix { get { return "ProjectionPart"; } }
@@ -59,7 +61,7 @@ namespace Orchard.Projections.Drivers {
var query = part.Record.QueryPartRecord;
// retrieving paging parameters
- var queryString = Services.WorkContext.HttpContext.Request.QueryString;
+ var queryString = _orchardServices.WorkContext.HttpContext.Request.QueryString;
var pageKey = String.IsNullOrWhiteSpace(part.Record.PagerSuffix) ? "page" : "page-" + part.Record.PagerSuffix;
var page = 0;
@@ -81,16 +83,14 @@ namespace Orchard.Projections.Drivers {
var pageSizeKey = "pageSize" + part.Record.PagerSuffix;
if (queryString.AllKeys.Contains(pageSizeKey)) {
- int qsPageSize;
-
- if (Int32.TryParse(queryString[pageSizeKey], out qsPageSize)) {
+ if (Int32.TryParse(queryString[pageSizeKey], out int qsPageSize)) {
if (part.Record.MaxItems == 0 || qsPageSize <= part.Record.MaxItems) {
pageSize = qsPageSize;
}
}
}
- var pager = new Pager(Services.WorkContext.CurrentSite, page, pageSize);
+ var pager = new Pager(_orchardServices.WorkContext.CurrentSite, page, pageSize);
var pagerShape = shapeHelper.Pager(pager)
.ContentPart(part)
@@ -107,7 +107,7 @@ namespace Orchard.Projections.Drivers {
ContentShape("Parts_ProjectionPart_List", shape => {
// generates a link to the RSS feed for this term
- var metaData = Services.ContentManager.GetItemMetadata(part.ContentItem);
+ var metaData = _orchardServices.ContentManager.GetItemMetadata(part.ContentItem);
_feedManager.Register(metaData.DisplayText, "rss", new RouteValueDictionary { { "projection", part.Id } });
// execute the query
@@ -130,8 +130,8 @@ namespace Orchard.Projections.Drivers {
// renders in a standard List shape if no specific layout could be found
if (layoutDescriptor == null) {
- var list = Services.New.List();
- var contentShapes = contentItems.Select(item => Services.ContentManager.BuildDisplay(item, "Summary"));
+ var list = _orchardServices.New.List();
+ var contentShapes = contentItems.Select(item => _orchardServices.ContentManager.BuildDisplay(item, "Summary"));
list.AddRange(contentShapes);
return list;
@@ -143,7 +143,7 @@ namespace Orchard.Projections.Drivers {
var layoutComponents = contentItems.Select(
contentItem => {
- var contentItemMetadata = Services.ContentManager.GetItemMetadata(contentItem);
+ var contentItemMetadata = _orchardServices.ContentManager.GetItemMetadata(contentItem);
var propertyDescriptors = fieldDescriptors.Select(
d => {
@@ -156,9 +156,9 @@ namespace Orchard.Projections.Drivers {
});
// apply all settings to the field content, wrapping it in a FieldWrapper shape
- var properties = Services.New.Properties(
+ var properties = _orchardServices.New.Properties(
Items: propertyDescriptors.Select(
- pd => Services.New.PropertyWrapper(
+ pd => _orchardServices.New.PropertyWrapper(
Item: pd.Shape,
Property: pd.Property,
ContentItem: contentItem,
@@ -199,14 +199,14 @@ namespace Orchard.Projections.Drivers {
return key;
}).Select(x => new { Key = x.Key, Components = x });
- var list = Services.New.List();
+ var list = _orchardServices.New.List();
foreach (var group in groups) {
var localResult = layoutDescriptor.Render(renderLayoutContext, group.Components);
// add the Context to the shape
localResult.Context(renderLayoutContext);
- list.Add(Services.New.LayoutGroup(Key: new MvcHtmlString(group.Key), List: localResult));
+ list.Add(_orchardServices.New.LayoutGroup(Key: new MvcHtmlString(group.Key), List: localResult));
}
return list;
@@ -223,81 +223,80 @@ namespace Orchard.Projections.Drivers {
}
protected override DriverResult Editor(ProjectionPart part, dynamic shapeHelper) {
- return ContentShape("Parts_ProjectionPart_Edit",
- () => {
- var model = new ProjectionPartEditViewModel();
+ return ContentShape("Parts_ProjectionPart_Edit", () => {
+ var model = new ProjectionPartEditViewModel();
- // for create read the setting values
- var settings = part.TypePartDefinition.Settings.GetModel();
- if (part.Id == 0) {
- model = new ProjectionPartEditViewModel {
- DisplayPager = settings.DisplayPager,
- Items = settings.Items,
- Skip = settings.Skip,
- PagerSuffix = settings.PagerSuffix,
- MaxItems = settings.MaxItems,
- QueryLayoutRecordId = settings.QueryLayoutRecordId
- };
- }
- else {
- model = new ProjectionPartEditViewModel {
- DisplayPager = part.Record.DisplayPager,
- Items = part.Record.Items,
- ItemsPerPage = part.Record.ItemsPerPage,
- Skip = part.Record.Skip,
- PagerSuffix = part.Record.PagerSuffix,
- MaxItems = part.Record.MaxItems,
- QueryLayoutRecordId = "-1"
- };
- // concatenated Query and Layout ids for the view
- if (part.Record.QueryPartRecord != null) {
- model.QueryLayoutRecordId = part.Record.QueryPartRecord.Id + ";";
- }
+ // for create read the setting values
+ var settings = part.TypePartDefinition.Settings.GetModel();
+ if (part.Id == 0) {
+ model = new ProjectionPartEditViewModel {
+ DisplayPager = settings.DisplayPager,
+ Items = settings.Items,
+ Skip = settings.Skip,
+ PagerSuffix = settings.PagerSuffix,
+ MaxItems = settings.MaxItems,
+ QueryLayoutRecordId = settings.QueryLayoutRecordId
+ };
+ }
+ else {
+ model = new ProjectionPartEditViewModel {
+ DisplayPager = part.Record.DisplayPager,
+ Items = part.Record.Items,
+ ItemsPerPage = part.Record.ItemsPerPage,
+ Skip = part.Record.Skip,
+ PagerSuffix = part.Record.PagerSuffix,
+ MaxItems = part.Record.MaxItems,
+ QueryLayoutRecordId = "-1"
+ };
+ // concatenated Query and Layout ids for the view
+ if (part.Record.QueryPartRecord != null) {
+ model.QueryLayoutRecordId = part.Record.QueryPartRecord.Id + ";";
+ }
- if (part.Record.LayoutRecord != null) {
- model.QueryLayoutRecordId += part.Record.LayoutRecord.Id.ToString();
- }
- else {
- model.QueryLayoutRecordId += "-1";
- }
- }
+ if (part.Record.LayoutRecord != null) {
+ model.QueryLayoutRecordId += part.Record.LayoutRecord.Id.ToString();
+ }
+ else {
+ model.QueryLayoutRecordId += "-1";
+ }
+ }
- model.PartId = part.Id;
+ model.PartId = part.Id;
- // lock fields
- model.LockEditingItems = settings.LockEditingItems;
- model.LockEditingSkip = settings.LockEditingSkip;
- model.LockEditingMaxItems = settings.LockEditingMaxItems;
- model.LockEditingPagerSuffix = settings.LockEditingPagerSuffix;
- model.LockEditingDisplayPager = settings.LockEditingDisplayPager;
+ // lock fields
+ model.LockEditingItems = settings.LockEditingItems;
+ model.LockEditingSkip = settings.LockEditingSkip;
+ model.LockEditingMaxItems = settings.LockEditingMaxItems;
+ model.LockEditingPagerSuffix = settings.LockEditingPagerSuffix;
+ model.LockEditingDisplayPager = settings.LockEditingDisplayPager;
- // populating the list of queries and layouts
- var layouts = _projectionManager.DescribeLayouts().SelectMany(x => x.Descriptors).ToList();
- model.QueryRecordEntries = Services.ContentManager.Query().Join().OrderBy(x => x.Title).List()
- .Select(x => new QueryRecordEntry {
- Id = x.Id,
- Name = x.Name,
- LayoutRecordEntries = x.Layouts.Select(l => new LayoutRecordEntry {
- Id = l.Id,
- Description = GetLayoutDescription(layouts, l)
- })
- });
+ // populating the list of queries and layouts
+ var layouts = _projectionManager.DescribeLayouts().SelectMany(x => x.Descriptors).ToList();
+ model.QueryRecordEntries = _orchardServices.ContentManager.Query().Join().OrderBy(x => x.Title).List()
+ .Select(x => new QueryRecordEntry {
+ Id = x.Id,
+ Name = x.Name,
+ LayoutRecordEntries = x.Layouts.Select(l => new LayoutRecordEntry {
+ Id = l.Id,
+ Description = GetLayoutDescription(layouts, l)
+ })
+ });
- // if any values, use default list of the settings
- if (!string.IsNullOrWhiteSpace(settings.FilterQueryRecordId)) {
- var filterQueryRecordId = settings.FilterQueryRecordId.Split('&');
- model.QueryRecordIdFilterEntries = filterQueryRecordId
- .Select(x => new QueryRecordFilterEntry {
- Id = x.Split(';')[0],
- LayoutId = x.Split(';')[1]
- });
- }
- else {
- model.QueryRecordIdFilterEntries = new List();
- }
+ // if any values, use default list of the settings
+ if (!string.IsNullOrWhiteSpace(settings.FilterQueryRecordId)) {
+ var filterQueryRecordId = settings.FilterQueryRecordId.Split('&');
+ model.QueryRecordIdFilterEntries = filterQueryRecordId
+ .Select(x => new QueryRecordFilterEntry {
+ Id = x.Split(';')[0],
+ LayoutId = x.Split(';')[1]
+ });
+ }
+ else {
+ model.QueryRecordIdFilterEntries = new List();
+ }
- return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix);
- });
+ return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix);
+ });
}
private static string GetLayoutDescription(IEnumerable layouts, LayoutRecord l) {
@@ -313,7 +312,7 @@ namespace Orchard.Projections.Drivers {
updater.TryUpdateModel(model, Prefix, null, null);
model.PartId = part.Id;
-
+
// check the setting, if it is unlocked, assign the setting value
if (settings.LockEditingDisplayPager) {
part.Record.DisplayPager = settings.DisplayPager;
@@ -356,6 +355,12 @@ namespace Orchard.Projections.Drivers {
updater.AddModelError("PagerSuffix", T("Suffix should not contain special characters."));
}
+ if (model.Items == 0
+ && (part.Record.QueryPartRecord?.FilterGroups.Any(group => group.Filters.Count == 0) ?? false)) {
+ _orchardServices.Notifier.Warning(
+ T("The selected Query has at least one empty filter group, which causes all content items to be returned. It is recommended to limit the number of content items queried by setting the 'Items to display' field to a non-zero value."));
+ }
+
return Editor(part, shapeHelper);
}
@@ -376,12 +381,11 @@ namespace Orchard.Projections.Drivers {
protected override void ImportCompleted(ProjectionPart part, ImportContentContext context) {
// Assign the query only when everything is imported.
var query = context.Attribute(part.PartDefinition.Name, "Query");
- if (query != null && context.GetItemFromSession(query).As()!=null) {
+ if (query != null && context.GetItemFromSession(query).As() != null) {
part.Record.QueryPartRecord = context.GetItemFromSession(query).As().Record;
var layoutIndex = context.Attribute(part.PartDefinition.Name, "LayoutIndex");
- int layoutIndexValue;
if (layoutIndex != null
- && Int32.TryParse(layoutIndex, out layoutIndexValue)
+ && Int32.TryParse(layoutIndex, out int layoutIndexValue)
&& layoutIndexValue >= 0
&& part.Record.QueryPartRecord.Layouts.Count > layoutIndexValue) {
part.Record.LayoutRecord = part.Record.QueryPartRecord.Layouts[Int32.Parse(layoutIndex)];
@@ -398,9 +402,9 @@ namespace Orchard.Projections.Drivers {
context.Element(part.PartDefinition.Name).SetAttributeValue("DisplayPager", part.Record.DisplayPager);
if (part.Record.QueryPartRecord != null) {
- var queryPart = Services.ContentManager.Query("Query").Where(x => x.Id == part.Record.QueryPartRecord.Id).List().FirstOrDefault();
+ var queryPart = _orchardServices.ContentManager.Query("Query").Where(x => x.Id == part.Record.QueryPartRecord.Id).List().FirstOrDefault();
if (queryPart != null) {
- var queryIdentity = Services.ContentManager.GetItemMetadata(queryPart).Identity;
+ var queryIdentity = _orchardServices.ContentManager.GetItemMetadata(queryPart).Identity;
context.Element(part.PartDefinition.Name).SetAttributeValue("Query", queryIdentity.ToString());
context.Element(part.PartDefinition.Name).SetAttributeValue("LayoutIndex", part.Record.QueryPartRecord.Layouts.IndexOf(part.Record.LayoutRecord));
}
diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Drivers/QueryPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Projections/Drivers/QueryPartDriver.cs
index f737ee6cc..8024f7704 100644
--- a/src/Orchard.Web/Modules/Orchard.Projections/Drivers/QueryPartDriver.cs
+++ b/src/Orchard.Web/Modules/Orchard.Projections/Drivers/QueryPartDriver.cs
@@ -19,14 +19,16 @@ namespace Orchard.Projections.Drivers {
_projectionManager = projectionManager;
_formManager = formManager;
}
+
protected override string Prefix {
get {
return "Query_Part";
}
}
- protected override DriverResult Editor(QueryPart part, dynamic shapeHelper) {
- return Editor(part, null, shapeHelper);
- }
+
+ protected override DriverResult Editor(QueryPart part, dynamic shapeHelper) =>
+ Editor(part, null, shapeHelper);
+
protected override DriverResult Editor(QueryPart part, IUpdateModel updater, dynamic shapeHelper) {
var model = new QueryViewModel { VersionScope = part.VersionScope };
if (updater != null) {
@@ -34,10 +36,10 @@ namespace Orchard.Projections.Drivers {
part.VersionScope = model.VersionScope;
}
}
- return ContentShape("Parts_QueryPart_Edit",
- () => {
- return shapeHelper.EditorTemplate(TemplateName: "Parts/QueryPart_Edit", Model: model, Prefix: Prefix);
- });
+
+ return ContentShape("Parts_QueryPart_Edit", () => {
+ return shapeHelper.EditorTemplate(TemplateName: "Parts/QueryPart_Edit", Model: model, Prefix: Prefix);
+ });
}
protected override void Exporting(QueryPart part, ExportContentContext context) {
@@ -60,12 +62,12 @@ namespace Orchard.Projections.Drivers {
}
return new XElement("Filter",
- new XAttribute("Category", filter.Category ?? ""),
- new XAttribute("Description", filter.Description ?? ""),
- new XAttribute("Position", filter.Position),
- new XAttribute("State", state ?? ""),
- new XAttribute("Type", filter.Type ?? "")
- );
+ new XAttribute("Category", filter.Category ?? ""),
+ new XAttribute("Description", filter.Description ?? ""),
+ new XAttribute("Position", filter.Position),
+ new XAttribute("State", state ?? ""),
+ new XAttribute("Type", filter.Type ?? "")
+ );
})
)
)
diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Projections/Migrations.cs
index cf0b6f57e..fbcc658ed 100644
--- a/src/Orchard.Web/Modules/Orchard.Projections/Migrations.cs
+++ b/src/Orchard.Web/Modules/Orchard.Projections/Migrations.cs
@@ -72,17 +72,7 @@ namespace Orchard.Projections {
SchemaBuilder.CreateTable("FieldIndexPartRecord", table => table.ContentPartRecord());
//Adds indexes for better performances in queries
- SchemaBuilder.AlterTable("StringFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("StringFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
-
- SchemaBuilder.AlterTable("IntegerFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("IntegerFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
-
- SchemaBuilder.AlterTable("DoubleFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("DoubleFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
-
- SchemaBuilder.AlterTable("DecimalFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("DecimalFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
+ AddPropertyNameAndFieldIndexPartRecordIdIndexes();
// Query
@@ -287,7 +277,7 @@ namespace Orchard.Projections {
Description = T("The text from the Body part").Text
});
- return 6;
+ return 8;
}
public int UpdateFrom1() {
@@ -343,17 +333,7 @@ namespace Orchard.Projections {
.AddColumn("LatestValue"));
//Adds indexes for better performances in queries
- SchemaBuilder.AlterTable("StringFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("StringFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
-
- SchemaBuilder.AlterTable("IntegerFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("IntegerFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
-
- SchemaBuilder.AlterTable("DoubleFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("DoubleFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
-
- SchemaBuilder.AlterTable("DecimalFieldIndexRecord", table => table.CreateIndex("IX_PropertyName", new string[] { "PropertyName" }));
- SchemaBuilder.AlterTable("DecimalFieldIndexRecord", table => table.CreateIndex("IX_FieldIndexPartRecord_Id", new string[] { "FieldIndexPartRecord_Id" }));
+ AddPropertyNameAndFieldIndexPartRecordIdIndexes();
SchemaBuilder.AlterTable("QueryPartRecord", table => table
.AddColumn("VersionScope", c => c.WithLength(15)));
@@ -386,5 +366,47 @@ namespace Orchard.Projections {
return 7;
}
+
+ public int UpdateFrom7() {
+ SchemaBuilder.AlterTable("StringFieldIndexRecord", table => {
+ table.DropIndex("IX_PropertyName");
+ table.DropIndex("IX_FieldIndexPartRecord_Id");
+ });
+ SchemaBuilder.AlterTable("IntegerFieldIndexRecord", table => {
+ table.DropIndex("IX_PropertyName");
+ table.DropIndex("IX_FieldIndexPartRecord_Id");
+ });
+ SchemaBuilder.AlterTable("DoubleFieldIndexRecord", table => {
+ table.DropIndex("IX_PropertyName");
+ table.DropIndex("IX_FieldIndexPartRecord_Id");
+ });
+ SchemaBuilder.AlterTable("DecimalFieldIndexRecord", table => {
+ table.DropIndex("IX_PropertyName");
+ table.DropIndex("IX_FieldIndexPartRecord_Id");
+ });
+
+ AddPropertyNameAndFieldIndexPartRecordIdIndexes();
+
+ return 8;
+ }
+
+ private void AddPropertyNameAndFieldIndexPartRecordIdIndexes() {
+ SchemaBuilder.AlterTable("StringFieldIndexRecord", table => {
+ table.CreateIndex("IDX_StringFieldIndexRecord_PropertyName", "PropertyName");
+ table.CreateIndex("IDX_StringFieldIndexRecord_FieldIndexPartRecord_Id", "FieldIndexPartRecord_Id");
+ });
+ SchemaBuilder.AlterTable("IntegerFieldIndexRecord", table => {
+ table.CreateIndex("IDX_IntegerFieldIndexRecord_PropertyName", "PropertyName");
+ table.CreateIndex("IDX_IntegerFieldIndexRecord_FieldIndexPartRecord_Id", "FieldIndexPartRecord_Id");
+ });
+ SchemaBuilder.AlterTable("DoubleFieldIndexRecord", table => {
+ table.CreateIndex("IDX_DoubleFieldIndexRecord_PropertyName", "PropertyName");
+ table.CreateIndex("IDX_DoubleFieldIndexRecord_FieldIndexPartRecord_Id", "FieldIndexPartRecord_Id");
+ });
+ SchemaBuilder.AlterTable("DecimalFieldIndexRecord", table => {
+ table.CreateIndex("IDX_DecimalFieldIndexRecord_PropertyName", "PropertyName");
+ table.CreateIndex("IDX_DecimalFieldIndexRecord_FieldIndexPartRecord_Id", "FieldIndexPartRecord_Id");
+ });
+ }
}
-}
\ No newline at end of file
+}
diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs b/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs
index 6a1a0368e..1fe8f964b 100644
--- a/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs
+++ b/src/Orchard.Web/Modules/Orchard.Projections/Services/ProjectionManager.cs
@@ -108,19 +108,15 @@ namespace Orchard.Projections.Services {
}
public int GetCount(int queryId, ContentPart part) {
- var queryRecord = _queryRepository.Get(queryId);
+ var queryRecord = _queryRepository.Get(queryId) ?? throw new ArgumentException("queryId");
- if (queryRecord == null) {
- throw new ArgumentException("queryId");
- }
-
- // prepares tokens
+ // Prepare tokens.
Dictionary tokens = new Dictionary();
if (part != null) {
tokens.Add("Content", part.ContentItem);
}
- // aggregate the result for each group query
+ // Aggregate the result of each filter group.
return GetContentQueries(queryRecord, Enumerable.Empty(), tokens)
.Sum(contentQuery => contentQuery.Count());
}
@@ -140,13 +136,13 @@ namespace Orchard.Projections.Services {
var contentItems = new List();
- // prepares tokens
+ // Prepare tokens.
Dictionary tokens = new Dictionary();
if (part != null) {
tokens.Add("Content", part.ContentItem);
}
- // aggregate the result for each group query
+ // Aggregate the result of each filter group.
foreach (var contentQuery in GetContentQueries(queryRecord, queryRecord.SortCriteria.OrderBy(sc => sc.Position), tokens)) {
contentItems.AddRange(contentQuery.Slice(skip, count));
}
@@ -155,7 +151,7 @@ namespace Orchard.Projections.Services {
return contentItems;
}
- // re-executing the sorting with the cumulated groups
+ // Re-executing the sorting on the aggregated results.
var ids = contentItems.Select(c => c.Id).ToArray();
if (ids.Length == 0) {
@@ -164,7 +160,7 @@ namespace Orchard.Projections.Services {
var groupQuery = _contentManager.HqlQuery().Where(alias => alias.Named("ci"), x => x.InG("Id", ids));
- // iterate over each sort criteria to apply the alterations to the query object
+ // Iterate over each sort criteria to apply the alterations to the query object.
foreach (var sortCriterion in queryRecord.SortCriteria.OrderBy(s => s.Position)) {
var tokenizedState = _tokenizer.Replace(sortCriterion.State, tokens);
var sortCriterionContext = new SortCriterionContext {
@@ -177,15 +173,17 @@ namespace Orchard.Projections.Services {
string category = sortCriterion.Category;
string type = sortCriterion.Type;
- // look for the specific filter component
- var descriptor = availableSortCriteria.SelectMany(x => x.Descriptors).FirstOrDefault(x => x.Category == category && x.Type == type);
+ // Find specific sort criterion.
+ var descriptor = availableSortCriteria
+ .SelectMany(x => x.Descriptors)
+ .FirstOrDefault(x => x.Category == category && x.Type == type);
- // ignore unfound descriptors
+ // Skip if not found.
if (descriptor == null) {
continue;
}
- // apply alteration
+ // Apply alteration.
descriptor.Sort(sortCriterionContext);
groupQuery = sortCriterionContext.Query;
@@ -194,7 +192,10 @@ namespace Orchard.Projections.Services {
return groupQuery.Slice(skip, count);
}
- public IEnumerable GetContentQueries(QueryPartRecord queryRecord, IEnumerable sortCriteria, Dictionary tokens) {
+ public IEnumerable GetContentQueries(
+ QueryPartRecord queryRecord,
+ IEnumerable sortCriteria,
+ Dictionary tokens) {
var availableFilters = DescribeFilters().ToList();
var availableSortCriteria = DescribeSortCriteria().ToList();
@@ -204,11 +205,11 @@ namespace Orchard.Projections.Services {
var version = queryRecord.VersionScope.ToVersionOptions();
- // pre-executing all groups
+ // Iterate over each filter group and evaluate the filters.
foreach (var group in queryRecord.FilterGroups) {
var contentQuery = _contentManager.HqlQuery().ForVersion(version);
- // iterate over each filter to apply the alterations to the query object
+ // Iterate over each filter to apply the alterations to the query object.
foreach (var filter in group.Filters) {
var tokenizedState = _tokenizer.Replace(filter.State, tokens);
var filterContext = new FilterContext {
@@ -221,23 +222,23 @@ namespace Orchard.Projections.Services {
string category = filter.Category;
string type = filter.Type;
- // look for the specific filter component
+ // Find specific filter.
var descriptor = availableFilters
.SelectMany(x => x.Descriptors)
.FirstOrDefault(x => x.Category == category && x.Type == type);
- // ignore unfound descriptors
+ // Skip if not found.
if (descriptor == null) {
continue;
}
- // apply alteration
+ // Apply alteration.
descriptor.Filter(filterContext);
contentQuery = filterContext.Query;
}
- // iterate over each sort criteria to apply the alterations to the query object
+ // Iterate over each sort criteria to apply the alterations to the query object.
foreach (var sortCriterion in sortCriteria.OrderBy(s => s.Position)) {
var tokenizedState = _tokenizer.Replace(sortCriterion.State, tokens);
var sortCriterionContext = new SortCriterionContext {
@@ -250,23 +251,22 @@ namespace Orchard.Projections.Services {
string category = sortCriterion.Category;
string type = sortCriterion.Type;
- // look for the specific filter component
+ // Find specific sort criterion.
var descriptor = availableSortCriteria
.SelectMany(x => x.Descriptors)
.FirstOrDefault(x => x.Category == category && x.Type == type);
- // ignore unfound descriptors
+ // Skip if not found.
if (descriptor == null) {
continue;
}
- // apply alteration
+ // Apply alteration.
descriptor.Sort(sortCriterionContext);
contentQuery = sortCriterionContext.Query;
}
-
yield return contentQuery;
}
}
diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Tests/app.config b/src/Orchard.Web/Modules/Orchard.Projections/Tests/app.config
index 9493cfeea..6ada2cd01 100644
--- a/src/Orchard.Web/Modules/Orchard.Projections/Tests/app.config
+++ b/src/Orchard.Web/Modules/Orchard.Projections/Tests/app.config
@@ -16,7 +16,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Projections/Web.config b/src/Orchard.Web/Modules/Orchard.Projections/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Projections/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Projections/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/Web.config b/src/Orchard.Web/Modules/Orchard.PublishLater/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.PublishLater/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.PublishLater/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Recipes/Web.config b/src/Orchard.Web/Modules/Orchard.Recipes/Web.config
index f57e23503..18574b08b 100644
--- a/src/Orchard.Web/Modules/Orchard.Recipes/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Recipes/Web.config
@@ -52,7 +52,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Redis/Orchard.Redis.csproj b/src/Orchard.Web/Modules/Orchard.Redis/Orchard.Redis.csproj
index 39eaa9dc4..766beb457 100644
--- a/src/Orchard.Web/Modules/Orchard.Redis/Orchard.Redis.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Redis/Orchard.Redis.csproj
@@ -53,8 +53,8 @@
..\..\..\packages\Iesi.Collections.4.0.1.4000\lib\net40\Iesi.Collections.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
..\..\..\packages\NHibernate.4.1.2.4000\lib\net40\NHibernate.dll
@@ -161,4 +161,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Redis/Web.config b/src/Orchard.Web/Modules/Orchard.Redis/Web.config
index 050c8f125..b2bd44ec1 100644
--- a/src/Orchard.Web/Modules/Orchard.Redis/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Redis/Web.config
@@ -49,7 +49,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Redis/packages.config b/src/Orchard.Web/Modules/Orchard.Redis/packages.config
index 9e7bf972f..e967b80b0 100644
--- a/src/Orchard.Web/Modules/Orchard.Redis/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.Redis/packages.config
@@ -1,7 +1,7 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Resources/Web.config b/src/Orchard.Web/Modules/Orchard.Resources/Web.config
index ae6d6621d..41c6d90cd 100644
--- a/src/Orchard.Web/Modules/Orchard.Resources/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Resources/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Web.config b/src/Orchard.Web/Modules/Orchard.Roles/Web.config
index 1149fd7ed..975f0c223 100644
--- a/src/Orchard.Web/Modules/Orchard.Roles/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Roles/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Rules/Web.config b/src/Orchard.Web/Modules/Orchard.Rules/Web.config
index 1e15feddd..c84658808 100644
--- a/src/Orchard.Web/Modules/Orchard.Rules/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Rules/Web.config
@@ -57,7 +57,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Web.config b/src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Scripting.CSharp/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Scripting.Dlr/Web.config b/src/Orchard.Web/Modules/Orchard.Scripting.Dlr/Web.config
index 050c8f125..b2bd44ec1 100644
--- a/src/Orchard.Web/Modules/Orchard.Scripting.Dlr/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Scripting.Dlr/Web.config
@@ -49,7 +49,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Scripting/Web.config b/src/Orchard.Web/Modules/Orchard.Scripting/Web.config
index 050c8f125..b2bd44ec1 100644
--- a/src/Orchard.Web/Modules/Orchard.Scripting/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Scripting/Web.config
@@ -49,7 +49,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Search/Web.config b/src/Orchard.Web/Modules/Orchard.Search/Web.config
index 836843e00..5a55c6247 100644
--- a/src/Orchard.Web/Modules/Orchard.Search/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Search/Web.config
@@ -54,7 +54,7 @@
-
+
@@ -68,6 +68,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/Orchard.SecureSocketsLayer/Web.config b/src/Orchard.Web/Modules/Orchard.SecureSocketsLayer/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.SecureSocketsLayer/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.SecureSocketsLayer/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Web.config b/src/Orchard.Web/Modules/Orchard.Setup/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Setup/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Setup/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Tags/Web.config b/src/Orchard.Web/Modules/Orchard.Tags/Web.config
index 836843e00..5a55c6247 100644
--- a/src/Orchard.Web/Modules/Orchard.Tags/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Tags/Web.config
@@ -54,7 +54,7 @@
-
+
@@ -68,6 +68,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/Orchard.TaskLease/Web.config b/src/Orchard.Web/Modules/Orchard.TaskLease/Web.config
index 050c8f125..b2bd44ec1 100644
--- a/src/Orchard.Web/Modules/Orchard.TaskLease/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.TaskLease/Web.config
@@ -49,7 +49,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj b/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj
index a2d6449b3..eeceab2c3 100644
--- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Orchard.Taxonomies.csproj
@@ -59,8 +59,8 @@
..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
@@ -288,4 +288,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/Web.config b/src/Orchard.Web/Modules/Orchard.Taxonomies/Web.config
index b12ba08aa..198678287 100644
--- a/src/Orchard.Web/Modules/Orchard.Taxonomies/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/Web.config
@@ -41,7 +41,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Taxonomies/packages.config b/src/Orchard.Web/Modules/Orchard.Taxonomies/packages.config
index 343350b13..a8ccef4a9 100644
--- a/src/Orchard.Web/Modules/Orchard.Taxonomies/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.Taxonomies/packages.config
@@ -7,5 +7,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Templates/Web.config b/src/Orchard.Web/Modules/Orchard.Templates/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Templates/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Templates/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Themes/Web.config b/src/Orchard.Web/Modules/Orchard.Themes/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Themes/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Themes/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Tokens/Tests/app.config b/src/Orchard.Web/Modules/Orchard.Tokens/Tests/app.config
index cda2fe9df..ed0f1f563 100644
--- a/src/Orchard.Web/Modules/Orchard.Tokens/Tests/app.config
+++ b/src/Orchard.Web/Modules/Orchard.Tokens/Tests/app.config
@@ -16,7 +16,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Tokens/Web.config b/src/Orchard.Web/Modules/Orchard.Tokens/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Tokens/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Tokens/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Users/Web.config b/src/Orchard.Web/Modules/Orchard.Users/Web.config
index 1149fd7ed..975f0c223 100644
--- a/src/Orchard.Web/Modules/Orchard.Users/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Users/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Warmup/Web.config b/src/Orchard.Web/Modules/Orchard.Warmup/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.Warmup/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Warmup/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/Web.config b/src/Orchard.Web/Modules/Orchard.Widgets/Web.config
index 836843e00..5a55c6247 100644
--- a/src/Orchard.Web/Modules/Orchard.Widgets/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Widgets/Web.config
@@ -54,7 +54,7 @@
-
+
@@ -68,6 +68,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj b/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj
index 97df8d937..3e85f4f0b 100644
--- a/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj
@@ -58,8 +58,8 @@
..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
@@ -307,4 +307,4 @@
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Web.config b/src/Orchard.Web/Modules/Orchard.Workflows/Web.config
index 1149fd7ed..975f0c223 100644
--- a/src/Orchard.Web/Modules/Orchard.Workflows/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.Workflows/Web.config
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/packages.config b/src/Orchard.Web/Modules/Orchard.Workflows/packages.config
index 3a05f90ac..4edd53141 100644
--- a/src/Orchard.Web/Modules/Orchard.Workflows/packages.config
+++ b/src/Orchard.Web/Modules/Orchard.Workflows/packages.config
@@ -5,5 +5,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.jQuery/Web.config b/src/Orchard.Web/Modules/Orchard.jQuery/Web.config
index 836843e00..dbacb1007 100644
--- a/src/Orchard.Web/Modules/Orchard.jQuery/Web.config
+++ b/src/Orchard.Web/Modules/Orchard.jQuery/Web.config
@@ -54,7 +54,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/SysCache/Web.config b/src/Orchard.Web/Modules/SysCache/Web.config
index 050c8f125..b2bd44ec1 100644
--- a/src/Orchard.Web/Modules/SysCache/Web.config
+++ b/src/Orchard.Web/Modules/SysCache/Web.config
@@ -49,7 +49,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/TinyMce/Web.config b/src/Orchard.Web/Modules/TinyMce/Web.config
index 5d7a337e5..d7b3d6256 100644
--- a/src/Orchard.Web/Modules/TinyMce/Web.config
+++ b/src/Orchard.Web/Modules/TinyMce/Web.config
@@ -53,7 +53,7 @@
-
+
diff --git a/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj b/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj
index 9b4d80207..002f58771 100644
--- a/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj
+++ b/src/Orchard.Web/Modules/Upgrade/Upgrade.csproj
@@ -61,8 +61,8 @@
..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\..\..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\..\..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
..\..\..\packages\NHibernate.4.1.2.4000\lib\net40\NHibernate.dll
diff --git a/src/Orchard.Web/Modules/Upgrade/Web.config b/src/Orchard.Web/Modules/Upgrade/Web.config
index 2ea1387f8..fa2449687 100644
--- a/src/Orchard.Web/Modules/Upgrade/Web.config
+++ b/src/Orchard.Web/Modules/Upgrade/Web.config
@@ -44,7 +44,7 @@
-
+
@@ -70,6 +70,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Modules/Upgrade/packages.config b/src/Orchard.Web/Modules/Upgrade/packages.config
index c464a2ac7..44568f4f9 100644
--- a/src/Orchard.Web/Modules/Upgrade/packages.config
+++ b/src/Orchard.Web/Modules/Upgrade/packages.config
@@ -8,6 +8,6 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj
index f793ce0b4..0707cfd68 100644
--- a/src/Orchard.Web/Orchard.Web.csproj
+++ b/src/Orchard.Web/Orchard.Web.csproj
@@ -72,17 +72,14 @@
..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\packages\Npgsql.2.2.3\lib\net45\Mono.Security.dll
-
..\packages\MySql.Data.6.7.9\lib\net45\MySql.Data.dll
-
- ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
-
- ..\packages\Npgsql.2.2.3\lib\net45\Npgsql.dll
+
+ ..\packages\Npgsql.4.0.17\lib\net451\Npgsql.dll
..\packages\Orchard.NuGet.Core.1.1.0.0\lib\NuGet.Core.dll
@@ -91,6 +88,9 @@
..\packages\Owin.1.0\lib\net40\Owin.dll
+
+ ..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll
+
3.5
@@ -100,7 +100,23 @@
..\..\lib\sqlce\System.Data.SqlServerCe.dll
True
+
+ ..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll
+
+
+
+ ..\packages\System.Numerics.Vectors.4.6.0\lib\net462\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll
+
+
+ ..\packages\System.Threading.Tasks.Extensions.4.6.0\lib\net462\System.Threading.Tasks.Extensions.dll
+
+
+ ..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll
+
diff --git a/src/Orchard.Web/Themes/Web.config b/src/Orchard.Web/Themes/Web.config
index 6f22dac94..08cb067f3 100644
--- a/src/Orchard.Web/Themes/Web.config
+++ b/src/Orchard.Web/Themes/Web.config
@@ -77,7 +77,7 @@
-
+
@@ -91,6 +91,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/Web.config b/src/Orchard.Web/Web.config
index 63a710c6c..de4c277a8 100644
--- a/src/Orchard.Web/Web.config
+++ b/src/Orchard.Web/Web.config
@@ -159,7 +159,7 @@
-
+
@@ -227,6 +227,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Orchard.Web/packages.config b/src/Orchard.Web/packages.config
index d27ff6119..5b268d7c2 100644
--- a/src/Orchard.Web/packages.config
+++ b/src/Orchard.Web/packages.config
@@ -10,8 +10,14 @@
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj
index 56e9fbc43..c74cd774f 100644
--- a/src/Orchard/Orchard.Framework.csproj
+++ b/src/Orchard/Orchard.Framework.csproj
@@ -83,8 +83,8 @@
..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
- ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\NHibernate.4.1.2.4000\lib\net40\NHibernate.dll
diff --git a/src/Orchard/app.config b/src/Orchard/app.config
index 88432b48a..bc4937df3 100644
--- a/src/Orchard/app.config
+++ b/src/Orchard/app.config
@@ -20,7 +20,7 @@
-
+
diff --git a/src/Orchard/packages.config b/src/Orchard/packages.config
index ae21c35d4..73bb52b83 100644
--- a/src/Orchard/packages.config
+++ b/src/Orchard/packages.config
@@ -14,7 +14,7 @@
-
+
\ No newline at end of file