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; }
/// <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); }
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(); }