private void deleteComponents(MozaicBootstrapPage page, DBEntities context)
        {
            var componentList = new List <MozaicBootstrapComponent>();
            var allComponents = new List <MozaicBootstrapComponent>();

            foreach (var component in page.Components.Where(c => c.ParentComponent == null))
            {
                componentList.Add(component);
            }

            while (componentList.Count > 0)
            {
                var component = componentList[0];

                allComponents.Add(component);

                if (component.ChildComponents != null && component.ChildComponents.Count > 0)
                {
                    foreach (var child in component.ChildComponents)
                    {
                        componentList.Add(child);
                    }
                }

                context.Entry(component).State = EntityState.Deleted;
                componentList.RemoveAt(0);
            }

            foreach (var component in allComponents)
            {
                page.Components.Remove(component);
            }
            context.SaveChanges();
        }
        public int NewPage(int appId, MozaicBootstrapAjaxPage postData)
        {
            try {
                var context = COREobject.i.Context;
                var app     = context.Applications.Find(appId);
                app.MozaicChangedSinceLastBuild   = true;
                app.TapestryChangedSinceLastBuild = true;

                var newPage = new MozaicBootstrapPage
                {
                    Name      = postData.Name,
                    IsDeleted = false,
                    Version   = VersionEnum.Bootstrap
                };

                int numOrder = 0;
                foreach (var ajaxComponent in postData.Components)
                {
                    newPage.Components.Add(convertAjaxComponentToDbFormat(ajaxComponent, newPage, null, ++numOrder));
                }

                context.Applications.Find(appId).MozaicBootstrapPages.Add(newPage);
                context.SaveChanges();
                return(newPage.Id);
            }
            catch (Exception ex) {
                var errorMessage = $"Mozaic editor: error creating new page (POST api/mozaic-editor/apps/{appId}/pages) " +
                                   $"Exception message: {ex.Message}";
                throw GetHttpInternalServerErrorResponseException(errorMessage);
            }
        }
Пример #3
0
        public void BuildPage(MozaicBootstrapPage page)
        {
            currentPage = page;
 
            Compile();
            Save();
            
        }
        private MozaicBootstrapComponent convertAjaxComponentToDbFormat(MozaicBootstrapAjaxComponent c, MozaicBootstrapPage page, MozaicBootstrapComponent parentComponent, int numOrder)
        {
            var newComponent = new MozaicBootstrapComponent
            {
                ElmId               = c.ElmId,
                Content             = c.Content,
                Tag                 = c.Tag,
                UIC                 = c.UIC,
                Properties          = c.Properties,
                Attributes          = c.Attributes,
                MozaicBootstrapPage = page,
                NumOrder            = numOrder
            };

            if (c.ChildComponents != null && c.ChildComponents.Count > 0)
            {
                int childNumOrder = 0;
                newComponent.ChildComponents = new List <MozaicBootstrapComponent>();
                foreach (var ajaxChildComponent in c.ChildComponents)
                {
                    newComponent.ChildComponents.Add(convertAjaxComponentToDbFormat(ajaxChildComponent, page, newComponent, ++childNumOrder));
                }
            }
            return(newComponent);
        }