public JsonResult GetTreeModule(string result, int pageId)
        {
            List<PageItem> pages = new PagesDB().GetPagesFlat(this.PortalSettings.PortalID);
            var page = pages.First(p => p.ID == pageId);

            JsTreeModel[] child = getChildrenTree(page);
            List<JsTreeModel> child2 = new List<JsTreeModel>();
            var panelist = result.Split('+').ToList();
            var panetopage = ModelServices.GetPageModules(pageId);
            var lowerpane = panelist.ConvertAll(d => d.ToLower());
            var i = 0;
            foreach (var pane in panelist)
            {
                JsTreeModel[] childm = getModuleToPane(pane, pageId);
                JsTreeModel nodem = new JsTreeModel
                    {
                        data = pane,
                        attr = new JsTreeAttribute {id = "pjson_pane_" + i, rel= "folder"},
                        children = childm
                    };
                child2.Add(nodem);
                i++;
            }
            // add other pane.
            foreach (var pane in panetopage)
            {
                if (!lowerpane.Contains(pane.Key))
                {
                    JsTreeModel[] childm = getModuleToPane(pane.Key, pageId);
                    JsTreeModel nodem = new JsTreeModel
                    {
                        data = pane.Key + "  [Not present in current layout]",
                        attr = new JsTreeAttribute { id = "pjson_pane_" + i, rel = "folder2" },
                        children = childm
                    };
                    child2.Add(nodem);
                    i++;
                }
                    panelist.Add(pane.Key);
            }
            var childlist = child.ToList();
            foreach (var childmod in child2)
            {
                childlist.Add(childmod);
            }
            child = childlist.ToArray<JsTreeModel>();
            return Json(child);
        }
        public JsTreeModel[] getModuleToPane(string paneName, int pageId)
        {
            var pageModulesByPlaceHolder = ModelServices.GetModulesToPage(pageId);
            var result = new List<JsTreeModel>();
            var modulelist = pageModulesByPlaceHolder.Where(m => m.PaneName.ToLower() == paneName.ToLower());
            int i = 0;
            foreach (var module in modulelist)
            {
                JsTreeModel node = new JsTreeModel
                {
                    data = module.ModuleTitle,
                    attr = new JsTreeAttribute { id = "pjson_module_" + module.ModuleID, rel = "file" },
                };
                i++;
                result.Add(node);
            }

            return result.ToArray<JsTreeModel>();
        }
        public JsonResult GetTreeData()
        {
            List<PageItem> pages = new PagesDB().GetPagesFlat(this.PortalSettings.PortalID);
            List<JsTreeModel> lstTree = new List<JsTreeModel>();
            foreach (PageItem page in pages)
            {
                if (page.NestLevel == 0)
                {
                    //JsTreeModel[] child = getChildrenTree(page);
                    JsTreeModel node = new JsTreeModel {
                                                    data = page.Name,
                                                    attr = new JsTreeAttribute { id = "pjson_" + page.ID.ToString()},
                                                    //children = child,
                                                    state = "closed"};
                    lstTree.Add(node);
                }
            }
            int root = 0;
            JsTreeModel rootNode = new JsTreeModel
            {
                data = "Root",
                attr = new JsTreeAttribute { id = "pjson_" + root.ToString(), rel = "root"},
                children = lstTree.ToArray<JsTreeModel>(),
            };

            return Json(rootNode);
        }
        public JsTreeModel[] getChildrenTree(PageItem page)
        {
            List<PageStripDetails> childPages = new PagesDB().GetPagesinPage(this.PortalSettings.PortalID, page.ID);
            int count = 0;
            List<JsTreeModel> lstTree = new List<JsTreeModel>();

            foreach (PageStripDetails childPage in childPages)
            {
                PageItem aux = new PageItem ();
                aux.ID = childPage.PageID;
                aux.Name = childPage.PageName;

                //JsTreeModel[] childs = getChildrenTree(aux);
                JsTreeModel node = new JsTreeModel
                {
                    data = aux.Name,
                    attr = new JsTreeAttribute { id = "pjson_" + aux.ID.ToString()},
                    //children = childs,
                    state = "closed"
                };

                lstTree.Add(node);
                count++;
            }
            JsTreeModel[] tree = lstTree.ToArray<JsTreeModel>();

            return tree;
        }