mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Lombiq Technologies: ORCH-197
This commit is contained in:
committed by
Benedek Farkas
parent
bbb5376594
commit
63b1674d09
@@ -110,7 +110,6 @@
|
||||
<Content Include="Scripts\orchard-workflows.js" />
|
||||
<Content Include="Styles\images\menu.workflows.png" />
|
||||
<Content Include="Styles\menu.workflows-admin.css" />
|
||||
<Content Include="Styles\workflows-activity.css" />
|
||||
<Content Include="Styles\images\cog.png" />
|
||||
<Content Include="Styles\workflows-activity-delete.css" />
|
||||
<Content Include="Styles\workflows-activity-timer.css" />
|
||||
|
||||
@@ -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<IActivitiesManager> 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<string>();
|
||||
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<Tuple<string, string>>();
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user