Example #1
0
        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);
        }
Example #2
0
        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);
        }