From b6110ed3cd15cf9d0472f1ccced3dbe6fdc7db76 Mon Sep 17 00:00:00 2001 From: Joshua Booth Date: Tue, 13 May 2025 20:17:36 +0100 Subject: [PATCH 01/51] Add settings for number of books/shelves that will be displayed per page --- app/App/HomeController.php | 4 +-- app/Entities/Controllers/BookController.php | 2 +- .../Controllers/BookshelfController.php | 2 +- lang/en/settings.php | 4 +++ .../settings/categories/sorting.blade.php | 34 +++++++++++++++++++ 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/app/App/HomeController.php b/app/App/HomeController.php index 0585e0af5..7ec8b0af2 100644 --- a/app/App/HomeController.php +++ b/app/App/HomeController.php @@ -83,7 +83,7 @@ class HomeController extends Controller if ($homepageOption === 'bookshelves') { $shelves = $this->queries->shelves->visibleForListWithCover() ->orderBy($commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-shelves-per-page', '18'))); $data = array_merge($commonData, ['shelves' => $shelves]); return view('home.shelves', $data); @@ -92,7 +92,7 @@ class HomeController extends Controller if ($homepageOption === 'books') { $books = $this->queries->books->visibleForListWithCover() ->orderBy($commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-books-per-page', '18'))); $data = array_merge($commonData, ['books' => $books]); return view('home.books', $data); diff --git a/app/Entities/Controllers/BookController.php b/app/Entities/Controllers/BookController.php index b1685081a..a9f0d34dc 100644 --- a/app/Entities/Controllers/BookController.php +++ b/app/Entities/Controllers/BookController.php @@ -48,7 +48,7 @@ class BookController extends Controller $books = $this->queries->visibleForListWithCover() ->orderBy($listOptions->getSort(), $listOptions->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-books-per-page', '18'))); $recents = $this->isSignedIn() ? $this->queries->recentlyViewedForCurrentUser()->take(4)->get() : false; $popular = $this->queries->popularForList()->take(4)->get(); $new = $this->queries->visibleForList()->orderBy('created_at', 'desc')->take(4)->get(); diff --git a/app/Entities/Controllers/BookshelfController.php b/app/Entities/Controllers/BookshelfController.php index 6cedd23e7..da84cd447 100644 --- a/app/Entities/Controllers/BookshelfController.php +++ b/app/Entities/Controllers/BookshelfController.php @@ -42,7 +42,7 @@ class BookshelfController extends Controller $shelves = $this->queries->visibleForListWithCover() ->orderBy($listOptions->getSort(), $listOptions->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-shelves-per-page', '18'))); $recents = $this->isSignedIn() ? $this->queries->recentlyViewedForCurrentUser()->get() : false; $popular = $this->queries->popularForList()->get(); $new = $this->queries->visibleForList() diff --git a/lang/en/settings.php b/lang/en/settings.php index 82a4ade5d..9e49197c0 100644 --- a/lang/en/settings.php +++ b/lang/en/settings.php @@ -76,6 +76,10 @@ return [ // Sorting Settings 'sorting' => 'Sorting', + 'sorting_shelves_per_page' => 'Shelves Per Page', + 'sorting_shelves_per_page_desc' => 'Sets the number of shelves shown per page in shelf listings.', + 'sorting_books_per_page' => 'Books Per Page', + 'sorting_books_per_page_desc' => 'Sets the number of books shown per page in book listings.', 'sorting_book_default' => 'Default Book Sort', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', diff --git a/resources/views/settings/categories/sorting.blade.php b/resources/views/settings/categories/sorting.blade.php index 9d1d9814b..4aff11bd2 100644 --- a/resources/views/settings/categories/sorting.blade.php +++ b/resources/views/settings/categories/sorting.blade.php @@ -10,6 +10,40 @@ {{ csrf_field() }} +
+
+ +

{{ trans('settings.sorting_shelves_per_page_desc') }}

+
+
+ +
+
+ +
+
+ +

{{ trans('settings.sorting_books_per_page_desc') }}

+
+
+ +
+
+
From 870f3c58c0a464548882b0b95fea6bf5923963d5 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 22 Nov 2025 12:24:36 +0000 Subject: [PATCH 02/51] DB Testing: Updated supported DB list, added readme Also fixed potentally flaky GIf test to be more accurate with single frame GIF images. --- dev/docker/db-testing/Dockerfile | 4 ++-- dev/docker/db-testing/readme.md | 32 ++++++++++++++++++++++++++++++++ dev/docker/db-testing/run.sh | 2 -- tests/Uploads/ImageTest.php | 8 ++++---- 4 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 dev/docker/db-testing/readme.md diff --git a/dev/docker/db-testing/Dockerfile b/dev/docker/db-testing/Dockerfile index 69b07a2b5..618f5bb82 100644 --- a/dev/docker/db-testing/Dockerfile +++ b/dev/docker/db-testing/Dockerfile @@ -19,8 +19,8 @@ ARG BRANCH=development # Download BookStack & install PHP deps RUN mkdir -p /var/www && \ git clone https://github.com/bookstackapp/bookstack.git --branch "$BRANCH" --single-branch /var/www/bookstack && \ - cd /var/www/bookstack && \ - wget https://raw.githubusercontent.com/composer/getcomposer.org/f3108f64b4e1c1ce6eb462b159956461592b3e3e/web/installer -O - -q | php -- --quiet --filename=composer && \ + cd /var/www/bookstack && \ + wget https://raw.githubusercontent.com/composer/getcomposer.org/f3108f64b4e1c1ce6eb462b159956461592b3e3e/web/installer -O - -q | php -- --quiet --filename=composer && \ php composer install # Set the BookStack dir as the default working dir diff --git a/dev/docker/db-testing/readme.md b/dev/docker/db-testing/readme.md new file mode 100644 index 000000000..89892408e --- /dev/null +++ b/dev/docker/db-testing/readme.md @@ -0,0 +1,32 @@ +# Database Testing Suite + +This docker setup is designed to run BookStack's test suite against each major database version we support +across MySQL and MariaDB to ensure compatibility and highlight any potential issues before a release. +This is a fairly slow and heavy process, so is designed to just be run manually before a release which +makes changes to the database schema, or a release which makes significant changes to database queries. + +### Running + +Everything is ran via the `run.sh` script. This will: + +- Optionally, accept a branch of BookStack to use for testing. +- Build the docker image from the `Dockerfile`. + - This will include a built-in copy of the chosen BookStack branch. +- Cycle through each major supported database version: + - Migrate and seed the database. + - Run the full PHP test suite. + +If there's a failure for a database version, the script will prompt if you'd like to continue or stop testing. + +This script should be ran from this `db-testing` directory: + +```bash +# Enter this directory +cd dev/docker/db-testing + +# Runs for the 'development' branch by default +./run.sh + +# Run for a specific branch +./run.sh v25-11 +``` diff --git a/dev/docker/db-testing/run.sh b/dev/docker/db-testing/run.sh index 9898e52ec..265b4f0f9 100755 --- a/dev/docker/db-testing/run.sh +++ b/dev/docker/db-testing/run.sh @@ -11,11 +11,9 @@ fi # List of database containers to test against containers=( - "mysql:5.7" "mysql:8.0" "mysql:8.4" "mysql:9.5" - "mariadb:10.2" "mariadb:10.6" "mariadb:10.11" "mariadb:11.4" diff --git a/tests/Uploads/ImageTest.php b/tests/Uploads/ImageTest.php index f36be8702..a11f9601f 100644 --- a/tests/Uploads/ImageTest.php +++ b/tests/Uploads/ImageTest.php @@ -720,15 +720,15 @@ class ImageTest extends TestCase $galleryFileSize = filesize($galleryThumbPath); // Basic scan of GIF content to check frame count - $originalFrameCount = count(explode("\x00\x21\xF9", file_get_contents($originalFile))); - $galleryFrameCount = count(explode("\x00\x21\xF9", file_get_contents($galleryThumbPath))); + $originalFrameCount = count(explode("\x00\x21\xF9", file_get_contents($originalFile))) - 1; + $galleryFrameCount = count(explode("\x00\x21\xF9", file_get_contents($galleryThumbPath))) - 1; $this->files->deleteAtRelativePath($relPath); $this->files->deleteAtRelativePath($galleryThumbRelPath); $this->assertNotEquals($originalFileSize, $galleryFileSize); - $this->assertEquals(3, $originalFrameCount); - $this->assertEquals(1, $galleryFrameCount); + $this->assertEquals(2, $originalFrameCount); + $this->assertLessThan(2, $galleryFrameCount); } protected function getTestProfileImage() From ad582ab9f8eb6354f7da8930ddb3f455e5279319 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 22 Nov 2025 12:40:30 +0000 Subject: [PATCH 03/51] DB testing: Prevented caching during build To prevent re-using code when re-run for same branch. --- dev/docker/db-testing/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/docker/db-testing/run.sh b/dev/docker/db-testing/run.sh index 265b4f0f9..fe6ee4508 100755 --- a/dev/docker/db-testing/run.sh +++ b/dev/docker/db-testing/run.sh @@ -3,7 +3,7 @@ BRANCH=${1:-development} # Build the container with a known name -docker build --build-arg BRANCH="$BRANCH" -t bookstack:db-testing . +docker build --no-cache --build-arg BRANCH="$BRANCH" -t bookstack:db-testing . if [ $? -eq 1 ]; then echo "Failed to build app container for testing" exit 1 From e64fc60bdf56360604c57395447c8c4b2fd330ae Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 23 Nov 2025 16:50:37 +0000 Subject: [PATCH 04/51] Slugs: Created history table to track changes --- ...11_23_161812_create_slug_history_table.php | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 database/migrations/2025_11_23_161812_create_slug_history_table.php diff --git a/database/migrations/2025_11_23_161812_create_slug_history_table.php b/database/migrations/2025_11_23_161812_create_slug_history_table.php new file mode 100644 index 000000000..df30bf030 --- /dev/null +++ b/database/migrations/2025_11_23_161812_create_slug_history_table.php @@ -0,0 +1,51 @@ +increments('id'); + $table->string('sluggable_type', 10)->index(); + $table->unsignedBigInteger('sluggable_id')->index(); + $table->string('slug')->index(); + $table->string('parent_slug')->nullable()->index(); + $table->timestamps(); + }); + + // Migrate in slugs from page revisions + $revisionSlugQuery = DB::table('page_revisions') + ->select([ + DB::raw('\'page\' as sluggable_type'), + 'page_id as sluggable_id', + 'slug', + 'book_slug as parent_slug', + DB::raw('min(created_at) as created_at'), + DB::raw('min(updated_at) as updated_at'), + ]) + ->where('type', '=', 'version') + ->groupBy(['sluggable_id', 'slug', 'parent_slug']); + + DB::table('slug_history')->insertUsing( + ['sluggable_type', 'sluggable_id', 'slug', 'parent_slug', 'created_at', 'updated_at'], + $revisionSlugQuery, + ); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('slug_history'); + } +}; From 291a807d98989804256f41c82ad297b789cf28e8 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 23 Nov 2025 23:29:30 +0000 Subject: [PATCH 05/51] Slugs: Added slug recording at points of generation Also moved some model-level helpers, which used app container resolution, to be injected services instead. --- app/App/SluggableInterface.php | 6 ++-- app/Entities/Models/BookChild.php | 26 -------------- app/Entities/Models/Entity.php | 11 ------ app/Entities/Repos/BaseRepo.php | 20 +++++++++-- app/Entities/Repos/ChapterRepo.php | 4 ++- app/Entities/Repos/PageRepo.php | 6 ++-- app/Entities/Tools/HierarchyTransformer.php | 5 +-- app/Entities/Tools/ParentChanger.php | 40 +++++++++++++++++++++ app/Entities/Tools/SlugGenerator.php | 24 ++++++++++++- app/Entities/Tools/SlugHistory.php | 40 +++++++++++++++++++++ app/Sorting/BookSorter.php | 4 ++- app/Users/Models/User.php | 11 ------ app/Users/UserRepo.php | 8 +++-- 13 files changed, 141 insertions(+), 64 deletions(-) create mode 100644 app/Entities/Tools/ParentChanger.php create mode 100644 app/Entities/Tools/SlugHistory.php diff --git a/app/App/SluggableInterface.php b/app/App/SluggableInterface.php index 96af49cd3..dd544f5ed 100644 --- a/app/App/SluggableInterface.php +++ b/app/App/SluggableInterface.php @@ -5,11 +5,9 @@ namespace BookStack\App; /** * Assigned to models that can have slugs. * Must have the below properties. + * + * @property string $slug */ interface SluggableInterface { - /** - * Regenerate the slug for this model. - */ - public function refreshSlug(): string; } diff --git a/app/Entities/Models/BookChild.php b/app/Entities/Models/BookChild.php index 4a2e52aed..7819f1614 100644 --- a/app/Entities/Models/BookChild.php +++ b/app/Entities/Models/BookChild.php @@ -2,7 +2,6 @@ namespace BookStack\Entities\Models; -use BookStack\References\ReferenceUpdater; use Illuminate\Database\Eloquent\Relations\BelongsTo; /** @@ -22,29 +21,4 @@ abstract class BookChild extends Entity { return $this->belongsTo(Book::class)->withTrashed(); } - - /** - * Change the book that this entity belongs to. - */ - public function changeBook(int $newBookId): self - { - $oldUrl = $this->getUrl(); - $this->book_id = $newBookId; - $this->unsetRelation('book'); - $this->refreshSlug(); - $this->save(); - - if ($oldUrl !== $this->getUrl()) { - app()->make(ReferenceUpdater::class)->updateEntityReferences($this, $oldUrl); - } - - // Update all child pages if a chapter - if ($this instanceof Chapter) { - foreach ($this->pages()->withTrashed()->get() as $page) { - $page->changeBook($newBookId); - } - } - - return $this; - } } diff --git a/app/Entities/Models/Entity.php b/app/Entities/Models/Entity.php index 641fe29d5..2949754e3 100644 --- a/app/Entities/Models/Entity.php +++ b/app/Entities/Models/Entity.php @@ -13,7 +13,6 @@ use BookStack\Activity\Models\Viewable; use BookStack\Activity\Models\Watch; use BookStack\App\Model; use BookStack\App\SluggableInterface; -use BookStack\Entities\Tools\SlugGenerator; use BookStack\Permissions\JointPermissionBuilder; use BookStack\Permissions\Models\EntityPermission; use BookStack\Permissions\Models\JointPermission; @@ -405,16 +404,6 @@ abstract class Entity extends Model implements app()->make(SearchIndex::class)->indexEntity(clone $this); } - /** - * {@inheritdoc} - */ - public function refreshSlug(): string - { - $this->slug = app()->make(SlugGenerator::class)->generate($this, $this->name); - - return $this->slug; - } - /** * {@inheritdoc} */ diff --git a/app/Entities/Repos/BaseRepo.php b/app/Entities/Repos/BaseRepo.php index fd88625cd..1a8985ad4 100644 --- a/app/Entities/Repos/BaseRepo.php +++ b/app/Entities/Repos/BaseRepo.php @@ -8,6 +8,8 @@ use BookStack\Entities\Models\HasCoverInterface; use BookStack\Entities\Models\HasDescriptionInterface; use BookStack\Entities\Models\Entity; use BookStack\Entities\Queries\PageQueries; +use BookStack\Entities\Tools\SlugGenerator; +use BookStack\Entities\Tools\SlugHistory; use BookStack\Exceptions\ImageUploadException; use BookStack\References\ReferenceStore; use BookStack\References\ReferenceUpdater; @@ -25,6 +27,8 @@ class BaseRepo protected ReferenceStore $referenceStore, protected PageQueries $pageQueries, protected BookSorter $bookSorter, + protected SlugGenerator $slugGenerator, + protected SlugHistory $slugHistory, ) { } @@ -43,7 +47,7 @@ class BaseRepo 'updated_by' => user()->id, 'owned_by' => user()->id, ]); - $entity->refreshSlug(); + $this->refreshSlug($entity); if ($entity instanceof HasDescriptionInterface) { $this->updateDescription($entity, $input); @@ -78,7 +82,7 @@ class BaseRepo $entity->updated_by = user()->id; if ($entity->isDirty('name') || empty($entity->slug)) { - $entity->refreshSlug(); + $this->refreshSlug($entity); } if ($entity instanceof HasDescriptionInterface) { @@ -155,4 +159,16 @@ class BaseRepo $entity->descriptionInfo()->set('', $input['description']); } } + + /** + * Refresh the slug for the given entity. + */ + public function refreshSlug(Entity $entity): void + { + if ($entity->id) { + $this->slugHistory->recordForEntity($entity); + } + + $this->slugGenerator->regenerateForEntity($entity); + } } diff --git a/app/Entities/Repos/ChapterRepo.php b/app/Entities/Repos/ChapterRepo.php index d5feb30fd..a528eece0 100644 --- a/app/Entities/Repos/ChapterRepo.php +++ b/app/Entities/Repos/ChapterRepo.php @@ -7,6 +7,7 @@ use BookStack\Entities\Models\Book; use BookStack\Entities\Models\Chapter; use BookStack\Entities\Queries\EntityQueries; use BookStack\Entities\Tools\BookContents; +use BookStack\Entities\Tools\ParentChanger; use BookStack\Entities\Tools\TrashCan; use BookStack\Exceptions\MoveOperationException; use BookStack\Exceptions\PermissionsException; @@ -21,6 +22,7 @@ class ChapterRepo protected BaseRepo $baseRepo, protected EntityQueries $entityQueries, protected TrashCan $trashCan, + protected ParentChanger $parentChanger, ) { } @@ -97,7 +99,7 @@ class ChapterRepo } return (new DatabaseTransaction(function () use ($chapter, $parent) { - $chapter = $chapter->changeBook($parent->id); + $this->parentChanger->changeBook($chapter, $parent->id); $chapter->rebuildPermissions(); Activity::add(ActivityType::CHAPTER_MOVE, $chapter); diff --git a/app/Entities/Repos/PageRepo.php b/app/Entities/Repos/PageRepo.php index f2e558210..bc590785d 100644 --- a/app/Entities/Repos/PageRepo.php +++ b/app/Entities/Repos/PageRepo.php @@ -12,6 +12,7 @@ use BookStack\Entities\Queries\EntityQueries; use BookStack\Entities\Tools\BookContents; use BookStack\Entities\Tools\PageContent; use BookStack\Entities\Tools\PageEditorType; +use BookStack\Entities\Tools\ParentChanger; use BookStack\Entities\Tools\TrashCan; use BookStack\Exceptions\MoveOperationException; use BookStack\Exceptions\PermissionsException; @@ -31,6 +32,7 @@ class PageRepo protected ReferenceStore $referenceStore, protected ReferenceUpdater $referenceUpdater, protected TrashCan $trashCan, + protected ParentChanger $parentChanger, ) { } @@ -242,7 +244,7 @@ class PageRepo } $page->updated_by = user()->id; - $page->refreshSlug(); + $this->baseRepo->refreshSlug($page); $page->save(); $page->indexForSearch(); $this->referenceStore->updateForEntity($page); @@ -284,7 +286,7 @@ class PageRepo return (new DatabaseTransaction(function () use ($page, $parent) { $page->chapter_id = ($parent instanceof Chapter) ? $parent->id : null; $newBookId = ($parent instanceof Chapter) ? $parent->book->id : $parent->id; - $page = $page->changeBook($newBookId); + $this->parentChanger->changeBook($page, $newBookId); $page->rebuildPermissions(); Activity::add(ActivityType::PAGE_MOVE, $page); diff --git a/app/Entities/Tools/HierarchyTransformer.php b/app/Entities/Tools/HierarchyTransformer.php index fa45fcd11..c58d29bd0 100644 --- a/app/Entities/Tools/HierarchyTransformer.php +++ b/app/Entities/Tools/HierarchyTransformer.php @@ -17,7 +17,8 @@ class HierarchyTransformer protected BookRepo $bookRepo, protected BookshelfRepo $shelfRepo, protected Cloner $cloner, - protected TrashCan $trashCan + protected TrashCan $trashCan, + protected ParentChanger $parentChanger, ) { } @@ -35,7 +36,7 @@ class HierarchyTransformer foreach ($chapter->pages as $page) { $page->chapter_id = 0; $page->save(); - $page->changeBook($book->id); + $this->parentChanger->changeBook($page, $book->id); } $this->trashCan->destroyEntity($chapter); diff --git a/app/Entities/Tools/ParentChanger.php b/app/Entities/Tools/ParentChanger.php new file mode 100644 index 000000000..00ce42aae --- /dev/null +++ b/app/Entities/Tools/ParentChanger.php @@ -0,0 +1,40 @@ +getUrl(); + + $child->book_id = $newBookId; + $child->unsetRelation('book'); + $this->slugGenerator->regenerateForEntity($child); + $child->save(); + + if ($oldUrl !== $child->getUrl()) { + $this->referenceUpdater->updateEntityReferences($child, $oldUrl); + } + + // Update all child pages if a chapter + if ($child instanceof Chapter) { + foreach ($child->pages()->withTrashed()->get() as $page) { + $this->changeBook($page, $newBookId); + } + } + } +} diff --git a/app/Entities/Tools/SlugGenerator.php b/app/Entities/Tools/SlugGenerator.php index fb9123187..6eec84a91 100644 --- a/app/Entities/Tools/SlugGenerator.php +++ b/app/Entities/Tools/SlugGenerator.php @@ -5,12 +5,14 @@ namespace BookStack\Entities\Tools; use BookStack\App\Model; use BookStack\App\SluggableInterface; use BookStack\Entities\Models\BookChild; +use BookStack\Entities\Models\Entity; +use BookStack\Users\Models\User; use Illuminate\Support\Str; class SlugGenerator { /** - * Generate a fresh slug for the given entity. + * Generate a fresh slug for the given item. * The slug will be generated so that it doesn't conflict within the same parent item. */ public function generate(SluggableInterface&Model $model, string $slugSource): string @@ -23,6 +25,26 @@ class SlugGenerator return $slug; } + /** + * Regenerate the slug for the given entity. + */ + public function regenerateForEntity(Entity $entity): string + { + $entity->slug = $this->generate($entity, $entity->name); + + return $entity->slug; + } + + /** + * Regenerate the slug for a user. + */ + public function regenerateForUser(User $user): string + { + $user->slug = $this->generate($user, $user->name); + + return $user->slug; + } + /** * Format a name as a URL slug. */ diff --git a/app/Entities/Tools/SlugHistory.php b/app/Entities/Tools/SlugHistory.php new file mode 100644 index 000000000..5114d67c7 --- /dev/null +++ b/app/Entities/Tools/SlugHistory.php @@ -0,0 +1,40 @@ +getLatestEntryForEntity($entity); + if ($latest && $latest->slug === $entity->slug && $latest->parent_slug === $entity->getParent()?->slug) { + return; + } + + $info = [ + 'sluggable_type' => $entity->getMorphClass(), + 'sluggable_id' => $entity->id, + 'slug' => $entity->slug, + 'parent_slug' => $entity->getParent()?->slug, + 'created_at' => now(), + 'updated_at' => now(), + ]; + + DB::table('slug_history')->insert($info); + } + + protected function getLatestEntryForEntity(Entity $entity): \stdClass|null + { + return DB::table('slug_history') + ->where('sluggable_type', '=', $entity->getMorphClass()) + ->where('sluggable_id', '=', $entity->id) + ->orderBy('created_at', 'desc') + ->first(); + } +} diff --git a/app/Sorting/BookSorter.php b/app/Sorting/BookSorter.php index 99e307e35..b4f93d47b 100644 --- a/app/Sorting/BookSorter.php +++ b/app/Sorting/BookSorter.php @@ -8,12 +8,14 @@ use BookStack\Entities\Models\Chapter; use BookStack\Entities\Models\Entity; use BookStack\Entities\Models\Page; use BookStack\Entities\Queries\EntityQueries; +use BookStack\Entities\Tools\ParentChanger; use BookStack\Permissions\Permission; class BookSorter { public function __construct( protected EntityQueries $queries, + protected ParentChanger $parentChanger, ) { } @@ -155,7 +157,7 @@ class BookSorter // Action the required changes if ($bookChanged) { - $model = $model->changeBook($newBook->id); + $this->parentChanger->changeBook($model, $newBook->id); } if ($model instanceof Page && $chapterChanged) { diff --git a/app/Users/Models/User.php b/app/Users/Models/User.php index 8bbf11695..50efdcdad 100644 --- a/app/Users/Models/User.php +++ b/app/Users/Models/User.php @@ -11,7 +11,6 @@ use BookStack\Activity\Models\Watch; use BookStack\Api\ApiToken; use BookStack\App\Model; use BookStack\App\SluggableInterface; -use BookStack\Entities\Tools\SlugGenerator; use BookStack\Permissions\Permission; use BookStack\Translation\LocaleDefinition; use BookStack\Translation\LocaleManager; @@ -358,14 +357,4 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon { return "({$this->id}) {$this->name}"; } - - /** - * {@inheritdoc} - */ - public function refreshSlug(): string - { - $this->slug = app()->make(SlugGenerator::class)->generate($this, $this->name); - - return $this->slug; - } } diff --git a/app/Users/UserRepo.php b/app/Users/UserRepo.php index 894d7c01f..2c0897cef 100644 --- a/app/Users/UserRepo.php +++ b/app/Users/UserRepo.php @@ -5,6 +5,7 @@ namespace BookStack\Users; use BookStack\Access\UserInviteException; use BookStack\Access\UserInviteService; use BookStack\Activity\ActivityType; +use BookStack\Entities\Tools\SlugGenerator; use BookStack\Exceptions\NotifyException; use BookStack\Exceptions\UserUpdateException; use BookStack\Facades\Activity; @@ -21,7 +22,8 @@ class UserRepo { public function __construct( protected UserAvatars $userAvatar, - protected UserInviteService $inviteService + protected UserInviteService $inviteService, + protected SlugGenerator $slugGenerator, ) { } @@ -63,7 +65,7 @@ class UserRepo $user->email_confirmed = $emailConfirmed; $user->external_auth_id = $data['external_auth_id'] ?? ''; - $user->refreshSlug(); + $this->slugGenerator->regenerateForUser($user); $user->save(); if (!empty($data['language'])) { @@ -109,7 +111,7 @@ class UserRepo { if (!empty($data['name'])) { $user->name = $data['name']; - $user->refreshSlug(); + $this->slugGenerator->regenerateForUser($user); } if (!empty($data['email']) && $manageUsersAllowed) { From dd5375f480bc7f8ee48e376d8fff1bee9f6bc542 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Mon, 24 Nov 2025 10:46:24 +0000 Subject: [PATCH 06/51] Slugs: Fixed storage bugs, added testing coverage --- app/Entities/Repos/BaseRepo.php | 5 +- app/Entities/Tools/SlugHistory.php | 12 ++- tests/Entity/BookTest.php | 24 ------ tests/Entity/PageTest.php | 22 ----- tests/Entity/SlugTest.php | 131 +++++++++++++++++++++++++++++ 5 files changed, 143 insertions(+), 51 deletions(-) create mode 100644 tests/Entity/SlugTest.php diff --git a/app/Entities/Repos/BaseRepo.php b/app/Entities/Repos/BaseRepo.php index 1a8985ad4..717e9c9f8 100644 --- a/app/Entities/Repos/BaseRepo.php +++ b/app/Entities/Repos/BaseRepo.php @@ -165,10 +165,7 @@ class BaseRepo */ public function refreshSlug(Entity $entity): void { - if ($entity->id) { - $this->slugHistory->recordForEntity($entity); - } - + $this->slugHistory->recordForEntity($entity); $this->slugGenerator->regenerateForEntity($entity); } } diff --git a/app/Entities/Tools/SlugHistory.php b/app/Entities/Tools/SlugHistory.php index 5114d67c7..dc4527a00 100644 --- a/app/Entities/Tools/SlugHistory.php +++ b/app/Entities/Tools/SlugHistory.php @@ -2,6 +2,7 @@ namespace BookStack\Entities\Tools; +use BookStack\Entities\Models\BookChild; use BookStack\Entities\Models\Entity; use Illuminate\Support\Facades\DB; @@ -12,16 +13,25 @@ class SlugHistory */ public function recordForEntity(Entity $entity): void { + if (!$entity->id || !$entity->slug) { + return; + } + $latest = $this->getLatestEntryForEntity($entity); if ($latest && $latest->slug === $entity->slug && $latest->parent_slug === $entity->getParent()?->slug) { return; } + $parentSlug = null; + if ($entity instanceof BookChild) { + $parentSlug = $entity->book()->first()?->slug; + } + $info = [ 'sluggable_type' => $entity->getMorphClass(), 'sluggable_id' => $entity->id, 'slug' => $entity->slug, - 'parent_slug' => $entity->getParent()?->slug, + 'parent_slug' => $parentSlug, 'created_at' => now(), 'updated_at' => now(), ]; diff --git a/tests/Entity/BookTest.php b/tests/Entity/BookTest.php index 543c4e8bb..545d6b305 100644 --- a/tests/Entity/BookTest.php +++ b/tests/Entity/BookTest.php @@ -238,30 +238,6 @@ class BookTest extends TestCase $this->assertEquals('list', setting()->getUser($editor, 'books_view_type')); } - public function test_slug_multi_byte_url_safe() - { - $book = $this->entities->newBook([ - 'name' => 'информация', - ]); - - $this->assertEquals('informaciia', $book->slug); - - $book = $this->entities->newBook([ - 'name' => '¿Qué?', - ]); - - $this->assertEquals('que', $book->slug); - } - - public function test_slug_format() - { - $book = $this->entities->newBook([ - 'name' => 'PartA / PartB / PartC', - ]); - - $this->assertEquals('parta-partb-partc', $book->slug); - } - public function test_description_limited_to_specific_html() { $book = $this->entities->book(); diff --git a/tests/Entity/PageTest.php b/tests/Entity/PageTest.php index b9e1294e0..afe15f4d4 100644 --- a/tests/Entity/PageTest.php +++ b/tests/Entity/PageTest.php @@ -269,28 +269,6 @@ class PageTest extends TestCase ]); } - public function test_old_page_slugs_redirect_to_new_pages() - { - $page = $this->entities->page(); - - // Need to save twice since revisions are not generated in seeder. - $this->asAdmin()->put($page->getUrl(), [ - 'name' => 'super test', - 'html' => '

', - ]); - - $page->refresh(); - $pageUrl = $page->getUrl(); - - $this->put($pageUrl, [ - 'name' => 'super test page', - 'html' => '

', - ]); - - $this->get($pageUrl) - ->assertRedirect("/books/{$page->book->slug}/page/super-test-page"); - } - public function test_page_within_chapter_deletion_returns_to_chapter() { $chapter = $this->entities->chapter(); diff --git a/tests/Entity/SlugTest.php b/tests/Entity/SlugTest.php new file mode 100644 index 000000000..d60daff24 --- /dev/null +++ b/tests/Entity/SlugTest.php @@ -0,0 +1,131 @@ +entities->newBook([ + 'name' => 'информация', + ]); + + $this->assertEquals('informaciia', $book->slug); + + $book = $this->entities->newBook([ + 'name' => '¿Qué?', + ]); + + $this->assertEquals('que', $book->slug); + } + + public function test_slug_format() + { + $book = $this->entities->newBook([ + 'name' => 'PartA / PartB / PartC', + ]); + + $this->assertEquals('parta-partb-partc', $book->slug); + } + + public function test_old_page_slugs_redirect_to_new_pages() + { + $page = $this->entities->page(); + + // Need to save twice since revisions are not generated in seeder. + $this->asAdmin()->put($page->getUrl(), [ + 'name' => 'super test', + 'html' => '

', + ]); + + $page->refresh(); + $pageUrl = $page->getUrl(); + + $this->put($pageUrl, [ + 'name' => 'super test page', + 'html' => '

', + ]); + + $this->get($pageUrl) + ->assertRedirect("/books/{$page->book->slug}/page/super-test-page"); + } + + public function test_slugs_recorded_in_history_on_page_update() + { + $page = $this->entities->page(); + $this->asAdmin()->put($page->getUrl(), [ + 'name' => 'new slug', + 'html' => '

', + ]); + + $oldSlug = $page->slug; + $page->refresh(); + $this->assertNotEquals($oldSlug, $page->slug); + + $this->assertDatabaseHas('slug_history', [ + 'sluggable_id' => $page->id, + 'sluggable_type' => 'page', + 'slug' => $oldSlug, + 'parent_slug' => $page->book->slug, + ]); + } + + public function test_slugs_recorded_in_history_on_chapter_update() + { + $chapter = $this->entities->chapter(); + $this->asAdmin()->put($chapter->getUrl(), [ + 'name' => 'new slug', + ]); + + $oldSlug = $chapter->slug; + $chapter->refresh(); + $this->assertNotEquals($oldSlug, $chapter->slug); + + $this->assertDatabaseHas('slug_history', [ + 'sluggable_id' => $chapter->id, + 'sluggable_type' => 'chapter', + 'slug' => $oldSlug, + 'parent_slug' => $chapter->book->slug, + ]); + } + + public function test_slugs_recorded_in_history_on_book_update() + { + $book = $this->entities->book(); + $this->asAdmin()->put($book->getUrl(), [ + 'name' => 'new slug', + ]); + + $oldSlug = $book->slug; + $book->refresh(); + $this->assertNotEquals($oldSlug, $book->slug); + + $this->assertDatabaseHas('slug_history', [ + 'sluggable_id' => $book->id, + 'sluggable_type' => 'book', + 'slug' => $oldSlug, + 'parent_slug' => null, + ]); + } + + public function test_slugs_recorded_in_history_on_shelf_update() + { + $shelf = $this->entities->shelf(); + $this->asAdmin()->put($shelf->getUrl(), [ + 'name' => 'new slug', + ]); + + $oldSlug = $shelf->slug; + $shelf->refresh(); + $this->assertNotEquals($oldSlug, $shelf->slug); + + $this->assertDatabaseHas('slug_history', [ + 'sluggable_id' => $shelf->id, + 'sluggable_type' => 'bookshelf', + 'slug' => $oldSlug, + 'parent_slug' => null, + ]); + } +} From dd393691b17370f3967980b19daf95b206beac15 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Mon, 24 Nov 2025 13:55:11 +0000 Subject: [PATCH 07/51] Slugs: Added lookup system using history Switched page lookup to use this. --- app/Entities/Controllers/PageController.php | 5 +-- app/Entities/Models/SlugHistory.php | 25 +++++++++++ app/Entities/Queries/EntityQueries.php | 27 +++++++++++- app/Entities/Tools/SlugHistory.php | 49 ++++++++++++++++----- 4 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 app/Entities/Models/SlugHistory.php diff --git a/app/Entities/Controllers/PageController.php b/app/Entities/Controllers/PageController.php index 603d015ef..a648bc298 100644 --- a/app/Entities/Controllers/PageController.php +++ b/app/Entities/Controllers/PageController.php @@ -17,7 +17,6 @@ use BookStack\Entities\Tools\PageContent; use BookStack\Entities\Tools\PageEditActivity; use BookStack\Entities\Tools\PageEditorData; use BookStack\Exceptions\NotFoundException; -use BookStack\Exceptions\NotifyException; use BookStack\Exceptions\PermissionsException; use BookStack\Http\Controller; use BookStack\Permissions\Permission; @@ -140,9 +139,7 @@ class PageController extends Controller try { $page = $this->queries->findVisibleBySlugsOrFail($bookSlug, $pageSlug); } catch (NotFoundException $e) { - $revision = $this->entityQueries->revisions->findLatestVersionBySlugs($bookSlug, $pageSlug); - $page = $revision->page ?? null; - + $page = $this->entityQueries->findVisibleByOldSlugs('page', $pageSlug, $bookSlug); if (is_null($page)) { throw $e; } diff --git a/app/Entities/Models/SlugHistory.php b/app/Entities/Models/SlugHistory.php new file mode 100644 index 000000000..2731fe749 --- /dev/null +++ b/app/Entities/Models/SlugHistory.php @@ -0,0 +1,25 @@ +hasMany(JointPermission::class, 'entity_id', 'sluggable_id') + ->whereColumn('joint_permissions.entity_type', '=', 'slug_history.sluggable_type'); + } +} diff --git a/app/Entities/Queries/EntityQueries.php b/app/Entities/Queries/EntityQueries.php index 91c6a4363..3ffa0adf3 100644 --- a/app/Entities/Queries/EntityQueries.php +++ b/app/Entities/Queries/EntityQueries.php @@ -4,6 +4,7 @@ namespace BookStack\Entities\Queries; use BookStack\Entities\Models\Entity; use BookStack\Entities\Models\EntityTable; +use BookStack\Entities\Tools\SlugHistory; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Query\Builder as QueryBuilder; use Illuminate\Database\Query\JoinClause; @@ -18,6 +19,7 @@ class EntityQueries public ChapterQueries $chapters, public PageQueries $pages, public PageRevisionQueries $revisions, + protected SlugHistory $slugHistory, ) { } @@ -31,9 +33,30 @@ class EntityQueries $explodedId = explode(':', $identifier); $entityType = $explodedId[0]; $entityId = intval($explodedId[1]); - $queries = $this->getQueriesForType($entityType); - return $queries->findVisibleById($entityId); + return $this->findVisibleById($entityType, $entityId); + } + + /** + * Find an entity by its ID. + */ + public function findVisibleById(string $type, int $id): ?Entity + { + $queries = $this->getQueriesForType($type); + return $queries->findVisibleById($id); + } + + /** + * Find an entity by looking up old slugs in the slug history. + */ + public function findVisibleByOldSlugs(string $type, string $slug, string $parentSlug = ''): ?Entity + { + $id = $this->slugHistory->lookupEntityIdUsingSlugs($type, $slug, $parentSlug); + if ($id === null) { + return null; + } + + return $this->findVisibleById($type, $id); } /** diff --git a/app/Entities/Tools/SlugHistory.php b/app/Entities/Tools/SlugHistory.php index dc4527a00..1584db9cf 100644 --- a/app/Entities/Tools/SlugHistory.php +++ b/app/Entities/Tools/SlugHistory.php @@ -4,10 +4,16 @@ namespace BookStack\Entities\Tools; use BookStack\Entities\Models\BookChild; use BookStack\Entities\Models\Entity; -use Illuminate\Support\Facades\DB; +use BookStack\Entities\Models\SlugHistory as SlugHistoryModel; +use BookStack\Permissions\PermissionApplicator; class SlugHistory { + public function __construct( + protected PermissionApplicator $permissions, + ) { + } + /** * Record the current slugs for the given entity. */ @@ -17,31 +23,52 @@ class SlugHistory return; } - $latest = $this->getLatestEntryForEntity($entity); - if ($latest && $latest->slug === $entity->slug && $latest->parent_slug === $entity->getParent()?->slug) { - return; - } - $parentSlug = null; if ($entity instanceof BookChild) { $parentSlug = $entity->book()->first()?->slug; } + $latest = $this->getLatestEntryForEntity($entity); + if ($latest && $latest->slug === $entity->slug && $latest->parent_slug === $parentSlug) { + return; + } + $info = [ 'sluggable_type' => $entity->getMorphClass(), 'sluggable_id' => $entity->id, 'slug' => $entity->slug, 'parent_slug' => $parentSlug, - 'created_at' => now(), - 'updated_at' => now(), ]; - DB::table('slug_history')->insert($info); + $entry = new SlugHistoryModel(); + $entry->forceFill($info); + $entry->save(); } - protected function getLatestEntryForEntity(Entity $entity): \stdClass|null + /** + * Find the latest visible entry for an entity which uses the given slug(s) in the history. + */ + public function lookupEntityIdUsingSlugs(string $type, string $slug, string $parentSlug = ''): ?int { - return DB::table('slug_history') + $query = SlugHistoryModel::query() + ->where('sluggable_type', '=', $type) + ->where('slug', '=', $slug); + + if ($parentSlug) { + $query->where('parent_slug', '=', $parentSlug); + } + + $query = $this->permissions->restrictEntityRelationQuery($query, 'slug_history', 'sluggable_id', 'sluggable_type'); + + /** @var SlugHistoryModel|null $result */ + $result = $query->orderBy('created_at', 'desc')->first(); + + return $result?->sluggable_id; + } + + protected function getLatestEntryForEntity(Entity $entity): SlugHistoryModel|null + { + return SlugHistoryModel::query() ->where('sluggable_type', '=', $entity->getMorphClass()) ->where('sluggable_id', '=', $entity->id) ->orderBy('created_at', 'desc') From c90816987c088e72a98f3ddb45d0cd6decff1b66 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Mon, 24 Nov 2025 19:49:34 +0000 Subject: [PATCH 08/51] Slugs: Rolled out history lookup to other types Added testing to cover. Also added batch recording of child slug pairs on book slug changes. --- app/Entities/Controllers/BookController.php | 13 +++- .../Controllers/BookshelfController.php | 13 +++- .../Controllers/ChapterController.php | 10 ++- app/Entities/Models/BookChild.php | 1 + app/Entities/Models/Entity.php | 8 ++ app/Entities/Tools/SlugHistory.php | 20 +++++ app/Entities/Tools/TrashCan.php | 3 +- tests/Entity/SlugTest.php | 77 ++++++++++++++++--- 8 files changed, 132 insertions(+), 13 deletions(-) diff --git a/app/Entities/Controllers/BookController.php b/app/Entities/Controllers/BookController.php index cbf7ffb79..0610c2ef5 100644 --- a/app/Entities/Controllers/BookController.php +++ b/app/Entities/Controllers/BookController.php @@ -8,6 +8,7 @@ use BookStack\Activity\Models\View; use BookStack\Activity\Tools\UserEntityWatchOptions; use BookStack\Entities\Queries\BookQueries; use BookStack\Entities\Queries\BookshelfQueries; +use BookStack\Entities\Queries\EntityQueries; use BookStack\Entities\Repos\BookRepo; use BookStack\Entities\Tools\BookContents; use BookStack\Entities\Tools\Cloner; @@ -31,6 +32,7 @@ class BookController extends Controller protected ShelfContext $shelfContext, protected BookRepo $bookRepo, protected BookQueries $queries, + protected EntityQueries $entityQueries, protected BookshelfQueries $shelfQueries, protected ReferenceFetcher $referenceFetcher, ) { @@ -127,7 +129,16 @@ class BookController extends Controller */ public function show(Request $request, ActivityQueries $activities, string $slug) { - $book = $this->queries->findVisibleBySlugOrFail($slug); + try { + $book = $this->queries->findVisibleBySlugOrFail($slug); + } catch (NotFoundException $exception) { + $book = $this->entityQueries->findVisibleByOldSlugs('book', $slug); + if (is_null($book)) { + throw $exception; + } + return redirect($book->getUrl()); + } + $bookChildren = (new BookContents($book))->getTree(true); $bookParentShelves = $book->shelves()->scopes('visible')->get(); diff --git a/app/Entities/Controllers/BookshelfController.php b/app/Entities/Controllers/BookshelfController.php index 8d7ffb8f9..c4b861c90 100644 --- a/app/Entities/Controllers/BookshelfController.php +++ b/app/Entities/Controllers/BookshelfController.php @@ -6,6 +6,7 @@ use BookStack\Activity\ActivityQueries; use BookStack\Activity\Models\View; use BookStack\Entities\Queries\BookQueries; use BookStack\Entities\Queries\BookshelfQueries; +use BookStack\Entities\Queries\EntityQueries; use BookStack\Entities\Repos\BookshelfRepo; use BookStack\Entities\Tools\ShelfContext; use BookStack\Exceptions\ImageUploadException; @@ -23,6 +24,7 @@ class BookshelfController extends Controller public function __construct( protected BookshelfRepo $shelfRepo, protected BookshelfQueries $queries, + protected EntityQueries $entityQueries, protected BookQueries $bookQueries, protected ShelfContext $shelfContext, protected ReferenceFetcher $referenceFetcher, @@ -105,7 +107,16 @@ class BookshelfController extends Controller */ public function show(Request $request, ActivityQueries $activities, string $slug) { - $shelf = $this->queries->findVisibleBySlugOrFail($slug); + try { + $shelf = $this->queries->findVisibleBySlugOrFail($slug); + } catch (NotFoundException $exception) { + $shelf = $this->entityQueries->findVisibleByOldSlugs('bookshelf', $slug); + if (is_null($shelf)) { + throw $exception; + } + return redirect($shelf->getUrl()); + } + $this->checkOwnablePermission(Permission::BookshelfView, $shelf); $listOptions = SimpleListOptions::fromRequest($request, 'shelf_books')->withSortOptions([ diff --git a/app/Entities/Controllers/ChapterController.php b/app/Entities/Controllers/ChapterController.php index a1af29de2..878ee42b5 100644 --- a/app/Entities/Controllers/ChapterController.php +++ b/app/Entities/Controllers/ChapterController.php @@ -77,7 +77,15 @@ class ChapterController extends Controller */ public function show(string $bookSlug, string $chapterSlug) { - $chapter = $this->queries->findVisibleBySlugsOrFail($bookSlug, $chapterSlug); + try { + $chapter = $this->queries->findVisibleBySlugsOrFail($bookSlug, $chapterSlug); + } catch (NotFoundException $exception) { + $chapter = $this->entityQueries->findVisibleByOldSlugs('chapter', $chapterSlug, $bookSlug); + if (is_null($chapter)) { + throw $exception; + } + return redirect($chapter->getUrl()); + } $sidebarTree = (new BookContents($chapter->book))->getTree(); $pages = $this->entityQueries->pages->visibleForChapterList($chapter->id)->get(); diff --git a/app/Entities/Models/BookChild.php b/app/Entities/Models/BookChild.php index 7819f1614..9a8493c3a 100644 --- a/app/Entities/Models/BookChild.php +++ b/app/Entities/Models/BookChild.php @@ -16,6 +16,7 @@ abstract class BookChild extends Entity { /** * Get the book this page sits in. + * @return BelongsTo */ public function book(): BelongsTo { diff --git a/app/Entities/Models/Entity.php b/app/Entities/Models/Entity.php index 2949754e3..47e134626 100644 --- a/app/Entities/Models/Entity.php +++ b/app/Entities/Models/Entity.php @@ -430,6 +430,14 @@ abstract class Entity extends Model implements return $this->morphMany(Watch::class, 'watchable'); } + /** + * Get the related slug history for this entity. + */ + public function slugHistory(): MorphMany + { + return $this->morphMany(SlugHistory::class, 'sluggable'); + } + /** * {@inheritdoc} */ diff --git a/app/Entities/Tools/SlugHistory.php b/app/Entities/Tools/SlugHistory.php index 1584db9cf..2c8d88129 100644 --- a/app/Entities/Tools/SlugHistory.php +++ b/app/Entities/Tools/SlugHistory.php @@ -2,10 +2,13 @@ namespace BookStack\Entities\Tools; +use BookStack\Entities\Models\Book; use BookStack\Entities\Models\BookChild; use BookStack\Entities\Models\Entity; +use BookStack\Entities\Models\EntityTable; use BookStack\Entities\Models\SlugHistory as SlugHistoryModel; use BookStack\Permissions\PermissionApplicator; +use Illuminate\Support\Facades\DB; class SlugHistory { @@ -43,6 +46,23 @@ class SlugHistory $entry = new SlugHistoryModel(); $entry->forceFill($info); $entry->save(); + + if ($entity instanceof Book) { + $this->recordForBookChildren($entity); + } + } + + protected function recordForBookChildren(Book $book): void + { + $query = EntityTable::query() + ->select(['type', 'id', 'slug', DB::raw("'{$book->slug}' as parent_slug"), DB::raw('now() as created_at'), DB::raw('now() as updated_at')]) + ->where('book_id', '=', $book->id) + ->whereNotNull('book_id'); + + SlugHistoryModel::query()->insertUsing( + ['sluggable_type', 'sluggable_id', 'slug', 'parent_slug', 'created_at', 'updated_at'], + $query + ); } /** diff --git a/app/Entities/Tools/TrashCan.php b/app/Entities/Tools/TrashCan.php index c298169c3..96645aebf 100644 --- a/app/Entities/Tools/TrashCan.php +++ b/app/Entities/Tools/TrashCan.php @@ -388,7 +388,7 @@ class TrashCan /** * Update entity relations to remove or update outstanding connections. */ - protected function destroyCommonRelations(Entity $entity) + protected function destroyCommonRelations(Entity $entity): void { Activity::removeEntity($entity); $entity->views()->delete(); @@ -402,6 +402,7 @@ class TrashCan $entity->watches()->delete(); $entity->referencesTo()->delete(); $entity->referencesFrom()->delete(); + $entity->slugHistory()->delete(); if ($entity instanceof HasCoverInterface && $entity->coverInfo()->exists()) { $imageService = app()->make(ImageService::class); diff --git a/tests/Entity/SlugTest.php b/tests/Entity/SlugTest.php index d60daff24..e8565d00f 100644 --- a/tests/Entity/SlugTest.php +++ b/tests/Entity/SlugTest.php @@ -33,17 +33,9 @@ class SlugTest extends TestCase public function test_old_page_slugs_redirect_to_new_pages() { $page = $this->entities->page(); - - // Need to save twice since revisions are not generated in seeder. - $this->asAdmin()->put($page->getUrl(), [ - 'name' => 'super test', - 'html' => '

', - ]); - - $page->refresh(); $pageUrl = $page->getUrl(); - $this->put($pageUrl, [ + $this->asAdmin()->put($pageUrl, [ 'name' => 'super test page', 'html' => '

', ]); @@ -52,6 +44,73 @@ class SlugTest extends TestCase ->assertRedirect("/books/{$page->book->slug}/page/super-test-page"); } + public function test_old_shelf_slugs_redirect_to_new_shelf() + { + $shelf = $this->entities->shelf(); + $shelfUrl = $shelf->getUrl(); + + $this->asAdmin()->put($shelf->getUrl(), [ + 'name' => 'super test shelf', + ]); + + $this->get($shelfUrl) + ->assertRedirect("/shelves/super-test-shelf"); + } + + public function test_old_book_slugs_redirect_to_new_book() + { + $book = $this->entities->book(); + $bookUrl = $book->getUrl(); + + $this->asAdmin()->put($book->getUrl(), [ + 'name' => 'super test book', + ]); + + $this->get($bookUrl) + ->assertRedirect("/books/super-test-book"); + } + + public function test_old_chapter_slugs_redirect_to_new_chapter() + { + $chapter = $this->entities->chapter(); + $chapterUrl = $chapter->getUrl(); + + $this->asAdmin()->put($chapter->getUrl(), [ + 'name' => 'super test chapter', + ]); + + $this->get($chapterUrl) + ->assertRedirect("/books/{$chapter->book->slug}/chapter/super-test-chapter"); + } + + public function test_old_book_slugs_in_page_urls_redirect_to_current_page_url() + { + $page = $this->entities->page(); + $book = $page->book; + $pageUrl = $page->getUrl(); + + $this->asAdmin()->put($book->getUrl(), [ + 'name' => 'super test book', + ]); + + $this->get($pageUrl) + ->assertRedirect("/books/super-test-book/page/{$page->slug}"); + } + + public function test_old_book_slugs_in_chapter_urls_redirect_to_current_chapter_url() + { + $chapter = $this->entities->chapter(); + $book = $chapter->book; + $chapterUrl = $chapter->getUrl(); + + $this->asAdmin()->put($book->getUrl(), [ + 'name' => 'super test book', + ]); + + $this->get($chapterUrl) + ->assertRedirect("/books/super-test-book/chapter/{$chapter->slug}"); + } + public function test_slugs_recorded_in_history_on_page_update() { $page = $this->entities->page(); From cdd164e3e3e0fb1bcd40329043503b1bea849cab Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Mon, 24 Nov 2025 20:04:55 +0000 Subject: [PATCH 09/51] Slugs: Added test to cover history lookup permission usage --- app/Entities/Models/SlugHistory.php | 3 ++ .../Entities/Models/SlugHistoryFactory.php | 29 +++++++++++++++++++ tests/Entity/SlugTest.php | 22 ++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 database/factories/Entities/Models/SlugHistoryFactory.php diff --git a/app/Entities/Models/SlugHistory.php b/app/Entities/Models/SlugHistory.php index 2731fe749..4041cedd9 100644 --- a/app/Entities/Models/SlugHistory.php +++ b/app/Entities/Models/SlugHistory.php @@ -4,6 +4,7 @@ namespace BookStack\Entities\Models; use BookStack\App\Model; use BookStack\Permissions\Models\JointPermission; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\HasMany; /** @@ -15,6 +16,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany; */ class SlugHistory extends Model { + use HasFactory; + protected $table = 'slug_history'; public function jointPermissions(): HasMany diff --git a/database/factories/Entities/Models/SlugHistoryFactory.php b/database/factories/Entities/Models/SlugHistoryFactory.php new file mode 100644 index 000000000..c8c57e09c --- /dev/null +++ b/database/factories/Entities/Models/SlugHistoryFactory.php @@ -0,0 +1,29 @@ + + */ +class SlugHistoryFactory extends Factory +{ + protected $model = \BookStack\Entities\Models\SlugHistory::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'sluggable_id' => Book::factory(), + 'sluggable_type' => 'book', + 'slug' => $this->faker->slug(), + 'parent_slug' => null, + ]; + } +} diff --git a/tests/Entity/SlugTest.php b/tests/Entity/SlugTest.php index e8565d00f..51cf34e5d 100644 --- a/tests/Entity/SlugTest.php +++ b/tests/Entity/SlugTest.php @@ -2,6 +2,7 @@ namespace Tests\Entity; +use BookStack\Entities\Models\SlugHistory; use Tests\TestCase; class SlugTest extends TestCase @@ -111,6 +112,27 @@ class SlugTest extends TestCase ->assertRedirect("/books/super-test-book/chapter/{$chapter->slug}"); } + public function test_slug_lookup_controlled_by_permissions() + { + $editor = $this->users->editor(); + $pageA = $this->entities->page(); + $pageB = $this->entities->page(); + + SlugHistory::factory()->create(['sluggable_id' => $pageA->id, 'sluggable_type' => 'page', 'slug' => 'monkey', 'parent_slug' => 'animals', 'created_at' => now()]); + SlugHistory::factory()->create(['sluggable_id' => $pageB->id, 'sluggable_type' => 'page', 'slug' => 'monkey', 'parent_slug' => 'animals', 'created_at' => now()->subDay()]); + + // Defaults to latest where visible + $this->actingAs($editor)->get("/books/animals/page/monkey")->assertRedirect($pageA->getUrl()); + + $this->permissions->disableEntityInheritedPermissions($pageA); + + // Falls back to other entry where the latest is not visible + $this->actingAs($editor)->get("/books/animals/page/monkey")->assertRedirect($pageB->getUrl()); + + // Original still accessible where permissions allow + $this->asAdmin()->get("/books/animals/page/monkey")->assertRedirect($pageA->getUrl()); + } + public function test_slugs_recorded_in_history_on_page_update() { $page = $this->entities->page(); From f073994bc3d290d88aefca623ccdd2d2b51d5060 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 25 Nov 2025 12:36:33 +0000 Subject: [PATCH 10/51] Testing: Extracted copy tests to their own class --- tests/Entity/BookTest.php | 104 ------------- tests/Entity/ChapterTest.php | 83 ---------- tests/Entity/CopyTest.php | 294 +++++++++++++++++++++++++++++++++++ tests/Entity/PageTest.php | 91 ----------- 4 files changed, 294 insertions(+), 278 deletions(-) create mode 100644 tests/Entity/CopyTest.php diff --git a/tests/Entity/BookTest.php b/tests/Entity/BookTest.php index 545d6b305..a7142f037 100644 --- a/tests/Entity/BookTest.php +++ b/tests/Entity/BookTest.php @@ -264,108 +264,4 @@ class BookTest extends TestCase $resp = $this->asEditor()->get($book->getUrl()); $resp->assertSee("

My great
\ndescription
\n
\nwith newlines

", false); } - - public function test_show_view_has_copy_button() - { - $book = $this->entities->book(); - $resp = $this->asEditor()->get($book->getUrl()); - - $this->withHtml($resp)->assertElementContains("a[href=\"{$book->getUrl('/copy')}\"]", 'Copy'); - } - - public function test_copy_view() - { - $book = $this->entities->book(); - $resp = $this->asEditor()->get($book->getUrl('/copy')); - - $resp->assertOk(); - $resp->assertSee('Copy Book'); - $this->withHtml($resp)->assertElementExists("input[name=\"name\"][value=\"{$book->name}\"]"); - } - - public function test_copy() - { - /** @var Book $book */ - $book = Book::query()->whereHas('chapters')->whereHas('pages')->first(); - $resp = $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book']); - - /** @var Book $copy */ - $copy = Book::query()->where('name', '=', 'My copy book')->first(); - - $resp->assertRedirect($copy->getUrl()); - $this->assertEquals($book->getDirectVisibleChildren()->count(), $copy->getDirectVisibleChildren()->count()); - - $this->get($copy->getUrl())->assertSee($book->description_html, false); - } - - public function test_copy_does_not_copy_non_visible_content() - { - /** @var Book $book */ - $book = Book::query()->whereHas('chapters')->whereHas('pages')->first(); - - // Hide child content - /** @var BookChild $page */ - foreach ($book->getDirectVisibleChildren() as $child) { - $this->permissions->setEntityPermissions($child, [], []); - } - - $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book']); - /** @var Book $copy */ - $copy = Book::query()->where('name', '=', 'My copy book')->first(); - - $this->assertEquals(0, $copy->getDirectVisibleChildren()->count()); - } - - public function test_copy_does_not_copy_pages_or_chapters_if_user_cant_create() - { - /** @var Book $book */ - $book = Book::query()->whereHas('chapters')->whereHas('directPages')->whereHas('chapters')->first(); - $viewer = $this->users->viewer(); - $this->permissions->grantUserRolePermissions($viewer, ['book-create-all']); - - $this->actingAs($viewer)->post($book->getUrl('/copy'), ['name' => 'My copy book']); - /** @var Book $copy */ - $copy = Book::query()->where('name', '=', 'My copy book')->first(); - - $this->assertEquals(0, $copy->pages()->count()); - $this->assertEquals(0, $copy->chapters()->count()); - } - - public function test_copy_clones_cover_image_if_existing() - { - $book = $this->entities->book(); - $bookRepo = $this->app->make(BookRepo::class); - $coverImageFile = $this->files->uploadedImage('cover.png'); - $bookRepo->updateCoverImage($book, $coverImageFile); - - $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book'])->assertRedirect(); - /** @var Book $copy */ - $copy = Book::query()->where('name', '=', 'My copy book')->first(); - - $this->assertNotNull($copy->coverInfo()->getImage()); - $this->assertNotEquals($book->coverInfo()->getImage()->id, $copy->coverInfo()->getImage()->id); - } - - public function test_copy_adds_book_to_shelves_if_edit_permissions_allows() - { - /** @var Bookshelf $shelfA */ - /** @var Bookshelf $shelfB */ - [$shelfA, $shelfB] = Bookshelf::query()->take(2)->get(); - $book = $this->entities->book(); - - $shelfA->appendBook($book); - $shelfB->appendBook($book); - - $viewer = $this->users->viewer(); - $this->permissions->grantUserRolePermissions($viewer, ['book-update-all', 'book-create-all', 'bookshelf-update-all']); - $this->permissions->setEntityPermissions($shelfB); - - - $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book']); - /** @var Book $copy */ - $copy = Book::query()->where('name', '=', 'My copy book')->first(); - - $this->assertTrue($copy->shelves()->where('id', '=', $shelfA->id)->exists()); - $this->assertFalse($copy->shelves()->where('id', '=', $shelfB->id)->exists()); - } } diff --git a/tests/Entity/ChapterTest.php b/tests/Entity/ChapterTest.php index 1577cee76..0c0ec7841 100644 --- a/tests/Entity/ChapterTest.php +++ b/tests/Entity/ChapterTest.php @@ -66,90 +66,7 @@ class ChapterTest extends TestCase $this->assertNotificationContains($redirectReq, 'Chapter Successfully Deleted'); } - public function test_show_view_has_copy_button() - { - $chapter = $this->entities->chapter(); - $resp = $this->asEditor()->get($chapter->getUrl()); - $this->withHtml($resp)->assertElementContains("a[href$=\"{$chapter->getUrl('/copy')}\"]", 'Copy'); - } - - public function test_copy_view() - { - $chapter = $this->entities->chapter(); - - $resp = $this->asEditor()->get($chapter->getUrl('/copy')); - $resp->assertOk(); - $resp->assertSee('Copy Chapter'); - $this->withHtml($resp)->assertElementExists("input[name=\"name\"][value=\"{$chapter->name}\"]"); - $this->withHtml($resp)->assertElementExists('input[name="entity_selection"]'); - } - - public function test_copy() - { - /** @var Chapter $chapter */ - $chapter = Chapter::query()->whereHas('pages')->first(); - /** @var Book $otherBook */ - $otherBook = Book::query()->where('id', '!=', $chapter->book_id)->first(); - - $resp = $this->asEditor()->post($chapter->getUrl('/copy'), [ - 'name' => 'My copied chapter', - 'entity_selection' => 'book:' . $otherBook->id, - ]); - - /** @var Chapter $newChapter */ - $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); - - $resp->assertRedirect($newChapter->getUrl()); - $this->assertEquals($otherBook->id, $newChapter->book_id); - $this->assertEquals($chapter->pages->count(), $newChapter->pages->count()); - } - - public function test_copy_does_not_copy_non_visible_pages() - { - $chapter = $this->entities->chapterHasPages(); - - // Hide pages to all non-admin roles - /** @var Page $page */ - foreach ($chapter->pages as $page) { - $this->permissions->setEntityPermissions($page, [], []); - } - - $this->asEditor()->post($chapter->getUrl('/copy'), [ - 'name' => 'My copied chapter', - ]); - - /** @var Chapter $newChapter */ - $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); - $this->assertEquals(0, $newChapter->pages()->count()); - } - - public function test_copy_does_not_copy_pages_if_user_cant_page_create() - { - $chapter = $this->entities->chapterHasPages(); - $viewer = $this->users->viewer(); - $this->permissions->grantUserRolePermissions($viewer, ['chapter-create-all']); - - // Lacking permission results in no copied pages - $this->actingAs($viewer)->post($chapter->getUrl('/copy'), [ - 'name' => 'My copied chapter', - ]); - - /** @var Chapter $newChapter */ - $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); - $this->assertEquals(0, $newChapter->pages()->count()); - - $this->permissions->grantUserRolePermissions($viewer, ['page-create-all']); - - // Having permission rules in copied pages - $this->actingAs($viewer)->post($chapter->getUrl('/copy'), [ - 'name' => 'My copied again chapter', - ]); - - /** @var Chapter $newChapter2 */ - $newChapter2 = Chapter::query()->where('name', '=', 'My copied again chapter')->first(); - $this->assertEquals($chapter->pages()->count(), $newChapter2->pages()->count()); - } public function test_sort_book_action_visible_if_permissions_allow() { diff --git a/tests/Entity/CopyTest.php b/tests/Entity/CopyTest.php new file mode 100644 index 000000000..353808bea --- /dev/null +++ b/tests/Entity/CopyTest.php @@ -0,0 +1,294 @@ +entities->book(); + $resp = $this->asEditor()->get($book->getUrl()); + + $this->withHtml($resp)->assertElementContains("a[href=\"{$book->getUrl('/copy')}\"]", 'Copy'); + } + + public function test_book_copy_view() + { + $book = $this->entities->book(); + $resp = $this->asEditor()->get($book->getUrl('/copy')); + + $resp->assertOk(); + $resp->assertSee('Copy Book'); + $this->withHtml($resp)->assertElementExists("input[name=\"name\"][value=\"{$book->name}\"]"); + } + + public function test_book_copy() + { + /** @var Book $book */ + $book = Book::query()->whereHas('chapters')->whereHas('pages')->first(); + $resp = $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book']); + + /** @var Book $copy */ + $copy = Book::query()->where('name', '=', 'My copy book')->first(); + + $resp->assertRedirect($copy->getUrl()); + $this->assertEquals($book->getDirectVisibleChildren()->count(), $copy->getDirectVisibleChildren()->count()); + + $this->get($copy->getUrl())->assertSee($book->description_html, false); + } + + public function test_book_copy_does_not_copy_non_visible_content() + { + /** @var Book $book */ + $book = Book::query()->whereHas('chapters')->whereHas('pages')->first(); + + // Hide child content + /** @var BookChild $page */ + foreach ($book->getDirectVisibleChildren() as $child) { + $this->permissions->setEntityPermissions($child, [], []); + } + + $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book']); + /** @var Book $copy */ + $copy = Book::query()->where('name', '=', 'My copy book')->first(); + + $this->assertEquals(0, $copy->getDirectVisibleChildren()->count()); + } + + public function test_book_copy_does_not_copy_pages_or_chapters_if_user_cant_create() + { + /** @var Book $book */ + $book = Book::query()->whereHas('chapters')->whereHas('directPages')->whereHas('chapters')->first(); + $viewer = $this->users->viewer(); + $this->permissions->grantUserRolePermissions($viewer, ['book-create-all']); + + $this->actingAs($viewer)->post($book->getUrl('/copy'), ['name' => 'My copy book']); + /** @var Book $copy */ + $copy = Book::query()->where('name', '=', 'My copy book')->first(); + + $this->assertEquals(0, $copy->pages()->count()); + $this->assertEquals(0, $copy->chapters()->count()); + } + + public function test_book_copy_clones_cover_image_if_existing() + { + $book = $this->entities->book(); + $bookRepo = $this->app->make(BookRepo::class); + $coverImageFile = $this->files->uploadedImage('cover.png'); + $bookRepo->updateCoverImage($book, $coverImageFile); + + $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book'])->assertRedirect(); + /** @var Book $copy */ + $copy = Book::query()->where('name', '=', 'My copy book')->first(); + + $this->assertNotNull($copy->coverInfo()->getImage()); + $this->assertNotEquals($book->coverInfo()->getImage()->id, $copy->coverInfo()->getImage()->id); + } + + public function test_book_copy_adds_book_to_shelves_if_edit_permissions_allows() + { + /** @var Bookshelf $shelfA */ + /** @var Bookshelf $shelfB */ + [$shelfA, $shelfB] = Bookshelf::query()->take(2)->get(); + $book = $this->entities->book(); + + $shelfA->appendBook($book); + $shelfB->appendBook($book); + + $viewer = $this->users->viewer(); + $this->permissions->grantUserRolePermissions($viewer, ['book-update-all', 'book-create-all', 'bookshelf-update-all']); + $this->permissions->setEntityPermissions($shelfB); + + + $this->asEditor()->post($book->getUrl('/copy'), ['name' => 'My copy book']); + /** @var Book $copy */ + $copy = Book::query()->where('name', '=', 'My copy book')->first(); + + $this->assertTrue($copy->shelves()->where('id', '=', $shelfA->id)->exists()); + $this->assertFalse($copy->shelves()->where('id', '=', $shelfB->id)->exists()); + } + + public function test_chapter_show_view_has_copy_button() + { + $chapter = $this->entities->chapter(); + + $resp = $this->asEditor()->get($chapter->getUrl()); + $this->withHtml($resp)->assertElementContains("a[href$=\"{$chapter->getUrl('/copy')}\"]", 'Copy'); + } + + public function test_chapter_copy_view() + { + $chapter = $this->entities->chapter(); + + $resp = $this->asEditor()->get($chapter->getUrl('/copy')); + $resp->assertOk(); + $resp->assertSee('Copy Chapter'); + $this->withHtml($resp)->assertElementExists("input[name=\"name\"][value=\"{$chapter->name}\"]"); + $this->withHtml($resp)->assertElementExists('input[name="entity_selection"]'); + } + + public function test_chapter_copy() + { + /** @var Chapter $chapter */ + $chapter = Chapter::query()->whereHas('pages')->first(); + /** @var Book $otherBook */ + $otherBook = Book::query()->where('id', '!=', $chapter->book_id)->first(); + + $resp = $this->asEditor()->post($chapter->getUrl('/copy'), [ + 'name' => 'My copied chapter', + 'entity_selection' => 'book:' . $otherBook->id, + ]); + + /** @var Chapter $newChapter */ + $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); + + $resp->assertRedirect($newChapter->getUrl()); + $this->assertEquals($otherBook->id, $newChapter->book_id); + $this->assertEquals($chapter->pages->count(), $newChapter->pages->count()); + } + + public function test_chapter_copy_does_not_copy_non_visible_pages() + { + $chapter = $this->entities->chapterHasPages(); + + // Hide pages to all non-admin roles + /** @var Page $page */ + foreach ($chapter->pages as $page) { + $this->permissions->setEntityPermissions($page, [], []); + } + + $this->asEditor()->post($chapter->getUrl('/copy'), [ + 'name' => 'My copied chapter', + ]); + + /** @var Chapter $newChapter */ + $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); + $this->assertEquals(0, $newChapter->pages()->count()); + } + + public function test_chapter_copy_does_not_copy_pages_if_user_cant_page_create() + { + $chapter = $this->entities->chapterHasPages(); + $viewer = $this->users->viewer(); + $this->permissions->grantUserRolePermissions($viewer, ['chapter-create-all']); + + // Lacking permission results in no copied pages + $this->actingAs($viewer)->post($chapter->getUrl('/copy'), [ + 'name' => 'My copied chapter', + ]); + + /** @var Chapter $newChapter */ + $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); + $this->assertEquals(0, $newChapter->pages()->count()); + + $this->permissions->grantUserRolePermissions($viewer, ['page-create-all']); + + // Having permission rules in copied pages + $this->actingAs($viewer)->post($chapter->getUrl('/copy'), [ + 'name' => 'My copied again chapter', + ]); + + /** @var Chapter $newChapter2 */ + $newChapter2 = Chapter::query()->where('name', '=', 'My copied again chapter')->first(); + $this->assertEquals($chapter->pages()->count(), $newChapter2->pages()->count()); + } + + public function test_page_copy() + { + $page = $this->entities->page(); + $page->html = '

This is some test content

'; + $page->save(); + + $currentBook = $page->book; + $newBook = Book::where('id', '!=', $currentBook->id)->first(); + + $resp = $this->asEditor()->get($page->getUrl('/copy')); + $resp->assertSee('Copy Page'); + + $movePageResp = $this->post($page->getUrl('/copy'), [ + 'entity_selection' => 'book:' . $newBook->id, + 'name' => 'My copied test page', + ]); + $pageCopy = Page::where('name', '=', 'My copied test page')->first(); + + $movePageResp->assertRedirect($pageCopy->getUrl()); + $this->assertTrue($pageCopy->book->id == $newBook->id, 'Page was copied to correct book'); + $this->assertStringContainsString('This is some test content', $pageCopy->html); + } + + public function test_page_copy_with_markdown_has_both_html_and_markdown() + { + $page = $this->entities->page(); + $page->html = '

This is some test content

'; + $page->markdown = '# This is some test content'; + $page->save(); + $newBook = Book::where('id', '!=', $page->book->id)->first(); + + $this->asEditor()->post($page->getUrl('/copy'), [ + 'entity_selection' => 'book:' . $newBook->id, + 'name' => 'My copied test page', + ]); + $pageCopy = Page::where('name', '=', 'My copied test page')->first(); + + $this->assertStringContainsString('This is some test content', $pageCopy->html); + $this->assertEquals('# This is some test content', $pageCopy->markdown); + } + + public function test_page_copy_with_no_destination() + { + $page = $this->entities->page(); + $currentBook = $page->book; + + $resp = $this->asEditor()->get($page->getUrl('/copy')); + $resp->assertSee('Copy Page'); + + $movePageResp = $this->post($page->getUrl('/copy'), [ + 'name' => 'My copied test page', + ]); + + $pageCopy = Page::where('name', '=', 'My copied test page')->first(); + + $movePageResp->assertRedirect($pageCopy->getUrl()); + $this->assertTrue($pageCopy->book->id == $currentBook->id, 'Page was copied to correct book'); + $this->assertTrue($pageCopy->id !== $page->id, 'Page copy is not the same instance'); + } + + public function test_page_can_be_copied_without_edit_permission() + { + $page = $this->entities->page(); + $currentBook = $page->book; + $newBook = Book::where('id', '!=', $currentBook->id)->first(); + $viewer = $this->users->viewer(); + + $resp = $this->actingAs($viewer)->get($page->getUrl()); + $resp->assertDontSee($page->getUrl('/copy')); + + $newBook->owned_by = $viewer->id; + $newBook->save(); + $this->permissions->grantUserRolePermissions($viewer, ['page-create-own']); + $this->permissions->regenerateForEntity($newBook); + + $resp = $this->actingAs($viewer)->get($page->getUrl()); + $resp->assertSee($page->getUrl('/copy')); + + $movePageResp = $this->post($page->getUrl('/copy'), [ + 'entity_selection' => 'book:' . $newBook->id, + 'name' => 'My copied test page', + ]); + $movePageResp->assertRedirect(); + + $this->assertDatabaseHasEntityData('page', [ + 'name' => 'My copied test page', + 'created_by' => $viewer->id, + 'book_id' => $newBook->id, + ]); + } +} diff --git a/tests/Entity/PageTest.php b/tests/Entity/PageTest.php index afe15f4d4..1b2f3c9fe 100644 --- a/tests/Entity/PageTest.php +++ b/tests/Entity/PageTest.php @@ -178,97 +178,6 @@ class PageTest extends TestCase ]); } - public function test_page_copy() - { - $page = $this->entities->page(); - $page->html = '

This is some test content

'; - $page->save(); - - $currentBook = $page->book; - $newBook = Book::where('id', '!=', $currentBook->id)->first(); - - $resp = $this->asEditor()->get($page->getUrl('/copy')); - $resp->assertSee('Copy Page'); - - $movePageResp = $this->post($page->getUrl('/copy'), [ - 'entity_selection' => 'book:' . $newBook->id, - 'name' => 'My copied test page', - ]); - $pageCopy = Page::where('name', '=', 'My copied test page')->first(); - - $movePageResp->assertRedirect($pageCopy->getUrl()); - $this->assertTrue($pageCopy->book->id == $newBook->id, 'Page was copied to correct book'); - $this->assertStringContainsString('This is some test content', $pageCopy->html); - } - - public function test_page_copy_with_markdown_has_both_html_and_markdown() - { - $page = $this->entities->page(); - $page->html = '

This is some test content

'; - $page->markdown = '# This is some test content'; - $page->save(); - $newBook = Book::where('id', '!=', $page->book->id)->first(); - - $this->asEditor()->post($page->getUrl('/copy'), [ - 'entity_selection' => 'book:' . $newBook->id, - 'name' => 'My copied test page', - ]); - $pageCopy = Page::where('name', '=', 'My copied test page')->first(); - - $this->assertStringContainsString('This is some test content', $pageCopy->html); - $this->assertEquals('# This is some test content', $pageCopy->markdown); - } - - public function test_page_copy_with_no_destination() - { - $page = $this->entities->page(); - $currentBook = $page->book; - - $resp = $this->asEditor()->get($page->getUrl('/copy')); - $resp->assertSee('Copy Page'); - - $movePageResp = $this->post($page->getUrl('/copy'), [ - 'name' => 'My copied test page', - ]); - - $pageCopy = Page::where('name', '=', 'My copied test page')->first(); - - $movePageResp->assertRedirect($pageCopy->getUrl()); - $this->assertTrue($pageCopy->book->id == $currentBook->id, 'Page was copied to correct book'); - $this->assertTrue($pageCopy->id !== $page->id, 'Page copy is not the same instance'); - } - - public function test_page_can_be_copied_without_edit_permission() - { - $page = $this->entities->page(); - $currentBook = $page->book; - $newBook = Book::where('id', '!=', $currentBook->id)->first(); - $viewer = $this->users->viewer(); - - $resp = $this->actingAs($viewer)->get($page->getUrl()); - $resp->assertDontSee($page->getUrl('/copy')); - - $newBook->owned_by = $viewer->id; - $newBook->save(); - $this->permissions->grantUserRolePermissions($viewer, ['page-create-own']); - $this->permissions->regenerateForEntity($newBook); - - $resp = $this->actingAs($viewer)->get($page->getUrl()); - $resp->assertSee($page->getUrl('/copy')); - - $movePageResp = $this->post($page->getUrl('/copy'), [ - 'entity_selection' => 'book:' . $newBook->id, - 'name' => 'My copied test page', - ]); - $movePageResp->assertRedirect(); - - $this->assertDatabaseHasEntityData('page', [ - 'name' => 'My copied test page', - 'created_by' => $viewer->id, - 'book_id' => $newBook->id, - ]); - } - public function test_page_within_chapter_deletion_returns_to_chapter() { $chapter = $this->entities->chapter(); From ba675b6349f3e9fd464dba02557c33441a5e3a96 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 25 Nov 2025 13:52:36 +0000 Subject: [PATCH 11/51] Copying: Added tests to cover copy self-references Logic to make tests pass to follow --- tests/Entity/CopyTest.php | 86 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/tests/Entity/CopyTest.php b/tests/Entity/CopyTest.php index 353808bea..258b538f5 100644 --- a/tests/Entity/CopyTest.php +++ b/tests/Entity/CopyTest.php @@ -201,6 +201,92 @@ class CopyTest extends TestCase $this->assertEquals($chapter->pages()->count(), $newChapter2->pages()->count()); } + public function test_book_copy_updates_internal_references() + { + $book = $this->entities->bookHasChaptersAndPages(); + /** @var Chapter $chapter */ + $chapter = $book->chapters()->first(); + /** @var Page $page */ + $page = $chapter->pages()->first(); + $this->asEditor(); + $this->entities->updatePage($page, [ + 'name' => 'reference test page', + 'html' => '

This is a test book link

', + ]); + + $html = '

This is a test page link

'; + + // Quick pre-update to get stable slug + $this->put($book->getUrl(), ['name' => 'Internal ref test']); + $book->refresh(); + + $this->put($book->getUrl(), ['name' => 'Internal ref test', 'description_html' => $html]); + + $this->post($book->getUrl('/copy'), ['name' => 'My copied book']); + + $newBook = Book::query()->where('name', '=', 'My copied book')->first(); + $newPage = $newBook->pages()->where('name', '=', 'reference test page')->first(); + + $this->assertStringContainsString($newBook->getUrl(), $newPage->html); + $this->assertStringContainsString($newPage->getUrl(), $newBook->description_html); + + $this->assertStringNotContainsString($book->getUrl(), $newPage->html); + $this->assertStringNotContainsString($page->getUrl(), $newBook->description_html); + } + + public function test_chapter_copy_updates_internal_references() + { + $chapter = $this->entities->chapterHasPages(); + /** @var Page $page */ + $page = $chapter->pages()->first(); + $this->asEditor(); + $this->entities->updatePage($page, [ + 'name' => 'reference test page', + 'html' => '

This is a test chapter link

', + ]); + + $html = '

This is a test page link

'; + + // Quick pre-update to get stable slug + $this->put($chapter->getUrl(), ['name' => 'Internal ref test']); + $chapter->refresh(); + + $this->put($chapter->getUrl(), ['name' => 'Internal ref test', 'description_html' => $html]); + + $this->post($chapter->getUrl('/copy'), ['name' => 'My copied chapter']); + + $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); + $newPage = $newChapter->pages()->where('name', '=', 'reference test page')->first(); + + $this->assertStringContainsString($newChapter->getUrl(), $newPage->html); + $this->assertStringContainsString($newPage->getUrl(), $newChapter->description_html); + + $this->assertStringNotContainsString($chapter->getUrl(), $newPage->html); + $this->assertStringNotContainsString($page->getUrl(), $newChapter->description_html); + } + + public function test_page_copy_updates_internal_self_references() + { + $page = $this->entities->page(); + $this->asEditor(); + + // Initial update to get stable slug + $this->entities->updatePage($page, ['name' => 'reference test page']); + + $page->refresh(); + $this->entities->updatePage($page, [ + 'name' => 'reference test page', + 'html' => '

This is a test page link

', + ]); + + $this->post($page->getUrl('/copy'), ['name' => 'My copied page']); + $newPage = Page::query()->where('name', '=', 'My copied page')->first(); + $this->assertNotNull($newPage); + + $this->assertStringContainsString($newPage->getUrl(), $newPage->html); + $this->assertStringNotContainsString($page->getUrl(), $newPage->html); + } + public function test_page_copy() { $page = $this->entities->page(); From 674bb84fac98a73820217a0a43c3fb732919899a Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 25 Nov 2025 14:46:36 +0000 Subject: [PATCH 12/51] Copying: Added reference change context tracking Added core wiring in the cloning logic, just need to implement core logic in the updater now. --- app/Entities/Tools/Cloner.php | 41 ++++++++++++++++++++++- app/References/ReferenceChangeContext.php | 19 +++++++++++ app/References/ReferenceUpdater.php | 8 +++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 app/References/ReferenceChangeContext.php diff --git a/app/Entities/Tools/Cloner.php b/app/Entities/Tools/Cloner.php index ff42ae6e4..916ce42c5 100644 --- a/app/Entities/Tools/Cloner.php +++ b/app/Entities/Tools/Cloner.php @@ -13,30 +13,47 @@ use BookStack\Entities\Repos\BookRepo; use BookStack\Entities\Repos\ChapterRepo; use BookStack\Entities\Repos\PageRepo; use BookStack\Permissions\Permission; +use BookStack\References\ReferenceChangeContext; +use BookStack\References\ReferenceUpdater; use BookStack\Uploads\Image; use BookStack\Uploads\ImageService; use Illuminate\Http\UploadedFile; class Cloner { + protected ReferenceChangeContext $referenceChangeContext; + public function __construct( protected PageRepo $pageRepo, protected ChapterRepo $chapterRepo, protected BookRepo $bookRepo, protected ImageService $imageService, + protected ReferenceUpdater $referenceUpdater, ) { + $this->referenceChangeContext = new ReferenceChangeContext(); } /** * Clone the given page into the given parent using the provided name. */ public function clonePage(Page $original, Entity $parent, string $newName): Page + { + $context = $this->newReferenceChangeContext(); + $page = $this->createPageClone($original, $parent, $newName); + $this->referenceUpdater->changeReferencesUsingContext($context); + return $page; + } + + protected function createPageClone(Page $original, Entity $parent, string $newName): Page { $copyPage = $this->pageRepo->getNewDraftPage($parent); $pageData = $this->entityToInputData($original); $pageData['name'] = $newName; - return $this->pageRepo->publishDraft($copyPage, $pageData); + $newPage = $this->pageRepo->publishDraft($copyPage, $pageData); + $this->referenceChangeContext->add($original, $newPage); + + return $newPage; } /** @@ -44,6 +61,14 @@ class Cloner * Clones all child pages. */ public function cloneChapter(Chapter $original, Book $parent, string $newName): Chapter + { + $context = $this->newReferenceChangeContext(); + $chapter = $this->createChapterClone($original, $parent, $newName); + $this->referenceUpdater->changeReferencesUsingContext($context); + return $chapter; + } + + protected function createChapterClone(Chapter $original, Book $parent, string $newName): Chapter { $chapterDetails = $this->entityToInputData($original); $chapterDetails['name'] = $newName; @@ -65,6 +90,14 @@ class Cloner * Clones all child chapters and pages. */ public function cloneBook(Book $original, string $newName): Book + { + $context = $this->newReferenceChangeContext(); + $book = $this->createBookClone($original, $newName); + $this->referenceUpdater->changeReferencesUsingContext($context); + return $book; + } + + protected function createBookClone(Book $original, string $newName): Book { $bookDetails = $this->entityToInputData($original); $bookDetails['name'] = $newName; @@ -155,4 +188,10 @@ class Cloner return $tags; } + + protected function newReferenceChangeContext(): ReferenceChangeContext + { + $this->referenceChangeContext = new ReferenceChangeContext(); + return $this->referenceChangeContext; + } } diff --git a/app/References/ReferenceChangeContext.php b/app/References/ReferenceChangeContext.php new file mode 100644 index 000000000..df3028b93 --- /dev/null +++ b/app/References/ReferenceChangeContext.php @@ -0,0 +1,19 @@ + + */ + protected array $changes = []; + + public function add(Entity $oldEntity, Entity $newEntity): void + { + $this->changes[] = [$oldEntity, $newEntity]; + } +} diff --git a/app/References/ReferenceUpdater.php b/app/References/ReferenceUpdater.php index 06b3389ba..3a6db05ef 100644 --- a/app/References/ReferenceUpdater.php +++ b/app/References/ReferenceUpdater.php @@ -30,6 +30,14 @@ class ReferenceUpdater } } + public function changeReferencesUsingContext(ReferenceChangeContext $context): void + { + // TODO + + // We should probably have references by this point, so we could use those for efficient + // discovery instead of scanning each item within the context. + } + /** * @return Reference[] */ From 959981a676e222aa9a7a3d0f163e1a21509086f2 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 25 Nov 2025 17:52:26 +0000 Subject: [PATCH 13/51] Copying: Added logic to find & update references --- app/Entities/Models/Page.php | 8 +++++ app/Entities/Tools/Cloner.php | 10 ++++-- app/References/ReferenceChangeContext.php | 37 +++++++++++++++++++++ app/References/ReferenceUpdater.php | 40 ++++++++++++++++++++--- tests/Entity/CopyTest.php | 16 ++++----- 5 files changed, 96 insertions(+), 15 deletions(-) diff --git a/app/Entities/Models/Page.php b/app/Entities/Models/Page.php index 88c59bd1b..a1d3fc7b4 100644 --- a/app/Entities/Models/Page.php +++ b/app/Entities/Models/Page.php @@ -124,6 +124,14 @@ class Page extends BookChild return url('/' . implode('/', $parts)); } + /** + * Get the ID-based permalink for this page. + */ + public function getPermalink(): string + { + return url("/link/{$this->id}"); + } + /** * Get this page for JSON display. */ diff --git a/app/Entities/Tools/Cloner.php b/app/Entities/Tools/Cloner.php index 916ce42c5..64c48c351 100644 --- a/app/Entities/Tools/Cloner.php +++ b/app/Entities/Tools/Cloner.php @@ -78,10 +78,12 @@ class Cloner if (userCan(Permission::PageCreate, $copyChapter)) { /** @var Page $page */ foreach ($original->getVisiblePages() as $page) { - $this->clonePage($page, $copyChapter, $page->name); + $this->createPageClone($page, $copyChapter, $page->name); } } + $this->referenceChangeContext->add($original, $copyChapter); + return $copyChapter; } @@ -109,11 +111,11 @@ class Cloner $directChildren = $original->getDirectVisibleChildren(); foreach ($directChildren as $child) { if ($child instanceof Chapter && userCan(Permission::ChapterCreate, $copyBook)) { - $this->cloneChapter($child, $copyBook, $child->name); + $this->createChapterClone($child, $copyBook, $child->name); } if ($child instanceof Page && !$child->draft && userCan(Permission::PageCreate, $copyBook)) { - $this->clonePage($child, $copyBook, $child->name); + $this->createPageClone($child, $copyBook, $child->name); } } @@ -125,6 +127,8 @@ class Cloner } } + $this->referenceChangeContext->add($original, $copyBook); + return $copyBook; } diff --git a/app/References/ReferenceChangeContext.php b/app/References/ReferenceChangeContext.php index df3028b93..f11619813 100644 --- a/app/References/ReferenceChangeContext.php +++ b/app/References/ReferenceChangeContext.php @@ -16,4 +16,41 @@ class ReferenceChangeContext { $this->changes[] = [$oldEntity, $newEntity]; } + + /** + * Get all the change pairs. + * Returned array is an array of pairs, where the first item is the old entity + * and the second is the new entity. + * @return array + */ + public function getChanges(): array + { + return $this->changes; + } + + /** + * Get all the new entities from the changes. + */ + public function getNewEntities(): array + { + return array_column($this->changes, 1); + } + + /** + * Get all the old entities from the changes. + */ + public function getOldEntities(): array + { + return array_column($this->changes, 0); + } + + public function getNewForOld(Entity $oldEntity): ?Entity + { + foreach ($this->changes as [$old, $new]) { + if ($old->id === $oldEntity->id && $old->type === $oldEntity->type) { + return $new; + } + } + return null; + } } diff --git a/app/References/ReferenceUpdater.php b/app/References/ReferenceUpdater.php index 3a6db05ef..b811fe868 100644 --- a/app/References/ReferenceUpdater.php +++ b/app/References/ReferenceUpdater.php @@ -5,7 +5,6 @@ namespace BookStack\References; use BookStack\Entities\Models\Book; use BookStack\Entities\Models\HasDescriptionInterface; use BookStack\Entities\Models\Entity; -use BookStack\Entities\Models\EntityContainerData; use BookStack\Entities\Models\Page; use BookStack\Entities\Repos\RevisionRepo; use BookStack\Util\HtmlDocument; @@ -30,12 +29,45 @@ class ReferenceUpdater } } + /** + * Change existing references for a range of entities using the given context. + */ public function changeReferencesUsingContext(ReferenceChangeContext $context): void { - // TODO + $bindings = []; + foreach ($context->getOldEntities() as $old) { + $bindings[] = $old->getMorphClass(); + $bindings[] = $old->id; + } - // We should probably have references by this point, so we could use those for efficient - // discovery instead of scanning each item within the context. + // No targets to update within the context, so no need to continue. + if (count($bindings) < 2) { + return; + } + + $toReferenceQuery = '(to_type, to_id) IN (' . rtrim(str_repeat('(?,?),', count($bindings) / 2), ',') . ')'; + + // Cycle each new entity in the context + foreach ($context->getNewEntities() as $new) { + // For each, get all references from it which lead to other items within the context of the change + $newReferencesInContext = $new->referencesFrom()->whereRaw($toReferenceQuery, $bindings)->get(); + // For each reference, update the URL and the reference entry + foreach ($newReferencesInContext as $reference) { + $oldToEntity = $reference->to; + $newToEntity = $context->getNewForOld($oldToEntity); + if ($newToEntity === null) { + continue; + } + + $this->updateReferencesWithinEntity($new, $oldToEntity->getUrl(), $newToEntity->getUrl()); + if ($newToEntity instanceof Page && $oldToEntity instanceof Page) { + $this->updateReferencesWithinPage($newToEntity, $oldToEntity->getPermalink(), $newToEntity->getPermalink()); + } + $reference->to_id = $newToEntity->id; + $reference->to_type = $newToEntity->getMorphClass(); + $reference->save(); + } + } } /** diff --git a/tests/Entity/CopyTest.php b/tests/Entity/CopyTest.php index 258b538f5..43fe12083 100644 --- a/tests/Entity/CopyTest.php +++ b/tests/Entity/CopyTest.php @@ -214,12 +214,12 @@ class CopyTest extends TestCase 'html' => '

This is a test book link

', ]); - $html = '

This is a test page link

'; - // Quick pre-update to get stable slug $this->put($book->getUrl(), ['name' => 'Internal ref test']); $book->refresh(); + $page->refresh(); + $html = '

This is a test page link

'; $this->put($book->getUrl(), ['name' => 'Internal ref test', 'description_html' => $html]); $this->post($book->getUrl('/copy'), ['name' => 'My copied book']); @@ -245,12 +245,12 @@ class CopyTest extends TestCase 'html' => '

This is a test chapter link

', ]); - $html = '

This is a test page link

'; - // Quick pre-update to get stable slug $this->put($chapter->getUrl(), ['name' => 'Internal ref test']); $chapter->refresh(); + $page->refresh(); + $html = '

This is a test page link

'; $this->put($chapter->getUrl(), ['name' => 'Internal ref test', 'description_html' => $html]); $this->post($chapter->getUrl('/copy'), ['name' => 'My copied chapter']); @@ -258,11 +258,11 @@ class CopyTest extends TestCase $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); $newPage = $newChapter->pages()->where('name', '=', 'reference test page')->first(); - $this->assertStringContainsString($newChapter->getUrl(), $newPage->html); - $this->assertStringContainsString($newPage->getUrl(), $newChapter->description_html); + $this->assertStringContainsString($newChapter->getUrl() . '"', $newPage->html); + $this->assertStringContainsString($newPage->getUrl() . '"', $newChapter->description_html); - $this->assertStringNotContainsString($chapter->getUrl(), $newPage->html); - $this->assertStringNotContainsString($page->getUrl(), $newChapter->description_html); + $this->assertStringNotContainsString($chapter->getUrl() . '"', $newPage->html); + $this->assertStringNotContainsString($page->getUrl() . '"', $newChapter->description_html); } public function test_page_copy_updates_internal_self_references() From bb350639c6be27c746ab886c70f620e39eebfa05 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 27 Nov 2025 21:55:32 +0000 Subject: [PATCH 14/51] Styles: Made non-active dark/light css variables exist by default This means that it would be possible to jump between light/dark mode with just the class, and no reload needed. Not something we'll directly use right now, but may be useful in customizations. --- .../layouts/parts/custom-styles.blade.php | 29 ++++++++++++------- tests/Settings/SettingsTest.php | 13 +++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/resources/views/layouts/parts/custom-styles.blade.php b/resources/views/layouts/parts/custom-styles.blade.php index bfdcc8512..b31334e73 100644 --- a/resources/views/layouts/parts/custom-styles.blade.php +++ b/resources/views/layouts/parts/custom-styles.blade.php @@ -1,15 +1,22 @@ -@php - $settingSuffix = setting()->getForCurrentUser('dark-mode-enabled') ? '-dark' : ''; -@endphp diff --git a/tests/Settings/SettingsTest.php b/tests/Settings/SettingsTest.php index 9d45706e7..a3e65b483 100644 --- a/tests/Settings/SettingsTest.php +++ b/tests/Settings/SettingsTest.php @@ -101,4 +101,17 @@ class SettingsTest extends TestCase file_get_contents(public_path('favicon.ico')), ); } + + public function test_both_light_and_dark_colors_are_used_in_the_base_view() + { + // To allow for dynamic color changes on the front-end where desired. + $this->setSettings(['page-color' => 'superlightblue', 'page-color-dark' => 'superdarkblue']); + + $resp = $this->get('/login'); + + $resp->assertSee(':root {'); + $resp->assertSee('superlightblue'); + $resp->assertSee(':root.dark-mode {'); + $resp->assertSee('superdarkblue'); + } } From 3cd3e73f607dc7513c1bd7dc9d458808267eae4c Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 29 Nov 2025 20:35:16 +0000 Subject: [PATCH 15/51] Copying: Fixed issue with non-page links to page permalinks Found during manual testing. Added test case to cover. --- app/References/ReferenceChangeContext.php | 11 ----------- app/References/ReferenceUpdater.php | 2 +- tests/Entity/CopyTest.php | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/References/ReferenceChangeContext.php b/app/References/ReferenceChangeContext.php index f11619813..27de0e2d2 100644 --- a/app/References/ReferenceChangeContext.php +++ b/app/References/ReferenceChangeContext.php @@ -17,17 +17,6 @@ class ReferenceChangeContext $this->changes[] = [$oldEntity, $newEntity]; } - /** - * Get all the change pairs. - * Returned array is an array of pairs, where the first item is the old entity - * and the second is the new entity. - * @return array - */ - public function getChanges(): array - { - return $this->changes; - } - /** * Get all the new entities from the changes. */ diff --git a/app/References/ReferenceUpdater.php b/app/References/ReferenceUpdater.php index b811fe868..42de72fde 100644 --- a/app/References/ReferenceUpdater.php +++ b/app/References/ReferenceUpdater.php @@ -61,7 +61,7 @@ class ReferenceUpdater $this->updateReferencesWithinEntity($new, $oldToEntity->getUrl(), $newToEntity->getUrl()); if ($newToEntity instanceof Page && $oldToEntity instanceof Page) { - $this->updateReferencesWithinPage($newToEntity, $oldToEntity->getPermalink(), $newToEntity->getPermalink()); + $this->updateReferencesWithinEntity($new, $oldToEntity->getPermalink(), $newToEntity->getPermalink()); } $reference->to_id = $newToEntity->id; $reference->to_type = $newToEntity->getMorphClass(); diff --git a/tests/Entity/CopyTest.php b/tests/Entity/CopyTest.php index 43fe12083..d4b6d54cf 100644 --- a/tests/Entity/CopyTest.php +++ b/tests/Entity/CopyTest.php @@ -265,6 +265,25 @@ class CopyTest extends TestCase $this->assertStringNotContainsString($page->getUrl() . '"', $newChapter->description_html); } + public function test_chapter_copy_updates_internal_permalink_references_in_its_description() + { + $chapter = $this->entities->chapterHasPages(); + /** @var Page $page */ + $page = $chapter->pages()->first(); + + $this->asEditor()->put($chapter->getUrl(), [ + 'name' => 'Internal ref test', + 'description_html' => '

This is a test page link

', + ]); + $chapter->refresh(); + + $this->post($chapter->getUrl('/copy'), ['name' => 'My copied chapter']); + $newChapter = Chapter::query()->where('name', '=', 'My copied chapter')->first(); + + $this->assertStringContainsString('/link/', $newChapter->description_html); + $this->assertStringNotContainsString($page->getPermalink() . '"', $newChapter->description_html); + } + public function test_page_copy_updates_internal_self_references() { $page = $this->entities->page(); From 9e8088f18637a2c893c6ba0958cc66fb7e2b4ded Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 30 Nov 2025 15:07:23 +0000 Subject: [PATCH 16/51] JS: Bumped up JS package versions, and node version --- dev/docs/development.md | 2 +- package-lock.json | 1157 +++++++++++++++++++-------------------- package.json | 30 +- 3 files changed, 590 insertions(+), 599 deletions(-) diff --git a/dev/docs/development.md b/dev/docs/development.md index 6c250902a..418e9ead6 100644 --- a/dev/docs/development.md +++ b/dev/docs/development.md @@ -3,7 +3,7 @@ All development on BookStack is currently done on the `development` branch. When it's time for a release the `development` branch is merged into release with built & minified CSS & JS then tagged at its version. Here are the current development requirements: -* [Node.js](https://nodejs.org/en/) v20.0+ +* [Node.js](https://nodejs.org/en/) v22.0+ ## Building CSS & JavaScript Assets diff --git a/package-lock.json b/package-lock.json index fb6a1d4fa..44ebf7eab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,21 +4,22 @@ "requires": true, "packages": { "": { + "name": "bookstack", "dependencies": { - "@codemirror/commands": "^6.8.1", + "@codemirror/commands": "^6.10.0", "@codemirror/lang-css": "^6.3.1", - "@codemirror/lang-html": "^6.4.9", + "@codemirror/lang-html": "^6.4.11", "@codemirror/lang-javascript": "^6.2.4", "@codemirror/lang-json": "^6.0.2", - "@codemirror/lang-markdown": "^6.3.4", + "@codemirror/lang-markdown": "^6.5.0", "@codemirror/lang-php": "^6.0.2", "@codemirror/lang-xml": "^6.1.0", "@codemirror/language": "^6.11.3", - "@codemirror/legacy-modes": "^6.5.1", + "@codemirror/legacy-modes": "^6.5.2", "@codemirror/state": "^6.5.2", "@codemirror/theme-one-dark": "^6.1.3", - "@codemirror/view": "^6.38.1", - "@lezer/highlight": "^1.2.1", + "@codemirror/view": "^6.38.8", + "@lezer/highlight": "^1.2.3", "@ssddanbrown/codemirror-lang-smarty": "^1.0.0", "@ssddanbrown/codemirror-lang-twig": "^1.0.0", "@types/jest": "^30.0.0", @@ -26,24 +27,24 @@ "idb-keyval": "^6.2.2", "markdown-it": "^14.1.0", "markdown-it-task-lists": "^2.1.1", - "snabbdom": "^3.6.2", + "snabbdom": "^3.6.3", "sortablejs": "^1.15.6" }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^9.39.1", "@lezer/generator": "^1.8.0", "@types/markdown-it": "^14.1.2", - "@types/sortablejs": "^1.15.8", + "@types/sortablejs": "^1.15.9", "chokidar-cli": "^3.0", - "esbuild": "^0.25.9", - "eslint": "^9.34.0", + "esbuild": "^0.27.0", + "eslint": "^9.39.1", "eslint-plugin-import": "^2.32.0", - "jest": "^30.1.1", - "jest-environment-jsdom": "^30.1.1", + "jest": "^30.2.0", + "jest-environment-jsdom": "^30.2.0", "livereload": "^0.10.3", "npm-run-all": "^4.1.5", - "sass": "^1.91.0", - "ts-jest": "^29.4.1", + "sass": "^1.94.2", + "ts-jest": "^29.4.5", "ts-node": "^10.9.2", "typescript": "5.9.*" } @@ -590,9 +591,9 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz", - "integrity": "sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.0.tgz", + "integrity": "sha512-2xUIc5mHXQzT16JnyOFkh8PvfeXuIut3pslWGfsGOhxP/lpgRm9HOl/mpzLErgt5mXDovqA0d11P21gofRLb9w==", "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", @@ -615,9 +616,9 @@ } }, "node_modules/@codemirror/lang-html": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz", - "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", + "version": "6.4.11", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.11.tgz", + "integrity": "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==", "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.0.0", @@ -628,7 +629,7 @@ "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" + "@lezer/html": "^1.3.12" } }, "node_modules/@codemirror/lang-javascript": { @@ -657,9 +658,9 @@ } }, "node_modules/@codemirror/lang-markdown": { - "version": "6.3.4", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.3.4.tgz", - "integrity": "sha512-fBm0BO03azXnTAsxhONDYHi/qWSI+uSEIpzKM7h/bkIc9fHnFp9y7KTMXKON0teNT97pFhc1a9DQTtWBYEZ7ug==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.5.0.tgz", + "integrity": "sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw==", "license": "MIT", "dependencies": { "@codemirror/autocomplete": "^6.7.1", @@ -713,9 +714,9 @@ } }, "node_modules/@codemirror/legacy-modes": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.5.1.tgz", - "integrity": "sha512-DJYQQ00N1/KdESpZV7jg9hafof/iBNp9h7TYo1SLMk86TWl9uDsVdho2dzd81K+v4retmK6mdC7WpuOQDytQqw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.5.2.tgz", + "integrity": "sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==", "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0" @@ -765,9 +766,9 @@ } }, "node_modules/@codemirror/view": { - "version": "6.38.1", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.1.tgz", - "integrity": "sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==", + "version": "6.38.8", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.8.tgz", + "integrity": "sha512-XcE9fcnkHCbWkjeKyi0lllwXmBLtyYb5dt89dJyx23I9+LSh5vZDIuk7OLG4VM1lgrXZQcY6cxyZyk5WVPRv/A==", "license": "MIT", "dependencies": { "@codemirror/state": "^6.5.0", @@ -916,9 +917,9 @@ } }, "node_modules/@emnapi/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", - "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", "dev": true, "license": "MIT", "optional": true, @@ -928,9 +929,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", - "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", "dev": true, "license": "MIT", "optional": true, @@ -950,9 +951,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", - "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz", + "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==", "cpu": [ "ppc64" ], @@ -967,9 +968,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", - "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.0.tgz", + "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==", "cpu": [ "arm" ], @@ -984,9 +985,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", - "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz", + "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==", "cpu": [ "arm64" ], @@ -1001,9 +1002,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", - "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.0.tgz", + "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==", "cpu": [ "x64" ], @@ -1018,9 +1019,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", - "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz", + "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==", "cpu": [ "arm64" ], @@ -1035,9 +1036,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", - "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz", + "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==", "cpu": [ "x64" ], @@ -1052,9 +1053,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", - "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz", + "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==", "cpu": [ "arm64" ], @@ -1069,9 +1070,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", - "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz", + "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==", "cpu": [ "x64" ], @@ -1086,9 +1087,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", - "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz", + "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==", "cpu": [ "arm" ], @@ -1103,9 +1104,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", - "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz", + "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==", "cpu": [ "arm64" ], @@ -1120,9 +1121,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", - "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz", + "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==", "cpu": [ "ia32" ], @@ -1137,9 +1138,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", - "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz", + "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==", "cpu": [ "loong64" ], @@ -1154,9 +1155,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", - "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz", + "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==", "cpu": [ "mips64el" ], @@ -1171,9 +1172,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", - "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz", + "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==", "cpu": [ "ppc64" ], @@ -1188,9 +1189,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", - "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz", + "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==", "cpu": [ "riscv64" ], @@ -1205,9 +1206,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", - "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz", + "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==", "cpu": [ "s390x" ], @@ -1222,9 +1223,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", - "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz", + "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==", "cpu": [ "x64" ], @@ -1239,9 +1240,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", - "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz", + "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==", "cpu": [ "arm64" ], @@ -1256,9 +1257,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", - "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz", + "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==", "cpu": [ "x64" ], @@ -1273,9 +1274,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", - "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz", + "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==", "cpu": [ "arm64" ], @@ -1290,9 +1291,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", - "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz", + "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==", "cpu": [ "x64" ], @@ -1307,9 +1308,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", - "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz", + "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==", "cpu": [ "arm64" ], @@ -1324,9 +1325,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", - "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz", + "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==", "cpu": [ "x64" ], @@ -1341,9 +1342,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", - "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz", + "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==", "cpu": [ "arm64" ], @@ -1358,9 +1359,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", - "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz", + "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==", "cpu": [ "ia32" ], @@ -1375,9 +1376,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", - "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz", + "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==", "cpu": [ "x64" ], @@ -1392,9 +1393,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -1434,13 +1435,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1449,19 +1450,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1496,9 +1500,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.34.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", - "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -1509,9 +1513,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1519,13 +1523,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.2", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { @@ -1617,9 +1621,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -1714,9 +1718,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -1790,17 +1794,17 @@ } }, "node_modules/@jest/console": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.1.1.tgz", - "integrity": "sha512-f7TGqR1k4GtN5pyFrKmq+ZVndesiwLU33yDpJIGMS9aW+j6hKjue7ljeAdznBsH9kAnxUWe2Y+Y3fLV/FJt3gA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", + "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "@types/node": "*", "chalk": "^4.1.2", - "jest-message-util": "30.1.0", - "jest-util": "30.0.5", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", "slash": "^3.0.0" }, "engines": { @@ -1808,39 +1812,39 @@ } }, "node_modules/@jest/core": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.1.1.tgz", - "integrity": "sha512-3ncU9peZ3D2VdgRkdZtUceTrDgX5yiDRwAFjtxNfU22IiZrpVWlv/FogzDLYSJQptQGfFo3PcHK86a2oG6WUGg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", + "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.1.1", + "@jest/console": "30.2.0", "@jest/pattern": "30.0.1", - "@jest/reporters": "30.1.1", - "@jest/test-result": "30.1.1", - "@jest/transform": "30.1.1", - "@jest/types": "30.0.5", + "@jest/reporters": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "ci-info": "^4.2.0", "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", - "jest-changed-files": "30.0.5", - "jest-config": "30.1.1", - "jest-haste-map": "30.1.0", - "jest-message-util": "30.1.0", + "jest-changed-files": "30.2.0", + "jest-config": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", "jest-regex-util": "30.0.1", - "jest-resolve": "30.1.0", - "jest-resolve-dependencies": "30.1.1", - "jest-runner": "30.1.1", - "jest-runtime": "30.1.1", - "jest-snapshot": "30.1.1", - "jest-util": "30.0.5", - "jest-validate": "30.1.0", - "jest-watcher": "30.1.1", + "jest-resolve": "30.2.0", + "jest-resolve-dependencies": "30.2.0", + "jest-runner": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", + "jest-watcher": "30.2.0", "micromatch": "^4.0.8", - "pretty-format": "30.0.5", + "pretty-format": "30.2.0", "slash": "^3.0.0" }, "engines": { @@ -1865,35 +1869,35 @@ } }, "node_modules/@jest/environment": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.1.1.tgz", - "integrity": "sha512-yWHbU+3j7ehQE+NRpnxRvHvpUhoohIjMePBbIr8lfe0cWVb0WeTf80DNux1GPJa18CDHiIU5DtksGUfxcDE+Rw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", + "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.1.1", - "@jest/types": "30.0.5", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "jest-mock": "30.0.5" + "jest-mock": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/environment-jsdom-abstract": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.1.1.tgz", - "integrity": "sha512-d7pP9SeIOI6qnrNIS/ds1hlS9jpqh8EywHK0dALSLODZKo2QEGnDNvnPvhRKI0FHWDnE2EMl8CDTP0jM9lhlOA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz", + "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.1.1", - "@jest/fake-timers": "30.1.1", - "@jest/types": "30.0.5", + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -1909,23 +1913,23 @@ } }, "node_modules/@jest/expect": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.1.1.tgz", - "integrity": "sha512-3vHIHsF+qd3D8FU2c7U5l3rg1fhDwAYcGyHyZAi94YIlTwcJ+boNhRyJf373cl4wxbOX+0Q7dF40RTrTFTSuig==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", "dev": true, "license": "MIT", "dependencies": { - "expect": "30.1.1", - "jest-snapshot": "30.1.1" + "expect": "30.2.0", + "jest-snapshot": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.1.1.tgz", - "integrity": "sha512-5YUHr27fpJ64dnvtu+tt11ewATynrHkGYD+uSFgRr8V2eFJis/vEXgToyLwccIwqBihVfz9jwio+Zr1ab1Zihw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0" @@ -1935,18 +1939,18 @@ } }, "node_modules/@jest/fake-timers": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.1.1.tgz", - "integrity": "sha512-fK/25dNgBNYPw3eLi2CRs57g1H04qBAFNMsUY3IRzkfx/m4THe0E1zF+yGQBOMKKc2XQVdc9EYbJ4hEm7/2UtA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", + "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-message-util": "30.1.0", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -1962,16 +1966,16 @@ } }, "node_modules/@jest/globals": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.1.1.tgz", - "integrity": "sha512-NNUUkHT2TU/xztZl6r1UXvJL+zvCwmZsQDmK69fVHHcB9fBtlu3FInnzOve/ZoyKnWY8JXWJNT+Lkmu1+ubXUA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", + "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.1.1", - "@jest/expect": "30.1.1", - "@jest/types": "30.0.5", - "jest-mock": "30.0.5" + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/types": "30.2.0", + "jest-mock": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -1991,17 +1995,17 @@ } }, "node_modules/@jest/reporters": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.1.1.tgz", - "integrity": "sha512-Hb2Bq80kahOC6Sv2waEaH1rEU6VdFcM6WHaRBWQF9tf30+nJHxhl/Upbgo9+25f0mOgbphxvbwSMjSgy9gW/FA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", + "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.1.1", - "@jest/test-result": "30.1.1", - "@jest/transform": "30.1.1", - "@jest/types": "30.0.5", + "@jest/console": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", "@jridgewell/trace-mapping": "^0.3.25", "@types/node": "*", "chalk": "^4.1.2", @@ -2014,9 +2018,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^5.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "30.1.0", - "jest-util": "30.0.5", - "jest-worker": "30.1.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", "slash": "^3.0.0", "string-length": "^4.0.2", "v8-to-istanbul": "^9.0.1" @@ -2046,13 +2050,13 @@ } }, "node_modules/@jest/snapshot-utils": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.1.1.tgz", - "integrity": "sha512-TkVBc9wuN22TT8hESRFmjjg/xIMu7z0J3UDYtIRydzCqlLPTB7jK1DDBKdnTUZ4zL3z3rnPpzV6rL1Uzh87sXg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", + "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "natural-compare": "^1.4.0" @@ -2077,14 +2081,14 @@ } }, "node_modules/@jest/test-result": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.1.1.tgz", - "integrity": "sha512-bMdj7fNu8iZuBPSnbVir5ezvWmVo4jrw7xDE+A33Yb3ENCoiJK9XgOLgal+rJ9XSKjsL7aPUMIo87zhN7I5o2w==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", + "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.1.1", - "@jest/types": "30.0.5", + "@jest/console": "30.2.0", + "@jest/types": "30.2.0", "@types/istanbul-lib-coverage": "^2.0.6", "collect-v8-coverage": "^1.0.2" }, @@ -2093,15 +2097,15 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.1.1.tgz", - "integrity": "sha512-yruRdLXSA3HYD/MTNykgJ6VYEacNcXDFRMqKVAwlYegmxICUiT/B++CNuhJnYJzKYks61iYnjVsMwbUqmmAYJg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", + "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.1.1", + "@jest/test-result": "30.2.0", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.1.0", + "jest-haste-map": "30.2.0", "slash": "^3.0.0" }, "engines": { @@ -2109,23 +2113,23 @@ } }, "node_modules/@jest/transform": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.1.1.tgz", - "integrity": "sha512-PHIA2AbAASBfk6evkNifvmx9lkOSkmvaQoO6VSpuL8+kQqDMHeDoJ7RU3YP1wWAMD7AyQn9UL5iheuFYCC4lqQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.0", + "babel-plugin-istanbul": "^7.0.1", "chalk": "^4.1.2", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.1.0", + "jest-haste-map": "30.2.0", "jest-regex-util": "30.0.1", - "jest-util": "30.0.5", + "jest-util": "30.2.0", "micromatch": "^4.0.8", "pirates": "^4.0.7", "slash": "^3.0.0", @@ -2136,9 +2140,9 @@ } }, "node_modules/@jest/types": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", - "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "license": "MIT", "dependencies": { "@jest/pattern": "30.0.1", @@ -2193,9 +2197,9 @@ } }, "node_modules/@lezer/common": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", - "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.4.0.tgz", + "integrity": "sha512-DVeMRoGrgn/k45oQNu189BoW4SZwgZFzJ1+1TV5j2NJ/KFC83oa/enRqZSGshyeMk5cPWMhsKs9nx+8o0unwGg==", "license": "MIT" }, "node_modules/@lezer/css": { @@ -2224,18 +2228,18 @@ } }, "node_modules/@lezer/highlight": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz", - "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", + "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", "license": "MIT", "dependencies": { - "@lezer/common": "^1.0.0" + "@lezer/common": "^1.3.0" } }, "node_modules/@lezer/html": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz", - "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "version": "1.3.12", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.12.tgz", + "integrity": "sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw==", "license": "MIT", "dependencies": { "@lezer/common": "^1.2.0", @@ -2738,9 +2742,9 @@ "license": "MIT" }, "node_modules/@tybys/wasm-util": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", - "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", "optional": true, @@ -2895,9 +2899,9 @@ } }, "node_modules/@types/sortablejs": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz", - "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz", + "integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==", "dev": true, "license": "MIT" }, @@ -3285,9 +3289,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", - "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -3488,16 +3492,16 @@ } }, "node_modules/babel-jest": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.1.1.tgz", - "integrity": "sha512-1bZfC/V03qBCzASvZpNFhx3Ouj6LgOd4KFJm4br/fYOS+tSSvVCE61QmcAVbMTwq/GoB7KN4pzGMoyr9cMxSvQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", + "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "30.1.1", + "@jest/transform": "30.2.0", "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.0", - "babel-preset-jest": "30.0.1", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.2.0", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "slash": "^3.0.0" @@ -3506,15 +3510,18 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.11.0" + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, "node_modules/babel-plugin-istanbul": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz", - "integrity": "sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -3527,14 +3534,12 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz", - "integrity": "sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", + "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", "@types/babel__core": "^7.20.5" }, "engines": { @@ -3542,9 +3547,9 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { @@ -3565,24 +3570,24 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz", - "integrity": "sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", + "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "30.0.1", - "babel-preset-current-node-syntax": "^1.1.0" + "babel-plugin-jest-hoist": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.11.0" + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, "node_modules/balanced-match": { @@ -3868,9 +3873,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", - "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz", + "integrity": "sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==", "dev": true, "license": "MIT" }, @@ -3936,9 +3941,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, @@ -4120,9 +4125,9 @@ "license": "MIT" }, "node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -4455,9 +4460,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", - "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.0.tgz", + "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4468,32 +4473,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.9", - "@esbuild/android-arm": "0.25.9", - "@esbuild/android-arm64": "0.25.9", - "@esbuild/android-x64": "0.25.9", - "@esbuild/darwin-arm64": "0.25.9", - "@esbuild/darwin-x64": "0.25.9", - "@esbuild/freebsd-arm64": "0.25.9", - "@esbuild/freebsd-x64": "0.25.9", - "@esbuild/linux-arm": "0.25.9", - "@esbuild/linux-arm64": "0.25.9", - "@esbuild/linux-ia32": "0.25.9", - "@esbuild/linux-loong64": "0.25.9", - "@esbuild/linux-mips64el": "0.25.9", - "@esbuild/linux-ppc64": "0.25.9", - "@esbuild/linux-riscv64": "0.25.9", - "@esbuild/linux-s390x": "0.25.9", - "@esbuild/linux-x64": "0.25.9", - "@esbuild/netbsd-arm64": "0.25.9", - "@esbuild/netbsd-x64": "0.25.9", - "@esbuild/openbsd-arm64": "0.25.9", - "@esbuild/openbsd-x64": "0.25.9", - "@esbuild/openharmony-arm64": "0.25.9", - "@esbuild/sunos-x64": "0.25.9", - "@esbuild/win32-arm64": "0.25.9", - "@esbuild/win32-ia32": "0.25.9", - "@esbuild/win32-x64": "0.25.9" + "@esbuild/aix-ppc64": "0.27.0", + "@esbuild/android-arm": "0.27.0", + "@esbuild/android-arm64": "0.27.0", + "@esbuild/android-x64": "0.27.0", + "@esbuild/darwin-arm64": "0.27.0", + "@esbuild/darwin-x64": "0.27.0", + "@esbuild/freebsd-arm64": "0.27.0", + "@esbuild/freebsd-x64": "0.27.0", + "@esbuild/linux-arm": "0.27.0", + "@esbuild/linux-arm64": "0.27.0", + "@esbuild/linux-ia32": "0.27.0", + "@esbuild/linux-loong64": "0.27.0", + "@esbuild/linux-mips64el": "0.27.0", + "@esbuild/linux-ppc64": "0.27.0", + "@esbuild/linux-riscv64": "0.27.0", + "@esbuild/linux-s390x": "0.27.0", + "@esbuild/linux-x64": "0.27.0", + "@esbuild/netbsd-arm64": "0.27.0", + "@esbuild/netbsd-x64": "0.27.0", + "@esbuild/openbsd-arm64": "0.27.0", + "@esbuild/openbsd-x64": "0.27.0", + "@esbuild/openharmony-arm64": "0.27.0", + "@esbuild/sunos-x64": "0.27.0", + "@esbuild/win32-arm64": "0.27.0", + "@esbuild/win32-ia32": "0.27.0", + "@esbuild/win32-x64": "0.27.0" } }, "node_modules/escalade": { @@ -4520,25 +4525,24 @@ } }, "node_modules/eslint": { - "version": "9.34.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.34.0.tgz", - "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.1", - "@eslint/core": "^0.15.2", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.34.0", - "@eslint/plugin-kit": "^0.3.5", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", @@ -4819,6 +4823,13 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/exit-x": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", @@ -4830,17 +4841,17 @@ } }, "node_modules/expect": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.1.1.tgz", - "integrity": "sha512-OKe7cdic4qbfWd/CcgwJvvCrNX2KWfuMZee9AfJHL1gTYmvqjBjZG1a2NwfhspBzxzlXwsN75WWpKTYfsJpBxg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.1.1", + "@jest/expect-utils": "30.2.0", "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.1.1", - "jest-message-util": "30.1.0", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -4973,19 +4984,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5150,9 +5148,9 @@ } }, "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { @@ -6120,16 +6118,16 @@ } }, "node_modules/jest": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.1.1.tgz", - "integrity": "sha512-yC3JvpP/ZcAZX5rYCtXO/g9k6VTCQz0VFE2v1FpxytWzUqfDtu0XL/pwnNvptzYItvGwomh1ehomRNMOyhCJKw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", + "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.1.1", - "@jest/types": "30.0.5", + "@jest/core": "30.2.0", + "@jest/types": "30.2.0", "import-local": "^3.2.0", - "jest-cli": "30.1.1" + "jest-cli": "30.2.0" }, "bin": { "jest": "bin/jest.js" @@ -6147,14 +6145,14 @@ } }, "node_modules/jest-changed-files": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.5.tgz", - "integrity": "sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", + "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", "dev": true, "license": "MIT", "dependencies": { "execa": "^5.1.1", - "jest-util": "30.0.5", + "jest-util": "30.2.0", "p-limit": "^3.1.0" }, "engines": { @@ -6162,29 +6160,29 @@ } }, "node_modules/jest-circus": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.1.1.tgz", - "integrity": "sha512-M3Vd4x5wD7eSJspuTvRF55AkOOBndRxgW3gqQBDlFvbH3X+ASdi8jc+EqXEeAFd/UHulVYIlC4XKJABOhLw6UA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", + "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.1.1", - "@jest/expect": "30.1.1", - "@jest/test-result": "30.1.1", - "@jest/types": "30.0.5", + "@jest/environment": "30.2.0", + "@jest/expect": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", "chalk": "^4.1.2", "co": "^4.6.0", "dedent": "^1.6.0", "is-generator-fn": "^2.1.0", - "jest-each": "30.1.0", - "jest-matcher-utils": "30.1.1", - "jest-message-util": "30.1.0", - "jest-runtime": "30.1.1", - "jest-snapshot": "30.1.1", - "jest-util": "30.0.5", + "jest-each": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-runtime": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", "p-limit": "^3.1.0", - "pretty-format": "30.0.5", + "pretty-format": "30.2.0", "pure-rand": "^7.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.6" @@ -6194,21 +6192,21 @@ } }, "node_modules/jest-cli": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.1.1.tgz", - "integrity": "sha512-xm9llxuh5OoI5KZaYzlMhklryHBwg9LZy/gEaaMlXlxb+cZekGNzukU0iblbDo3XOBuN6N0CgK4ykgNRYSEb6g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", + "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.1.1", - "@jest/test-result": "30.1.1", - "@jest/types": "30.0.5", + "@jest/core": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "chalk": "^4.1.2", "exit-x": "^0.2.2", "import-local": "^3.2.0", - "jest-config": "30.1.1", - "jest-util": "30.0.5", - "jest-validate": "30.1.0", + "jest-config": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", "yargs": "^17.7.2" }, "bin": { @@ -6344,34 +6342,34 @@ } }, "node_modules/jest-config": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.1.1.tgz", - "integrity": "sha512-xuPGUGDw+9fPPnGmddnLnHS/mhKUiJOW7K65vErYmglEPKq65NKwSRchkQ7iv6gqjs2l+YNEsAtbsplxozdOWg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", + "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", "@jest/get-type": "30.1.0", "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.1.1", - "@jest/types": "30.0.5", - "babel-jest": "30.1.1", + "@jest/test-sequencer": "30.2.0", + "@jest/types": "30.2.0", + "babel-jest": "30.2.0", "chalk": "^4.1.2", "ci-info": "^4.2.0", "deepmerge": "^4.3.1", "glob": "^10.3.10", "graceful-fs": "^4.2.11", - "jest-circus": "30.1.1", - "jest-docblock": "30.0.1", - "jest-environment-node": "30.1.1", + "jest-circus": "30.2.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", "jest-regex-util": "30.0.1", - "jest-resolve": "30.1.0", - "jest-runner": "30.1.1", - "jest-util": "30.0.5", - "jest-validate": "30.1.0", + "jest-resolve": "30.2.0", + "jest-runner": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", "micromatch": "^4.0.8", "parse-json": "^5.2.0", - "pretty-format": "30.0.5", + "pretty-format": "30.2.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -6396,24 +6394,24 @@ } }, "node_modules/jest-diff": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.1.1.tgz", - "integrity": "sha512-LUU2Gx8EhYxpdzTR6BmjL1ifgOAQJQELTHOiPv9KITaKjZvJ9Jmgigx01tuZ49id37LorpGc9dPBPlXTboXScw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "license": "MIT", "dependencies": { "@jest/diff-sequences": "30.0.1", "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "pretty-format": "30.0.5" + "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-docblock": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.1.tgz", - "integrity": "sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, "license": "MIT", "dependencies": { @@ -6424,31 +6422,31 @@ } }, "node_modules/jest-each": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.1.0.tgz", - "integrity": "sha512-A+9FKzxPluqogNahpCv04UJvcZ9B3HamqpDNWNKDjtxVRYB8xbZLFuCr8JAJFpNp83CA0anGQFlpQna9Me+/tQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", + "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "chalk": "^4.1.2", - "jest-util": "30.0.5", - "pretty-format": "30.0.5" + "jest-util": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-environment-jsdom": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.1.1.tgz", - "integrity": "sha512-fInyXsHSuPaERmRiub4V6jl6KERXowGqY8AISJrXZjOq7vdP46qecm+GnTngjcUPeHFqrxp1PfP0XuFfKTzA2A==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.2.0.tgz", + "integrity": "sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.1.1", - "@jest/environment-jsdom-abstract": "30.1.1", + "@jest/environment": "30.2.0", + "@jest/environment-jsdom-abstract": "30.2.0", "@types/jsdom": "^21.1.7", "@types/node": "*", "jsdom": "^26.1.0" @@ -6466,39 +6464,39 @@ } }, "node_modules/jest-environment-node": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.1.1.tgz", - "integrity": "sha512-IaMoaA6saxnJimqCppUDqKck+LKM0Jg+OxyMUIvs1yGd2neiC22o8zXo90k04+tO+49OmgMR4jTgM5e4B0S62Q==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", + "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.1.1", - "@jest/fake-timers": "30.1.1", - "@jest/types": "30.0.5", + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", - "jest-mock": "30.0.5", - "jest-util": "30.0.5", - "jest-validate": "30.1.0" + "jest-mock": "30.2.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-haste-map": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.1.0.tgz", - "integrity": "sha512-JLeM84kNjpRkggcGpQLsV7B8W4LNUWz7oDNVnY1Vjj22b5/fAb3kk3htiD+4Na8bmJmjJR7rBtS2Rmq/NEcADg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "@types/node": "*", "anymatch": "^3.1.3", "fb-watchman": "^2.0.2", "graceful-fs": "^4.2.11", "jest-regex-util": "30.0.1", - "jest-util": "30.0.5", - "jest-worker": "30.1.0", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", "micromatch": "^4.0.8", "walker": "^1.0.8" }, @@ -6510,47 +6508,47 @@ } }, "node_modules/jest-leak-detector": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.1.0.tgz", - "integrity": "sha512-AoFvJzwxK+4KohH60vRuHaqXfWmeBATFZpzpmzNmYTtmRMiyGPVhkXpBqxUQunw+dQB48bDf4NpUs6ivVbRv1g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", + "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", - "pretty-format": "30.0.5" + "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.1.1.tgz", - "integrity": "sha512-SuH2QVemK48BNTqReti6FtjsMPFsSOD/ZzRxU1TttR7RiRsRSe78d03bb4Cx6D4bQC/80Q8U4VnaaAH9FlbZ9w==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "jest-diff": "30.1.1", - "pretty-format": "30.0.5" + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.1.0.tgz", - "integrity": "sha512-HizKDGG98cYkWmaLUHChq4iN+oCENohQLb7Z5guBPumYs+/etonmNFlg1Ps6yN9LTPyZn+M+b/9BbnHx3WTMDg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "@types/stack-utils": "^2.0.3", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "micromatch": "^4.0.8", - "pretty-format": "30.0.5", + "pretty-format": "30.2.0", "slash": "^3.0.0", "stack-utils": "^2.0.6" }, @@ -6559,14 +6557,14 @@ } }, "node_modules/jest-mock": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", - "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "license": "MIT", "dependencies": { - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "@types/node": "*", - "jest-util": "30.0.5" + "jest-util": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -6600,18 +6598,18 @@ } }, "node_modules/jest-resolve": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.1.0.tgz", - "integrity": "sha512-hASe7D/wRtZw8Cm607NrlF7fi3HWC5wmA5jCVc2QjQAB2pTwP9eVZILGEi6OeSLNUtE1zb04sXRowsdh5CUjwA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", + "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.1.0", + "jest-haste-map": "30.2.0", "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.0.5", - "jest-validate": "30.1.0", + "jest-util": "30.2.0", + "jest-validate": "30.2.0", "slash": "^3.0.0", "unrs-resolver": "^1.7.11" }, @@ -6620,46 +6618,46 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.1.1.tgz", - "integrity": "sha512-tRtaaoH8Ws1Gn1o/9pedt19dvVgr81WwdmvJSP9Ow3amOUOP2nN9j94u5jC9XlIfa2Q1FQKIWWQwL4ajqsjCGQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", + "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "30.0.1", - "jest-snapshot": "30.1.1" + "jest-snapshot": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-runner": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.1.1.tgz", - "integrity": "sha512-ATe6372SOfJvCRExtCAr06I4rGujwFdKg44b6i7/aOgFnULwjxzugJ0Y4AnG+jeSeQi8dU7R6oqLGmsxRUbErQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", + "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.1.1", - "@jest/environment": "30.1.1", - "@jest/test-result": "30.1.1", - "@jest/transform": "30.1.1", - "@jest/types": "30.0.5", + "@jest/console": "30.2.0", + "@jest/environment": "30.2.0", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", "chalk": "^4.1.2", "emittery": "^0.13.1", "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", - "jest-docblock": "30.0.1", - "jest-environment-node": "30.1.1", - "jest-haste-map": "30.1.0", - "jest-leak-detector": "30.1.0", - "jest-message-util": "30.1.0", - "jest-resolve": "30.1.0", - "jest-runtime": "30.1.1", - "jest-util": "30.0.5", - "jest-watcher": "30.1.1", - "jest-worker": "30.1.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.2.0", + "jest-haste-map": "30.2.0", + "jest-leak-detector": "30.2.0", + "jest-message-util": "30.2.0", + "jest-resolve": "30.2.0", + "jest-runtime": "30.2.0", + "jest-util": "30.2.0", + "jest-watcher": "30.2.0", + "jest-worker": "30.2.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -6668,32 +6666,32 @@ } }, "node_modules/jest-runtime": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.1.1.tgz", - "integrity": "sha512-7sOyR0Oekw4OesQqqBHuYJRB52QtXiq0NNgLRzVogiMSxKCMiliUd6RrXHCnG5f12Age/ggidCBiQftzcA9XKw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", + "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.1.1", - "@jest/fake-timers": "30.1.1", - "@jest/globals": "30.1.1", + "@jest/environment": "30.2.0", + "@jest/fake-timers": "30.2.0", + "@jest/globals": "30.2.0", "@jest/source-map": "30.0.1", - "@jest/test-result": "30.1.1", - "@jest/transform": "30.1.1", - "@jest/types": "30.0.5", + "@jest/test-result": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", "chalk": "^4.1.2", "cjs-module-lexer": "^2.1.0", "collect-v8-coverage": "^1.0.2", "glob": "^10.3.10", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.1.0", - "jest-message-util": "30.1.0", - "jest-mock": "30.0.5", + "jest-haste-map": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", "jest-regex-util": "30.0.1", - "jest-resolve": "30.1.0", - "jest-snapshot": "30.1.1", - "jest-util": "30.0.5", + "jest-resolve": "30.2.0", + "jest-snapshot": "30.2.0", + "jest-util": "30.2.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -6702,9 +6700,9 @@ } }, "node_modules/jest-snapshot": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.1.1.tgz", - "integrity": "sha512-7/iBEzoJqEt2TjkQY+mPLHP8cbPhLReZVkkxjTMzIzoTC4cZufg7HzKo/n9cIkXKj2LG0x3mmBHsZto+7TOmFg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", + "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", "dev": true, "license": "MIT", "dependencies": { @@ -6713,20 +6711,20 @@ "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.1.1", + "@jest/expect-utils": "30.2.0", "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.1.1", - "@jest/transform": "30.1.1", - "@jest/types": "30.0.5", - "babel-preset-current-node-syntax": "^1.1.0", + "@jest/snapshot-utils": "30.2.0", + "@jest/transform": "30.2.0", + "@jest/types": "30.2.0", + "babel-preset-current-node-syntax": "^1.2.0", "chalk": "^4.1.2", - "expect": "30.1.1", + "expect": "30.2.0", "graceful-fs": "^4.2.11", - "jest-diff": "30.1.1", - "jest-matcher-utils": "30.1.1", - "jest-message-util": "30.1.0", - "jest-util": "30.0.5", - "pretty-format": "30.0.5", + "jest-diff": "30.2.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-util": "30.2.0", + "pretty-format": "30.2.0", "semver": "^7.7.2", "synckit": "^0.11.8" }, @@ -6735,9 +6733,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -6748,12 +6746,12 @@ } }, "node_modules/jest-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", - "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "license": "MIT", "dependencies": { - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "@types/node": "*", "chalk": "^4.1.2", "ci-info": "^4.2.0", @@ -6777,18 +6775,18 @@ } }, "node_modules/jest-validate": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.1.0.tgz", - "integrity": "sha512-7P3ZlCFW/vhfQ8pE7zW6Oi4EzvuB4sgR72Q1INfW9m0FGo0GADYlPwIkf4CyPq7wq85g+kPMtPOHNAdWHeBOaA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", + "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", - "@jest/types": "30.0.5", + "@jest/types": "30.2.0", "camelcase": "^6.3.0", "chalk": "^4.1.2", "leven": "^3.1.0", - "pretty-format": "30.0.5" + "pretty-format": "30.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -6808,19 +6806,19 @@ } }, "node_modules/jest-watcher": { - "version": "30.1.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.1.1.tgz", - "integrity": "sha512-CrAQ73LlaS6KGQQw6NBi71g7qvP7scy+4+2c0jKX6+CWaYg85lZiig5nQQVTsS5a5sffNPL3uxXnaE9d7v9eQg==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", + "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.1.1", - "@jest/types": "30.0.5", + "@jest/test-result": "30.2.0", + "@jest/types": "30.2.0", "@types/node": "*", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "emittery": "^0.13.1", - "jest-util": "30.0.5", + "jest-util": "30.2.0", "string-length": "^4.0.2" }, "engines": { @@ -6828,15 +6826,15 @@ } }, "node_modules/jest-worker": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.1.0.tgz", - "integrity": "sha512-uvWcSjlwAAgIu133Tt77A05H7RIk3Ho8tZL50bQM2AkvLdluw9NG48lRCl3Dt+MOH719n/0nnb5YxUwcuJiKRA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.5", + "jest-util": "30.2.0", "merge-stream": "^2.0.0", "supports-color": "^8.1.1" }, @@ -6867,9 +6865,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -7197,9 +7195,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -7345,9 +7343,9 @@ "license": "MIT" }, "node_modules/napi-postinstall": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.3.tgz", - "integrity": "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", "dev": true, "license": "MIT", "bin": { @@ -7627,9 +7625,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.21", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.21.tgz", - "integrity": "sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==", + "version": "2.2.22", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", + "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", "dev": true, "license": "MIT" }, @@ -8121,9 +8119,9 @@ } }, "node_modules/pretty-format": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", - "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "license": "MIT", "dependencies": { "@jest/schemas": "30.0.5", @@ -8401,9 +8399,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.91.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.91.0.tgz", - "integrity": "sha512-aFOZHGf+ur+bp1bCHZ+u8otKGh77ZtmFyXDo4tlYvT7PWql41Kwd8wdkPqhhT+h2879IVblcHFglIMofsFd1EA==", + "version": "1.94.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.94.2.tgz", + "integrity": "sha512-N+7WK20/wOr7CzA2snJcUSSNTCzeCGUTFY3OgeQP3mZ1aj9NMQ0mSTXwlrnd89j33zzQJGqIN52GIOmYrfq46A==", "dev": true, "license": "MIT", "dependencies": { @@ -8643,11 +8641,17 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/slash": { "version": "3.0.0", @@ -8659,9 +8663,9 @@ } }, "node_modules/snabbdom": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.2.tgz", - "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.3.tgz", + "integrity": "sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==", "license": "MIT", "engines": { "node": ">=12.17.0" @@ -8992,9 +8996,9 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { @@ -9221,9 +9225,9 @@ } }, "node_modules/ts-jest": { - "version": "29.4.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.1.tgz", - "integrity": "sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==", + "version": "29.4.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", + "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", "dev": true, "license": "MIT", "dependencies": { @@ -9233,7 +9237,7 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.7.2", + "semver": "^7.7.3", "type-fest": "^4.41.0", "yargs-parser": "^21.1.1" }, @@ -9274,9 +9278,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -10037,19 +10041,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ws": { "version": "8.18.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", diff --git a/package.json b/package.json index 9ec94acc2..964e3ee7e 100644 --- a/package.json +++ b/package.json @@ -19,38 +19,38 @@ "test": "jest" }, "devDependencies": { - "@eslint/js": "^9.34.0", + "@eslint/js": "^9.39.1", "@lezer/generator": "^1.8.0", "@types/markdown-it": "^14.1.2", - "@types/sortablejs": "^1.15.8", + "@types/sortablejs": "^1.15.9", "chokidar-cli": "^3.0", - "esbuild": "^0.25.9", - "eslint": "^9.34.0", + "esbuild": "^0.27.0", + "eslint": "^9.39.1", "eslint-plugin-import": "^2.32.0", - "jest": "^30.1.1", - "jest-environment-jsdom": "^30.1.1", + "jest": "^30.2.0", + "jest-environment-jsdom": "^30.2.0", "livereload": "^0.10.3", "npm-run-all": "^4.1.5", - "sass": "^1.91.0", - "ts-jest": "^29.4.1", + "sass": "^1.94.2", + "ts-jest": "^29.4.5", "ts-node": "^10.9.2", "typescript": "5.9.*" }, "dependencies": { - "@codemirror/commands": "^6.8.1", + "@codemirror/commands": "^6.10.0", "@codemirror/lang-css": "^6.3.1", - "@codemirror/lang-html": "^6.4.9", + "@codemirror/lang-html": "^6.4.11", "@codemirror/lang-javascript": "^6.2.4", "@codemirror/lang-json": "^6.0.2", - "@codemirror/lang-markdown": "^6.3.4", + "@codemirror/lang-markdown": "^6.5.0", "@codemirror/lang-php": "^6.0.2", "@codemirror/lang-xml": "^6.1.0", "@codemirror/language": "^6.11.3", - "@codemirror/legacy-modes": "^6.5.1", + "@codemirror/legacy-modes": "^6.5.2", "@codemirror/state": "^6.5.2", "@codemirror/theme-one-dark": "^6.1.3", - "@codemirror/view": "^6.38.1", - "@lezer/highlight": "^1.2.1", + "@codemirror/view": "^6.38.8", + "@lezer/highlight": "^1.2.3", "@ssddanbrown/codemirror-lang-smarty": "^1.0.0", "@ssddanbrown/codemirror-lang-twig": "^1.0.0", "@types/jest": "^30.0.0", @@ -58,7 +58,7 @@ "idb-keyval": "^6.2.2", "markdown-it": "^14.1.0", "markdown-it-task-lists": "^2.1.1", - "snabbdom": "^3.6.2", + "snabbdom": "^3.6.3", "sortablejs": "^1.15.6" } } From 9d732d8dd826af6b988ab103560b9b84eab8640e Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 30 Nov 2025 17:02:17 +0000 Subject: [PATCH 17/51] Lexical: Started dev API outline --- dev/docs/wysiwyg-js-api.md | 8 ++ resources/js/wysiwyg/api/api.ts | 11 +++ resources/js/wysiwyg/api/ui.ts | 79 +++++++++++++++++++ resources/js/wysiwyg/index.ts | 7 ++ resources/js/wysiwyg/ui/defaults/toolbars.ts | 18 ++--- .../ui/framework/blocks/overflow-container.ts | 12 ++- resources/js/wysiwyg/ui/framework/manager.ts | 4 + 7 files changed, 129 insertions(+), 10 deletions(-) create mode 100644 dev/docs/wysiwyg-js-api.md create mode 100644 resources/js/wysiwyg/api/api.ts create mode 100644 resources/js/wysiwyg/api/ui.ts diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md new file mode 100644 index 000000000..7fd91a5e6 --- /dev/null +++ b/dev/docs/wysiwyg-js-api.md @@ -0,0 +1,8 @@ +# WYSIWYG JavaScript API + +TODO - Link to this from JS code doc. +TODO - Create JS events and add to the js public events doc. + +TODO - Document the JS API. + +TODO - Add testing coverage \ No newline at end of file diff --git a/resources/js/wysiwyg/api/api.ts b/resources/js/wysiwyg/api/api.ts new file mode 100644 index 000000000..434109c7a --- /dev/null +++ b/resources/js/wysiwyg/api/api.ts @@ -0,0 +1,11 @@ +import {EditorApiUiModule} from "./ui"; +import {EditorUiContext} from "../ui/framework/core"; + +export class EditorApi { + + public ui: EditorApiUiModule; + + constructor(context: EditorUiContext) { + this.ui = new EditorApiUiModule(context); + } +} \ No newline at end of file diff --git a/resources/js/wysiwyg/api/ui.ts b/resources/js/wysiwyg/api/ui.ts new file mode 100644 index 000000000..faad5d316 --- /dev/null +++ b/resources/js/wysiwyg/api/ui.ts @@ -0,0 +1,79 @@ +import {EditorButton} from "../ui/framework/buttons"; +import {EditorUiContext} from "../ui/framework/core"; +import {EditorOverflowContainer} from "../ui/framework/blocks/overflow-container"; + +type EditorApiButtonOptions = { + label?: string; + icon?: string; + onClick: () => void; +}; + +class EditorApiButton { + #button: EditorButton; + #isActive: boolean = false; + + constructor(options: EditorApiButtonOptions, context: EditorUiContext) { + this.#button = new EditorButton({ + label: options.label || '', + icon: options.icon || '', + action: () => { + options.onClick(); + }, + isActive: () => this.#isActive, + }); + this.#button.setContext(context); + } + + setActive(active: boolean = true): void { + this.#isActive = active; + this.#button.setActiveState(active); + } + + _getOriginalModel() { + return this.#button; + } +} + +class EditorApiToolbarSection { + #section: EditorOverflowContainer; + label: string; + + constructor(section: EditorOverflowContainer) { + this.#section = section; + this.label = section.getLabel(); + } + + getLabel(): string { + return this.#section.getLabel(); + } + + addButton(button: EditorApiButton, targetIndex: number = -1): void { + this.#section.addChild(button._getOriginalModel(), targetIndex); + this.#section.rebuildDOM(); + } +} + + +export class EditorApiUiModule { + #context: EditorUiContext; + + constructor(context: EditorUiContext) { + this.#context = context; + } + + createButton(options: EditorApiButtonOptions): EditorApiButton { + return new EditorApiButton(options, this.#context); + } + + getToolbarSections(): EditorApiToolbarSection[] { + const toolbar = this.#context.manager.getToolbar(); + if (!toolbar) { + return []; + } + + const sections = toolbar.getChildren(); + return sections.filter(section => { + return section instanceof EditorOverflowContainer; + }).map(section => new EditorApiToolbarSection(section)); + } +} \ No newline at end of file diff --git a/resources/js/wysiwyg/index.ts b/resources/js/wysiwyg/index.ts index 2c8c3b952..c3ff37e7e 100644 --- a/resources/js/wysiwyg/index.ts +++ b/resources/js/wysiwyg/index.ts @@ -21,6 +21,7 @@ import {CodeBlockDecorator} from "./ui/decorators/code-block"; import {DiagramDecorator} from "./ui/decorators/diagram"; import {registerMouseHandling} from "./services/mouse-handling"; import {registerSelectionHandling} from "./services/selection-handling"; +import {EditorApi} from "./api/api"; const theme = { text: { @@ -94,6 +95,12 @@ export function createPageEditorInstance(container: HTMLElement, htmlContent: st registerCommonNodeMutationListeners(context); + // TODO - Emit this as a public event instead + // TODO - Add support to basic editor below + const api = new EditorApi(context); + // @ts-ignore + window.editorApi = api; + return new SimpleWysiwygEditorInterface(context); } diff --git a/resources/js/wysiwyg/ui/defaults/toolbars.ts b/resources/js/wysiwyg/ui/defaults/toolbars.ts index 33468e0a2..0c48f5954 100644 --- a/resources/js/wysiwyg/ui/defaults/toolbars.ts +++ b/resources/js/wysiwyg/ui/defaults/toolbars.ts @@ -88,7 +88,7 @@ export function getMainEditorFullToolbar(context: EditorUiContext): EditorContai return new EditorSimpleClassContainer('editor-toolbar-main', [ // History state - new EditorOverflowContainer(2, [ + new EditorOverflowContainer('history', 2, [ new EditorButton(undo), new EditorButton(redo), ]), @@ -110,7 +110,7 @@ export function getMainEditorFullToolbar(context: EditorUiContext): EditorContai ]), // Inline formats - new EditorOverflowContainer(6, [ + new EditorOverflowContainer('inline_formats', 6, [ new EditorButton(bold), new EditorButton(italic), new EditorButton(underline), @@ -128,7 +128,7 @@ export function getMainEditorFullToolbar(context: EditorUiContext): EditorContai ]), // Alignment - new EditorOverflowContainer(6, [ + new EditorOverflowContainer('alignment', 6, [ new EditorButton(alignLeft), new EditorButton(alignCenter), new EditorButton(alignRight), @@ -138,7 +138,7 @@ export function getMainEditorFullToolbar(context: EditorUiContext): EditorContai ].filter(x => x !== null)), // Lists - new EditorOverflowContainer(3, [ + new EditorOverflowContainer('lists', 3, [ new EditorButton(bulletList), new EditorButton(numberList), new EditorButton(taskList), @@ -147,7 +147,7 @@ export function getMainEditorFullToolbar(context: EditorUiContext): EditorContai ]), // Insert types - new EditorOverflowContainer(4, [ + new EditorOverflowContainer('inserts', 4, [ new EditorButton(link), new EditorDropdownButton({button: table, direction: 'vertical', showAside: false}, [ @@ -200,7 +200,7 @@ export function getMainEditorFullToolbar(context: EditorUiContext): EditorContai ]), // Meta elements - new EditorOverflowContainer(3, [ + new EditorOverflowContainer('meta', 3, [ new EditorButton(source), new EditorButton(about), new EditorButton(fullscreen), @@ -261,16 +261,16 @@ export const contextToolbars: Record = { selector: 'td,th', content() { return [ - new EditorOverflowContainer(2, [ + new EditorOverflowContainer('table', 2, [ new EditorButton(tableProperties), new EditorButton(deleteTable), ]), - new EditorOverflowContainer(3, [ + new EditorOverflowContainer('table_row',3, [ new EditorButton(insertRowAbove), new EditorButton(insertRowBelow), new EditorButton(deleteRow), ]), - new EditorOverflowContainer(3, [ + new EditorOverflowContainer('table_column', 3, [ new EditorButton(insertColumnBefore), new EditorButton(insertColumnAfter), new EditorButton(deleteColumn), diff --git a/resources/js/wysiwyg/ui/framework/blocks/overflow-container.ts b/resources/js/wysiwyg/ui/framework/blocks/overflow-container.ts index 1c9664505..3b582eee6 100644 --- a/resources/js/wysiwyg/ui/framework/blocks/overflow-container.ts +++ b/resources/js/wysiwyg/ui/framework/blocks/overflow-container.ts @@ -9,9 +9,11 @@ export class EditorOverflowContainer extends EditorContainerUiElement { protected size: number; protected overflowButton: EditorDropdownButton; protected content: EditorUiElement[]; + protected label: string; - constructor(size: number, children: EditorUiElement[]) { + constructor(label: string, size: number, children: EditorUiElement[]) { super(children); + this.label = label; this.size = size; this.content = children; this.overflowButton = new EditorDropdownButton({ @@ -24,6 +26,11 @@ export class EditorOverflowContainer extends EditorContainerUiElement { this.addChildren(this.overflowButton); } + addChild(child: EditorUiElement, targetIndex: number = -1): void { + this.content.splice(targetIndex, 0, child); + this.addChildren(child); + } + protected buildDOM(): HTMLElement { const slicePosition = this.content.length > this.size ? this.size - 1 : this.size; const visibleChildren = this.content.slice(0, slicePosition); @@ -41,5 +48,8 @@ export class EditorOverflowContainer extends EditorContainerUiElement { }, visibleElements); } + getLabel(): string { + return this.label; + } } \ No newline at end of file diff --git a/resources/js/wysiwyg/ui/framework/manager.ts b/resources/js/wysiwyg/ui/framework/manager.ts index 3f46455da..1adc0b619 100644 --- a/resources/js/wysiwyg/ui/framework/manager.ts +++ b/resources/js/wysiwyg/ui/framework/manager.ts @@ -109,6 +109,10 @@ export class EditorUIManager { this.getContext().containerDOM.prepend(toolbar.getDOMElement()); } + getToolbar(): EditorContainerUiElement|null { + return this.toolbar; + } + registerContextToolbar(key: string, definition: EditorContextToolbarDefinition) { this.contextToolbarDefinitionsByKey[key] = definition; } From 75231d2d4a366f9ab0e9b321ccd6b13683834b0c Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 2 Dec 2025 18:46:36 +0000 Subject: [PATCH 18/51] Sponsors: Added Admin Intelligence --- readme.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index f4b67992c..a48ba38b6 100644 --- a/readme.md +++ b/readme.md @@ -92,9 +92,12 @@ Big thanks to these companies for supporting the project. - + SiteSpeakAI + + Admin Intelligence + From 21730aeb398727574c8e014f031a97dacfa46aea Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 2 Dec 2025 18:47:55 +0000 Subject: [PATCH 19/51] Sponsors: Tweaked logo sizing --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index a48ba38b6..3ee5f242a 100644 --- a/readme.md +++ b/readme.md @@ -88,7 +88,7 @@ Big thanks to these companies for supporting the project. Route4Me - Route Optimizer and Route Planner Software - phamos + phamos @@ -96,7 +96,7 @@ Big thanks to these companies for supporting the project. SiteSpeakAI - Admin Intelligence + Admin Intelligence From ebceba0afe50ad4c1d10d1542c24e189857371a0 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 4 Dec 2025 21:13:17 +0000 Subject: [PATCH 20/51] Lexical API: Started working on docs format and jest testing --- dev/docs/wysiwyg-js-api.md | 91 ++++++++++++++- package-lock.json | 1 - .../wysiwyg/api/__tests__/api-test-utils.ts | 13 +++ resources/js/wysiwyg/api/__tests__/ui.test.ts | 109 ++++++++++++++++++ resources/js/wysiwyg/api/ui.ts | 16 +-- .../lexical/core/__tests__/utils/index.ts | 2 +- 6 files changed, 221 insertions(+), 11 deletions(-) create mode 100644 resources/js/wysiwyg/api/__tests__/api-test-utils.ts create mode 100644 resources/js/wysiwyg/api/__tests__/ui.test.ts diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md index 7fd91a5e6..dec09b1a8 100644 --- a/dev/docs/wysiwyg-js-api.md +++ b/dev/docs/wysiwyg-js-api.md @@ -5,4 +5,93 @@ TODO - Create JS events and add to the js public events doc. TODO - Document the JS API. -TODO - Add testing coverage \ No newline at end of file +TODO - Add testing coverage + +**Warning: This API is currently in development and may change without notice.** + +This document covers the JavaScript API for the (newer Lexical-based) WYSIWYG editor. +This API is custom-built, and designed to abstract the internals of the editor away +to provide a stable interface for performing common customizations. + +Only the methods and properties documented here are guaranteed to be stable **once this API +is out of initial development**. +Other elements may be accessible but are not designed to be used directly, and therefore may change +without notice. +Stable parts of the API may still change where needed, but such changes would be noted as part of BookStack update advisories. + +## Overview + +The API is provided as an object, which itself provides a number of modules +via its properties: + +- `ui` - Provides all actions related to the UI of the editor, like buttons and toolbars. + +Each of these modules, and the relevant types used within, can be found detailed below. + +--- + +## UI Module + +This module provides all actions related to the UI of the editor, like buttons and toolbars. + +### Methods + +#### createButton(options) + +Creates a new button which can be used by other methods. +This takes an option object with the following properties: + +- `label` - string, optional - Used for the button text if no icon provided, or the button tooltip if an icon is provided. +- `icon` - string, optional - The icon to use for the button. Expected to be an SVG string. +- `action` - callback, required - The action to perform when the button is clicked. + +The function returns an [EditorApiButton](#editorapibutton) object. + +**Example** + +```javascript +const button = api.ui.createButton({ + label: 'Warn', + icon: '...', + action: () => { + window.alert('You clicked the button!'); + } +}); +``` + +### getMainToolbarSections() + +Get the sections of the main editor toolbar. These are those which contain groups of buttons +with overflow control. + +The function returns an array of [EditorToolbarSection](#editortoolbarsection) objects. + +**Example** + +```javascript +const sections = api.ui.getMainToolbarSections(); +if (sections.length > 0) { + sections[0].addButton(button); +} +``` + +### Types + +These are types which may be provided from UI module methods. +The methods on these types are documented using standard TypeScript notation. + +#### EditorApiButton + +Represents a button created via the `createButton` method. +This has the following methods: + +- `setActive(isActive: boolean): void` - Sets whether the button should be in an active state or not (typically active buttons appear as pressed). + +#### EditorToolbarSection + +Represents a section of the main editor toolbar, which contains a set of buttons. +This has the following methods: + +- `getLabel(): string` - Gets the label of the section. +- `addButton(button: EditorApiButton, targetIndex: number = -1): void` - Adds a button to the section. + - By default, this will append the button, although a target index can be provided to insert the button at a specific position. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 44ebf7eab..b85d1f5e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,7 +4,6 @@ "requires": true, "packages": { "": { - "name": "bookstack", "dependencies": { "@codemirror/commands": "^6.10.0", "@codemirror/lang-css": "^6.3.1", diff --git a/resources/js/wysiwyg/api/__tests__/api-test-utils.ts b/resources/js/wysiwyg/api/__tests__/api-test-utils.ts new file mode 100644 index 000000000..beff8504f --- /dev/null +++ b/resources/js/wysiwyg/api/__tests__/api-test-utils.ts @@ -0,0 +1,13 @@ +import {createTestContext} from "lexical/__tests__/utils"; +import {EditorApi} from "../api"; +import {EditorUiContext} from "../../ui/framework/core"; + + +/** + * Create an instance of the EditorApi and EditorUiContext. + */ +export function createEditorApiInstance(): { api: EditorApi; context: EditorUiContext } { + const context = createTestContext(); + const api = new EditorApi(context); + return {api, context}; +} \ No newline at end of file diff --git a/resources/js/wysiwyg/api/__tests__/ui.test.ts b/resources/js/wysiwyg/api/__tests__/ui.test.ts new file mode 100644 index 000000000..6cd80895b --- /dev/null +++ b/resources/js/wysiwyg/api/__tests__/ui.test.ts @@ -0,0 +1,109 @@ +import {createEditorApiInstance} from "./api-test-utils"; +import {EditorApiButton, EditorApiToolbarSection} from "../ui"; +import {getMainEditorFullToolbar} from "../../ui/defaults/toolbars"; +import {EditorContainerUiElement} from "../../ui/framework/core"; +import {EditorOverflowContainer} from "../../ui/framework/blocks/overflow-container"; + + +describe('Editor API: UI Module', () => { + + describe('createButton()', () => { + it('should return a button', () => { + const {api} = createEditorApiInstance(); + const button = api.ui.createButton({label: 'Test', icon: 'test', action: () => ''}); + expect(button).toBeInstanceOf(EditorApiButton); + }); + + it('should only need action to be required', () => { + const {api} = createEditorApiInstance(); + const button = api.ui.createButton({action: () => ''}); + expect(button).toBeInstanceOf(EditorApiButton); + }); + + it('should pass the label and icon to the button', () => { + const {api} = createEditorApiInstance(); + const button = api.ui.createButton({label: 'TestLabel', icon: 'cat', action: () => ''}); + const html = button._getOriginalModel().getDOMElement().outerHTML; + expect(html).toContain('TestLabel'); + expect(html).toContain('cat'); + }) + }); + + describe('EditorApiButton', () => { + + describe('setActive()', () => { + it('should update the active state of the button', () => { + const {api} = createEditorApiInstance(); + const button = api.ui.createButton({label: 'Test', icon: 'test', action: () => ''}); + + button.setActive(true); + expect(button._getOriginalModel().isActive()).toBe(true); + + button.setActive(false); + expect(button._getOriginalModel().isActive()).toBe(false); + }) + }); + + it('should call the provided action on click', () => { + const {api} = createEditorApiInstance(); + let count = 0; + const button = api.ui.createButton({label: 'Test', icon: 'test', action: () => { + count++; + }}); + + const dom = button._getOriginalModel().getDOMElement(); + dom.click(); + dom.click(); + expect(count).toBe(2); + }); + + }); + + describe('getMainToolbarSections()', () => { + it('should return an array of toolbar sections', () => { + const {api, context} = createEditorApiInstance(); + context.manager.setToolbar(getMainEditorFullToolbar(context)); + + const sections = api.ui.getMainToolbarSections(); + expect(Array.isArray(sections)).toBe(true); + + expect(sections[0]).toBeInstanceOf(EditorApiToolbarSection); + }); + }); + + describe('EditorApiToolbarSection', () => { + + describe('getLabel()', () => { + it('should return the label of the section', () => { + const {api, context} = createEditorApiInstance(); + context.manager.setToolbar(testToolbar()); + const section = api.ui.getMainToolbarSections()[0]; + expect(section.getLabel()).toBe('section-a'); + }) + }); + + describe('addButton()', () => { + it('should add a button to the section', () => { + const {api, context} = createEditorApiInstance(); + const toolbar = testToolbar(); + context.manager.setToolbar(toolbar); + const section = api.ui.getMainToolbarSections()[0]; + + const button = api.ui.createButton({label: 'TestButtonText!', action: () => ''}); + section.addButton(button); + + const toolbarRendered = toolbar.getDOMElement().innerHTML; + expect(toolbarRendered).toContain('TestButtonText!'); + }); + }); + + }); + + function testToolbar(): EditorContainerUiElement { + return new EditorContainerUiElement([ + new EditorOverflowContainer('section-a', 1, []), + new EditorOverflowContainer('section-b', 1, []), + ]); + } + +}); \ No newline at end of file diff --git a/resources/js/wysiwyg/api/ui.ts b/resources/js/wysiwyg/api/ui.ts index faad5d316..cf559269f 100644 --- a/resources/js/wysiwyg/api/ui.ts +++ b/resources/js/wysiwyg/api/ui.ts @@ -5,11 +5,11 @@ import {EditorOverflowContainer} from "../ui/framework/blocks/overflow-container type EditorApiButtonOptions = { label?: string; icon?: string; - onClick: () => void; + action: () => void; }; -class EditorApiButton { - #button: EditorButton; +export class EditorApiButton { + readonly #button: EditorButton; #isActive: boolean = false; constructor(options: EditorApiButtonOptions, context: EditorUiContext) { @@ -17,7 +17,7 @@ class EditorApiButton { label: options.label || '', icon: options.icon || '', action: () => { - options.onClick(); + options.action(); }, isActive: () => this.#isActive, }); @@ -34,8 +34,8 @@ class EditorApiButton { } } -class EditorApiToolbarSection { - #section: EditorOverflowContainer; +export class EditorApiToolbarSection { + readonly #section: EditorOverflowContainer; label: string; constructor(section: EditorOverflowContainer) { @@ -55,7 +55,7 @@ class EditorApiToolbarSection { export class EditorApiUiModule { - #context: EditorUiContext; + readonly #context: EditorUiContext; constructor(context: EditorUiContext) { this.#context = context; @@ -65,7 +65,7 @@ export class EditorApiUiModule { return new EditorApiButton(options, this.#context); } - getToolbarSections(): EditorApiToolbarSection[] { + getMainToolbarSections(): EditorApiToolbarSection[] { const toolbar = this.#context.manager.getToolbar(); if (!toolbar) { return []; diff --git a/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts b/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts index 00c5ec796..4f08f35ed 100644 --- a/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts +++ b/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts @@ -504,7 +504,7 @@ export function createTestContext(): EditorUiContext { options: {}, scrollDOM: scrollWrap, translate(text: string): string { - return ""; + return text; } }; From dfdcfcfdb86007a76ed33ed8749b58ea00d54158 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 5 Dec 2025 12:15:18 +0000 Subject: [PATCH 21/51] Lexical API: Added content module, testing and documented --- dev/docs/wysiwyg-js-api.md | 42 +++++++-- .../wysiwyg/api/__tests__/api-test-utils.ts | 5 +- .../js/wysiwyg/api/__tests__/content.test.ts | 93 +++++++++++++++++++ resources/js/wysiwyg/api/api.ts | 3 + resources/js/wysiwyg/api/content.ts | 26 ++++++ .../lexical/core/__tests__/utils/index.ts | 9 +- .../js/wysiwyg/services/common-events.ts | 2 +- resources/js/wysiwyg/utils/actions.ts | 38 ++++++-- resources/js/wysiwyg/utils/nodes.ts | 9 +- 9 files changed, 202 insertions(+), 25 deletions(-) create mode 100644 resources/js/wysiwyg/api/__tests__/content.test.ts create mode 100644 resources/js/wysiwyg/api/content.ts diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md index dec09b1a8..44e4a52c0 100644 --- a/dev/docs/wysiwyg-js-api.md +++ b/dev/docs/wysiwyg-js-api.md @@ -3,14 +3,10 @@ TODO - Link to this from JS code doc. TODO - Create JS events and add to the js public events doc. -TODO - Document the JS API. - -TODO - Add testing coverage - **Warning: This API is currently in development and may change without notice.** This document covers the JavaScript API for the (newer Lexical-based) WYSIWYG editor. -This API is custom-built, and designed to abstract the internals of the editor away +This API is built and designed to abstract the internals of the editor away to provide a stable interface for performing common customizations. Only the methods and properties documented here are guaranteed to be stable **once this API @@ -25,8 +21,9 @@ The API is provided as an object, which itself provides a number of modules via its properties: - `ui` - Provides all actions related to the UI of the editor, like buttons and toolbars. +- `content` - Provides all actions related to the live user content being edited upon. -Each of these modules, and the relevant types used within, can be found detailed below. +Each of these modules, and the relevant types used within, are documented in detail below. --- @@ -36,7 +33,7 @@ This module provides all actions related to the UI of the editor, like buttons a ### Methods -#### createButton(options) +#### createButton(options: object) Creates a new button which can be used by other methods. This takes an option object with the following properties: @@ -92,6 +89,33 @@ This has the following methods: Represents a section of the main editor toolbar, which contains a set of buttons. This has the following methods: -- `getLabel(): string` - Gets the label of the section. +- `getLabel(): string` - Provides the string label of the section. - `addButton(button: EditorApiButton, targetIndex: number = -1): void` - Adds a button to the section. - - By default, this will append the button, although a target index can be provided to insert the button at a specific position. \ No newline at end of file + - By default, this will append the button, although a target index can be provided to insert the button at a specific position. + +--- + +## Content Module + +This module provides all actions related to the live user content being edited within the editor. + +### Methods + +#### insertHtml(html, position) + +Inserts the given HTML string at the given position string. +The position, if not provided, will default to `'selection'`, replacing any existing selected content (or inserting at the selection if there's no active selection range). +Valid position string values are: `selection`, `start` and `end`. `start` & `end` are relative to the whole editor document. +The HTML is not assured to be added to the editor exactly as provided, since it will be parsed and serialised to fit the editor's internal known model format. Different parts of the HTML content may be handled differently depending on if it's block or inline content. + +The function does not return anything. + +**Example** + +```javascript +// Basic insert at selection +api.content.insertHtml('

Hello world!

'); + +// Insert at the start of the editor content +api.content.insertHtml('

I\'m at the start!

', 'start'); +``` \ No newline at end of file diff --git a/resources/js/wysiwyg/api/__tests__/api-test-utils.ts b/resources/js/wysiwyg/api/__tests__/api-test-utils.ts index beff8504f..dacec3392 100644 --- a/resources/js/wysiwyg/api/__tests__/api-test-utils.ts +++ b/resources/js/wysiwyg/api/__tests__/api-test-utils.ts @@ -1,13 +1,14 @@ import {createTestContext} from "lexical/__tests__/utils"; import {EditorApi} from "../api"; import {EditorUiContext} from "../../ui/framework/core"; +import {LexicalEditor} from "lexical"; /** * Create an instance of the EditorApi and EditorUiContext. */ -export function createEditorApiInstance(): { api: EditorApi; context: EditorUiContext } { +export function createEditorApiInstance(): { api: EditorApi; context: EditorUiContext, editor: LexicalEditor} { const context = createTestContext(); const api = new EditorApi(context); - return {api, context}; + return {api, context, editor: context.editor}; } \ No newline at end of file diff --git a/resources/js/wysiwyg/api/__tests__/content.test.ts b/resources/js/wysiwyg/api/__tests__/content.test.ts new file mode 100644 index 000000000..0915b6685 --- /dev/null +++ b/resources/js/wysiwyg/api/__tests__/content.test.ts @@ -0,0 +1,93 @@ +import {createEditorApiInstance} from "./api-test-utils"; +import {$createParagraphNode, $createTextNode, $getRoot, IS_BOLD, LexicalEditor} from "lexical"; +import {expectNodeShapeToMatch} from "lexical/__tests__/utils"; + + +describe('Editor API: Content Module', () => { + + describe('insertHtml()', () => { + it('should insert html at selection by default', () => { + const {api, editor} = createEditorApiInstance(); + insertAndSelectSampleBlock(editor); + + api.content.insertHtml('pp'); + editor.commitUpdates(); + + expectNodeShapeToMatch(editor, [ + {type: 'paragraph', children: [ + {text: 'He'}, + {text: 'pp', format: IS_BOLD}, + {text: 'o World'} + ]} + ]); + }); + + it('should handle a mix of inline and block elements', () => { + const {api, editor} = createEditorApiInstance(); + insertAndSelectSampleBlock(editor); + + api.content.insertHtml('

cat

pp

dog

'); + editor.commitUpdates(); + + expectNodeShapeToMatch(editor, [ + {type: 'paragraph', children: [{text: 'cat'}]}, + {type: 'paragraph', children: [ + {text: 'He'}, + {text: 'pp', format: IS_BOLD}, + {text: 'o World'} + ]}, + {type: 'paragraph', children: [{text: 'dog'}]}, + ]); + }); + + it('should throw and error if an invalid position is provided', () => { + const {api, editor} = createEditorApiInstance(); + insertAndSelectSampleBlock(editor); + + + expect(() => { + api.content.insertHtml('happy

cat

', 'near-the-end'); + }).toThrow('Invalid position: near-the-end. Valid positions are: start, end, selection'); + }); + + it('should append html if end provided as a position', () => { + const {api, editor} = createEditorApiInstance(); + insertAndSelectSampleBlock(editor); + + api.content.insertHtml('happy

cat

', 'end'); + editor.commitUpdates(); + + expectNodeShapeToMatch(editor, [ + {type: 'paragraph', children: [{text: 'Hello World'}]}, + {type: 'paragraph', children: [{text: 'happy'}]}, + {type: 'paragraph', children: [{text: 'cat'}]}, + ]); + }); + + it('should prepend html if start provided as a position', () => { + const {api, editor} = createEditorApiInstance(); + insertAndSelectSampleBlock(editor); + + api.content.insertHtml('happy

cat

', 'start'); + editor.commitUpdates(); + + expectNodeShapeToMatch(editor, [ + {type: 'paragraph', children: [{text: 'happy'}]}, + {type: 'paragraph', children: [{text: 'cat'}]}, + {type: 'paragraph', children: [{text: 'Hello World'}]}, + ]); + }); + }); + + function insertAndSelectSampleBlock(editor: LexicalEditor) { + editor.updateAndCommit(() => { + const p = $createParagraphNode(); + const text = $createTextNode('Hello World'); + p.append(text); + $getRoot().append(p); + + text.select(2, 4); + }); + } + +}); \ No newline at end of file diff --git a/resources/js/wysiwyg/api/api.ts b/resources/js/wysiwyg/api/api.ts index 434109c7a..f732170b3 100644 --- a/resources/js/wysiwyg/api/api.ts +++ b/resources/js/wysiwyg/api/api.ts @@ -1,11 +1,14 @@ import {EditorApiUiModule} from "./ui"; import {EditorUiContext} from "../ui/framework/core"; +import {EditorApiContentModule} from "./content"; export class EditorApi { public ui: EditorApiUiModule; + public content: EditorApiContentModule; constructor(context: EditorUiContext) { this.ui = new EditorApiUiModule(context); + this.content = new EditorApiContentModule(context); } } \ No newline at end of file diff --git a/resources/js/wysiwyg/api/content.ts b/resources/js/wysiwyg/api/content.ts new file mode 100644 index 000000000..167ec7905 --- /dev/null +++ b/resources/js/wysiwyg/api/content.ts @@ -0,0 +1,26 @@ +import {EditorUiContext} from "../ui/framework/core"; +import {appendHtmlToEditor, insertHtmlIntoEditor, prependHtmlToEditor} from "../utils/actions"; + + +export class EditorApiContentModule { + readonly #context: EditorUiContext; + + constructor(context: EditorUiContext) { + this.#context = context; + } + + insertHtml(html: string, position: string = 'selection'): void { + const validPositions = ['start', 'end', 'selection']; + if (!validPositions.includes(position)) { + throw new Error(`Invalid position: ${position}. Valid positions are: ${validPositions.join(', ')}`); + } + + if (position === 'start') { + prependHtmlToEditor(this.#context.editor, html); + } else if (position === 'end') { + appendHtmlToEditor(this.#context.editor, html); + } else { + insertHtmlIntoEditor(this.#context.editor, html); + } + } +} \ No newline at end of file diff --git a/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts b/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts index 4f08f35ed..ab54bdb31 100644 --- a/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts +++ b/resources/js/wysiwyg/lexical/core/__tests__/utils/index.ts @@ -769,6 +769,7 @@ export function expectHtmlToBeEqual(expected: string, actual: string): void { type nodeTextShape = { text: string; + format?: number; }; type nodeShape = { @@ -786,7 +787,13 @@ export function getNodeShape(node: SerializedLexicalNode): nodeShape|nodeTextSha if (shape.type === 'text') { // @ts-ignore - return {text: node.text} + const shape: nodeTextShape = {text: node.text} + // @ts-ignore + if (node && node.format) { + // @ts-ignore + shape.format = node.format; + } + return shape; } if (children.length > 0) { diff --git a/resources/js/wysiwyg/services/common-events.ts b/resources/js/wysiwyg/services/common-events.ts index 2ffa722e4..f7fc81cb3 100644 --- a/resources/js/wysiwyg/services/common-events.ts +++ b/resources/js/wysiwyg/services/common-events.ts @@ -1,4 +1,4 @@ -import {$getSelection, LexicalEditor} from "lexical"; +import {LexicalEditor} from "lexical"; import { appendHtmlToEditor, focusEditor, diff --git a/resources/js/wysiwyg/utils/actions.ts b/resources/js/wysiwyg/utils/actions.ts index b7ce65eeb..e18ac515f 100644 --- a/resources/js/wysiwyg/utils/actions.ts +++ b/resources/js/wysiwyg/utils/actions.ts @@ -1,6 +1,6 @@ -import {$getRoot, $getSelection, LexicalEditor} from "lexical"; +import {$getRoot, $getSelection, $insertNodes, $isBlockElementNode, LexicalEditor} from "lexical"; import {$generateHtmlFromNodes} from "@lexical/html"; -import {$htmlToBlockNodes} from "./nodes"; +import {$getNearestNodeBlockParent, $htmlToBlockNodes, $htmlToNodes} from "./nodes"; export function setEditorContentFromHtml(editor: LexicalEditor, html: string) { editor.update(() => { @@ -42,14 +42,34 @@ export function prependHtmlToEditor(editor: LexicalEditor, html: string) { export function insertHtmlIntoEditor(editor: LexicalEditor, html: string) { editor.update(() => { const selection = $getSelection(); - const nodes = $htmlToBlockNodes(editor, html); + const nodes = $htmlToNodes(editor, html); - const reference = selection?.getNodes()[0]; - const referencesParents = reference?.getParents() || []; - const topLevel = referencesParents[referencesParents.length - 1]; - if (topLevel && reference) { - for (let i = nodes.length - 1; i >= 0; i--) { - reference.insertAfter(nodes[i]); + let reference = selection?.getNodes()[0]; + let replacedReference = false; + let parentBlock = reference ? $getNearestNodeBlockParent(reference) : null; + + for (let i = nodes.length - 1; i >= 0; i--) { + const toInsert = nodes[i]; + if ($isBlockElementNode(toInsert) && parentBlock) { + // Insert at a block level, before or after the referenced block + // depending on if the reference has been replaced. + if (replacedReference) { + parentBlock.insertBefore(toInsert); + } else { + parentBlock.insertAfter(toInsert); + } + } else if ($isBlockElementNode(toInsert)) { + // Otherwise append blocks to the root + $getRoot().append(toInsert); + } else if (!replacedReference) { + // First inline node, replacing existing selection + $insertNodes([toInsert]); + reference = toInsert; + parentBlock = $getNearestNodeBlockParent(reference); + replacedReference = true; + } else { + // For other inline nodes, insert before the reference node + reference?.insertBefore(toInsert) } } }); diff --git a/resources/js/wysiwyg/utils/nodes.ts b/resources/js/wysiwyg/utils/nodes.ts index 116a3f4e5..ed70bf699 100644 --- a/resources/js/wysiwyg/utils/nodes.ts +++ b/resources/js/wysiwyg/utils/nodes.ts @@ -25,10 +25,13 @@ function wrapTextNodes(nodes: LexicalNode[]): LexicalNode[] { }); } -export function $htmlToBlockNodes(editor: LexicalEditor, html: string): LexicalNode[] { +export function $htmlToNodes(editor: LexicalEditor, html: string): LexicalNode[] { const dom = htmlToDom(html); - const nodes = $generateNodesFromDOM(editor, dom); - return wrapTextNodes(nodes); + return $generateNodesFromDOM(editor, dom); +} + +export function $htmlToBlockNodes(editor: LexicalEditor, html: string): LexicalNode[] { + return wrapTextNodes($htmlToNodes(editor, html)); } export function $getParentOfType(node: LexicalNode, matcher: LexicalNodeMatcher): LexicalNode | null { From 889074627840c4ccd14a9b525e33d571d56e3191 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 5 Dec 2025 14:07:24 +0000 Subject: [PATCH 22/51] Lexical API: Added public event to access editor API Updated documentation to match. Ran manual testing of examples. --- dev/docs/javascript-code.md | 4 ++ dev/docs/javascript-public-events.md | 46 ++++++++++++++++++-- dev/docs/wysiwyg-js-api.md | 1 - resources/js/wysiwyg/index.ts | 14 +++--- resources/js/wysiwyg/ui/defaults/toolbars.ts | 12 ++--- 5 files changed, 62 insertions(+), 15 deletions(-) diff --git a/dev/docs/javascript-code.md b/dev/docs/javascript-code.md index e5f491839..4de6223d8 100644 --- a/dev/docs/javascript-code.md +++ b/dev/docs/javascript-code.md @@ -161,3 +161,7 @@ window.$components.firstOnElement(element, name); There are a range of available events that are emitted as part of a public & supported API for accessing or extending JavaScript libraries & components used in the system. Details on these events can be found in the [JavaScript Public Events file](javascript-public-events.md). + +## WYSIWYG Editor API + +Details on the API for our custom-built WYSIWYG editor can be found in the [WYSIWYG JavaScript API file](./wysiwyg-js-api.md). \ No newline at end of file diff --git a/dev/docs/javascript-public-events.md b/dev/docs/javascript-public-events.md index 4f68daaeb..85a4caad4 100644 --- a/dev/docs/javascript-public-events.md +++ b/dev/docs/javascript-public-events.md @@ -60,7 +60,7 @@ This event is called when the markdown editor loads, post configuration but befo #### Event Data -- `markdownIt` - A references to the [MarkdownIt](https://markdown-it.github.io/markdown-it/#MarkdownIt) instance used to render markdown to HTML (Just for the preview). +- `markdownIt` - A reference to the [MarkdownIt](https://markdown-it.github.io/markdown-it/#MarkdownIt) instance used to render markdown to HTML (Just for the preview). - `displayEl` - The IFrame Element that wraps the HTML preview display. - `cmEditorView` - The CodeMirror [EditorView](https://codemirror.net/docs/ref/#view.EditorView) instance used for the markdown input editor. @@ -79,7 +79,7 @@ window.addEventListener('editor-markdown::setup', event => { This event is called as the embedded diagrams.net drawing editor loads, to allow configuration of the diagrams.net interface. See [this diagrams.net page](https://www.diagrams.net/doc/faq/configure-diagram-editor) for details on the available options for the configure event. -If using a custom diagrams.net instance, via the `DRAWIO` option, you will need to ensure your DRAWIO option URL has the `configure=1` query parameter. +If using a custom diagrams.net instance, via the `DRAWIO` option, you will need to ensure your DRAWIO option URL has the `configure=1` query parameter. #### Event Data @@ -142,7 +142,7 @@ This event is called whenever a CodeMirror instance is loaded, as a method to co - `darkModeActive` - A boolean to indicate if the current view/page is being loaded with dark mode active. - `registerViewTheme(builder)` - A method that can be called to register a new view (CodeMirror UI) theme. - - `builder` - A function that will return an object that will be passed into the CodeMirror [EditorView.theme()](https://codemirror.net/docs/ref/#view.EditorView^theme) function as a StyleSpec. + - `builder` - A function that will return an object that will be passed into the CodeMirror [EditorView.theme()](https://codemirror.net/docs/ref/#view.EditorView^theme) function as a StyleSpec. - `registerHighlightStyle(builder)` - A method that can be called to register a new HighlightStyle (code highlighting) theme. - `builder` - A function, that receives a reference to [Tag.tags](https://lezer.codemirror.net/docs/ref/#highlight.tags) and returns an array of [TagStyle](https://codemirror.net/docs/ref/#language.TagStyle) objects. @@ -301,7 +301,7 @@ This event is called just after any CodeMirror instances are initialised so that ##### Example -The below shows how you'd prepend some default text to all content (page) code blocks. +The below example shows how you'd prepend some default text to all content (page) code blocks.
Show Example @@ -318,4 +318,42 @@ window.addEventListener('library-cm6::post-init', event => { } }); ``` +
+ +### `editor-wysiwyg::post-init` + +This is called after the (new custom-built Lexical-based) WYSIWYG editor has been initialised. + +#### Event Data + +- `usage` - A string label to identify the usage type of the WYSIWYG editor in BookStack. +- `api` - An instance to the WYSIWYG editor API, as documented in the [WYSIWYG JavaScript API file](./wysiwyg-js-api.md). + +##### Example + +The below shows how you'd use this API to create a button, with that button added to the toolbar of the page editor, which inserts bold hello text on press: + +
+Show Example + +```javascript +window.addEventListener('editor-wysiwyg::post-init', event => { + const {usage, api} = event.detail; + // Check that it's the page editor being loaded. + if (usage !== 'page-editor') { + return; + } + + // Create a custom button which inserts bold hello text on press. + const button = api.ui.createButton({ + label: 'Greet', + action: () => { + api.content.insertHtml(`Hello!`); + } + }); + + // Add the button to the start of the first section within the main toolbar. + api.ui.getMainToolbarSections()[0]?.addButton(button, 0); +}); +```
\ No newline at end of file diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md index 44e4a52c0..7286f943f 100644 --- a/dev/docs/wysiwyg-js-api.md +++ b/dev/docs/wysiwyg-js-api.md @@ -1,6 +1,5 @@ # WYSIWYG JavaScript API -TODO - Link to this from JS code doc. TODO - Create JS events and add to the js public events doc. **Warning: This API is currently in development and may change without notice.** diff --git a/resources/js/wysiwyg/index.ts b/resources/js/wysiwyg/index.ts index c3ff37e7e..5d1762ff8 100644 --- a/resources/js/wysiwyg/index.ts +++ b/resources/js/wysiwyg/index.ts @@ -95,11 +95,10 @@ export function createPageEditorInstance(container: HTMLElement, htmlContent: st registerCommonNodeMutationListeners(context); - // TODO - Emit this as a public event instead - // TODO - Add support to basic editor below - const api = new EditorApi(context); - // @ts-ignore - window.editorApi = api; + window.$events.emitPublic(container, 'editor-wysiwyg::post-init', { + usage: 'page-editor', + api: new EditorApi(context), + }); return new SimpleWysiwygEditorInterface(context); } @@ -129,6 +128,11 @@ export function createBasicEditorInstance(container: HTMLElement, htmlContent: s setEditorContentFromHtml(editor, htmlContent); + window.$events.emitPublic(container, 'editor-wysiwyg::post-init', { + usage: 'description-editor', + api: new EditorApi(context), + }); + return new SimpleWysiwygEditorInterface(context); } diff --git a/resources/js/wysiwyg/ui/defaults/toolbars.ts b/resources/js/wysiwyg/ui/defaults/toolbars.ts index 0c48f5954..9302e7bed 100644 --- a/resources/js/wysiwyg/ui/defaults/toolbars.ts +++ b/resources/js/wysiwyg/ui/defaults/toolbars.ts @@ -223,11 +223,13 @@ export function getMainEditorFullToolbar(context: EditorUiContext): EditorContai export function getBasicEditorToolbar(context: EditorUiContext): EditorContainerUiElement { return new EditorSimpleClassContainer('editor-toolbar-main', [ - new EditorButton(bold), - new EditorButton(italic), - new EditorButton(link), - new EditorButton(bulletList), - new EditorButton(numberList), + new EditorOverflowContainer('formats', 7, [ + new EditorButton(bold), + new EditorButton(italic), + new EditorButton(link), + new EditorButton(bulletList), + new EditorButton(numberList), + ]) ]); } From ab4b1c8efa64b89a549ade67c713e43f7d34fb57 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 5 Dec 2025 14:37:46 +0000 Subject: [PATCH 23/51] Lexical API: Reviewed docs, Made toolbar its own UI class --- dev/docs/javascript-public-events.md | 79 ++++++++++--------- dev/docs/wysiwyg-js-api.md | 34 ++++---- resources/js/wysiwyg/api/__tests__/ui.test.ts | 30 +++++-- resources/js/wysiwyg/api/ui.ts | 28 ++++--- 4 files changed, 102 insertions(+), 69 deletions(-) diff --git a/dev/docs/javascript-public-events.md b/dev/docs/javascript-public-events.md index 85a4caad4..e9ea014ef 100644 --- a/dev/docs/javascript-public-events.md +++ b/dev/docs/javascript-public-events.md @@ -134,6 +134,47 @@ window.addEventListener('editor-tinymce::setup', event => { }); ``` +### `editor-wysiwyg::post-init` + +This is called after the (new custom-built Lexical-based) WYSIWYG editor has been initialised. + +#### Event Data + +- `usage` - A string label to identify the usage type of the WYSIWYG editor in BookStack. +- `api` - An instance to the WYSIWYG editor API, as documented in the [WYSIWYG JavaScript API file](./wysiwyg-js-api.md). + +##### Example + +The below example shows how you'd use this API to create a button, with that button added to the main toolbar of the page editor, which inserts bold "Hello!" text on press: + +
+Show Example + +```javascript +window.addEventListener('editor-wysiwyg::post-init', event => { + const {usage, api} = event.detail; + // Check that it's the page editor which is being loaded + if (usage !== 'page-editor') { + return; + } + + // Create a custom button which inserts bold hello text on press + const button = api.ui.createButton({ + label: 'Greet', + action: () => { + api.content.insertHtml(`Hello!`); + } + }); + + // Add the button to the start of the first section within the main toolbar + const toolbar = api.ui.getMainToolbar(); + if (toolbar) { + toolbar.getSections()[0]?.addButton(button, 0); + } +}); +``` +
+ ### `library-cm6::configure-theme` This event is called whenever a CodeMirror instance is loaded, as a method to configure the theme used by CodeMirror. This applies to all CodeMirror instances including in-page code blocks, editors using in BookStack settings, and the Page markdown editor. @@ -319,41 +360,3 @@ window.addEventListener('library-cm6::post-init', event => { }); ``` - -### `editor-wysiwyg::post-init` - -This is called after the (new custom-built Lexical-based) WYSIWYG editor has been initialised. - -#### Event Data - -- `usage` - A string label to identify the usage type of the WYSIWYG editor in BookStack. -- `api` - An instance to the WYSIWYG editor API, as documented in the [WYSIWYG JavaScript API file](./wysiwyg-js-api.md). - -##### Example - -The below shows how you'd use this API to create a button, with that button added to the toolbar of the page editor, which inserts bold hello text on press: - -
-Show Example - -```javascript -window.addEventListener('editor-wysiwyg::post-init', event => { - const {usage, api} = event.detail; - // Check that it's the page editor being loaded. - if (usage !== 'page-editor') { - return; - } - - // Create a custom button which inserts bold hello text on press. - const button = api.ui.createButton({ - label: 'Greet', - action: () => { - api.content.insertHtml(`Hello!`); - } - }); - - // Add the button to the start of the first section within the main toolbar. - api.ui.getMainToolbarSections()[0]?.addButton(button, 0); -}); -``` -
\ No newline at end of file diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md index 7286f943f..394f2f15f 100644 --- a/dev/docs/wysiwyg-js-api.md +++ b/dev/docs/wysiwyg-js-api.md @@ -1,9 +1,9 @@ # WYSIWYG JavaScript API -TODO - Create JS events and add to the js public events doc. - **Warning: This API is currently in development and may change without notice.** +Feedback is very much welcomed via this issue: https://github.com/BookStackApp/BookStack/issues/5937 + This document covers the JavaScript API for the (newer Lexical-based) WYSIWYG editor. This API is built and designed to abstract the internals of the editor away to provide a stable interface for performing common customizations. @@ -19,8 +19,8 @@ Stable parts of the API may still change where needed, but such changes would be The API is provided as an object, which itself provides a number of modules via its properties: -- `ui` - Provides all actions related to the UI of the editor, like buttons and toolbars. -- `content` - Provides all actions related to the live user content being edited upon. +- `ui` - Provides methods related to the UI of the editor, like buttons and toolbars. +- `content` - Provides methods related to the live user content being edited upon. Each of these modules, and the relevant types used within, are documented in detail below. @@ -28,7 +28,7 @@ Each of these modules, and the relevant types used within, are documented in det ## UI Module -This module provides all actions related to the UI of the editor, like buttons and toolbars. +This module provides methods related to the UI of the editor, like buttons and toolbars. ### Methods @@ -55,17 +55,16 @@ const button = api.ui.createButton({ }); ``` -### getMainToolbarSections() +### getMainToolbar() -Get the sections of the main editor toolbar. These are those which contain groups of buttons -with overflow control. - -The function returns an array of [EditorToolbarSection](#editortoolbarsection) objects. +Get the main editor toolbar. This is typically the toolbar at the top of the editor. +The function returns an [EditorApiToolbar](#editorapitoolbar) object, or null if no toolbar is found. **Example** ```javascript -const sections = api.ui.getMainToolbarSections(); +const toolbar = api.ui.getMainToolbar(); +const sections = toolbar?.getSections() || []; if (sections.length > 0) { sections[0].addButton(button); } @@ -83,20 +82,27 @@ This has the following methods: - `setActive(isActive: boolean): void` - Sets whether the button should be in an active state or not (typically active buttons appear as pressed). -#### EditorToolbarSection +#### EditorApiToolbar + +Represents a toolbar within the editor. This is a bar typically containing sets of buttons. +This has the following methods: + +- `getSections(): EditorApiToolbarSection[]` - Provides the main [EditorApiToolbarSections](#editorapitoolbarsection) contained within this toolbar. + +#### EditorApiToolbarSection Represents a section of the main editor toolbar, which contains a set of buttons. This has the following methods: - `getLabel(): string` - Provides the string label of the section. - `addButton(button: EditorApiButton, targetIndex: number = -1): void` - Adds a button to the section. - - By default, this will append the button, although a target index can be provided to insert the button at a specific position. + - By default, this will append the button, although a target index can be provided to insert at a specific position. --- ## Content Module -This module provides all actions related to the live user content being edited within the editor. +This module provides methods related to the live user content being edited within the editor. ### Methods diff --git a/resources/js/wysiwyg/api/__tests__/ui.test.ts b/resources/js/wysiwyg/api/__tests__/ui.test.ts index 6cd80895b..80045bb48 100644 --- a/resources/js/wysiwyg/api/__tests__/ui.test.ts +++ b/resources/js/wysiwyg/api/__tests__/ui.test.ts @@ -1,5 +1,5 @@ import {createEditorApiInstance} from "./api-test-utils"; -import {EditorApiButton, EditorApiToolbarSection} from "../ui"; +import {EditorApiButton, EditorApiToolbar, EditorApiToolbarSection} from "../ui"; import {getMainEditorFullToolbar} from "../../ui/defaults/toolbars"; import {EditorContainerUiElement} from "../../ui/framework/core"; import {EditorOverflowContainer} from "../../ui/framework/blocks/overflow-container"; @@ -59,25 +59,39 @@ describe('Editor API: UI Module', () => { }); - describe('getMainToolbarSections()', () => { - it('should return an array of toolbar sections', () => { + describe('getMainToolbar()', () => { + it('should return the main editor toolbar', () => { const {api, context} = createEditorApiInstance(); context.manager.setToolbar(getMainEditorFullToolbar(context)); - const sections = api.ui.getMainToolbarSections(); - expect(Array.isArray(sections)).toBe(true); + const toolbar = api.ui.getMainToolbar(); - expect(sections[0]).toBeInstanceOf(EditorApiToolbarSection); + expect(toolbar).toBeInstanceOf(EditorApiToolbar); }); }); + describe('EditorApiToolbar', () => { + describe('getSections()', () => { + it('should return the sections of the toolbar', () => { + const {api, context} = createEditorApiInstance(); + context.manager.setToolbar(testToolbar()); + const toolbar = api.ui.getMainToolbar(); + + const sections = toolbar?.getSections() || []; + + expect(sections.length).toBe(2); + expect(sections[0]).toBeInstanceOf(EditorApiToolbarSection); + }) + }) + }) + describe('EditorApiToolbarSection', () => { describe('getLabel()', () => { it('should return the label of the section', () => { const {api, context} = createEditorApiInstance(); context.manager.setToolbar(testToolbar()); - const section = api.ui.getMainToolbarSections()[0]; + const section = api.ui.getMainToolbar()?.getSections()[0] as EditorApiToolbarSection; expect(section.getLabel()).toBe('section-a'); }) }); @@ -87,7 +101,7 @@ describe('Editor API: UI Module', () => { const {api, context} = createEditorApiInstance(); const toolbar = testToolbar(); context.manager.setToolbar(toolbar); - const section = api.ui.getMainToolbarSections()[0]; + const section = api.ui.getMainToolbar()?.getSections()[0] as EditorApiToolbarSection; const button = api.ui.createButton({label: 'TestButtonText!', action: () => ''}); section.addButton(button); diff --git a/resources/js/wysiwyg/api/ui.ts b/resources/js/wysiwyg/api/ui.ts index cf559269f..c5b822a46 100644 --- a/resources/js/wysiwyg/api/ui.ts +++ b/resources/js/wysiwyg/api/ui.ts @@ -1,5 +1,5 @@ import {EditorButton} from "../ui/framework/buttons"; -import {EditorUiContext} from "../ui/framework/core"; +import {EditorContainerUiElement, EditorUiContext} from "../ui/framework/core"; import {EditorOverflowContainer} from "../ui/framework/blocks/overflow-container"; type EditorApiButtonOptions = { @@ -34,13 +34,26 @@ export class EditorApiButton { } } +export class EditorApiToolbar { + readonly #toolbar: EditorContainerUiElement; + + constructor(toolbar: EditorContainerUiElement) { + this.#toolbar = toolbar; + } + + getSections(): EditorApiToolbarSection[] { + const sections = this.#toolbar.getChildren(); + return sections.filter(section => { + return section instanceof EditorOverflowContainer; + }).map(section => new EditorApiToolbarSection(section)); + } +} + export class EditorApiToolbarSection { readonly #section: EditorOverflowContainer; - label: string; constructor(section: EditorOverflowContainer) { this.#section = section; - this.label = section.getLabel(); } getLabel(): string { @@ -65,15 +78,12 @@ export class EditorApiUiModule { return new EditorApiButton(options, this.#context); } - getMainToolbarSections(): EditorApiToolbarSection[] { + getMainToolbar(): EditorApiToolbar|null { const toolbar = this.#context.manager.getToolbar(); if (!toolbar) { - return []; + return null; } - const sections = toolbar.getChildren(); - return sections.filter(section => { - return section instanceof EditorOverflowContainer; - }).map(section => new EditorApiToolbarSection(section)); + return new EditorApiToolbar(toolbar); } } \ No newline at end of file From b5246a28f0268460588ae33e555337493426e2b0 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 6 Dec 2025 15:18:28 +0000 Subject: [PATCH 24/51] Lexical API: Updated docs to align method format --- dev/docs/wysiwyg-js-api.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md index 394f2f15f..e899aa0c8 100644 --- a/dev/docs/wysiwyg-js-api.md +++ b/dev/docs/wysiwyg-js-api.md @@ -14,6 +14,8 @@ Other elements may be accessible but are not designed to be used directly, and t without notice. Stable parts of the API may still change where needed, but such changes would be noted as part of BookStack update advisories. +The methods shown here are documented using standard TypeScript notation. + ## Overview The API is provided as an object, which itself provides a number of modules @@ -32,7 +34,7 @@ This module provides methods related to the UI of the editor, like buttons and t ### Methods -#### createButton(options: object) +#### createButton(options: object): EditorApiButton Creates a new button which can be used by other methods. This takes an option object with the following properties: @@ -55,7 +57,7 @@ const button = api.ui.createButton({ }); ``` -### getMainToolbar() +### getMainToolbar(): EditorApiToolbar Get the main editor toolbar. This is typically the toolbar at the top of the editor. The function returns an [EditorApiToolbar](#editorapitoolbar) object, or null if no toolbar is found. @@ -73,7 +75,6 @@ if (sections.length > 0) { ### Types These are types which may be provided from UI module methods. -The methods on these types are documented using standard TypeScript notation. #### EditorApiButton @@ -106,7 +107,7 @@ This module provides methods related to the live user content being edited withi ### Methods -#### insertHtml(html, position) +#### insertHtml(html: string, position: string = 'selection'): void Inserts the given HTML string at the given position string. The position, if not provided, will default to `'selection'`, replacing any existing selected content (or inserting at the selection if there's no active selection range). From 10f5ceee35c234ee638f4bfd3b1d4ea790041a3e Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 6 Dec 2025 23:10:54 +0000 Subject: [PATCH 25/51] List page settings: Review of #5606 Updated setting display to show mulitple number inputs under one heading group. Updated settings to use general number field form view template. Updated translations to match display changes, and to advise on counts. Added page count control for search results. Added setting service method, to get settings as integers, with min/max/default control. Updating sorting group to be names "Lists & Sorting". Added tests to cover. --- app/App/HomeController.php | 4 +- app/Entities/Controllers/BookController.php | 2 +- .../Controllers/BookshelfController.php | 2 +- app/Search/SearchController.php | 5 +- app/Settings/AppSettingsStore.php | 6 +- app/Settings/SettingService.php | 15 ++++ lang/en/settings.php | 10 +-- resources/sass/_forms.scss | 4 + resources/views/form/number.blade.php | 3 +- .../settings/categories/sorting.blade.php | 57 ++++++------- tests/Settings/PageListLimitsTest.php | 81 +++++++++++++++++++ 11 files changed, 139 insertions(+), 50 deletions(-) create mode 100644 tests/Settings/PageListLimitsTest.php diff --git a/app/App/HomeController.php b/app/App/HomeController.php index 7ec8b0af2..00e2db3df 100644 --- a/app/App/HomeController.php +++ b/app/App/HomeController.php @@ -83,7 +83,7 @@ class HomeController extends Controller if ($homepageOption === 'bookshelves') { $shelves = $this->queries->shelves->visibleForListWithCover() ->orderBy($commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder()) - ->paginate(intval(setting('sorting-shelves-per-page', '18'))); + ->paginate(setting()->getInteger('lists-page-count-shelves', 18, 1, 1000)); $data = array_merge($commonData, ['shelves' => $shelves]); return view('home.shelves', $data); @@ -92,7 +92,7 @@ class HomeController extends Controller if ($homepageOption === 'books') { $books = $this->queries->books->visibleForListWithCover() ->orderBy($commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder()) - ->paginate(intval(setting('sorting-books-per-page', '18'))); + ->paginate(setting()->getInteger('lists-page-count-books', 18, 1, 1000)); $data = array_merge($commonData, ['books' => $books]); return view('home.books', $data); diff --git a/app/Entities/Controllers/BookController.php b/app/Entities/Controllers/BookController.php index 1c8009246..c94057fa9 100644 --- a/app/Entities/Controllers/BookController.php +++ b/app/Entities/Controllers/BookController.php @@ -52,7 +52,7 @@ class BookController extends Controller $books = $this->queries->visibleForListWithCover() ->orderBy($listOptions->getSort(), $listOptions->getOrder()) - ->paginate(intval(setting('sorting-books-per-page', '18'))); + ->paginate(setting()->getInteger('lists-page-count-books', 18, 1, 1000)); $recents = $this->isSignedIn() ? $this->queries->recentlyViewedForCurrentUser()->take(4)->get() : false; $popular = $this->queries->popularForList()->take(4)->get(); $new = $this->queries->visibleForList()->orderBy('created_at', 'desc')->take(4)->get(); diff --git a/app/Entities/Controllers/BookshelfController.php b/app/Entities/Controllers/BookshelfController.php index a7e1de159..f5f4a90bf 100644 --- a/app/Entities/Controllers/BookshelfController.php +++ b/app/Entities/Controllers/BookshelfController.php @@ -45,7 +45,7 @@ class BookshelfController extends Controller $shelves = $this->queries->visibleForListWithCover() ->orderBy($listOptions->getSort(), $listOptions->getOrder()) - ->paginate(intval(setting('sorting-shelves-per-page', '18'))); + ->paginate(setting()->getInteger('lists-page-count-shelves', 18, 1, 1000)); $recents = $this->isSignedIn() ? $this->queries->recentlyViewedForCurrentUser()->get() : false; $popular = $this->queries->popularForList()->get(); $new = $this->queries->visibleForList() diff --git a/app/Search/SearchController.php b/app/Search/SearchController.php index 9586beffb..2b9ea7974 100644 --- a/app/Search/SearchController.php +++ b/app/Search/SearchController.php @@ -25,10 +25,11 @@ class SearchController extends Controller $searchOpts = SearchOptions::fromRequest($request); $fullSearchString = $searchOpts->toString(); $page = intval($request->get('page', '0')) ?: 1; + $count = setting()->getInteger('lists-page-count-search', 18, 1, 1000); - $results = $this->searchRunner->searchEntities($searchOpts, 'all', $page, 20); + $results = $this->searchRunner->searchEntities($searchOpts, 'all', $page, $count); $formatter->format($results['results']->all(), $searchOpts); - $paginator = new LengthAwarePaginator($results['results'], $results['total'], 20, $page); + $paginator = new LengthAwarePaginator($results['results'], $results['total'], $count, $page); $paginator->setPath('/search'); $paginator->appends($request->except('page')); diff --git a/app/Settings/AppSettingsStore.php b/app/Settings/AppSettingsStore.php index e6fc466ba..e098d87f8 100644 --- a/app/Settings/AppSettingsStore.php +++ b/app/Settings/AppSettingsStore.php @@ -14,7 +14,7 @@ class AppSettingsStore ) { } - public function storeFromUpdateRequest(Request $request, string $category) + public function storeFromUpdateRequest(Request $request, string $category): void { $this->storeSimpleSettings($request); if ($category === 'customization') { @@ -76,7 +76,7 @@ class AppSettingsStore protected function storeSimpleSettings(Request $request): void { foreach ($request->all() as $name => $value) { - if (strpos($name, 'setting-') !== 0) { + if (!str_starts_with($name, 'setting-')) { continue; } @@ -85,7 +85,7 @@ class AppSettingsStore } } - protected function destroyExistingSettingImage(string $settingKey) + protected function destroyExistingSettingImage(string $settingKey): void { $existingVal = setting()->get($settingKey); if ($existingVal) { diff --git a/app/Settings/SettingService.php b/app/Settings/SettingService.php index 31debdaea..e0b136180 100644 --- a/app/Settings/SettingService.php +++ b/app/Settings/SettingService.php @@ -28,6 +28,21 @@ class SettingService return $this->formatValue($value, $default); } + /** + * Get a setting from the database as an integer. + * Returns the default value if not found or not an integer, and clamps the value to the given min/max range. + */ + public function getInteger(string $key, int $default, int $min = 0, int $max = PHP_INT_MAX): int + { + $value = $this->get($key, $default); + if (!is_numeric($value)) { + return $default; + } + + $int = intval($value); + return max($min, min($max, $int)); + } + /** * Get a value from the session instead of the main store option. */ diff --git a/lang/en/settings.php b/lang/en/settings.php index 4fcd2e2b4..1b5f9ce14 100644 --- a/lang/en/settings.php +++ b/lang/en/settings.php @@ -75,12 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_shelves_per_page' => 'Shelves Per Page', - 'sorting_shelves_per_page_desc' => 'Sets the number of shelves shown per page in shelf listings.', - 'sorting_books_per_page' => 'Books Per Page', - 'sorting_books_per_page_desc' => 'Sets the number of books shown per page in book listings.', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -107,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', diff --git a/resources/sass/_forms.scss b/resources/sass/_forms.scss index 12fb3385f..13a4232fc 100644 --- a/resources/sass/_forms.scss +++ b/resources/sass/_forms.scss @@ -348,6 +348,10 @@ input[type=color] { } } +.small-inputs input { + width: 150px; +} + .simple-code-input { background-color: #F8F8F8; font-family: monospace; diff --git a/resources/views/form/number.blade.php b/resources/views/form/number.blade.php index a37cd3694..b70b7e8db 100644 --- a/resources/views/form/number.blade.php +++ b/resources/views/form/number.blade.php @@ -6,7 +6,8 @@ @if($readonly ?? false) readonly="readonly" @endif @if($min ?? false) min="{{ $min }}" @endif @if($max ?? false) max="{{ $max }}" @endif - @if(isset($model) || old($name)) value="{{ old($name) ? old($name) : $model->$name}}" @endif> + @if($step ?? false) step="{{ $step }}" @endif + @if(isset($model) || old($name) || isset($value)) value="{{ old($name) ?? $model->$name ?? $value }}" @endif> @if($errors->has($name))
{{ $errors->first($name) }}
@endif diff --git a/resources/views/settings/categories/sorting.blade.php b/resources/views/settings/categories/sorting.blade.php index 4aff11bd2..0c9dc1f95 100644 --- a/resources/views/settings/categories/sorting.blade.php +++ b/resources/views/settings/categories/sorting.blade.php @@ -10,41 +10,30 @@ {{ csrf_field() }} -
-
- -

{{ trans('settings.sorting_shelves_per_page_desc') }}

-
-
- -
-
- -
-
- -

{{ trans('settings.sorting_books_per_page_desc') }}

-
-
- -
-
-
+
+
+ +

{{ trans('settings.sorting_page_limits_desc') }}

+
+
+ @php + $labelByKey = ['shelves' => trans('entities.shelves'), 'books' => trans('entities.books'), 'search' => trans('entities.search_results')]; + @endphp + @foreach($labelByKey as $key => $label) +
+ + @include('form.number', [ + 'name' => 'setting-lists-page-count-' . $key, + 'value' => setting()->getInteger('lists-page-count-' . $key, 18, 1, 1000), + 'min' => 1, + 'step' => 1, + ]) +
+ @endforeach +
+
+
+
+ @include('form.toggle-switch', [ + 'name' => 'preferences[comment-mentions]', + 'value' => $preferences->notifyOnCommentMentions(), + 'label' => trans('preferences.notifications_opt_comment_mentions'), + ]) +
@endif
diff --git a/tests/Activity/MentionParserTest.php b/tests/Activity/MentionParserTest.php new file mode 100644 index 000000000..08bfc10d2 --- /dev/null +++ b/tests/Activity/MentionParserTest.php @@ -0,0 +1,43 @@ +Hello @User

'; + $result = $parser->parseUserIdsFromHtml($html); + $this->assertEquals([5], $result); + + // Test multiple mentions + $html = '

@Alice and @Bob

'; + $result = $parser->parseUserIdsFromHtml($html); + $this->assertEquals([1, 2], $result); + + // Test filtering out invalid IDs (zero and negative) + $html = '

@Invalid @Negative @Valid

'; + $result = $parser->parseUserIdsFromHtml($html); + $this->assertEquals([3], $result); + + // Test non-mention links are ignored + $html = '

Normal Link @User

'; + $result = $parser->parseUserIdsFromHtml($html); + $this->assertEquals([7], $result); + + // Test empty HTML + $result = $parser->parseUserIdsFromHtml(''); + $this->assertEquals([], $result); + + // Test duplicate user IDs + $html = '

@User mentioned @User again

'; + $result = $parser->parseUserIdsFromHtml($html); + $this->assertEquals([4], $result); + } +} From 48cdaab690bbe1cd91436b5aa0fc281ce9a9d8bd Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 17 Dec 2025 10:49:12 +0000 Subject: [PATCH 37/51] Comment Mentions: Added tests to cover back-end functionality --- app/Activity/Models/MentionHistory.php | 1 + lang/en/notifications.php | 2 +- .../CommentDisplayTest.php | 4 +- tests/Activity/CommentMentionTest.php | 128 ++++++++++++++++++ .../CommentSettingTest.php | 2 +- .../{Entity => Activity}/CommentStoreTest.php | 3 +- tests/User/UserMyAccountTest.php | 8 ++ 7 files changed, 141 insertions(+), 7 deletions(-) rename tests/{Entity => Activity}/CommentDisplayTest.php (98%) create mode 100644 tests/Activity/CommentMentionTest.php rename tests/{Entity => Activity}/CommentSettingTest.php (96%) rename tests/{Entity => Activity}/CommentStoreTest.php (99%) diff --git a/app/Activity/Models/MentionHistory.php b/app/Activity/Models/MentionHistory.php index bfa242df5..7386a4d74 100644 --- a/app/Activity/Models/MentionHistory.php +++ b/app/Activity/Models/MentionHistory.php @@ -16,4 +16,5 @@ use Illuminate\Support\Carbon; */ class MentionHistory extends Model { + protected $table = 'mention_history'; } diff --git a/lang/en/notifications.php b/lang/en/notifications.php index 9d6d94574..563ac24e8 100644 --- a/lang/en/notifications.php +++ b/lang/en/notifications.php @@ -11,7 +11,7 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', - 'comment_mention_subject' => 'You were mentioned in a comment on :pageName', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', diff --git a/tests/Entity/CommentDisplayTest.php b/tests/Activity/CommentDisplayTest.php similarity index 98% rename from tests/Entity/CommentDisplayTest.php rename to tests/Activity/CommentDisplayTest.php index 80664890a..01a4643be 100644 --- a/tests/Entity/CommentDisplayTest.php +++ b/tests/Activity/CommentDisplayTest.php @@ -1,10 +1,8 @@ users->viewer(); + $this->permissions->grantUserRolePermissions($userToMention, [Permission::ReceiveNotifications]); + $editor = $this->users->editor(); + $page = $this->entities->pageWithinChapter(); + $notifications = Notification::fake(); + + $this->actingAs($editor)->post("/comment/{$page->id}", [ + 'html' => '

Hello @user

' + ])->assertOk(); + + $notifications->assertSentTo($userToMention, function (CommentMentionNotification $notification) use ($userToMention, $editor, $page) { + $mail = $notification->toMail($userToMention); + $mailContent = html_entity_decode(strip_tags($mail->render()), ENT_QUOTES); + return $mail->subject === 'You have been mentioned in a comment on page: ' . $page->name + && str_contains($mailContent, 'View Comment') + && str_contains($mailContent, 'Page Name: ' . $page->name) + && str_contains($mailContent, 'Page Path: ' . $page->book->getShortName(24) . ' > ' . $page->chapter->getShortName(24)) + && str_contains($mailContent, 'Commenter: ' . $editor->name) + && str_contains($mailContent, 'Comment: Hello @user'); + }); + } + + public function test_mentions_are_not_notified_if_mentioned_by_same_user() + { + $editor = $this->users->editor(); + $this->permissions->grantUserRolePermissions($editor, [Permission::ReceiveNotifications]); + $page = $this->entities->page(); + $notifications = Notification::fake(); + + $this->actingAs($editor)->post("/comment/{$page->id}", [ + 'html' => '

Hello

' + ])->assertOk(); + + $notifications->assertNothingSent(); + } + + public function test_mentions_are_logged_to_the_database_even_if_not_notified() + { + $editor = $this->users->editor(); + $otherUser = $this->users->viewer(); + $this->permissions->grantUserRolePermissions($editor, [Permission::ReceiveNotifications]); + $page = $this->entities->page(); + $notifications = Notification::fake(); + + $this->actingAs($editor)->post("/comment/{$page->id}", [ + 'html' => '

Hello and

' + ])->assertOk(); + + $notifications->assertNothingSent(); + + $comment = $page->comments()->latest()->first(); + $this->assertDatabaseHas('mention_history', [ + 'mentionable_id' => $comment->id, + 'mentionable_type' => 'comment', + 'from_user_id' => $editor->id, + 'to_user_id' => $otherUser->id, + ]); + $this->assertDatabaseHas('mention_history', [ + 'mentionable_id' => $comment->id, + 'mentionable_type' => 'comment', + 'from_user_id' => $editor->id, + 'to_user_id' => $editor->id, + ]); + } + + public function test_comment_updates_will_send_notifications_only_if_mention_is_new() + { + $userToMention = $this->users->viewer(); + $this->permissions->grantUserRolePermissions($userToMention, [Permission::ReceiveNotifications]); + $editor = $this->users->editor(); + $this->permissions->grantUserRolePermissions($editor, [Permission::CommentUpdateOwn]); + $page = $this->entities->page(); + $notifications = Notification::fake(); + + $this->actingAs($editor)->post("/comment/{$page->id}", [ + 'html' => '

Hello there

' + ])->assertOk(); + $comment = $page->comments()->latest()->first(); + + $notifications->assertNothingSent(); + + $this->put("/comment/{$comment->id}", [ + 'html' => '

Hello

' + ])->assertOk(); + + $notifications->assertSentTo($userToMention, CommentMentionNotification::class); + $notifications->assertCount(1); + + $this->put("/comment/{$comment->id}", [ + 'html' => '

Hello again

' + ])->assertOk(); + + $notifications->assertCount(1); + } + + public function test_notification_limited_to_those_with_view_permissions() + { + $userA = $this->users->newUser(); + $userB = $this->users->newUser(); + $this->permissions->grantUserRolePermissions($userA, [Permission::ReceiveNotifications]); + $this->permissions->grantUserRolePermissions($userB, [Permission::ReceiveNotifications]); + $notifications = Notification::fake(); + $page = $this->entities->page(); + + $this->permissions->disableEntityInheritedPermissions($page); + $this->permissions->addEntityPermission($page, ['view'], $userA->roles()->first()); + + $this->asAdmin()->post("/comment/{$page->id}", [ + 'html' => '

Hello and

' + ])->assertOk(); + + $notifications->assertCount(1); + $notifications->assertSentTo($userA, CommentMentionNotification::class); + } +} diff --git a/tests/Entity/CommentSettingTest.php b/tests/Activity/CommentSettingTest.php similarity index 96% rename from tests/Entity/CommentSettingTest.php rename to tests/Activity/CommentSettingTest.php index 7de457441..ad82d9b70 100644 --- a/tests/Entity/CommentSettingTest.php +++ b/tests/Activity/CommentSettingTest.php @@ -1,6 +1,6 @@ asEditor()->get('/my-account/notifications'); $resp->assertSee('Notify upon comments'); $resp->assertSee('Notify upon replies'); + $resp->assertSee('Notify when I\'m mentioned in a comment'); setting()->put('app-disable-comments', true); $resp = $this->get('/my-account/notifications'); $resp->assertDontSee('Notify upon comments'); $resp->assertDontSee('Notify upon replies'); + $resp->assertDontSee('Notify when I\'m mentioned in a comment'); + } + + public function test_notification_comment_mention_option_enabled_by_default() + { + $resp = $this->asEditor()->get('/my-account/notifications'); + $this->withHtml($resp)->assertElementExists('input[name="preferences[comment-mentions]"][value="true"]'); } } From 3d9aba7b1f3185345ac58a51127ac32e8b669a50 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 17 Dec 2025 13:48:20 +0000 Subject: [PATCH 38/51] Mentions: Added coverage for mentions search endpoint --- .../CommentMentionNotificationHandler.php | 9 ++- tests/User/UserSearchTest.php | 67 +++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/app/Activity/Notifications/Handlers/CommentMentionNotificationHandler.php b/app/Activity/Notifications/Handlers/CommentMentionNotificationHandler.php index f7c833aee..50c8cb8ab 100644 --- a/app/Activity/Notifications/Handlers/CommentMentionNotificationHandler.php +++ b/app/Activity/Notifications/Handlers/CommentMentionNotificationHandler.php @@ -19,11 +19,13 @@ class CommentMentionNotificationHandler extends BaseNotificationHandler { public function handle(Activity $activity, Loggable|string $detail, User $user): void { - $page = $detail->entity; - if (!($detail instanceof Comment) || !($page instanceof Page)) { + if (!($detail instanceof Comment) || !($detail->entity instanceof Page)) { throw new \InvalidArgumentException("Detail for comment mention notifications must be a comment on a page"); } + /** @var Page $page */ + $page = $detail->entity; + $parser = new MentionParser(); $mentionedUserIds = $parser->parseUserIdsFromHtml($detail->html); $realMentionedUsers = User::whereIn('id', $mentionedUserIds)->get(); @@ -50,6 +52,9 @@ class CommentMentionNotificationHandler extends BaseNotificationHandler $this->sendNotificationToUserIds(CommentMentionNotification::class, $receivingNotificationsUserIds, $user, $detail, $page); } + /** + * @param Collection $mentionedUsers + */ protected function logMentions(Collection $mentionedUsers, Comment $comment, User $fromUser): void { $mentions = []; diff --git a/tests/User/UserSearchTest.php b/tests/User/UserSearchTest.php index 76efbf4af..25c7c6ee9 100644 --- a/tests/User/UserSearchTest.php +++ b/tests/User/UserSearchTest.php @@ -2,6 +2,7 @@ namespace Tests\User; +use BookStack\Permissions\Permission; use BookStack\Users\Models\User; use Tests\TestCase; @@ -62,4 +63,70 @@ class UserSearchTest extends TestCase $resp = $this->get('/search/users/select?search=a'); $this->assertPermissionError($resp); } + + public function test_mentions_search_matches_by_name() + { + $viewer = $this->users->viewer(); + $editor = $this->users->editor(); + + $resp = $this->actingAs($editor)->get('/search/users/mention?search=' . urlencode($viewer->name)); + + $resp->assertOk(); + $resp->assertSee($viewer->name); + $resp->assertDontSee($editor->name); + } + + public function test_mentions_search_does_not_match_by_email() + { + $viewer = $this->users->viewer(); + + $resp = $this->asEditor()->get('/search/users/mention?search=' . urlencode($viewer->email)); + + $resp->assertDontSee($viewer->name); + } + + public function test_mentions_search_requires_logged_in_user() + { + $this->setSettings(['app-public' => true]); + $guest = $this->users->guest(); + $this->permissions->grantUserRolePermissions($guest, [Permission::CommentCreateAll, Permission::CommentUpdateAll]); + + $resp = $this->get('/search/users/mention?search=a'); + $this->assertPermissionError($resp); + } + + public function test_mentions_search_requires_comment_create_or_update_permission() + { + $viewer = $this->users->viewer(); + $editor = $this->users->editor(); + + $resp = $this->actingAs($viewer)->get('/search/users/mention?search=' . urlencode($editor->name)); + $this->assertPermissionError($resp); + + $this->permissions->grantUserRolePermissions($viewer, [Permission::CommentCreateAll]); + + $resp = $this->actingAs($editor)->get('/search/users/mention?search=' . urlencode($viewer->name)); + $resp->assertOk(); + $resp->assertSee($viewer->name); + + $this->permissions->removeUserRolePermissions($viewer, [Permission::CommentCreateAll]); + $this->permissions->grantUserRolePermissions($viewer, [Permission::CommentUpdateAll]); + + $resp = $this->actingAs($editor)->get('/search/users/mention?search=' . urlencode($viewer->name)); + $resp->assertOk(); + $resp->assertSee($viewer->name); + } + + public function test_mentions_search_shows_first_by_name_without_search() + { + /** @var User $firstUser */ + $firstUser = User::query() + ->orderBy('name', 'asc') + ->first(); + + $resp = $this->asEditor()->get('/search/users/mention'); + + $resp->assertOk(); + $this->withHtml($resp)->assertElementContains('a[data-id]:first-child', $firstUser->name); + } } From 4aeb571126c648ac2d3ffe25777925053ac3e090 Mon Sep 17 00:00:00 2001 From: Tim Gerundt Date: Wed, 17 Dec 2025 15:11:29 +0100 Subject: [PATCH 39/51] Update "Microsoft URL Rewrite Module for IIS" download link --- public/web.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/web.config b/public/web.config index 474eb6898..b08c89c9a 100644 --- a/public/web.config +++ b/public/web.config @@ -1,6 +1,6 @@ From 90fc02c57f891145bee681234106f8fd6d357cc1 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 17 Dec 2025 21:11:01 +0000 Subject: [PATCH 40/51] Esbuild & Mentions: Updated interaction stability and build system - Updated esbuild system to be module, and fixed build command. - Reverted module use in package.json by default as this impacted test runs/files. - Updated mention user select: - To look better in dark mode. - To not remove text after on select. - To properly revert/restore focus on enter or cancel. --- dev/build/{esbuild.js => esbuild.mjs} | 13 +++++++++---- package.json | 7 +++---- resources/js/wysiwyg/index.ts | 2 -- resources/js/wysiwyg/services/mentions.ts | 8 ++++++-- .../js/wysiwyg/ui/decorators/MentionDecorator.ts | 12 +++++++++++- resources/js/wysiwyg/ui/framework/manager.ts | 8 ++++++++ resources/sass/_components.scss | 1 + 7 files changed, 38 insertions(+), 13 deletions(-) rename dev/build/{esbuild.js => esbuild.mjs} (85%) diff --git a/dev/build/esbuild.js b/dev/build/esbuild.mjs similarity index 85% rename from dev/build/esbuild.js rename to dev/build/esbuild.mjs index cb9abc246..fa2231157 100644 --- a/dev/build/esbuild.js +++ b/dev/build/esbuild.mjs @@ -5,7 +5,6 @@ import * as path from 'node:path'; import * as fs from 'node:fs'; import * as process from "node:process"; - // Check if we're building for production // (Set via passing `production` as first argument) const mode = process.argv[2]; @@ -76,7 +75,13 @@ if (mode === 'watch') { }); } else { // Build with meta output for analysis - ctx.rebuild().then(result => { - fs.writeFileSync('esbuild-meta.json', JSON.stringify(result.metafile)); - }).catch(() => process.exit(1)); + const result = await ctx.rebuild(); + const outputs = result.metafile.outputs; + const files = Object.keys(outputs); + for (const file of files) { + const output = outputs[file]; + console.log(`Written: ${file} @ ${Math.round(output.bytes / 1000)}kB`); + } + fs.writeFileSync('esbuild-meta.json', JSON.stringify(result.metafile)); + process.exit(0); } diff --git a/package.json b/package.json index 1ae14e976..624ff876a 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,12 @@ { "private": true, - "type": "module", "scripts": { "build:css:dev": "sass ./resources/sass:./public/dist --embed-sources", "build:css:watch": "sass ./resources/sass:./public/dist --watch --embed-sources", "build:css:production": "sass ./resources/sass:./public/dist -s compressed", - "build:js:dev": "node dev/build/esbuild.js", - "build:js:watch": "node dev/build/esbuild.js watch", - "build:js:production": "node dev/build/esbuild.js production", + "build:js:dev": "node dev/build/esbuild.mjs", + "build:js:watch": "node dev/build/esbuild.mjs watch", + "build:js:production": "node dev/build/esbuild.mjs production", "build": "npm-run-all --parallel build:*:dev", "production": "npm-run-all --parallel build:*:production", "dev": "npm-run-all --parallel build:*:watch", diff --git a/resources/js/wysiwyg/index.ts b/resources/js/wysiwyg/index.ts index 273657c47..01964b066 100644 --- a/resources/js/wysiwyg/index.ts +++ b/resources/js/wysiwyg/index.ts @@ -151,8 +151,6 @@ export function createCommentEditorInstance(container: HTMLElement, htmlContent: theme: theme, }); - // TODO - Dedupe this with the basic editor instance - // Changed elements: namespace, registerMentions, toolbar, public event usage, mentioned decorator const context: EditorUiContext = buildEditorUI(container, editor, options); editor.setRootElement(context.editorDOM); diff --git a/resources/js/wysiwyg/services/mentions.ts b/resources/js/wysiwyg/services/mentions.ts index 59fd02b1d..ba6739f32 100644 --- a/resources/js/wysiwyg/services/mentions.ts +++ b/resources/js/wysiwyg/services/mentions.ts @@ -6,6 +6,7 @@ import {KEY_AT_COMMAND} from "lexical/LexicalCommands"; import {$createMentionNode, $isMentionNode, MentionNode} from "@lexical/link/LexicalMentionNode"; import {EditorUiContext} from "../ui/framework/core"; import {MentionDecorator} from "../ui/decorators/MentionDecorator"; +import {$selectSingleNode} from "../utils/selection"; function enterUserSelectMode(context: EditorUiContext, selection: RangeSelection) { @@ -25,10 +26,13 @@ function enterUserSelectMode(context: EditorUiContext, selection: RangeSelection } const split = textNode.splitText(offset); - const newNode = split[atStart ? 0 : 1]; + const priorTextNode = split[0]; + const afterTextNode = split[atStart ? 0 : 1]; const mention = $createMentionNode(0, '', ''); - newNode.replace(mention); + priorTextNode.insertAfter(mention); + afterTextNode.spliceText(0, 1, '', false); + $selectSingleNode(mention); requestAnimationFrame(() => { const mentionDecorator = context.manager.getDecoratorByNodeKey(mention.getKey()); diff --git a/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts b/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts index a2786de00..84d664885 100644 --- a/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts +++ b/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts @@ -170,14 +170,24 @@ export class MentionDecorator extends EditorDecorator { this.dropdownContainer?.remove(); this.abortController = null; this.dropdownContainer = null; + this.context.manager.focus(); } revertMention() { this.hideSelection(); this.context.editor.update(() => { const text = $createTextNode('@'); + const before = this.getNode().getPreviousSibling(); this.getNode().replace(text); - text.selectEnd(); + requestAnimationFrame(() => { + this.context.editor.update(() => { + if (text.isAttached()) { + text.selectEnd(); + } else if (before?.isAttached()) { + before?.selectEnd(); + } + }); + }); }); } diff --git a/resources/js/wysiwyg/ui/framework/manager.ts b/resources/js/wysiwyg/ui/framework/manager.ts index cbe3cca19..78d0cc9a2 100644 --- a/resources/js/wysiwyg/ui/framework/manager.ts +++ b/resources/js/wysiwyg/ui/framework/manager.ts @@ -206,6 +206,14 @@ export class EditorUIManager { } } + /** + * Set the UI focus to the editor. + */ + focus(): void { + this.getContext().editorDOM.focus(); + this.getContext().editor.focus(); + } + protected updateContextToolbars(update: EditorUiStateUpdate): void { for (let i = this.activeContextToolbars.length - 1; i >= 0; i--) { const toolbar = this.activeContextToolbars[i]; diff --git a/resources/sass/_components.scss b/resources/sass/_components.scss index 0f374fb80..8608427d8 100644 --- a/resources/sass/_components.scss +++ b/resources/sass/_components.scss @@ -985,6 +985,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { font-size: 0.8rem; &:hover,&:focus { background-color: #F2F2F2; + @include mixins.lightDark(background-color, #F2F2F2, #444); text-decoration: none; } } From 51f9b63db0b9c815d1ea06a2c3c62424b0976dec Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 18 Dec 2025 17:15:29 +0000 Subject: [PATCH 41/51] Comment Mentions: Fixed and tweaks during review of changes - Added advisory on role permission form to advise which allow listing of users/roles. - Updated database config to avoid PHP8.5 deprecation. - Tweaked migration to remove unused index. - Fixed test namespace. --- app/Config/database.php | 2 +- ...5_12_15_140219_create_mention_history_table.php | 2 +- lang/en/settings.php | 2 ++ .../views/settings/roles/parts/form.blade.php | 14 ++++++++++---- .../parts/related-asset-permissions-row.blade.php | 5 ++++- tests/Activity/CommentDisplayTest.php | 2 +- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/Config/database.php b/app/Config/database.php index 5edafa777..86bae5f5b 100644 --- a/app/Config/database.php +++ b/app/Config/database.php @@ -81,7 +81,7 @@ return [ 'strict' => false, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], diff --git a/database/migrations/2025_12_15_140219_create_mention_history_table.php b/database/migrations/2025_12_15_140219_create_mention_history_table.php index 2ab522dd8..ff7b6a981 100644 --- a/database/migrations/2025_12_15_140219_create_mention_history_table.php +++ b/database/migrations/2025_12_15_140219_create_mention_history_table.php @@ -15,7 +15,7 @@ return new class extends Migration $table->increments('id'); $table->string('mentionable_type', 50)->index(); $table->unsignedBigInteger('mentionable_id')->index(); - $table->unsignedInteger('from_user_id')->index(); + $table->unsignedInteger('from_user_id'); $table->unsignedInteger('to_user_id'); $table->timestamps(); }); diff --git a/lang/en/settings.php b/lang/en/settings.php index 1b5f9ce14..c68605fe1 100644 --- a/lang/en/settings.php +++ b/lang/en/settings.php @@ -197,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/resources/views/settings/roles/parts/form.blade.php b/resources/views/settings/roles/parts/form.blade.php index a77b80e4c..5a9eca7d2 100644 --- a/resources/views/settings/roles/parts/form.blade.php +++ b/resources/views/settings/roles/parts/form.blade.php @@ -30,10 +30,10 @@ {{ trans('common.toggle_all') }} -
+
-
@include('settings.roles.parts.checkbox', ['permission' => 'restrictions-manage-all', 'label' => trans('settings.role_manage_entity_permissions')])
-
@include('settings.roles.parts.checkbox', ['permission' => 'restrictions-manage-own', 'label' => trans('settings.role_manage_own_entity_permissions')])
+
@include('settings.roles.parts.checkbox', ['permission' => 'restrictions-manage-all', 'label' => trans('settings.role_manage_entity_permissions')]) 1
+
@include('settings.roles.parts.checkbox', ['permission' => 'restrictions-manage-own', 'label' => trans('settings.role_manage_own_entity_permissions')]) 1
@include('settings.roles.parts.checkbox', ['permission' => 'templates-manage', 'label' => trans('settings.role_manage_page_templates')])
@include('settings.roles.parts.checkbox', ['permission' => 'access-api', 'label' => trans('settings.role_access_api')])
@include('settings.roles.parts.checkbox', ['permission' => 'content-export', 'label' => trans('settings.role_export_content')])
@@ -48,6 +48,10 @@

{{ trans('settings.roles_system_warning') }}

+ +

+ 1 {{ trans('settings.role_permission_note_users_and_roles') }} +

@@ -75,7 +79,7 @@ @include('settings.roles.parts.asset-permissions-row', ['title' => trans('entities.books'), 'permissionPrefix' => 'book']) @include('settings.roles.parts.asset-permissions-row', ['title' => trans('entities.chapters'), 'permissionPrefix' => 'chapter']) @include('settings.roles.parts.asset-permissions-row', ['title' => trans('entities.pages'), 'permissionPrefix' => 'page']) - @include('settings.roles.parts.related-asset-permissions-row', ['title' => trans('entities.images'), 'permissionPrefix' => 'image', 'refMark' => '1']) + @include('settings.roles.parts.related-asset-permissions-row', ['title' => trans('entities.images'), 'permissionPrefix' => 'image']) @include('settings.roles.parts.related-asset-permissions-row', ['title' => trans('entities.attachments'), 'permissionPrefix' => 'attachment']) @include('settings.roles.parts.related-asset-permissions-row', ['title' => trans('entities.comments'), 'permissionPrefix' => 'comment'])
@@ -83,6 +87,8 @@

1 {{ trans('settings.role_asset_image_view_note') }} +
+ 2 {{ trans('settings.role_asset_users_note') }}

diff --git a/resources/views/settings/roles/parts/related-asset-permissions-row.blade.php b/resources/views/settings/roles/parts/related-asset-permissions-row.blade.php index 62fdd6b74..b9bf5427f 100644 --- a/resources/views/settings/roles/parts/related-asset-permissions-row.blade.php +++ b/resources/views/settings/roles/parts/related-asset-permissions-row.blade.php @@ -6,16 +6,19 @@
{{ trans('common.create') }}
@include('settings.roles.parts.checkbox', ['permission' => $permissionPrefix . '-create-all', 'label' => '']) + @if($permissionPrefix === 'comment')2@endif
{{ trans('common.view') }}
- {{ trans('settings.role_controlled_by_asset') }}@if($refMark ?? false){{ $refMark }}@endif + {{ trans('settings.role_controlled_by_asset') }}@if($permissionPrefix === 'image')1@endif
{{ trans('common.edit') }}
@include('settings.roles.parts.checkbox', ['permission' => $permissionPrefix . '-update-own', 'label' => trans('settings.role_own')]) + @if($permissionPrefix === 'comment')2@endif
@include('settings.roles.parts.checkbox', ['permission' => $permissionPrefix . '-update-all', 'label' => trans('settings.role_all')]) + @if($permissionPrefix === 'comment')2@endif
{{ trans('common.delete') }}
diff --git a/tests/Activity/CommentDisplayTest.php b/tests/Activity/CommentDisplayTest.php index 01a4643be..798ea16ee 100644 --- a/tests/Activity/CommentDisplayTest.php +++ b/tests/Activity/CommentDisplayTest.php @@ -1,6 +1,6 @@ Date: Thu, 18 Dec 2025 17:40:05 +0000 Subject: [PATCH 42/51] Comment mentions: Fixed CI and test scenarios --- app/Config/database.php | 1 + tests/Activity/CommentMentionTest.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Config/database.php b/app/Config/database.php index 86bae5f5b..6fc861312 100644 --- a/app/Config/database.php +++ b/app/Config/database.php @@ -81,6 +81,7 @@ return [ 'strict' => false, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ + // @phpstan-ignore class.notFound (PHP_VERSION_ID >= 80500 ? \Pdo\Mysql::ATTR_SSL_CA : \PDO::MYSQL_ATTR_SSL_CA) => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], diff --git a/tests/Activity/CommentMentionTest.php b/tests/Activity/CommentMentionTest.php index 57a36895e..7f26f8689 100644 --- a/tests/Activity/CommentMentionTest.php +++ b/tests/Activity/CommentMentionTest.php @@ -24,7 +24,8 @@ class CommentMentionTest extends TestCase $notifications->assertSentTo($userToMention, function (CommentMentionNotification $notification) use ($userToMention, $editor, $page) { $mail = $notification->toMail($userToMention); $mailContent = html_entity_decode(strip_tags($mail->render()), ENT_QUOTES); - return $mail->subject === 'You have been mentioned in a comment on page: ' . $page->name + $subjectPrefix = 'You have been mentioned in a comment on page: ' . mb_substr($page->name, 0, 20); + return str_starts_with($mail->subject, $subjectPrefix) && str_contains($mailContent, 'View Comment') && str_contains($mailContent, 'Page Name: ' . $page->name) && str_contains($mailContent, 'Page Path: ' . $page->book->getShortName(24) . ' > ' . $page->chapter->getShortName(24)) From 48df2be0d8b64f7a6bc41e4dedfe7831d3a47941 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 19 Dec 2025 10:54:09 +0000 Subject: [PATCH 43/51] DB: Added views->viewable_type index For #5948 --- ...9_103417_add_views_viewable_type_index.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 database/migrations/2025_12_19_103417_add_views_viewable_type_index.php diff --git a/database/migrations/2025_12_19_103417_add_views_viewable_type_index.php b/database/migrations/2025_12_19_103417_add_views_viewable_type_index.php new file mode 100644 index 000000000..38d1cb450 --- /dev/null +++ b/database/migrations/2025_12_19_103417_add_views_viewable_type_index.php @@ -0,0 +1,28 @@ +index('viewable_type', 'views_viewable_type_index'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('views', function (Blueprint $table) { + $table->dropIndex('views_viewable_type_index'); + }); + } +}; From 2de3247ae485897539b7d9967ad1787444081abb Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 19 Dec 2025 14:22:27 +0000 Subject: [PATCH 44/51] Deps: Updated PHP package versions Includes major version change of antonioribeiro/google2fa which changes secret length. From manual testing of old MFA secrets and new, this should not be breaking at all. --- app/Access/Mfa/TotpService.php | 9 +- composer.json | 4 +- composer.lock | 118 +++++++++++++------------- tests/Activity/CommentSettingTest.php | 2 +- tests/Activity/CommentStoreTest.php | 2 +- tests/Settings/PageListLimitsTest.php | 2 +- 6 files changed, 68 insertions(+), 69 deletions(-) diff --git a/app/Access/Mfa/TotpService.php b/app/Access/Mfa/TotpService.php index 1d1af451a..f13637a3f 100644 --- a/app/Access/Mfa/TotpService.php +++ b/app/Access/Mfa/TotpService.php @@ -14,10 +14,9 @@ use PragmaRX\Google2FA\Support\Constants; class TotpService { - protected $google2fa; - - public function __construct(Google2FA $google2fa) - { + public function __construct( + protected Google2FA $google2fa + ) { $this->google2fa = $google2fa; // Use SHA1 as a default, Personal testing of other options in 2021 found // many apps lack support for other algorithms yet still will scan @@ -35,7 +34,7 @@ class TotpService } /** - * Generate a TOTP URL from secret key. + * Generate a TOTP URL from a secret key. */ public function generateUrl(string $secret, User $user): string { diff --git a/composer.json b/composer.json index 7e7412976..9d47f5548 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,7 @@ "league/oauth2-client": "^2.6", "onelogin/php-saml": "^4.3.1", "phpseclib/phpseclib": "^3.0", - "pragmarx/google2fa": "^8.0", + "pragmarx/google2fa": "^9.0", "predis/predis": "^3.2", "socialiteproviders/discord": "^4.1", "socialiteproviders/gitlab": "^4.1", @@ -47,7 +47,7 @@ "nunomaduro/collision": "^8.6", "larastan/larastan": "^v3.0", "phpunit/phpunit": "^11.5", - "squizlabs/php_codesniffer": "^3.7", + "squizlabs/php_codesniffer": "^4.0.1", "ssddanbrown/asserthtml": "^3.1" }, "autoload": { diff --git a/composer.lock b/composer.lock index 98f2d4606..cd4ba68c5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9f946fb1755acd72dcc63d0c3af637e9", + "content-hash": "556613432c8fb7d8f96bcf637c8c07a9", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.366.4", + "version": "3.368.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "1861cc8eede21cdaab0732fd44f43f19ddf1effd" + "reference": "96397db9a3fd0b5e6b3c52e363b6a55831a93b1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1861cc8eede21cdaab0732fd44f43f19ddf1effd", - "reference": "1861cc8eede21cdaab0732fd44f43f19ddf1effd", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/96397db9a3fd0b5e6b3c52e363b6a55831a93b1d", + "reference": "96397db9a3fd0b5e6b3c52e363b6a55831a93b1d", "shasum": "" }, "require": { @@ -153,9 +153,9 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.366.4" + "source": "https://github.com/aws/aws-sdk-php/tree/3.368.2" }, - "time": "2025-12-09T19:21:22+00:00" + "time": "2025-12-18T19:07:30+00:00" }, { "name": "bacon/bacon-qr-code", @@ -1739,16 +1739,16 @@ }, { "name": "laravel/framework", - "version": "v12.42.0", + "version": "v12.43.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "509b33095564c5165366d81bbaa0afaac28abe75" + "reference": "195b893593a9298edee177c0844132ebaa02102f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/509b33095564c5165366d81bbaa0afaac28abe75", - "reference": "509b33095564c5165366d81bbaa0afaac28abe75", + "url": "https://api.github.com/repos/laravel/framework/zipball/195b893593a9298edee177c0844132ebaa02102f", + "reference": "195b893593a9298edee177c0844132ebaa02102f", "shasum": "" }, "require": { @@ -1957,7 +1957,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-12-09T15:51:23+00:00" + "time": "2025-12-16T18:53:08+00:00" }, { "name": "laravel/prompts", @@ -3961,16 +3961,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.47", + "version": "3.0.48", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d" + "reference": "64065a5679c50acb886e82c07aa139b0f757bb89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/9d6ca36a6c2dd434765b1071b2644a1c683b385d", - "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/64065a5679c50acb886e82c07aa139b0f757bb89", + "reference": "64065a5679c50acb886e82c07aa139b0f757bb89", "shasum": "" }, "require": { @@ -4051,7 +4051,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.47" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.48" }, "funding": [ { @@ -4067,20 +4067,20 @@ "type": "tidelift" } ], - "time": "2025-10-06T01:07:24+00:00" + "time": "2025-12-15T11:51:42+00:00" }, { "name": "pragmarx/google2fa", - "version": "v8.0.3", + "version": "v9.0.0", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad" + "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", - "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf", + "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf", "shasum": "" }, "require": { @@ -4117,9 +4117,9 @@ ], "support": { "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3" + "source": "https://github.com/antonioribeiro/google2fa/tree/v9.0.0" }, - "time": "2024-09-05T11:56:40+00:00" + "time": "2025-09-19T22:51:08+00:00" }, { "name": "predis/predis", @@ -4598,16 +4598,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.16", + "version": "v0.12.18", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "ee6d5028be4774f56c6c2c85ec4e6bc9acfe6b67" + "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ee6d5028be4774f56c6c2c85ec4e6bc9acfe6b67", - "reference": "ee6d5028be4774f56c6c2c85ec4e6bc9acfe6b67", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ddff0ac01beddc251786fe70367cd8bbdb258196", + "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196", "shasum": "" }, "require": { @@ -4671,9 +4671,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.16" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.18" }, - "time": "2025-12-07T03:39:01+00:00" + "time": "2025-12-17T14:35:46+00:00" }, { "name": "ralouphie/getallheaders", @@ -4797,20 +4797,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.1", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440" + "reference": "8429c78ca35a09f27565311b98101e2826affde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440", - "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -4869,9 +4869,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.1" + "source": "https://github.com/ramsey/uuid/tree/4.9.2" }, - "time": "2025-09-04T20:59:21+00:00" + "time": "2025-12-14T04:43:48+00:00" }, { "name": "robrichards/xmlseclibs", @@ -7922,23 +7922,23 @@ }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^7.4 || ^8.0", - "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^2.0", @@ -7971,9 +7971,9 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0" }, - "time": "2024-12-21T16:25:41+00:00" + "time": "2025-12-02T11:56:42+00:00" }, { "name": "vlucas/phpdotenv", @@ -8439,16 +8439,16 @@ }, { "name": "larastan/larastan", - "version": "v3.8.0", + "version": "v3.8.1", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "d13ef96d652d1b2a8f34f1760ba6bf5b9c98112e" + "reference": "ff3725291bc4c7e6032b5a54776e3e5104c86db9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/d13ef96d652d1b2a8f34f1760ba6bf5b9c98112e", - "reference": "d13ef96d652d1b2a8f34f1760ba6bf5b9c98112e", + "url": "https://api.github.com/repos/larastan/larastan/zipball/ff3725291bc4c7e6032b5a54776e3e5104c86db9", + "reference": "ff3725291bc4c7e6032b5a54776e3e5104c86db9", "shasum": "" }, "require": { @@ -8462,7 +8462,7 @@ "illuminate/pipeline": "^11.44.2 || ^12.4.1", "illuminate/support": "^11.44.2 || ^12.4.1", "php": "^8.2", - "phpstan/phpstan": "^2.1.29" + "phpstan/phpstan": "^2.1.32" }, "require-dev": { "doctrine/coding-standard": "^13", @@ -8517,7 +8517,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v3.8.0" + "source": "https://github.com/larastan/larastan/tree/v3.8.1" }, "funding": [ { @@ -8525,7 +8525,7 @@ "type": "github" } ], - "time": "2025-10-27T23:09:14+00:00" + "time": "2025-12-11T16:37:35+00:00" }, { "name": "mockery/mockery", @@ -10372,26 +10372,26 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.13.5", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4" + "reference": "0525c73950de35ded110cffafb9892946d7771b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4", - "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0525c73950de35ded110cffafb9892946d7771b5", + "reference": "0525c73950de35ded110cffafb9892946d7771b5", "shasum": "" }, "require": { "ext-simplexml": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": ">=7.2.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + "phpunit/phpunit": "^8.4.0 || ^9.3.4 || ^10.5.32 || 11.3.3 - 11.5.28 || ^11.5.31" }, "bin": [ "bin/phpcbf", @@ -10416,7 +10416,7 @@ "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "description": "PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.", "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", @@ -10447,7 +10447,7 @@ "type": "thanks_dev" } ], - "time": "2025-11-04T16:30:35+00:00" + "time": "2025-11-10T16:43:36+00:00" }, { "name": "ssddanbrown/asserthtml", diff --git a/tests/Activity/CommentSettingTest.php b/tests/Activity/CommentSettingTest.php index ad82d9b70..f8210114c 100644 --- a/tests/Activity/CommentSettingTest.php +++ b/tests/Activity/CommentSettingTest.php @@ -1,6 +1,6 @@ Date: Fri, 19 Dec 2025 15:15:23 +0000 Subject: [PATCH 45/51] Search: Fixed pagination not considering sub-paths For #5951 Added test to cover. --- app/Search/SearchController.php | 2 +- tests/Search/EntitySearchTest.php | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/Search/SearchController.php b/app/Search/SearchController.php index 2b9ea7974..8a6a5bbde 100644 --- a/app/Search/SearchController.php +++ b/app/Search/SearchController.php @@ -30,7 +30,7 @@ class SearchController extends Controller $results = $this->searchRunner->searchEntities($searchOpts, 'all', $page, $count); $formatter->format($results['results']->all(), $searchOpts); $paginator = new LengthAwarePaginator($results['results'], $results['total'], $count, $page); - $paginator->setPath('/search'); + $paginator->setPath(url('/search')); $paginator->appends($request->except('page')); $this->setPageTitle(trans('entities.search_for_term', ['term' => $fullSearchString])); diff --git a/tests/Search/EntitySearchTest.php b/tests/Search/EntitySearchTest.php index 8501b65c4..cb1149dd1 100644 --- a/tests/Search/EntitySearchTest.php +++ b/tests/Search/EntitySearchTest.php @@ -30,7 +30,15 @@ class EntitySearchTest extends TestCase public function test_search_shows_pagination() { $search = $this->asEditor()->get('/search?term=a'); - $this->withHtml($search)->assertLinkExists('/search?term=a&page=2', '2'); + $this->withHtml($search)->assertLinkExists(url('/search?term=a&page=2'), '2'); + } + + public function test_pagination_considers_sub_path_url_handling() + { + $this->runWithEnv(['APP_URL' => 'https://example.com/subpath'], function () { + $search = $this->asEditor()->get('https://example.com/search?term=a'); + $this->withHtml($search)->assertLinkExists('https://example.com/subpath/search?term=a&page=2', '2'); + }); } public function test_invalid_page_search() From d504b191434eaeec78aa59d7505c631b0ca20d20 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 20 Dec 2025 15:46:15 +0000 Subject: [PATCH 46/51] System CLI: Update to v0.4 - The init & update commands will now use download-vendor logic instead of using composer to install required PHP packages. - The init command will now use our source.bookstackapp.com git mirror instead of GitHub. - Updated depenancy PHP package versions. --- bookstack-system-cli | Bin 388792 -> 393659 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bookstack-system-cli b/bookstack-system-cli index c55c5a8a7840523d5de1a2b1ee74c13723e1eb6b..1a518e644e476e47c05bc8138c8a8bfd5b0784b4 100755 GIT binary patch literal 393659 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

b%oo;YMW{IwPIYg$h54kBfVvGu|g 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

V7yMCh?6t?#s>siUCbIG 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


;Lw*Q`J8buTK^KGD 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

i?J*v+UKGK;i5cUO%4=62nOs}paJ~= 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

~F!bIqA zQXt-d(tHyvMoe~4XD$8Am@^c3W&YIkz>$Pu|9f5?er1*?O?Cy-L_x#2vlnh)rP;r}05HJ2uvSizinUK%d&O9CjKHD**p_KanhS zjtw>W;^QG*uX=zNoZE{{29Y*t{?Dhe_%BaMK~xz1#+N^CWMf#EqCa?1b9ZY0!q*26 z-xI1Vt|ko)%A$%m|1KU;0UMf1*__%oip(tewC_|uhSx_tiblHsb43# zvlFJ7+MeK2af#(Vq)_MZfqJ@dU&i-Vp5*bQSUpQ0T$kgx^$BWPukn@?XLy(d(PS6)0tMIvF(q|RB{;K3HG3EP#qF{joe z15g56urxeLdQa-~HBu{!9(j)J=KDASY=N3pTK{|E%eV2TGT4H-VfvKo(sY6nxihIW zIrlwg(tDhzn%Gz2r##pnKYC>b8Rgx$U`Iu6ypiTU3S)^m5i#+K4ay|dr!b5r(x+K} zmV1MY2%qjiQjPn}3E@g_>T&lTM%6Sm1RS6EfKOjlpn zDQ?)AeWIXuy;v&v8l8KOi~IhSvnx`I01;^%Ek8YcA~*5*P5DszdIRyM%IRETcX!lv zR$|#|Nh{WIQ9-qCOLg=|DF*(#_jsH$f8KVR+*Cf;@2@LGbFC?bm1mL8l#M1j3tf&m z<55nx&dx($zx)%;CGC0tnmm+Ukl(ITYPP&-(A8#KD9qKtBIaPlprCohxVn=PFF;6u zx5~0&kIUVihcBAma)H5XV9{V-rPEx$yK1{uYCbn1hUX3GS3epaoy(hf2iYUIgUXhV zo9pv0aYBR?8nQ^KJ={_!I>fZ2wFVJ`OnqE+bzxF|?R=9VUwMQXdyd;mx)0C2D$$ zpDksOHi@f~mOI<6z4>W*t<L@3Q#2>H6*ZdX!n&%hYr9 zwso$(Yc%By#YdIQ-)?D#U#_ht(5OP{n{UJ_4D|VzoP`ABU8bE%Jn>dp-I{zCyx+O& zUY1`Uc)&Yeye<_ixhQu3xg5E2<>PIva8%@d9slh^e*J-YH2U^uw#nVYjrSAM#c2oT zzuWIhrdZI7sg^F|`QG)MhANCfk4aB$qS&(Xyk0x)rEDGZfHN4I*3WypUqpT#-;@)Z zj3K~N?EbrbbZPFGTQUUg82hIG)BUvj4PtZUqs8K3RD{b@zV4jwJR=oPqPwO(l!tB3)!zDWkE=acc8MN=>k?BMTm5Luhl_DL$64f2KBR zvAYqUdM3p7VwpWZMJoyfwSf!%rsxl;Xf(Ls$A9u~lV7kZc_JI_$>~M9CoX4~P(gq6O2xUW zbC9nBo5QBN+wb`0T+g~U$h+RhnlQITULI0WSD-Qg<9t9&r&tg29Y*W0U@9a}4ouq#)& zl&p2T#Qs^W8`2@c6V#m@D_DMpt>jQeALXC~FKM3JykNd87Y-}JT7UT-xg%Q-&rhJ0 zT6vRMesu!rh!V!iag8vV;`NVi)?KM04}2_*xM$V;5r|8B8J>YDS#cwt^1Fc~GKYC5 zx%I^U&s+Bpz4myd)L^xE9ZKTCyy0q zxI8fbt*M9Q9w~+5-)mJzS`#@&{(Z(l!J6d;Yrt=Z)Zwg0g&#QG;?j}Rf#0$tA!Wc- z;k}bFhS_N&c>NrvVdQ{gg-x;P#}~rDMX$$FiTr&w?$KS}Qc5R!t&ijQ#Ji39&pYgV zI!f_3#dTP)!1RV0`u9#S9^x7oON+E{{Vf6X(vA(i9jfhl9XfKg$9-QDp<@3f1C09! z-zv4=bj!KeT`zvwP9McdYEqj#RE5V_iSOvvWgIh<>-ppxMDBS)z9F`Tk)d`nzr~hs zlbtqgE;Hgy*7&2DUML+r)yO2^rjidLGGTUpdi;9mI&4uwO(Ff%Z3T-d zxI1>hD0-DnQc;aK;hRk3wYu#H3M)^)R;7?p+>#l z$d6YVEC-;Wto6FxBh@j^)n!{i6W`b-81x0`qFgch9juU$&Al;boDC2}Su=FA@ErPs z+tGD|{#=~VFL0TJ8ov@stgAT?Rt(ob+Wn0ZW<3NV1z@4DQnh$y7z_tEpkU*62pyGU z<}*rb$9#u+bf_1JsV1`%>4dpMh_q=m7MTzD40jUU%n`Vq3OUxaZOfpPYqFX^KWyd= zlel6Gv5UZB+!jY0j0Sk1lxquPXSEBhPTqkv0=IbM@@ZV3XO3O2nT0J}JtJyL51s%V7DXp9BTn z)pH<&O=+txAbeTRRU0SR`35_75lhdtdEK=X(W38L%(qI(ttjvd)UE5T=~Rx|ozu2< zP3($D7JU{VdI$({GExbqRjVjtk5(2Y%6CaTl!FMXKcf7bS{k3sbOL>s z!y4EngPnV!L49C(9HgbqAj@-7!KdQZYY3F$(q_cej%LKqCkgt3oh4U>F&fyLu*upz2HEK}0^vLS1(^~R6BFsT<%cK^CA=gf zDRvoAJNz}I*dO)}z#4f8Fy?pvoJhx+$rD|05SHc}oX}}Z&)e5cH(+q(kN z$0d0D($^(?`cASHN&NlyDZH&CXvGIONaxd}O6V zcjt!p>jf$EyPd3eIMe}(bUz?YYs9k4Fk*kRQTB6S=~KNTtrO)6Z^kg1-GTG#H!Wo> zC|@xdM4KdeQ;1e(_Kj`bwJT68qyRdFpdRg2%*pRuU4sjaKOWSwB@5)nSs{4C`5NfFf zhIw>1Q)BAlLL1A{LoFCSCbO4@oU__UU^w-TC*w`3T~xZ%Pot6B{4g`uYhy;X=%e0F z9(SztP!AYsCM^A3YhZHzST##@!9^HgJGH2R=iI#lpJ6TMZEE!PlecN0;*7Jl4T=Q= zujY`=H1?z#-#1&ET88|xt9Q!_-U?^w^HNQLm3>C42B%Nuz)N<<{*%%G7xBj1 zDuqyN|8xx{c*hR{IQ?Ol&SbPR>_9OFQQ!fE7f_%81q)ELz8DU3WTmC=OfQCa%EcWH z3o}rZhj-f0Vx=t%;9(;f4ofjm9ENxLz?}U2yfeLlbU2KtGhG95r{@DJ?U#UUE%Yx| z)Eec}28}aQHO_3z9>>_ipL2npZ?9mat3oNS86*VuMKbWyuA@>1rILd6{X3DSr_)} zq{0|xBlb{t8czN8FNqkf~eFBaT!mi9+CRy=2gdN7_McKB=wtoH+f{k zp8^N2A6K1~np=0q1rqgdN)g_l^N3WW--a7>1}r_A2mHx|HOIo zpcBV%7gOG_FSg#0m;fhmN3%azE%PHzv+O70) z2(4xc=x3xhD||a@PjK5y8{Vm_Io6GQoOVOSNiMuQe$5mJ>b0I4`hqrPU)TBjSL}}% ze=G&&mxb83Un84Y>CXDj4A)}+8HF&-vV^pnL2D2DcUG4z zZ-$f=^3~hToB_GFx7 zmFrx0o7B`wj?I0S#TJtC#MgUrDrAa^^2BKLxNKwhC5T<@Vn=#yG3$2NOj=C_aeV6f zc@i}?ZwC2Ng9g}Vt0Bz zH8mqbnaA5=nKq9jUM$s~X}+|pL(TCvj~-qu?HQJ5cAK6l>O1bGCt> ztPOKE`NE;#$i==qu*fkmKkPzl$8J|$Ixz1}fYsC=X#?G^QJadIh;r(bcDo) zs%9vXZe%Bu3)|9(@``oD+eUn9!)R0nMsO>=S+7RI&7We8Os9z{kLAmjZ_Z9m|SWjjsG6^GSzK(ZXRs;93Lo}wA z%uHkjMo@Wum8SMHZUQ5nc6Mko?0XbTTzQQS?PuuQTC2T+` z_IqPkDhDBO#AoN6YE~04f>7%QCAHSjFTGBN0%pF!edLx=uFp2?Y=R>mK6N^qDTLF; zwbsrSArcu1AVG0uS`(9g{H|SM(+NH_-HJP|UWX`(d!db4=O=b*6HpBI3>Q_aBZ>OK z^J_*joC8V-Q?@U7|KuvkgkNp21k<*&9b-UiAuCLkTo1LbDV-raW~h`6J;`s6*hA2C3{mkK2JvZ5V2#{6 z;v)>9mDoa_@sHrcpP(A;W!01FsHD}?=qRNHI+quYi15r#?qp{$Se(z8;0^BLr!X z$hoXw3z-6+DwOpNV+(pripV*)V+|SBH$_bZo)k|sMtk?#5#)#J1Y*;xrl=xMI7a5T zd=cbEE5=R&*2~TgJk~2NPHexQhVhM_t&lj8|9%?8M?WDn;_h%G=!VuaLq%{8WFubl zj97x5wVska1*OaE6wD@vnI-nG4)S~+Cm55eX5@QFm`%#&gZOj? z@8~!rx-`Yb*s0QmIC?U}UUx!&|xm!P^)@U_SdxDENnP-s%bn zG#9`BA&AyM2x(>zg6aZN3O0q5 zRPxLP^njZR>4Ax35fHRQiXnt?YY0Ih=l>?4j6jOirq*+(wBU-nCB8yR3Ri^?@CyF+ zAp5t61T9F0wHioCofeQD0)A?_6?elGK?o>{e+lV-2{eBR@>&cpTpE)964)Sw`B~M5 z;cjoH;358{+1K@usndU^dl&WJO#8uLQhZV0ME7{ReEh1w`x8(YnP1df!b@Ld@}7Ak zp6R7_t%Q;tOQi7LzmZPny+@&v&5*!eF+UcIxvr|ogm|FuKR(fK?yY9x2wz|EKyPjB z!o|etV+u?9s6ZjzQbTWTI>AWyv7lt@d+I?gFQ~)DRInhD>9*7RS$nHM4cu`;Z~dBu zi}}Walr3~G2kmUOiYd(8&gl2fM*<2wk{X)otR6O|uL7AYvYpA#=XV9{c%-)!l*eN# z)Z{}mO#j&|+<0&+xgY6oPnf-ql^1@@Z7fi_55iDQH#tzwrl`Bs z(+J`E$*w&2llGy2ifmzl3VV15g?yU=1$*WM?X1y`DeQX*%202|7Ph;zf_7GG$I_@z zU93!9tVvz0N?oi=wbB}?E!}Yif68{QN_Q62obDx^!u0YQ#j_@KD2zFh_THq*1x4;) zV*%BaIWwC9M-o0qsvIi82=xcx*)XB=VGgK205xZ-Tm(?}0&gVXJ!#Gy`#M!FA3#mY z@8YAXaKiy^Aj*dkX-1Vd*m4}DJu_uJT%|o+ zWj%GJJ#}S0scIjX7`~G*eAi|8F2L};E^)3cR-dRJXFU%jw4>F?`jF@cL za*~lfanB?_42V#E--_9viDS!aG+r`i=CS5TB4$gKb3AkQ2dXX5`D;UtBzeLS>bH_k z12q5|aU=}`=mcQPgiaM$Dn2 z)(i=Hi`P7fuT#=x(?%&0*#Ne36i8$TM?2o|cb&!L?>Q``6Xnff>4E({+eexAk$S3} zc}Y`26LOZ5&bVK#B!$1eqRgJE!BV#DMWo}jf=x(ehmjp2f-WcrVv7%5fE(eb8V=m3 zfm_u+qbh@>%GdWlHS-%}KMOBQGfr1xYu95hR$?#KU@ul-FLGr_e6!%31!w8^)WzD= z#p+Zm?U6&Gkpj=iok?#=r~Q}-ou*ZDW)iMcIjM-9Nw8)6V9PFIVl{Zd*+j|)BkSZ3 z4PE|&p4ApMK@k)XFDbmAfThf91Dh~P*qZMo$+F)vA=hMZ5yuRm9Dr2-T5iRb6L{n| z%7%61$4cF$#!7u0?57m4*^13%JChzG^vK_h;GaB~B;7v%LIebkGWsGHxDE7Ewpwq+ z?gUW5lmIm+Wwi5hKjm`enMVEDT;3CDV&)h1G5A$#{u&^m2csPIH9+|{1uqxlYyjejp?utWTm_Y!Ucp42(YI> zbZ-W-8g1i*oVuxeO*?^102!e2g%_Q1XRQ7(6{E>%*#8Vx+t zjv<p_;OutH_?JR>=?Zf|TE_`=uEd!G(-Q z6lOAEX2t&{l5oTXA!4UWr%B$R-<+9)^SXVwN*H2~iOI0CrfBF*4P9nu4#6$wU6 zzz2D%*g<$e{+$lOub4A?E(7T{XKn^ptS)e625w2fjRClUD8ExDbm~9_HX0*k+9P1J z(HgPQ9I??J;Vj$HQgh-{b81#|@>FxODQWc1Yt*Tj&?z4?XU2P-I&?`ivfXfzBisWZ zXX+3d{>V0bT$ z2Y{XC%<90J2%rgoKL7;QX#k%CK3Jk9P9O;rI<^bu%x}OwDGiuM2u8MdK#Ex)Z-6Tb za0TnN6bIbq&6(@L{aYKjl>xV3z!WmQ)HJ;W#=_~PFVn>8952lOzECve=5&-#FJ(^a zELz%vi*MD6Bk33{Y-q&J*&j)#+sX+YK@cjMaAX_o>RBLAk>@pffh~LqHVFf)2Dntu z@_-uLLLa~_R1oZr67UAM&|7c|6$Isu0oeE{M;L63K5Oa_UgXXhHHZPK)MrZ_QU?(9 z_YgFp;{#q{e8CP2nQ$cSYJG(PyLt4g zwnUfA%UP{~nk|(f0;qd|dJ}kqipecF)TIeVa3%qa0MLp(vEbatwc% zmsf%)8o+HTat9f$q|v3M5sV5YjZ7ttHYJUP(>g!TUzd2JG zu0UcjNv9t^d5z%py&TdDI72@_11gcc#tm@qWi#baj{tc?ftnJiRe&0t(+;5fWUwGK zKn<$>umB(+JK~u5gMDEG;Tb`ppvWI_6U0f`i8~FjWgP0IV4XmJKafC>{0W^?us05a z=H-Y_H_NGrs9U~vVI42gu_;(T1?D3XZ;(;LgmX)WcTl3greF;VEJf7WAftszR*864pVFK1gx$Iq);$@J2R$7u=i`MP+y(64uR+&U|ThWmE3n&IClp zO#`i{}o|fv^Lq2I2(7nXFMX44o=C zaZlJW7@I`8TsimIz<<>0bQAtt$keRhi7hkQB3x)44`g^ zr{hSIs7Du&$^R6QU-@6s{sbNWyS9Hb|2pX*C;Yqg|7!kQIuSHzEdbcHAg!SQx`oIn zj=2ak77wChxiG?C8Ib*ZRJ~J!tR^y~?;OxKJ*4kousFry)|2YFYWRuJ2gr#cK*)h4 zyFffCO2_@DcySsf~vK`1=lV~D36_(n*uw@24Bnl+L zH!+Z|*V^daW?gPccb!%Vr9Vt0JhKm@vIt}m0YSZZ5;QZN03s|jiEePVC8cR8?YU+$i>Wmud zR#Q1%6FFWRIbI_rbv&hd)4J4 zbuZ4Hbs2(4n~xS|F9{wsrfAX1{9&g?kTQMhqexJ-7E8Fj*1>zMQLENhU14SQ65Q1; zazSr@Hc@uV9yQslQM=JfaPyT}Z4U_B>Y!}F7iE!Prl8c^UkWpQl=8wDd{cswUuAE?85j@(>R2Xl> z4>=VYhvON&IlN;VLI15OS$CTMZyR{WT7v#zQ!29KX2ZwDU+*#5s+pW53GT?T|&Mf)1m9EHDDMo zs)6yAWylU!%T}_0OPEBaE5O+k(Skm#fmyJCtN95W%luNcpgC(Huk7ZKN1_FtQ3vxMJZ`~|{Zmc2 zNUOG^)f? zMe4-95mrpsq{}w2f_yWGKvPTK)3yk?_A;KKori&?SjO~&H^n7ev!{nGb zmk1@R%4FezO}yma#WbEdHwn$I&fF#0P!-d6K$Jc3=p>ge+buyiteH8_72BinY}>)? zwGz;GL)0}JlS5yBtk`8C2}tm4TgR+fIm#YTK z?4if7S!iwL?e9ult}K$7uK!rl#?Y+{&*u%9tOfZ>gGc_WQ+P6P!h$$`08SE+NS`2) z*g&MeIeI{jf1F^nZ>sp{c`xutL_!~{7U%=e|Cp$IIq$KwZn=s@KYm-_4 zQGFr79KH_k;-4~A+*fIt>d9M<-J9rOk3Cu6P$z7v%?6+G&(vVH9Q*i)BCfb~Y1)lJ zz)T{_iW@%%1?(}OZF6qdeN>)p31M_CJ;0=;h@JO}T%w{UZSl?uh%49GN99<+c^e%A z810Zd?~jfPgV(&TjjAd{+*ki#g|2yLSzjYBlM!NzZe(2j2#WFO)2h4FYLl2r(-nS^mNBx}MHn0UuoZ*( zuRgf(@g&&s;Uu{6es$RK9(B0!4kg5FkE|EMn}XDSh2C0FX!j@3+eJ^{sjR*QF}hY= ztS>^2&lyIA%^7m_KI;?RbRwsHj?zUUultG?E|Zk+WP7vfrd4Z=XNxza5Et*Xa_#Z6 zePl8sMlC~_BvaLp94qeG5dk~8GYs=~CGT(SGIWh_y}2)MzBle&=Rp-(Q#J$yyXr^; z5be>LY>#G|rpB(Ijs1CRBil%ogiVn_5;0eZp8Q$l^CyPzUit~szVz{L&?#G}R(1i$ zLye*K94Tcq!S7`DRd)==7<;;SDY+Uq*?tGhox(lW$VmH?r=o*hk2qkHXwo`<=11>H zLQgwe-Sz%62CCmj&1lS6zjnPPmc4W1M&w;~!YD&-KSd&Ss4Q4}f+NQ~d(V;Jb>V$( z9o2;kEuu0KitnXAZ8s1+1swTbtxz?7{_LF4PFZs)@Sf+bp@mC$>)M7RfxlImPuZu6 zI<#V(c7$jBZE(L_i_W(xNphCpZg#6HtF2T;Frq#^(t5Z&WHj+U#^0ol5?rHX#HuKP zbq-#=XDCNPA|gLQr>B9%#+INEjAJaYnvX2dT~HL?YWJ+)XQe52U^zS*{WHolzfCvh z*n39;PvSm29w^G>KbqbQr6$r(#dxi4GLmV!5oTu`-BTcl%_e_KSl}OwHi?*k&itOU z@$^zrY3}ec)W=dc_-*hEnRT06!vKtZe1If*B&|_i>EfB+j5GOc+|Sb>|KCYwGsV*K&*Mws3FiDFbMuJLbU%n{?T z=7~SnkxNE84Q5{z-`l1A`0nlIb3qC(o%2m{;`!5S+mXv% zy^%}b49ml`jnv1X6kFQx_7|QAKX|R)KA*2!y~Xit`6820zX{%V^9OXl5=I{Pz_k5_ zL^5e2&Am(#!){M+*;A~NCmBh|X=yraE|~|9Mp*kxZMnk9Cs5zB>=DE4_(*ZD#XY_8 zZPKLk^~yo(tWm|X_g;UxS$R&5iQBVzgJEo@98YJIwa7B+ShaS|8OOsiHu2rVUw`}r9^vC*w~?!)Y`p4~{cFuN zs@F`?Rdn)j#y+Wxh*hDZ%4k%+!p^4&6E!pra$K>6P!Qb zrgwBA_4#saZEi1rZrjr0P{C$#IKBYOSKKLlKc(MGlL}Kzt=RZ5o{6yew+pd!{EXl z>=l!Tl*Kb;o33LunZxWBm?rFxF>;S!O|rel!}NH4wk+)cjqn-s!5P8RmVzCg zlGaximnTVnFL}9P`%}-8fN)ZZnU6{k6|Z=vhc@Q4Nir0hNV z8H35*^5---vlXV$_4VDSp}#vZ4(HxY!XNYT=Y?y<`qdRwS3w*HlnCT?2P-Qt9mJnGCb_9aPbj-XC~6K9oasgPOO$KDC`58?T(OIex- z4t!R6@$Ur&7hs;|aaLvm;0p&mzG%$gO}-lOfJ;G-`d;!bz*yvW(Lk(yZa>p&!YRS7 z7FLpMXhrs~L(fk#5{7f=2n_!);l&8N_@H5b`?b~lYE5Z!D5ufRB+0CkC6j}8+wK*S z-i3o6lf-1Y)YoRZFYjb|(S+V8M@q|~e7}l9zhcp(^||x8u~QK8eySfRI2Di!Y%U9= zjY`jcL%Y}Ruy}J+&?zAI{Au~%dLVa|&mt`wDJa#(@p@9+qEuRifrmoq`H3UNy3$Bk z3zfyd=Xw7y+1hJ_;t>l?GE&XV19OWMZnm+ybnBPs#>m_%=E0X%S&wc6SX=Qa><#VW=sgrtB6=!?r=wlOSc|!fd`p)ra zeajZU%s5b%E64bJuq646zN96JuHxrlTFe>E*OpgwjSX=_uS!%*IP+T280_8-HfNtP z=d=tl+$P73(OY4eFqO4nygH5_ybm}dFZb$y6WUDny)Zt@uq zN+%-hPkUb2qImlzD6w%!s?#_RJUzY#IYyw}|OVV%)InR6!{A z!n{*u6RU#88Ld;uT=TS zCvwC-1DzErH=NIux=%RZ_Q~>}$BcH{vE4ACj8U90qK%22@FR_(#Ds~_Ahb)ZU!%4l zc89-cLG2oXZ5bBhf}dw>`P@;$(SqK2K-I$Bk;dIJAi|8?h*}zA$O&f`c)|s3cYeYQ ze_Rz4Ei8y;MXn*&r3Jmxx9*KDD84QRk8DVnzh;CfNV8@{D)?jVEv}%{niF9lIVugC zM#oPF{)}#R75@0nYD50CE@ezHB-HIw9n>)s2kHO@3;vf~=Q8~I9rncCJS~_%PzYM^ zd&6I~yy%fbYDwsmMy1qjA?_TqXu?KXdrN6>=XYxSyywC4b+C9{u+ zttIw{2CR`q3qe@HdvFV&8B#BX^Xs6V$G zpUkp8rgjyHc%^m}dC2#%X8c&CxX~ue3O>=q&cZqIAkNxlef~op-WOx@_>~t{4<3?N zY+n+aSIQ4-*lG(eoGx`4ulF6Z4qh4EZ&bYEJ9Y4#Ug@B1Si-2E-*AQ4Ro^fN98V@= z7z&2n!j%7TUyu69889bt!s5NS9iA zt)y=&%%+L3E+w@hgQql9BXOqE94<{2TXEjonM^GjUb@OgB22rBM($4Yv0W;vwGycu z7fySUU+Ss0sw+Qt;Ea8HEH!;ka4F&r{*x%lX`qmWAzG6(?`w&S_el`V#s|m6*32c1 zLf7FxO9xt}?Y39<@#^;(+J*QRru}`Sq3&O(wK1;dF0EF54i~D`eUIkN_=(O1dcExI zntcuz&2-u)%Dv(BvixUf7c2Dd?~)j*U$@p>)_PZ0xEtx)P99&?v#`Ja6>gWqXH>@V zsf(ZXT+(LmkhGfbJ{s+6;xlW`NOe2X&{OFoTI;s2(9czpsJE@&QEw5h4znqrc#R^! zbA?H)m%sb0nl`PPH9eXBY3qYsH3~RpTRXJ5XiM9;NX|U`{S-AI8E@_TBH0@I{?;h+ zkGoagzl#rg2BJ292~z^J#&@?O2mnATP1I;}^tr6cwe zE2F!US9XaRK`up8(yp>yLhc`9@pj!Uy`{d&FZ$xYbh#qs6XYNDGp@7vMNt-MJgfN9 zigvHH&E%%h_<5&7Y1vjKv<>@6Wji)nXj@<5l8tdR+ma@Xt}R{Ob)r~IdR%y38diw1 z#8kJ8t4cm!Ec3=r3-+oe7t?7~yxC7h3>%Bq7IP+oZc9q&g#j(ML}}#(lM7?E4!1ZH zZJvSLtGl*I)|^5+9^z%L0iRg#WjW{`4vuq{w5b z!sHl=y+gC1w3s>NjLsde(al!O7AOnE`7@kstW-FV8~#GYWtPtAlNP#c+pk}*>5doP z?{|qU3tc>L+rC^xExv9(QhBbtZOOWVptb+f#U8jbX_rJS5NhI`#cL8#V*{vzoRPGerUW)@aSpzW1oyupv;Qb+s| zD+>hnJU3@Gx$x=9md;a^>K`-Me>geciu##wIJek0 z5;Edd-ZS9}SjcW6o_;slLbtK>M1F^hoAJiQPV)PVpxEZS7kQTI*_(Cs-mOmu&pg|2 zKl+aNO-8T}{T~2=Kz+Z-E{~J*dbemEUBt3gm2_?nmp|YuX2$K+v`sfnd%AQs^)qKZ z0$RM5mn(9JXoc)gm96z1VLh1)h{J~Hb@E-MZ0santFlL!V|8ql4@G{K7{p1_28ONY zAk3(g#wOLMzUbw}Xe(_0Q=QAq%0xe`NnXe8E0wAYU-lBhKTY!ib!UfmlIfJ#%O2fz z%OlWc+ioJ7^GkXh>xZ=T#_x7Ze9eZz5J=*^?v9QUk>YuCO)`yIO5L7F!e1^^+qPx; z>+RIOeVP7xL+#!E;*|X6$%1 z(t2KKtJ|-$dAfUVYu&$h|JQ8?+V|2DQ7eD_fAv7?>Xdas?Rqwxkv;2u(2U4)GS6OW zb8Mrcy~ySzNq?pd5C3=eu15Bolx^Oi-J$td?@8*U@`=g1s9#m>FSgcuXe*|n@zv)Y zn|29|bK7Q>t4N-v``V?|c#+kmzvyymk5&^__12KNEa&pj6)|u*iR{wvtICu%N{O2b zkpa3<-7+Yb2ZC{oST_jlf8M{u49@Pu+%RWsUE7P%BI^{ z3ewi0Rx4)U?x|*8YI^D%iET$%vpiZ#G$3k7WR|LI`&(_&ax<9dZlF#bAK8Ldts5y; zSK|5|cU_EHG1}5Xx+VP+685H;N!cVV`dl=#`-Fc`$8FSd@d8gg+&p_{F9k$?T6=%5 zJ2uT2B2VTyuQ08XX*AQOcrKd2*@>->eU0QLQ-Y5Z7fYWD7=bSl4=?h~+ILOWUpw%e z$P!o?Wd=pFm$zIN?W==kQ$nOr113^ky2p}T6(=(DyeOGx+sk9Ml1}9+Q+bX{yet3F(W2<1h>pjm&>HvhBnOl z_gvFf%TSNA^ajYOi)mq>S~+S=(Eg}2Jb3JT`)Fr%nxgh#r$oFcJDIk6%rmZ)+o=*( zDdSh6mP$q?epMd(Y7>R(hcw;Z6c1_i@Gc>1wYGAsZPGY{sG?R<<3A#4q@McGUgpY% zvscv#oyv&c(5$l2sj3j0;BSClwL{Qqn|>O#PUT3QOk0sTO9(dYt(1}c%9`=zhUJET z1FcnEZ`v>veb2ABlh8;i1awbTDcu-NTcnjDU{fa{MIpH%)`IQDPFXhfzwah|w3}Mu zheV3(+#H{K?w5S=QO44;IwuyKz&vIOB9dsd`;SH)+(m zI<>x5HAr(!d9E$d)x%ZyY}Gkh*|JK1iLe{RO!L(tJ+z@ATG5T%2Tr$srR)kC<8*sU zChX{)asa*XcF=likl!~>?O#a3%i+b|UUo?me%RU<(WuzdtJ#!z`kgCXc7CLvXB za?@CI?Z|cp8SvkComVMzBz&N&6eV#_?m5Tzk?iheY36yG>mIDbDCGtcE)eLPF>OI5 zU{i$4VwNab&|371O>u+34(~?+9I^>V3Fpe9j5uo8P0E!org~;0QnSxB{!r;MT#^d` zk;)3qr>O-dV-P$-X^2=RO3#?(N`{aLWVH61<4yV8x08e6+2zoMDplH)S-4>aVs5PF zliXqqH{7Q54>>R@*AWs?Tq@r5yxg>2uFsVyD2li~kyczEX_lopL!fBcj_2_N{C7z% zBd27Hw?tt4wP}qS6W!Qkg4?wqfIAQ9*MQ+U$am`G6b98fB$pNj0_BvXeu59dHZZMO zai1_j3hzLp&9#KAm9@RSBx)P34i)UcgZEHr$6LyWaoUAqF~EeD0L6}WgWg*)B9`ucM;yzGkD;zHV-9zhR| z_b>Vct#BcH4Cc=Non+cW&7v1mTtoc5Cc`N!jHNCKVXsWG;eW8Xwnc`N?j@VoAXJhV zw1n9T;r&2Tbh?(*EmR>DL$4BPRMmACJeK7XQPAkBZ=A69rqVz~<>>2@>h1=fDbvvl z4zhHknk9)C3w*v8WS&;~Hb+Ub)Oows5G^?FZ3RHP!gm#n`9uR@HfL z-+DdLx}vS4%D;Y8Qq|1DXcsgPhQ`+3MUs!-8L_=Lo6MG$)_+(cKalfDz{n^FDS^K;FX1E}5k8^h?0!0mqk9cQAeKyL-y(Yu50@mUv92`c%-1cQ{* zA-N6s1fBo~EKU=j!a_qq@%qwIOKSGr$myx0aStR{yxyz4Pe| zsmnjTi#Sb2fOKn7(09>|7Y4)qWSmZ6LiS)`1gB}lgDEutL4!iXr*xK320)B>gb6rQ zqBnrgp3jLt@$fHAm{#J)C_o93Asqz~W#n&!-_PJLKrQF9mx(*L=ahAXILRyy#1f#n zapKJ;bP93~Q-)L9Ynd(ip~n~+6KXG`0r3+a6J*vyI&oli0vO5d1Z)W>hw(V@$$gxH zeqo%)h%=aiMWDpUFs3YWfE_PE#Bs_66um?IH(nATPyq9&7cyZIn%&o4$|qol$G|mE zM}AG{HT>D0z2^SpHcqa!!DchxrsJ5r^`>z|wkPm;f*)T;G##yt5^dVA`6P*N87W(Z zu)JLULL&R>t5j^x7b8m7-XNqM()$OCqcaNJgu#DsXzBA3fuC7A0Dl2ZM2wS@)9$bR zll}Aa?&)#=!|9vuDcK>t^5|9#=vnvN0?S6~Kt3EE;+%v1lk< zW5u&(G&QoSdZ^h=AeQzeHB0$kge zhd;pxr)4YwLyU$adlvpEWEZXLOAt`&W_7pU=donlZEqFkKM)EUK-|56^#zSCuKn_5 z0nLjYLk5P)TepJ=qRWSCVJ9buErIuNf6+0Cv?5A}kY44ig2`sK>Wv_w zD=YXCz-LUz8nQzMaU6n~Mo9H8pak)dVv}who5u+UK7>ry>(zbHI4$u7%%0AM< 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

  • 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 literal 388792 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
    v-kTbIIbhJO7chBtK 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%0AjV^teeOcDr@^)j;?EYfj60 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%0AID&K%;+!y{2)xip(2ms4VQQ-V^G+ro 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 z zq5(aaLl}+^@LI(_(Nm8%a?SgE*4^sV_5SG;c!B&8nk3+x+IvL~(I^vn4)X@=!Tm(d z=OgZH)Pct>o7UQ(cD^|NgONK_7`+9BTX?PCk*$nSltj^P%mHp=>{bJq_)Pm|U?ePxPCFa7jJ@kzU8dsAwB+QG2C#^5WG1yz?R z8drvP&E96PMp`s+j)72g7(Nn;;=O|1_lvyxPe$#7@J~j!P24*ebx+Qa(E$iQ84lol zI4o~ge}B9?kmukxrBz*Tqc{|O=U3d7xX>0Dvg-yv71Gef1!EA3yp%LaH4q*F zqakvIKzS@=Ml==Ng`6Q#2u~FECT>0(PwrQfipo@}Q=(x{6hu^MNwIvn)&73w3{v#5*~4%B8P9O$aTrpuB33e`?a`9GD6v*VP{szh*IE@EyFP~ zw$dd->!$?(kQZAobhi_zC$IlH~{I^-d8 zjk1sV^5ETdAjTzq#C$UK-Y$noNlG|rYJMfMVzDEPNx}4y;`fdY@~d-RFxELDj3(S1 zC}i>Zd2bRuk&I1^ua8*T>g##N1rMua5Co>JvIzCywW5t0x;~saPKUF4bSlLjIPT#+lMhrbDcAA9_EJ3ZDntSmaG^mJ zc`l@`KYqcO*i)WBllB~Z`%mTDL)!(Kdb+7ns9SyO zW+od4K7E2e{8ns$&s1sk8t68&YaRT*y6}$_JOM)uPlOdXgukm7WQEeO?a2RFc4tVh z%6q37{b9CF$WSJDG-fM!oY#Cu&XcGM$&YgPIL#ecJ*RMsS{rWZ1+V!f%>n)m_h%^`_ZBd#`klB>%1Yx=}G@8s(rj z`bJl`4{i?-a~PcLuyoAzM0sGi%+|qJojcc)vljYLXdpWIE)6*Tcj9>3n6kZI(du2Uyu{|LfA#xSKa;H z>gM6;X0fU*ZS;n{FWAOn8aK1i7W-%;Y*|ud)<6idt&Pu}V?R;JKD;mLRx)K_V(V7I zMG|$tC}q-%&QmRK2?j5d?{G_O`=EH7sM$inux8SyE9U6qCba0Y4AqwuLFRr zap#TDt&)^k2`2;b5xsCnV&0?}(9ax}<#>J$!o_qB)_kIBtLSLHoRekl*Q@t;eE%}M_uBA@8VoyV#W2)lpA|yE}~2yUi^2WEpC`| zMwEKgv>zQ*dgK(j7$cQIbRthu&QUXyF@7aJH15mi&F#1C?Gn{m`bdrg8Tw?dshgd9 z9FmXl6 zc!*NWb&h^Ys&vFVsmsOi9zTAr8uW}doRo`SUjB=noSeTwtE*;x3QyrL?OI!J8^;xX z=dU zpif4D0!5MbH_(4UzoeMi+w6UprXPZaASCYWIp3bk%sI1j&d$C)vTL=Khc$Qzy%FIs zAQlF~!A6b%HUKfga5Wtd7@dNRj2kq>%QaB+b)x|%s82A3=S*N~5bVItK#d%5muJ~v z<2{f5ggFXsFtIE!m_2pKa3lax6D(q2$}tc+V9po`!e|q03nPxMj8xlj~tF1g#_Bz4? zLNQmmb1}6rhXHc{K@at=*M63k=5u#JLK*X|;W5SM!=ydE|Z9nQqnO16sg*bO5 zzmmGtKCb})*bccxLh9!bI)smGWSWEyyCdYlE-b-PCzWi(9P(R61+qSw2u@6V$Q%

    $7LKWyQh*^R991lu^Ul6mB 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%0Do}4KjwXKhN6SH$uayIMXA85WH=x%Y>FopN= z3^Ahp$V$;oL8KH;Fh349mJ>fBE*88_-77aCm(4ENXbV#s()aRHPXXAUqyqXE+ae3) zx(HNnw<|;~mqhUdULS#IwRi4TPq|%p^9}sz`er#T1y}H~re|<|LF+gy8vt#2$e^c@ zAoYlg&T5vgT}-3VL+#n#-fYh50F%|E>yHA=^4brB3*5D5Kk9W*gi#f2Le0cDL)i7~ zuOhdy2ho)%{;cV3b(`59Fh%!)mD5l>gMQAV482?J2HO)cg!KZk>!vq97Dmin3x{iI z_fZ|64uMAlxl6`M@l4!Fx!5cnS0Btz=;4HZDPYFm1F2^ur$d+f>ZYLCF<30q{%c6y^MFF=9((7x*GSLfQQpluC1~hM z$@prP4UbWeFlcAy9lXJYl!sKE&OZZQ)zyVZ&im(e!zmH|a37H#r(6FQONEy=9-IMl zAFQfd_~VY&CYD5=x7hl@w~@l+AA85z^vSG4pxr5M*Mxq%f&Z$&o>2H4f31M7xAFu2 zNM;FyOo}KTg9;Oe6iLA#Wq7=lTL#R>=pAt6`hU3Z?o1Y-7)dJ?7LGM4Cpz<`9)Z_x zi$DZ{-;+uOMwl{{+KjI#KIgNL3Oycb2*3!Nrez7z65K>(GnENiJ>sE_g`n>O0TA>p zqYqXn^br092dSOXL)Koj4yWe$>n3gNO% UJ8jM22%WkIA9gZ0q#pkRq2I59uaO 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 Date: Sun, 21 Dec 2025 18:33:50 +0000 Subject: [PATCH 47/51] Mentions: Fixed some users not showing in mention selector --- resources/js/wysiwyg/ui/decorators/MentionDecorator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts b/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts index 84d664885..d6cafba43 100644 --- a/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts +++ b/resources/js/wysiwyg/ui/decorators/MentionDecorator.ts @@ -74,7 +74,7 @@ function handleUserListLoading(selectList: HTMLElement) { } const doc = htmlToDom(responseHtml); - const toInsert = doc.body.children; + const toInsert = [...doc.body.children]; for (const listEl of toInsert) { const adopted = window.document.adoptNode(listEl) as HTMLElement; selectList.appendChild(adopted); From 8fc9a2af4ea79ddf1d8b7558708fac1f3af6d1d2 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Tue, 23 Dec 2025 18:33:54 +0000 Subject: [PATCH 48/51] Lexical API: Updated docs to reflect public event usage --- dev/docs/wysiwyg-js-api.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md index e899aa0c8..4b4fafe56 100644 --- a/dev/docs/wysiwyg-js-api.md +++ b/dev/docs/wysiwyg-js-api.md @@ -26,6 +26,15 @@ via its properties: Each of these modules, and the relevant types used within, are documented in detail below. +The API object itself is provided via the [editor-wysiwyg::post-init](./javascript-public-events.md#editor-wysiwygpost-init) +JavaScript public event, so you can access it like so: + +```javascript +window.addEventListener('editor-wysiwyg::post-init', event => { + const {api} = event.detail; +}); +``` + --- ## UI Module From 3336e0c6ae961e7d1b0b3e09b2b550c63886afcc Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 24 Dec 2025 11:48:42 +0000 Subject: [PATCH 49/51] Deps: Updated PHP packages via composer --- composer.lock | 66 +++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/composer.lock b/composer.lock index cd4ba68c5..93bf172c6 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.368.2", + "version": "3.369.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "96397db9a3fd0b5e6b3c52e363b6a55831a93b1d" + "reference": "5e3f541e344d71f3b9591fe1d94d9576530fa795" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/96397db9a3fd0b5e6b3c52e363b6a55831a93b1d", - "reference": "96397db9a3fd0b5e6b3c52e363b6a55831a93b1d", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5e3f541e344d71f3b9591fe1d94d9576530fa795", + "reference": "5e3f541e344d71f3b9591fe1d94d9576530fa795", "shasum": "" }, "require": { @@ -153,9 +153,9 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.368.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.369.2" }, - "time": "2025-12-18T19:07:30+00:00" + "time": "2025-12-23T19:21:43+00:00" }, { "name": "bacon/bacon-qr-code", @@ -1596,16 +1596,16 @@ }, { "name": "intervention/image", - "version": "3.11.5", + "version": "3.11.6", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "76e96d3809d53dd8d597005634a733d4b2f6c2c3" + "reference": "5f6d27d9fd56312c47f347929e7ac15345c605a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/76e96d3809d53dd8d597005634a733d4b2f6c2c3", - "reference": "76e96d3809d53dd8d597005634a733d4b2f6c2c3", + "url": "https://api.github.com/repos/Intervention/image/zipball/5f6d27d9fd56312c47f347929e7ac15345c605a1", + "reference": "5f6d27d9fd56312c47f347929e7ac15345c605a1", "shasum": "" }, "require": { @@ -1652,7 +1652,7 @@ ], "support": { "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/3.11.5" + "source": "https://github.com/Intervention/image/tree/3.11.6" }, "funding": [ { @@ -1668,7 +1668,7 @@ "type": "ko_fi" } ], - "time": "2025-11-29T11:18:34+00:00" + "time": "2025-12-17T13:38:29+00:00" }, { "name": "knplabs/knp-snappy", @@ -1739,16 +1739,16 @@ }, { "name": "laravel/framework", - "version": "v12.43.1", + "version": "v12.44.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "195b893593a9298edee177c0844132ebaa02102f" + "reference": "592bbf1c036042958332eb98e3e8131b29102f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/195b893593a9298edee177c0844132ebaa02102f", - "reference": "195b893593a9298edee177c0844132ebaa02102f", + "url": "https://api.github.com/repos/laravel/framework/zipball/592bbf1c036042958332eb98e3e8131b29102f33", + "reference": "592bbf1c036042958332eb98e3e8131b29102f33", "shasum": "" }, "require": { @@ -1957,7 +1957,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-12-16T18:53:08+00:00" + "time": "2025-12-23T15:29:43+00:00" }, { "name": "laravel/prompts", @@ -3469,16 +3469,16 @@ }, { "name": "nette/utils", - "version": "v4.1.0", + "version": "v4.1.1", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", - "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", + "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", "shasum": "" }, "require": { @@ -3552,9 +3552,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.0" + "source": "https://github.com/nette/utils/tree/v4.1.1" }, - "time": "2025-12-01T17:49:23+00:00" + "time": "2025-12-22T12:14:32+00:00" }, { "name": "nikic/php-parser", @@ -8942,35 +8942,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.11", + "version": "11.0.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4" + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", - "reference": "4f7722aa9a7b76aa775e2d9d4e95d1ea16eeeef4", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.4.0", + "nikic/php-parser": "^5.7.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", "sebastian/code-unit-reverse-lookup": "^4.0.1", "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.0", + "sebastian/environment": "^7.2.1", "sebastian/lines-of-code": "^3.0.1", "sebastian/version": "^5.0.2", - "theseer/tokenizer": "^1.2.3" + "theseer/tokenizer": "^1.3.1" }, "require-dev": { - "phpunit/phpunit": "^11.5.2" + "phpunit/phpunit": "^11.5.46" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -9008,7 +9008,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.12" }, "funding": [ { @@ -9028,7 +9028,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T14:37:49+00:00" + "time": "2025-12-24T07:01:01+00:00" }, { "name": "phpunit/php-file-iterator", From d93354ff0ef5c384ed9db2b57df0dbc213ce3e7c Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 24 Dec 2025 11:51:37 +0000 Subject: [PATCH 50/51] Updated licenses and translation attribution pre v25.12 --- .github/translators.txt | 7 ++++ dev/licensing/js-library-licenses.txt | 47 +++++++++++++-------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/.github/translators.txt b/.github/translators.txt index 67eea4874..61a6697fc 100644 --- a/.github/translators.txt +++ b/.github/translators.txt @@ -512,3 +512,10 @@ David Olsen (dawin) :: Danish ltnzr :: French Frank Holler (holler.frank) :: German; German Informal Korab Arifi (korabidev) :: Albanian +Petr Husák (petrhusak) :: Czech +Bernardo Maia (bernardo.bmaia2) :: Portuguese, Brazilian +Amr (amr3k) :: Arabic +Tahsin Ahmed (tahsinahmed2012) :: Bengali +bojan_che :: Serbian (Cyrillic) +setiawan setiawan (culture.setiawan) :: Indonesian +Donald Mac Kenzie (kiuman) :: Norwegian Bokmal diff --git a/dev/licensing/js-library-licenses.txt b/dev/licensing/js-library-licenses.txt index 95acfa6af..d7ad4ecc8 100644 --- a/dev/licensing/js-library-licenses.txt +++ b/dev/licensing/js-library-licenses.txt @@ -1619,20 +1619,6 @@ Copyright: Copyright (c) 2015 Vitaly Puzrin. Source: markdown-it/linkify-it Link: markdown-it/linkify-it ----------- -livereload-js -License: MIT -License File: node_modules/livereload-js/LICENSE -Copyright: Copyright (c) 2010-2012 Andrey Tarantsov -Source: git://github.com/livereload/livereload-js.git -Link: https://github.com/livereload/livereload-js ------------ -livereload -License: MIT -License File: node_modules/livereload/LICENSE -Copyright: Copyright (c) 2010 Joshua Peek -Source: http://github.com/napcs/node-livereload.git -Link: http://github.com/napcs/node-livereload.git ------------ load-json-file License: MIT License File: node_modules/load-json-file/license @@ -1928,14 +1914,6 @@ Copyright: Copyright (c) George Zahariev Source: git://github.com/gkz/optionator.git Link: https://github.com/gkz/optionator ----------- -opts -License: BSD-2-Clause -License File: node_modules/opts/LICENSE.txt -Copyright: Copyright (c) 2010, Joey Mazzarelli -All rights reserved. -Source: github:khtdr/opts -Link: http://khtdr.com/opts ------------ own-keys License: MIT License File: node_modules/own-keys/LICENSE @@ -2318,9 +2296,9 @@ Link: https://github.com/ljharb/side-channel#readme signal-exit License: ISC License File: node_modules/signal-exit/LICENSE.txt -Copyright: Copyright (c) 2015, Contributors +Copyright: Copyright (c) 2015-2023 Benjamin Coe, Isaac Z. Schlueter, and Contributors Source: https://github.com/tapjs/signal-exit.git -Link: https://github.com/tapjs/signal-exit +Link: https://github.com/tapjs/signal-exit.git ----------- slash License: MIT @@ -3343,6 +3321,20 @@ Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**> Source: git+https://github.com/csstools/postcss-plugins.git Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-tokenizer#readme ----------- +@emnapi/core +License: MIT +License File: node_modules/@emnapi/core/LICENSE +Copyright: Copyright (c) 2021-present Toyobayashi +Source: git+https://github.com/toyobayashi/emnapi.git +Link: https://github.com/toyobayashi/emnapi#readme +----------- +@emnapi/runtime +License: MIT +License File: node_modules/@emnapi/runtime/LICENSE +Copyright: Copyright (c) 2021-present Toyobayashi +Source: git+https://github.com/toyobayashi/emnapi.git +Link: https://github.com/toyobayashi/emnapi#readme +----------- @esbuild/linux-x64 License: MIT Source: git+https://github.com/evanw/esbuild.git @@ -3396,7 +3388,7 @@ Link: https://eslint.org License: Apache-2.0 License File: node_modules/@eslint/object-schema/LICENSE Source: git+https://github.com/eslint/rewrite.git -Link: https://github.com/eslint/rewrite#readme +Link: https://github.com/eslint/rewrite/tree/main/packages/object-schema#readme ----------- @eslint/plugin-kit License: Apache-2.0 @@ -3792,6 +3784,11 @@ Copyright: Copyright (c) Microsoft Corporation. Source: https://github.com/tsconfig/bases.git Link: https://github.com/tsconfig/bases.git ----------- +@tybys/wasm-util +License: MIT +Source: https://github.com/toyobayashi/wasm-util.git +Link: https://github.com/toyobayashi/wasm-util.git +----------- @types/babel__core License: MIT License File: node_modules/@types/babel__core/LICENSE From 38d3697246a294d011461ceb9850bc45bcef61ce Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 24 Dec 2025 11:52:56 +0000 Subject: [PATCH 51/51] Updated translations with latest Crowdin changes (#5933) --- lang/ar/notifications.php | 2 ++ lang/ar/preferences.php | 1 + lang/ar/settings.php | 6 +++++- lang/bg/notifications.php | 2 ++ lang/bg/preferences.php | 1 + lang/bg/settings.php | 8 ++++++-- lang/bn/activities.php | 2 +- lang/bn/auth.php | 10 +++++----- lang/bn/notifications.php | 2 ++ lang/bn/preferences.php | 1 + lang/bn/settings.php | 8 ++++++-- lang/bs/notifications.php | 2 ++ lang/bs/preferences.php | 1 + lang/bs/settings.php | 8 ++++++-- lang/ca/notifications.php | 2 ++ lang/ca/preferences.php | 1 + lang/ca/settings.php | 8 ++++++-- lang/cs/notifications.php | 2 ++ lang/cs/preferences.php | 1 + lang/cs/settings.php | 8 ++++++-- lang/cy/notifications.php | 2 ++ lang/cy/preferences.php | 1 + lang/cy/settings.php | 8 ++++++-- lang/da/notifications.php | 2 ++ lang/da/preferences.php | 1 + lang/da/settings.php | 8 ++++++-- lang/de/notifications.php | 2 ++ lang/de/preferences.php | 1 + lang/de/settings.php | 8 ++++++-- lang/de_informal/notifications.php | 2 ++ lang/de_informal/preferences.php | 1 + lang/de_informal/settings.php | 8 ++++++-- lang/el/notifications.php | 2 ++ lang/el/preferences.php | 1 + lang/el/settings.php | 8 ++++++-- lang/es/notifications.php | 2 ++ lang/es/preferences.php | 1 + lang/es/settings.php | 8 ++++++-- lang/es_AR/notifications.php | 2 ++ lang/es_AR/preferences.php | 1 + lang/es_AR/settings.php | 8 ++++++-- lang/et/notifications.php | 2 ++ lang/et/preferences.php | 1 + lang/et/settings.php | 8 ++++++-- lang/eu/notifications.php | 2 ++ lang/eu/preferences.php | 1 + lang/eu/settings.php | 8 ++++++-- lang/fa/notifications.php | 2 ++ lang/fa/preferences.php | 1 + lang/fa/settings.php | 8 ++++++-- lang/fi/notifications.php | 2 ++ lang/fi/preferences.php | 1 + lang/fi/settings.php | 8 ++++++-- lang/fr/notifications.php | 2 ++ lang/fr/preferences.php | 1 + lang/fr/settings.php | 8 ++++++-- lang/he/notifications.php | 2 ++ lang/he/preferences.php | 1 + lang/he/settings.php | 8 ++++++-- lang/hr/notifications.php | 2 ++ lang/hr/preferences.php | 1 + lang/hr/settings.php | 8 ++++++-- lang/hu/notifications.php | 2 ++ lang/hu/preferences.php | 1 + lang/hu/settings.php | 8 ++++++-- lang/id/notifications.php | 2 ++ lang/id/passwords.php | 2 +- lang/id/preferences.php | 1 + lang/id/settings.php | 8 ++++++-- lang/is/notifications.php | 2 ++ lang/is/preferences.php | 1 + lang/is/settings.php | 8 ++++++-- lang/it/notifications.php | 2 ++ lang/it/preferences.php | 1 + lang/it/settings.php | 8 ++++++-- lang/ja/notifications.php | 2 ++ lang/ja/preferences.php | 1 + lang/ja/settings.php | 8 ++++++-- lang/ka/notifications.php | 2 ++ lang/ka/preferences.php | 1 + lang/ka/settings.php | 8 ++++++-- lang/ko/notifications.php | 2 ++ lang/ko/preferences.php | 1 + lang/ko/settings.php | 8 ++++++-- lang/ku/notifications.php | 2 ++ lang/ku/preferences.php | 1 + lang/ku/settings.php | 8 ++++++-- lang/lt/notifications.php | 2 ++ lang/lt/preferences.php | 1 + lang/lt/settings.php | 8 ++++++-- lang/lv/notifications.php | 2 ++ lang/lv/preferences.php | 1 + lang/lv/settings.php | 8 ++++++-- lang/nb/editor.php | 2 +- lang/nb/notifications.php | 2 ++ lang/nb/preferences.php | 1 + lang/nb/settings.php | 8 ++++++-- lang/ne/notifications.php | 2 ++ lang/ne/preferences.php | 1 + lang/ne/settings.php | 8 ++++++-- lang/nl/notifications.php | 2 ++ lang/nl/preferences.php | 1 + lang/nl/settings.php | 6 +++++- lang/nn/notifications.php | 2 ++ lang/nn/preferences.php | 1 + lang/nn/settings.php | 8 ++++++-- lang/pl/notifications.php | 2 ++ lang/pl/preferences.php | 1 + lang/pl/settings.php | 8 ++++++-- lang/pt/notifications.php | 2 ++ lang/pt/preferences.php | 1 + lang/pt/settings.php | 8 ++++++-- lang/pt_BR/notifications.php | 2 ++ lang/pt_BR/preferences.php | 1 + lang/pt_BR/settings.php | 16 ++++++++++------ lang/ro/notifications.php | 2 ++ lang/ro/preferences.php | 1 + lang/ro/settings.php | 8 ++++++-- lang/ru/notifications.php | 2 ++ lang/ru/preferences.php | 1 + lang/ru/settings.php | 8 ++++++-- lang/sk/notifications.php | 2 ++ lang/sk/preferences.php | 1 + lang/sk/settings.php | 8 ++++++-- lang/sl/notifications.php | 2 ++ lang/sl/preferences.php | 1 + lang/sl/settings.php | 8 ++++++-- lang/sq/notifications.php | 2 ++ lang/sq/preferences.php | 1 + lang/sq/settings.php | 8 ++++++-- lang/sr/activities.php | 4 ++-- lang/sr/common.php | 2 +- lang/sr/editor.php | 2 +- lang/sr/entities.php | 4 ++-- lang/sr/notifications.php | 2 ++ lang/sr/preferences.php | 1 + lang/sr/settings.php | 8 ++++++-- lang/sr/validation.php | 2 +- lang/sv/notifications.php | 2 ++ lang/sv/preferences.php | 1 + lang/sv/settings.php | 8 ++++++-- lang/tk/notifications.php | 2 ++ lang/tk/preferences.php | 1 + lang/tk/settings.php | 8 ++++++-- lang/tr/notifications.php | 2 ++ lang/tr/preferences.php | 1 + lang/tr/settings.php | 8 ++++++-- lang/uk/notifications.php | 2 ++ lang/uk/preferences.php | 1 + lang/uk/settings.php | 8 ++++++-- lang/uz/notifications.php | 2 ++ lang/uz/preferences.php | 1 + lang/uz/settings.php | 8 ++++++-- lang/vi/notifications.php | 2 ++ lang/vi/preferences.php | 1 + lang/vi/settings.php | 8 ++++++-- lang/zh_CN/notifications.php | 2 ++ lang/zh_CN/preferences.php | 1 + lang/zh_CN/settings.php | 8 ++++++-- lang/zh_TW/notifications.php | 2 ++ lang/zh_TW/preferences.php | 1 + lang/zh_TW/settings.php | 8 ++++++-- 162 files changed, 476 insertions(+), 119 deletions(-) diff --git a/lang/ar/notifications.php b/lang/ar/notifications.php index 30a49a631..69d5dfdcf 100644 --- a/lang/ar/notifications.php +++ b/lang/ar/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'تم تحديث الصفحة: :pageName', 'updated_page_intro' => 'تم تحديث الصفحة في :appName:', 'updated_page_debounce' => 'لمنع تلقي عدد كبير من الإشعارات، لن يتم إرسال إشعارات إليك لفترة من الوقت لإجراء المزيد من التعديلات على هذه الصفحة بواسطة نفس المحرر.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'اسم الصفحة:', 'detail_page_path' => 'مسار الصفحة:', diff --git a/lang/ar/preferences.php b/lang/ar/preferences.php index 9158b4b37..92733c998 100644 --- a/lang/ar/preferences.php +++ b/lang/ar/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'التحكم في إشعارات البريد الإلكتروني الذي تتلقاها عند إجراء نشاط معين داخل النظام.', 'notifications_opt_own_page_changes' => 'إشعاري عند حدوث تغييرات في الصفحات التي أملكها', 'notifications_opt_own_page_comments' => 'إشعاري بشأن التعليقات على الصفحات التي أملكها', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'إشعاري عند الردود على تعليقاتي', 'notifications_save' => 'حفظ اﻹعدادات', 'notifications_update_success' => 'تم تحديث إعدادات الإشعارات!', diff --git a/lang/ar/settings.php b/lang/ar/settings.php index 9006ac227..dc95ac846 100644 --- a/lang/ar/settings.php +++ b/lang/ar/settings.php @@ -75,7 +75,7 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'لم يتم اختيار أي قيود', // Sorting Settings - 'sorting' => 'طريقة الترتيب', + 'sorting' => 'القوائم و الفرز', 'sorting_book_default' => 'ترتيب الكتاب الافتراضي', 'sorting_book_default_desc' => 'حدد قاعدة الترتيب الافتراضية لتطبيقها على الكتب الجديدة. لن يؤثر هذا على الكتب الحالية، ويمكن تجاوزه لكل كتاب على حدة.', 'sorting_rules' => 'قواعد الترتيب', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'تاريخ التحديث', 'sort_rule_op_chapters_first' => 'الفصول الأولى', 'sort_rule_op_chapters_last' => 'الفصول الأخيرة', + 'sorting_page_limits' => 'حدود العرض لكل صفحة', + 'sorting_page_limits_desc' => 'تعيين عدد العناصر لإظهار كل صفحة في قوائم مختلفة داخل النظام. عادةً ما يكون الرقم الأقل هو الأكثر أداء، بينما وضع رقم أعلى يغني عن النقر على صفحات متعددة. يوصى باستخدام مضاعفات رقم ٣ (18 و 24 و 30 و إلخ...).', // Maintenance settings 'maint' => 'الصيانة', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'استيراد المحتوى', 'role_editor_change' => 'تغيير محرر الصفحة', 'role_notifications' => 'تلقي الإشعارات وإدارتها', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'أذونات الأصول', 'roles_system_warning' => 'اعلم أن الوصول إلى أي من الأذونات الثلاثة المذكورة أعلاه يمكن أن يسمح للمستخدم بتغيير امتيازاته الخاصة أو امتيازات الآخرين في النظام. قم بتعيين الأدوار مع هذه الأذونات فقط للمستخدمين الموثوق بهم.', 'role_asset_desc' => 'تتحكم هذه الأذونات في الوصول الافتراضي إلى الأصول داخل النظام. ستتجاوز الأذونات الخاصة بالكتب والفصول والصفحات هذه الأذونات.', 'role_asset_admins' => 'يُمنح المسؤولين حق الوصول تلقائيًا إلى جميع المحتويات ولكن هذه الخيارات قد تعرض خيارات واجهة المستخدم أو تخفيها.', 'role_asset_image_view_note' => 'يتعلق هذا بالرؤية داخل مدير الصور. يعتمد الوصول الفعلي لملفات الصور المُحمّلة على خِيار تخزين الصور في النظام.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'الكل', 'role_own' => 'ما يخص', 'role_controlled_by_asset' => 'يتحكم فيها الأصول التي يتم رفعها إلى', diff --git a/lang/bg/notifications.php b/lang/bg/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/bg/notifications.php +++ b/lang/bg/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/bg/preferences.php b/lang/bg/preferences.php index f954340e2..8f5aaa07e 100644 --- a/lang/bg/preferences.php +++ b/lang/bg/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/bg/settings.php b/lang/bg/settings.php index 6dd27d74a..ae770c559 100644 --- a/lang/bg/settings.php +++ b/lang/bg/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Няма наложени ограничения', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Поддръжка', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Настройки за достъп до активи', 'roles_system_warning' => 'Важно: Добавянето на потребител в някое от горните три роли може да му позволи да промени собствените си права или правата на другите в системата. Възлагайте тези роли само на доверени потребители.', 'role_asset_desc' => 'Тези настройки за достъп контролират достъпа по подразбиране до активите в системата. Настройките за достъп до книги, глави и страници ще отменят тези настройки.', 'role_asset_admins' => 'Администраторите автоматично получават достъп до цялото съдържание, но тези опции могат да показват или скриват опциите за потребителския интерфейс.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Всички', 'role_own' => 'Собствени', 'role_controlled_by_asset' => 'Контролирани от актива, към който са качени', diff --git a/lang/bn/activities.php b/lang/bn/activities.php index 7e4ba8229..c9268f8ab 100644 --- a/lang/bn/activities.php +++ b/lang/bn/activities.php @@ -131,7 +131,7 @@ return [ 'sort_rule_create' => 'created sort rule', 'sort_rule_create_notification' => 'Sort rule successfully created', 'sort_rule_update' => 'updated sort rule', - 'sort_rule_update_notification' => 'Sort rule successfully updated', + 'sort_rule_update_notification' => 'রোলটি সার্থকভাবে হালনাগাদ করা হয়েছে', 'sort_rule_delete' => 'deleted sort rule', 'sort_rule_delete_notification' => 'Sort rule successfully deleted', diff --git a/lang/bn/auth.php b/lang/bn/auth.php index 06ed376a7..30879fcb6 100644 --- a/lang/bn/auth.php +++ b/lang/bn/auth.php @@ -24,8 +24,8 @@ return [ 'password_hint' => 'ন্যূনতম ৮ অক্ষরের হতে হবে', 'forgot_password' => 'পাসওয়ার্ড ভুলে গেছেন?', 'remember_me' => 'লগইন স্থায়িত্ব ধরে রাখুন', - 'ldap_email_hint' => 'Please enter an email to use for this account.', - 'create_account' => 'Create Account', + 'ldap_email_hint' => 'অনুগ্রহ করে এই অ্যাকাউন্টের জন্য ব্যবহার করার জন্য একটি ইমেইল ঠিকানা লিখুন।', + 'create_account' => 'অ্যাকাউন্ট তৈরি করুন', 'already_have_account' => 'Already have an account?', 'dont_have_account' => 'Don\'t have an account?', 'social_login' => 'Social Login', @@ -39,16 +39,16 @@ return [ 'register_success' => 'Thanks for signing up! You are now registered and signed in.', // Login auto-initiation - 'auto_init_starting' => 'Attempting Login', + 'auto_init_starting' => 'লগইন করার চেষ্টা করা হচ্ছে', 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.', 'auto_init_start_link' => 'Proceed with authentication', // Password Reset - 'reset_password' => 'Reset Password', + 'reset_password' => 'পাসওয়ার্ড রিসেট করুন', 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.', 'reset_password_send_button' => 'Send Reset Link', 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.', - 'reset_password_success' => 'Your password has been successfully reset.', + 'reset_password_success' => 'আপনার পাসওয়ার্ড সফলভাবে রিসেট করা হয়েছে.', 'email_reset_subject' => 'Reset your :appName password', 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.', 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.', diff --git a/lang/bn/notifications.php b/lang/bn/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/bn/notifications.php +++ b/lang/bn/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/bn/preferences.php b/lang/bn/preferences.php index 2e47604e4..c59ec62da 100644 --- a/lang/bn/preferences.php +++ b/lang/bn/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/bn/settings.php b/lang/bn/settings.php index 04aca4f2e..6d0f4ab88 100644 --- a/lang/bn/settings.php +++ b/lang/bn/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/bs/notifications.php b/lang/bs/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/bs/notifications.php +++ b/lang/bs/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/bs/preferences.php b/lang/bs/preferences.php index 2872f5f3c..f4459d738 100644 --- a/lang/bs/preferences.php +++ b/lang/bs/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/bs/settings.php b/lang/bs/settings.php index 81c2c0a93..c68605fe1 100644 --- a/lang/bs/settings.php +++ b/lang/bs/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/ca/notifications.php b/lang/ca/notifications.php index 49b986ad0..e3fb928a1 100644 --- a/lang/ca/notifications.php +++ b/lang/ca/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'S’ha actualitzat la pàgina :pageName', 'updated_page_intro' => 'S’ha actualitzat una pàgina a :appName.', 'updated_page_debounce' => 'Per a evitar que s’acumulin les notificacions, durant un temps no se us notificarà cap canvi fet en aquesta pàgina pel mateix usuari.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nom de la pàgina:', 'detail_page_path' => 'Ruta de la pàgina:', diff --git a/lang/ca/preferences.php b/lang/ca/preferences.php index 25206726e..09fdaa4e5 100644 --- a/lang/ca/preferences.php +++ b/lang/ca/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Gestioneu les notificacions de correu electrònic que rebreu quan es facin certes activitats.', 'notifications_opt_own_page_changes' => 'Notifica’m els canvis a les meves pàgines.', 'notifications_opt_own_page_comments' => 'Notifica’m la creació de comentaris a les meves pàgines.', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notifica’m les respostes als meus comentaris.', 'notifications_save' => 'Desa les preferències', 'notifications_update_success' => 'S’han actualitzat les preferències de notificació', diff --git a/lang/ca/settings.php b/lang/ca/settings.php index 63352147e..352291fe5 100644 --- a/lang/ca/settings.php +++ b/lang/ca/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No hi ha cap restricció', // Sorting Settings - 'sorting' => 'Ordenar', - 'sorting_book_default' => 'Ordre predeterminat del llibre', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Selecciona la regla d\'ordenació predeterminada per aplicar a nous llibres. Això no afectarà els llibres existents, i pot ser anul·lat per llibre.', 'sorting_rules' => 'Regles d\'ordenació', 'sorting_rules_desc' => 'Són operacions d\'ordenació predefinides que es poden aplicar al contingut en el sistema.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Data d\'actualització', 'sort_rule_op_chapters_first' => 'Capítols a l\'inici', 'sort_rule_op_chapters_last' => 'Capítols al final', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Manteniment', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importar contingut', 'role_editor_change' => 'Canvi de l’editor de pàgina', 'role_notifications' => 'Recepció i gestió de notificacions', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Permisos de recursos', 'roles_system_warning' => 'Tingueu en compte que l’accés a qualsevol dels tres permisos de dalt permeten que l’usuari canviï els seus privilegis i els privilegis d’altres usuaris. Assigneu rols d’usuari amb aquests permisos només a usuaris de confiança.', 'role_asset_desc' => 'Aquests permisos controlen l’accés per defecte als recursos del sistema. El permisos dels llibres, capítols i pàgines sobreescriuran aquests permisos.', 'role_asset_admins' => 'Als administradors se’ls dona accés automàticament a tot el contingut però aquestes opcions mostren o amaguen opcions de la interfície d’usuari.', 'role_asset_image_view_note' => 'Això té relació amb la visibilitat al gestor d’imatges. L’accés a les imatges pujades dependrà de l’opció d’emmagatzematge d’imatges dels sistema.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Tot', 'role_own' => 'Propi', 'role_controlled_by_asset' => 'Controlat pel recurs a què estan pujats', diff --git a/lang/cs/notifications.php b/lang/cs/notifications.php index caf75f179..a6c9e88b5 100644 --- a/lang/cs/notifications.php +++ b/lang/cs/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Aktualizovaná stránka: :pageName', 'updated_page_intro' => 'V :appName byla aktualizována stránka:', 'updated_page_debounce' => 'Po nějakou dobu neobdržíte další oznámení o aktualizaci této stránky stejným editorem, aby se omezil počet stejných zpráv.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Název stránky:', 'detail_page_path' => 'Umístění:', diff --git a/lang/cs/preferences.php b/lang/cs/preferences.php index ec7afaf27..4a9bf3ad7 100644 --- a/lang/cs/preferences.php +++ b/lang/cs/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Nastavte si e-mailová oznámení, která dostanete při provedení určitých akcí v systému.', 'notifications_opt_own_page_changes' => 'Upozornit na změny stránek u kterých jsem vlastníkem', 'notifications_opt_own_page_comments' => 'Upozornit na komentáře na stránkách, které vlastním', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Upozornit na odpovědi na mé komentáře', 'notifications_save' => 'Uložit nastavení', 'notifications_update_success' => 'Nastavení oznámení byla aktualizována!', diff --git a/lang/cs/settings.php b/lang/cs/settings.php index e72d4b403..f856b64cf 100644 --- a/lang/cs/settings.php +++ b/lang/cs/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Žádná omezení nebyla nastavena', // Sorting Settings - 'sorting' => 'Řazení', - 'sorting_book_default' => 'Výchozí řazení knih', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Vybere výchozí pravidlo řazení pro nové knihy. Řazení neovlivní existující knihy a může být upraveno u konkrétní knihy.', 'sorting_rules' => 'Pravidla řazení', 'sorting_rules_desc' => 'Toto jsou předem definovaná pravidla řazení, která mohou být použita na webu.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Datum aktualizace', 'sort_rule_op_chapters_first' => 'Kapitoly jako první', 'sort_rule_op_chapters_last' => 'Kapitoly jako poslední', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Údržba', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importovat obsah', 'role_editor_change' => 'Změnit editor stránek', 'role_notifications' => 'Přijímat a spravovat oznámení', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Obsahová oprávnění', 'roles_system_warning' => 'Berte na vědomí, že přístup k některému ze tří výše uvedených oprávnění může uživateli umožnit změnit svá vlastní oprávnění nebo oprávnění ostatních uživatelů v systému. Přiřazujte role s těmito oprávněními pouze důvěryhodným uživatelům.', 'role_asset_desc' => 'Tato oprávnění řídí přístup k obsahu napříč systémem. Specifická oprávnění na knihách, kapitolách a stránkách převáží tato nastavení.', 'role_asset_admins' => 'Administrátoři automaticky dostávají přístup k veškerému obsahu, ale tyto volby mohou ukázat nebo skrýt volby v uživatelském rozhraní.', 'role_asset_image_view_note' => 'To se týká viditelnosti ve správci obrázků. Skutečný přístup k nahraným souborům obrázků bude záviset na možnosti uložení systémových obrázků.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Vše', 'role_own' => 'Vlastní', 'role_controlled_by_asset' => 'Řídí se obsahem, do kterého jsou nahrávány', diff --git a/lang/cy/notifications.php b/lang/cy/notifications.php index 26f65f144..766e666b9 100644 --- a/lang/cy/notifications.php +++ b/lang/cy/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Tudalen wedi\'i diweddaru :pageName', 'updated_page_intro' => 'Mae tudalen newydd wedi cael ei diweddaru yn :appName:', 'updated_page_debounce' => 'Er mwyn atal llu o hysbysiadau, am gyfnod ni fyddwch yn cael hysbysiadau am ragor o olygiadau i\'r dudalen hon gan yr un golygydd.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Enw\'r dudalen:', 'detail_page_path' => 'Llwybr Tudalen:', diff --git a/lang/cy/preferences.php b/lang/cy/preferences.php index 6e00adfe8..4a08ca498 100644 --- a/lang/cy/preferences.php +++ b/lang/cy/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Rheoli’r hysbysiadau e-bost a gewch pan fydd gweithgaredd penodol yn cael ei gyflawni o fewn y system.', 'notifications_opt_own_page_changes' => 'Hysbysu am newidiadau i dudalennau yr wyf yn berchen arnynt', 'notifications_opt_own_page_comments' => 'Hysbysu am sylwadau ar dudalennau yr wyf yn berchen arnynt', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Hysbysu am atebion i\'m sylwadau', 'notifications_save' => 'Dewisiadau Cadw', 'notifications_update_success' => 'Mae’r dewisiadau hysbysu wedi\'u diweddaru!', diff --git a/lang/cy/settings.php b/lang/cy/settings.php index cb08e8c90..29e86e28b 100644 --- a/lang/cy/settings.php +++ b/lang/cy/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ni osodwyd cyfyngiad', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Cynnal', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Mewnforio Cynnwys', 'role_editor_change' => 'Newid golygydd tudalen', 'role_notifications' => 'Derbyn a rheoli hysbysiadau', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Caniatâd Asedau', 'roles_system_warning' => 'Byddwch yn ymwybodol y gall mynediad i unrhyw un o\'r tri chaniatâd uchod ganiatáu i ddefnyddiwr newid eu breintiau eu hunain neu freintiau eraill yn y system. Neilltuo rolau gyda\'r caniatâd hyn i ddefnyddwyr dibynadwy yn unig.', 'role_asset_desc' => 'Mae\'r caniatâd hwn yn rheoli mynediad diofyn i\'r asedau o fewn y system. Bydd caniatâd ar Lyfrau, Penodau a Thudalennau yn diystyru\'r caniatâd hwn.', 'role_asset_admins' => 'Mae gweinyddwyr yn cael mynediad awtomatig i\'r holl gynnwys ond gall yr opsiynau hyn ddangos neu guddio opsiynau UI.', 'role_asset_image_view_note' => 'Mae hyn yn ymwneud â gwelededd o fewn y rheolwr delweddau. Bydd mynediad gwirioneddol i ffeiliau delwedd wedi\'u huwchlwytho yn dibynnu ar opsiwn storio delwedd y system.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Popeth', 'role_own' => 'Meddu', 'role_controlled_by_asset' => 'Wedi\'u rheoli gan yr ased y maent yn cael eu huwchlwytho iddo', diff --git a/lang/da/notifications.php b/lang/da/notifications.php index 8074c03c4..3aaf2ff18 100644 --- a/lang/da/notifications.php +++ b/lang/da/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Opdateret side: :pageName', 'updated_page_intro' => 'En side er blevet opdateret i :appName:', 'updated_page_debounce' => 'For at forhindre en masse af notifikationer, i et stykke tid vil du ikke blive sendt notifikationer for yderligere redigeringer til denne side af den samme editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Sidens navn:', 'detail_page_path' => 'Sidesti:', diff --git a/lang/da/preferences.php b/lang/da/preferences.php index 143405a16..5ba4f450c 100644 --- a/lang/da/preferences.php +++ b/lang/da/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Administrer de e-mail-notifikationer, du modtager, når visse aktiviteter udføres i systemet.', 'notifications_opt_own_page_changes' => 'Adviser ved ændringer af sider, jeg ejer', 'notifications_opt_own_page_comments' => 'Adviser ved kommentarer på sider, jeg ejer', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Adviser ved svar på mine kommentarer', 'notifications_save' => 'Gem indstillinger', 'notifications_update_success' => 'Indstillinger for notifikationer er blevet opdateret!', diff --git a/lang/da/settings.php b/lang/da/settings.php index 4f194545b..8d89c30af 100644 --- a/lang/da/settings.php +++ b/lang/da/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ingen restriktion opsat', // Sorting Settings - 'sorting' => 'Sortering', - 'sorting_book_default' => 'Standard bog-sortering', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Vælg den standardsorteringsregel, der skal gælde for nye bøger. Dette påvirker ikke eksisterende bøger og kan tilsidesættes for hver enkelt bog.', 'sorting_rules' => 'Regler for sortering', 'sorting_rules_desc' => 'Det er foruddefinerede sorteringsoperationer, som kan anvendes på indhold i systemet.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Opdateret dato', 'sort_rule_op_chapters_first' => 'Kapitler først', 'sort_rule_op_chapters_last' => 'De sidste kapitler', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Vedligeholdelse', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importer indhold', 'role_editor_change' => 'Skift side editor', 'role_notifications' => 'Modtag og administrer notifikationer', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Tilladelser for medier og "assets"', 'roles_system_warning' => 'Vær opmærksom på, at adgang til alle af de ovennævnte tre tilladelser, kan give en bruger mulighed for at ændre deres egne brugerrettigheder eller brugerrettigheder for andre i systemet. Tildel kun roller med disse tilladelser til betroede brugere.', 'role_asset_desc' => 'Disse tilladelser kontrollerer standardadgang til medier og "assets" i systemet. Tilladelser til bøger, kapitler og sider tilsidesætter disse tilladelser.', 'role_asset_admins' => 'Administratorer får automatisk adgang til alt indhold, men disse indstillinger kan vise eller skjule UI-indstillinger.', 'role_asset_image_view_note' => 'Dette vedrører synlighed i billedhåndteringen. Den faktiske adgang til uploadede billedfiler vil afhænge af systemets billedlagringsindstilling.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Alle', 'role_own' => 'Eget', 'role_controlled_by_asset' => 'Styres af det medie/"asset", de uploades til', diff --git a/lang/de/notifications.php b/lang/de/notifications.php index f3b86b502..71b71d1b6 100644 --- a/lang/de/notifications.php +++ b/lang/de/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Aktualisierte Seite: :pageName', 'updated_page_intro' => 'Eine Seite wurde in :appName aktualisiert:', 'updated_page_debounce' => 'Um eine Flut von Benachrichtigungen zu vermeiden, werden Sie für eine gewisse Zeit keine Benachrichtigungen für weitere Bearbeitungen dieser Seite durch denselben Bearbeiter erhalten.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Name der Seite:', 'detail_page_path' => 'Seitenpfad:', diff --git a/lang/de/preferences.php b/lang/de/preferences.php index 26f0b05da..1f74f3d3e 100644 --- a/lang/de/preferences.php +++ b/lang/de/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Legen Sie fest, welche E-Mail-Benachrichtigungen Sie erhalten, wenn bestimmte Aktivitäten im System durchgeführt werden.', 'notifications_opt_own_page_changes' => 'Benachrichtigung bei Änderungen an eigenen Seiten', 'notifications_opt_own_page_comments' => 'Benachrichtigung bei Kommentaren an eigenen Seiten', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Bei Antworten auf meine Kommentare benachrichtigen', 'notifications_save' => 'Einstellungen speichern', 'notifications_update_success' => 'Benachrichtigungseinstellungen wurden aktualisiert!', diff --git a/lang/de/settings.php b/lang/de/settings.php index 250668e8a..a87408995 100644 --- a/lang/de/settings.php +++ b/lang/de/settings.php @@ -76,8 +76,8 @@ Hinweis: Benutzer können ihre E-Mail-Adresse nach erfolgreicher Registrierung 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt', // Sorting Settings - 'sorting' => 'Sortierung', - 'sorting_book_default' => 'Standard-Buchsortierung', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Wählen Sie die Standard-Sortierregel aus, die auf neue Bücher angewendet werden soll. Dies wirkt sich nicht auf bestehende Bücher aus und kann pro Buch überschrieben werden.', 'sorting_rules' => 'Sortierregeln', 'sorting_rules_desc' => 'Dies sind vordefinierte Sortieraktionen, die auf Inhalte im System angewendet werden können.', @@ -104,6 +104,8 @@ Hinweis: Benutzer können ihre E-Mail-Adresse nach erfolgreicher Registrierung 'sort_rule_op_updated_date' => 'Aktualisierungsdatum', 'sort_rule_op_chapters_first' => 'Kapitel zuerst', 'sort_rule_op_chapters_last' => 'Kapitel zuletzt', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Wartung', @@ -196,11 +198,13 @@ Hinweis: Benutzer können ihre E-Mail-Adresse nach erfolgreicher Registrierung 'role_import_content' => 'Inhalt importieren', 'role_editor_change' => 'Seiten-Editor ändern', 'role_notifications' => 'Empfangen und Verwalten von Benachrichtigungen', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Berechtigungen', 'roles_system_warning' => 'Beachten Sie, dass der Zugriff auf eine der oben genannten drei Berechtigungen einem Benutzer erlauben kann, seine eigenen Berechtigungen oder die Rechte anderer im System zu ändern. Weisen Sie nur Rollen, mit diesen Berechtigungen, vertrauenswürdigen Benutzern zu.', 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungenen.', 'role_asset_admins' => 'Administratoren erhalten automatisch Zugriff auf alle Inhalte, aber diese Optionen können Oberflächenoptionen ein- oder ausblenden.', 'role_asset_image_view_note' => 'Das bezieht sich auf die Sichtbarkeit innerhalb des Bildmanagers. Der tatsächliche Zugriff auf hochgeladene Bilddateien hängt von der Speicheroption des Systems für Bilder ab.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Alle', 'role_own' => 'Eigene', 'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt', diff --git a/lang/de_informal/notifications.php b/lang/de_informal/notifications.php index 0bf7739f4..99c270ec1 100644 --- a/lang/de_informal/notifications.php +++ b/lang/de_informal/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Aktualisierte Seite: :pageName', 'updated_page_intro' => 'Eine Seite wurde in :appName aktualisiert:', 'updated_page_debounce' => 'Um eine Flut von Benachrichtigungen zu vermeiden, wirst du für eine gewisse Zeit keine Benachrichtigungen für weitere Bearbeitungen dieser Seite durch denselben Bearbeiter erhalten.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Seitenname:', 'detail_page_path' => 'Seitenpfad:', diff --git a/lang/de_informal/preferences.php b/lang/de_informal/preferences.php index 07b83a8da..bfb57b2f4 100644 --- a/lang/de_informal/preferences.php +++ b/lang/de_informal/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Lege fest, welche E-Mail-Benachrichtigungen du erhältst, wenn bestimmte Aktivitäten im System durchgeführt werden.', 'notifications_opt_own_page_changes' => 'Benachrichtigung bei Änderungen an eigenen Seiten', 'notifications_opt_own_page_comments' => 'Benachrichtigung bei Kommentaren an eigenen Seiten', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Bei Antworten auf meine Kommentare benachrichtigen', 'notifications_save' => 'Einstellungen speichern', 'notifications_update_success' => 'Benachrichtigungseinstellungen wurden aktualisiert!', diff --git a/lang/de_informal/settings.php b/lang/de_informal/settings.php index 50003c58e..ab9a075a0 100644 --- a/lang/de_informal/settings.php +++ b/lang/de_informal/settings.php @@ -76,8 +76,8 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt', // Sorting Settings - 'sorting' => 'Sortierung', - 'sorting_book_default' => 'Standard-Buchsortierung', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Wähle die Standard-Sortierregel aus, die auf neue Bücher angewendet werden soll. Dies wirkt sich nicht auf bestehende Bücher aus und kann pro Buch überschrieben werden.', 'sorting_rules' => 'Sortierregeln', 'sorting_rules_desc' => 'Dies sind vordefinierte Sortieraktionen, die auf Inhalte im System angewendet werden können.', @@ -104,6 +104,8 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung 'sort_rule_op_updated_date' => 'Aktualisierungsdatum', 'sort_rule_op_chapters_first' => 'Kapitel zuerst', 'sort_rule_op_chapters_last' => 'Kapitel zuletzt', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Wartung', @@ -196,11 +198,13 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung 'role_import_content' => 'Inhalt importieren', 'role_editor_change' => 'Seiteneditor ändern', 'role_notifications' => 'Empfangen und Verwalten von Benachrichtigungen', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Berechtigungen', 'roles_system_warning' => 'Beachte, dass der Zugriff auf eine der oben genannten drei Berechtigungen einem Benutzer erlauben kann, seine eigenen Berechtigungen oder die Rechte anderer im System zu ändern. Weise nur Rollen mit diesen Berechtigungen vertrauenswürdigen Benutzern zu.', 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungen.', 'role_asset_admins' => 'Administratoren erhalten automatisch Zugriff auf alle Inhalte, aber diese Optionen können Oberflächenoptionen ein- oder ausblenden.', 'role_asset_image_view_note' => 'Das bezieht sich auf die Sichtbarkeit innerhalb des Bildmanagers. Der tatsächliche Zugriff auf hochgeladene Bilddateien hängt von der Speicheroption des Systems für Bilder ab.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Alle', 'role_own' => 'Eigene', 'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt', diff --git a/lang/el/notifications.php b/lang/el/notifications.php index 3924cab3b..e9a9fe15d 100644 --- a/lang/el/notifications.php +++ b/lang/el/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Ενημερωμένη σελίδα: :pageName', 'updated_page_intro' => 'Μια σελίδα έχει ενημερωθεί στο :appName:', 'updated_page_debounce' => 'Για να αποτρέψετε μαζικές ειδοποιήσεις, για κάποιο διάστημα δε θα σας αποστέλλονται ειδοποιήσεις για περαιτέρω αλλαγές σε αυτήν τη σελίδα από τον ίδιο συντάκτη.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Όνομα σελίδας:', 'detail_page_path' => 'Διαδρομή σελίδας:', diff --git a/lang/el/preferences.php b/lang/el/preferences.php index 4f7e97d52..2c2ce8fe9 100644 --- a/lang/el/preferences.php +++ b/lang/el/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/el/settings.php b/lang/el/settings.php index 172038fd0..67461604e 100644 --- a/lang/el/settings.php +++ b/lang/el/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Δε έχουν ρυθμιστεί περιορισμοί ακόμα', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Συντήρηση', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Εισαγωγή περιεχομένου', 'role_editor_change' => 'Αλλαγή προγράμματος επεξεργασίας σελίδας', 'role_notifications' => 'Λήψη & διαχείριση ειδοποιήσεων', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Δικαιώματα Συστήματος', 'roles_system_warning' => 'Λάβετε υπόψη ότι η πρόσβαση σε οποιοδήποτε από τις τρεις παραπάνω άδειες (δικαιώματα) μπορεί να επιτρέψει σε έναν χρήστη να αλλάξει τα δικά του προνόμια ή τα προνόμια άλλων στο σύστημα. Εκχωρήστε ρόλους με αυτά τα δικαιώματα μόνο σε αξιόπιστους χρήστες.', 'role_asset_desc' => 'Αυτά τα δικαιώματα ελέγχουν την προεπιλεγμένη πρόσβαση στα στοιχεία (άδειες) εντός του συστήματος. Τα δικαιώματα σε Βιβλία, Κεφάλαια και Σελίδες θα παρακάμψουν αυτές τις άδειες.', 'role_asset_admins' => 'Οι διαχειριστές έχουν αυτόματα πρόσβαση σε όλο το περιεχόμενο, αλλά αυτές οι επιλογές ενδέχεται να εμφανίζουν ή να αποκρύπτουν τις επιλογές διεπαφής χρήστη.', 'role_asset_image_view_note' => 'Αυτό σχετίζεται με την ορατότητα εντός του διαχειριστή εικόνων. Η πραγματική πρόσβαση των μεταφορτωμένων αρχείων εικόνας θα εξαρτηθεί από την επιλογή αποθήκευσης εικόνας συστήματος.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Ολα', 'role_own' => 'Τα δικά του', 'role_controlled_by_asset' => 'Ελέγχονται από το στοιχείο στο οποίο ανεβαίνουν (Ράφια, Βιβλία)', diff --git a/lang/es/notifications.php b/lang/es/notifications.php index 5ebc42129..38c770888 100644 --- a/lang/es/notifications.php +++ b/lang/es/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Página actualizada: :pageName', 'updated_page_intro' => 'Una página ha sido actualizada en :appName:', 'updated_page_debounce' => 'Para prevenir notificaciones en masa, durante un tiempo no se enviarán notificaciones para futuras ediciones de esta página por el mismo editor.', + 'comment_mention_subject' => 'Ha sido mencionado en un comentario en la página: :pageName', + 'comment_mention_intro' => 'Fue mencionado en un comentario en :appName:', 'detail_page_name' => 'Nombre de página:', 'detail_page_path' => 'Ruta de la página:', diff --git a/lang/es/preferences.php b/lang/es/preferences.php index 13af93d29..0328a572a 100644 --- a/lang/es/preferences.php +++ b/lang/es/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Controle las notificaciones por correo electrónico que recibe cuando se realiza cierta actividad dentro del sistema.', 'notifications_opt_own_page_changes' => 'Notificar sobre los cambios en las páginas en las que soy propietario', 'notifications_opt_own_page_comments' => 'Notificar sobre comentarios en las páginas en las que soy propietario', + 'notifications_opt_comment_mentions' => 'Notificarme cuando he sido mencionado en un comentario', 'notifications_opt_comment_replies' => 'Notificar sobre respuestas a mis comentarios', 'notifications_save' => 'Guardar preferencias', 'notifications_update_success' => '¡Se han actualizado las preferencias de notificaciones!', diff --git a/lang/es/settings.php b/lang/es/settings.php index 55eb498d6..1a9927c8e 100644 --- a/lang/es/settings.php +++ b/lang/es/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida', // Sorting Settings - 'sorting' => 'Ordenación', - 'sorting_book_default' => 'Orden por defecto del libro', + 'sorting' => 'Listas y ordenación', + 'sorting_book_default' => 'Orden de libros por defecto', 'sorting_book_default_desc' => 'Seleccione la regla de ordenación predeterminada para aplicar a nuevos libros. Esto no afectará a los libros existentes, y puede ser anulado por libro.', 'sorting_rules' => 'Reglas de ordenación', 'sorting_rules_desc' => 'Son operaciones de ordenación predefinidas que se pueden aplicar al contenido en el sistema.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Fecha de actualización', 'sort_rule_op_chapters_first' => 'Capítulos al inicio', 'sort_rule_op_chapters_last' => 'Capítulos al final', + 'sorting_page_limits' => 'Límites de visualización por página', + 'sorting_page_limits_desc' => 'Establecer cuántos elementos a mostrar por página en varias listas dentro del sistema. Normalmente una cantidad más baja rendirá mejor, mientras que una cantidad más alta evita la necesidad de hacer clic a través de varias páginas. Se recomienda utilizar un múltiplo par de 3 (18, 24, 30, etc).', // Maintenance settings 'maint' => 'Mantenimiento', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importar contenido', 'role_editor_change' => 'Cambiar editor de página', 'role_notifications' => 'Recibir y gestionar notificaciones', + 'role_permission_note_users_and_roles' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios y roles en el sistema.', 'role_asset' => 'Permisos de contenido', 'roles_system_warning' => 'Tenga en cuenta que el acceso a cualquiera de los tres permisos anteriores puede permitir a un usuario alterar sus propios privilegios o los privilegios de otros en el sistema. Sólo asignar roles con estos permisos a usuarios de confianza.', 'role_asset_desc' => 'Estos permisos controlan el acceso por defecto a los contenidos del sistema. Los permisos de Libros, Capítulos y Páginas sobreescribiran estos permisos.', 'role_asset_admins' => 'A los administradores se les asigna automáticamente permisos para acceder a todo el contenido pero estas opciones podrían mostrar u ocultar opciones de la interfaz.', 'role_asset_image_view_note' => 'Esto se refiere a la visibilidad dentro del gestor de imágenes. El acceso a los archivos de imagen subidos dependerá de la opción de almacenamiento de imágenes del sistema.', + 'role_asset_users_note' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios en el sistema.', 'role_all' => 'Todo', 'role_own' => 'Propio', 'role_controlled_by_asset' => 'Controlado por el contenido al que ha sido subido', diff --git a/lang/es_AR/notifications.php b/lang/es_AR/notifications.php index fc89b2c25..af9f5332b 100644 --- a/lang/es_AR/notifications.php +++ b/lang/es_AR/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Página actualizada: :pageName', 'updated_page_intro' => 'Se actualizó una página en :appName:', 'updated_page_debounce' => 'Para evitar una avalancha de notificaciones, durante un tiempo no se enviarán notificaciones sobre más ediciones de esta página por el mismo editor.', + 'comment_mention_subject' => 'Ha sido mencionado en un comentario en la página: :pageName', + 'comment_mention_intro' => 'Fue mencionado en un comentario en :appName:', 'detail_page_name' => 'Nombre de la página:', 'detail_page_path' => 'Ruta de la página:', diff --git a/lang/es_AR/preferences.php b/lang/es_AR/preferences.php index 11c872021..deca55466 100644 --- a/lang/es_AR/preferences.php +++ b/lang/es_AR/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Controle las notificaciones por correo electrónico que recibe cuando se realiza cierta actividad dentro del sistema.', 'notifications_opt_own_page_changes' => 'Notificar sobre los cambios en las páginas de las que soy propietario', 'notifications_opt_own_page_comments' => 'Notificar sobre comentarios en las páginas de las que soy propietario', + 'notifications_opt_comment_mentions' => 'Notificarme cuando he sido mencionado en un comentario', 'notifications_opt_comment_replies' => 'Notificar sobre respuestas a mis comentarios', 'notifications_save' => 'Guardar preferencias', 'notifications_update_success' => '¡Se actualizaron las preferencias de notificaciones!', diff --git a/lang/es_AR/settings.php b/lang/es_AR/settings.php index 5cbcff86e..3eb41d2cc 100644 --- a/lang/es_AR/settings.php +++ b/lang/es_AR/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida', // Sorting Settings - 'sorting' => 'Ordenando', - 'sorting_book_default' => 'Orden predeterminado del libro', + 'sorting' => 'Listas y ordenación', + 'sorting_book_default' => 'Orden de libros por defecto', 'sorting_book_default_desc' => 'Seleccione la regla de ordenación predeterminada para aplicar a nuevos libros. Esto no afectará a los libros existentes, y puede ser anulado por libro.', 'sorting_rules' => 'Reglas de Ordenación', 'sorting_rules_desc' => 'Son operaciones de ordenación predefinidas que se pueden aplicar al contenido en el sistema.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Fecha de actualización', 'sort_rule_op_chapters_first' => 'Capítulos al inicio', 'sort_rule_op_chapters_last' => 'Capítulos al final', + 'sorting_page_limits' => 'Límites de visualización por página', + 'sorting_page_limits_desc' => 'Establecer cuántos elementos a mostrar por página en varias listas dentro del sistema. Normalmente una cantidad más baja rendirá mejor, mientras que una cantidad más alta evita la necesidad de hacer clic a través de varias páginas. Se recomienda utilizar un múltiplo par de 3 (18, 24, 30, etc).', // Maintenance settings 'maint' => 'Mantenimiento', @@ -196,11 +198,13 @@ return [ 'role_import_content' => 'Importar contenido', 'role_editor_change' => 'Cambiar editor de página', 'role_notifications' => 'Recibir y gestionar notificaciones', + 'role_permission_note_users_and_roles' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios y roles en el sistema.', 'role_asset' => 'Permisos de activos', 'roles_system_warning' => 'Tenga en cuenta que el acceso a cualquiera de los tres permisos anteriores puede permitir a un usuario modificar sus propios privilegios o los privilegios de otros usuarios en el sistema. Asignar roles con estos permisos sólo a usuarios de comfianza.', 'role_asset_desc' => 'Estos permisos controlan el acceso por defecto a los activos del sistema. Permisos definidos en Libros, Capítulos y Páginas ignorarán estos permisos.', 'role_asset_admins' => 'Los administradores reciben automáticamente acceso a todo el contenido pero estas opciones pueden mostrar u ocultar opciones de UI.', 'role_asset_image_view_note' => 'Esto se refiere a la visibilidad dentro del gestor de imágenes. El acceso real a los archivos de imágenes subidos, dependerá de la opción de almacenamiento de imágenes del sistema.', + 'role_asset_users_note' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios en el sistema.', 'role_all' => 'Todo', 'role_own' => 'Propio', 'role_controlled_by_asset' => 'Controlado por el activo al que ha sido subido', diff --git a/lang/et/notifications.php b/lang/et/notifications.php index 0b5fc814c..2843d5799 100644 --- a/lang/et/notifications.php +++ b/lang/et/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Muudetud leht: :pageName', 'updated_page_intro' => 'Rakenduses :appName muudeti lehte:', 'updated_page_debounce' => 'Et vältida liigseid teavitusi, ei saadeta sulle mõnda aega teavitusi selle lehe muutmiste kohta sama kasutaja poolt.', + 'comment_mention_subject' => 'Sind mainiti kommentaaris lehel: :pageName', + 'comment_mention_intro' => 'Sind mainiti kommentaaris rakenduses :appName:', 'detail_page_name' => 'Lehe nimetus:', 'detail_page_path' => 'Lehe asukoht:', diff --git a/lang/et/preferences.php b/lang/et/preferences.php index f4ba5e6ae..a4003463c 100644 --- a/lang/et/preferences.php +++ b/lang/et/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Halda e-posti teavitusi, mis saadetakse teatud tegevuste puhul.', 'notifications_opt_own_page_changes' => 'Teavita muudatustest minu lehtedel', 'notifications_opt_own_page_comments' => 'Teavita kommentaaridest minu lehtedel', + 'notifications_opt_comment_mentions' => 'Teavita mind, kui mind kommentaaris mainitakse', 'notifications_opt_comment_replies' => 'Teavita vastustest minu kommentaaridele', 'notifications_save' => 'Salvesta eelistused', 'notifications_update_success' => 'Teavituste eelistused on salvestatud!', diff --git a/lang/et/settings.php b/lang/et/settings.php index 003238cfe..fbd9d9c7e 100644 --- a/lang/et/settings.php +++ b/lang/et/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Piirangut ei ole', // Sorting Settings - 'sorting' => 'Sorteerimine', - 'sorting_book_default' => 'Vaikimisi raamatu sorteerimine', + 'sorting' => 'Loendid ja järjestamine', + 'sorting_book_default' => 'Vaikimisi raamatute sorteerimise reegel', 'sorting_book_default_desc' => 'Vali vaikimisi uutele raamatutele rakenduv sorteerimisreegel. See ei mõjuta olemasolevaid raamatuid ning seda saab raamatupõhiselt muuta.', 'sorting_rules' => 'Sorteerimisreeglid', 'sorting_rules_desc' => 'Need on eeldefineeritud sorteerimistoimingud, mida saab süsteemis olevale sisule rakendada.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Muutmise aeg', 'sort_rule_op_chapters_first' => 'Peatükid eespool', 'sort_rule_op_chapters_last' => 'Peatükid tagapool', + 'sorting_page_limits' => 'Leheküljepõhised kuvalimiidid', + 'sorting_page_limits_desc' => 'Seadista, mitut objekti erinevates loendites ühel leheküljel kuvada. Väiksem väärtus tähendab reeglina paremat jõudlust, samas kui suurem väärtus vähendab vajadust mitut lehekülge läbi klikkida. Soovituslik on kasutada 3-ga jaguvat väärtust (18, 24, 30 jne).', // Maintenance settings 'maint' => 'Hooldus', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Imporditud sisu', 'role_editor_change' => 'Lehe redaktori muutmine', 'role_notifications' => 'Võta vastu ja halda teavitusi', + 'role_permission_note_users_and_roles' => 'Need õigused lubavad ka süsteemis olevaid kasutajaid ja rolle vaadata ja otsida.', 'role_asset' => 'Sisu õigused', 'roles_system_warning' => 'Pane tähele, et ülalolevad kolm õigust võimaldavad kasutajal enda või teiste kasutajate õiguseid muuta. Määra nende õigustega roll ainult usaldusväärsetele kasutajatele.', 'role_asset_desc' => 'Need load kontrollivad vaikimisi ligipääsu süsteemis olevale sisule. Raamatute, peatükkide ja lehtede õigused rakenduvad esmajärjekorras.', 'role_asset_admins' => 'Administraatoritel on automaatselt ligipääs kogu sisule, aga need valikud võivad peida või näidata kasutajaliidese elemente.', 'role_asset_image_view_note' => 'See käib nähtavuse kohta pildifailide halduris. Tegelik ligipääs üleslaaditud pildifailidele sõltub süsteemsest piltide salvestamise valikust.', + 'role_asset_users_note' => 'Need õigused lubavad ka süsteemis olevaid kasutajaid vaadata ja otsida.', 'role_all' => 'Kõik', 'role_own' => 'Enda omad', 'role_controlled_by_asset' => 'Õigused määratud seotud objekti kaudu', diff --git a/lang/eu/notifications.php b/lang/eu/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/eu/notifications.php +++ b/lang/eu/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/eu/preferences.php b/lang/eu/preferences.php index da7638593..3818932d4 100644 --- a/lang/eu/preferences.php +++ b/lang/eu/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/eu/settings.php b/lang/eu/settings.php index e93f3c964..9a9227b83 100644 --- a/lang/eu/settings.php +++ b/lang/eu/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Mugarik gabe', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Mantentze-lanak', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Fitxategi baimenak', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Guztiak', 'role_own' => 'Norberarenak', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/fa/notifications.php b/lang/fa/notifications.php index 4595fd825..d216b04fe 100644 --- a/lang/fa/notifications.php +++ b/lang/fa/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'صفحه جدید: :pageName', 'updated_page_intro' => 'یک صفحه جدید ایجاد شده است در :appName:', 'updated_page_debounce' => 'برای جلوگیری از انبوه اعلان‌ها، برای مدتی اعلان‌ ویرایش‌هایی که توسط همان ویرایشگر در این صفحه انجام می‌شود، ارسال نخواهد شد.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'نام صفحه:', 'detail_page_path' => 'نام میسر صفحه:', diff --git a/lang/fa/preferences.php b/lang/fa/preferences.php index ceecedc80..00d277bdf 100644 --- a/lang/fa/preferences.php +++ b/lang/fa/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'تنظیمات اطلاعیه‌های ایمیلی هنگام انجام فعالیت‌های خاص در سیستم.', 'notifications_opt_own_page_changes' => 'در صورت تغییرات در صفحاتی که متعلق به من است، اطلاع بده', 'notifications_opt_own_page_comments' => 'در صورت ثبت نظر در صفحاتی که متعلق به من است، اطلاع بده', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'پس از درج پاسخ به روی نظراتی که من ثبت کرده‌ام، اطلاع بده', 'notifications_save' => 'ذخیره تنظیمات', 'notifications_update_success' => 'تنظیمات اعلان‌ها به روز شده است!', diff --git a/lang/fa/settings.php b/lang/fa/settings.php index e4cb9018e..abbfce470 100644 --- a/lang/fa/settings.php +++ b/lang/fa/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'بدون محدودیت', // Sorting Settings - 'sorting' => 'مرتب‌سازی', - 'sorting_book_default' => 'مرتب‌سازی پیش‌فرض کتاب', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'قانون پیش‌فرض مرتب‌سازی را برای کتاب‌های جدید انتخاب کنید. تغییر قانون بر ترتیب کتاب‌های موجود تأثیری ندارد و می‌تواند برای هر کتاب به‌صورت جداگانه تغییر یابد.', 'sorting_rules' => 'قوانین مرتب‌سازی', 'sorting_rules_desc' => 'این‌ها عملیات مرتب‌سازی از پیش تعریف‌شده‌ای هستند که می‌توانید آن‌ها را بر محتوای سیستم اعمال کنید.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'تاریخ به‌روزرسانی', 'sort_rule_op_chapters_first' => 'ابتدا فصل‌ها', 'sort_rule_op_chapters_last' => 'فصل‌ها در آخر', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'نگهداری', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'وارد کردن محتوا', 'role_editor_change' => 'تغییر ویرایشگر صفحه', 'role_notifications' => 'دریافت و مدیریت اعلان‌ها', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'مجوزهای دارایی', 'roles_system_warning' => 'توجه داشته باشید که دسترسی به هر یک از سه مجوز فوق می‌تواند به کاربر اجازه دهد تا امتیازات خود یا امتیازات دیگران را در سیستم تغییر دهد. فقط نقش هایی را با این مجوزها به کاربران مورد اعتماد اختصاص دهید.', 'role_asset_desc' => 'این مجوزها دسترسی پیش‌فرض به دارایی‌های درون سیستم را کنترل می‌کنند. مجوزهای مربوط به کتاب‌ها، فصل‌ها و صفحات این مجوزها را لغو می‌کنند.', 'role_asset_admins' => 'به ادمین‌ها به‌طور خودکار به همه محتوا دسترسی داده می‌شود، اما این گزینه‌ها ممکن است گزینه‌های UI را نشان داده یا پنهان کنند.', 'role_asset_image_view_note' => 'این مربوط به مرئی بودن در بخش مدیر تصاویر است. دسترسی عملی به تصاویر آپلود شده بستگی به گزینه ذخیره‌سازی تصویر سیستم دارد.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'همه', 'role_own' => 'صاحب', 'role_controlled_by_asset' => 'توسط دارایی که در آن آپلود می شود کنترل می شود', diff --git a/lang/fi/notifications.php b/lang/fi/notifications.php index a737ad7d9..647378ded 100644 --- a/lang/fi/notifications.php +++ b/lang/fi/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Päivitetty sivu: :pageName', 'updated_page_intro' => 'Sivu on päivitetty sivustolla :appName:', 'updated_page_debounce' => 'Useiden ilmoitusten välttämiseksi sinulle ei toistaiseksi lähetetä ilmoituksia saman toimittajan tekemistä uusista muokkauksista tälle sivulle.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Sivun nimi:', 'detail_page_path' => 'Sivun polku:', diff --git a/lang/fi/preferences.php b/lang/fi/preferences.php index 25cd76bf7..05afc111f 100644 --- a/lang/fi/preferences.php +++ b/lang/fi/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Hallitse järjestelmän toimintoihin liittyviä sähköposti-ilmoituksia.', 'notifications_opt_own_page_changes' => 'Ilmoita omistamilleni sivuille tehdyistä muutoksista', 'notifications_opt_own_page_comments' => 'Ilmoita omistamilleni sivuille tehdyistä kommenteista', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Ilmoita vastauksista kommentteihini', 'notifications_save' => 'Tallenna asetukset', 'notifications_update_success' => 'Ilmoitusasetukset on päivitetty!', diff --git a/lang/fi/settings.php b/lang/fi/settings.php index d9e91d4fa..499122fe3 100644 --- a/lang/fi/settings.php +++ b/lang/fi/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ei rajoituksia', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Huolto', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Vaihda sivun editoria', 'role_notifications' => 'Vastaanota ja hallinnoi ilmoituksia', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Sisältöjen oikeudet', 'roles_system_warning' => 'Huomaa, että minkä tahansa edellä mainituista kolmesta käyttöoikeudesta voi antaa käyttäjälle mahdollisuuden muuttaa omia tai muiden järjestelmän käyttäjien oikeuksia. Anna näitä oikeuksia sisältävät roolit vain luotetuille käyttäjille.', 'role_asset_desc' => 'Näillä asetuksilla hallitaan oletuksena annettavia käyttöoikeuksia järjestelmässä oleviin sisältöihin. Yksittäisten kirjojen, lukujen ja sivujen käyttöoikeudet kumoavat nämä käyttöoikeudet.', 'role_asset_admins' => 'Ylläpitäjät saavat automaattisesti pääsyn kaikkeen sisältöön, mutta nämä vaihtoehdot voivat näyttää tai piilottaa käyttöliittymävalintoja.', 'role_asset_image_view_note' => 'Tämä tarkoittaa näkyvyyttä kuvien hallinnassa. Pääsy ladattuihin kuvatiedostoihin riippuu asetetusta kuvien tallennusvaihtoehdosta.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Kaikki', 'role_own' => 'Omat', 'role_controlled_by_asset' => 'Määräytyy sen sisällön mukaan, johon ne on ladattu', diff --git a/lang/fr/notifications.php b/lang/fr/notifications.php index 5d7ae88f7..b82f82bd0 100644 --- a/lang/fr/notifications.php +++ b/lang/fr/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Page mise à jour: :pageName', 'updated_page_intro' => 'Une page a été mise à jour dans :appName:', 'updated_page_debounce' => 'Pour éviter de nombreuses notifications, pendant un certain temps, vous ne recevrez pas de notifications pour d\'autres modifications de cette page par le même éditeur.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nom de la page :', 'detail_page_path' => 'Chemin de la page :', diff --git a/lang/fr/preferences.php b/lang/fr/preferences.php index 2180ed70c..c595222f1 100644 --- a/lang/fr/preferences.php +++ b/lang/fr/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Contrôlez les notifications par e-mail que vous recevez lorsque certaines activités sont effectuées dans le système.', 'notifications_opt_own_page_changes' => 'Notifier lors des modifications des pages que je possède', 'notifications_opt_own_page_comments' => 'Notifier lorsque les pages que je possède sont commentées', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notifier les réponses à mes commentaires', 'notifications_save' => 'Enregistrer les préférences', 'notifications_update_success' => 'Les préférences de notification ont été mises à jour !', diff --git a/lang/fr/settings.php b/lang/fr/settings.php index e73d8a4b1..7ce2312f3 100644 --- a/lang/fr/settings.php +++ b/lang/fr/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Aucune restriction en place', // Sorting Settings - 'sorting' => 'Tri', - 'sorting_book_default' => 'Tri des livres par défaut', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Sélectionnez le tri par défaut à mettre en place sur les nouveaux livres. Cela n’affectera pas les livres existants, et peut être redéfini dans les livres.', 'sorting_rules' => 'Règles de tri', 'sorting_rules_desc' => 'Ce sont les opérations de tri qui peuvent être appliquées au contenu du système.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Date de mise à jour', 'sort_rule_op_chapters_first' => 'Chapitres en premier', 'sort_rule_op_chapters_last' => 'Chapitres en dernier', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importer le contenu', 'role_editor_change' => 'Changer l\'éditeur de page', 'role_notifications' => 'Recevoir et gérer les notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Permissions des ressources', 'roles_system_warning' => 'Sachez que l\'accès à l\'une des trois permissions ci-dessus peut permettre à un utilisateur de modifier ses propres privilèges ou les privilèges des autres utilisateurs du système. N\'attribuez uniquement des rôles avec ces permissions qu\'à des utilisateurs de confiance.', 'role_asset_desc' => 'Ces permissions contrôlent l\'accès par défaut des ressources dans le système. Les permissions dans les livres, les chapitres et les pages ignoreront ces permissions', 'role_asset_admins' => 'Les administrateurs ont automatiquement accès à tous les contenus mais les options suivantes peuvent afficher ou masquer certaines options de l\'interface.', 'role_asset_image_view_note' => 'Cela concerne la visibilité dans le gestionnaire d\'images. L\'accès réel des fichiers d\'image téléchargés dépendra de l\'option de stockage d\'images du système.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Tous', 'role_own' => 'Propres', 'role_controlled_by_asset' => 'Contrôlé par les ressources les ayant envoyés', diff --git a/lang/he/notifications.php b/lang/he/notifications.php index 8385c0a6d..cfab57117 100644 --- a/lang/he/notifications.php +++ b/lang/he/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'עמוד עודכן :pageName', 'updated_page_intro' => 'דף עודכן ב:appName:', 'updated_page_debounce' => 'על מנת לעצור הצפת התראות, לזמן מסוים אתה לא תקבל התראות על שינויים עתידיים בדף זה על ידי אותו עורך.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'שם עמוד:', 'detail_page_path' => 'נתיב לעמוד:', diff --git a/lang/he/preferences.php b/lang/he/preferences.php index 9e05eefb3..fa0c89ea5 100644 --- a/lang/he/preferences.php +++ b/lang/he/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'העדפות קבלת מייל והתראות כאשר מבוצעת פעולה מסויימת במערכת.', 'notifications_opt_own_page_changes' => 'עדכן אותי כאשר מתבצעים שינויים לדפים שבבעלותי', 'notifications_opt_own_page_comments' => 'עדכן אותי כאשר נוספות הערות לדפים שבבעלותי', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'עדכן אותי כאשר מתקבלות תגובות להערות שלי', 'notifications_save' => 'שמור העדפות', 'notifications_update_success' => 'הגדרת התראות עודכנו!', diff --git a/lang/he/settings.php b/lang/he/settings.php index 5b405072f..0b5034475 100644 --- a/lang/he/settings.php +++ b/lang/he/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'אין הגבלה לדומיין', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'תחזוקה', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'שנה עורך עמודים', 'role_notifications' => 'ניהול התראות', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'הרשאות משאבים', 'roles_system_warning' => 'שימו לב לכך שגישה לכל אחת משלושת ההרשאות הנ"ל יכולה לאפשר למשתמש לשנות את הפריווילגיות שלהם או של אחרים במערכת. הגדירו תפקידים להרשאות אלה למשתמשים בהם אתם בוטחים בלבד.', 'role_asset_desc' => 'הרשאות אלו שולטות בגישת ברירת המחדל למשאבים בתוך המערכת. הרשאות של ספרים, פרקים ודפים יגברו על הרשאות אלו.', 'role_asset_admins' => 'מנהלים מקבלים הרשאה מלאה לכל התוכן אך אפשרויות אלו עלולות להציג או להסתיר אפשרויות בממשק', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'הכל', 'role_own' => 'שלי', 'role_controlled_by_asset' => 'נשלטים על ידי המשאב אליו הועלו', diff --git a/lang/hr/notifications.php b/lang/hr/notifications.php index c3a38cdfa..c9428e2dc 100644 --- a/lang/hr/notifications.php +++ b/lang/hr/notifications.php @@ -13,6 +13,8 @@ return [ Ažurirana stranica: :pageName', 'updated_page_intro' => 'Stranica je ažurirana u :appName:', 'updated_page_debounce' => 'Kako biste spriječili velik broj obavijesti, nećete primati obavijesti o daljnjim izmjenama ove stranice od istog urednika neko vrijeme.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Naziv Stranice:', 'detail_page_path' => 'Page Path:', diff --git a/lang/hr/preferences.php b/lang/hr/preferences.php index 2f409f8d3..5da5a72fb 100644 --- a/lang/hr/preferences.php +++ b/lang/hr/preferences.php @@ -25,6 +25,7 @@ return [ 'notifications_opt_own_page_comments' => 'ChatGPT Obavijesti o komentarima na stranicama koje posjedujem', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Obavijesti o odgovorima na moje komentare', 'notifications_save' => 'Spremi Postavke', 'notifications_update_success' => 'Postavke obavijesti su ažurirane!', diff --git a/lang/hr/settings.php b/lang/hr/settings.php index 5f0007426..6465d0ea7 100644 --- a/lang/hr/settings.php +++ b/lang/hr/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Bez ograničenja', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Održavanje', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Promijeni uređivač stranica', 'role_notifications' => 'Primanje i upravljanje obavijestima', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Upravljanje vlasništvom', 'roles_system_warning' => 'Uzmite u obzir da pristup bilo kojem od ovih dopuštenja dozvoljavate korisniku upravljanje dopuštenjima ostalih u sustavu. Ova dopuštenja dodijelite pouzdanim korisnicima.', 'role_asset_desc' => 'Ova dopuštenja kontroliraju zadane pristupe. Dopuštenja za knjige, poglavlja i stranice ih poništavaju.', 'role_asset_admins' => 'Administratori automatski imaju pristup svim sadržajima, ali ove opcije mogu prikazati ili sakriti korisnička sučelja.', 'role_asset_image_view_note' => 'Ovo se odnosi na vidljivost unutar upravitelja slika. Stvarni pristup uploadiranim slikovnim datotekama ovisit će o odabranim opcijama pohrane slika u sustavu.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Sve', 'role_own' => 'Vlastito', 'role_controlled_by_asset' => 'Kontrolirano od strane vlasnika', diff --git a/lang/hu/notifications.php b/lang/hu/notifications.php index c8cae9143..d8a29688a 100644 --- a/lang/hu/notifications.php +++ b/lang/hu/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Frissített oldal: :pageName', 'updated_page_intro' => 'Az oldal frissítése sikeres volt itt: :appName:', 'updated_page_debounce' => 'Az értesítések tömegének elkerülése érdekében egy ideig nem kap értesítést az oldal további szerkesztéseiről ugyanaz a szerkesztő.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Oldal neve:', 'detail_page_path' => 'Oldal helye:', diff --git a/lang/hu/preferences.php b/lang/hu/preferences.php index 4251a28fb..fb3c335e8 100644 --- a/lang/hu/preferences.php +++ b/lang/hu/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Állítsd be az e-mail értesítéseket, amelyeket akkor kapsz, ha bizonyos tevékenység történik a rendszeren belül.', 'notifications_opt_own_page_changes' => 'Értesítsen változásokról az általam tulajdonolt oldalakon', 'notifications_opt_own_page_comments' => 'Értesítés a hozzászólásokról az általam tulajdonolt oldalakon', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Értesítsen válaszokról a hozzászólásaimra', 'notifications_save' => 'Beállítások mentése', 'notifications_update_success' => 'Az értesítési beállítások frissítve lettek!', diff --git a/lang/hu/settings.php b/lang/hu/settings.php index 813fee7b0..c6810ed68 100644 --- a/lang/hu/settings.php +++ b/lang/hu/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nincs beállítva korlátozás', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Karbantartás', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Oldalszerkesztő módosítása', 'role_notifications' => 'Értesítések fogadása és kezelése', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Eszköz jogosultságok', 'roles_system_warning' => 'Ne feledje, hogy a fenti három engedély bármelyikéhez való hozzáférés lehetővé teszi a felhasználó számára, hogy módosítsa saját vagy a rendszerben mások jogosultságait. Csak megbízható felhasználókhoz rendeljen szerepeket ezekkel az engedélyekkel.', 'role_asset_desc' => 'Ezek a jogosultságok vezérlik az alapértelmezés szerinti hozzáférést a rendszerben található eszközökhöz. A könyvek, fejezetek és oldalak jogosultságai felülírják ezeket a jogosultságokat.', 'role_asset_admins' => 'Az adminisztrátorok automatikusan hozzáférést kapnak minden tartalomhoz, de ezek a beállítások megjeleníthetnek vagy elrejthetnek felhasználói felület beállításokat.', 'role_asset_image_view_note' => 'Ez a képkezelőn belüli láthatóságra vonatkozik. A feltöltött képfájlok tényleges elérése a rendszerkép tárolási beállításától függ.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Összes', 'role_own' => 'Saját', 'role_controlled_by_asset' => 'Az általuk feltöltött eszköz által ellenőrzött', diff --git a/lang/id/notifications.php b/lang/id/notifications.php index b22af1f73..7b9d2181a 100644 --- a/lang/id/notifications.php +++ b/lang/id/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Halaman yang diperbarui: :pageName', 'updated_page_intro' => 'Halaman telah diperbarui di :appName:', 'updated_page_debounce' => 'Untuk mencegah banyaknya pemberitahuan, untuk sementara Anda tidak akan dikirimi pemberitahuan untuk pengeditan lebih lanjut pada halaman ini oleh editor yang sama.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nama Halaman:', 'detail_page_path' => 'Jalur Halaman:', diff --git a/lang/id/passwords.php b/lang/id/passwords.php index 3ee2e4d57..2559b2651 100644 --- a/lang/id/passwords.php +++ b/lang/id/passwords.php @@ -6,7 +6,7 @@ */ return [ - 'password' => 'Kata sandi harus setidaknya delapan karakter dan sesuai dengan konfirmasi.', + 'password' => 'Passwords must be at least eight characters and match the confirmation.', 'user' => "Kami tidak dapat menemukan pengguna dengan alamat email tersebut.", 'token' => 'Token setel ulang sandi tidak valid untuk alamat email ini.', 'sent' => 'Kami telah mengirimkan email tautan pengaturan ulang kata sandi Anda!', diff --git a/lang/id/preferences.php b/lang/id/preferences.php index a1bb346b8..1c7d4248d 100644 --- a/lang/id/preferences.php +++ b/lang/id/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/id/settings.php b/lang/id/settings.php index 51c0613cb..cc9426683 100644 --- a/lang/id/settings.php +++ b/lang/id/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Tidak ada batasan yang ditetapkan', // Sorting Settings - 'sorting' => 'Menyortir', - 'sorting_book_default' => 'Penyortiran Buku Default', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Pilih aturan sortir default yang akan diterapkan pada buku baru. Aturan ini tidak akan memengaruhi buku yang sudah ada, dan dapat diganti per buku.', 'sorting_rules' => 'Aturan Penyortiran', 'sorting_rules_desc' => 'Ini adalah operasi penyortiran yang telah ditetapkan sebelumnya yang dapat diterapkan pada konten dalam sistem.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Tanggal Pembaruan', 'sort_rule_op_chapters_first' => 'Bab di Urutan Pertama', 'sort_rule_op_chapters_last' => 'Bab di Urutan Terakhir', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Pemeliharaan', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Impor Konten', 'role_editor_change' => 'Ubah editor halaman', 'role_notifications' => 'Terima dan kelola notifikasi', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Izin Aset', 'roles_system_warning' => 'Ketahuilah bahwa akses ke salah satu dari tiga izin di atas dapat memungkinkan pengguna untuk mengubah hak mereka sendiri atau orang lain dalam sistem. Hanya tetapkan peran dengan izin ini untuk pengguna tepercaya.', 'role_asset_desc' => 'Izin ini mengontrol akses default ke aset dalam sistem. Izin pada Buku, Bab, dan Halaman akan menggantikan izin ini.', 'role_asset_admins' => 'Admin secara otomatis diberi akses ke semua konten tetapi opsi ini dapat menampilkan atau menyembunyikan opsi UI.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Semua', 'role_own' => 'Sendiri', 'role_controlled_by_asset' => 'Dikendalikan oleh aset tempat mereka diunggah', diff --git a/lang/is/notifications.php b/lang/is/notifications.php index b4fe01ad7..956fc7432 100644 --- a/lang/is/notifications.php +++ b/lang/is/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Uppfærð síða á: :pageName', 'updated_page_intro' => 'Síða hefur verið uppfærð á :appName:', 'updated_page_debounce' => 'Til að fyrirbyggja fjöldatilkynningar verður þér ekki sendar tilkynningar í smá stund um uppfærslu á þessari síðu frá sama höfundi.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Síðunafn:', 'detail_page_path' => 'Síðuslóð:', diff --git a/lang/is/preferences.php b/lang/is/preferences.php index b7ebc2df0..b6f261deb 100644 --- a/lang/is/preferences.php +++ b/lang/is/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Stýrðu þeim tölvupóst tilkynningum sem þú færð þegar ákveðnar aðgerðir eru gerðar af kerfinu.', 'notifications_opt_own_page_changes' => 'Láta vita þegar gerðar eru breytingar á síðum sem ég á', 'notifications_opt_own_page_comments' => 'Láta vita þegar gerðar eru athugasmedir við síður sem ég á', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Láta vita þegar athugasemdum mínum er svarað', 'notifications_save' => 'Vista stillingar', 'notifications_update_success' => 'Stillingar á tilkynningum hafa verið uppfærðar!', diff --git a/lang/is/settings.php b/lang/is/settings.php index 3765db061..5699c88d6 100644 --- a/lang/is/settings.php +++ b/lang/is/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Engin skilyrði sett', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Viðhald', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Flytja inn efni', 'role_editor_change' => 'Skipta um ritil síðu', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Allt', 'role_own' => 'Eigin', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/it/notifications.php b/lang/it/notifications.php index 6b8932ebe..a4e57abdf 100644 --- a/lang/it/notifications.php +++ b/lang/it/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Pagina aggiornata: :pageName', 'updated_page_intro' => 'Una pagina è stata aggiornata in :appName:', 'updated_page_debounce' => 'Per evitare una massa di notifiche, per un po\' non ti verranno inviate notifiche per ulteriori modifiche a questa pagina dallo stesso editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nome della pagina:', 'detail_page_path' => 'Percorso della pagina:', diff --git a/lang/it/preferences.php b/lang/it/preferences.php index f25138401..db6b90754 100644 --- a/lang/it/preferences.php +++ b/lang/it/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Controlla le notifiche email che ricevi quando viene eseguita una determinata attività all\'interno del sistema.', 'notifications_opt_own_page_changes' => 'Notifica in caso di modifiche alle pagine che possiedo', 'notifications_opt_own_page_comments' => 'Notifica i commenti sulle pagine che possiedo', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notificare le risposte ai miei commenti', 'notifications_save' => 'Salva preferenze', 'notifications_update_success' => 'Le preferenze di notifica sono state aggiornate!', diff --git a/lang/it/settings.php b/lang/it/settings.php index 8bda7f8ff..9f2d882af 100644 --- a/lang/it/settings.php +++ b/lang/it/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nessuna restrizione impostata', // Sorting Settings - 'sorting' => 'Ordinamento', - 'sorting_book_default' => 'Ordinamento libri predefinito', + 'sorting' => 'Elenchi E Ordinamento', + 'sorting_book_default' => 'Regola Di Ordinamento Libro Predefinita', 'sorting_book_default_desc' => 'Selezionare la regola di ordinamento predefinita da applicare ai nuovi libri. Questa regola non influisce sui libri esistenti e può essere modificata per ogni libro.', 'sorting_rules' => 'Regole di ordinamento', 'sorting_rules_desc' => 'Si tratta di operazioni di ordinamento predefinite applicabili ai contenuti del sistema.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Data di aggiornamento', 'sort_rule_op_chapters_first' => 'Capitoli Prima', 'sort_rule_op_chapters_last' => 'Capitoli dopo', + 'sorting_page_limits' => 'Limiti Visualizzazione Per Pagina', + 'sorting_page_limits_desc' => 'Imposta il numero di elementi da visualizzare per pagina nei vari elenchi all\'interno del sistema. In genere, un numero inferiore garantisce prestazioni migliori, mentre un numero più elevato evita la necessità di cliccare su più pagine. Si consiglia di utilizzare un multiplo pari di 3 (18, 24, 30, ecc...).', // Maintenance settings 'maint' => 'Manutenzione', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importa contenuto', 'role_editor_change' => 'Cambiare editor di pagina', 'role_notifications' => 'Ricevere e gestire le notifiche', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Permessi entità', 'roles_system_warning' => 'Siate consapevoli che l\'accesso a uno dei tre permessi qui sopra può consentire a un utente di modificare i propri privilegi o i privilegi di altri nel sistema. Assegna ruoli con questi permessi solo ad utenti fidati.', 'role_asset_desc' => 'Questi permessi controllano l\'accesso predefinito alle entità. I permessi in libri, capitoli e pagine sovrascriveranno questi.', 'role_asset_admins' => 'Gli amministratori hanno automaticamente accesso a tutti i contenuti ma queste opzioni possono mostrare o nascondere le opzioni della UI.', 'role_asset_image_view_note' => 'Questo si riferisce alla visibilità all\'interno del gestore delle immagini. L\'accesso effettivo ai file di immagine caricati dipenderà dall\'opzione di archiviazione delle immagini di sistema.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Tutti', 'role_own' => 'Propri', 'role_controlled_by_asset' => 'Controllato dall\'entità in cui sono caricati', diff --git a/lang/ja/notifications.php b/lang/ja/notifications.php index 6fc0321d3..981932178 100644 --- a/lang/ja/notifications.php +++ b/lang/ja/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'ページの更新: :pageName', 'updated_page_intro' => ':appName でページが更新されました', 'updated_page_debounce' => '大量の通知を防ぐために、しばらくの間は同じユーザがこのページをさらに編集しても通知は送信されません。', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'ページ名:', 'detail_page_path' => 'ページパス:', diff --git a/lang/ja/preferences.php b/lang/ja/preferences.php index 0207596a9..a47906929 100644 --- a/lang/ja/preferences.php +++ b/lang/ja/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'システム内で特定のアクティビティが実行されたときに受信する電子メール通知を制御します。', 'notifications_opt_own_page_changes' => '自分が所有するページの変更を通知する', 'notifications_opt_own_page_comments' => '自分が所有するページへのコメントを通知する', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => '自分のコメントへの返信を通知する', 'notifications_save' => '設定を保存', 'notifications_update_success' => '通知設定を更新しました。', diff --git a/lang/ja/settings.php b/lang/ja/settings.php index db14f3ccc..a19c942b2 100644 --- a/lang/ja/settings.php +++ b/lang/ja/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => '制限しない', // Sorting Settings - 'sorting' => 'ソート', - 'sorting_book_default' => 'ブックのデフォルトソート', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => '新しいブックに適用するデフォルトのソートルールを選択します。これは既存のブックには影響しません。ルールはブックごとに上書きすることができます。', 'sorting_rules' => 'ソートルール', 'sorting_rules_desc' => 'これらはシステム内のコンテンツに適用できる事前定義のソート操作です。', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => '更新日時', 'sort_rule_op_chapters_first' => 'チャプタを最初に', 'sort_rule_op_chapters_last' => 'チャプタを最後に', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'メンテナンス', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'コンテンツのインポート', 'role_editor_change' => 'ページエディタの変更', 'role_notifications' => '通知の受信と管理', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'アセット権限', 'roles_system_warning' => '上記の3つの権限のいずれかを付与することは、ユーザーが自分の特権またはシステム内の他のユーザーの特権を変更できる可能性があることに注意してください。これらの権限は信頼できるユーザーにのみ割り当ててください。', 'role_asset_desc' => '各アセットに対するデフォルトの権限を設定します。ここで設定した権限が優先されます。', 'role_asset_admins' => '管理者にはすべてのコンテンツへのアクセス権が自動的に付与されますが、これらのオプションはUIオプションを表示または非表示にする場合があります。', 'role_asset_image_view_note' => 'これは画像マネージャー内の可視性に関連しています。アップロードされた画像ファイルへの実際のアクセスは、システムの画像保存オプションに依存します。', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => '全て', 'role_own' => '自身', 'role_controlled_by_asset' => 'このアセットに対し、右記の操作を許可:', diff --git a/lang/ka/notifications.php b/lang/ka/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/ka/notifications.php +++ b/lang/ka/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/ka/preferences.php b/lang/ka/preferences.php index 2872f5f3c..f4459d738 100644 --- a/lang/ka/preferences.php +++ b/lang/ka/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/ka/settings.php b/lang/ka/settings.php index 81c2c0a93..c68605fe1 100644 --- a/lang/ka/settings.php +++ b/lang/ka/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/ko/notifications.php b/lang/ko/notifications.php index b337fa86d..a5abcf0f9 100644 --- a/lang/ko/notifications.php +++ b/lang/ko/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => '페이지 업데이트됨: :pageName', 'updated_page_intro' => ':appName: 에서 페이지가 업데이트되었습니다:', 'updated_page_debounce' => '알림이 한꺼번에 몰리는 것을 방지하기 위해 당분간 동일한 편집자가 이 페이지를 추가로 편집할 경우 알림이 전송되지 않습니다.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => '페이지 이름:', 'detail_page_path' => '페이지 경로:', diff --git a/lang/ko/preferences.php b/lang/ko/preferences.php index 79692f564..1979a23e4 100644 --- a/lang/ko/preferences.php +++ b/lang/ko/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => '시스템 내에서 특정 활동이 수행될 때 수신하는 이메일 알림을 제어합니다.', 'notifications_opt_own_page_changes' => '내가 소유한 페이지가 변경되면 알림 받기', 'notifications_opt_own_page_comments' => '내가 소유한 페이지에 댓글이 달렸을 때 알림 받기', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => '내 댓글에 대한 답글 알림 받기', 'notifications_save' => '환경설정 저장', 'notifications_update_success' => '알림 환경설정이 업데이트되었습니다!', diff --git a/lang/ko/settings.php b/lang/ko/settings.php index 797c12043..1138b0ece 100644 --- a/lang/ko/settings.php +++ b/lang/ko/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => '차단한 도메인 없음', // Sorting Settings - 'sorting' => '정렬', - 'sorting_book_default' => '기본 책 정렬', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => '새로운 책에 적용할 기본 정렬 규칙을 선택하세요. 이 선택은 기존 책에는 영향을 주지 않고, 기존 책의 설정은 책마다 변경할 수 있습니다.', 'sorting_rules' => '정렬 규칙', 'sorting_rules_desc' => '현재 시스템에 미리 정의된 정렬 규칙의 목록입니다.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => '수정일', 'sort_rule_op_chapters_first' => '챕터 우선 정렬', 'sort_rule_op_chapters_last' => '챕터 나중 정렬', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => '유지관리', @@ -195,11 +197,13 @@ return [ 'role_import_content' => '내용 가져오기', 'role_editor_change' => '페이지 편집기 변경', 'role_notifications' => '알림 수신 및 관리', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => '권한 항목', 'roles_system_warning' => '위 세 권한은 자신의 권한이나 다른 유저의 권한을 바꿀 수 있습니다.', 'role_asset_desc' => '책, 챕터, 문서별 권한은 이 설정에 우선합니다.', 'role_asset_admins' => '관리자 권한은 어디든 접근할 수 있지만 이 설정은 사용자 인터페이스에서 해당 활동을 표시할지 결정합니다.', 'role_asset_image_view_note' => '이는 이미지 관리자 내 가시성과 관련이 있습니다. 업로드된 이미지 파일의 실제 접근은 시스템의 이미지 저장 설정에 따라 달라집니다.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => '모든 항목', 'role_own' => '직접 만든 항목', 'role_controlled_by_asset' => '저마다 다름', diff --git a/lang/ku/notifications.php b/lang/ku/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/ku/notifications.php +++ b/lang/ku/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/ku/preferences.php b/lang/ku/preferences.php index 2872f5f3c..f4459d738 100644 --- a/lang/ku/preferences.php +++ b/lang/ku/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/ku/settings.php b/lang/ku/settings.php index 81c2c0a93..c68605fe1 100644 --- a/lang/ku/settings.php +++ b/lang/ku/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/lt/notifications.php b/lang/lt/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/lt/notifications.php +++ b/lang/lt/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/lt/preferences.php b/lang/lt/preferences.php index 5c38d191c..6258fcae7 100644 --- a/lang/lt/preferences.php +++ b/lang/lt/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/lt/settings.php b/lang/lt/settings.php index 563038bf2..8120d85fe 100644 --- a/lang/lt/settings.php +++ b/lang/lt/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nėra jokių apribojimų', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Priežiūra', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Nuosavybės leidimai', 'roles_system_warning' => 'Būkite sąmoningi, kad prieiga prie bet kurio iš trijų leidimų viršuje gali leisti naudotojui pakeisti jų pačių privilegijas arba kitų privilegijas sistemoje. Paskirkite vaidmenis su šiais leidimais tik patikimiems naudotojams.', 'role_asset_desc' => 'Šie leidimai kontroliuoja numatytą prieigą į nuosavybę, esančią sistemoje. Knygų, skyrių ir puslapių leidimai nepaisys šių leidimų.', 'role_asset_admins' => 'Administratoriams automatiškai yra suteikiama prieiga prie viso turinio, tačiau šie pasirinkimai gali rodyti arba slėpti vartotojo sąsajos parinktis.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Visi', 'role_own' => 'Nuosavi', 'role_controlled_by_asset' => 'Kontroliuojami nuosavybės, į kurią yra įkelti', diff --git a/lang/lv/notifications.php b/lang/lv/notifications.php index 9fd60222a..7233822a4 100644 --- a/lang/lv/notifications.php +++ b/lang/lv/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Atjaunināta lapa: :pageName', 'updated_page_intro' => 'Lapa atjaunināta :appName:', 'updated_page_debounce' => 'Lai novērstu pārliecīgu paziņojumu sūtīšanu, uz laiku jums tiks pārtraukti paziņojumi par turpmākiem šī lietotāja labojumiem šai lapai.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Lapas nosaukums:', 'detail_page_path' => 'Ceļš uz lapu:', diff --git a/lang/lv/preferences.php b/lang/lv/preferences.php index b91cc2e08..3c107d5fa 100644 --- a/lang/lv/preferences.php +++ b/lang/lv/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Pārvaldiet epasta paziņojumus, ko saņemsiet, kad sistēmā tiek veiktas noteiktas darbības.', 'notifications_opt_own_page_changes' => 'Paziņot par izmaiņām manās lapās', 'notifications_opt_own_page_comments' => 'Paziņot par komentāriem manās lapās', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Paziņot par atbildēm uz maniem komentāriem', 'notifications_save' => 'Saglabāt iestatījumus', 'notifications_update_success' => 'Paziņojumu iestatījumi ir atjaunoti!', diff --git a/lang/lv/settings.php b/lang/lv/settings.php index 9901f7811..fb5cf13dd 100644 --- a/lang/lv/settings.php +++ b/lang/lv/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nav ierobežojumu', // Sorting Settings - 'sorting' => 'Kārtošana', - 'sorting_book_default' => 'Noklusētā grāmatu kārtošana', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Izvēlieties noklusēto kārtošanas nosacījumu, ko pielietot jaunām grāmatām. Šis neskars jau esošas grāmatas, un to var izmainīt grāmatas iestatījumos.', 'sorting_rules' => 'Kārtošanas noteikumi', 'sorting_rules_desc' => 'Šīs ir iepriekš noteiktas kārtošanas darbības, ko var pielietot saturam šajā sistēmā.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Atjaunināšanas datums', 'sort_rule_op_chapters_first' => 'Nodaļas pirmās', 'sort_rule_op_chapters_last' => 'Nodaļas pēdējās', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Apkope', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importēt saturu', 'role_editor_change' => 'Mainīt lapu redaktoru', 'role_notifications' => 'Saņemt un pārvaldīt paziņojumus', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Resursa piekļuves tiesības', 'roles_system_warning' => 'Jebkuras no trīs augstāk redzamajām atļaujām dod iespēju lietotājam mainīt savas un citu lietotāju sistēmas atļaujas. Pievieno šīs grupu atļaujas tikai tiem lietotājiem, kuriem uzticies.', 'role_asset_desc' => 'Šīs piekļuves tiesības kontrolē noklusēto piekļuvi sistēmas resursiem. Grāmatām, nodaļām un lapām norādītās tiesības būs pārākas par šīm.', 'role_asset_admins' => 'Administratoriem automātiski ir piekļuve visam saturam, bet šie uzstādījumi var noslēpt vai parādīt lietotāja saskarnes iespējas.', 'role_asset_image_view_note' => 'Šis ir saistīts ar redzamību attēlu pārvaldniekā. Faktiskā piekļuve augšupielādēto attēlu failiem būs atkarīga no sistēmas attēlu glabātuves uzstādījuma.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Visi', 'role_own' => 'Savi', 'role_controlled_by_asset' => 'Kontrolē resurss, uz ko tie ir augšupielādēti', diff --git a/lang/nb/editor.php b/lang/nb/editor.php index 77b01f17b..23a788d71 100644 --- a/lang/nb/editor.php +++ b/lang/nb/editor.php @@ -48,7 +48,7 @@ return [ 'superscript' => 'Hevet skrift', 'subscript' => 'Senket skrift', 'text_color' => 'Tekstfarge', - 'highlight_color' => 'Highlight color', + 'highlight_color' => 'Uthevingsfarge', 'custom_color' => 'Egenvalgt farge', 'remove_color' => 'Fjern farge', 'background_color' => 'Bakgrunnsfarge', diff --git a/lang/nb/notifications.php b/lang/nb/notifications.php index bb46e09db..1e16229f3 100644 --- a/lang/nb/notifications.php +++ b/lang/nb/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Oppdatert side: :pageName', 'updated_page_intro' => 'En side er oppdatert i :appName:', 'updated_page_debounce' => 'For å forhindre mange varslinger, vil du ikke få nye varslinger for endringer på denne siden fra samme forfatter.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Sidenavn:', 'detail_page_path' => 'Side bane:', diff --git a/lang/nb/preferences.php b/lang/nb/preferences.php index 245c9c954..6a6850b83 100644 --- a/lang/nb/preferences.php +++ b/lang/nb/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Kontroller e-postvarslene du mottar når en bestemt aktivitet utføres i systemet.', 'notifications_opt_own_page_changes' => 'Varsle ved endringer til sider jeg eier', 'notifications_opt_own_page_comments' => 'Varsle om kommentarer på sider jeg eier', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Varsle ved svar på mine kommentarer', 'notifications_save' => 'Lagre innstillinger', 'notifications_update_success' => 'Varslingsinnstillingene er oppdatert!', diff --git a/lang/nb/settings.php b/lang/nb/settings.php index 68bab6f30..d1f40814e 100644 --- a/lang/nb/settings.php +++ b/lang/nb/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ingen begrensninger er satt', // Sorting Settings - 'sorting' => 'Sortering', - 'sorting_book_default' => 'Standard boksortering', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Velg standard sorteringsregelen som skal brukes for nye bøker. Dette vil ikke påvirke eksisterende bøker, og kan overstyres per bok.', 'sorting_rules' => 'Sorteringsregler', 'sorting_rules_desc' => 'Dette er forhåndsdefinerte sorteringsoperasjoner som kan brukes på innhold i systemet.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Kapitler først', 'sort_rule_op_chapters_last' => 'Kapitler sist', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Vedlikehold', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import innhold', 'role_editor_change' => 'Endre sideredigering', 'role_notifications' => 'Motta og administrere varslinger', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Eiendomstillatelser', 'roles_system_warning' => 'Vær oppmerksom på at tilgang til noen av de ovennevnte tre tillatelsene kan tillate en bruker å endre sine egne rettigheter eller rettighetene til andre i systemet. Bare tildel roller med disse tillatelsene til pålitelige brukere.', 'role_asset_desc' => 'Disse tillatelsene kontrollerer standard tilgang til eiendelene i systemet. Tillatelser til bøker, kapitler og sider overstyrer disse tillatelsene.', 'role_asset_admins' => 'Administratorer får automatisk tilgang til alt innhold, men disse alternativene kan vise eller skjule UI-alternativer.', 'role_asset_image_view_note' => 'Dette gjelder synlighet innenfor bilde-administrasjonen. Faktisk tilgang på opplastede bildefiler vil være avhengig av valget for systemlagring av bildet.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Alle', 'role_own' => 'Egne', 'role_controlled_by_asset' => 'Kontrollert av eiendelen de er lastet opp til', diff --git a/lang/ne/notifications.php b/lang/ne/notifications.php index 1e9c57221..a4eb69832 100644 --- a/lang/ne/notifications.php +++ b/lang/ne/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'पाना अपडेट भयो: :pageName', 'updated_page_intro' => ':appName मा पाना अपडेट गरिएको छ', 'updated_page_debounce' => 'धेरै सूचना नपरोस् भनेर, केही समयको लागि एउटै सम्पादकबाट हुने थप सम्पादनहरूका सूचना तपाईंलाई पठाइने छैन।', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'पानाको नाम:', 'detail_page_path' => 'पानाको स्थान:', diff --git a/lang/ne/preferences.php b/lang/ne/preferences.php index 70388e8ba..2efdafc9f 100644 --- a/lang/ne/preferences.php +++ b/lang/ne/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'प्रणालीमा केही क्रियाकलापहरू गर्दा तपाईंलाई प्राप्त हुने इमेल सूचनाहरू नियन्त्रण गर्नुहोस्।', 'notifications_opt_own_page_changes' => 'मैले स्वामित्व राख्ने पृष्ठहरूमा परिवर्तन हुँदा सूचित गर्नुहोस्', 'notifications_opt_own_page_comments' => 'मैले स्वामित्व राख्ने पृष्ठहरूमा टिप्पणी हुँदा सूचित गर्नुहोस्', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'मेरो टिप्पणीहरूमा उत्तर आएको बेला सूचित गर्नुहोस्', 'notifications_save' => 'प्राथमिकताहरू बचत गर्नुहोस्', 'notifications_update_success' => 'सूचना प्राथमिकताहरू अपडेट गरिएका छन्!', diff --git a/lang/ne/settings.php b/lang/ne/settings.php index eb99f26bd..37e59978e 100644 --- a/lang/ne/settings.php +++ b/lang/ne/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'कुनै प्रतिबन्ध छैन', // Sorting Settings - 'sorting' => 'क्रमबद्धता', - 'sorting_book_default' => 'डिफल्ट पुस्तक क्रम', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'नयाँ पुस्तकहरूमा लागु गर्न डिफल्ट क्रम नियम चयन गर्नुहोस्। यो अस्तित्वमा रहेका पुस्तकहरूमा असर पार्दैन र पुस्तक अनुसार ओभरराइड गर्न सकिन्छ।', 'sorting_rules' => 'क्रम नियमहरू', 'sorting_rules_desc' => 'यी पूर्वनिर्धारित क्रम सञ्चालनहरू हुन् जुन प्रणालीमा सामग्रीमा लागू गर्न सकिन्छ।', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'अपडेट मिति', 'sort_rule_op_chapters_first' => 'पहिले अध्यायहरू', 'sort_rule_op_chapters_last' => 'अन्त्यमा अध्यायहरू', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'सम्भार', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'सामग्री आयात गर्नुहोस्', 'role_editor_change' => 'पृष्ठ सम्पादक परिवर्तन गर्नुहोस्', 'role_notifications' => 'सूचनाहरू प्राप्त र व्यवस्थापन गर्नुहोस्', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'संपत्ति अनुमति', 'roles_system_warning' => 'माथिका कुनै पनि तीन अनुमति प्रयोगकर्ताले आफैं वा अरूका अधिकार परिवर्तन गर्न सक्छन्। यी अनुमति भएको भूमिका मात्र भरपर्दो प्रयोगकर्तालाई दिनुहोस्।', 'role_asset_desc' => 'यी अनुमतिले प्रणालीभित्र सम्पत्तिमा डिफल्ट पहुँच नियन्त्रण गर्छ। पुस्तक, अध्याय र पृष्ठमा अनुमति यी भन्दा प्राथमिक हुन्छ।', 'role_asset_admins' => 'प्रशासनकर्ताहरूलाई सबै सामग्रीमा स्वतः पहुँच दिइन्छ, यी विकल्पहरूले UI मा देखिने वा लुकेका विकल्पहरू मात्र प्रभाव पार्न सक्छ।', 'role_asset_image_view_note' => 'यो छवि व्यवस्थापक भित्रको दृश्यता सम्बन्धि हो। अपलोड गरिएको छविमा वास्तविक पहुँच प्रणालीको छवि भण्डारण विकल्प अनुसार हुन्छ।', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'सबै', 'role_own' => 'आफ्नो', 'role_controlled_by_asset' => 'अपलोड गरिएको सम्पत्तिले नियन्त्रण गरेको', diff --git a/lang/nl/notifications.php b/lang/nl/notifications.php index 1e7035670..ce2a3ebff 100644 --- a/lang/nl/notifications.php +++ b/lang/nl/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Aangepaste pagina: :pageName', 'updated_page_intro' => 'Een pagina werd aangepast in :appName:', 'updated_page_debounce' => 'Om een stortvloed aan meldingen te voorkomen, zul je een tijdje geen meldingen ontvangen voor verdere bewerkingen van deze pagina door dezelfde redacteur.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Pagina Naam:', 'detail_page_path' => 'Paginapad:', diff --git a/lang/nl/preferences.php b/lang/nl/preferences.php index d0e3623b9..1fb56af07 100644 --- a/lang/nl/preferences.php +++ b/lang/nl/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Bepaal welke e-mailmeldingen je ontvangt wanneer bepaalde activiteiten in het systeem worden uitgevoerd.', 'notifications_opt_own_page_changes' => 'Geef melding bij wijzigingen aan pagina\'s waarvan ik de eigenaar ben', 'notifications_opt_own_page_comments' => 'Geef melding van opmerkingen op pagina\'s waarvan ik de eigenaar ben', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Geef melding van reacties op mijn opmerkingen', 'notifications_save' => 'Voorkeuren opslaan', 'notifications_update_success' => 'Voorkeuren voor meldingen zijn bijgewerkt!', diff --git a/lang/nl/settings.php b/lang/nl/settings.php index 3b4da75a9..2041669eb 100644 --- a/lang/nl/settings.php +++ b/lang/nl/settings.php @@ -75,7 +75,7 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Geen beperkingen ingesteld', // Sorting Settings - 'sorting' => 'Sorteren', + 'sorting' => 'Lijsten & Sorteren', 'sorting_book_default' => 'Standaard Sorteerregel Boek', 'sorting_book_default_desc' => 'Selecteer de standaard sorteerregel om toe te passen op nieuwe boeken. Dit heeft geen invloed op bestaande boeken, en kan per boek worden overschreven.', 'sorting_rules' => 'Sorteerregels', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Bijwerkdatum', 'sort_rule_op_chapters_first' => 'Hoofdstukken Eerst', 'sort_rule_op_chapters_last' => 'Hoofdstukken Laatst', + 'sorting_page_limits' => 'Weergavelimiet Per Pagina', + 'sorting_page_limits_desc' => 'Stel in hoeveel items er op een pagina worden laten zien in de verschillende lijstweergaves. Een lager aantal verbeterd de snelheid, een hoger aantal verminderd het doorklikken door pagina\'s. Een even veelvoud van 3 (18, 24, 30, etc...) wordt aanbevolen.', // Maintenance settings 'maint' => 'Onderhoud', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importeer inhoud', 'role_editor_change' => 'Wijzig pagina bewerker', 'role_notifications' => 'Meldingen ontvangen & beheren', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Machtigingen', 'roles_system_warning' => 'Wees ervan bewust dat toegang tot een van de bovengenoemde drie machtigingen een gebruiker in staat kan stellen zijn eigen machtigingen of de machtigingen van anderen in het systeem kan wijzigen. Wijs alleen rollen toe met deze machtigingen aan vertrouwde gebruikers.', 'role_asset_desc' => 'Deze machtigingen bepalen de standaard toegang tot de assets binnen het systeem. Machtigingen op boeken, hoofdstukken en pagina\'s overschrijven deze instelling.', 'role_asset_admins' => 'Beheerders krijgen automatisch toegang tot alle inhoud, maar deze opties kunnen gebruikersinterface opties tonen of verbergen.', 'role_asset_image_view_note' => 'Dit heeft betrekking op de zichtbaarheid binnen de afbeeldingsbeheerder. De werkelijke toegang tot geüploade afbeeldingsbestanden hangt af van de gekozen opslagmethode.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Alles', 'role_own' => 'Eigen', 'role_controlled_by_asset' => 'Gecontroleerd door de asset waar deze is geüpload', diff --git a/lang/nn/notifications.php b/lang/nn/notifications.php index 247d8d105..25f0f30c8 100644 --- a/lang/nn/notifications.php +++ b/lang/nn/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Oppdatert side: :pageName', 'updated_page_intro' => 'Ei side vart oppdatert i :appName:', 'updated_page_debounce' => 'For å forhindre mange varslingar, vil du ikkje få nye varslinger for endringar på denne siden frå same forfattar.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Sidenamn:', 'detail_page_path' => 'Sidenamn:', diff --git a/lang/nn/preferences.php b/lang/nn/preferences.php index ac6dc1b77..17d1fca42 100644 --- a/lang/nn/preferences.php +++ b/lang/nn/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Kontroller e-postvarslene du mottar når en bestemt aktivitet utføres i systemet.', 'notifications_opt_own_page_changes' => 'Varsle ved endringer til sider jeg eier', 'notifications_opt_own_page_comments' => 'Varsle om kommentarer på sider jeg eier', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Varsle ved svar på mine kommentarer', 'notifications_save' => 'Lagre innstillinger', 'notifications_update_success' => 'Varslingsinnstillingene er oppdatert!', diff --git a/lang/nn/settings.php b/lang/nn/settings.php index c098ac753..6d2259bd8 100644 --- a/lang/nn/settings.php +++ b/lang/nn/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ingen begrensninger er satt', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Vedlikehold', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Endre sideredigering', 'role_notifications' => 'Motta og administrere varslinger', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Eiendomstillatelser', 'roles_system_warning' => 'Vær oppmerksom på at tilgang til noen av de ovennevnte tre tillatelsene kan tillate en bruker å endre sine egne rettigheter eller rettighetene til andre i systemet. Bare tildel roller med disse tillatelsene til pålitelige brukere.', 'role_asset_desc' => 'Disse tillatelsene kontrollerer standard tilgang til eiendelene i systemet. Tillatelser til bøker, kapitler og sider overstyrer disse tillatelsene.', 'role_asset_admins' => 'Administratorer får automatisk tilgang til alt innhold, men disse alternativene kan vise eller skjule UI-alternativer.', 'role_asset_image_view_note' => 'Dette gjelder synlighet innenfor bilde-administrasjonen. Faktisk tilgang på opplastede bildefiler vil være avhengig av valget for systemlagring av bildet.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Alle', 'role_own' => 'Egne', 'role_controlled_by_asset' => 'Kontrollert av eiendelen de er lastet opp til', diff --git a/lang/pl/notifications.php b/lang/pl/notifications.php index 661149994..a2c9ff1c0 100644 --- a/lang/pl/notifications.php +++ b/lang/pl/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Zaktualizowano stronę: :pageName', 'updated_page_intro' => 'Strona została zaktualizowana w :appName:', 'updated_page_debounce' => 'Aby zapobiec nadmiarowi powiadomień, przez jakiś czas nie będziesz otrzymywać powiadomień o dalszych edycjach tej strony przez tego samego edytora.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nazwa strony:', 'detail_page_path' => 'Ścieżka strony:', diff --git a/lang/pl/preferences.php b/lang/pl/preferences.php index dd3482102..372b8eda6 100644 --- a/lang/pl/preferences.php +++ b/lang/pl/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Kontroluj otrzymywane powiadomienia e-mail, gdy określona aktywność jest wykonywana w systemie.', 'notifications_opt_own_page_changes' => 'Powiadom o zmianach na stronach, których jestem właścicielem', 'notifications_opt_own_page_comments' => 'Powiadom o komentarzach na stronach, których jestem właścicielem', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Powiadom o odpowiedziach na moje komentarze', 'notifications_save' => 'Zapisz preferencje', 'notifications_update_success' => 'Preferencje powiadomień zostały zaktualizowane!', diff --git a/lang/pl/settings.php b/lang/pl/settings.php index 7c84ce34b..c32797f2f 100644 --- a/lang/pl/settings.php +++ b/lang/pl/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Brak restrykcji', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Konserwacja', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Zmień edytor strony', 'role_notifications' => 'Odbieranie i zarządzanie powiadomieniami', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Zarządzanie zasobami', 'roles_system_warning' => 'Pamiętaj, że dostęp do trzech powyższych uprawnień może pozwolić użytkownikowi na zmianę własnych uprawnień lub uprawnień innych osób w systemie. Przypisz tylko role z tymi uprawnieniami do zaufanych użytkowników.', 'role_asset_desc' => 'Te ustawienia kontrolują zarządzanie zasobami systemu. Uprawnienia książek, rozdziałów i stron nadpisują te ustawienia.', 'role_asset_admins' => 'Administratorzy mają automatycznie dostęp do wszystkich treści, ale te opcję mogą być pokazywać lub ukrywać opcje interfejsu użytkownika.', 'role_asset_image_view_note' => 'To odnosi się do widoczności w ramach menedżera obrazów. Rzeczywista możliwość dostępu do przesłanych plików obrazów będzie zależeć od systemowej opcji przechowywania obrazów.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Wszyscy', 'role_own' => 'Własne', 'role_controlled_by_asset' => 'Kontrolowane przez zasób, do którego zostały udostępnione', diff --git a/lang/pt/notifications.php b/lang/pt/notifications.php index 1243c6680..cbe3a511c 100644 --- a/lang/pt/notifications.php +++ b/lang/pt/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Página atualizada: :pageName', 'updated_page_intro' => 'Uma página foi atualizada em :appName:', 'updated_page_debounce' => 'Para evitar um grande volume de notificações, durante algum tempo não serão enviadas notificações de edições futuras para esta página através do mesmo editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nome da Página:', 'detail_page_path' => 'Page Path:', diff --git a/lang/pt/preferences.php b/lang/pt/preferences.php index 860eec645..b7308aaf9 100644 --- a/lang/pt/preferences.php +++ b/lang/pt/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Controlar as notificações via correio eletrónico quando certas atividades são executadas pelo sistema.', 'notifications_opt_own_page_changes' => 'Notificar quando páginas que possuo sofrem alterações', 'notifications_opt_own_page_comments' => 'Notificar quando comentam páginas que possuo', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notificar respostas aos meus comentários', 'notifications_save' => 'Guardar preferências', 'notifications_update_success' => 'Preferências de notificação foram atualizadas!', diff --git a/lang/pt/settings.php b/lang/pt/settings.php index 0c765fb98..c2179e640 100644 --- a/lang/pt/settings.php +++ b/lang/pt/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nenhuma restrição definida', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Manutenção', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Alterar editor de página', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Permissões de Ativos', 'roles_system_warning' => 'Esteja ciente de que o acesso a qualquer uma das três permissões acima pode permitir que um utilizador altere os seus próprios privilégios ou privilégios de outros no sistema. Apenas atribua cargos com essas permissões a utilizadores de confiança.', 'role_asset_desc' => 'Estas permissões controlam o acesso padrão para os ativos dentro do sistema. Permissões em Livros, Capítulos e Páginas serão sobrescritas por estas permissões.', 'role_asset_admins' => 'Os administradores recebem automaticamente acesso a todo o conteúdo, mas estas opções podem mostrar ou ocultar as opções da Interface de Usuário.', 'role_asset_image_view_note' => 'Isto está relacionado com a visibilidade do gerenciador de imagens. O acesso real dos arquivos de imagem enviados dependerá da opção de armazenamento de imagens do sistema.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Todos', 'role_own' => 'Próprio', 'role_controlled_by_asset' => 'Controlado pelo ativo para o qual eles são enviados', diff --git a/lang/pt_BR/notifications.php b/lang/pt_BR/notifications.php index 6397b20e5..8c98467c8 100644 --- a/lang/pt_BR/notifications.php +++ b/lang/pt_BR/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Página atualizada: :pageName', 'updated_page_intro' => 'Uma página foi atualizada em :appName:', 'updated_page_debounce' => 'Para prevenir notificações em massa, por enquanto notificações não serão enviadas para você para próximas edições nessa página pelo mesmo editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nome da Página:', 'detail_page_path' => 'Caminho da Página:', diff --git a/lang/pt_BR/preferences.php b/lang/pt_BR/preferences.php index e0b79ff06..d2b7fc540 100644 --- a/lang/pt_BR/preferences.php +++ b/lang/pt_BR/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Controle as notificações por e-mail que você recebe quando uma determinada atividade é executada no sistema.', 'notifications_opt_own_page_changes' => 'Notificar quando houver alterações em páginas que eu possuo', 'notifications_opt_own_page_comments' => 'Notificar comentários nas páginas que eu possuo', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notificar ao responder aos meus comentários', 'notifications_save' => 'Salvar Preferências', 'notifications_update_success' => 'Preferências de notificação foram atualizadas!', diff --git a/lang/pt_BR/settings.php b/lang/pt_BR/settings.php index b940e57d4..53947a36d 100644 --- a/lang/pt_BR/settings.php +++ b/lang/pt_BR/settings.php @@ -16,7 +16,7 @@ return [ 'app_customization' => 'Customização', 'app_features_security' => 'Recursos & Segurança', 'app_name' => 'Nome da Aplicação', - 'app_name_desc' => 'Esse nome será mostrado no cabeçalho e em e-mails.', + 'app_name_desc' => 'Esse nome será mostrado no cabeçalho e nos e-mails.', 'app_name_header' => 'Mostrar o nome no cabeçalho', 'app_public_access' => 'Acesso Público', 'app_public_access_desc' => 'Habilitar esta opção irá permitir que visitantes, que não estão logados, acessem o conteúdo em sua instância do BookStack.', @@ -29,14 +29,14 @@ return [ 'app_default_editor' => 'Editor de Página Padrão', 'app_default_editor_desc' => 'Selecione qual editor será usado por padrão ao editar novas páginas. Isso pode ser substituído em um nível de página onde é permitido.', 'app_custom_html' => 'Conteúdo customizado para HTML', - 'app_custom_html_desc' => 'Quaisquer conteúdos aqui adicionados serão inseridos no final da seção de cada página. Essa é uma maneira útil de sobrescrever estilos e adicionar códigos de análise de site.', - 'app_custom_html_disabled_notice' => 'O conteúdo customizado do HTML está desabilitado nesta página de configurações, para garantir que quaisquer alterações danosas possam ser revertidas.', + 'app_custom_html_desc' => 'Qualquer conteúdo adicionado aqui será inserido ao final do HTML de todas as páginas. Isso é útil para sobrescrever estilos e adicionar códigos de análise e estatística do site.', + 'app_custom_html_disabled_notice' => 'O conteúdo customizado do HTML está desabilitado nesta página de configurações para garantir que quaisquer alterações danosas possam ser revertidas.', 'app_logo' => 'Logo da Aplicação', 'app_logo_desc' => 'Isto é usado na barra de cabeçalho do aplicativo, entre outras áreas. Esta imagem deve ter 86px de altura. Imagens grandes serão reduzidas.', 'app_icon' => 'Ícone do Aplicativo', 'app_icon_desc' => 'Este ícone é usado para guias e ícones de atalhos do navegador. Deve ser uma imagem PNG quadrada de 256px.', 'app_homepage' => 'Página Inicial', - 'app_homepage_desc' => 'Selecione uma opção para ser exibida como página inicial em vez da padrão. Permissões de página serão ignoradas para as páginas selecionadas.', + 'app_homepage_desc' => 'Selecione uma opção para ser exibida como página inicial no lugar da página padrão. Permissões de página serão ignoradas para as páginas selecionadas.', 'app_homepage_select' => 'Selecione uma página', 'app_footer_links' => 'Links do Rodapé', 'app_footer_links_desc' => 'Adicionar links para mostrar dentro do rodapé do site. Estes serão exibidos na parte inferior da maioria das páginas, incluindo aqueles que não necessitam de login. Você pode usar uma etiqueta de "trans::" para usar traduções definidas pelo sistema. Por exemplo: Usando "trans::common.privacy_policy" fornecerá o texto traduzido "Política de Privacidade" e "trans::common.terms_of_service" fornecerá o texto traduzido "Termos de Serviço".', @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nenhuma restrição definida', // Sorting Settings - 'sorting' => 'Ordenação', - 'sorting_book_default' => 'Ordenação padrão de livros', + 'sorting' => 'Listas e classificações', + 'sorting_book_default' => 'Regra padrão de classificação de livros', 'sorting_book_default_desc' => 'Selecione a regra de ordenação padrão a ser aplicada a novos livros. Isso não afetará os livros existentes e pode ser substituído para cada livro individualmente.', 'sorting_rules' => 'Regras de ordenação', 'sorting_rules_desc' => 'Estas são operações de ordenação pré-definidas que podem ser aplicadas a conteúdos no sistema.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Data de Atualização', 'sort_rule_op_chapters_first' => 'Capítulos Primeiro', 'sort_rule_op_chapters_last' => 'Capítulos por Último', + 'sorting_page_limits' => 'Limites de exibição por página', + 'sorting_page_limits_desc' => 'Defina quantos itens serão exibidos por página em diferentes listas do sistema. Normalmente, um número menor proporciona melhor desempenho, enquanto um número maior evita a necessidade de clicar em várias páginas. É recomendado o uso de um múltiplo par de 3 (18, 24, 30, etc.).', // Maintenance settings 'maint' => 'Manutenção', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Importar conteúdo', 'role_editor_change' => 'Alterar página de edição', 'role_notifications' => 'Receber e gerenciar notificações', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Permissões de Ativos', 'roles_system_warning' => 'Esteja ciente de que o acesso a qualquer uma das três permissões acima pode permitir que um usuário altere seus próprios privilégios ou privilégios de outros usuários no sistema. Apenas atribua perfis com essas permissões para usuários confiáveis.', 'role_asset_desc' => 'Essas permissões controlam o acesso padrão para os ativos dentro do sistema. Permissões em Livros, Capítulos e Páginas serão sobrescritas por essas permissões.', 'role_asset_admins' => 'Administradores recebem automaticamente acesso a todo o conteúdo, mas essas opções podem mostrar ou ocultar as opções da Interface de Usuário.', 'role_asset_image_view_note' => 'Isso está relacionado à visibilidade no gerenciador de imagens. O acesso real dos arquivos de imagem carregados dependerá da opção de armazenamento de imagem do sistema.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Todos', 'role_own' => 'Próprio', 'role_controlled_by_asset' => 'Controlado pelos ativos nos quais o upload foi realizado', diff --git a/lang/ro/notifications.php b/lang/ro/notifications.php index 676eeb814..da7f590fd 100644 --- a/lang/ro/notifications.php +++ b/lang/ro/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Pagina actualizată: :pageName', 'updated_page_intro' => 'O nouă pagină a fost creată în :appName:', 'updated_page_debounce' => 'Pentru a preveni notificări în masă, pentru un timp nu veți primi notificări suplimentare la această pagină de către același editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Nume pagină:', 'detail_page_path' => 'Page Path:', diff --git a/lang/ro/preferences.php b/lang/ro/preferences.php index f7529305c..93db2f66a 100644 --- a/lang/ro/preferences.php +++ b/lang/ro/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Controlați notificările prin e-mail pe care le primiți atunci când o anumită activitate este efectuată în sistem.', 'notifications_opt_own_page_changes' => 'Notifică la comentarii pe paginile pe care le dețin', 'notifications_opt_own_page_comments' => 'Notifică la comentarii pe paginile pe care le dețin', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notifică la răspunsurile la comentariile mele', 'notifications_save' => 'Salvează Preferințe', 'notifications_update_success' => 'Preferințele de notificare au fost actualizate!', diff --git a/lang/ro/settings.php b/lang/ro/settings.php index a28dca22c..02052ef3c 100644 --- a/lang/ro/settings.php +++ b/lang/ro/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nicio restricție setată', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Mentenanţă', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Schimbă editorul de pagină', 'role_notifications' => 'Primire și gestionare notificări', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Permisiuni active', 'roles_system_warning' => 'Fi conștient de faptul că accesul la oricare dintre cele trei permisiuni de mai sus poate permite unui utilizator să își modifice propriile privilegii sau privilegiile altor persoane din sistem. Atribuie doar roluri cu aceste permisiuni utilizatorilor de încredere.', 'role_asset_desc' => 'Aceste permisiuni controlează accesul implicit la activele din sistem. Permisiunile pe Cărți, Capitole și Pagini vor suprascrie aceste permisiuni.', 'role_asset_admins' => 'Administratorilor li se acordă automat acces la tot conținutul, dar aceste opțiuni pot afișa sau ascunde opțiunile UI.', 'role_asset_image_view_note' => 'Acest lucru se referă la vizibilitatea în managerul de imagini. Accesul efectiv al fișierelor de imagine încărcate va depinde de opțiunea de stocare a imaginilor din sistem.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Tot', 'role_own' => 'Propriu', 'role_controlled_by_asset' => 'Controlat de activele pe care sunt încărcate', diff --git a/lang/ru/notifications.php b/lang/ru/notifications.php index c5e98da80..289de42b6 100644 --- a/lang/ru/notifications.php +++ b/lang/ru/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Обновлена страница: :pageName', 'updated_page_intro' => 'Страница была обновлена в :appName:', 'updated_page_debounce' => 'Чтобы предотвратить массовые уведомления, в течение некоторого времени вы не будете получать уведомления о дальнейших правках этой страницы этим же редактором.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Имя страницы:', 'detail_page_path' => 'Путь страницы:', diff --git a/lang/ru/preferences.php b/lang/ru/preferences.php index 27217815d..b61b252c8 100644 --- a/lang/ru/preferences.php +++ b/lang/ru/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Управляйте полученными по электронной почте уведомлениями при выполнении определенных действий в системе.', 'notifications_opt_own_page_changes' => 'Уведомлять об изменениях в собственных страницах', 'notifications_opt_own_page_comments' => 'Уведомлять о комментариях на собственных страницах', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Уведомлять об ответах на мои комментарии', 'notifications_save' => 'Сохранить настройки', 'notifications_update_success' => 'Настройки уведомлений были обновлены!', diff --git a/lang/ru/settings.php b/lang/ru/settings.php index 69c13e46d..47839d520 100644 --- a/lang/ru/settings.php +++ b/lang/ru/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Без ограничений', // Sorting Settings - 'sorting' => 'Сортировка', - 'sorting_book_default' => 'Сортировка книг по умолчанию', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Выберите правило сортировки по умолчанию для новых книг. Это не повлияет на существующие книги, и может быть изменено для каждой книги отдельно.', 'sorting_rules' => 'Правила сортировки', 'sorting_rules_desc' => 'Выберите правило сортировки по умолчанию для новых книг. Это не повлияет на существующие книги и может быть изменено для каждой книги отдельно.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Главы в конце', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Обслуживание', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Изменение редактора страниц', 'role_notifications' => 'Получение и управление уведомлениями', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Права доступа к материалам', 'roles_system_warning' => 'Имейте в виду, что доступ к любому из указанных выше трех разрешений может позволить пользователю изменить свои собственные привилегии или привилегии других пользователей системы. Назначать роли с этими правами можно только доверенным пользователям.', 'role_asset_desc' => 'Эти разрешения контролируют доступ по умолчанию к параметрам внутри системы. Разрешения на книги, главы и страницы перезапишут эти разрешения.', 'role_asset_admins' => 'Администраторы автоматически получают доступ ко всему контенту, но эти опции могут отображать или скрывать параметры пользовательского интерфейса.', 'role_asset_image_view_note' => 'Это относится к видимости в менеджере изображений. Фактический доступ к загруженным файлам изображений будет зависеть от опции хранения системных изображений.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Все', 'role_own' => 'Владелец', 'role_controlled_by_asset' => 'Контролируется активом, в который они загружены', diff --git a/lang/sk/notifications.php b/lang/sk/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/sk/notifications.php +++ b/lang/sk/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/sk/preferences.php b/lang/sk/preferences.php index 85da4f331..54fbdb677 100644 --- a/lang/sk/preferences.php +++ b/lang/sk/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/sk/settings.php b/lang/sk/settings.php index 2731fd01a..04855a7f9 100644 --- a/lang/sk/settings.php +++ b/lang/sk/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Nie sú nastavené žiadne obmedzenia', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Údržba', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Zmeniť editor stránky', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Oprávnenia majetku', 'roles_system_warning' => 'Uvedomte si, že prístup ku ktorémukoľvek z vyššie uvedených troch povolení môže používateľovi umožniť zmeniť svoje vlastné privilégiá alebo privilégiá ostatných v systéme. Roly s týmito povoleniami priraďujte iba dôveryhodným používateľom.', 'role_asset_desc' => 'Tieto oprávnenia regulujú prednastavený prístup k zdroju v systéme. Oprávnenia pre knihy, kapitoly a stránky majú vyššiu prioritu.', 'role_asset_admins' => 'Správcovia majú automaticky prístup ku všetkému obsahu, ale tieto možnosti môžu zobraziť alebo skryť možnosti používateľského rozhrania.', 'role_asset_image_view_note' => 'Toto sa týka viditeľnosti v rámci správcu obrázkov. Skutočný prístup k nahratým súborom obrázkov bude závisieť od možnosti ukladania obrázkov systému.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Všetko', 'role_own' => 'Vlastné', 'role_controlled_by_asset' => 'Regulované zdrojom, do ktorého sú nahrané', diff --git a/lang/sl/notifications.php b/lang/sl/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/sl/notifications.php +++ b/lang/sl/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/sl/preferences.php b/lang/sl/preferences.php index 2872f5f3c..f4459d738 100644 --- a/lang/sl/preferences.php +++ b/lang/sl/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/sl/settings.php b/lang/sl/settings.php index 904978f47..6eaed0a17 100644 --- a/lang/sl/settings.php +++ b/lang/sl/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Brez omejitev', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Vzdrževanje', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Sistemska dovoljenja', 'roles_system_warning' => 'Zavedajte se, da lahko dostop do kateregakoli od zgornjih treh dovoljenj uporabniku omogoči, da spremeni lastne privilegije ali privilegije drugih v sistemu. Vloge s temi dovoljenji dodelite samo zaupanja vrednim uporabnikom.', 'role_asset_desc' => 'Ta dovoljenja nadzorujejo privzeti dostop do sredstev v sistemu. Dovoljenja za knjige, poglavja in strani bodo razveljavila ta dovoljenja.', 'role_asset_admins' => 'Skrbniki samodejno pridobijo dostop do vseh vsebin, vendar lahko te možnosti prikažejo ali pa skrijejo možnosti uporabniškega vmesnika.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Vse', 'role_own' => 'Lasten', 'role_controlled_by_asset' => 'Nadzira ga sredstvo, v katerega so naloženi', diff --git a/lang/sq/notifications.php b/lang/sq/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/sq/notifications.php +++ b/lang/sq/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/sq/preferences.php b/lang/sq/preferences.php index 2872f5f3c..f4459d738 100644 --- a/lang/sq/preferences.php +++ b/lang/sq/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/sq/settings.php b/lang/sq/settings.php index 81c2c0a93..c68605fe1 100644 --- a/lang/sq/settings.php +++ b/lang/sq/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/sr/activities.php b/lang/sr/activities.php index ad594a220..b4aa5e2a7 100644 --- a/lang/sr/activities.php +++ b/lang/sr/activities.php @@ -85,9 +85,9 @@ return [ 'webhook_delete_notification' => 'Вебхоок је успешно обрисан', // Imports - 'import_create' => 'created import', + 'import_create' => 'креиран увоз', 'import_create_notification' => 'Import successfully uploaded', - 'import_run' => 'updated import', + 'import_run' => 'ажуриран увоз', 'import_run_notification' => 'Content successfully imported', 'import_delete' => 'deleted import', 'import_delete_notification' => 'Import successfully deleted', diff --git a/lang/sr/common.php b/lang/sr/common.php index e185c99f5..c5c62db65 100644 --- a/lang/sr/common.php +++ b/lang/sr/common.php @@ -30,7 +30,7 @@ return [ 'create' => 'Креирај', 'update' => 'Ажурирање', 'edit' => 'Уреди', - 'archive' => 'Archive', + 'archive' => 'Архивирај', 'unarchive' => 'Un-Archive', 'sort' => 'Разврстај', 'move' => 'Премести', diff --git a/lang/sr/editor.php b/lang/sr/editor.php index e5052595c..2756775a9 100644 --- a/lang/sr/editor.php +++ b/lang/sr/editor.php @@ -13,7 +13,7 @@ return [ 'cancel' => 'Поништи', 'save' => 'Сачувај', 'close' => 'Затвори', - 'apply' => 'Apply', + 'apply' => 'Примени', 'undo' => 'Опозови', 'redo' => 'Понови', 'left' => 'Лево', diff --git a/lang/sr/entities.php b/lang/sr/entities.php index 456a76ceb..151edee40 100644 --- a/lang/sr/entities.php +++ b/lang/sr/entities.php @@ -50,7 +50,7 @@ return [ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:', 'import_pending' => 'Pending Imports', 'import_pending_none' => 'No imports have been started.', - 'import_continue' => 'Continue Import', + 'import_continue' => 'Настави увоз', 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.', 'import_details' => 'Import Details', 'import_run' => 'Run Import', @@ -109,7 +109,7 @@ return [ // Shelves 'shelf' => 'Shelf', - 'shelves' => 'Shelves', + 'shelves' => 'Полице', 'x_shelves' => ':count Shelf|:count Shelves', 'shelves_empty' => 'No shelves have been created', 'shelves_create' => 'Create New Shelf', diff --git a/lang/sr/notifications.php b/lang/sr/notifications.php index 6aa3f2abb..4cc499fdd 100644 --- a/lang/sr/notifications.php +++ b/lang/sr/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Ажурирана страница: :pageName', 'updated_page_intro' => 'Страница је ажурирана у :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Назив странице:', 'detail_page_path' => 'Путања странице:', diff --git a/lang/sr/preferences.php b/lang/sr/preferences.php index 2872f5f3c..f4459d738 100644 --- a/lang/sr/preferences.php +++ b/lang/sr/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/sr/settings.php b/lang/sr/settings.php index b7213e905..d34ff3f3b 100644 --- a/lang/sr/settings.php +++ b/lang/sr/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Нема постављених ограничења', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Одржавање', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/sr/validation.php b/lang/sr/validation.php index d9b982d1e..a2a617633 100644 --- a/lang/sr/validation.php +++ b/lang/sr/validation.php @@ -14,7 +14,7 @@ return [ 'alpha' => 'The :attribute may only contain letters.', 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', + 'array' => ':attribute мора бити низ.', 'backup_codes' => 'The provided code is not valid or has already been used.', 'before' => 'The :attribute must be a date before :date.', 'between' => [ diff --git a/lang/sv/notifications.php b/lang/sv/notifications.php index 58418ddb0..19933c049 100644 --- a/lang/sv/notifications.php +++ b/lang/sv/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Uppdaterad sida: :pageName', 'updated_page_intro' => 'En sida har blivit uppdaterad i :appName:', 'updated_page_debounce' => 'För att förhindra en massa notiser, så kommer det inte skickas nya notiser på ett tag för ytterligare ändringar till denna sida av samma skribent.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Sidonamn:', 'detail_page_path' => 'Sidosökväg:', diff --git a/lang/sv/preferences.php b/lang/sv/preferences.php index 945099151..492081e59 100644 --- a/lang/sv/preferences.php +++ b/lang/sv/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/sv/settings.php b/lang/sv/settings.php index 8f391d3d7..2e86241da 100644 --- a/lang/sv/settings.php +++ b/lang/sv/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Ingen begränsning inställd', // Sorting Settings - 'sorting' => 'Sorterar', - 'sorting_book_default' => 'Standard boksortering', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Välj standard sorteringsregel som skall tillämpas på nya böcker. Detta påverkar inte befintliga böcker och kan åsidosättas per bok.', 'sorting_rules' => 'Sorteringsregler', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Datum uppdaterat', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Underhåll', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Ändra sidredigerare', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Tillgång till innehåll', 'roles_system_warning' => 'Var medveten om att åtkomst till någon av ovanstående tre behörigheter kan tillåta en användare att ändra sina egna rättigheter eller andras rättigheter i systemet. Tilldela endast roller med dessa behörigheter till betrodda användare.', 'role_asset_desc' => 'Det här är standardinställningarna för allt innehåll i systemet. Eventuella anpassade rättigheter på böcker, kapitel och sidor skriver över dessa inställningar.', 'role_asset_admins' => 'Administratörer har automatisk tillgång till allt innehåll men dessa alternativ kan visa och dölja vissa gränssnittselement', 'role_asset_image_view_note' => 'Detta avser synlighet inom bildhanteraren. Faktisk åtkomst för uppladdade bildfiler kommer att bero på alternativ för bildlagring.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Alla', 'role_own' => 'Egna', 'role_controlled_by_asset' => 'Kontrolleras av den sida de laddas upp till', diff --git a/lang/tk/notifications.php b/lang/tk/notifications.php index 1afd23f1d..563ac24e8 100644 --- a/lang/tk/notifications.php +++ b/lang/tk/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/tk/preferences.php b/lang/tk/preferences.php index 2872f5f3c..f4459d738 100644 --- a/lang/tk/preferences.php +++ b/lang/tk/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/tk/settings.php b/lang/tk/settings.php index 81c2c0a93..c68605fe1 100644 --- a/lang/tk/settings.php +++ b/lang/tk/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Maintenance', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Change page editor', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Asset Permissions', 'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.', 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'All', 'role_own' => 'Own', 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', diff --git a/lang/tr/notifications.php b/lang/tr/notifications.php index c26a90b32..5dfb71978 100644 --- a/lang/tr/notifications.php +++ b/lang/tr/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Updated page: :pageName', 'updated_page_intro' => 'A page has been updated in :appName:', 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Page Name:', 'detail_page_path' => 'Page Path:', diff --git a/lang/tr/preferences.php b/lang/tr/preferences.php index 1ce7b01fd..f4ec771b2 100644 --- a/lang/tr/preferences.php +++ b/lang/tr/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/tr/settings.php b/lang/tr/settings.php index 1eb15d9d4..71d56000f 100644 --- a/lang/tr/settings.php +++ b/lang/tr/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Hiçbir kısıtlama tanımlanmamış', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Bakım', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Yazı editörünü değiştir', 'role_notifications' => 'Receive & manage notifications', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Varlık Yetkileri', 'roles_system_warning' => 'Yukarıdaki üç izinden herhangi birine erişimin, kullanıcının kendi ayrıcalıklarını veya sistemdeki diğerlerinin ayrıcalıklarını değiştirmesine izin verebileceğini unutmayın. Yalnızca bu izinlere sahip rolleri güvenilir kullanıcılara atayın.', 'role_asset_desc' => 'Bu izinler, sistem içindeki varlıklara varsayılan erişim izinlerini ayarlar. Kitaplar, bölümler ve sayfalar üzerindeki izinler, buradaki izinleri geçersiz kılar.', 'role_asset_admins' => 'Yöneticilere otomatik olarak bütün içeriğe erişim yetkisi verilir ancak bu seçenekler, kullanıcı arayüzündeki bazı seçeneklerin gösterilmesine veya gizlenmesine neden olabilir.', 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Hepsi', 'role_own' => 'Kendine Ait', 'role_controlled_by_asset' => 'Yüklendikleri varlık tarafından kontrol ediliyor', diff --git a/lang/uk/notifications.php b/lang/uk/notifications.php index a08b9a100..d40457f98 100644 --- a/lang/uk/notifications.php +++ b/lang/uk/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Оновлено сторінку: :pageName', 'updated_page_intro' => 'Оновлено сторінку у :appName:', 'updated_page_debounce' => 'Для запобігання кількості сповіщень, деякий час ви не будете відправлені повідомлення для подальших змін на цій сторінці тим самим редактором.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Назва сторінки:', 'detail_page_path' => 'Шлях до сторінки:', diff --git a/lang/uk/preferences.php b/lang/uk/preferences.php index 14989d2a7..8af3a8d9e 100644 --- a/lang/uk/preferences.php +++ b/lang/uk/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Контролюйте сповіщення по електронній пошті, які ви отримуєте, коли виконується певна активність у системі.', 'notifications_opt_own_page_changes' => 'Повідомляти при змінах сторінок якими я володію', 'notifications_opt_own_page_comments' => 'Повідомляти при коментарях на моїх сторінках', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Повідомляти про відповіді на мої коментарі', 'notifications_save' => 'Зберегти налаштування', 'notifications_update_success' => 'Налаштування сповіщень було оновлено!', diff --git a/lang/uk/settings.php b/lang/uk/settings.php index 3798f1b60..633582ca8 100644 --- a/lang/uk/settings.php +++ b/lang/uk/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Не встановлено обмежень', // Sorting Settings - 'sorting' => 'Сортування', - 'sorting_book_default' => 'Типовий порядок сортування', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Виберіть правило сортування за замовчуванням для застосування нових книг. Це не вплине на існуючі книги, і може бути перевизначено для кожної книги.', 'sorting_rules' => 'Сортувати правила', 'sorting_rules_desc' => 'Це попередньо визначені операції сортування, які можуть бути застосовані до вмісту в системі.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Дата оновлення', 'sort_rule_op_chapters_first' => 'Спочатку розділи', 'sort_rule_op_chapters_last' => 'Розділи останні', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Обслуговування', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Імпортувати вміст', 'role_editor_change' => 'Змінити редактор сторінок', 'role_notifications' => 'Отримувати та керувати повідомленнями', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Дозволи', 'roles_system_warning' => 'Майте на увазі, що доступ до будь-якого з вищезазначених трьох дозволів може дозволити користувачеві змінювати власні привілеї або привілеї інших в системі. Ролі з цими дозволами призначайте лише довіреним користувачам.', 'role_asset_desc' => 'Ці дозволи контролюють стандартні доступи всередині системи. Права на книги, розділи та сторінки перевизначать ці дозволи.', 'role_asset_admins' => 'Адміністратори автоматично отримують доступ до всього вмісту, але ці параметри можуть відображати або приховувати параметри інтерфейсу користувача.', 'role_asset_image_view_note' => 'Це стосується видимості в менеджері зображень. Фактичний доступ завантажуваних зображень буде залежний від опції зберігання системних зображень.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Все', 'role_own' => 'Власне', 'role_controlled_by_asset' => 'Контролюється за об\'єктом, до якого вони завантажуються', diff --git a/lang/uz/notifications.php b/lang/uz/notifications.php index bec9b3925..ece09441e 100644 --- a/lang/uz/notifications.php +++ b/lang/uz/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => ':pageName sahifasi yangilandi', 'updated_page_intro' => ':appName ichida sahifa yangilandi:', 'updated_page_debounce' => 'Xabarnomalar koʻp boʻlishining oldini olish uchun bir muncha vaqt oʻsha muharrir tomonidan ushbu sahifaga keyingi tahrirlar haqida bildirishnomalar yuborilmaydi.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Sahifa nomi:', 'detail_page_path' => 'Page Path:', diff --git a/lang/uz/preferences.php b/lang/uz/preferences.php index de36b953e..996f9d3c4 100644 --- a/lang/uz/preferences.php +++ b/lang/uz/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Tizimda muayyan harakatlar amalga oshirilganda qabul qilinadigan elektron pochta xabarnomalarini boshqaring.', 'notifications_opt_own_page_changes' => 'Menga tegishli boʻlgan sahifalarimdagi oʻzgarishlar haqida xabar bering', 'notifications_opt_own_page_comments' => 'Menga tegishli sahifalardagi sharhlar haqida xabar bering', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Fikrlarimga javoblarim haqida xabar bering', 'notifications_save' => 'Afzalliklarni saqlash', 'notifications_update_success' => 'Bildirishnoma sozlamalari yangilandi!', diff --git a/lang/uz/settings.php b/lang/uz/settings.php index 83fedc569..ad191143f 100644 --- a/lang/uz/settings.php +++ b/lang/uz/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Cheklov oʻrnatilmagan', // Sorting Settings - 'sorting' => 'Sorting', - 'sorting_book_default' => 'Default Book Sort', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Updated Date', 'sort_rule_op_chapters_first' => 'Chapters First', 'sort_rule_op_chapters_last' => 'Chapters Last', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Xizmat', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Import content', 'role_editor_change' => 'Sahifa muharririni o\'zgartirish', 'role_notifications' => 'Bildirishnomalarni qabul qilish va boshqarish', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Obyektga ruxsatlar', 'roles_system_warning' => 'Shuni yodda tutingki, yuqoridagi uchta ruxsatdan birortasiga kirish foydalanuvchiga o\'z imtiyozlarini yoki tizimdagi boshqalarning imtiyozlarini o\'zgartirishi mumkin. Ishonchli foydalanuvchilarga faqat ushbu ruxsatlarga ega rollarni tayinlang.', 'role_asset_desc' => 'Bu ruxsatlar tizim ichidagi aktivlarga standart kirishni nazorat qiladi. Kitoblar, boblar va sahifalardagi ruxsatlar bu ruxsatlarni bekor qiladi.', 'role_asset_admins' => 'Administratorlarga avtomatik ravishda barcha kontentga kirish huquqi beriladi, lekin bu parametrlar UI parametrlarini koʻrsatishi yoki yashirishi mumkin.', 'role_asset_image_view_note' => 'Bu tasvir menejeridagi ko\'rinishga tegishli. Yuklangan rasm fayllariga haqiqiy kirish tizim tasvirini saqlash opsiyasiga bog\'liq bo\'ladi.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Hammasi', 'role_own' => 'Shaxsiy', 'role_controlled_by_asset' => 'Ular yuklangan obyekt tomonidan nazorat qilinadi', diff --git a/lang/vi/notifications.php b/lang/vi/notifications.php index a18695b23..45fb4434f 100644 --- a/lang/vi/notifications.php +++ b/lang/vi/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => 'Trang đã cập nhật: :pageName', 'updated_page_intro' => 'Một trang mới đã được cập nhật trong :appName:', 'updated_page_debounce' => 'Để tránh việc nhận quá nhiều thông báo, trong một thời gian, bạn sẽ không nhận được thông báo về những chỉnh sửa tiếp theo cho trang này từ cùng một biên tập viên.', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => 'Tên Trang:', 'detail_page_path' => 'Đường dẫn trang:', diff --git a/lang/vi/preferences.php b/lang/vi/preferences.php index 76bc0be16..3e06ccd30 100644 --- a/lang/vi/preferences.php +++ b/lang/vi/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.', 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own', 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => 'Notify upon replies to my comments', 'notifications_save' => 'Save Preferences', 'notifications_update_success' => 'Notification preferences have been updated!', diff --git a/lang/vi/settings.php b/lang/vi/settings.php index 1ff252702..69eadddd3 100644 --- a/lang/vi/settings.php +++ b/lang/vi/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => 'Không có giới hạn nào được thiết lập', // Sorting Settings - 'sorting' => 'Sắp xếp', - 'sorting_book_default' => 'Sắp xếp sách mặc định', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => 'Chọn quy tắc sắp xếp mặc định để áp dụng cho sách mới. Điều này sẽ không ảnh hưởng đến các sách hiện có và có thể được ghi đè cho từng sách.', 'sorting_rules' => 'Quy tắc sắp xếp', 'sorting_rules_desc' => 'Đây là các thao tác sắp xếp được xác định trước có thể được áp dụng cho nội dung trong hệ thống.', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => 'Ngày cập nhật', 'sort_rule_op_chapters_first' => 'Chương trước', 'sort_rule_op_chapters_last' => 'Chương sau', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => 'Bảo trì', @@ -195,11 +197,13 @@ return [ 'role_import_content' => 'Nhập nội dung', 'role_editor_change' => 'Thay đổi trình soạn thảo trang', 'role_notifications' => 'Nhận & quản lý thông báo', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => 'Quyền tài sản (asset)', 'roles_system_warning' => 'Cần lưu ý rằng việc truy cập vào bất kỳ ba quyền trên có thể cho phép người dùng thay đổi đặc quyền của chính họ hoặc đặc quyền của những người khác trong hệ thống. Chỉ gán các vai trò có các quyền này cho những người dùng đáng tin cậy.', 'role_asset_desc' => 'Các quyền này điều khiển truy cập mặc định tới tài sản (asset) nằm trong hệ thống. Quyền tại Sách, Chương và Trang sẽ ghi đè các quyền này.', 'role_asset_admins' => 'Quản trị viên được tự động cấp quyền truy cập đến toàn bộ nội dung, tuy nhiên các tùy chọn đó có thể hiện hoặc ẩn tùy chọn giao diện.', 'role_asset_image_view_note' => 'Điều này liên quan đến khả năng hiển thị trong trình quản lý hình ảnh. Quyền truy cập thực tế vào các tệp hình ảnh đã tải lên sẽ phụ thuộc vào tùy chọn lưu trữ hình ảnh của hệ thống.', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => 'Tất cả', 'role_own' => 'Sở hữu', 'role_controlled_by_asset' => 'Kiểm soát các tài sản (asset) người dùng tải lên', diff --git a/lang/zh_CN/notifications.php b/lang/zh_CN/notifications.php index 52c9822bc..e4eebf5cc 100644 --- a/lang/zh_CN/notifications.php +++ b/lang/zh_CN/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => '页面更新::pageName', 'updated_page_intro' => ':appName: 中的一个页面已被更新', 'updated_page_debounce' => '为了防止出现大量通知,一段时间内您不会收到同一编辑者再次编辑本页面的通知。', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => '页面名称:', 'detail_page_path' => '页面路径:', diff --git a/lang/zh_CN/preferences.php b/lang/zh_CN/preferences.php index f1ef3957d..f89448dd3 100644 --- a/lang/zh_CN/preferences.php +++ b/lang/zh_CN/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => '控制在系统内发生某些活动时您会收到的电子邮件通知。', 'notifications_opt_own_page_changes' => '在我拥有的页面被修改时通知我', 'notifications_opt_own_page_comments' => '在我拥有的页面上有新评论时通知我', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => '在有人回复我的频率时通知我', 'notifications_save' => '保存偏好设置', 'notifications_update_success' => '通知偏好设置已更新!', diff --git a/lang/zh_CN/settings.php b/lang/zh_CN/settings.php index 2114c3648..93f3076c5 100644 --- a/lang/zh_CN/settings.php +++ b/lang/zh_CN/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => '尚未设置限制', // Sorting Settings - 'sorting' => '排序', - 'sorting_book_default' => '默认书卷排序', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => '选择要应用于新书的默认排序规则。这不会影响现有书,并且可以每本书覆盖。', 'sorting_rules' => '排序规则', 'sorting_rules_desc' => '这些是预定义的排序操作,可应用于系统中的内容。', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => '更新时间', 'sort_rule_op_chapters_first' => '章节正序', 'sort_rule_op_chapters_last' => '章节倒序', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => '维护', @@ -195,11 +197,13 @@ return [ 'role_import_content' => '导入内容', 'role_editor_change' => '更改页面编辑器', 'role_notifications' => '管理和接收通知', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => '资源许可', 'roles_system_warning' => '请注意,拥有以上三个权限中的任何一个都会允许用户更改自己的权限或系统中其他人的权限。 请只将拥有这些权限的角色分配给你信任的用户。', 'role_asset_desc' => '对系统内资源的默认访问许可将由这些权限控制。单独设置在书籍、章节和页面上的权限将覆盖这里的权限设定。', 'role_asset_admins' => '管理员可自动获得对所有内容的访问权限,但这些选项可能会显示或隐藏UI选项。', 'role_asset_image_view_note' => '这与图像管理器中的可见性有关。已经上传的图片的实际访问取决于系统图像存储选项。', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => '全部的', 'role_own' => '拥有的', 'role_controlled_by_asset' => '由其所在的资源来控制', diff --git a/lang/zh_TW/notifications.php b/lang/zh_TW/notifications.php index 7fcfa6400..f5deae328 100644 --- a/lang/zh_TW/notifications.php +++ b/lang/zh_TW/notifications.php @@ -11,6 +11,8 @@ return [ 'updated_page_subject' => '頁面更新::pageName', 'updated_page_intro' => ':appName: 中的一個頁面已被更新', 'updated_page_debounce' => '為了防止出現大量通知,一段時間內您不會收到同一編輯者再次編輯本頁面的通知。', + 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName', + 'comment_mention_intro' => 'You were mentioned in a comment on :appName:', 'detail_page_name' => '頁面名稱:', 'detail_page_path' => '頁面路徑:', diff --git a/lang/zh_TW/preferences.php b/lang/zh_TW/preferences.php index 4900ca152..0bfce9d83 100644 --- a/lang/zh_TW/preferences.php +++ b/lang/zh_TW/preferences.php @@ -23,6 +23,7 @@ return [ 'notifications_desc' => '控制在系統有特定活動時,是否要接收電子郵件通知', 'notifications_opt_own_page_changes' => '當我的頁面有異動時發送通知', 'notifications_opt_own_page_comments' => '當我的頁面有評論時發送通知', + 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment', 'notifications_opt_comment_replies' => '當我的評論有新的回覆時發送通知', 'notifications_save' => '儲存偏好設定', 'notifications_update_success' => '通知設定已更新', diff --git a/lang/zh_TW/settings.php b/lang/zh_TW/settings.php index 752d3f2a7..9b5efa09e 100644 --- a/lang/zh_TW/settings.php +++ b/lang/zh_TW/settings.php @@ -75,8 +75,8 @@ return [ 'reg_confirm_restrict_domain_placeholder' => '尚未設定限制', // Sorting Settings - 'sorting' => '排序', - 'sorting_book_default' => '預設書籍排序', + 'sorting' => 'Lists & Sorting', + 'sorting_book_default' => 'Default Book Sort Rule', 'sorting_book_default_desc' => '選取要套用至新書籍的預設排序規則。這不會影響現有書籍,並可按書籍覆寫。', 'sorting_rules' => '排序規則', 'sorting_rules_desc' => '這些是預先定義的排序作業,可套用於系統中的內容。', @@ -103,6 +103,8 @@ return [ 'sort_rule_op_updated_date' => '更新日期', 'sort_rule_op_chapters_first' => '第一章', 'sort_rule_op_chapters_last' => '最後一章', + 'sorting_page_limits' => 'Per-Page Display Limits', + 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using an even multiple of 3 (18, 24, 30, etc...) is recommended.', // Maintenance settings 'maint' => '維護', @@ -196,11 +198,13 @@ return [ 'role_import_content' => '匯入內容', 'role_editor_change' => '重設頁面編輯器', 'role_notifications' => '管理和接收通知', + 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.', 'role_asset' => '資源權限', 'roles_system_warning' => '請注意,有上述三項權限中的任一項的使用者都可以更改自己或系統中其他人的權限。有這些權限的角色只應分配給受信任的使用者。', 'role_asset_desc' => '對系統內資源的預設權限將由這裡的權限控制。若有單獨設定在書本、章節和頁面上的權限,將會覆寫這裡的權限設定。', 'role_asset_admins' => '管理員會自動取得對所有內容的存取權,但這些選項可能會顯示或隱藏使用者介面的選項。', 'role_asset_image_view_note' => '這與圖像管理器中的可見性有關。已經上傳的圖片的實際訪問取決於系統圖像存儲選項。', + 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.', 'role_all' => '全部', 'role_own' => '擁有', 'role_controlled_by_asset' => '依據隸屬的資源來決定',