예제 #1
0
파일: PageProvider.cs 프로젝트: Epitomy/CMS
        private void MovePageRecursively(Models.Site site, string pageFullName, string newParent, TableServiceContext serviceContext)
        {
            var oldPage = Get(new Page(site, pageFullName));
            var entity  = PageEntityHelper.ToPageEntity(oldPage);

            if (!string.IsNullOrEmpty(newParent))
            {
                var newPage = new Page(new Page(site, newParent), oldPage.Name);
                entity.FullName   = newPage.FullName;
                entity.ParentPage = newPage.Parent.FullName;
            }
            else
            {
                entity.FullName   = oldPage.Name;
                entity.ParentPage = "";
            }

            foreach (var item in ChildPages(oldPage))
            {
                MovePageRecursively(site, item.FullName, entity.FullName, serviceContext);
            }

            serviceContext.AddObject(PageTable, entity);
            var oldEntity = PageEntityHelper.ToPageEntity(oldPage);

            serviceContext.AttachTo(PageTable, oldEntity, "*");
            serviceContext.DeleteObject(oldEntity);
        }
예제 #2
0
파일: PageProvider.cs 프로젝트: Epitomy/CMS
        public void SaveAsDraft(Models.Page page)
        {
            var entity         = PageEntityHelper.ToPageEntity(page);
            var serviceContext = CloudTableHelper.GetTableServiceContext();

            if (GetDraft(page) != null)
            {
                serviceContext.AttachTo(PageDraftTable, entity);
                serviceContext.UpdateObject(entity);
            }
            else
            {
                serviceContext.AddObject(PageDraftTable, entity);
            }

            serviceContext.SaveChangesWithRetries();
        }
예제 #3
0
파일: PageProvider.cs 프로젝트: Epitomy/CMS
        private void InsertOrUpdate(Models.Page @new, Models.Page old)
        {
            @new.OnSaving();

            var entity         = PageEntityHelper.ToPageEntity(@new);
            var serviceContext = CloudTableHelper.GetTableServiceContext();

            if (Get(old) == null)
            {
                serviceContext.AddObject(PageTable, entity);
            }
            else
            {
                serviceContext.AttachTo(PageTable, entity, "*");
                serviceContext.UpdateObject(entity);
            }
            serviceContext.SaveChangesWithRetries();
        }
예제 #4
0
파일: PageProvider.cs 프로젝트: Epitomy/CMS
        public Models.Page Copy(Models.Site site, string sourcePageFullName, string newPageFullName)
        {
            var page    = Get(new Page(site, sourcePageFullName));
            var newPage = new Page(site, newPageFullName);
            var entity  = PageEntityHelper.ToPageEntity(page);

            entity.FullName = newPageFullName;
            if (newPage.Parent != null)
            {
                entity.ParentPage = newPage.Parent.FullName;
            }

            var serviceContext = CloudTableHelper.GetTableServiceContext();

            serviceContext.AddObject(PageTable, entity);
            serviceContext.SaveChangesWithRetries();

            return(PageEntityHelper.ToPage(entity));
        }
예제 #5
0
파일: PageProvider.cs 프로젝트: Epitomy/CMS
        private void LocalizeWithChildPages(TableServiceContext serviceContext, Page page, Site targetSite)
        {
            var entity = CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable)
                         .Where(it => it.PartitionKey == targetSite.FullName && it.RowKey == page.FullName)
                         .FirstOrDefault();

            if (entity == null)
            {
                page            = Get(page);
                entity          = PageEntityHelper.ToPageEntity(page);
                entity.SiteName = targetSite.FullName;
                serviceContext.AddObject(PageTable, entity);

                foreach (var item in ChildPages(page))
                {
                    LocalizeWithChildPages(serviceContext, item, targetSite);
                }
            }
        }