protected virtual void GetLinksSpeedy(IEnumerable <Item> allThemes, AssetServiceMode scriptsMode, AssetServiceMode stylesMode, AssetLinks result) { foreach (Item allTheme in allThemes) { AssetLinks assetLinks = new AssetLinks(); GetScriptLinks(allTheme, scriptsMode, assetLinks); GetStylesLinks(allTheme, stylesMode, assetLinks); foreach (string item in from link in assetLinks.Styles select $"<link async=\"true\" href=\"{link}\" rel=\"stylesheet\" />") { result.Styles.Add(item); } foreach (string item2 in from link in assetLinks.Scripts select link) { result.Scripts.Add(item2); } } }
protected virtual void GetLinksSpeedy(IEnumerable <Item> allThemes, AssetServiceMode scriptsMode, AssetServiceMode stylesMode, SpeedyAssetLinks result) { foreach (Item allTheme in allThemes) { AssetLinks assetLinks = new AssetLinks(); GetScriptLinks(allTheme, scriptsMode, assetLinks); GetStylesLinks(allTheme, stylesMode, assetLinks); foreach (string item in from link in assetLinks.Styles select $"<link async=\"true\" href=\"{link}\" rel=\"stylesheet\" />") { var cssFileUri = item.Replace($"<link async=\"true\" href=\"", string.Empty).Replace($"\" rel=\"stylesheet\" />", string.Empty); var prefetchInclude = item.Replace($"async=\"true\"", $"async=\"true\" rel=\"prefetch\""); result.PlainStyles.Add(cssFileUri); result.PrefetchStyles.Add(prefetchInclude); result.Styles.Add(item); } foreach (string item2 in from link in assetLinks.Scripts select link) { result.Scripts.Add(item2); } } }
private IEnumerable <string> ProcessAssets(Item plainIncludeItem, AssetType assetType, AssetServiceMode serviceMode) { Item[] selectedItems = null; if (assetType == AssetType.Script) { selectedItems = plainIncludeItem.Axes.SelectItems("./Scripts//*[@Extension='js']"); } else if (assetType == AssetType.Style) { selectedItems = plainIncludeItem.Axes.SelectItems("./Styles//*[@Extension='css']"); } var assets = (selectedItems != null && selectedItems.Any()) ? new List <Item>(selectedItems) : new List <Item>(); var isOptimized = true; switch (serviceMode) { case AssetServiceMode.Disabled: assets = assets.Where(i => i.TemplateID != Sitecore.XA.Foundation.Theming.Templates.OptimizedFile.ID).ToList(); isOptimized = false; break; case AssetServiceMode.Concatenate: case AssetServiceMode.ConcatenateAndMinify: var optimizedItem = assets.FirstOrDefault(i => i.TemplateID == Sitecore.XA.Foundation.Theming.Templates.OptimizedFile.ID); if (optimizedItem != null && !IsNotEmpty(optimizedItem)) { assets = new List <Item> { optimizedItem }; } else { optimizedItem = new AssetBundler().GetOptimizedItem(plainIncludeItem, (OptimizationType)assetType, serviceMode); if (optimizedItem != null && IsNotEmpty(optimizedItem)) { assets = new List <Item> { optimizedItem }; } else { assets = new List <Item>(); } } break; } switch (assetType) { case AssetType.Script: return(assets.Select(s => "<script src=\"{0}\">\\x3C/script>".FormatWith(s.BuildAssetPath(isOptimized)))); case AssetType.Style: return (assets.Select(s => "<link href=\"{0}\" rel=\"stylesheet\" />".FormatWith(s.BuildAssetPath(isOptimized)))); default: return(new List <string>()); } }