示例#1
0
        public List <Site> GetChildSites(string siteName)
        {
            var siteList    = new List <Site>();
            var pageManager = PageManager.GetManager();
            var sites       = new MultisiteManager();

            var allSites = sites.GetSites();

            foreach (var sitee in allSites)
            {
                var helper     = new WidgetDesigners.WidgetDesignerHelper();
                var parentSite = helper.GetParentSite(pageManager, sitee.SiteMapRootNodeId);

                var parentSiteName = "";

                if (parentSite != null)
                {
                    parentSiteName = parentSite.Name;
                }

                if (parentSiteName == siteName)
                {
                    siteList.Add(sitee);
                }
            }

            return(siteList);
        }
示例#2
0
        public Site Get_Site()
        {
            MultisiteManager siteMgr = MultisiteManager.GetManager();
            Site             site    = siteMgr.GetSites().Where(s => s.SiteMapRootNodeId == siteId).FirstOrDefault();

            return(site);
        }
示例#3
0
        private string GetCatalogueName(Guid searchIndexPipeId)
        {
            var searchManager = PublishingManager.GetManager(PublishingConfig.SearchProviderName);
            var pipeSettings  = searchManager.GetPipeSettings <SearchIndexPipeSettings>();
            var pipe          = pipeSettings.SingleOrDefault(p => p.Id == searchIndexPipeId);

            if (pipe != null)
            {
                if (!SystemManager.CurrentContext.IsMultisiteMode)
                {
                    return(pipe.CatalogName);
                }
                else
                {
                    var siteId = SystemManager.CurrentContext.CurrentSite.Id;

                    IList <Guid> sites;
                    if (pipe.PublishingPoint.IsSharedWithAllSites)
                    {
                        sites = MultisiteManager.GetManager().GetSites().Select(s => s.Id).ToList();
                    }
                    else
                    {
                        sites = this.GetSitesByPoint(pipe.PublishingPoint).Select(l => l.SiteId).ToList();
                    }

                    if (sites.Contains(siteId))
                    {
                        return(pipe.CatalogName);
                    }
                }
            }
            return(string.Empty);
        }
示例#4
0
        public List<Site> GetChildSites(string siteName)
        {
            var siteList = new List<Site>();
            var pageManager = PageManager.GetManager();
            var sites = new MultisiteManager();

            var allSites = sites.GetSites();

            foreach (var sitee in allSites)
            {
                var helper = new WidgetDesigners.WidgetDesignerHelper();
                var parentSite = helper.GetParentSite(pageManager, sitee.SiteMapRootNodeId);

                var parentSiteName = "";

                if (parentSite != null)
                    parentSiteName = parentSite.Name;

                if (parentSiteName == siteName)
                {
                    siteList.Add(sitee);
                }
            }

            return siteList;
        }
示例#5
0
        /// <summary>
        /// Gets all sites that are a sibling or child of 'site'
        /// </summary>
        /// <param name="siteName">The site name</param>
        /// <param name="myParentSiteName">The parent site</param>
        /// <returns></returns>
        public JsonResult GetSitesWithParam(string siteName, string myParentSiteName)
        {
            var pageManager = PageManager.GetManager();
            var sites       = new MultisiteManager();

            var allSites      = sites.GetSites();
            var dropDownSites = new List <SitefinitySite>();
            var i             = 0;

            foreach (var sitee in allSites)
            {
                var helper     = new WidgetDesigners.WidgetDesignerHelper();
                var parentSite = helper.GetParentSite(pageManager, sitee.SiteMapRootNodeId);

                var parentSiteName = "";

                if (parentSite != null)
                {
                    parentSiteName = parentSite.Name;
                }

                if (parentSiteName == siteName || (parentSiteName == myParentSiteName && sitee.Name != siteName))
                {
                    dropDownSites.Add(new SitefinitySite(sitee.Id, sitee.Name, siteName, sitee.SiteMapRootNodeId));
                    i++;
                }
            }

            return(Json(dropDownSites, JsonRequestBehavior.AllowGet));
        }
