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); } }); }
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); }
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); }
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); }