diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs index ed8a77320..795f015ea 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/GalleryController.cs @@ -249,8 +249,7 @@ namespace Orchard.Packaging.Controllers { ExtensionDescriptor extensionDescriptor = _packageManager.GetExtensionDescriptor(package); List features = extensionDescriptor.Features - .Where(featureDescriptor => !DefaultExtensionTypes.IsTheme(featureDescriptor.Extension.ExtensionType) && - !featureDescriptor.Id.Equals(featureDescriptor.Extension.Id)) + .Where(featureDescriptor => !DefaultExtensionTypes.IsTheme(featureDescriptor.Extension.ExtensionType)) .Select(featureDescriptor => new PackagingInstallFeatureViewModel { Enable = true, // by default all features are enabled FeatureDescriptor = featureDescriptor @@ -278,9 +277,12 @@ namespace Orchard.Packaging.Controllers { } InstallPackage(packageId, version, source); + // Enable selected features - _featureManager.EnableFeatures(packagingInstallViewModel.Features - .Select(feature => feature.FeatureDescriptor.Id)); + if (packagingInstallViewModel.Features.Count > 0) { + _featureManager.EnableFeatures(packagingInstallViewModel.Features + .Select(feature => feature.FeatureDescriptor.Id)); + } return RedirectToAction(redirectTo == "Themes" ? "Themes" : "Modules"); } diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs index 01836d3e4..355684497 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Services/PackageManager.cs @@ -76,8 +76,9 @@ namespace Orchard.Packaging.Services { public ExtensionDescriptor GetExtensionDescriptor(IPackage package) { IPackageFile packageFile = package.GetFiles().FirstOrDefault(file => Path.GetFileName(file.Path).Equals("module.txt", StringComparison.OrdinalIgnoreCase)); if (packageFile != null) { + string extensionId = Path.GetFileName(Path.GetDirectoryName(packageFile.Path).TrimEnd('/', '\\')); using (StreamReader streamReader = new StreamReader(packageFile.GetStream())) { - return ExtensionFolders.GetDescriptorForExtension("", package.Id, DefaultExtensionTypes.Module, streamReader.ReadToEnd()); + return ExtensionFolders.GetDescriptorForExtension("", extensionId, DefaultExtensionTypes.Module, streamReader.ReadToEnd()); } } diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/InstallModule.cshtml b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/InstallModule.cshtml index f99b88c62..1803e1c83 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/InstallModule.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Views/Gallery/InstallModule.cshtml @@ -21,7 +21,13 @@ @Html.EditorFor(m => m.Features[index].Enable) - + @{ index++; } } diff --git a/src/Orchard/Data/Migration/DataMigrationManager.cs b/src/Orchard/Data/Migration/DataMigrationManager.cs index e1e8d4abd..9ecce96c5 100644 --- a/src/Orchard/Data/Migration/DataMigrationManager.cs +++ b/src/Orchard/Data/Migration/DataMigrationManager.cs @@ -187,7 +187,7 @@ namespace Orchard.Data.Migration { return dataMigration .GetType() .GetMethods(BindingFlags.Public | BindingFlags.Instance) - .Select(mi => GetUpdateMethod(mi)) + .Select(GetUpdateMethod) .Where(tuple => tuple != null) .ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2); } diff --git a/src/Orchard/Environment/Features/FeatureManager.cs b/src/Orchard/Environment/Features/FeatureManager.cs index 61effe549..a8230f3cc 100644 --- a/src/Orchard/Environment/Features/FeatureManager.cs +++ b/src/Orchard/Environment/Features/FeatureManager.cs @@ -43,7 +43,7 @@ namespace Orchard.Environment.Features { var updatedFeatures = currentShellDescriptor.Features .Union(featureNames .Where(name => !currentShellDescriptor.Features.Any(sf => sf.Name == name)) - .Select(name => new ShellFeature {Name = name})); + .Select(name => new ShellFeature {Name = name})); _shellDescriptorManager.UpdateShellDescriptor( currentShellDescriptor.SerialNumber,