Beispiel #1
0
 private IEnumerable <Page> QueryBySite(Site site)
 {
     return(CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable)
            .Where(it => it.PartitionKey == site.FullName && it.ParentPage == "")
            .ToArray()
            .Select(it => PageEntityHelper.ToPage(it)));
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 public IQueryable <Models.Page> ChildPages(Models.Page parentPage)
 {
     return(CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable)
            .Where(it => it.PartitionKey == parentPage.Site.FullName && it.ParentPage == parentPage.FullName)
            .ToArray()
            .Select(it => PageEntityHelper.ToPage(it))
            .AsQueryable());
 }
Beispiel #4
0
        public Models.Page Get(Models.Page dummy)
        {
            var entity = CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable)
                         .Where(it => it.PartitionKey == dummy.Site.FullName && it.RowKey == dummy.FullName)
                         .FirstOrDefault();

            return(PageEntityHelper.ToPage(entity));
        }
Beispiel #5
0
 private IQueryable <Page> AllPagesNested(Site site)
 {
     return(CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable)
            .Where(it => it.SiteName == site.FullName)
            .ToArray()
            .Select(it => PageEntityHelper.ToPage(it))
            .AsQueryable());
 }
Beispiel #6
0
        public Models.Page GetDefaultPage(Models.Site site)
        {
            var entity = CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable)
                         .Where(it => it.PartitionKey == site.FullName)
                         .Where(it => it.IsDefault == true)
                         .FirstOrDefault();

            return(PageEntityHelper.ToPage(entity));
        }
Beispiel #7
0
        public void RemoveDraft(Models.Page page)
        {
            var serviceContext = CloudTableHelper.GetTableServiceContext();
            var entity         = serviceContext.CreateQuery <PageEntity>(PageDraftTable)
                                 .Where(it => it.PartitionKey == page.Site.FullName && it.RowKey == page.FullName)
                                 .Select(it => PageEntityHelper.ToPage(it)).FirstOrDefault();

            if (entity != null)
            {
                serviceContext.DeleteObject(entity);
                serviceContext.SaveChangesWithRetries();
            }
        }
Beispiel #8
0
        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();
        }
Beispiel #9
0
        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();
        }
Beispiel #10
0
        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));
        }
Beispiel #11
0
        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);
                }
            }
        }