public virtual ActionResult AddWidget(long pageId, long widgetId)
        {
            var  widgetService = ServiceLocator.Current.GetInstance <IWidgetService>();
            Page currentPage   = pageService.Find(pageId);

            if (currentPage != null)
            {
                var curWidget = widgetService.Find(widgetId);

                if (curWidget != null && widgetService.IsWidgetEnable(curWidget) && permissionService.IsAllowed((Int32)PageOperations.Update, this.CorePrincipal(), typeof(Page),
                                                                                                                pageId, IsPageOwner(currentPage), PermissionOperationLevel.Object))
                {
                    ICoreWidget coreWidget =
                        MvcApplication.Widgets.FirstOrDefault(wd => wd.Identifier == curWidget.Identifier);

                    if (coreWidget != null && coreWidget is BaseWidget && permissionService.IsAllowed(((BaseWidget)coreWidget).AddToPageOperationCode,
                                                                                                      this.CorePrincipal(), coreWidget.GetType(), null))
                    {
                        var widget = PageHelper.AddWidgetToPage(pageId, widgetId, this.CorePrincipal(), null);
                        if (widget != null)
                        {
                            permissionService.SetupDefaultRolePermissions(
                                ResourcePermissionsHelper.GetResourceOperations(coreWidget.GetType()),
                                coreWidget.GetType(), widget.Id);
                            if (currentPage.IsTemplate && widget.Widget.IsPlaceHolder)
                            {
                                IEnumerable <Page> pagesFromTemplate = pageService.GetPagesFromTemplate(currentPage);
                                foreach (var pageFromTemplate in pagesFromTemplate)
                                {
                                    var widgetFromTemplate = PageHelper.AddWidgetToPage(pageFromTemplate.Id, widgetId, this.CorePrincipal(), widget.Id);
                                    if (widgetFromTemplate != null)
                                    {
                                        permissionService.SetupDefaultRolePermissions(
                                            ResourcePermissionsHelper.GetResourceOperations(coreWidget.GetType()),
                                            coreWidget.GetType(), widgetFromTemplate.Id);
                                    }
                                }
                            }

                            return(PartialView(MVC.Shared.Views.Widgets.WidgetContentHolder,
                                               WidgetHelper.GetWidgetViewModel(widget)));
                        }
                    }
                    return(null);
                }
            }

            return(null);
        }
Beispiel #2
0
        public virtual ActionResult Create(PageTemplateViewModel model)
        {
            if (ModelState.IsValid)
            {
                var pageTemplate = new Page {
                    IsTemplate = true
                };
                pageTemplate.PageLayout = new PageLayout
                {
                    LayoutTemplate = LayoutHelper.DefaultLayoutTemplate,
                    Page           = pageTemplate
                };

                if (this.CorePrincipal() != null)
                {
                    pageTemplate.User = new User
                    {
                        Id = this.CorePrincipal().PrincipalId
                    };
                }

                pageTemplate = model.MapTo(pageTemplate);

                if (pageService.Save(pageTemplate))
                {
                    permissionService.SetupDefaultRolePermissions(
                        ResourcePermissionsHelper.GetResourceOperations(typeof(PageTemplate)), typeof(PageTemplate), pageTemplate.Id);
                    Success(Translate("Messages.PageTemplateCreated"));

                    return(RedirectToAction(MVC.Admin.PageTemplate.Index()));
                }
            }

            Error(Translate("Messages.ValidationError"));
            return(View("New", model));
        }
        public virtual ActionResult SavePageCommonSettings(PageViewModel model)
        {
            if (ModelState.IsValid)
            {
                var page = new Page();
                if (!permissionService.IsAllowed((Int32)PageOperations.AddNewPages, this.CorePrincipal(), typeof(Page), null))
                {
                    throw new HttpException((int)HttpStatusCode.NotFound, Translate("Messages.NotFound"));
                }

                page.OrderNumber = pageService.GetLastOrderNumber(model.ParentPageId == 0 ? null : model.ParentPageId);
                if (this.CorePrincipal() != null)
                {
                    page.User = new User
                    {
                        Id = this.CorePrincipal().PrincipalId
                    }
                }
                ;
                page = model.MapTo(page);
                if (!model.TemplateId.HasValue)
                {
                    page.PageLayout = new PageLayout
                    {
                        LayoutTemplate = LayoutHelper.DefaultLayoutTemplate,
                        Page           = page
                    };
                }
                if (pageService.Save(page))
                {
                    permissionService.SetupDefaultRolePermissions(
                        ResourcePermissionsHelper.GetResourceOperations(typeof(Page)), typeof(Page), page.Id);
                    if (model.ClonedPageId != null)
                    {
                        var sourcePage = pageService.Find((long)model.ClonedPageId);
                        if (permissionService.IsAllowed((Int32)PageOperations.View, this.CorePrincipal(),
                                                        typeof(Page), sourcePage.Id, IsPageOwner(sourcePage),
                                                        PermissionOperationLevel.Object))
                        {
                            PageHelper.ClonePageSettings(sourcePage, page);
                        }
                    }
                    else if (model.TemplateId.HasValue)
                    {
                        var sourceTemplate = pageService.Find((long)model.TemplateId);
                        if (permissionService.IsAllowed((Int32)PageOperations.View, this.CorePrincipal(),
                                                        typeof(Page), sourceTemplate.Id, IsPageOwner(sourceTemplate),
                                                        PermissionOperationLevel.Object))
                        {
                            PageHelper.ClonePageSettingsFromTemplate(sourceTemplate, page, model.WidgetId);
                        }
                    }

                    TempData["Success"] = true;
                }

                model = model.MapFrom(page);
            }
            else
            {
                Error(Translate("Messages.ValidationError"));
            }

            return(PartialView(MVC.Pages.Views.PageCreateForm, model));
        }