[PR #5457] [MERGED] Sort rules #6497

Closed
opened 2026-02-05 10:33:54 +03:00 by OVERLORD · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/BookStackApp/BookStack/pull/5457
Author: @ssddanbrown
Created: 1/30/2025
Status: Merged
Merged: 2/11/2025
Merged by: @ssddanbrown

Base: developmentHead: sort_sets


📝 Commits (10+)

  • ac0cd99 Sorting: Reorganised book sort code to its own directory
  • 5b0cb3d Sorting: Extracted URL sort helper to own class
  • b2ac3e0 Sorting: Added SortSet model & migration
  • a34023f Sorting: Added content misses from last commit, started settings
  • bf8a84a Sorting: Started sort set routes and form
  • d28278b Sorting: Added sort set form manager UI JS
  • b897af2 Sorting: Finished main sort set CRUD work
  • 7093daa Sorting: Connected up default sort setting for books
  • c13ce18 Sorting: Added book autosort logic
  • ccd9468 Sorting: Improved sort set display, delete, added action on edit

📊 Changes

52 files changed (+2019 additions, -549 deletions)

View changed files

📝 app/Activity/ActivityType.php (+4 -0)
📝 app/Activity/Controllers/AuditLogController.php (+2 -0)
📝 app/App/helpers.php (+0 -32)
app/Console/Commands/AssignSortRuleCommand.php (+99 -0)
📝 app/Entities/Models/Book.php (+11 -0)
📝 app/Entities/Repos/BaseRepo.php (+15 -0)
📝 app/Entities/Repos/BookRepo.php (+7 -0)
📝 app/Entities/Repos/ChapterRepo.php (+6 -0)
📝 app/Entities/Repos/PageRepo.php (+6 -0)
📝 app/Entities/Tools/BookContents.php (+2 -207)
📝 app/Sorting/BookSortController.php (+28 -14)
📝 app/Sorting/BookSortMap.php (+1 -1)
📝 app/Sorting/BookSortMapItem.php (+1 -1)
app/Sorting/BookSorter.php (+284 -0)
app/Sorting/SortRule.php (+63 -0)
app/Sorting/SortRuleController.php (+114 -0)
app/Sorting/SortRuleOperation.php (+68 -0)
app/Sorting/SortSetOperationComparisons.php (+69 -0)
app/Sorting/SortUrl.php (+49 -0)
📝 database/factories/Entities/Models/BookFactory.php (+3 -1)

...and 32 more files

📄 Description

Allows centrally managed (admin) sets of sort rules which can be applied to books.

Related to #2065, touches upon #1777

Todo

  • Book level control UI
    • However done, consider how this is reflected in book sort UI
  • Consider what to do on sort set change (reapply to all assigned books)?
  • Better delete UX? (control/visibility of assigned books)
  • Show assigned books?
  • CLI to mass apply to books?
  • Consider effect of timestamp touching.
  • Testing
    • Test sort set settings screens/actions
    • Test actual sort events (page creation, chapter update etc..).

Doc Updates

  • Update organising content page with guidance on sort rules, and maybe details of sort options.
  • Upgrade notice: Basic sort changes will no longer touch the update date of chapters/pages.
  • Commands: Document bookstack:assign-sort-rule

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/BookStackApp/BookStack/pull/5457 **Author:** [@ssddanbrown](https://github.com/ssddanbrown) **Created:** 1/30/2025 **Status:** ✅ Merged **Merged:** 2/11/2025 **Merged by:** [@ssddanbrown](https://github.com/ssddanbrown) **Base:** `development` ← **Head:** `sort_sets` --- ### 📝 Commits (10+) - [`ac0cd99`](https://github.com/BookStackApp/BookStack/commit/ac0cd9995d8b420e33e392ba82d40bde8df94205) Sorting: Reorganised book sort code to its own directory - [`5b0cb3d`](https://github.com/BookStackApp/BookStack/commit/5b0cb3dd506c108b5d5d13c5c07c4f02e6107608) Sorting: Extracted URL sort helper to own class - [`b2ac3e0`](https://github.com/BookStackApp/BookStack/commit/b2ac3e0834172e2eaf70d4c893c90704b5aa9bf8) Sorting: Added SortSet model & migration - [`a34023f`](https://github.com/BookStackApp/BookStack/commit/a34023f715575dcf64f0c023cea81af9aa1364e8) Sorting: Added content misses from last commit, started settings - [`bf8a84a`](https://github.com/BookStackApp/BookStack/commit/bf8a84a8b1dd02578e6b5e2b39882902809f112a) Sorting: Started sort set routes and form - [`d28278b`](https://github.com/BookStackApp/BookStack/commit/d28278bba63eaa13d7ab691379b4b741c1fb83e6) Sorting: Added sort set form manager UI JS - [`b897af2`](https://github.com/BookStackApp/BookStack/commit/b897af2ed034088193986c8526be9606edaca7d5) Sorting: Finished main sort set CRUD work - [`7093daa`](https://github.com/BookStackApp/BookStack/commit/7093daa49de63e237d442709a93a03b5acc4f323) Sorting: Connected up default sort setting for books - [`c13ce18`](https://github.com/BookStackApp/BookStack/commit/c13ce1883708c184d14b3be10734894ddf7c9e00) Sorting: Added book autosort logic - [`ccd9468`](https://github.com/BookStackApp/BookStack/commit/ccd94684ebc5d8b14a9fa4e7b0808501b3c80cd9) Sorting: Improved sort set display, delete, added action on edit ### 📊 Changes **52 files changed** (+2019 additions, -549 deletions) <details> <summary>View changed files</summary> 📝 `app/Activity/ActivityType.php` (+4 -0) 📝 `app/Activity/Controllers/AuditLogController.php` (+2 -0) 📝 `app/App/helpers.php` (+0 -32) ➕ `app/Console/Commands/AssignSortRuleCommand.php` (+99 -0) 📝 `app/Entities/Models/Book.php` (+11 -0) 📝 `app/Entities/Repos/BaseRepo.php` (+15 -0) 📝 `app/Entities/Repos/BookRepo.php` (+7 -0) 📝 `app/Entities/Repos/ChapterRepo.php` (+6 -0) 📝 `app/Entities/Repos/PageRepo.php` (+6 -0) 📝 `app/Entities/Tools/BookContents.php` (+2 -207) 📝 `app/Sorting/BookSortController.php` (+28 -14) 📝 `app/Sorting/BookSortMap.php` (+1 -1) 📝 `app/Sorting/BookSortMapItem.php` (+1 -1) ➕ `app/Sorting/BookSorter.php` (+284 -0) ➕ `app/Sorting/SortRule.php` (+63 -0) ➕ `app/Sorting/SortRuleController.php` (+114 -0) ➕ `app/Sorting/SortRuleOperation.php` (+68 -0) ➕ `app/Sorting/SortSetOperationComparisons.php` (+69 -0) ➕ `app/Sorting/SortUrl.php` (+49 -0) 📝 `database/factories/Entities/Models/BookFactory.php` (+3 -1) _...and 32 more files_ </details> ### 📄 Description Allows centrally managed (admin) sets of sort rules which can be applied to books. Related to #2065, touches upon #1777 ### Todo - [x] Book level control UI - However done, consider how this is reflected in book sort UI - [x] Consider what to do on sort set change (reapply to all assigned books)? - [x] Better delete UX? (control/visibility of assigned books) - [x] Show assigned books? - [x] CLI to mass apply to books? - [x] Consider effect of timestamp touching. - [x] Testing - [x] Test sort set settings screens/actions - [x] Test actual sort events (page creation, chapter update etc..). ### Doc Updates - Update [organising content](https://www.bookstackapp.com/docs/user/organising-content/#sorting-books) page with guidance on sort rules, and maybe details of sort options. - Upgrade notice: Basic sort changes will no longer touch the update date of chapters/pages. - Commands: Document `bookstack:assign-sort-rule` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
OVERLORD added the pull-request label 2026-02-05 10:33:54 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/BookStack#6497