コード例 #1
0
    public Task <bool> EditPageAsync(string blogid, string pageid, string username, string password, Page page, bool publish)
    {
        EnsureUser(username, password);

        return(TryExecuteAsync(async() =>
        {
            if (!Guid.TryParse(pageid, out var id))
            {
                throw new ArgumentException("Invalid ID", nameof(pageid));
            }

            var pageRequest = new EditPageRequest
            {
                Title = page.title,
                HideSidebar = true,
                MetaDescription = string.Empty,
                RawHtmlContent = page.description,
                CssContent = string.Empty,
                IsPublished = publish,
                Slug = ToSlug(page.title)
            };

            await _mediator.Send(new UpdatePageCommand(id, pageRequest));
            return true;
        }));
    }
コード例 #2
0
        private void UpdatePageEntity(EditPageRequest editPageRequest)
        {
            DiaryPage page = _pageRepository.GetPageById(editPageRequest.DiaryId, editPageRequest.PageId);

            page.Title = editPageRequest.Title;
            _diaryModifier.UpdatePage(page);
        }
コード例 #3
0
    public async Task <IActionResult> OnGetAsync(Guid?id)
    {
        if (id is null)
        {
            return(Page());
        }

        var page = await _mediator.Send(new GetPageByIdQuery(id.Value));

        if (page is null)
        {
            return(NotFound());
        }

        PageId = page.Id;

        EditPageRequest = new()
        {
            Title           = page.Title,
            Slug            = page.Slug,
            MetaDescription = page.MetaDescription,
            CssContent      = page.CssContent,
            RawHtmlContent  = page.RawHtmlContent,
            HideSidebar     = page.HideSidebar,
            IsPublished     = page.IsPublished
        };

        return(Page());
    }
}
コード例 #4
0
 public void EditDiaryPage(EditPageRequest editPageRequest)
 {
     UpdatePageEntity(editPageRequest);
     StorePageReviews(editPageRequest.PageId, editPageRequest.NewReviews);
     UpdatePageReviews(editPageRequest.PageId, editPageRequest.UpdatedReviews);
     DeactivatePageReviews(editPageRequest.PageId, editPageRequest.DeletedReviews);
 }
コード例 #5
0
        public IHttpActionResult EditPage(EditPageRequest editPageRequest)
        {
            UserPermissionManager userPermissionManager = new UserPermissionManager();

            if (!userPermissionManager.IsAllowedToEditPage(editPageRequest.DiaryId, HttpContext.Current.GetAuthenticatedUserId()))
            {
                return(Unauthorized());
            }

            PageEditor pageEditor = new PageEditor();

            pageEditor.EditDiaryPage(editPageRequest);
            return(Ok());
        }
コード例 #6
0
        public async Task <IActionResult> CreateOrEdit(PageEditViewModel model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                if (!string.IsNullOrWhiteSpace(model.CssContent))
                {
                    var uglifyTest = Uglify.Css(model.CssContent);
                    if (uglifyTest.HasErrors)
                    {
                        foreach (var err in uglifyTest.Errors)
                        {
                            ModelState.AddModelError(model.CssContent, err.ToString());
                        }
                        return(BadRequest(ModelState));
                    }
                }

                var req = new EditPageRequest(model.Id)
                {
                    HtmlContent     = model.RawHtmlContent,
                    CssContent      = model.CssContent,
                    HideSidebar     = model.HideSidebar,
                    Slug            = model.Slug,
                    MetaDescription = model.MetaDescription,
                    Title           = model.Title,
                    IsPublished     = model.IsPublished
                };

                var uid = model.Id == Guid.Empty ?
                          await _pageService.CreateAsync(req) :
                          await _pageService.UpdateAsync(req);

                _cache.Remove(CacheDivision.Page, req.Slug.ToLower());

                return(Json(new { PageId = uid }));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error Create or Edit CustomPage.");
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return(Json(e.Message));
            }
        }
コード例 #7
0
    public void SetUp()
    {
        _mockRepository = new(MockBehavior.Default);

        _mockBlogCache = _mockRepository.Create <IBlogCache>();
        _mockMediator  = _mockRepository.Create <IMediator>();

        _editPageRequest = new()
        {
            CssContent      = ".fubao { color: #996 }",
            HideSidebar     = true,
            IsPublished     = true,
            MetaDescription = "This is Jack Ma's fubao",
            RawHtmlContent  = "<p>Work 996 and Get into ICU</p>",
            Slug            = FakeData.Slug2,
            Title           = FakeData.Title3
        };
    }
