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