コード例 #1
0
ファイル: PageService.cs プロジェクト: yy1987/ZKEACMS.Core
        public override void Remove(Expression <Func <PageEntity, bool> > filter)
        {
            BeginTransaction(() =>
            {
                var deletePages = Get(filter).ToList();
                if (deletePages.Any())
                {
                    List <PageEntity> allPages = new List <PageEntity>();
                    foreach (var item in deletePages)
                    {
                        allPages.AddRange(LoadChildren(item));
                    }
                    allPages.AddRange(deletePages);
                    var allPageIds = allPages.Select(n => n.ID).ToArray();
                    allPages.AddRange(Get(m => allPageIds.Contains(m.ReferencePageID)));
                    allPageIds  = allPages.Select(n => n.ID).ToArray();
                    var widgets = _widgetService.Get(m => allPageIds.Contains(m.PageID));
                    widgets.Each(m =>
                    {
                        using (var widgetService = _widgetActivator.Create(m))
                        {
                            widgetService.IsNeedNotifyChange = false;
                            widgetService.DeleteWidget(m.ID);
                        }
                    });

                    _layoutHtmlService.Remove(m => allPageIds.Contains(m.PageId));
                    _zoneService.Remove(m => allPageIds.Contains(m.PageId));

                    allPages.Each(p => _widgetService.RemoveCache(p.ID));

                    base.RemoveRange(allPages.ToArray());
                }
            });
        }
コード例 #2
0
        public ActionResult Create(QueryContext context)
        {
            WidgetBase        widget           = null;
            IWidgetPartDriver widgetPartDriver = null;

            if (context.WidgetTemplateID.IsNotNullAndWhiteSpace())
            {
                var template = _widgetTemplateService.Get(context.WidgetTemplateID);
                widget = template.ToWidget(HttpContext.RequestServices);
            }
            else if (context.WidgetID.IsNotNullAndWhiteSpace())
            {
                var widgetBasePart = _widgetService.Get(context.WidgetID);
                widgetPartDriver  = _widgetActivator.Create(widgetBasePart);
                widget            = widgetPartDriver.GetWidget(widgetBasePart.ToWidgetBase());
                widget.IsTemplate = false;
                widget.IsSystem   = false;
                widget.Thumbnail  = null;
                widget.RuleID     = null;
            }
            if (widget == null)
            {
                return(BadRequest());
            }

            widget.PageID   = context.PageID;
            widget.LayoutID = context.LayoutID;
            widget.ZoneID   = context.ZoneID;
            widget.RuleID   = context.RuleID;
            if (widget.PageID.IsNotNullAndWhiteSpace())
            {
                widget.Position = _widgetService.GetAllByPage(_pageService.Get(context.PageID)).Count(m => m.ZoneID == context.ZoneID) + 1;
            }
            else if (context.LayoutID.IsNotNullAndWhiteSpace())
            {
                widget.Position = _widgetService.GetByLayoutId(context.LayoutID).Count(m => m.ZoneID == context.ZoneID) + 1;
            }
            SetDataSource(widget);
            ViewBag.ReturnUrl = context.ReturnUrl;
            if (widgetPartDriver != null)
            {
                widgetPartDriver.AddWidget(widget);
                return(RedirectToAction("Edit", new { ID = widget.ID, ReturnUrl = context.ReturnUrl }));
            }

            if (widget.FormView.IsNotNullAndWhiteSpace())
            {
                return(View(widget.FormView, widget));
            }

            return(View(widget));
        }
コード例 #3
0
ファイル: PageService.cs プロジェクト: yxlbyc/ZKEACMS.Core
        public override void Remove(PageEntity item)
        {
            Remove(m => m.ParentId == item.ID);
            var widgets = _widgetService.Get(m => m.PageID == item.ID);

            widgets.Each(m =>
            {
                using (var widgetService = m.CreateServiceInstance(ApplicationContext.ServiceLocator))
                {
                    widgetService.DeleteWidget(m.ID);
                }
            });
            if (item.PublishDate.HasValue)
            {
                Remove(m => m.ReferencePageID == item.ID);
            }
            _dataArchivedService.Remove(CacheTrigger.PageWidgetsArchivedKey.FormatWith(item.ID));
            base.Remove(item);
        }
コード例 #4
0
        public ActionResult Edit(string ID, string ReturnUrl)
        {
            var widgetBase = _widgetService.Get(ID);
            var widget     = _widgetActivator.Create(widgetBase).GetWidget(widgetBase);

            SetDataSource(widget);
            ViewBag.ReturnUrl = ReturnUrl;

            if (widget.FormView.IsNotNullAndWhiteSpace())
            {
                return(View(widget.FormView, widget));
            }
            return(View(widget));
        }
コード例 #5
0
        public ActionResult SelectWidget(QueryContext context)
        {
            var viewModel = new WidgetTemplateViewModel
            {
                PageID              = context.PageID,
                LayoutID            = context.LayoutID,
                ZoneID              = context.ZoneID,
                RuleID              = context.RuleID,
                ReturnUrl           = context.ReturnUrl,
                CanPasteWidget      = context.ZoneID.IsNotNullAndWhiteSpace() && _cookie.GetValue <string>(Const.CopyWidgetCookie).IsNotNullAndWhiteSpace(),
                WidgetTemplates     = _widgetTemplateService.Get().OrderBy(m => m.Order).ToList(),
                PredefinedTemplates = _widgetBasePartService.Get(m => m.IsTemplate == true).ToList()
            };

            return(View(viewModel));
        }