コード例 #8
0
    private async Task <IActionResult> CreateOrEdit(EditPageRequest model, Func <EditPageRequest, Task <Guid> > pageServiceAction)
    {
        if (!string.IsNullOrWhiteSpace(model.CssContent))
        {
            var uglifyTest = Uglify.Css(model.CssContent);
            if (uglifyTest.HasErrors)
            {
                foreach (var err in uglifyTest.Errors)
                {
                    ModelState.AddModelError(model.CssContent, err.ToString());
                }
                return(BadRequest(ModelState.CombineErrorMessages()));
            }
        }

        var uid = await pageServiceAction(model);

        _cache.Remove(CacheDivision.Page, model.Slug.ToLower());
        return(Ok(new { PageId = uid }));
    }
コード例 #9
0
    public Task <string> AddPageAsync(string blogid, string username, string password, Page page, bool publish)
    {
        EnsureUser(username, password);

        return(TryExecuteAsync(async() =>
        {
            var pageRequest = new EditPageRequest
            {
                Title = page.title,
                HideSidebar = true,
                MetaDescription = string.Empty,
                RawHtmlContent = page.description,
                CssContent = string.Empty,
                IsPublished = publish,
                Slug = ToSlug(page.title)
            };

            var uid = await _mediator.Send(new CreatePageCommand(pageRequest));
            return uid.ToString();
        }));
    }
コード例 #10
0
        public async Task <ActionResult <EditPageResponse> > PostEditPage([FromBody] EditPageRequest editPageRequest)
        {
            var existingPage = await _Context.Pages.Where(x => x.ID == editPageRequest.Page.Id).Include(x => x.Groups).ThenInclude(g => g.Panels).ThenInclude(p => p.ConfigParameters).FirstOrDefaultAsync();

            if (existingPage == null)
            {
                return(Conflict(new EditPageResponse {
                    Status = ResponseStatus.Error, Error = "Page to edit not found"
                }));
            }

            existingPage.Label = editPageRequest.Page.Label;
            existingPage.Icon  = editPageRequest.Page.Icon;

            await _Context.SaveChangesAsync();

            _logger.LogDebug("Edit Page {ID} => {Label}", existingPage.ID, existingPage.Label);

            await _ClientHub.Clients.All.SendAsync(ClientMethods.AddOrUpdatePage, existingPage);

            return(Ok(new AddPanelResponse()));
        }
コード例 #11
0
        public async Task <Guid> UpdateAsync(EditPageRequest request)
        {
            var page = await _pageRepo.GetAsync(request.Id);

            if (page is null)
            {
                throw new InvalidOperationException($"CustomPageEntity with Id '{request.Id}' not found.");
            }

            page.Title           = request.Title.Trim();
            page.Slug            = request.Slug.ToLower().Trim();
            page.MetaDescription = request.MetaDescription;
            page.HtmlContent     = request.HtmlContent;
            page.CssContent      = request.CssContent;
            page.HideSidebar     = request.HideSidebar;
            page.UpdatedOnUtc    = DateTime.UtcNow;
            page.IsPublished     = request.IsPublished;

            await _pageRepo.UpdateAsync(page);

            await _audit.AddAuditEntry(EventType.Content, AuditEventId.PageUpdated, $"Page '{request.Id}' updated.");

            return(page.Id);
        }
コード例 #12
0
 public UpdatePageCommand(Guid id, EditPageRequest payload)
 {
     Id      = id;
     Payload = payload;
 }
コード例 #13
0
 public Task <IActionResult> Edit([NotEmpty] Guid id, EditPageRequest model)
 {
     return(CreateOrEdit(model, async request => await _mediator.Send(new UpdatePageCommand(id, request))));
 }
コード例 #14
0
 public Task <IActionResult> Create(EditPageRequest model)
 {
     return(CreateOrEdit(model, async request => await _mediator.Send(new CreatePageCommand(request))));
 }
コード例 #15
0
 public EditPageModel(IMediator mediator)
 {
     _mediator       = mediator;
     EditPageRequest = new();
 }
コード例 #16
0
 public CreatePageCommand(EditPageRequest payload)
 {
     Payload = payload;
 }