Exemple #1
0
        private void PublishAsNew(PageEntity item)
        {
            if (item.ID.IsNullOrWhiteSpace())
            {
                throw new Exception("Can not publish page while it is new.");
            }

            item.IsPublishedPage = true;
            item.PublishDate     = DateTime.Now;
            var zones       = _zoneService.GetByPage(item);
            var layoutHtmls = _layoutHtmlService.GetByPage(item);
            var widgets     = _widgetService.GetByPageId(item.ID);

            Add(item);
            zones.Each(m =>
            {
                m.PageId = item.ID;
                _zoneService.Add(m);
            });
            layoutHtmls.Each(m =>
            {
                m.PageId = item.ID;
                _layoutHtmlService.Add(m);
            });
            widgets.Each(m =>
            {
                using (var widgetService = _widgetActivator.Create(m))
                {
                    m        = widgetService.GetWidget(m);
                    m.PageID = item.ID;
                    widgetService.Publish(m);
                }
            });
        }
Exemple #2
0
        public void Publish(PageEntity item)
        {
            _eventManager.Trigger(Events.OnPagePublishing, item);
            string pageId = item.ID;

            BeginTransaction(() =>
            {
                item.IsPublish   = true;
                item.PublishDate = DateTime.Now;
                base.Update(item);

                var zones       = _zoneService.GetByPage(item);
                var layoutHtmls = _layoutHtmlService.GetByPage(item);


                item.ReferencePageID = item.ID;
                item.IsPublishedPage = true;
                item.PublishDate     = DateTime.Now;

                var widgets = _widgetService.GetByPageId(item.ID);
                Add(item);
                zones.Each(m =>
                {
                    m.PageId = item.ID;
                    _zoneService.Add(m);
                });
                layoutHtmls.Each(m =>
                {
                    m.PageId = item.ID;
                    _layoutHtmlService.Add(m);
                });
                widgets.Each(m =>
                {
                    using (var widgetService = _widgetActivator.Create(m))
                    {
                        m        = widgetService.GetWidget(m);
                        m.PageID = item.ID;
                        widgetService.IsNeedNotifyChange = false;
                        widgetService.Publish(m);
                    }
                });
            });
            const int keepVersions        = 6;
            var       allPublishedVersion = Get(m => m.ReferencePageID == pageId && m.IsPublishedPage == true).OrderByDescending(m => m.PublishDate).ToList();

            if (allPublishedVersion.Count > keepVersions)
            {
                for (int i = keepVersions; i < allPublishedVersion.Count; i++)
                {
                    DeleteVersion(allPublishedVersion[i].ID);
                }
            }
            _widgetService.RemoveCache(pageId);
            _zoneService.RemoveCache(pageId);
            _layoutHtmlService.RemoveCache(pageId);
            _eventManager.Trigger(Events.OnPagePublished, item);
        }
Exemple #3
0
        public LayoutEntity GetByPage(PageEntity page)
        {
            LayoutEntity baseLayout = _cache.GetOrAdd(page.LayoutId, key =>
            {
                LayoutEntity entry            = base.Get(key);
                DbContext.Attach(entry).State = EntityState.Detached;
                return(entry);
            }) as LayoutEntity;
            LayoutEntity entity = new LayoutEntity
            {
                ID             = baseLayout.ID,
                Style          = baseLayout.Style,
                Script         = baseLayout.Script,
                LayoutName     = baseLayout.LayoutName,
                ContainerClass = baseLayout.ContainerClass
            };
            IEnumerable <ZoneEntity> zones = _zoneService.GetByPage(page);

            entity.Zones = new ZoneCollection();
            zones.Each(entity.Zones.Add);
            IEnumerable <LayoutHtml> htmls = _layoutHtmlService.GetByPage(page);

            entity.Html = new LayoutHtmlCollection();
            htmls.Each(entity.Html.Add);
            return(entity);
        }
        public LayoutEntity GetByPage(PageEntity page)
        {
            LayoutEntity entity = new LayoutEntity {
                ID = page.LayoutId
            };
            IEnumerable <ZoneEntity> zones = _zoneService.GetByPage(page);

            entity.Zones = new ZoneCollection();
            zones.Each(entity.Zones.Add);
            IEnumerable <LayoutHtml> htmls = _layoutHtmlService.GetByPage(page);

            entity.Html = new LayoutHtmlCollection();
            htmls.Each(entity.Html.Add);
            return(entity);
        }
Exemple #5
0
        public LayoutEntity GetByPage(PageEntity page)
        {
            LayoutEntity baseLayout = base.Get(page.LayoutId);
            LayoutEntity entity     = new LayoutEntity
            {
                ID             = baseLayout.ID,
                Style          = baseLayout.Style,
                Script         = baseLayout.Script,
                LayoutName     = baseLayout.LayoutName,
                ContainerClass = baseLayout.ContainerClass
            };
            IEnumerable <ZoneEntity> zones = _zoneService.GetByPage(page);

            entity.Zones = new ZoneCollection();
            zones.Each(entity.Zones.Add);
            IEnumerable <LayoutHtml> htmls = _layoutHtmlService.GetByPage(page);

            entity.Html = new LayoutHtmlCollection();
            htmls.Each(entity.Html.Add);
            return(entity);
        }