コード例 #6
0
        public ActionResult Edit(string ID, string ReturnUrl)
        {
            var widgetBase = _widgetService.Get(ID);
            var widget     = _widgetActivator.Create(widgetBase).GetWidget(widgetBase);

            ViewBag.ReturnUrl = ReturnUrl;

            var template = _widgetTemplateService.Get(
                m =>
                m.PartialView == widget.PartialView && m.AssemblyName == widget.AssemblyName &&
                m.ServiceTypeName == widget.ServiceTypeName && m.ViewModelTypeName == widget.ViewModelTypeName).FirstOrDefault();

            if (template != null)
            {
                ViewBag.WidgetTemplateName = template.Title;
            }
            if (widget.FormView.IsNotNullAndWhiteSpace())
            {
                return(View(widget.FormView, widget));
            }
            return(View(widget));
        }
コード例 #7
0
        public override void Remove(Expression <Func <PageEntity, bool> > filter)
        {
            var deletes = Get(filter).ToList(m => m.ID);

            if (deletes.Any())
            {
                Remove(m => deletes.Any(d => d == m.ParentId));
                Remove(m => deletes.Any(d => d == m.ReferencePageID));

                var widgets = _widgetService.Get(m => deletes.Any(n => n == m.PageID)).ToList();
                widgets.Each(m =>
                {
                    using (var widgetService = _widgetActivator.Create(m))
                    {
                        widgetService.DeleteWidget(m.ID);
                    }
                });

                deletes.Each(p => _widgetService.RemoveCache(p));

                base.Remove(filter);
            }
        }
コード例 #8
0
ファイル: LayoutService.cs プロジェクト: hui6xin/ZKEACMS
        public override void Remove(LayoutEntity item)
        {
            var changeTo = Get().Where(m => m.ID != item.ID).FirstOrDefault();

            if (changeTo != null)
            {
                BeginTransaction(() =>
                {
                    _layoutHtmlService.Remove(m => m.LayoutId == item.ID && m.PageId == null);
                    _zoneService.Remove(m => m.LayoutId == item.ID && m.PageId == null);
                    var widgets = _widgetService.Get(m => m.LayoutID == item.ID);
                    widgets.Each(m =>
                    {
                        using (var widgetService = _widgetActivator.Create(m))
                        {
                            widgetService.DeleteWidget(m.ID);
                        }
                    });

                    base.Remove(item);
                });
            }
        }
コード例 #9
0
        public IEnumerable <SiteUrl> Get()
        {
            HashSet <string> distinct = new HashSet <string>();
            var widgetIds             = _sitemapDbContext.ArticleDetailWidget.ToList().Select(m => m.ID).ToArray();

            widgetIds = widgetIds.Concat(_sitemapDbContext.ProductDetailWidget.ToList().Select(m => m.ID)).ToArray();
            var pageIds = _widgetBasePartService.Get(m => widgetIds.Contains(m.ID)).Select(m => m.PageID);
            var pages   = _pageService.Get().Where(m => !pageIds.Contains(m.ID) && m.IsPublishedPage).OrderBy(m => m.ReferencePageID).ThenByDescending(m => m.PublishDate).ToList();

            foreach (var page in pages)
            {
                if (page.Url.IsNotNullAndWhiteSpace() && !distinct.Contains(page.ReferencePageID))
                {
                    distinct.Add(page.ReferencePageID);
                    yield return(new SiteUrl
                    {
                        Url = Helper.Url.ToAbsolutePath(page.Url),
                        ModifyDate = page.PublishDate ?? DateTime.Now,
                        Changefreq = "daily",
                        Priority = 0.5F
                    });
                }
            }
        }
コード例 #10
0
        public override void Remove(Expression <Func <PageEntity, bool> > filter)
        {
            var deletes = Get(filter).Select(m => m.ID);

            if (deletes.Any())
            {
                Remove(m => deletes.Contains(m.ParentId));
                Remove(m => deletes.Contains(m.ReferencePageID));

                var widgets = _widgetService.Get(m => deletes.Contains(m.PageID));
                widgets.Each(m =>
                {
                    using (var widgetService = _widgetActivator.Create(m))
                    {
                        widgetService.IsNeedNotifyChange = false;
                        widgetService.DeleteWidget(m.ID);
                    }
                });

                deletes.Each(p => _widgetService.RemoveCache(p));

                base.Remove(filter);
            }
        }
コード例 #11
0
        public override void Remove(Rule item)
        {
            _widgetBasePartService.Get(m => m.RuleID == item.RuleID).Each(widget => { _widgetActivator.Create(widget).DeleteWidget(widget.ID); });

            base.Remove(item);
        }
コード例 #12
0
 public IActionResult RuleWidgets(int Id)
 {
     ViewBag.RuleID = Id;
     return(PartialView("RuleWidgets", _widgetBasePartService.Get(m => m.RuleID == Id)));
 }