private ContentItem LocateStartPage(ContentItem startPageConfigured) { ContentItem startPage = startPageConfigured; lock (_syncLock) { if (host.CurrentSite.StartPageID != host.CurrentSite.RootItemID) // only when start <> root { if (startPage != null) { if (!(startPage is IStartPage)) { logger.WarnFormat("Configured start page is no IStartPage #{0} -> {1}", host.CurrentSite.StartPageID, startPage.GetType().FullName); startPage = null; } if (startPage != null && !startPage.IsPublished()) { logger.ErrorFormat("Configured start page is not published #{0} -> {1}", startPage.ID, startPage.GetType().FullName); startPage = null; } } if (startPage == null) { // try to locate start page below root var root = persister.Repository.Get(host.CurrentSite.RootItemID); if (root == null) { // no content? return(null); } ItemList children = root.GetChildren(new TypeFilter(typeof(IStartPage)), new PublishedFilter()); if (children.Count == 1) { startPage = children[0]; logger.InfoFormat("Auto updated start page to #{0} -> {1}", startPage.ID, startPage.GetType().FullName); var newSite = new Site(root.ID, startPage.ID); host.ReplaceSites(newSite, new List <Site>()); } } if (startPage == null) { return(startPageConfigured); // keep configured } } } return(startPage); }
public static T LoadEmbeddedObject <T>(this ContentItem item, string keyPrefix) where T : new() { var entity = new T(); var collection = item.GetDetailCollection(keyPrefix, false); if (collection != null) { foreach (var cd in collection.Details) { if (!Utility.TrySetProperty(entity, cd.Name.Substring(keyPrefix.Length + 1), cd.Value)) { logger.WarnFormat("Unable to assign property '{0}' from {1} with prefix '{2}'", cd.Name, item, keyPrefix); } } } return(entity); }