From 660f41c582478d2efc50c007d55e4c7724bc650a Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 12 Apr 2016 01:10:00 +0200 Subject: [PATCH 01/15] Fixed removal of records in DistributedLockService Fixes #6444 --- .../Locking/Services/DistributedLockService.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs b/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs index fcd4a1c18..e4b552e66 100644 --- a/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs +++ b/src/Orchard/Tasks/Locking/Services/DistributedLockService.cs @@ -89,7 +89,7 @@ namespace Orchard.Tasks.Locking.Services { DistributedLock dLock = null; // If there's already a distributed lock object in our dictionary, that means - // this acquisition is a reentrance. Use the existing lock object from the + // this acquisition is a reentrance. Use the existing lock object from the // dictionary but increment its count. if (_locks.TryGetValue(monitorObj, out dLock)) { Logger.Debug("Current thread is re-entering lock '{0}'; incrementing count.", internalName); @@ -141,9 +141,18 @@ namespace Orchard.Tasks.Locking.Services { ExecuteOnSeparateTransaction(repository => { // Try to find a valid lock record in the database. - var record = repository.Table.FirstOrDefault(x => x.Name == internalName && (x.ValidUntilUtc == null || x.ValidUntilUtc >= _clock.UtcNow)); + var records = repository.Table.Where(x => x.Name == internalName).ToList(); + var record = records.FirstOrDefault(x => x.ValidUntilUtc == null || x.ValidUntilUtc >= _clock.UtcNow); if (record == null) { - // No record existed, so we're good to create a new one. + + // No record matched the criteria, but at least one expired record with the specified name was found. + // Delete the expired records before creating a new one. In theory no more than one record can exist + // due to the unique key constraint on the 'Name' column, it won't hurt to work on a collection. + foreach (var expiredRecord in records) { + repository.Delete(expiredRecord); + } + + // No valid record existed, so we're good to create a new one. Logger.Debug("No valid record was found for lock '{0}'; creating a new record.", internalName); repository.Create(new DistributedLockRecord { From 6442380bf0f84cfa4681d4d54904134a7e0b53fd Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Mon, 11 Apr 2016 16:29:09 -0700 Subject: [PATCH 02/15] Excluding PDB files from deployments Fixes #6711 --- Orchard.proj | 5 ++--- src/Orchard.Web/Orchard.Web.csproj | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Orchard.proj b/Orchard.proj index abd68aa56..d08fb50f8 100644 --- a/Orchard.proj +++ b/Orchard.proj @@ -299,7 +299,6 @@ - - + @@ -355,7 +354,7 @@ - + + Web.config @@ -267,7 +268,7 @@ - @(RootBinFiles->'Modules\**\bin\%(Filename)%(Extension)');@(RootBinFiles->'Themes\**\%(Filename)%(Extension)');@(RootBinFiles->'Core\**\bin\%(Filename)%(Extension)');**\*.Debug.config;**\*.Release.config;**\obj\**;**\bin\*.xml;**\*.cs;**\*.csproj;Modules\**\Tests\**;Modules\**\Specs\**;Themes\bin\**;**\.hgignore;**\.hgtags;**\.hg\**;**\.gitignore;**\.git\**;**\*.csproj.user;Properties\**\*;App_Data\Dependencies\*;App_Data\RecipeQueue\*;App_Data\Logs\*;App_Data\**\mappings.bin;App_Data\**\cache.dat;App_Data\**\hrestart.txt + @(RootBinFiles->'Modules\**\bin\%(Filename)%(Extension)');@(RootBinFiles->'Themes\**\%(Filename)%(Extension)');@(RootBinFiles->'Core\**\bin\%(Filename)%(Extension)');**\*.Debug.config;**\*.Release.config;**\obj\**;**\bin\*.xml;**\bin\*.pdb;;**\bin\*.dll.config;**\*.cs;**\*.csproj;Modules\**\Tests\**;Modules\**\Specs\**;Themes\bin\**;**\.hgignore;**\.hgtags;**\.hg\**;**\.gitignore;**\.git\**;**\*.csproj.user;Properties\**\*;App_Data\Dependencies\*;App_Data\RecipeQueue\*;App_Data\Logs\*;App_Data\**\mappings.bin;App_Data\**\cache.dat;App_Data\**\hrestart.txt From fe316f480c5733c43e36c2b1c24d8cfba75f0280 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Tue, 12 Apr 2016 10:24:11 -0700 Subject: [PATCH 03/15] Removing references to deprecated modules Fixes #6749 --- .../Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj | 4 ---- .../Orchard.Azure.MediaServices.csproj | 4 ---- 2 files changed, 8 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj b/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj index ef72e6f09..131b83f67 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Orchard.AuditTrail.csproj @@ -213,10 +213,6 @@ {d10ad48f-407d-4db5-a328-173ec7cb010f} Orchard.Roles - - {3f72a4e9-7b72-4260-b010-c16ec54f9baf} - Orchard.TaskLease - {79aed36e-abd0-4747-93d3-8722b042454b} Orchard.Users diff --git a/src/Orchard.Web/Modules/Orchard.Azure.MediaServices/Orchard.Azure.MediaServices.csproj b/src/Orchard.Web/Modules/Orchard.Azure.MediaServices/Orchard.Azure.MediaServices.csproj index 2237e3660..ae43db858 100644 --- a/src/Orchard.Web/Modules/Orchard.Azure.MediaServices/Orchard.Azure.MediaServices.csproj +++ b/src/Orchard.Web/Modules/Orchard.Azure.MediaServices/Orchard.Azure.MediaServices.csproj @@ -307,10 +307,6 @@ {c889167c-e52c-4a65-a419-224b3d1b957d} Orchard.PublishLater - - {3f72a4e9-7b72-4260-b010-c16ec54f9baf} - Orchard.TaskLease - From 4a9c4c5019f6b260c865f5b6ea16a1369497cc95 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Tue, 12 Apr 2016 12:16:22 -0700 Subject: [PATCH 04/15] Fixing Orchard.Web.csproj --- src/Orchard.Web/Orchard.Web.csproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index f6580d119..de9439b85 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -180,7 +180,6 @@ - Web.config @@ -268,7 +267,7 @@ - @(RootBinFiles->'Modules\**\bin\%(Filename)%(Extension)');@(RootBinFiles->'Themes\**\%(Filename)%(Extension)');@(RootBinFiles->'Core\**\bin\%(Filename)%(Extension)');**\*.Debug.config;**\*.Release.config;**\obj\**;**\bin\*.xml;**\bin\*.pdb;;**\bin\*.dll.config;**\*.cs;**\*.csproj;Modules\**\Tests\**;Modules\**\Specs\**;Themes\bin\**;**\.hgignore;**\.hgtags;**\.hg\**;**\.gitignore;**\.git\**;**\*.csproj.user;Properties\**\*;App_Data\Dependencies\*;App_Data\RecipeQueue\*;App_Data\Logs\*;App_Data\**\mappings.bin;App_Data\**\cache.dat;App_Data\**\hrestart.txt + @(RootBinFiles->'Modules\**\bin\%(Filename)%(Extension)');@(RootBinFiles->'Themes\**\%(Filename)%(Extension)');@(RootBinFiles->'Core\**\bin\%(Filename)%(Extension)');**\*.Debug.config;**\*.Release.config;**\obj\**;**\bin\*.xml;**\bin\*.pdb;**\bin\*.dll.config;**\*.cs;**\*.csproj;Modules\**\Tests\**;Modules\**\Specs\**;Themes\bin\**;**\.hgignore;**\.hgtags;**\.hg\**;**\.gitignore;**\.git\**;**\*.csproj.user;Properties\**\*;App_Data\Dependencies\*;App_Data\RecipeQueue\*;App_Data\Logs\*;App_Data\**\mappings.bin;App_Data\**\cache.dat;App_Data\**\hrestart.txt From f7425f871d025c41f495cd15616af4bd6caff099 Mon Sep 17 00:00:00 2001 From: Sergio Navarro Date: Tue, 12 Apr 2016 21:39:16 +0200 Subject: [PATCH 05/15] Sign In Workflow Activity fails Fixes #6712 --- .../Modules/Orchard.Users/Activities/SignInUserActivity.cs | 7 ++++++- .../Security/Providers/FormsAuthenticationService.cs | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.Users/Activities/SignInUserActivity.cs b/src/Orchard.Web/Modules/Orchard.Users/Activities/SignInUserActivity.cs index ffbc05191..bc026f3ec 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Activities/SignInUserActivity.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/Activities/SignInUserActivity.cs @@ -5,6 +5,7 @@ using Orchard.ContentManagement; using Orchard.Environment.Extensions; using Orchard.Localization; using Orchard.Security; +using Orchard.Users.Events; using Orchard.Users.Models; using Orchard.Workflows.Models; using Orchard.Workflows.Services; @@ -14,10 +15,12 @@ namespace Orchard.Users.Activities { public class SignInUserActivity : Task { private readonly IMembershipService _membershipService; private readonly IAuthenticationService _authenticationService; + private readonly IUserEventHandler _userEventHandler; - public SignInUserActivity(IMembershipService membershipService, IAuthenticationService authenticationService) { + public SignInUserActivity(IMembershipService membershipService, IAuthenticationService authenticationService, IUserEventHandler userEventHandler) { _membershipService = membershipService; _authenticationService = authenticationService; + _userEventHandler = userEventHandler; T = NullLocalizer.Instance; } @@ -66,7 +69,9 @@ namespace Orchard.Users.Activities { yield break; } + _userEventHandler.LoggingIn(userNameOrEmail, password); _authenticationService.SignIn(user, createPersistentCookie); + _userEventHandler.LoggedIn(user); yield return T("Done"); } diff --git a/src/Orchard/Security/Providers/FormsAuthenticationService.cs b/src/Orchard/Security/Providers/FormsAuthenticationService.cs index 7a3d50164..acd1940a6 100644 --- a/src/Orchard/Security/Providers/FormsAuthenticationService.cs +++ b/src/Orchard/Security/Providers/FormsAuthenticationService.cs @@ -93,6 +93,7 @@ namespace Orchard.Security.Providers { httpContext.Response.Cookies.Add(cookie); _isAuthenticated = true; + _isNonOrchardUser = false; _signedInUser = user; } @@ -117,6 +118,7 @@ namespace Orchard.Security.Providers { public void SetAuthenticatedUserForRequest(IUser user) { _signedInUser = user; _isAuthenticated = true; + _isNonOrchardUser = false; } public IUser GetAuthenticatedUser() { From 06422f9e63e14bf8f2d0253cf8c0c012974bcb01 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 12 Apr 2016 21:53:12 +0200 Subject: [PATCH 06/15] Removed unnecessary YamlService. Instead we can use the NuGet package directly. --- .../Orchard.Framework.Tests.csproj | 1 - src/Orchard.Tests/Services/YamlParserTests.cs | 70 ------------------- .../Orchard.Layouts/Orchard.Layouts.csproj | 8 +++ .../Providers/SnippetElementHarvester.cs | 13 ++-- .../Modules/Orchard.Layouts/packages.config | 2 + src/Orchard/Orchard.Framework.csproj | 6 -- src/Orchard/Services/IYamlParser.cs | 21 ------ src/Orchard/Services/YamlParser.cs | 19 ----- src/Orchard/packages.config | 1 - 9 files changed, 17 insertions(+), 124 deletions(-) delete mode 100644 src/Orchard.Tests/Services/YamlParserTests.cs delete mode 100644 src/Orchard/Services/IYamlParser.cs delete mode 100644 src/Orchard/Services/YamlParser.cs diff --git a/src/Orchard.Tests/Orchard.Framework.Tests.csproj b/src/Orchard.Tests/Orchard.Framework.Tests.csproj index 7b3df98cf..c433d1879 100644 --- a/src/Orchard.Tests/Orchard.Framework.Tests.csproj +++ b/src/Orchard.Tests/Orchard.Framework.Tests.csproj @@ -320,7 +320,6 @@ - diff --git a/src/Orchard.Tests/Services/YamlParserTests.cs b/src/Orchard.Tests/Services/YamlParserTests.cs deleted file mode 100644 index 19ece43fa..000000000 --- a/src/Orchard.Tests/Services/YamlParserTests.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using NUnit.Framework; -using Newtonsoft.Json.Linq; -using Orchard.Services; - -namespace Orchard.Tests.Services { - - [TestFixture] - public class YamlParserTests { - - [Test] - public void ShouldConvertYamlToWellknowType() { - var parser = new YamlParser(); - var yaml = SampleYamlDocument; - - var order = parser.Deserialize(yaml); - - Assert.AreEqual("Nikola", order.Customer.FirstName); - Assert.AreEqual(2, order.Items.Count); - } - - [Test] - public void ShouldConvertYamlToDynamic() - { - var parser = new YamlParser(); - var yaml = SampleYamlDocument; - - var order = parser.Deserialize(yaml); - - Assert.AreEqual("Nikola", (string)order.Customer.FirstName); - Assert.AreEqual(2, (int)order.Items.Count); - } - - public class Order { - public DateTime Date { get; set; } - public Customer Customer { get; set; } - public IList Items { get; set; } - } - - public class OrderItem { - public string Product { get; set; } - public int Quantity { get; set; } - public decimal Price { get; set; } - } - - public class Customer { - public string FirstName { get; set; } - public string LastName { get; set; } - - } - - private const string SampleYamlDocument = -@" -Date: 1916-04-01 -Customer: - FirstName: Nikola - LastName: Tesla -Items: - - Product: Bulb - Quantity: 1 - Price: 1.46 - - - Product: Wire - Quantity: 1 - Price: 0.32 -"; - } -} \ 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 0a500141b..f210d1d4f 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Orchard.Layouts.csproj @@ -102,6 +102,14 @@ + + ..\..\..\packages\YamlDotNet.3.8.0\lib\net35\YamlDotNet.dll + True + + + ..\..\..\packages\YamlDotNet.Dynamic.3.2.3\lib\net40\YamlDotNet.Dynamic.dll + True + diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/Providers/SnippetElementHarvester.cs b/src/Orchard.Web/Modules/Orchard.Layouts/Providers/SnippetElementHarvester.cs index 1333ef9c5..3369c7132 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/Providers/SnippetElementHarvester.cs +++ b/src/Orchard.Web/Modules/Orchard.Layouts/Providers/SnippetElementHarvester.cs @@ -17,10 +17,10 @@ using Orchard.Layouts.Services; using Orchard.Layouts.Shapes; using Orchard.Layouts.ViewModels; using Orchard.Localization; -using Orchard.Services; using Orchard.Themes.Services; using Orchard.Tokens; using Orchard.Utility.Extensions; +using YamlDotNet.Dynamic; namespace Orchard.Layouts.Providers { [OrchardFeature("Orchard.Layouts.Snippets")] @@ -34,7 +34,6 @@ namespace Orchard.Layouts.Providers { private readonly Work _currentThemeShapeBindingResolver; private readonly Work _tokenizer; private readonly IWorkContextAccessor _wca; - private readonly Work _yamlParser; public SnippetElementHarvester( IWorkContextAccessor workContextAccessor, @@ -44,8 +43,7 @@ namespace Orchard.Layouts.Providers { Work elementFactory, Work shapeDisplay, Work tokenizer, - Work currentThemeShapeBindingResolver, - Work yamlParser) { + Work currentThemeShapeBindingResolver) { _shapeFactory = shapeFactory; _siteThemeService = siteThemeService; @@ -54,7 +52,6 @@ namespace Orchard.Layouts.Providers { _shapeDisplay = shapeDisplay; _tokenizer = tokenizer; _currentThemeShapeBindingResolver = currentThemeShapeBindingResolver; - _yamlParser = yamlParser; _wca = workContextAccessor; } @@ -149,7 +146,7 @@ namespace Orchard.Layouts.Providers { return null; var yaml = File.ReadAllText(paramsFileName); - var snippetConfig = _yamlParser.Value.Deserialize(yaml); + var snippetConfig = Deserialize(yaml); var fieldsConfig = snippetConfig.Fields != null ? snippetConfig.Fields.Children : new dynamic[0]; var descriptor = new SnippetDescriptor(); @@ -202,5 +199,9 @@ namespace Orchard.Layouts.Providers { var markup = File.ReadAllText(localFileName); return markup.Contains("@Html.SnippetField"); } + + private dynamic Deserialize(string yaml) { + return new DynamicYaml(yaml); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Layouts/packages.config b/src/Orchard.Web/Modules/Orchard.Layouts/packages.config index 61ca9fb6f..22c39f3eb 100644 --- a/src/Orchard.Web/Modules/Orchard.Layouts/packages.config +++ b/src/Orchard.Web/Modules/Orchard.Layouts/packages.config @@ -7,4 +7,6 @@ + + \ No newline at end of file diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index be276337b..9b469678e 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -170,10 +170,6 @@ ..\packages\YamlDotNet.3.8.0\lib\net35\YamlDotNet.dll True - - ..\packages\YamlDotNet.Dynamic.3.2.3\lib\net40\YamlDotNet.Dynamic.dll - True - @@ -427,9 +423,7 @@ - - diff --git a/src/Orchard/Services/IYamlParser.cs b/src/Orchard/Services/IYamlParser.cs deleted file mode 100644 index cf9ea5f2c..000000000 --- a/src/Orchard/Services/IYamlParser.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Orchard.Services { - /// - /// Provides methods to deserialize objects from YAML documents. - /// - public interface IYamlParser : IDependency { - /// - /// Deserializes a YAML document to a dynamic object. - /// - /// The YAML document to deserialize. - /// The deserialized object. - dynamic Deserialize(string yaml); - - /// - /// Deserializes a YAML document to a specific object. - /// - /// The type of the object to deserialize. - /// The YAML document to deserialize. - /// The deserialized object. - T Deserialize(string yaml); - } -} diff --git a/src/Orchard/Services/YamlParser.cs b/src/Orchard/Services/YamlParser.cs deleted file mode 100644 index b783aad5c..000000000 --- a/src/Orchard/Services/YamlParser.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.IO; -using YamlDotNet.Dynamic; -using YamlDotNet.Serialization; -using YamlDotNet.Serialization.NamingConventions; - -namespace Orchard.Services { - public class YamlParser : IYamlParser { - public dynamic Deserialize(string yaml) { - return new DynamicYaml(yaml); - } - - public T Deserialize(string yaml) { - var deserializer = new Deserializer(namingConvention: new PascalCaseNamingConvention(), ignoreUnmatched: true); - using (var reader = new StringReader(yaml)) { - return deserializer.Deserialize(reader); - } - } - } -} \ No newline at end of file diff --git a/src/Orchard/packages.config b/src/Orchard/packages.config index f5f57f9e4..c25a4d246 100644 --- a/src/Orchard/packages.config +++ b/src/Orchard/packages.config @@ -18,5 +18,4 @@ - \ No newline at end of file From 4e5f6af28d8505b66dce61401587749f77c7efba Mon Sep 17 00:00:00 2001 From: Hannan Azam Khan Date: Wed, 13 Apr 2016 03:17:00 +0500 Subject: [PATCH 07/15] Media gallery not working with Azure Blob Storage Fixes #6642 --- .../Services/IMediaLibraryService.cs | 14 +++++++++++--- .../Services/MediaLibraryService.cs | 10 ++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/IMediaLibraryService.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/IMediaLibraryService.cs index f30934c1c..03bf6b382 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/IMediaLibraryService.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/IMediaLibraryService.cs @@ -133,6 +133,14 @@ namespace Orchard.MediaLibrary.Services { /// The stream with the file's contents. /// The path to the uploaded file. string UploadMediaFile(string folderPath, string fileName, Stream inputStream); + + /// + /// Combines two paths. + /// + /// The parent path. + /// The child path. + /// The combined path. + string Combine(string path1, string path2); } public static class MediaLibrayServiceExtensions { @@ -145,8 +153,8 @@ namespace Orchard.MediaLibrary.Services { return true; } - var mediaPath = folderPath + "\\"; - var rootPath = rootMediaFolder.MediaPath + "\\"; + var mediaPath = service.Combine(folderPath, " ").Trim(); + var rootPath = service.Combine(rootMediaFolder.MediaPath, " ").Trim(); return mediaPath.StartsWith(rootPath, StringComparison.OrdinalIgnoreCase); } @@ -154,7 +162,7 @@ namespace Orchard.MediaLibrary.Services { public static string GetRootedFolderPath(this IMediaLibraryService service, string folderPath) { var rootMediaFolder = service.GetRootMediaFolder(); if (rootMediaFolder != null) { - return Path.Combine(rootMediaFolder.MediaPath, folderPath ?? ""); + return service.Combine(rootMediaFolder.MediaPath, folderPath ?? ""); } return folderPath; diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs index 42e23a75d..7205aa631 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Services/MediaLibraryService.cs @@ -441,5 +441,15 @@ namespace Orchard.MediaLibrary.Services { return _storageProvider.GetPublicUrl(filePath); } + + /// + /// Combines two paths. + /// + /// The parent path. + /// The child path. + /// The combined path. + public string Combine(string path1, string path2) { + return _storageProvider.Combine(path1, path2); + } } } \ No newline at end of file From e4ae744e0ca2647a31111067526bae7a24732160 Mon Sep 17 00:00:00 2001 From: Jasmin Savard Date: Tue, 12 Apr 2016 19:48:25 -0400 Subject: [PATCH 08/15] Fixing the pager in RecycleBin view Fixes #6732 --- .../Modules/Orchard.AuditTrail/Services/RecycleBin.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/RecycleBin.cs b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/RecycleBin.cs index 4bc6711fd..778dff569 100644 --- a/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/RecycleBin.cs +++ b/src/Orchard.Web/Modules/Orchard.AuditTrail/Services/RecycleBin.cs @@ -28,7 +28,7 @@ namespace Orchard.AuditTrail.Services { var totalCount = query.List().Count; query.SetFirstResult((page - 1) * pageSize); - query.SetFetchSize(pageSize); + query.SetMaxResults(pageSize); var contentItems = LoadContentItems(query); From 2440e68c3f0f6383028600147cb27b9b8b6bdeb9 Mon Sep 17 00:00:00 2001 From: Lombiq Date: Wed, 13 Apr 2016 12:32:48 +0200 Subject: [PATCH 09/15] Media Library: Fixing that only the first level of child folders were loaded in the navigation when using Azure storage --- .../Orchard.MediaLibrary/Scripts/media-library.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js index d0fbf6849..db8bd8370 100644 --- a/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js +++ b/src/Orchard.Web/Modules/Orchard.MediaLibrary/Scripts/media-library.js @@ -379,12 +379,17 @@ $(function () { var nextFetch = self.folderPath(); if (deepestChildPath !== undefined && deepestChildPath !== null && (deepestChildPath.indexOf(self.folderPath()) === 0)) { - var deepestChildPathBreadCrumbs = deepestChildPath.split('\\'); - var currentBreadCrumbs = self.folderPath().split('\\'); + /* NTFS uses "\" as the directory separator, but AFS uses "/". + Since both of them are illegal characters for file and folder names, it's safe to determine the type of file storage + currently in use based on the directory separator character. */ + var separator = deepestChildPath.contains('/') ? '/' : '\\'; + + var deepestChildPathBreadCrumbs = deepestChildPath.split(separator); + var currentBreadCrumbs = self.folderPath().split(separator); var diff = deepestChildPathBreadCrumbs.length - currentBreadCrumbs.length; if (diff > 0) { - nextFetch = self.folderPath() + '\\' + deepestChildPathBreadCrumbs[deepestChildPathBreadCrumbs.length - diff]; + nextFetch = self.folderPath() + separator + deepestChildPathBreadCrumbs[deepestChildPathBreadCrumbs.length - diff]; } } From 4b43b881f79db4a12c1356837977404c42a41f7c Mon Sep 17 00:00:00 2001 From: Sergio Navarro Date: Wed, 13 Apr 2016 18:38:06 +0200 Subject: [PATCH 10/15] Adds default value for radio button elements Fixes #6691 --- .../Drivers/RadioButtonElementDriver.cs | 10 ++++++++-- .../Orchard.DynamicForms/Elements/RadioButton.cs | 9 ++++++++- .../Views/Elements/RadioButton.Design.cshtml | 3 +++ .../Views/Elements/RadioButton.cshtml | 3 +++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/RadioButtonElementDriver.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/RadioButtonElementDriver.cs index b65cd265c..19f8f80f1 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/RadioButtonElementDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Drivers/RadioButtonElementDriver.cs @@ -34,8 +34,14 @@ namespace Orchard.DynamicForms.Drivers { Name: "Value", Title: "Value", Classes: new[] { "text", "medium", "tokenized" }, - Description: T("The value of this radio button."))); - + Description: T("The value of this radio button.")), + _DefaultValue: + shape.Checkbox( + Id: "DefaultValue", + Name: "DefaultValue", + Title: "Default Value", + Value: "true", + Description: T("Sets default value to unchecked or checked."))); return form; }); } diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/RadioButton.cs b/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/RadioButton.cs index 4eccb01b3..dd03f75d3 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/RadioButton.cs +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Elements/RadioButton.cs @@ -1,7 +1,14 @@ -namespace Orchard.DynamicForms.Elements { +using Orchard.Layouts.Elements; +using Orchard.Layouts.Helpers; + +namespace Orchard.DynamicForms.Elements { public class RadioButton : LabeledFormElement { public override string ToolboxIcon { get { return "\uf192"; } } + public bool DefaultValue { + get { return this.Retrieve(x => x.DefaultValue); } + set { this.Store(x => x.DefaultValue, value); } + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/RadioButton.Design.cshtml b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/RadioButton.Design.cshtml index c70c980d3..6c91df330 100644 --- a/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/RadioButton.Design.cshtml +++ b/src/Orchard.Web/Modules/Orchard.DynamicForms/Views/Elements/RadioButton.Design.cshtml @@ -7,6 +7,9 @@ tagBuilder.Attributes["type"] = "radio"; tagBuilder.Attributes["name"] = element.Name; tagBuilder.Attributes["value"] = element.Value; + if (element.DefaultValue) { + tagBuilder.Attributes["checked"] = "checked"; + } } @if (element.ShowLabel) {