mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Fixing #17486: Recipes should use package ID instead of title to uniquely identify modules and themes
Fixing #17533: Recipes should not fail on theme or module steps if the extension already exists --HG-- branch : dev
This commit is contained in:
@@ -70,28 +70,22 @@ namespace Orchard.Recipes.RecipeHandlers {
|
||||
bool enforceVersion = version != null;
|
||||
bool installed = false;
|
||||
|
||||
PackagingSource packagingSource = _packagingSourceManager.GetSources().FirstOrDefault();
|
||||
var packagingSource = _packagingSourceManager.GetSources().FirstOrDefault();
|
||||
if (repository != null) {
|
||||
enforceVersion = false;
|
||||
packagingSource = new PackagingSource {FeedTitle = repository, FeedUrl = repository};
|
||||
}
|
||||
|
||||
if (_extensionManager.AvailableExtensions().Where(extension =>
|
||||
DefaultExtensionTypes.IsTheme(extension.ExtensionType) &&
|
||||
extension.Name.Equals(name, StringComparison.OrdinalIgnoreCase)).Any()) {
|
||||
throw new InvalidOperationException(string.Format("Module {0} already exists.", name));
|
||||
}
|
||||
|
||||
PackagingEntry packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource,
|
||||
var packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource,
|
||||
packages => packages.Where(package =>
|
||||
package.PackageType.Equals(DefaultExtensionTypes.Module) &&
|
||||
package.Title.Equals(name, StringComparison.OrdinalIgnoreCase) &&
|
||||
package.Id.Equals(name, StringComparison.OrdinalIgnoreCase) &&
|
||||
(!enforceVersion || package.Version.Equals(version, StringComparison.OrdinalIgnoreCase))))
|
||||
.FirstOrDefault();
|
||||
|
||||
if (packagingEntry != null) {
|
||||
_packageManager.Install(packagingEntry.PackageId, packagingEntry.Version, packagingSource.FeedUrl, HostingEnvironment.MapPath("~/"));
|
||||
foreach (string[] features in
|
||||
_packageManager.Install(packagingEntry.PackageId, packagingEntry.Version, packagingSource.FeedUrl, HostingEnvironment.MapPath("~/"));
|
||||
foreach (var features in
|
||||
from extensionDescriptor in _extensionManager.AvailableExtensions()
|
||||
where extensionDescriptor.Name.Equals(packagingEntry.Title, StringComparison.OrdinalIgnoreCase)
|
||||
select extensionDescriptor.Features.Select(f => f.Name).ToArray()) {
|
||||
|
||||
@@ -78,22 +78,16 @@ namespace Orchard.Recipes.RecipeHandlers {
|
||||
bool enforceVersion = version != null;
|
||||
bool installed = false;
|
||||
|
||||
PackagingSource packagingSource = _packagingSourceManager.GetSources().FirstOrDefault();
|
||||
var packagingSource = _packagingSourceManager.GetSources().FirstOrDefault();
|
||||
if (repository != null) {
|
||||
enforceVersion = false;
|
||||
packagingSource = new PackagingSource { FeedTitle = repository, FeedUrl = repository };
|
||||
}
|
||||
|
||||
if (_extensionManager.AvailableExtensions().Where(extension =>
|
||||
DefaultExtensionTypes.IsTheme(extension.ExtensionType) &&
|
||||
extension.Name.Equals(name, StringComparison.OrdinalIgnoreCase)).Any()) {
|
||||
throw new InvalidOperationException(string.Format("Theme {0} already exists.", name));
|
||||
}
|
||||
|
||||
PackagingEntry packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource,
|
||||
var packagingEntry = _packagingSourceManager.GetExtensionList(packagingSource,
|
||||
packages => packages.Where(package =>
|
||||
package.PackageType.Equals(DefaultExtensionTypes.Theme) &&
|
||||
package.Title.Equals(name, StringComparison.OrdinalIgnoreCase) &&
|
||||
package.Id.Equals(name, StringComparison.OrdinalIgnoreCase) &&
|
||||
(!enforceVersion || package.Version.Equals(version, StringComparison.OrdinalIgnoreCase))))
|
||||
.FirstOrDefault();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user