public void Should_Return_Widgets_List_Successfully()
        {
            RunActionInTransaction(
                session =>
            {
                ServerControlWidget control1 = TestDataProvider.CreateNewServerControlWidget();
                HtmlContentWidget control2   = TestDataProvider.CreateNewHtmlContentWidget();

                control1.Id   = Guid.NewGuid();
                control1.Name = Guid.NewGuid().ToString().Replace("-", string.Empty);

                session.SaveOrUpdate(control1);
                session.SaveOrUpdate(control2);
                session.Flush();

                var unitOfWork       = new DefaultUnitOfWork(session);
                var repository       = new DefaultRepository(unitOfWork);
                var categoryService  = new Mock <ICategoryService>();
                var cmsConfiguration = new Mock <ICmsConfiguration>().Object;
                var widgetService    = new DefaultWidgetService(repository, unitOfWork, null, null, null, categoryService.Object, cmsConfiguration);
                var command          = new GetSiteSettingsWidgetsCommand(widgetService);

                var response = command.Execute(new WidgetsFilter {
                    SearchQuery = control1.Name.Substring(1, control1.Name.Length - 1)
                });

                Assert.IsNotNull(response);
                Assert.IsNotNull(response.Items);
                Assert.GreaterOrEqual(response.Items.Count(), 1);

                var widget = response.Items.FirstOrDefault(w => control1.Id == w.Id);
                Assert.IsNotNull(widget);
                Assert.AreEqual(control1.Name, widget.WidgetName);
            });
        }
