private Binary PublishXpmRegionConfiguration(StructureGroup structureGroup, Component relatedComponent) { IDictionary <string, XpmRegionData> xpmRegions = new Dictionary <string, XpmRegionData>(); foreach (ComponentTemplate ct in Publication.GetComponentTemplates()) { string regionName = GetRegionName(ct); XpmRegionData xpmRegion; if (!xpmRegions.TryGetValue(regionName, out xpmRegion)) { xpmRegion = new XpmRegionData { Region = regionName, ComponentTypes = new List <XpmComponentTypeData>() }; xpmRegions.Add(regionName, xpmRegion); } string templateId = ct.Id.GetVersionlessUri().ToString(); IEnumerable <XpmComponentTypeData> allowedComponentTypes = ct.RelatedSchemas.Select( schema => new XpmComponentTypeData { Schema = schema.Id.GetVersionlessUri().ToString(), Template = templateId } ); xpmRegion.ComponentTypes.AddRange(allowedComponentTypes); } return(AddJsonBinary(xpmRegions.Values, relatedComponent, structureGroup, "regions")); }
private Binary PublishLocalizationData(IEnumerable <Binary> binaries, Component relatedComponent) { ComponentTemplatesFilter ctFilter = new ComponentTemplatesFilter(Session) { AllowedOnPage = false, BaseColumns = ListBaseColumns.IdAndTitle }; const string dataPresentationTemplateTitle = "Generate Data Presentation"; ComponentTemplate dataPresentationTemplate = Publication.GetComponentTemplates(ctFilter).FirstOrDefault(ct => ct.Title == dataPresentationTemplateTitle); string dataPresentationUri = dataPresentationTemplate?.Id ?? string.Empty; string localizationId = Publication.Id.ItemId.ToString(); List <SiteLocalizationData> siteLocalizations = DetermineSiteLocalizations(Publication); LocalizationData localizationData = new LocalizationData { IsDefaultLocalization = siteLocalizations.First(p => p.Id == localizationId).IsMaster, IsXpmEnabled = IsXpmEnabled, MediaRoot = Publication.MultimediaUrl, SiteLocalizations = siteLocalizations.ToArray(), ConfigStaticContentUrls = binaries.Select(b => b.Url).ToArray(), DataPresentationTemplateUri = dataPresentationUri }; return(AddJsonBinary(localizationData, relatedComponent, _configStructureGroup, "_all", variantId: "config-bootstrap")); }
private void FindDataPresentationTemplate() { RepositoryLocalObject sourceItem = (RepositoryLocalObject)RenderedItem.ResolvedItem.Item; Publication contextPublication = (Publication)sourceItem.ContextRepository; ComponentTemplatesFilter ctFilter = new ComponentTemplatesFilter(Session) { AllowedOnPage = false, BaseColumns = ListBaseColumns.IdAndTitle }; // TODO: use marker App Data instead of the CTs Title. const string dataPresentationTemplateTitle = "Generate Data Presentation"; _dataPresentationTemplate = contextPublication.GetComponentTemplates(ctFilter).FirstOrDefault(ct => ct.Title == dataPresentationTemplateTitle); if (_dataPresentationTemplate == null) { Logger.Warning($"Component Template '{dataPresentationTemplateTitle}' not found."); _dataPresentationTemplateNotFound = true; } else { Logger.Debug($"Found Data Presentation Template: {_dataPresentationTemplate.FormatIdentifier()}"); } }