Fixing that Orchard.Workflows requires styles that don't exist (#8201)

Improves the changes from https://github.com/OrchardCMS/Orchard/pull/8009 by HengzheLi,
but allows loading Activity stylesheets from any extension (including custom paths), not just modules
This commit is contained in:
Márk Bartha
2019-05-15 23:26:52 +02:00
committed by Benedek Farkas
parent ecc089a7a6
commit f66169cd29
37 changed files with 32 additions and 72 deletions
@@ -126,9 +126,6 @@
<Content Include="Styles\menu.dynamicforms-admin.css" />
<Content Include="Styles\menu.dynamicforms.png" />
<Content Include="Styles\recipebuilderstep-forms.css" />
<Content Include="Styles\workflows-activity-add-model-error.css" />
<Content Include="Styles\workflows-activity-dynamic-form-submitted.css" />
<Content Include="Styles\workflows-activity-dynamic-form-validating.css" />
<Content Include="Web.config" />
<Content Include="Scripts\Web.config" />
<Content Include="Styles\Web.config" />
@@ -155,22 +155,6 @@
<Content Include="Module.txt" />
<Content Include="Styles\images\menu.users.png" />
<Content Include="Styles\menu.users-admin.css" />
<Content Include="Styles\workflows-activity-user-log-in-failed.css" />
<Content Include="Styles\workflows-activity-verify-user-unicity.css" />
<Content Include="Styles\workflows-activity-user-logged-in.css" />
<Content Include="Styles\workflows-activity-user-sent-challenge-email.css" />
<Content Include="Styles\workflows-activity-user-logged-out.css" />
<Content Include="Styles\workflows-activity-user-logging-in.css" />
<Content Include="Styles\workflows-activity-user-is-approved.css" />
<Content Include="Styles\workflows-activity-user-access-denied.css" />
<Content Include="Styles\workflows-activity-user-creating.css" />
<Content Include="Styles\workflows-activity-user-confirmed-email.css" />
<Content Include="Styles\workflows-activity-user-created.css" />
<Content Include="Styles\workflows-activity-user-changed-password.css" />
<Content Include="Styles\workflows-activity-user-approved.css" />
<Content Include="Styles\workflows-activity-sign-in-user.css" />
<Content Include="Styles\workflows-activity-create-user.css" />
<Content Include="Styles\workflows-activity-approve-user.css" />
<Content Include="Views\Account\ChangePassword.cshtml" />
<Content Include="Views\Account\ChangePasswordSuccess.cshtml" />
<Content Include="Views\Account\AccessDenied.cshtml" />
@@ -108,15 +108,6 @@
<Content Include="Scripts\jquery.jsPlumb-1.4.1-all-min.js" />
<Content Include="Scripts\orchard-workflows-serialize.js" />
<Content Include="Scripts\orchard-workflows.js" />
<Content Include="Styles\workflows-activity-logging.css" />
<Content Include="Styles\workflows-activity-trigger.css" />
<Content Include="Styles\workflows-activity-signal.css" />
<Content Include="Styles\workflows-activity-web-request.css" />
<Content Include="Styles\workflows-activity-redirect.css" />
<Content Include="Styles\workflows-activity-merge-branch.css" />
<Content Include="Styles\workflows-activity-exclusive-branch.css" />
<Content Include="Styles\workflows-activity-content-delete.css" />
<Content Include="Styles\workflows-activity-content-updated.css" />
<Content Include="Styles\images\menu.workflows.png" />
<Content Include="Styles\menu.workflows-admin.css" />
<Content Include="Styles\workflows-activity.css" />
@@ -125,11 +116,6 @@
<Content Include="Styles\workflows-activity-timer.css" />
<Content Include="Styles\workflows-activity-branch.css" />
<Content Include="Styles\orchard-workflows-admin.css" />
<Content Include="Styles\workflows-activity-notify.css" />
<Content Include="Styles\workflows-activity-publish.css" />
<Content Include="Styles\workflows-activity-content-removed.css" />
<Content Include="Styles\workflows-activity-content-published.css" />
<Content Include="Styles\workflows-activity-content-versioned.css" />
<Content Include="Styles\workflows-activity-content-created.css" />
<Content Include="Web.config" />
<Content Include="Scripts\Web.config" />
@@ -1,6 +1,9 @@
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Web;
using Orchard.Environment;
using Orchard.Environment.Extensions;
using Orchard.FileSystems.VirtualPath;
using Orchard.UI.Resources;
using Orchard.Utility.Extensions;
using Orchard.Workflows.Services;
@@ -8,9 +11,19 @@ using Orchard.Workflows.Services;
namespace Orchard.Workflows {
public class ResourceManifest : IResourceManifestProvider {
private readonly Work<IActivitiesManager> _activitiesManager;
private readonly IHostEnvironment _hostEnvironment;
private readonly IExtensionManager _extensionManager;
private readonly IVirtualPathProvider _virtualPathProvider;
public ResourceManifest(Work<IActivitiesManager> activitiesManager) {
public ResourceManifest(
Work<IActivitiesManager> activitiesManager,
IHostEnvironment hostEnvironment,
IExtensionManager extensionManager,
IVirtualPathProvider virtualPathProvider) {
_activitiesManager = activitiesManager;
_hostEnvironment = hostEnvironment;
_extensionManager = extensionManager;
_virtualPathProvider = virtualPathProvider;
}
public void BuildManifests(ResourceManifestBuilder builder) {
@@ -18,13 +31,26 @@ namespace Orchard.Workflows {
manifest.DefineStyle("WorkflowsAdmin").SetUrl("orchard-workflows-admin.css").SetDependencies("~/Themes/TheAdmin/Styles/Site.css");
var activityNames = _activitiesManager.Value.GetActivities().Select(x => "WorkflowsActivity-" + x.Name).ToArray();
var resourceNames = new List<string>();
foreach (var activityName in activityNames) {
manifest.DefineStyle(activityName).SetUrl(activityName.HtmlClassify()).SetDependencies("WorkflowsAdmin");
foreach (var activity in _activitiesManager.Value.GetActivities()) {
var assemblyName = activity.GetType().Assembly.GetName().Name;
var descriptor = _extensionManager.GetExtension(assemblyName);
if (descriptor == null) continue;
var stylesPath = _virtualPathProvider.Combine(descriptor.VirtualPath, "Styles");
var resourceName = "WorkflowsActivity-" + activity.Name;
var filename = resourceName.HtmlClassify() + ".css";
var filePath = _virtualPathProvider.Combine(_hostEnvironment.MapPath(stylesPath), filename);
if (File.Exists(filePath)) {
resourceNames.Add(resourceName);
manifest.DefineStyle(resourceName).SetUrl(filename).SetDependencies("WorkflowsAdmin");
}
}
manifest.DefineStyle("WorkflowsActivities").SetUrl("workflows-activity.css").SetDependencies(activityNames);
manifest.DefineStyle("WorkflowsActivities").SetUrl("workflows-activity.css").SetDependencies(resourceNames.ToArray());
manifest.DefineScript("jsPlumb").SetUrl("jquery.jsPlumb-1.4.1-all-min.js").SetDependencies("jQueryUI");
}