mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Using moduleservice instead of featuremanager. Installing module and enabling features in different steps to avoid data migration issue.
--HG-- branch : dev
This commit is contained in:
@@ -7,11 +7,14 @@ using System.Web.Mvc;
|
|||||||
using System.Web.Routing;
|
using System.Web.Routing;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
using NuGet;
|
using NuGet;
|
||||||
|
using Orchard.Data.Migration;
|
||||||
|
using Orchard.Environment;
|
||||||
using Orchard.Environment.Configuration;
|
using Orchard.Environment.Configuration;
|
||||||
using Orchard.Environment.Extensions;
|
using Orchard.Environment.Extensions;
|
||||||
using Orchard.Environment.Extensions.Models;
|
using Orchard.Environment.Extensions.Models;
|
||||||
using Orchard.Environment.Features;
|
using Orchard.Environment.ShellBuilders;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
|
using Orchard.Modules.Services;
|
||||||
using Orchard.Packaging.Models;
|
using Orchard.Packaging.Models;
|
||||||
using Orchard.Packaging.Services;
|
using Orchard.Packaging.Services;
|
||||||
using Orchard.Packaging.ViewModels;
|
using Orchard.Packaging.ViewModels;
|
||||||
@@ -32,18 +35,18 @@ namespace Orchard.Packaging.Controllers {
|
|||||||
private readonly ShellSettings _shellSettings;
|
private readonly ShellSettings _shellSettings;
|
||||||
private readonly IPackageManager _packageManager;
|
private readonly IPackageManager _packageManager;
|
||||||
private readonly IPackagingSourceManager _packagingSourceManager;
|
private readonly IPackagingSourceManager _packagingSourceManager;
|
||||||
private readonly IFeatureManager _featureManager;
|
private readonly IModuleService _moduleService;
|
||||||
|
|
||||||
public GalleryController(
|
public GalleryController(
|
||||||
ShellSettings shellSettings,
|
ShellSettings shellSettings,
|
||||||
IPackageManager packageManager,
|
IPackageManager packageManager,
|
||||||
IPackagingSourceManager packagingSourceManager,
|
IPackagingSourceManager packagingSourceManager,
|
||||||
IFeatureManager featureManager,
|
IModuleService moduleService,
|
||||||
IOrchardServices services) {
|
IOrchardServices services) {
|
||||||
_shellSettings = shellSettings;
|
_shellSettings = shellSettings;
|
||||||
_packageManager = packageManager;
|
_packageManager = packageManager;
|
||||||
_packagingSourceManager = packagingSourceManager;
|
_packagingSourceManager = packagingSourceManager;
|
||||||
_featureManager = featureManager;
|
_moduleService = moduleService;
|
||||||
Services = services;
|
Services = services;
|
||||||
|
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
@@ -239,10 +242,8 @@ namespace Orchard.Packaging.Controllers {
|
|||||||
return HttpNotFound();
|
return HttpNotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packageId.StartsWith(PackagingSourceManager.GetExtensionPrefix(DefaultExtensionTypes.Theme))) {
|
PackageInfo packageInfo = InstallPackage(packageId, version, source);
|
||||||
return InstallPOST(packageId, version, sourceId, redirectTo);
|
if (DefaultExtensionTypes.IsModule(packageInfo.ExtensionType)) {
|
||||||
}
|
|
||||||
|
|
||||||
IPackageRepository packageRepository = PackageRepositoryFactory.Default.CreateRepository(new PackageSource(source.FeedUrl, "Default"));
|
IPackageRepository packageRepository = PackageRepositoryFactory.Default.CreateRepository(new PackageSource(source.FeedUrl, "Default"));
|
||||||
|
|
||||||
IPackage package = packageRepository.FindPackage(packageId);
|
IPackage package = packageRepository.FindPackage(packageId);
|
||||||
@@ -261,8 +262,9 @@ namespace Orchard.Packaging.Controllers {
|
|||||||
ExtensionDescriptor = extensionDescriptor
|
ExtensionDescriptor = extensionDescriptor
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return InstallPOST(packageId, version, sourceId, redirectTo);
|
return RedirectToAction(redirectTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost, ActionName("InstallModule")]
|
[HttpPost, ActionName("InstallModule")]
|
||||||
@@ -276,30 +278,15 @@ namespace Orchard.Packaging.Controllers {
|
|||||||
return HttpNotFound();
|
return HttpNotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
InstallPackage(packageId, version, source);
|
|
||||||
|
|
||||||
// Enable selected features
|
// Enable selected features
|
||||||
if (packagingInstallViewModel.Features.Count > 0) {
|
if (packagingInstallViewModel.Features.Count > 0) {
|
||||||
_featureManager.EnableFeatures(packagingInstallViewModel.Features
|
IEnumerable<string> featureIds = packagingInstallViewModel.Features.Select(feature => feature.FeatureDescriptor.Id);
|
||||||
.Select(feature => feature.FeatureDescriptor.Id));
|
|
||||||
|
// Enable the features and its dependencies
|
||||||
|
_moduleService.EnableFeatures(featureIds, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return RedirectToAction(redirectTo == "Themes" ? "Themes" : "Modules");
|
return RedirectToAction(redirectTo);
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost, ActionName("Install")]
|
|
||||||
public ActionResult InstallPOST(string packageId, string version, int sourceId, string redirectTo) {
|
|
||||||
if (_shellSettings.Name != ShellSettings.DefaultName || !Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to add sources")))
|
|
||||||
return new HttpUnauthorizedResult();
|
|
||||||
|
|
||||||
var source = _packagingSourceManager.GetSources().Where(s => s.Id == sourceId).FirstOrDefault();
|
|
||||||
if (source == null) {
|
|
||||||
return HttpNotFound();
|
|
||||||
}
|
|
||||||
|
|
||||||
InstallPackage(packageId, version, source);
|
|
||||||
|
|
||||||
return RedirectToAction(redirectTo == "Themes" ? "Themes" : "Modules");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private PackageInfo InstallPackage(string packageId, string version, PackagingSource source) {
|
private PackageInfo InstallPackage(string packageId, string version, PackagingSource source) {
|
||||||
|
|||||||
@@ -125,6 +125,10 @@
|
|||||||
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
||||||
<Name>Orchard.Framework</Name>
|
<Name>Orchard.Framework</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Orchard.Modules\Orchard.Modules.csproj">
|
||||||
|
<Project>{17F86780-9A1F-4AA1-86F1-875EEC2730C7}</Project>
|
||||||
|
<Name>Orchard.Modules</Name>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Content\Web.config">
|
<Content Include="Content\Web.config">
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@using (Html.BeginFormAntiForgeryPost(Url.Action("InstallModule", "Gallery", new { packageId = Request.QueryString["packageId"], version = Request.QueryString["version"], sourceId = Request.QueryString["sourceId"], redirectTo = Request.QueryString["redirectTo"] }))) {
|
@using (Html.BeginFormAntiForgeryPost(Url.Action("InstallModule", "Gallery", new { packageId = Request.QueryString["packageId"], version = Request.QueryString["version"], sourceId = Request.QueryString["sourceId"], redirectTo = Request.QueryString["redirectTo"] }))) {
|
||||||
<h3>@T("Pick the features you want enabled during install").ToString()</h3>
|
<h3>@T("Pick the features you want enabled").ToString()</h3>
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
@{ var index = 0; }
|
@{ var index = 0; }
|
||||||
@@ -33,5 +33,5 @@
|
|||||||
}
|
}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<button class="primaryAction" type="submit">@T("Install")</button>
|
<button class="primaryAction" type="submit">@T("Ok")</button>
|
||||||
}
|
}
|
||||||
@@ -9,4 +9,3 @@ Features:
|
|||||||
Name: Setup
|
Name: Setup
|
||||||
Description: Standard site setup. This feature is disabled automatically once setup is over.
|
Description: Standard site setup. This feature is disabled automatically once setup is over.
|
||||||
Category: Core
|
Category: Core
|
||||||
|
|
||||||
Reference in New Issue
Block a user