示例#6
0
        /// <summary>
        /// Gets all sites that have a parent site or a sibling site
        /// </summary>
        /// <returns></returns>
        public JsonResult GetSites()
        {
            var pageManager = PageManager.GetManager();

            var sites = new MultisiteManager();

            var allSites      = sites.GetSites();
            var dropDownSites = new List <SitefinitySite>();

            foreach (var site in sites.GetSites())
            {
                var helper     = new WidgetDesigners.WidgetDesignerHelper();
                var parentSite = helper.GetParentSite(pageManager, site.SiteMapRootNodeId);

                var parentSiteName = "";

                if (parentSite != null)
                {
                    parentSiteName = parentSite.Name;
                }

                if (((List <SitefinitySite>)GetSitesWithParam(site.Name, parentSiteName).Data).Count != 0)
                {
                    dropDownSites.Add(new SitefinitySite(site.Id, site.Name, parentSiteName, site.SiteMapRootNodeId));
                }
            }

            return(Json(dropDownSites, JsonRequestBehavior.AllowGet));
        }
        private void AddCanonicalTag()
        {
            var page = CurrentPage;
            var site = MultisiteManager.GetManager().GetSites().FirstOrDefault(x => x.Name == DefaultSiteName);

            if (page != null && site != null)
            {
                var link = new HtmlLink();
                link.Attributes.Add(CanonicalAttrKey, CanonicalAttrValue);
                link.Href = $"{page.Request.Url.Scheme}://{site.LiveUrl}{page.Request.Url.LocalPath}";
                if (!string.IsNullOrWhiteSpace(link.Href))
                {
                    page.Header.Controls.Add(link);
                }
            }
        }
示例#8
0
        public override void CMD_list(Arguments args, Guid rootId)
        {
            int level = args.ContainsKey("all") ? 100 : 1;

            // Top level - display the libraries for all the providers
            if (rootId == Guid.Empty)
            {
                MultisiteManager siteMgr = MultisiteManager.GetManager();
                Site             site    = svc.Get_Site();
                root = new MediaTree(this, site, level);
            }
            else
            {
                IFolder folder = libMgr.GetFolder(rootId);
                root = new MediaTree(folder, level, libMgr);
            }
        }
        public override void CMD_provider(Arguments args, Guid rootId)
        {
            List <string> providers = new List <string>();

            var dynTypes = ModuleBuilderManager.GetManager().Provider.GetDynamicModuleTypes();
            MultisiteManager msManager = MultisiteManager.GetManager();
            var links = msManager.GetSiteDataSourceLinks();

            foreach (var datalink in links.Where(l => !l.DataSourceName.StartsWith("Telerik.Sitefinity.")))
            {
                if (dynTypes.Where(mt => mt.ModuleName == datalink.DataSourceName).FirstOrDefault() != null)
                {
                    providers.Add(ProviderName(datalink.ProviderName));
                }
            }

            // Displays the list of providers
            if (args.Count == 0)
            {
                string currentProvider = ProviderName(svc.Get_Provider());
                summary = string.Join("\n", providers.Select(provider => provider + (provider == currentProvider ? " <=" : "")));
                return;
            }

            // Selects a provider
            string newProvider = providers.Where(provider => provider.ToLower() == args.FirstKey).FirstOrDefault();

            if (newProvider == null)
            {
                svc.Set_Error("Invalid provider: " + args.FirstKey);
                return;
            }

            if (rootId != Guid.Empty)
            {
                var  dynType = ModuleBuilderManager.GetManager().Provider.GetDynamicModuleType(rootId);
                Type type    = TypeResolutionService.ResolveType(dynType.GetFullTypeName());
                svc.Set_Path(newProvider + " - " + type.FullName.Substring(38));
            }
            newProvider = newProvider == "Default" ? "OpenAccessProvider" : newProvider;
            svc.Set_Provider(newProvider);
        }
        /// <summary>
        /// Gets the parent site of the current page by using the ParentName property of the Config page
        /// </summary>
        /// <param name="pageManager">The page manager</param>
        /// <returns>The parent site</returns>
        public Site GetParentSite(PageManager pageManager, Guid siteRootNode)
        {
            var sites = new MultisiteManager();

            var configPage = new PageData();

            foreach (var f in pageManager.GetPageDataList())
            {
                if (f.NavigationNode.Title.GetString(f.NavigationNode.AvailableCultures[0], false).ToLower() == "config" &&
                    !f.NavigationNode.IsDeleted &&
                    f.NavigationNode.ParentId == siteRootNode)
                {
                    configPage = f;
                    break;
                }
            }


            if (configPage == null)
            {
                return(null);
            }

            var parentName = configPage.Controls[0].Properties.FirstOrDefault(r => r.Name == "Settings").ChildProperties.FirstOrDefault(p => p.Name.ToLower() == "parentname");

            if (parentName == null)
            {
                return(null);
            }

            var parentSiteName = parentName.Value;

            if (parentSiteName == "")
            {
                return(null);
            }

            var parentSite = sites.GetSites().Where(p => p.Name == parentSiteName).FirstOrDefault();

            return(parentSite);
        }
