in src/OrchardCore/OrchardCore.ResourceManagement/TagHelpers/StyleTagHelper.cs [48:228]
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
output.SuppressOutput();
if (String.IsNullOrEmpty(Name) && !String.IsNullOrEmpty(Src))
{
// Include custom script
var setting = _resourceManager.RegisterUrl("stylesheet", Src, DebugSrc);
if (At != ResourceLocation.Unspecified)
{
setting.AtLocation(At);
}
else
{
setting.AtLocation(ResourceLocation.Head);
}
if (!String.IsNullOrEmpty(Condition))
{
setting.UseCondition(Condition);
}
if (AppendVersion.HasValue == true)
{
setting.ShouldAppendVersion(AppendVersion);
}
if (Debug != null)
{
setting.UseDebugMode(Debug.Value);
}
if (!String.IsNullOrEmpty(Culture))
{
setting.UseCulture(Culture);
}
}
else if (!String.IsNullOrEmpty(Name) && String.IsNullOrEmpty(Src))
{
// Resource required
var setting = _resourceManager.RegisterResource("stylesheet", Name);
if (At != ResourceLocation.Unspecified)
{
setting.AtLocation(At);
}
else
{
setting.AtLocation(ResourceLocation.Head);
}
if (UseCdn != null)
{
setting.UseCdn(UseCdn.Value);
}
if (!String.IsNullOrEmpty(Condition))
{
setting.UseCondition(Condition);
}
if (Debug != null)
{
setting.UseDebugMode(Debug.Value);
}
if (!String.IsNullOrEmpty(Culture))
{
setting.UseCulture(Culture);
}
if (AppendVersion.HasValue == true)
{
setting.ShouldAppendVersion(AppendVersion);
}
if (!String.IsNullOrEmpty(Version))
{
setting.UseVersion(Version);
}
// This allows additions to the pre registered scripts dependencies.
if (!String.IsNullOrEmpty(DependsOn))
{
setting.SetDependencies(DependsOn.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries));
}
var childContent = await output.GetChildContentAsync();
if (!childContent.IsEmptyOrWhiteSpace)
{
// Inline content definition
_resourceManager.InlineManifest.DefineStyle(Name)
.SetInnerContent(childContent.GetContent());
}
}
else if (!String.IsNullOrEmpty(Name) && !String.IsNullOrEmpty(Src))
{
// Inline declaration
var definition = _resourceManager.InlineManifest.DefineStyle(Name);
definition.SetUrl(Src, DebugSrc);
if (!String.IsNullOrEmpty(Version))
{
definition.SetVersion(Version);
}
if (!String.IsNullOrEmpty(CdnSrc))
{
definition.SetCdn(CdnSrc, DebugCdnSrc);
}
if (!String.IsNullOrEmpty(Culture))
{
definition.SetCultures(Culture.Split(',', StringSplitOptions.RemoveEmptyEntries));
}
if (!String.IsNullOrEmpty(DependsOn))
{
definition.SetDependencies(DependsOn.Split(',', StringSplitOptions.RemoveEmptyEntries));
}
// Also include the style
var setting = _resourceManager.RegisterResource("stylesheet", Name);
if (At != ResourceLocation.Unspecified)
{
setting.AtLocation(At);
}
else
{
setting.AtLocation(ResourceLocation.Head);
}
if (UseCdn != null)
{
setting.UseCdn(UseCdn.Value);
}
if (!String.IsNullOrEmpty(Condition))
{
setting.UseCondition(Condition);
}
if (Debug != null)
{
setting.UseDebugMode(Debug.Value);
}
if (!String.IsNullOrEmpty(Culture))
{
setting.UseCulture(Culture);
}
}
else if (String.IsNullOrEmpty(Name) && String.IsNullOrEmpty(Src))
{
// Custom style content
var childContent = await output.GetChildContentAsync();
var builder = new TagBuilder("style");
builder.InnerHtml.AppendHtml(childContent);
builder.TagRenderMode = TagRenderMode.Normal;
foreach (var attribute in output.Attributes)
{
builder.Attributes.Add(attribute.Name, attribute.Value.ToString());
}
// If no type was specified, define a default one
if (!builder.Attributes.ContainsKey("type"))
{
builder.Attributes.Add("type", "text/css");
}
_resourceManager.RegisterStyle(builder);
}
}