public void Initialize(InitializationEngine context)
{
if (_initialized || ContentReference.IsNullOrEmpty(GlobalNewsContainer) || context.HostType != HostType.WebApplication)
{
return;
}
var providerManager = ServiceLocator.Current.GetInstance<IContentProviderManager>();
var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
var startPages = contentLoader.GetChildren<PageData>(SiteDefinition.Current.RootPage).OfType<StartPage>();
// Attach content provider to each site's global news container
foreach (var startPage in startPages.Where(startPage => !ContentReference.IsNullOrEmpty(startPage.GlobalNewsPageLink)))
{
try
{
Logger.Debug("Attaching global news content provider to page {0} [{1}], global news will be retrieved from page {2} [{3}]",
contentLoader.Get<PageData>(startPage.GlobalNewsPageLink).Name,
startPage.GlobalNewsPageLink.ID,
contentLoader.Get<PageData>(GlobalNewsContainer).PageName,
GlobalNewsContainer.ID);
var provider = new ClonedContentProvider(GlobalNewsContainer.ToPageReference(), startPage.GlobalNewsPageLink, startPage.Category);
providerManager.ProviderMap.AddProvider(provider);
}
catch (Exception ex)
{
Logger.Error("Unable to create global news content provider for start page with ID {0}: {1}", startPage.PageLink.ID, ex.Message);
}
}
_initialized = true;
}