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"));
        }
Exemplo n.º 3
0
        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()}");
            }
        }