示例#11
0
        public void CMD_site(Resource rsc, Arguments args)
        {
            MultisiteManager siteMgr = MultisiteManager.GetManager();

            if (args.Count > 0)
            {
                try
                {
                    siteId = new Guid(args.FirstKey);
                    var site = siteMgr.GetSites().Where(s => s.SiteMapRootNodeId == siteId);
                    Set_Site(siteId);
                    rsc.Root();
                }
                catch (Exception)
                {
                    Set_Error("Invalid site Id: " + args);
                }
            }

            output.response = string.Join(
                "\n",
                siteMgr.GetSites().Select <Telerik.Sitefinity.Multisite.Model.Site, string>(s => s.SiteMapRootNodeId + " - " + s.Name + (siteId == s.SiteMapRootNodeId ? " <=" : "")));
        }
        /// <summary>
        /// Gets all sites that are a sibling or child of 'site'
        /// </summary>
        /// <param name="siteName">The site name</param>
        /// <param name="myParentSiteName">The parent site</param>
        /// <returns></returns>
        public JsonResult GetSitesWithParam(string siteName, string myParentSiteName)
        {
            var pageManager = PageManager.GetManager();
            var sites = new MultisiteManager();

            var allSites = sites.GetSites();
            var dropDownSites = new List<SitefinitySite>();
            var i = 0;

            foreach(var sitee in allSites)
            {
                var helper = new WidgetDesigners.WidgetDesignerHelper();
                var parentSite = helper.GetParentSite(pageManager, sitee.SiteMapRootNodeId);

                var parentSiteName = "";

                if (parentSite != null)
                    parentSiteName = parentSite.Name;

                if(parentSiteName == siteName || (parentSiteName == myParentSiteName && sitee.Name != siteName))
                {
                    dropDownSites.Add(new SitefinitySite(sitee.Id, sitee.Name, siteName, sitee.SiteMapRootNodeId));
                    i++;
                }
            }

            return Json(dropDownSites, JsonRequestBehavior.AllowGet);
        }
