Пример #1
0
        public void UpdateCriticalCSS(Item item, string database)
        {
            if (item == null)
            {
                return;
            }

            // Only act if within the master database
            if ((item.Database != null && string.CompareOrdinal(item.Database.Name, database) != 0) ||
                item.Name == "__Standard Values" ||
                !item.IsSpeedyEnabledForPage())
            {
                return;
            }

            if (!item.InheritsFrom(SpeedyConstants.TemplateIDs.SpeedyPageTemplateId))
            {
                return;
            }

            // If speedy is enabled for this page and should we generate the CSS
            if (!item.IsEnabled(SpeedyConstants.Fields.SpeedyEnabled))
            {
                return;
            }

            var presentUrl = item.GetUrlForContextSite() + $"?{SpeedyConstants.ByPass.ByPassParameter}=true";

            var width  = item.Fields[SpeedyConstants.Fields.CriticalViewPortWidth].Value;
            var height = item.Fields[SpeedyConstants.Fields.CriticalViewPortHeight].Value;

            if (string.IsNullOrWhiteSpace(width))
            {
                width = SpeedyGenerationSettings.GetDefaultCriticalWidth();
            }
            if (string.IsNullOrWhiteSpace(height))
            {
                height = SpeedyGenerationSettings.GetDefaultCriticalHeight();
            }

            var criticalHtml = string.Empty;

            // If the setting is turned on to so that this is a public facing environment, then critical HTML can be generated via the hosted Node application on a separate URL.
            if (SpeedyGenerationSettings.IsPublicFacingEnvironment() ||
                SpeedyGenerationSettings.UseLocalCriticalCssGenerator())
            {
                criticalHtml = _criticalGenerationGateway.GenerateCritical(presentUrl, width, height, true);
            }

            item.Fields[SpeedyConstants.Fields.CriticalCss].Value = criticalHtml;
        }
Пример #2
0
        /// <summary>
        /// Queries the state of the command.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns>The state of the command.</returns>
        public override CommandState QueryState(CommandContext context)
        {
            Assert.ArgumentNotNull(context, "context");

            if (!SpeedyGenerationSettings.IsPublicFacingEnvironment() && !SpeedyGenerationSettings.UseLocalCriticalCssGenerator())
            {
                return(CommandState.Hidden);
            }

            if (context.Items.Length != 1)
            {
                return(CommandState.Hidden);
            }

            var item = context.Items[0];

            return(item.IsSpeedyEnabledForPage() ? CommandState.Enabled : CommandState.Disabled);
        }
Пример #3
0
        public override void Execute(CommandContext context)
        {
            if (context.Items.Length != 1)
            {
                return;
            }

            if (!SpeedyGenerationSettings.IsPublicFacingEnvironment() && !SpeedyGenerationSettings.UseLocalCriticalCssGenerator())
            {
                return;
            }

            //var criticalCSSRepository = ServiceLocator.ServiceProvider.GetService<ICriticalCSSRepository>();

            var currentItem = context.Items[0];

            currentItem.Editing.BeginEdit();
            _criticalCSSRepository.UpdateCriticalCSS(currentItem, GlobalSettings.Database.Master);
            currentItem.Editing.EndEdit();
        }