Пример #1
0
 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);
         }
     }
 }
Пример #2
0
 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>());
            }
        }