示例#13
0
        /// <summary>
        /// Returns the view with the model populated with pages
        /// </summary>
        public ActionResult Index()
        {
            var model = new PageCompareWidgetModel();

            model.Pages = new List <SitefinityPage>();
            model.Sites = new List <SitefinitySite>();

            var pageManager = PageManager.GetManager();

            var sites = new MultisiteManager();

            var allSites = sites.GetSites();

            Site standardSite = null;

            foreach (var site in sites.GetSites())
            {
                if (allSites.ToList().IndexOf(site) == 0)
                {
                    standardSite = site;
                }
            }

            int pageIndex = 1;

            foreach (var p in pageManager.GetPageDataList())
            {
                //if (p.NavigationNode.Title.Value.ToLower() == "test" && p.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live)
                //{
                //    CultureInfo targetCultureInfo = CultureInfo.GetCultureInfo("es");

                //    // Set values for PageNode properties
                //    p.NavigationNode.Title.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.NavigationNode.Description.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.NavigationNode.UrlName.SetString(targetCultureInfo, p.NavigationNode.Title.Value);

                //    if (p.NavigationNode.LocalizationStrategy != LocalizationStrategy.Synced)
                //    {
                //        // Set the pageNode LocalizationStrategy for the first method call
                //        pageManager.InitializePageLocalizationStrategy(p.NavigationNode, LocalizationStrategy.Synced, false);
                //    }


                //    // Set values for PageData properties
                //    p.HtmlTitle.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.Description.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.Keywords.SetString(targetCultureInfo, p.NavigationNode.Title.Value);

                //    // Publish the page
                //    p.NavigationNode.ApprovalWorkflowState.SetString(targetCultureInfo, "Published");
                //    pageManager.SaveChanges();
                //    break;
                //}

                if (p.NavigationNode.ParentId == standardSite.SiteMapRootNodeId &&
                    !p.IsDeleted &&
                    p.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live &&
                    p.Controls != null &&
                    p.Controls.Count > 0 &&
                    p.Controls[0].Properties != null &&
                    p.Controls[0].Properties.Count > 0 &&
                    p.Controls[0].Properties.FirstOrDefault(r => r.Name == "Settings") != null)
                {
                    model.Pages.Add(new SitefinityPage(pageIndex++, p.NavigationNode.Title.GetString(p.NavigationNode.AvailableCultures[0], false)));
                }
            }

            return(View("Default", model));
        }
        /// <summary>
        /// Returns the view with the model populated with pages
        /// </summary>        
        public ActionResult Index()
        {
            var model = new PageCompareWidgetModel();
            model.Pages = new List<SitefinityPage>();
            model.Sites = new List<SitefinitySite>();

            var pageManager = PageManager.GetManager();

            var sites = new MultisiteManager();

            var allSites = sites.GetSites();

            Site standardSite = null;

            foreach (var site in sites.GetSites())
            {
                if(allSites.ToList().IndexOf(site) == 0)
                    standardSite = site;
            }

            int pageIndex = 1;
            foreach(var p in pageManager.GetPageDataList())
            {
                //if (p.NavigationNode.Title.Value.ToLower() == "test" && p.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live)
                //{
                //    CultureInfo targetCultureInfo = CultureInfo.GetCultureInfo("es");

                //    // Set values for PageNode properties
                //    p.NavigationNode.Title.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.NavigationNode.Description.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.NavigationNode.UrlName.SetString(targetCultureInfo, p.NavigationNode.Title.Value);

                //    if (p.NavigationNode.LocalizationStrategy != LocalizationStrategy.Synced)
                //    {
                //        // Set the pageNode LocalizationStrategy for the first method call
                //        pageManager.InitializePageLocalizationStrategy(p.NavigationNode, LocalizationStrategy.Synced, false);
                //    }

                //    // Set values for PageData properties
                //    p.HtmlTitle.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.Description.SetString(targetCultureInfo, p.NavigationNode.Title.Value);
                //    p.Keywords.SetString(targetCultureInfo, p.NavigationNode.Title.Value);

                //    // Publish the page
                //    p.NavigationNode.ApprovalWorkflowState.SetString(targetCultureInfo, "Published");
                //    pageManager.SaveChanges();
                //    break;
                //}

                if(p.NavigationNode.ParentId == standardSite.SiteMapRootNodeId
                    && !p.IsDeleted
                    && p.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live
                    && p.Controls != null
                    && p.Controls.Count > 0
                    && p.Controls[0].Properties != null
                    && p.Controls[0].Properties.Count > 0
                    && p.Controls[0].Properties.FirstOrDefault(r => r.Name == "Settings") != null)
                {
                    model.Pages.Add(new SitefinityPage(pageIndex++, p.NavigationNode.Title.GetString(p.NavigationNode.AvailableCultures[0], false)));
                }
            }

            return View("Default", model);
        }
