mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-08 03:09:39 +03:00
Updating to 22.11 from 22.09.1 - SQL error? #3400
Closed
opened 2026-02-05 06:36:20 +03:00 by OVERLORD
·
12 comments
No Branch/Tag Specified
development
further_theme_development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🐕 Support
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#3400
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @patsyk1 on GitHub (Dec 15, 2022).
Attempted Debugging
Searched GitHub Issues
Describe the Scenario
Updating from 22.09.1 to 22.11 always results in an SQLSTATE[42S22] error on the debug page.
I've tried restoring a SQL database from a backup before the update, but this doesn't help.
I saw there was a similarly completed issue with the update for someone else that was permission-based. Still, the fix of restoring all Bookstack permissions didn't help me (as I assume this is linked to SQL more so than permissions to the directories Bookstack is being served from).
Exact BookStack Version
22.09.1
Log Content
Error
Illuminate\View\ViewException
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'view' in 'where clause' (SQL: select count(*) as aggregate from
entity_permissionswhereview= 1 androle_idin (4) andentity_type= bookshelf) (View: /var/www/bookstack/resources/views/common/header.blade.php) (View: /var/www/bookstack/resources/views/common/header.blade.php) (View: /var/www/bookstack/resources/views/common/header.blade.php) (View: /var/www/bookstack/resources/views/common/header.blade.php)Stack Trace
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(60): Illuminate\View\Engines\CompilerEngine->handleViewException()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(61): Illuminate\View\Engines\PhpEngine->evaluatePath()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/View.php(139): Illuminate\View\Engines\CompilerEngine->get()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/View.php(122): Illuminate\View\View->getContents()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/View.php(91): Illuminate\View\View->renderContents()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Response.php(69): Illuminate\View\View->render()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Response.php(35): Illuminate\Http\Response->setContent()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(820): Illuminate\Http\Response->__construct()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(789): Illuminate\Routing\Router::toResponse()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(721): Illuminate\Routing\Router->prepareResponse()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Routing\Router->Illuminate\Routing{closure}()
/var/www/bookstack/app/Http/Middleware/Authenticate.php(23): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BookStack\Http\Middleware\Authenticate->handle()
/var/www/bookstack/app/Http/Middleware/Localization.php(45): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BookStack\Http\Middleware\Localization->handle()
/var/www/bookstack/app/Http/Middleware/RunThemeActions.php(26): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BookStack\Http\Middleware\RunThemeActions->handle()
/var/www/bookstack/app/Http/Middleware/CheckEmailConfirmed.php(47): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BookStack\Http\Middleware\CheckEmailConfirmed->handle()
/var/www/bookstack/app/Http/Middleware/PreventAuthenticatedResponseCaching.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BookStack\Http\Middleware\PreventAuthenticatedResponseCaching->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Session\Middleware\StartSession->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Cookie\Middleware\EncryptCookies->handle()
/var/www/bookstack/app/Http/Middleware/ApplyCspRules.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BookStack\Http\Middleware\ApplyCspRules->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(723): Illuminate\Pipeline\Pipeline->then()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(698): Illuminate\Routing\Router->runRouteWithinStack()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\Routing\Router->runRoute()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Routing/Router.php(651): Illuminate\Routing\Router->dispatchToRoute()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\Routing\Router->dispatch()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/app/Http/Middleware/TrustProxies.php(41): Illuminate\Http\Middleware\TrustProxies->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): BookStack\Http\Middleware\TrustProxies->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Pipeline\Pipeline->then()
/var/www/bookstack/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
/var/www/bookstack/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle()
{main}
PHP Version
7.4.3
Hosting Environment
Ubuntu 20.04 LTS
@ssddanbrown commented on GitHub (Dec 15, 2022):
Hi @patsyk1,
It sounds like the database is out of sync with the application files.
Could you run each upgrade command, one at a time, and share the command line output observed at each stage?
@patsyk1 commented on GitHub (Dec 15, 2022):
Hi @ssddanbrown,
Sure thing, I had to initially run the below as I was getting "error: Your local changes to the following files would be overwritten by merge:" when completing the initial git.
sudo git stash push --include-untracked
sudo git stash drop
Output observed at each stage after is:
sudo git pull origin release
From https://github.com/BookStackApp/BookStack
Updating ebd6e4d3..bf6a6af6
Fast-forward
.github/translators.txt | 18 +
.github/workflows/analyse-php.yml | 4 +-
.github/workflows/test-migrations.yml | 6 +-
.github/workflows/test-php.yml | 6 +-
LICENSE | 3 +-
app/Actions/Queries/WebhooksAllPaginatedAndSorted.php | 30 +
app/Actions/TagRepo.php | 21 +-
app/Api/ApiEntityListFormatter.php | 107 ++++
app/Api/ListingResponseBuilder.php | 23 +-
app/Auth/Access/LoginService.php | 2 +
app/Auth/Access/Oidc/OidcJwtSigningKey.php | 9 +-
app/Auth/Access/Oidc/OidcProviderSettings.php | 42 +-
app/Auth/Access/Oidc/OidcService.php | 1 -
app/Auth/Access/Saml2Service.php | 19 +-
app/Auth/Permissions/EntityPermission.php | 31 +-
app/Auth/Permissions/JointPermissionBuilder.php | 53 +-
app/Auth/Permissions/PermissionApplicator.php | 48 +-
app/Auth/Permissions/PermissionFormData.php | 68 +++
app/Auth/Permissions/PermissionsRepo.php | 1 +
app/Auth/Permissions/SimpleEntityData.php | 1 -
app/Auth/Queries/RolesAllPaginatedAndSorted.php | 35 ++
.../{AllUsersPaginatedAndSorted.php => UsersAllPaginatedAndSorted.php} | 19 +-
app/Auth/Role.php | 28 +-
app/Auth/UserRepo.php | 8 +-
app/Config/app.php | 21 +-
app/Config/setting-defaults.php | 2 +
app/Console/Commands/CopyShelfPermissions.php | 17 +-
app/Entities/Models/Book.php | 12 +-
app/Entities/Models/Bookshelf.php | 11 +-
app/Entities/Models/Chapter.php | 11 +-
app/Entities/Models/Entity.php | 8 +-
app/Entities/Models/Page.php | 13 +-
app/Entities/Models/PageRevision.php | 2 +-
app/Entities/Repos/BaseRepo.php | 4 +-
app/Entities/Repos/BookshelfRepo.php | 25 -
app/Entities/Tools/BookContents.php | 15 +-
app/Entities/Tools/Cloner.php | 23 +-
app/Entities/Tools/HierarchyTransformer.php | 2 +-
app/Entities/Tools/PermissionsUpdater.php | 54 +-
app/Http/Controllers/Api/BookApiController.php | 20 +-
app/Http/Controllers/Api/BookshelfApiController.php | 3 -
app/Http/Controllers/Api/SearchApiController.php | 30 +-
app/Http/Controllers/AuditLogController.php | 46 +-
app/Http/Controllers/Auth/ConfirmEmailController.php | 22 +-
app/Http/Controllers/Auth/ForgotPasswordController.php | 23 +-
app/Http/Controllers/Auth/LoginController.php | 167 ++----
app/Http/Controllers/Auth/RegisterController.php | 59 +-
app/Http/Controllers/Auth/ResetPasswordController.php | 92 +--
app/Http/Controllers/Auth/Saml2Controller.php | 2 +-
app/Http/Controllers/Auth/SocialController.php | 8 +-
app/Http/Controllers/Auth/ThrottlesLogins.php | 92 +++
app/Http/Controllers/Auth/UserInviteController.php | 7 +-
app/Http/Controllers/BookController.php | 46 +-
app/Http/Controllers/BookshelfController.php | 74 +--
app/Http/Controllers/ChapterController.php | 33 --
app/Http/Controllers/FavouriteController.php | 2 +-
app/Http/Controllers/HomeController.php | 22 +-
app/Http/Controllers/PageController.php | 34 --
app/Http/Controllers/PageRevisionController.php | 26 +-
app/Http/Controllers/PermissionsController.php | 174 ++++++
app/Http/Controllers/ReferenceController.php | 10 +-
app/Http/Controllers/RoleController.php | 31 +-
app/Http/Controllers/SearchController.php | 24 +-
app/Http/Controllers/TagController.php | 31 +-
app/Http/Controllers/UserController.php | 164 +----
app/Http/Controllers/UserPreferencesController.php | 142 +++++
app/Http/Controllers/WebhookController.php | 23 +-
app/Providers/AppServiceProvider.php | 55 +-
app/Providers/AuthServiceProvider.php | 4 +-
app/Providers/BroadcastServiceProvider.php | 25 -
app/Providers/CustomFacadeProvider.php | 36 --
app/Providers/EventServiceProvider.php | 2 +-
app/Providers/PaginationServiceProvider.php | 35 --
app/Providers/RouteServiceProvider.php | 8 -
app/Providers/ThemeServiceProvider.php | 6 +-
...ustomValidationServiceProvider.php => ValidationRuleServiceProvider.php} | 2 +-
app/Providers/ViewTweaksServiceProvider.php | 31 +
app/Search/SearchRunner.php | 6 +-
app/Settings/SettingService.php | 12 +
app/Settings/UserShortcutMap.php | 82 +++
app/Uploads/ImageService.php | 9 +-
app/Util/LanguageManager.php | 1 +
app/Util/SimpleListOptions.php | 104 ++++
composer.json | 4 +-
composer.lock | 946 ++++++++++++++++-------------
database/migrations/2022_10_07_091406_flatten_entity_permissions_table.php | 105 ++++
database/migrations/2022_10_08_104202_drop_entity_restricted_field.php | 93 +++
dev/api/responses/books-read.json | 42 +-
dev/docs/components.md | 99 ----
dev/docs/development.md | 98 +++
dev/docs/javascript-code.md | 156 +++++
dev/docs/release-process.md | 24 +
package-lock.json | 1122 +++++++++++++++++++++--------------
package.json | 4 +-
public/dist/app.js | 60 +-
public/dist/code.js | 42 +-
public/dist/export-styles.css | 2 +-
public/dist/print-styles.css | 2 +-
public/dist/styles.css | 2 +-
readme.md | 127 +---
resources/icons/groups.svg | 1 +
resources/icons/image.svg | 5 +-
resources/icons/role.svg | 4 +
resources/icons/shortcuts.svg | 1 +
resources/js/app.js | 7 +-
resources/js/code.mjs | 9 +-
resources/js/components/add-remove-rows.js | 10 +-
resources/js/components/ajax-delete-row.js | 11 +-
resources/js/components/ajax-form.js | 11 +-
resources/js/components/attachments-list.js | 9 +-
resources/js/components/attachments.js | 19 +-
resources/js/components/auto-submit.js | 11 +
resources/js/components/auto-suggest.js | 23 +-
resources/js/components/back-to-top.js | 23 +-
resources/js/components/book-sort.js | 26 +-
resources/js/components/chapter-contents.js | 9 +-
resources/js/components/code-editor.js | 25 +-
resources/js/components/code-highlighter.js | 16 +-
resources/js/components/code-textarea.js | 9 +-
resources/js/components/collapsible.js | 28 +-
resources/js/components/component.js | 58 ++
resources/js/components/confirm-dialog.js | 10 +-
resources/js/components/custom-checkbox.js | 21 +-
resources/js/components/details-highlighter.js | 19 +-
resources/js/components/dropdown-search.js | 7 +-
resources/js/components/dropdown.js | 86 +--
resources/js/components/dropzone.js | 11 +-
resources/js/components/editor-toolbox.js | 65 +-
resources/js/components/entity-permissions-editor.js | 20 -
resources/js/components/entity-permissions.js | 75 +++
resources/js/components/entity-search.js | 11 +-
resources/js/components/entity-selector-popup.js | 32 +-
resources/js/components/entity-selector.js | 10 +-
resources/js/components/event-emit-select.js | 9 +-
resources/js/components/expand-toggle.js | 22 +-
resources/js/components/global-search.js | 82 +++
resources/js/components/header-mobile-toggle.js | 7 +-
resources/js/components/image-manager.js | 29 +-
resources/js/components/image-picker.js | 34 +-
resources/js/components/index.js | 333 ++---------
resources/js/components/list-sort-control.js | 27 +-
resources/js/components/markdown-editor.js | 647 +++-----------------
resources/js/components/new-user-password.js | 22 +-
resources/js/components/notification.js | 40 +-
resources/js/components/optional-input.js | 7 +-
resources/js/components/page-comments.js | 19 +-
resources/js/components/page-display.js | 144 +----
resources/js/components/page-editor.js | 16 +-
resources/js/components/page-picker.js | 31 +-
resources/js/components/permissions-table.js | 30 +-
resources/js/components/pointer.js | 128 ++++
resources/js/components/popup.js | 8 +-
resources/js/components/setting-app-color-picker.js | 26 +-
resources/js/components/setting-color-picker.js | 30 +-
.../js/components/{homepage-control.js => setting-homepage-control.js} | 17 +-
resources/js/components/shelf-sort.js | 10 +-
resources/js/components/shortcut-input.js | 54 ++
resources/js/components/shortcuts.js | 162 +++++
resources/js/components/sidebar.js | 16 -
resources/js/components/sortable-list.js | 9 +-
resources/js/components/submit-on-change.js | 9 +-
resources/js/components/tabs.js | 12 +-
resources/js/components/tag-manager.js | 15 +-
resources/js/components/template-manager.js | 90 ++-
resources/js/components/toggle-switch.js | 14 +-
resources/js/components/tri-layout.js | 7 +-
resources/js/components/user-select.js | 19 +-
resources/js/components/webhook-events.js | 10 +-
resources/js/components/wysiwyg-editor.js | 7 +-
resources/js/markdown/actions.js | 448 ++++++++++++++
resources/js/markdown/codemirror.js | 70 +++
resources/js/markdown/common-events.js | 33 ++
resources/js/markdown/display.js | 109 ++++
resources/js/markdown/editor.js | 54 ++
resources/js/markdown/markdown.js | 30 +
resources/js/markdown/settings.js | 62 ++
resources/js/markdown/shortcuts.js | 48 ++
resources/js/services/components.js | 165 ++++++
resources/js/services/dom.js | 13 +
resources/js/services/keyboard-navigation.js | 89 +++
resources/js/services/text.js | 19 +
resources/js/services/util.js | 6 +-
resources/js/wysiwyg/config.js | 12 +-
resources/js/wysiwyg/icons.js | 21 +
resources/js/wysiwyg/plugin-codeeditor.js | 27 +-
resources/js/wysiwyg/plugin-drawio.js | 6 +-
resources/js/wysiwyg/plugins-customhr.js | 2 +-
resources/js/wysiwyg/plugins-imagemanager.js | 5 +-
resources/js/wysiwyg/shortcuts.js | 4 +-
resources/js/wysiwyg/toolbars.js | 2 +-
resources/lang/ar/auth.php | 2 +
resources/lang/ar/common.php | 3 +
resources/lang/ar/editor.php | 5 +-
resources/lang/ar/entities.php | 14 +-
resources/lang/ar/preferences.php | 18 +
resources/lang/ar/settings.php | 9 +
resources/lang/bg/auth.php | 2 +
resources/lang/bg/common.php | 3 +
resources/lang/bg/editor.php | 5 +-
resources/lang/bg/entities.php | 14 +-
resources/lang/bg/preferences.php | 18 +
resources/lang/bg/settings.php | 9 +
resources/lang/bs/auth.php | 2 +
resources/lang/bs/common.php | 3 +
resources/lang/bs/editor.php | 5 +-
resources/lang/bs/entities.php | 14 +-
resources/lang/bs/preferences.php | 18 +
resources/lang/bs/settings.php | 9 +
resources/lang/ca/auth.php | 2 +
resources/lang/ca/common.php | 3 +
resources/lang/ca/editor.php | 5 +-
resources/lang/ca/entities.php | 14 +-
resources/lang/ca/preferences.php | 18 +
resources/lang/ca/settings.php | 9 +
resources/lang/cs/activities.php | 22 +-
resources/lang/cs/auth.php | 18 +-
resources/lang/cs/common.php | 9 +-
resources/lang/cs/editor.php | 305 +++++-----
resources/lang/cs/entities.php | 100 ++--
resources/lang/cs/errors.php | 10 +-
resources/lang/cs/passwords.php | 4 +-
resources/lang/cs/preferences.php | 18 +
resources/lang/cs/settings.php | 51 +-
resources/lang/cs/validation.php | 2 +-
resources/lang/cy/auth.php | 2 +
resources/lang/cy/common.php | 3 +
resources/lang/cy/editor.php | 5 +-
resources/lang/cy/entities.php | 14 +-
resources/lang/cy/preferences.php | 18 +
resources/lang/cy/settings.php | 9 +
resources/lang/da/auth.php | 2 +
resources/lang/da/common.php | 3 +
resources/lang/da/editor.php | 5 +-
resources/lang/da/entities.php | 14 +-
resources/lang/da/preferences.php | 18 +
resources/lang/da/settings.php | 9 +
resources/lang/de/activities.php | 2 +-
resources/lang/de/auth.php | 10 +-
resources/lang/de/common.php | 3 +
resources/lang/de/components.php | 2 +-
resources/lang/de/editor.php | 5 +-
resources/lang/de/entities.php | 14 +-
resources/lang/de/errors.php | 12 +-
resources/lang/de/preferences.php | 18 +
resources/lang/de/settings.php | 21 +-
resources/lang/de/validation.php | 4 +-
resources/lang/de_informal/activities.php | 10 +-
resources/lang/de_informal/auth.php | 18 +-
resources/lang/de_informal/common.php | 5 +-
resources/lang/de_informal/editor.php | 21 +-
resources/lang/de_informal/entities.php | 14 +-
resources/lang/de_informal/preferences.php | 18 +
resources/lang/de_informal/settings.php | 15 +-
resources/lang/el/activities.php | 73 +++
resources/lang/el/auth.php | 117 ++++
resources/lang/el/common.php | 107 ++++
resources/lang/el/components.php | 34 ++
resources/lang/el/editor.php | 174 ++++++
resources/lang/el/entities.php | 388 ++++++++++++
resources/lang/el/errors.php | 109 ++++
resources/lang/el/pagination.php | 12 +
resources/lang/el/passwords.php | 15 +
resources/lang/el/preferences.php | 18 +
resources/lang/el/settings.php | 324 ++++++++++
resources/lang/el/validation.php | 117 ++++
resources/lang/en/auth.php | 2 +
resources/lang/en/common.php | 3 +
resources/lang/en/editor.php | 5 +-
resources/lang/en/entities.php | 14 +-
resources/lang/en/preferences.php | 18 +
resources/lang/en/settings.php | 9 +
resources/lang/es/auth.php | 10 +-
resources/lang/es/common.php | 3 +
resources/lang/es/editor.php | 5 +-
resources/lang/es/entities.php | 14 +-
resources/lang/es/preferences.php | 18 +
resources/lang/es/settings.php | 9 +
resources/lang/es_AR/auth.php | 2 +
resources/lang/es_AR/common.php | 3 +
resources/lang/es_AR/editor.php | 5 +-
resources/lang/es_AR/entities.php | 14 +-
resources/lang/es_AR/preferences.php | 18 +
resources/lang/es_AR/settings.php | 9 +
resources/lang/et/auth.php | 2 +
resources/lang/et/common.php | 3 +
resources/lang/et/editor.php | 5 +-
resources/lang/et/entities.php | 14 +-
resources/lang/et/preferences.php | 18 +
resources/lang/et/settings.php | 9 +
resources/lang/eu/auth.php | 2 +
resources/lang/eu/common.php | 3 +
resources/lang/eu/editor.php | 5 +-
resources/lang/eu/entities.php | 20 +-
resources/lang/eu/preferences.php | 18 +
resources/lang/eu/settings.php | 9 +
resources/lang/fa/activities.php | 4 +-
resources/lang/fa/auth.php | 2 +
resources/lang/fa/common.php | 3 +
resources/lang/fa/editor.php | 5 +-
resources/lang/fa/entities.php | 16 +-
resources/lang/fa/preferences.php | 18 +
resources/lang/fa/settings.php | 9 +
resources/lang/fr/auth.php | 2 +
resources/lang/fr/common.php | 3 +
resources/lang/fr/editor.php | 5 +-
resources/lang/fr/entities.php | 14 +-
resources/lang/fr/preferences.php | 18 +
resources/lang/fr/settings.php | 9 +
resources/lang/he/auth.php | 2 +
resources/lang/he/common.php | 3 +
resources/lang/he/editor.php | 5 +-
resources/lang/he/entities.php | 14 +-
resources/lang/he/preferences.php | 18 +
resources/lang/he/settings.php | 9 +
resources/lang/hr/auth.php | 2 +
resources/lang/hr/common.php | 3 +
resources/lang/hr/editor.php | 5 +-
resources/lang/hr/entities.php | 14 +-
resources/lang/hr/preferences.php | 18 +
resources/lang/hr/settings.php | 9 +
resources/lang/hu/auth.php | 2 +
resources/lang/hu/common.php | 3 +
resources/lang/hu/editor.php | 5 +-
resources/lang/hu/entities.php | 14 +-
resources/lang/hu/preferences.php | 18 +
resources/lang/hu/settings.php | 9 +
resources/lang/id/auth.php | 2 +
resources/lang/id/common.php | 3 +
resources/lang/id/editor.php | 17 +-
resources/lang/id/entities.php | 14 +-
resources/lang/id/preferences.php | 18 +
resources/lang/id/settings.php | 9 +
resources/lang/it/auth.php | 2 +
resources/lang/it/common.php | 3 +
resources/lang/it/editor.php | 5 +-
resources/lang/it/entities.php | 14 +-
resources/lang/it/preferences.php | 18 +
resources/lang/it/settings.php | 9 +
resources/lang/ja/auth.php | 2 +
resources/lang/ja/common.php | 3 +
resources/lang/ja/editor.php | 5 +-
resources/lang/ja/entities.php | 14 +-
resources/lang/ja/preferences.php | 18 +
resources/lang/ja/settings.php | 9 +
resources/lang/ka/activities.php | 73 +++
resources/lang/ka/auth.php | 117 ++++
resources/lang/ka/common.php | 107 ++++
resources/lang/ka/components.php | 34 ++
resources/lang/ka/editor.php | 174 ++++++
resources/lang/ka/entities.php | 388 ++++++++++++
resources/lang/ka/errors.php | 109 ++++
resources/lang/ka/pagination.php | 12 +
resources/lang/ka/passwords.php | 15 +
resources/lang/ka/preferences.php | 18 +
resources/lang/ka/settings.php | 324 ++++++++++
resources/lang/ka/validation.php | 117 ++++
resources/lang/ko/activities.php | 14 +-
resources/lang/ko/auth.php | 2 +
resources/lang/ko/common.php | 3 +
resources/lang/ko/editor.php | 115 ++--
resources/lang/ko/entities.php | 14 +-
resources/lang/ko/preferences.php | 18 +
resources/lang/ko/settings.php | 9 +
resources/lang/lt/auth.php | 2 +
resources/lang/lt/common.php | 3 +
resources/lang/lt/editor.php | 5 +-
resources/lang/lt/entities.php | 14 +-
resources/lang/lt/preferences.php | 18 +
resources/lang/lt/settings.php | 9 +
resources/lang/lv/auth.php | 2 +
resources/lang/lv/common.php | 3 +
resources/lang/lv/editor.php | 5 +-
resources/lang/lv/entities.php | 14 +-
resources/lang/lv/preferences.php | 18 +
resources/lang/lv/settings.php | 9 +
resources/lang/nb/auth.php | 2 +
resources/lang/nb/common.php | 3 +
resources/lang/nb/editor.php | 5 +-
resources/lang/nb/entities.php | 14 +-
resources/lang/nb/preferences.php | 18 +
resources/lang/nb/settings.php | 9 +
resources/lang/nl/auth.php | 2 +
resources/lang/nl/common.php | 3 +
resources/lang/nl/editor.php | 5 +-
resources/lang/nl/entities.php | 40 +-
resources/lang/nl/preferences.php | 18 +
resources/lang/nl/settings.php | 11 +-
resources/lang/pl/activities.php | 14 +-
resources/lang/pl/auth.php | 2 +
resources/lang/pl/common.php | 3 +
resources/lang/pl/editor.php | 5 +-
resources/lang/pl/entities.php | 48 +-
resources/lang/pl/errors.php | 2 +-
resources/lang/pl/preferences.php | 18 +
resources/lang/pl/settings.php | 21 +-
resources/lang/pt/auth.php | 2 +
resources/lang/pt/common.php | 3 +
resources/lang/pt/editor.php | 5 +-
resources/lang/pt/entities.php | 14 +-
resources/lang/pt/preferences.php | 18 +
resources/lang/pt/settings.php | 9 +
resources/lang/pt_BR/activities.php | 16 +-
resources/lang/pt_BR/auth.php | 8 +-
resources/lang/pt_BR/common.php | 3 +
resources/lang/pt_BR/editor.php | 7 +-
resources/lang/pt_BR/entities.php | 74 ++-
resources/lang/pt_BR/errors.php | 2 +-
resources/lang/pt_BR/preferences.php | 18 +
resources/lang/pt_BR/settings.php | 21 +-
resources/lang/ro/auth.php | 2 +
resources/lang/ro/common.php | 3 +
resources/lang/ro/editor.php | 5 +-
resources/lang/ro/entities.php | 14 +-
resources/lang/ro/preferences.php | 18 +
resources/lang/ro/settings.php | 19 +-
resources/lang/ru/auth.php | 2 +
resources/lang/ru/common.php | 3 +
resources/lang/ru/editor.php | 5 +-
resources/lang/ru/entities.php | 14 +-
resources/lang/ru/preferences.php | 18 +
resources/lang/ru/settings.php | 9 +
resources/lang/sk/auth.php | 2 +
resources/lang/sk/common.php | 3 +
resources/lang/sk/editor.php | 5 +-
resources/lang/sk/entities.php | 14 +-
resources/lang/sk/preferences.php | 18 +
resources/lang/sk/settings.php | 9 +
resources/lang/sl/auth.php | 2 +
resources/lang/sl/common.php | 3 +
resources/lang/sl/editor.php | 5 +-
resources/lang/sl/entities.php | 14 +-
resources/lang/sl/preferences.php | 18 +
resources/lang/sl/settings.php | 9 +
resources/lang/sv/activities.php | 62 +-
resources/lang/sv/auth.php | 82 +--
resources/lang/sv/common.php | 21 +-
resources/lang/sv/editor.php | 295 ++++-----
resources/lang/sv/entities.php | 140 +++--
resources/lang/sv/errors.php | 12 +-
resources/lang/sv/preferences.php | 18 +
resources/lang/sv/settings.php | 133 +++--
resources/lang/sv/validation.php | 6 +-
resources/lang/tr/activities.php | 4 +-
resources/lang/tr/auth.php | 2 +
resources/lang/tr/common.php | 3 +
resources/lang/tr/editor.php | 5 +-
resources/lang/tr/entities.php | 14 +-
resources/lang/tr/preferences.php | 18 +
resources/lang/tr/settings.php | 9 +
resources/lang/uk/auth.php | 2 +
resources/lang/uk/common.php | 3 +
resources/lang/uk/editor.php | 5 +-
resources/lang/uk/entities.php | 14 +-
resources/lang/uk/preferences.php | 18 +
resources/lang/uk/settings.php | 9 +
resources/lang/uz/auth.php | 2 +
resources/lang/uz/common.php | 3 +
resources/lang/uz/editor.php | 5 +-
resources/lang/uz/entities.php | 14 +-
resources/lang/uz/preferences.php | 18 +
resources/lang/uz/settings.php | 9 +
resources/lang/vi/auth.php | 2 +
resources/lang/vi/common.php | 3 +
resources/lang/vi/editor.php | 5 +-
resources/lang/vi/entities.php | 14 +-
resources/lang/vi/preferences.php | 18 +
resources/lang/vi/settings.php | 9 +
resources/lang/zh_CN/auth.php | 2 +
resources/lang/zh_CN/common.php | 3 +
resources/lang/zh_CN/editor.php | 5 +-
resources/lang/zh_CN/entities.php | 14 +-
resources/lang/zh_CN/preferences.php | 18 +
resources/lang/zh_CN/settings.php | 9 +
resources/lang/zh_TW/activities.php | 20 +-
resources/lang/zh_TW/auth.php | 46 +-
resources/lang/zh_TW/common.php | 7 +-
resources/lang/zh_TW/editor.php | 97 +--
resources/lang/zh_TW/entities.php | 22 +-
resources/lang/zh_TW/errors.php | 10 +-
resources/lang/zh_TW/preferences.php | 18 +
resources/lang/zh_TW/settings.php | 23 +-
resources/lang/zh_TW/validation.php | 6 +-
resources/sass/_animations.scss | 16 +-
resources/sass/_blocks.scss | 41 +-
resources/sass/_buttons.scss | 18 +-
resources/sass/_components.scss | 132 ++++-
resources/sass/_forms.scss | 98 +--
resources/sass/_header.scss | 74 ++-
resources/sass/_layout.scss | 58 +-
resources/sass/_lists.scss | 3 +-
resources/sass/_opacity.scss | 28 +
resources/sass/_pages.scss | 15 +-
resources/sass/_spacing.scss | 14 +-
resources/sass/_tables.scss | 2 +-
resources/sass/_text.scss | 2 +-
resources/sass/_variables.scss | 4 +
resources/sass/styles.scss | 101 ++--
resources/views/api-docs/index.blade.php | 2 +-
resources/views/api-docs/parts/endpoint.blade.php | 4 +-
resources/views/api-docs/parts/getting-started.blade.php | 13 +-
resources/views/attachments/manager.blade.php | 7 +-
resources/views/auth/login.blade.php | 2 +
resources/views/auth/parts/login-message.blade.php | 2 +
resources/views/auth/parts/register-message.blade.php | 2 +
resources/views/auth/register-confirm-accept.blade.php | 27 +
resources/views/auth/register.blade.php | 2 +
resources/views/books/index.blade.php | 4 +-
resources/views/books/parts/form.blade.php | 12 +-
resources/views/books/parts/list.blade.php | 12 +-
resources/views/books/parts/sort-box.blade.php | 10 +-
resources/views/books/permissions.blade.php | 5 +-
resources/views/books/show.blade.php | 16 +-
resources/views/books/sort.blade.php | 6 +-
resources/views/chapters/parts/form.blade.php | 6 +-
resources/views/chapters/permissions.blade.php | 5 +-
resources/views/chapters/show.blade.php | 18 +-
resources/views/common/dark-mode-toggle.blade.php | 2 +-
resources/views/common/header.blade.php | 44 +-
resources/views/common/notifications.blade.php | 26 +-
resources/views/{entities => common}/sort.blade.php | 31 +-
resources/views/common/status-indicator.blade.php | 3 +
resources/views/entities/export-menu.blade.php | 9 +-
resources/views/entities/favourite-action.blade.php | 2 +-
resources/views/entities/search-form.blade.php | 2 +-
resources/views/entities/sibling-navigation.blade.php | 4 +-
resources/views/entities/view-toggle.blade.php | 8 +-
resources/views/form/custom-checkbox.blade.php | 4 +-
resources/views/form/entity-permissions-row.blade.php | 88 +++
resources/views/form/entity-permissions.blade.php | 93 +--
resources/views/form/image-picker.blade.php | 21 +-
resources/views/form/restriction-checkbox.blade.php | 13 -
resources/views/form/toggle-switch.blade.php | 2 +-
resources/views/home/parts/expand-toggle.blade.php | 10 +-
resources/views/home/shelves.blade.php | 2 +-
resources/views/home/specific-page.blade.php | 4 +-
resources/views/layouts/base.blade.php | 9 +-
resources/views/pages/parts/code-editor.blade.php | 8 +-
resources/views/pages/parts/editor-toolbox.blade.php | 14 +-
resources/views/pages/parts/markdown-editor.blade.php | 46 +-
resources/views/pages/parts/pointer.blade.php | 5 +-
resources/views/pages/parts/revision-table-row.blade.php | 69 ---
resources/views/pages/parts/revisions-index-row.blade.php | 80 +++
resources/views/pages/parts/template-manager.blade.php | 16 +-
resources/views/pages/permissions.blade.php | 5 +-
resources/views/pages/revisions.blade.php | 38 +-
resources/views/pages/show.blade.php | 24 +-
resources/views/search/all.blade.php | 4 +-
.../parts/{entity-ajax-list.blade.php => entity-selector-list.blade.php} | 0
resources/views/search/parts/entity-suggestion-list.blade.php | 21 +
resources/views/search/parts/term-list.blade.php | 35 +-
resources/views/settings/audit.blade.php | 94 +--
resources/views/settings/customization.blade.php | 21 +-
resources/views/settings/parts/page-picker.blade.php | 14 +-
resources/views/settings/parts/setting-entity-color-picker.blade.php | 12 +-
resources/views/settings/parts/table-user.blade.php | 6 +-
resources/views/settings/recycle-bin/index.blade.php | 92 +--
resources/views/settings/recycle-bin/parts/recycle-bin-list-item.blade.php | 48 ++
resources/views/settings/roles/index.blade.php | 43 +-
resources/views/settings/roles/parts/asset-permissions-row.blade.php | 32 +
resources/views/settings/roles/parts/form.blade.php | 192 +-----
.../views/settings/roles/parts/related-asset-permissions-row.blade.php | 26 +
resources/views/settings/roles/parts/roles-list-item.blade.php | 14 +
resources/views/settings/webhooks/index.blade.php | 52 +-
resources/views/settings/webhooks/parts/webhooks-list-item.blade.php | 18 +
resources/views/shelves/index.blade.php | 6 +-
resources/views/shelves/parts/form.blade.php | 12 +-
resources/views/shelves/parts/list.blade.php | 6 +-
resources/views/shelves/permissions.blade.php | 15 +-
resources/views/shelves/show.blade.php | 19 +-
resources/views/tags/index.blade.php | 41 +-
resources/views/tags/parts/table-row.blade.php | 37 --
resources/views/tags/parts/tags-list-item.blade.php | 31 +
resources/views/users/api-tokens/parts/list.blade.php | 36 +-
resources/views/users/index.blade.php | 59 +-
resources/views/users/parts/form.blade.php | 5 +-
resources/views/users/parts/users-list-item.blade.php | 27 +
resources/views/users/preferences/parts/shortcut-control.blade.php | 12 +
resources/views/users/preferences/shortcuts.blade.php | 75 +++
routes/web.php | 48 +-
tests/Actions/AuditLogTest.php | 33 +-
tests/Actions/WebhookCallTest.php | 4 +-
tests/Actions/WebhookFormatTesting.php | 12 +-
tests/Api/AttachmentsApiTest.php | 50 +-
tests/Api/BooksApiTest.php | 49 +-
tests/Api/ChaptersApiTest.php | 19 +-
tests/Api/PagesApiTest.php | 39 +-
tests/Api/RecycleBinApiTest.php | 11 +-
tests/Api/SearchApiTest.php | 6 +-
tests/Api/UsersApiTest.php | 2 +-
tests/Auth/AuthTest.php | 277 +--------
tests/Auth/OidcTest.php | 31 +
tests/Auth/RegistrationTest.php | 187 ++++++
tests/Auth/ResetPasswordTest.php | 101 ++++
tests/Auth/Saml2Test.php | 14 +
tests/Auth/UserInviteTest.php | 2 +-
tests/Commands/ClearActivityCommandTest.php | 4 +-
tests/Commands/CopyShelfPermissionsCommandTest.php | 36 +-
tests/Commands/RegenerateReferencesCommandTest.php | 4 +-
tests/Commands/UpdateUrlCommandTest.php | 3 +-
tests/Entity/BookShelfTest.php | 41 +-
tests/Entity/BookTest.php | 67 ++-
tests/Entity/ChapterTest.php | 22 +-
tests/Entity/CommentSettingTest.php | 15 +-
tests/Entity/CommentTest.php | 10 +-
tests/Entity/ConvertTest.php | 14 +-
tests/Entity/EntityAccessTest.php | 9 +-
tests/Entity/EntitySearchTest.php | 131 ++--
tests/Entity/ExportTest.php | 61 +-
tests/Entity/PageContentTest.php | 75 ++-
tests/Entity/PageDraftTest.php | 35 +-
tests/Entity/PageEditorTest.php | 27 +-
tests/Entity/PageRevisionTest.php | 162 ++---
tests/Entity/PageTemplateTest.php | 6 +-
tests/Entity/PageTest.php | 44 +-
tests/Entity/SortTest.php | 102 ++--
tests/Entity/TagTest.php | 32 +-
tests/ErrorTest.php | 3 +-
tests/FavouriteTest.php | 26 +-
tests/Helpers/EntityProvider.php | 240 ++++++++
tests/Helpers/TestServiceProvider.php | 26 +
tests/HomepageTest.php | 22 +-
tests/OpenGraphTest.php | 12 +-
tests/Permissions/EntityOwnerChangeTest.php | 12 +-
tests/Permissions/EntityPermissionsTest.php | 117 ++--
tests/Permissions/ExportPermissionsTest.php | 10 +-
tests/Permissions/RolesTest.php | 89 +--
tests/PublicActionTest.php | 18 +-
tests/References/CrossLinkParserTest.php | 7 +-
tests/References/ReferencesTest.php | 62 +-
tests/Settings/RecycleBinTest.php | 42 +-
tests/TestCase.php | 147 ++---
tests/ThemeTest.php | 38 +-
tests/Uploads/AttachmentTest.php | 30 +-
tests/Uploads/ImageTest.php | 59 +-
tests/Uploads/UsesImages.php | 2 +-
tests/UrlTest.php | 3 -
tests/User/UserManagementTest.php | 20 +-
tests/User/UserPreferencesTest.php | 81 ++-
tests/User/UserProfileTest.php | 8 +-
version | 2 +-
640 files changed, 14779 insertions(+), 7154 deletions(-)
create mode 100644 app/Actions/Queries/WebhooksAllPaginatedAndSorted.php
create mode 100644 app/Api/ApiEntityListFormatter.php
create mode 100644 app/Auth/Permissions/PermissionFormData.php
create mode 100644 app/Auth/Queries/RolesAllPaginatedAndSorted.php
rename app/Auth/Queries/{AllUsersPaginatedAndSorted.php => UsersAllPaginatedAndSorted.php} (63%)
create mode 100644 app/Http/Controllers/Auth/ThrottlesLogins.php
create mode 100644 app/Http/Controllers/PermissionsController.php
create mode 100644 app/Http/Controllers/UserPreferencesController.php
delete mode 100644 app/Providers/BroadcastServiceProvider.php
delete mode 100644 app/Providers/CustomFacadeProvider.php
delete mode 100644 app/Providers/PaginationServiceProvider.php
rename app/Providers/{CustomValidationServiceProvider.php => ValidationRuleServiceProvider.php} (93%)
create mode 100644 app/Providers/ViewTweaksServiceProvider.php
create mode 100644 app/Settings/UserShortcutMap.php
create mode 100644 app/Util/SimpleListOptions.php
create mode 100644 database/migrations/2022_10_07_091406_flatten_entity_permissions_table.php
create mode 100644 database/migrations/2022_10_08_104202_drop_entity_restricted_field.php
delete mode 100644 dev/docs/components.md
create mode 100644 dev/docs/development.md
create mode 100644 dev/docs/javascript-code.md
create mode 100644 dev/docs/release-process.md
create mode 100644 resources/icons/groups.svg
create mode 100644 resources/icons/role.svg
create mode 100644 resources/icons/shortcuts.svg
create mode 100644 resources/js/components/auto-submit.js
create mode 100644 resources/js/components/component.js
delete mode 100644 resources/js/components/entity-permissions-editor.js
create mode 100644 resources/js/components/entity-permissions.js
create mode 100644 resources/js/components/global-search.js
create mode 100644 resources/js/components/pointer.js
rename resources/js/components/{homepage-control.js => setting-homepage-control.js} (55%)
create mode 100644 resources/js/components/shortcut-input.js
create mode 100644 resources/js/components/shortcuts.js
delete mode 100644 resources/js/components/sidebar.js
create mode 100644 resources/js/markdown/actions.js
create mode 100644 resources/js/markdown/codemirror.js
create mode 100644 resources/js/markdown/common-events.js
create mode 100644 resources/js/markdown/display.js
create mode 100644 resources/js/markdown/editor.js
create mode 100644 resources/js/markdown/markdown.js
create mode 100644 resources/js/markdown/settings.js
create mode 100644 resources/js/markdown/shortcuts.js
create mode 100644 resources/js/services/components.js
create mode 100644 resources/js/services/keyboard-navigation.js
create mode 100644 resources/js/services/text.js
create mode 100644 resources/js/wysiwyg/icons.js
create mode 100644 resources/lang/ar/preferences.php
create mode 100644 resources/lang/bg/preferences.php
create mode 100644 resources/lang/bs/preferences.php
create mode 100644 resources/lang/ca/preferences.php
create mode 100644 resources/lang/cs/preferences.php
create mode 100644 resources/lang/cy/preferences.php
create mode 100644 resources/lang/da/preferences.php
create mode 100644 resources/lang/de/preferences.php
create mode 100644 resources/lang/de_informal/preferences.php
create mode 100644 resources/lang/el/activities.php
create mode 100644 resources/lang/el/auth.php
create mode 100644 resources/lang/el/common.php
create mode 100644 resources/lang/el/components.php
create mode 100644 resources/lang/el/editor.php
create mode 100644 resources/lang/el/entities.php
create mode 100644 resources/lang/el/errors.php
create mode 100644 resources/lang/el/pagination.php
create mode 100644 resources/lang/el/passwords.php
create mode 100644 resources/lang/el/preferences.php
create mode 100644 resources/lang/el/settings.php
create mode 100644 resources/lang/el/validation.php
create mode 100644 resources/lang/en/preferences.php
create mode 100644 resources/lang/es/preferences.php
create mode 100644 resources/lang/es_AR/preferences.php
create mode 100644 resources/lang/et/preferences.php
create mode 100644 resources/lang/eu/preferences.php
create mode 100644 resources/lang/fa/preferences.php
create mode 100644 resources/lang/fr/preferences.php
create mode 100644 resources/lang/he/preferences.php
create mode 100644 resources/lang/hr/preferences.php
create mode 100644 resources/lang/hu/preferences.php
create mode 100644 resources/lang/id/preferences.php
create mode 100644 resources/lang/it/preferences.php
create mode 100644 resources/lang/ja/preferences.php
create mode 100644 resources/lang/ka/activities.php
create mode 100644 resources/lang/ka/auth.php
create mode 100644 resources/lang/ka/common.php
create mode 100644 resources/lang/ka/components.php
create mode 100644 resources/lang/ka/editor.php
create mode 100644 resources/lang/ka/entities.php
create mode 100644 resources/lang/ka/errors.php
create mode 100644 resources/lang/ka/pagination.php
create mode 100644 resources/lang/ka/passwords.php
create mode 100644 resources/lang/ka/preferences.php
create mode 100644 resources/lang/ka/settings.php
create mode 100644 resources/lang/ka/validation.php
create mode 100644 resources/lang/ko/preferences.php
create mode 100644 resources/lang/lt/preferences.php
create mode 100644 resources/lang/lv/preferences.php
create mode 100644 resources/lang/nb/preferences.php
create mode 100644 resources/lang/nl/preferences.php
create mode 100644 resources/lang/pl/preferences.php
create mode 100644 resources/lang/pt/preferences.php
create mode 100644 resources/lang/pt_BR/preferences.php
create mode 100644 resources/lang/ro/preferences.php
create mode 100644 resources/lang/ru/preferences.php
create mode 100644 resources/lang/sk/preferences.php
create mode 100644 resources/lang/sl/preferences.php
create mode 100644 resources/lang/sv/preferences.php
create mode 100644 resources/lang/tr/preferences.php
create mode 100644 resources/lang/uk/preferences.php
create mode 100644 resources/lang/uz/preferences.php
create mode 100644 resources/lang/vi/preferences.php
create mode 100644 resources/lang/zh_CN/preferences.php
create mode 100644 resources/lang/zh_TW/preferences.php
create mode 100644 resources/sass/_opacity.scss
create mode 100644 resources/views/auth/parts/login-message.blade.php
create mode 100644 resources/views/auth/parts/register-message.blade.php
create mode 100644 resources/views/auth/register-confirm-accept.blade.php
rename resources/views/{entities => common}/sort.blade.php (52%)
create mode 100644 resources/views/common/status-indicator.blade.php
create mode 100644 resources/views/form/entity-permissions-row.blade.php
delete mode 100644 resources/views/form/restriction-checkbox.blade.php
delete mode 100644 resources/views/pages/parts/revision-table-row.blade.php
create mode 100644 resources/views/pages/parts/revisions-index-row.blade.php
rename resources/views/search/parts/{entity-ajax-list.blade.php => entity-selector-list.blade.php} (100%)
create mode 100644 resources/views/search/parts/entity-suggestion-list.blade.php
create mode 100644 resources/views/settings/recycle-bin/parts/recycle-bin-list-item.blade.php
create mode 100644 resources/views/settings/roles/parts/asset-permissions-row.blade.php
create mode 100644 resources/views/settings/roles/parts/related-asset-permissions-row.blade.php
create mode 100644 resources/views/settings/roles/parts/roles-list-item.blade.php
create mode 100644 resources/views/settings/webhooks/parts/webhooks-list-item.blade.php
delete mode 100644 resources/views/tags/parts/table-row.blade.php
create mode 100644 resources/views/tags/parts/tags-list-item.blade.php
create mode 100644 resources/views/users/parts/users-list-item.blade.php
create mode 100644 resources/views/users/preferences/parts/shortcut-control.blade.php
create mode 100644 resources/views/users/preferences/shortcuts.blade.php
create mode 100644 tests/Auth/RegistrationTest.php
create mode 100644 tests/Auth/ResetPasswordTest.php
create mode 100644 tests/Helpers/EntityProvider.php
create mode 100644 tests/Helpers/TestServiceProvider.php
@patsyk1 commented on GitHub (Dec 15, 2022):
@ssddanbrown
composer install --no-dev
Failed to download symfony/polyfill-iconv from dist: The "
927013f3aa" file could not be written to /var/www/bookstack/vendor/composer/tmp-b79732bd58347c2b5a38f88c7406d586: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-php80 from dist: The "
7a6ff3f195" file could not be written to /var/www/bookstack/vendor/composer/tmp-297c8a4ca7e1999d2cc5e65a97990260: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-mbstring from dist: The "
8ad114f6b3" file could not be written to /var/www/bookstack/vendor/composer/tmp-9307a74084204f6e44d970bab99a61bd: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-ctype from dist: The "
5bbc823ade" file could not be written to /var/www/bookstack/vendor/composer/tmp-19fb76dce87e0c018a009ca2e50b8536: failed to open stream: Permission deniedNow trying to download from source
Failed to download vlucas/phpdotenv from dist: The "
1a7ea2afc4" file could not be written to /var/www/bookstack/vendor/composer/tmp-01a3a92add3cfa7b29e67b3bab8ed1d9: failed to open stream: Permission deniedNow trying to download from source
Failed to download tijsverkoyen/css-to-inline-styles from dist: The "
4348a3a066" file could not be written to /var/www/bookstack/vendor/composer/tmp-94526baf440403a809b4b48d4ecce599: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/var-dumper from dist: The "
6894d06145" file could not be written to /var/www/bookstack/vendor/composer/tmp-242165efbd40e7ce5ca062ba74909d8f: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/routing from dist: The "
5c9b129efe" file could not be written to /var/www/bookstack/vendor/composer/tmp-89ee8fba03a103ddf84e44ec395b00ed: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-php72 from dist: The "
869329b1e9" file could not be written to /var/www/bookstack/vendor/composer/tmp-496cdc5798585e02c4a114254d7a8e03: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-intl-normalizer from dist: The "
19bd1e4fcd" file could not be written to /var/www/bookstack/vendor/composer/tmp-8c59bcd8349c209c4a3b50b915e9c390: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-intl-idn from dist: The "
639084e360" file could not be written to /var/www/bookstack/vendor/composer/tmp-6d5164af7a6d2c4f5e1d9b740dd55296: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/mime from dist: The "
1c118b253b" file could not be written to /var/www/bookstack/vendor/composer/tmp-8dfa4fcea505f63dd32265756aa80ff4: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-php73 from dist: The "
9e8ecb5f92" file could not be written to /var/www/bookstack/vendor/composer/tmp-43446fd5bb5312630cecdf63bfc6f6f5: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/http-foundation from dist: The "
75bd663ff2" file could not be written to /var/www/bookstack/vendor/composer/tmp-d386ba14224ce57839097668f2157c2c: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/error-handler from dist: The "
539cf1428b" file could not be written to /var/www/bookstack/vendor/composer/tmp-f087dbfbc0aaaa9cfef459a5335f432a: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/http-kernel from dist: The "
fc63c8c3e1" file could not be written to /var/www/bookstack/vendor/composer/tmp-985e3af0a1db05264f356779dc8f9696: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-intl-grapheme from dist: The "
511a08c03c" file could not be written to /var/www/bookstack/vendor/composer/tmp-ad048d17899231fb52691e0726c1dda7: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/string from dist: The "
571334ce9f" file could not be written to /var/www/bookstack/vendor/composer/tmp-498534722e2e6cd7fa9acf6dddb00a4d: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/console from dist: The "
ea59bb0edf" file could not be written to /var/www/bookstack/vendor/composer/tmp-b4aade45c7e21f60877f818f075c74d4: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/polyfill-php81 from dist: The "
707403074c" file could not be written to /var/www/bookstack/vendor/composer/tmp-48927e38881f42c0feab17af6efd7b3f: failed to open stream: Permission deniedNow trying to download from source
Failed to download symfony/translation from dist: The "
f0ed076758" file could not be written to /var/www/bookstack/vendor/composer/tmp-bdb4df825f646598f83b78c02846c7e7: failed to open stream: Permission deniedNow trying to download from source
Failed to download nesbot/carbon from dist: The "
ad35dd71a6" file could not be written to /var/www/bookstack/vendor/composer/tmp-05011d4ccc83b63a96a9e476497fee7e: failed to open stream: Permission deniedNow trying to download from source
Failed to download league/flysystem from dist: The "
3239285c82" file could not be written to /var/www/bookstack/vendor/composer/tmp-75deb14da04e6bb8dbb17ce54a258011: failed to open stream: Permission deniedNow trying to download from source
Failed to download laravel/serializable-closure from dist: The "
47afb7fae2" file could not be written to /var/www/bookstack/vendor/composer/tmp-e65a6578eadfa4b7efac9da6ef1849f7: failed to open stream: Permission deniedNow trying to download from source
Failed to download dragonmantank/cron-expression from dist: The "
782ca5968a" file could not be written to /var/www/bookstack/vendor/composer/tmp-af2124337daa475347d08adc0aba2ac1: failed to open stream: Permission deniedNow trying to download from source
Failed to download doctrine/inflector from dist: The "
d9d313a36c" file could not be written to /var/www/bookstack/vendor/composer/tmp-510b191f1b7d0106a2bed80438d64483: failed to open stream: Permission deniedNow trying to download from source
Failed to download laravel/framework from dist: The "
7411d9fa71" file could not be written to /var/www/bookstack/vendor/composer/tmp-6aeb1cddb27009bb13dbc438494fb319: failed to open stream: Permission deniedNow trying to download from source
Failed to download phenx/php-svg-lib from dist: The "
76876c6cf3" file could not be written to /var/www/bookstack/vendor/composer/tmp-e4327d5d829c255526e922527acd24ef: failed to open stream: Permission deniedNow trying to download from source
Failed to download dompdf/dompdf from dist: The "
c5310df0e2" file could not be written to /var/www/bookstack/vendor/composer/tmp-a56a3567a92715add5e794d6a36eb49e: failed to open stream: Permission deniedNow trying to download from source
Failed to download doctrine/event-manager from dist: The "
95aa4cb529" file could not be written to /var/www/bookstack/vendor/composer/tmp-a3bcc5d9dc83b6e7214d309c12fbd862: failed to open stream: Permission deniedNow trying to download from source
Failed to download doctrine/dbal from dist: The "
f38ee8aaca" file could not be written to /var/www/bookstack/vendor/composer/tmp-9421ecf102f82270f5fec56f23b4583b: failed to open stream: Permission deniedNow trying to download from source
Failed to download filp/whoops from dist: The "
f7948baaa0" file could not be written to /var/www/bookstack/vendor/composer/tmp-a607800631d892639449c21d410ee4ba: failed to open stream: Permission deniedNow trying to download from source
Failed to download guzzlehttp/psr7 from dist: The "
67c26b443f" file could not be written to /var/www/bookstack/vendor/composer/tmp-525537f47217fabcadddd1ab5144cdf0: failed to open stream: Permission deniedNow trying to download from source
Failed to download laravel/socialite from dist: The "
1cd1682b70" file could not be written to /var/www/bookstack/vendor/composer/tmp-1a1920ccabce1dc6a181166495f01cb0: failed to open stream: Permission deniedNow trying to download from source
Failed to download nikic/php-parser from dist: The "
f59bbe44bf" file could not be written to /var/www/bookstack/vendor/composer/tmp-12e985414108bb70b728e57d401ba99e: failed to open stream: Permission deniedNow trying to download from source
Failed to download psy/psysh from dist: The "
1acec99d66" file could not be written to /var/www/bookstack/vendor/composer/tmp-f7be6f87b6a0597f7db3f1f92be4b237: failed to open stream: Permission deniedNow trying to download from source
Failed to download laravel/tinker from dist: The "
5062061b49" file could not be written to /var/www/bookstack/vendor/composer/tmp-ef7d025809c212d532c894adea2d954f: failed to open stream: Permission deniedNow trying to download from source
Failed to download aws/aws-sdk-php from dist: The "
337e447997" file could not be written to /var/www/bookstack/vendor/composer/tmp-d0cbacc884eed31b734928ae3f5e2128: failed to open stream: Permission deniedNow trying to download from source
Failed to download phpseclib/phpseclib from dist: The "
dbc2307d5c" file could not be written to /var/www/bookstack/vendor/composer/tmp-31c01ceb0d65fb9f8f31cd6ab01d4ab2: failed to open stream: Permission deniedNow trying to download from source
Update of symfony/var-dumper failed
Update of symfony/error-handler failed
Update of nesbot/carbon failed
Update of doctrine/dbal failed
Update of nikic/php-parser failed
Update of psy/psysh failed
Uninstall of laravel/ui failed
Update of symfony/polyfill-iconv failed
Update of symfony/polyfill-php80 failed
Update of symfony/polyfill-mbstring failed
Update of symfony/polyfill-ctype failed
Update of vlucas/phpdotenv failed
Update of tijsverkoyen/css-to-inline-styles failed
Update of symfony/routing failed
Update of symfony/polyfill-php72 failed
Update of symfony/polyfill-intl-normalizer failed
0/24 [>---------------------------] 0% Update of symfony/polyfill-intl-idn failed
Update of symfony/polyfill-php73 failed
Update of symfony/polyfill-intl-grapheme failed
3/24 [===>------------------------] 12% Update of symfony/mime failed
Update of symfony/http-foundation failed
Update of symfony/string failed
Update of symfony/console failed
Update of symfony/polyfill-php81 failed
Update of symfony/translation failed
Update of symfony/http-kernel failed
Update of league/flysystem failed
Update of laravel/serializable-closure failed
Update of dragonmantank/cron-expression failed
Update of phenx/php-svg-lib failed
Update of doctrine/inflector failed
Update of dompdf/dompdf failed
Update of doctrine/event-manager failed
Update of guzzlehttp/psr7 failed
Update of laravel/socialite failed
Update of laravel/tinker failed
Update of filp/whoops failed
21/24 [========================>---] 87% Update of phpseclib/phpseclib failed
Update of laravel/framework failed
23/24 [==========================>-] 95% Update of aws/aws-sdk-php failed
24/24 [============================] 100%
[RuntimeException]
Could not delete /var/www/bookstack/vendor/bin/var-dump-server:
install [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--dry-run] [--dev] [--no-suggest] [--no-dev] [--no-autoloader] [--no-scripts] [--no-progress] [--no-install] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--] []...
@patsyk1 commented on GitHub (Dec 15, 2022):
sudo php artisan migrate
Do you really wish to run this command? (yes/no) [no]:
Migrating: 2022_07_16_170051_drop_joint_permission_type
Migrated: 2022_07_16_170051_drop_joint_permission_type (15,988.30ms)
Migrating: 2022_08_17_092941_create_references_table
In Connection.php line 712:
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'references' already exists (SQL: create table
refe rences(idbigint unsigned not null auto_increment primary key,from_idint unsigned not null,from_typevarchar(25) not null,
to_idint unsigned not null,to_typevarchar(25) not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')
In Connection.php line 501:
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'references' already exists
@patsyk1 commented on GitHub (Dec 15, 2022):
@ssddanbrown I realise I've given you what was outputted when the update was initially run. Do you need me to re-run the above and provide outputs?
@ssddanbrown commented on GitHub (Dec 15, 2022):
Okay, looks like there are a couple of issues at play right now:
composer install --no-devstep is not completing properly due to permission errors. Thevendor/folder in the BookStack directory needs to be fully writable by the user running the command.To fix 1, you'll need to run the command with a more privileged user (or via
sudofor example) or update the permissions of all in that folder. Let me know if you need guidance on that, just confirm the user used to run commands.To fix 2, You'd need to drop the
referencestable in the bookstack database. Let me know if you need guidance on this. Ideally backup the system/database before attempting any changes.@patsyk1 commented on GitHub (Dec 15, 2022):
Thanks @ssddanbrown.
Could you provide some guidance on fix 2. Backing up database and files I can do, but SQL is a weak point.
I have a checkpoint of Ubuntu install prior to the updated. So I'll roll back to this and elevate the composer install --no-dev step.
Many thanks in advance.
@ssddanbrown commented on GitHub (Dec 15, 2022):
Sure. In the below, replaced any
<variables>marked as so, including the angled quotes.Use the variables from your
/var/www/bookstack/.envfile.Then re-run the update commands if all was successfull.
Upon any error, record and report back the first error without progressing. Errors can be different a second time around so it's important we see the first errors.
@patsyk1 commented on GitHub (Dec 15, 2022):
Hi @ssddanbrown,
Dropping that table worked and I was able to run sudo php artisan migrate. However, now I have the same issue as before (when I updated to 22.09.01) wherein there are a large number of Books, Chapters and Pages missing.
Restoring the database then just takes me back to the above errors again. :)
@ssddanbrown commented on GitHub (Dec 15, 2022):
Okay, this indicates that the database might have been out of sync with the codebase before, which may have led to the further errors you've solved above. This is just a case of the permission handling though, regenerating the "cached" permissions via this command should solve this particular issue. Just need to run this from your BookStack folder.
@patsyk1 commented on GitHub (Dec 15, 2022):
Brilliant - that's done it. Many thanks, @ssddanbrown. Very much appreciate the quick responses and help here.
Bookstack is a great product so I look forward to seeing future updates and watching it grow in popularity!
@ssddanbrown commented on GitHub (Dec 16, 2022):
Awesome, Good to hear! Will therefore close this off.