Exemplo n.º 2
0
        private WidgetViewModel CreateWidgetViewModel(Root.Models.Widget widget, Root.Models.Widget draft)
        {
            WidgetViewModel result;

            if (widget is HtmlContentWidget)
            {
                HtmlContentWidget htmlContentWidget = (HtmlContentWidget)widget;
                result = new HtmlContentWidgetViewModel
                {
                    Name            = htmlContentWidget.Name,
                    PageContent     = htmlContentWidget.Html,
                    CustomCSS       = htmlContentWidget.CustomCss,
                    EnableCustomCSS = htmlContentWidget.UseCustomCss,
                    CustomJS        = htmlContentWidget.CustomJs,
                    EnableCustomJS  = htmlContentWidget.UseCustomJs,
                    WidgetType      = WidgetType.HtmlContent
                };
            }
            else if (widget is ServerControlWidget)
            {
                ServerControlWidget serverControlWidget = (ServerControlWidget)widget;
                result = new ServerControlWidgetViewModel
                {
                    Url        = serverControlWidget.Url,
                    WidgetType = WidgetType.ServerControl
                };
            }
            else
            {
                result = new WidgetViewModel
                {
                    WidgetType = null
                };
            }

            result.PreviewImageUrl = widget.PreviewUrl;
            result.Status          = Status(widget, draft);
            result.OriginalId      = widget.Id;
            result.OriginalVersion = widget.Version;

            if (draft != null && !result.Status.Equals(ContentStatus.Published.ToString()))
            {
                result.Name       = draft.Name;
                result.CategoryId = draft.Category != null ? draft.Category.Id : (Guid?)null;
                result.Id         = draft.Id;
                result.Version    = draft.Version;
            }
            else
            {
                result.Name       = widget.Name;
                result.CategoryId = widget.Category != null ? widget.Category.Id : (Guid?)null;
                result.Id         = widget.Id;
                result.Version    = widget.Version;
            }

            return(result);
        }
        private ServerControlWidget GetServerControlWidgetFromRequest(EditServerControlWidgetViewModel request)
        {
            ServerControlWidget widget = new ServerControlWidget();

            widget.Id = request.Id;

            if (request.CategoryId.HasValue && !request.CategoryId.Value.HasDefaultValue())
            {
                widget.Category = Repository.AsProxy <CategoryEntity>(request.CategoryId.Value);
            }
            else
            {
                widget.Category = null;
            }

            widget.Name       = request.Name;
            widget.Url        = request.Url;
            widget.Version    = request.Version;
            widget.PreviewUrl = request.PreviewImageUrl;

            if (request.Options != null)
            {
                widget.ContentOptions = new List <ContentOption>();

                // NOTE: Loading custom options before saving.
                // In other case, when loading custom options from option service, nHibernate updates version number (nHibernate bug)
                var customOptionsIdentifiers = request.Options
                                               .Where(o => o.Type == OptionType.Custom)
                                               .Select(o => o.CustomOption.Identifier)
                                               .Distinct()
                                               .ToArray();
                var customOptions = OptionService.GetCustomOptionsById(customOptionsIdentifiers);

                foreach (var requestContentOption in request.Options)
                {
                    var contentOption = new ContentOption {
                        Content      = widget,
                        Key          = requestContentOption.OptionKey,
                        DefaultValue = OptionService.ClearFixValueForSave(requestContentOption.OptionKey, requestContentOption.Type, requestContentOption.OptionDefaultValue),
                        Type         = requestContentOption.Type,
                        CustomOption = requestContentOption.Type == OptionType.Custom
                                                                ? customOptions.First(o => o.Identifier == requestContentOption.CustomOption.Identifier)
                                                                : null
                    };

                    OptionService.ValidateOptionValue(contentOption);

                    widget.ContentOptions.Add(contentOption);
                }
            }

            return(widget);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates the server control widget.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// Created widget entity
        /// </returns>
        /// <exception cref="CmsApiValidationException"></exception>
        /// <exception cref="CmsApiException"></exception>
        /// <exception cref="BetterCms.Core.Exceptions.Api.CmsApiException"></exception>
        public ServerControlWidget CreateServerControlWidget(CreateServerControlWidgetRequest request)
        {
            ValidateRequest(request);

            try
            {
                UnitOfWork.BeginTransaction();

                var serverWidget = new ServerControlWidget
                {
                    Name       = request.Name,
                    Url        = request.WidgetPath,
                    PreviewUrl = request.PreviewUrl
                };

                if (request.CategoryId.HasValue && !request.CategoryId.Value.HasDefaultValue())
                {
                    serverWidget.Category = Repository.AsProxy <Category>(request.CategoryId.Value);
                }

                var service      = Resolve <IContentService>();
                var widgetToSave = (ServerControlWidget)service.SaveContentWithStatusUpdate(serverWidget, ContentStatus.Published);

                Repository.Save(widgetToSave);

                if (request.Options != null && request.Options.Count > 0)
                {
                    SaveServerWidgetOptions(widgetToSave, request.Options);
                }

                UnitOfWork.Commit();

                // Notify
                Events.OnWidgetCreated(widgetToSave);

                return(widgetToSave);
            }
            catch (CmsApiValidationException inner)
            {
                var message = string.Format("Failed to create server control widget.");
                Logger.Error(message, inner);
                throw;
            }
            catch (Exception inner)
            {
                var message = string.Format("Failed to create server control widget.");
                Logger.Error(message, inner);
                throw new CmsApiException(message, inner);
            }
        }
Exemplo n.º 5
0
        public ServerControlWidget CreateNewServerControlWidget()
        {
            var entity = new ServerControlWidget();

            PopulateBaseFields(entity);

            entity.Category        = CreateNewCategory();
            entity.Name            = ProvideRandomString(MaxLength.Name);
            entity.Url             = ProvideRandomString(MaxLength.Url);
            entity.Status          = ContentStatus.Published;
            entity.Original        = null;
            entity.PublishedByUser = ProvideRandomString(MaxLength.Name);
            entity.PublishedOn     = ProvideRandomDateTime();

            return(entity);
        }
Exemplo n.º 6
0
        private ServerControlWidget GetServerControlWidgetFromRequest(EditServerControlWidgetViewModel request, bool treatNullsAsLists, bool isNew)
        {
            ServerControlWidget widget = new ServerControlWidget();

            widget.Id = request.Id;

            widget.Name       = request.Name;
            widget.Url        = request.Url;
            widget.Version    = request.Version;
            widget.PreviewUrl = request.PreviewImageUrl;

            SetWidgetCategories(request, widget, treatNullsAsLists, isNew);
            SetWidgetOptions(request, widget, treatNullsAsLists, isNew);

            return(widget);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Saves the server widget options.
        /// </summary>
        /// <param name="widget">The widget.</param>
        /// <param name="requestOptions">The request options.</param>
        /// <returns> List of saved widget options </returns>
        private IList <ContentOption> SaveServerWidgetOptions(ServerControlWidget widget, IList <ContentOptionDto> requestOptions)
        {
            var options = new List <ContentOption>();

            if (requestOptions != null && requestOptions.Count > 0)
            {
                foreach (var requestOption in requestOptions)
                {
                    var option = new ContentOption {
                        Key = requestOption.Key, DefaultValue = requestOption.DefaultValue, Type = requestOption.Type, Content = widget
                    };

                    options.Add(option);
                    Repository.Save(option);
                }
            }

            return(options);
        }
Exemplo n.º 8
0
        private ServerControlWidget GetServerControlWidgetFromRequest(EditServerControlWidgetViewModel request)
        {
            ServerControlWidget widget = new ServerControlWidget();

            widget.Id = request.Id;

            if (request.CategoryId.HasValue && !request.CategoryId.Value.HasDefaultValue())
            {
                widget.Category = Repository.AsProxy <CategoryEntity>(request.CategoryId.Value);
            }
            else
            {
                widget.Category = null;
            }

            widget.Name       = request.Name;
            widget.Url        = request.Url;
            widget.Version    = request.Version;
            widget.PreviewUrl = request.PreviewImageUrl;

            if (request.Options != null)
            {
                widget.ContentOptions = new List <ContentOption>();

                foreach (var requestContentOption in request.Options)
                {
                    var contentOption = new ContentOption {
                        Content      = widget,
                        Key          = requestContentOption.OptionKey,
                        DefaultValue = requestContentOption.OptionDefaultValue,
                        Type         = requestContentOption.Type
                    };

                    OptionService.ValidateOptionValue(contentOption);

                    widget.ContentOptions.Add(contentOption);
                }
            }

            return(widget);
        }
Exemplo n.º 9
0
        public ServerControlWidget CreateNewServerControlWidget()
        {
            var entity         = new ServerControlWidget();
            var categoryTree   = CreateNewCategoryTree();
            var widgetCategory = CreateWidgetCategory(entity, CreateNewCategory(categoryTree));

            PopulateBaseFields(entity);
            PopulateBaseFields(widgetCategory);

            entity.Categories = new List <WidgetCategory>()
            {
                widgetCategory
            };
            entity.Name            = ProvideRandomString(MaxLength.Name);
            entity.Url             = ProvideRandomString(MaxLength.Url);
            entity.PreviewUrl      = ProvideRandomString(MaxLength.Url);
            entity.Status          = ContentStatus.Published;
            entity.Original        = null;
            entity.PublishedByUser = ProvideRandomString(MaxLength.Name);
            entity.PublishedOn     = ProvideRandomDateTime();

            return(entity);
        }
Exemplo n.º 10
0
        private ServerControlWidget GetServerControlWidgetFromRequest(EditServerControlWidgetViewModel request, bool treatNullsAsLists, bool isNew)
        {
            ServerControlWidget widget = new ServerControlWidget();

            widget.Id = request.Id;

            if (request.CategoryId.HasValue && !request.CategoryId.Value.HasDefaultValue())
            {
                widget.Category = repository.AsProxy <CategoryEntity>(request.CategoryId.Value);
            }
            else
            {
                widget.Category = null;
            }

            widget.Name       = request.Name;
            widget.Url        = request.Url;
            widget.Version    = request.Version;
            widget.PreviewUrl = request.PreviewImageUrl;

            SetWidgetOptions(request, widget, treatNullsAsLists, isNew);

            return(widget);
        }
        private WidgetViewModel CreateWidgetViewModel(Root.Models.Widget widget, Root.Models.Widget draft)
        {
            WidgetViewModel result;

            if (widget is HtmlContentWidget)
            {
                HtmlContentWidget htmlContentWidget = (HtmlContentWidget)widget;
                result = new HtmlContentWidgetViewModel
                {
                    Name            = htmlContentWidget.Name,
                    PageContent     = htmlContentWidget.Html,
                    CustomCSS       = htmlContentWidget.CustomCss,
                    EnableCustomCSS = htmlContentWidget.UseCustomCss,
                    CustomJS        = htmlContentWidget.CustomJs,
                    EnableCustomJS  = htmlContentWidget.UseCustomJs,
                    WidgetType      = WidgetType.HtmlContent
                };
            }
            else if (widget is ServerControlWidget)
            {
                ServerControlWidget serverControlWidget = (ServerControlWidget)widget;
                result = new ServerControlWidgetViewModel
                {
                    Url        = serverControlWidget.Url,
                    WidgetType = WidgetType.ServerControl
                };
            }
            else
            {
                result = new WidgetViewModel
                {
                    WidgetType = null
                };
            }

            result.PreviewImageUrl = widget.PreviewUrl;
            result.Status          = Status(widget, draft);
            result.OriginalId      = widget.Id;
            result.OriginalVersion = widget.Version;

            if (draft != null && !result.Status.Equals(ContentStatus.Published.ToString()))
            {
                result.Name       = draft.Name;
                result.Categories = draft.Categories != null?draft.Categories.Select(c => new LookupKeyValue()
                {
                    Key   = c.Category.Id.ToLowerInvariantString(),
                    Value = c.Category.Name
                }).ToList() : new List <LookupKeyValue>();

                result.Id      = draft.Id;
                result.Version = draft.Version;
            }
            else
            {
                result.Name       = widget.Name;
                result.Categories = widget.Categories != null?widget.Categories.Select(c => new LookupKeyValue()
                {
                    Key   = c.Category.Id.ToLowerInvariantString(),
                    Value = c.Category.Name
                }).ToList() : new List <LookupKeyValue>();

                result.Id      = widget.Id;
                result.Version = widget.Version;
            }

            return(result);
        }