示例#15
0
        private void PageManager_Executed(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
        {
            if(e.CommandName == "CreatePageNode")
            {
                pageCreated = true;
            }
            else if (e.CommandName == "GetPageNode" && pageCreated && !skippedFirstGetPageNode)
            {
                skippedFirstGetPageNode = true;
            }
            else if(pageCreated && skippedFirstGetPageNode && e.CommandName == "GetPageNode")
            {
                pageCreated = false;
                skippedFirstGetPageNode = false;
                //var provider = sender as PageDataProvider;
                var pageManager = PageManager.GetManager();
                //var nodes = pageManager.GetPageNodes();
                var pNode = (Telerik.Sitefinity.Pages.Model.PageNode)e.Data;

                var p = pNode.GetPageData();

                var allSites = new MultisiteManager();

                var thisSite = allSites.GetSites().FirstOrDefault(s => s.SiteMapRootNodeId == new Guid(System.Web.SiteMap.RootNode.Key));

                var childSites = GetChildSites(thisSite.Name);

                foreach (var p2 in pageManager.GetPageDataList())
                {
                    if (p2.NavigationNode.Title.GetString(p2.NavigationNode.AvailableCultures[0], false) == p.NavigationNode.Title.GetString(p.NavigationNode.AvailableCultures[0], false)
                            && !p.NavigationNode.IsDeleted
                            && p2.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live)
                    {
                        if (childSites.Any(s => s.SiteMapRootNodeId == p2.NavigationNode.ParentId))
                        {
                            System.Globalization.CultureInfo targetCultureInfo = System.Globalization.CultureInfo.GetCultureInfo("es");

                            // Set values for PageNode properties
                            p2.NavigationNode.Title.SetString(targetCultureInfo, "test");
                            p2.NavigationNode.Description.SetString(targetCultureInfo, "test");
                            p2.NavigationNode.UrlName.SetString(targetCultureInfo, "test");

                            if (p2.NavigationNode.LocalizationStrategy != Telerik.Sitefinity.Localization.LocalizationStrategy.Synced)
                            {
                                // Set the pageNode LocalizationStrategy for the first method call
                                pageManager.InitializePageLocalizationStrategy(p2.NavigationNode, Telerik.Sitefinity.Localization.LocalizationStrategy.Synced, false);
                            }

                            // Set values for PageData properties
                            p2.HtmlTitle.SetString(targetCultureInfo, "test");
                            p2.Description.SetString(targetCultureInfo, "test");
                            p2.Keywords.SetString(targetCultureInfo, "test");

                            // Publish the page
                            p2.NavigationNode.ApprovalWorkflowState.SetString(targetCultureInfo, "Published");
                            pageManager.SaveChanges();

                        }
                    }
                }
            }
        }
示例#16
0
        public override void CMD_list(Arguments args, Guid rootId)
        {
            MultisiteManager siteMgr = MultisiteManager.GetManager();

            summary = string.Join("\n", siteMgr.GetSites().Select <Site, string>(s => s.Id + " - " + s.Name));
        }
示例#17
0
        public override void CMD_republish(Arguments args)
        {
            if (args.Count < 2)
            {
                CMD_help();
                return;
            }

            MultisiteManager siteMgr     = MultisiteManager.GetManager();
            Guid             siteId      = Guid.Empty;
            string           contentType = "";

            foreach (string arg in args.Keys)
            {
                try
                {
                    siteId = new Guid(arg);
                }
                catch (Exception)
                {
                    contentType = arg;
                }
            }

            if (siteId == Guid.Empty)
            {
                svc.Set_Error("Invalid Site ID");
                CMD_help();
                return;
            }

            try
            {
                site = siteMgr.GetSite(siteId);
            }
            catch (Exception)
            {
                svc.Set_Error("Invalid Site ID: " + siteId.ToString());
                return;
            }

            switch (contentType)
            {
            case "templates":
                RepublishPageTemplates();
                return;

            case "pages":
                RepublishPages();
                return;

            case "news":
                RepublishNewsItems();
                return;

            case "blogs":
                RepublishBlogPosts();
                return;

            case "events":
                RepublishEvents();
                return;

            case "media":
                RepublishMedia();
                return;

            case "lists":
                RepublishLists();
                return;

            case "forms":
                RepublishForms();
                return;

            case "contentblocks":
                RepublishContentBlocks();
                return;

            case "taxa":
                RepublishTaxonomies();
                return;

            case "dynamic":
                RepublishDynamicContent();
                return;

            case "all":
                RepublishPageTemplates();
                RepublishPages();
                RepublishNewsItems();
                RepublishBlogPosts();
                RepublishEvents();
                RepublishMedia();
                RepublishLists();
                RepublishForms();
                RepublishContentBlocks();
                RepublishTaxonomies();
                RepublishDynamicContent();
                return;
            }

            svc.Set_Error("Please set a content type to republish");
            CMD_help();
        }
示例#18
0
        private void PageManager_Executed(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
        {
            if (e.CommandName == "CreatePageNode")
            {
                pageCreated = true;
            }
            else if (e.CommandName == "GetPageNode" && pageCreated && !skippedFirstGetPageNode)
            {
                skippedFirstGetPageNode = true;
            }
            else if (pageCreated && skippedFirstGetPageNode && e.CommandName == "GetPageNode")
            {
                pageCreated             = false;
                skippedFirstGetPageNode = false;
                //var provider = sender as PageDataProvider;
                var pageManager = PageManager.GetManager();
                //var nodes = pageManager.GetPageNodes();
                var pNode = (Telerik.Sitefinity.Pages.Model.PageNode)e.Data;

                var p = pNode.GetPageData();

                var allSites = new MultisiteManager();

                var thisSite = allSites.GetSites().FirstOrDefault(s => s.SiteMapRootNodeId == new Guid(System.Web.SiteMap.RootNode.Key));

                var childSites = GetChildSites(thisSite.Name);

                foreach (var p2 in pageManager.GetPageDataList())
                {
                    if (p2.NavigationNode.Title.GetString(p2.NavigationNode.AvailableCultures[0], false) == p.NavigationNode.Title.GetString(p.NavigationNode.AvailableCultures[0], false) &&
                        !p.NavigationNode.IsDeleted &&
                        p2.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live)
                    {
                        if (childSites.Any(s => s.SiteMapRootNodeId == p2.NavigationNode.ParentId))
                        {
                            System.Globalization.CultureInfo targetCultureInfo = System.Globalization.CultureInfo.GetCultureInfo("es");

                            // Set values for PageNode properties
                            p2.NavigationNode.Title.SetString(targetCultureInfo, "test");
                            p2.NavigationNode.Description.SetString(targetCultureInfo, "test");
                            p2.NavigationNode.UrlName.SetString(targetCultureInfo, "test");

                            if (p2.NavigationNode.LocalizationStrategy != Telerik.Sitefinity.Localization.LocalizationStrategy.Synced)
                            {
                                // Set the pageNode LocalizationStrategy for the first method call
                                pageManager.InitializePageLocalizationStrategy(p2.NavigationNode, Telerik.Sitefinity.Localization.LocalizationStrategy.Synced, false);
                            }

                            // Set values for PageData properties
                            p2.HtmlTitle.SetString(targetCultureInfo, "test");
                            p2.Description.SetString(targetCultureInfo, "test");
                            p2.Keywords.SetString(targetCultureInfo, "test");

                            // Publish the page
                            p2.NavigationNode.ApprovalWorkflowState.SetString(targetCultureInfo, "Published");
                            pageManager.SaveChanges();
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Gets the parent site of the current page by using the ParentName property of the Config page
        /// </summary>
        /// <param name="pageManager">The page manager</param>
        /// <returns>The parent site</returns>
        public Site GetParentSite(PageManager pageManager, Guid siteRootNode)
        {
            var sites = new MultisiteManager();

            var configPage = new PageData();

            foreach(var f in pageManager.GetPageDataList())
            {
                if(f.NavigationNode.Title.GetString(f.NavigationNode.AvailableCultures[0], false).ToLower() == "config"
                    && !f.NavigationNode.IsDeleted
                    && f.NavigationNode.ParentId == siteRootNode)
                {
                    configPage = f;
                    break;
                }
            }

            if (configPage == null)
                return null;

            var parentName = configPage.Controls[0].Properties.FirstOrDefault(r => r.Name == "Settings").ChildProperties.FirstOrDefault(p => p.Name.ToLower() == "parentname");

            if (parentName == null)
                return null;

            var parentSiteName = parentName.Value;

            if (parentSiteName == "")
                return null;

            var parentSite = sites.GetSites().Where(p => p.Name == parentSiteName).FirstOrDefault();

            return parentSite;
        }
        /// <summary>
        /// Gets all sites that have a parent site or a sibling site
        /// </summary>
        /// <returns></returns>
        public JsonResult GetSites()
        {
            var pageManager = PageManager.GetManager();

            var sites = new MultisiteManager();

            var allSites = sites.GetSites();
            var dropDownSites = new List<SitefinitySite>();

            foreach (var site in sites.GetSites())
            {
                var helper = new WidgetDesigners.WidgetDesignerHelper();
                var parentSite = helper.GetParentSite(pageManager, site.SiteMapRootNodeId);

                var parentSiteName = "";

                if (parentSite != null)
                    parentSiteName = parentSite.Name;

                if (((List<SitefinitySite>)GetSitesWithParam(site.Name, parentSiteName).Data).Count != 0)
                    dropDownSites.Add(new SitefinitySite(site.Id, site.Name, parentSiteName, site.SiteMapRootNodeId));
            }

            return Json(dropDownSites, JsonRequestBehavior.AllowGet);
        }