Skip to content

Edit Empty Page from different User throws error #6028

@ramel-contria

Description

@ramel-contria

Describe the Bug

Since Version 25.12.5 (or maybe already in 25.12.4), if User A creates a page and instantly saves it (or only edits the Page Title) and User B wants to edit it, User B will get an Error.

The same Error also ocurrs if a User removes all content from a Page and then Saves it. If any other User besides the one that last saved it tries to edit it, they get an Error.

Steps to Reproduce

  1. Create a new Page with User A (any user) and save it without adding any Content
  2. Open the Page with any other User
  3. Click "Edit"

Expected Behaviour

The expected behavour would be that the user that wants to edit it can edit it.

Screenshots or Additional Context

Error

TypeError
BookStack\Util\HtmlDocument::getBody(): Return value must be of type DOMNode, null returned

Stacktrace

Details

#0 /home/ramel/projects/bookstack/app/Util/HtmlDocument.php(115): BookStack\Util\HtmlDocument->getBody()
#1 /home/ramel/projects/bookstack/app/Util/HtmlDocument.php(125): BookStack\Util\HtmlDocument->getBodyChildren()
#2 /home/ramel/projects/bookstack/app/Util/HtmlContentFilter.php(31): BookStack\Util\HtmlDocument->getBodyInnerHtml()
#3 /home/ramel/projects/bookstack/app/Util/HtmlContentFilter.php(41): BookStack\Util\HtmlContentFilter->filterDocument()
#4 /home/ramel/projects/bookstack/app/Entities/Tools/PageEditorData.php(75): BookStack\Util\HtmlContentFilter->filterString()
#5 /home/ramel/projects/bookstack/app/Entities/Tools/PageEditorData.php(24): BookStack\Entities\Tools\PageEditorData->build()
#6 /home/ramel/projects/bookstack/app/Entities/Controllers/PageController.php(205): BookStack\Entities\Tools\PageEditorData->__construct()
#7 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): BookStack\Entities\Controllers\PageController->edit()
#8 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction()
#9 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(265): Illuminate\Routing\ControllerDispatcher->dispatch()
#10 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Route.php(211): Illuminate\Routing\Route->runController()
#11 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(822): Illuminate\Routing\Route->run()
#12 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#13 /home/ramel/projects/bookstack/app/Http/Middleware/Authenticate.php(23): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#14 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): BookStack\Http\Middleware\Authenticate->handle()
#15 /home/ramel/projects/bookstack/app/Http/Middleware/Localization.php(32): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#16 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): BookStack\Http\Middleware\Localization->handle()
#17 /home/ramel/projects/bookstack/app/Http/Middleware/RunThemeActions.php(26): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#18 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): BookStack\Http\Middleware\RunThemeActions->handle()
#19 /home/ramel/projects/bookstack/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#20 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): BookStack\Http\Middleware\CheckEmailConfirmed->handle()
#21 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(87): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#22 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
#23 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(48): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#24 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#25 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(120): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#26 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#27 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Session\Middleware\StartSession->handle()
#28 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#29 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#30 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(74): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#31 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#32 /home/ramel/projects/bookstack/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#33 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): BookStack\Http\Middleware\ApplyCspRules->handle()
#34 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#35 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\Pipeline\Pipeline->then()
#36 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack()
#37 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\Routing\Router->runRoute()
#38 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\Routing\Router->dispatchToRoute()
#39 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch()
#40 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#41 /home/ramel/projects/bookstack/app/Http/Middleware/PreventResponseCaching.php(28): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#42 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): BookStack\Http\Middleware\PreventResponseCaching->handle()
#43 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#44 /home/ramel/projects/bookstack/app/Http/Middleware/TrustProxies.php(41): Illuminate\Http\Middleware\TrustProxies->handle()
#45 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): BookStack\Http\Middleware\TrustProxies->handle()
#46 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#47 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#48 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
#49 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#50 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePostSize->handle()
#51 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#52 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#53 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#54 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then()
#55 /home/ramel/projects/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#56 /home/ramel/projects/bookstack/public/index.php(23): Illuminate\Foundation\Http\Kernel->handle()
#57 {main}

Browser Details

Chrome

Exact BookStack Version

v25.12.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions