diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj b/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj
index 13ab0937e..fd05a7a25 100644
--- a/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Workflows/Orchard.Workflows.csproj
@@ -110,7 +110,6 @@
-
diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/ResourceManifest.cs b/src/Orchard.Web/Modules/Orchard.Workflows/ResourceManifest.cs
index 140486403..0d0fdf829 100644
--- a/src/Orchard.Web/Modules/Orchard.Workflows/ResourceManifest.cs
+++ b/src/Orchard.Web/Modules/Orchard.Workflows/ResourceManifest.cs
@@ -1,6 +1,8 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.IO;
-using System.Web;
+using System.Linq;
+using Orchard.Caching;
using Orchard.Environment;
using Orchard.Environment.Extensions;
using Orchard.FileSystems.VirtualPath;
@@ -14,16 +16,19 @@ namespace Orchard.Workflows {
private readonly IHostEnvironment _hostEnvironment;
private readonly IExtensionManager _extensionManager;
private readonly IVirtualPathProvider _virtualPathProvider;
+ private readonly ICacheManager _cacheManager;
public ResourceManifest(
Work activitiesManager,
IHostEnvironment hostEnvironment,
IExtensionManager extensionManager,
- IVirtualPathProvider virtualPathProvider) {
+ IVirtualPathProvider virtualPathProvider,
+ ICacheManager cacheManager) {
_activitiesManager = activitiesManager;
_hostEnvironment = hostEnvironment;
_extensionManager = extensionManager;
_virtualPathProvider = virtualPathProvider;
+ _cacheManager = cacheManager;
}
public void BuildManifests(ResourceManifestBuilder builder) {
@@ -31,28 +36,44 @@ namespace Orchard.Workflows {
manifest.DefineStyle("WorkflowsAdmin").SetUrl("orchard-workflows-admin.css").SetDependencies("~/Themes/TheAdmin/Styles/Site.css");
- var resourceNames = new List();
+ manifest.DefineScript("jsPlumb").SetUrl("jquery.jsPlumb-1.4.1-all-min.js").SetDependencies("jQueryUI");
- 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);
+ // Trying to find a matching activity CSS for each activity in the extensions they come from.
+ var resourceNamesAndPaths = _cacheManager.Get("Orchard.Workflows.ActivityResourceNames", context => {
+ var resourceNameAndPathList = new List>();
- if (File.Exists(filePath)) {
- resourceNames.Add(resourceName);
+ foreach (var activity in _activitiesManager.Value.GetActivities()) {
+ var assemblyName = activity.GetType().Assembly.GetName().Name;
+ var extension = _extensionManager.GetExtension(assemblyName);
+ if (extension == null) continue;
- manifest.DefineStyle(resourceName).SetUrl(filename).SetDependencies("WorkflowsAdmin");
+ var stylesPath = _virtualPathProvider.Combine(extension.VirtualPath, "Styles");
+ var resourceName = "WorkflowsActivity-" + activity.Name;
+ var filename = resourceName.HtmlClassify() + ".css";
+ var filePath = _virtualPathProvider.Combine(_hostEnvironment.MapPath(stylesPath), filename);
+
+ if (File.Exists(filePath)) {
+ /* Since stylesheets are shapes, we don't need to create the resource with the full path to the CSS file,
+ * because extensions can override those shapes by file name if they reference Orchard.Workflows,
+ * even when they don't exist in Orchard.Workflows. */
+ resourceNameAndPathList.Add(Tuple.Create(resourceName, filename));
+ }
}
+
+ return resourceNameAndPathList;
+ });
+
+ foreach (var resourceNameAndPath in resourceNamesAndPaths) {
+ manifest
+ .DefineStyle(resourceNameAndPath.Item1)
+ .SetUrl(resourceNameAndPath.Item2)
+ .SetDependencies("WorkflowsAdmin");
}
- manifest.DefineStyle("WorkflowsActivities").SetUrl("workflows-activity.css").SetDependencies(resourceNames.ToArray());
-
- manifest.DefineScript("jsPlumb").SetUrl("jquery.jsPlumb-1.4.1-all-min.js").SetDependencies("jQueryUI");
+ manifest
+ .DefineStyle("WorkflowsActivities")
+ .SetDependencies(resourceNamesAndPaths.Select(resourceNameAndPath => resourceNameAndPath.Item1).ToArray());
}
}
}
diff --git a/src/Orchard.Web/Modules/Orchard.Workflows/Styles/workflows-activity.css b/src/Orchard.Web/Modules/Orchard.Workflows/Styles/workflows-activity.css
deleted file mode 100644
index 5f282702b..000000000
--- a/src/Orchard.Web/Modules/Orchard.Workflows/Styles/workflows-activity.css
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file