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