From 4a871811e9dad41175a7ddd907ecb4ef4f5fe8b1 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 28 Aug 2026 10:42:27 +0100 Subject: [PATCH] API: Added changelog support to page create/update API Also changed the UI based forms to submit as changelog instead of summary to align with more sensible name used on the API. Added testing to cover. For #6162 --- .../Controllers/PageApiController.php | 6 ++- app/Entities/Repos/PageRepo.php | 4 +- .../pages/parts/editor-toolbar.blade.php | 2 +- tests/Activity/WebhookFormatTesting.php | 2 +- tests/Api/PagesApiTest.php | 38 +++++++++++++++++++ tests/Commands/ClearRevisionsCommandTest.php | 4 +- tests/Entity/PageContentTest.php | 26 ++++++------- tests/Entity/PageRevisionTest.php | 4 +- tests/Entity/PageTest.php | 2 +- tests/Uploads/ImageTest.php | 4 +- 10 files changed, 66 insertions(+), 26 deletions(-) diff --git a/app/Entities/Controllers/PageApiController.php b/app/Entities/Controllers/PageApiController.php index ca8989f07..48782d70c 100644 --- a/app/Entities/Controllers/PageApiController.php +++ b/app/Entities/Controllers/PageApiController.php @@ -27,6 +27,7 @@ class PageApiController extends ApiController 'markdown' => ['required_without:html', 'string'], 'tags' => ['array'], 'priority' => ['integer'], + 'changelog' => ['string', 'min:1', 'max:180'], ], 'update' => [ 'book_id' => ['integer'], @@ -36,6 +37,7 @@ class PageApiController extends ApiController 'markdown' => ['string'], 'tags' => ['array'], 'priority' => ['integer'], + 'changelog' => ['string', 'min:1', 'max:180'], ], ]; @@ -75,7 +77,7 @@ class PageApiController extends ApiController */ public function create(Request $request): JsonResponse { - $this->validate($request, $this->rules['create']); + $validated = $this->validate($request, $this->rules['create']); if ($request->has('chapter_id')) { $parent = $this->entityQueries->chapters->findVisibleByIdOrFail(intval($request->input('chapter_id'))); @@ -85,7 +87,7 @@ class PageApiController extends ApiController $this->checkOwnablePermission(Permission::PageCreate, $parent); $draft = $this->pageRepo->getNewDraftPage($parent); - $this->pageRepo->publishDraft($draft, $request->only(array_keys($this->rules['create']))); + $this->pageRepo->publishDraft($draft, $validated); return response()->json($draft->forJsonDisplay()); } diff --git a/app/Entities/Repos/PageRepo.php b/app/Entities/Repos/PageRepo.php index 375bf1d2b..c4771b472 100644 --- a/app/Entities/Repos/PageRepo.php +++ b/app/Entities/Repos/PageRepo.php @@ -91,7 +91,7 @@ class PageRepo $draft = $this->baseRepo->update($draft, $input); $draft->rebuildPermissions(); - $summary = trim($input['summary'] ?? '') ?: trans('entities.pages_initial_revision'); + $summary = trim($input['changelog'] ?? '') ?: trans('entities.pages_initial_revision'); $this->revisionRepo->storeNewForPage($draft, $summary); $draft->refresh(); @@ -134,7 +134,7 @@ class PageRepo $this->revisionRepo->deleteDraftsForCurrentUser($page); // Save a revision after updating - $summary = trim($input['summary'] ?? ''); + $summary = trim($input['changelog'] ?? ''); $htmlChanged = isset($input['html']) && $input['html'] !== $oldHtml; $nameChanged = isset($input['name']) && $input['name'] !== $oldName; $markdownChanged = isset($input['markdown']) && $input['markdown'] !== $oldMarkdown; diff --git a/resources/views/pages/parts/editor-toolbar.blade.php b/resources/views/pages/parts/editor-toolbar.blade.php index 8d39f7d5d..71a5fd284 100644 --- a/resources/views/pages/parts/editor-toolbar.blade.php +++ b/resources/views/pages/parts/editor-toolbar.blade.php @@ -108,7 +108,7 @@

{{ trans('entities.pages_edit_enter_changelog_desc') }}