Beispiel #1
0
        public ConvertResponse Convert(RenderContext context, JObject result)
        {
            var page   = context.GetItem <Page>();
            var sitedb = context.WebSite.SiteDb();

            string menuname = Lib.Helper.JsonHelper.GetString(result, "name");

            menuname = GetMenuName(sitedb, menuname);
            var data = Lib.Helper.JsonHelper.GetObject(result, "Data");

            //var newmenu = Newtonsoft.Json.JsonConvert.DeserializeObject<Menu>(data.ToString());
            var newmenu = Lib.Helper.JsonHelper.Deserialize <Menu>(data.ToString());

            newmenu.Name = menuname;
            newmenu.Id   = default(Guid);

            EnSureParentId(newmenu);

            string koobooid = Lib.Helper.JsonHelper.GetString(result, "KoobooId");

            if (string.IsNullOrEmpty(koobooid))
            {
                koobooid = DetectKoobooId(page.Dom, newmenu);
            }
            if (string.IsNullOrEmpty(koobooid))
            {
                return(null);
            }

            var response = new ConvertResponse
            {
                IsSuccess         = true,
                ComponentNameOrId = menuname,
                Tag      = "<menu id='" + menuname + "'></menu>",
                KoobooId = koobooid
            };

            if (page == null)
            {
                sitedb.Menus.AddOrUpdate(newmenu);
                return(response);
            }

            if (sitedb.WebSite.ContinueConvert)
            {
                var DomNode    = DomService.GetElementByKoobooId(page.Dom, koobooid);
                var DomElement = DomNode as Kooboo.Dom.Element;
                if (DomElement != null)
                {
                    var elementpaths = Kooboo.Sites.Service.DomService.GetElementPath(DomElement as Kooboo.Dom.Element);

                    sitedb.ContinueConverter.AddConverter(this.Type, page.Id, response.Tag, response.ComponentNameOrId, koobooid, elementpaths, DomElement.tagName);
                    // var OtherPages = sitedb.Pages.All().Where(o => o.Id != page.Id && !o.HasLayout).ToList();
                    //foreach (var item in OtherPages)
                    //{
                    //    ContinueConvert(sitedb, page.Id, response.Tag, koobooid, item, null, DomElement.ParentPathHash, newmenu);
                    //}
                }
            }

            sitedb.Menus.AddOrUpdate(newmenu);

            // if (!sitedb.WebSite.ContinueConvert)
            // {
            //    sitedb.WebSite.ContinueConvert = true;
            //     Kooboo.Data.GlobalDb.WebSites.AddOrUpdate(sitedb.WebSite);
            // }

            return(response);
        }