Exemplo n.º 1
0
        private static HtmlContentWidget AddHtmlWidget(PagesApiContext pagesApi, string title, string html)
        {
            var name = string.Format("Default Better CMS {0}", title);

            var getRequest = new GetHtmlContentWidgetsRequest(e => e.Name == name);
            var widgets = pagesApi.GetHtmlContentWidgets(getRequest);
            if (widgets.Items.Count > 0)
            {
                return widgets.Items[0];
            }

            var createRequest = new CreateHtmlContentWidgetRequest { Name = name, Html = html };
            return pagesApi.CreateHtmlContentWidget(createRequest);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates the HTML content widget.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// Created widget entity
        /// </returns>
        /// <exception cref="CmsApiException"></exception>
        /// <exception cref="BetterCms.Core.Exceptions.Api.CmsApiException"></exception>
        public HtmlContentWidget CreateHtmlContentWidget(CreateHtmlContentWidgetRequest request)
        {
            ValidateRequest(request);

            try
            {
                UnitOfWork.BeginTransaction();

                var htmlWidget = new HtmlContentWidget
                {
                    Name = request.Name,
                    Html = request.Html,
                    CustomCss = request.Css,
                    CustomJs = request.JavaScript,
                    UseHtml = !string.IsNullOrWhiteSpace(request.Html),
                    UseCustomCss = !string.IsNullOrWhiteSpace(request.Css),
                    UseCustomJs = !string.IsNullOrWhiteSpace(request.JavaScript)
                };

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

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

                Repository.Save(widgetToSave);
                UnitOfWork.Commit();

                // Notify
                Events.OnWidgetCreated(widgetToSave);

                return widgetToSave;
            }
            catch (Exception inner)
            {
                var message = string.Format("Failed to create HTML content widget.");
                Logger.Error(message, inner);
                throw new CmsApiException(message, inner);
            }
        }