1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-11-11 22:02:36 +03:00

Merge branch 'development' into release

This commit is contained in:
Dan Brown
2025-08-11 14:43:13 +01:00
95 changed files with 620 additions and 287 deletions

View File

@@ -438,7 +438,7 @@ javadataherian :: Persian
Ludo-code :: French Ludo-code :: French
hollsten :: Swedish hollsten :: Swedish
Ngoc Lan Phung (lanpncz) :: Vietnamese Ngoc Lan Phung (lanpncz) :: Vietnamese
Worive :: Catalan Worive :: Catalan; French
Илья Скаба (skabailya) :: Russian Илья Скаба (skabailya) :: Russian
Irjan Olsen (Irch) :: Norwegian Bokmal Irjan Olsen (Irch) :: Norwegian Bokmal
Aleksandar Jovanovic (jovanoviczaleksandar) :: Serbian (Cyrillic) Aleksandar Jovanovic (jovanoviczaleksandar) :: Serbian (Cyrillic)
@@ -500,3 +500,6 @@ LiZerui (iamzrli) :: Chinese Traditional
Ticker (ticker.com) :: Hebrew Ticker (ticker.com) :: Hebrew
CrazyComputer :: Chinese Simplified CrazyComputer :: Chinese Simplified
Firr (FirrV) :: Russian Firr (FirrV) :: Russian
João Faro (FaroJoaoFaro) :: Portuguese
Danilo dos Santos Barbosa (bozochegou) :: Portuguese, Brazilian
Chris (furesoft) :: German

View File

@@ -57,16 +57,13 @@ class LdapSessionGuard extends ExternalBaseSessionGuard
/** /**
* Attempt to authenticate a user using the given credentials. * Attempt to authenticate a user using the given credentials.
* *
* @param array $credentials
* @param bool $remember * @param bool $remember
* *
* @throws LdapException*@throws \BookStack\Exceptions\JsonDebugException * @throws LdapException
* @throws LoginAttemptException * @throws LoginAttemptException
* @throws JsonDebugException * @throws JsonDebugException
*
* @return bool
*/ */
public function attempt(array $credentials = [], $remember = false) public function attempt(array $credentials = [], $remember = false): bool
{ {
$username = $credentials['username']; $username = $credentials['username'];
$userDetails = $this->ldapService->getUserDetails($username); $userDetails = $this->ldapService->getUserDetails($username);

View File

@@ -11,6 +11,7 @@ use BookStack\Entities\Tools\MixedEntityListLoader;
use BookStack\Permissions\PermissionApplicator; use BookStack\Permissions\PermissionApplicator;
use BookStack\Users\Models\User; use BookStack\Users\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Database\Eloquent\Relations\Relation;
class ActivityQueries class ActivityQueries
@@ -67,6 +68,7 @@ class ActivityQueries
$activity = $query->orderBy('created_at', 'desc') $activity = $query->orderBy('created_at', 'desc')
->with(['loggable' => function (Relation $query) { ->with(['loggable' => function (Relation $query) {
/** @var MorphTo<Entity, Activity> $query */
$query->withTrashed(); $query->withTrashed();
}, 'user.avatar']) }, 'user.avatar'])
->skip($count * ($page - 1)) ->skip($count * ($page - 1))

View File

@@ -20,7 +20,8 @@ class PageUpdateNotificationHandler extends BaseNotificationHandler
throw new \InvalidArgumentException("Detail for page update notifications must be a page"); throw new \InvalidArgumentException("Detail for page update notifications must be a page");
} }
// Get last update from activity // Get the last update from activity
/** @var ?Activity $lastUpdate */
$lastUpdate = $detail->activity() $lastUpdate = $detail->activity()
->where('type', '=', ActivityType::PAGE_UPDATE) ->where('type', '=', ActivityType::PAGE_UPDATE)
->where('id', '!=', $activity->id) ->where('id', '!=', $activity->id)

View File

@@ -50,7 +50,7 @@ class WebhookFormatter
} }
if ($this->detail instanceof Model) { if ($this->detail instanceof Model) {
$data['related_item'] = $this->formatModel(); $data['related_item'] = $this->formatModel($this->detail);
} }
return $data; return $data;
@@ -83,10 +83,8 @@ class WebhookFormatter
); );
} }
protected function formatModel(): array protected function formatModel(Model $model): array
{ {
/** @var Model $model */
$model = $this->detail;
$model->unsetRelations(); $model->unsetRelations();
foreach ($this->modelFormatters as $formatter) { foreach ($this->modelFormatters as $formatter) {

View File

@@ -2,6 +2,7 @@
namespace BookStack\Entities\Controllers; namespace BookStack\Entities\Controllers;
use BookStack\Entities\Models\Book;
use BookStack\Entities\Models\Chapter; use BookStack\Entities\Models\Chapter;
use BookStack\Entities\Queries\ChapterQueries; use BookStack\Entities\Queries\ChapterQueries;
use BookStack\Entities\Queries\EntityQueries; use BookStack\Entities\Queries\EntityQueries;
@@ -143,7 +144,10 @@ class ChapterApiController extends ApiController
$chapter->load(['tags']); $chapter->load(['tags']);
$chapter->makeVisible('description_html'); $chapter->makeVisible('description_html');
$chapter->setAttribute('description_html', $chapter->descriptionHtml()); $chapter->setAttribute('description_html', $chapter->descriptionHtml());
$chapter->setAttribute('book_slug', $chapter->book()->first()->slug);
/** @var Book $book */
$book = $chapter->book()->first();
$chapter->setAttribute('book_slug', $book->slug);
return $chapter; return $chapter;
} }

View File

@@ -26,6 +26,7 @@ use BookStack\Users\Models\HasOwner;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
@@ -283,10 +284,14 @@ abstract class Entity extends Model implements Sluggable, Favouritable, Viewable
public function getParent(): ?self public function getParent(): ?self
{ {
if ($this instanceof Page) { if ($this instanceof Page) {
return $this->chapter_id ? $this->chapter()->withTrashed()->first() : $this->book()->withTrashed()->first(); /** @var BelongsTo<Chapter|Book, Page> $builder */
$builder = $this->chapter_id ? $this->chapter() : $this->book();
return $builder->withTrashed()->first();
} }
if ($this instanceof Chapter) { if ($this instanceof Chapter) {
return $this->book()->withTrashed()->first(); /** @var BelongsTo<Book, Page> $builder */
$builder = $this->book();
return $builder->withTrashed()->first();
} }
return null; return null;
@@ -295,7 +300,7 @@ abstract class Entity extends Model implements Sluggable, Favouritable, Viewable
/** /**
* Rebuild the permissions for this entity. * Rebuild the permissions for this entity.
*/ */
public function rebuildPermissions() public function rebuildPermissions(): void
{ {
app()->make(JointPermissionBuilder::class)->rebuildForEntity(clone $this); app()->make(JointPermissionBuilder::class)->rebuildForEntity(clone $this);
} }
@@ -303,7 +308,7 @@ abstract class Entity extends Model implements Sluggable, Favouritable, Viewable
/** /**
* Index the current entity for search. * Index the current entity for search.
*/ */
public function indexForSearch() public function indexForSearch(): void
{ {
app()->make(SearchIndex::class)->indexEntity(clone $this); app()->make(SearchIndex::class)->indexEntity(clone $this);
} }

View File

@@ -89,7 +89,7 @@ class ImportController extends Controller
try { try {
$entity = $this->imports->runImport($import, $parent); $entity = $this->imports->runImport($import, $parent);
} catch (ZipImportException $exception) { } catch (ZipImportException $exception) {
session()->flush(); session()->forget(['success', 'warning']);
$this->showErrorNotification(trans('errors.import_zip_failed_notification')); $this->showErrorNotification(trans('errors.import_zip_failed_notification'));
return redirect($import->getUrl())->with('import_errors', $exception->errors); return redirect($import->getUrl())->with('import_errors', $exception->errors);
} }

View File

@@ -17,17 +17,17 @@ use BookStack\Uploads\Image;
class ZipExportReferences class ZipExportReferences
{ {
/** @var ZipExportPage[] */ /** @var array<int, ZipExportPage> */
protected array $pages = []; protected array $pages = [];
/** @var ZipExportChapter[] */ /** @var array<int, ZipExportChapter> */
protected array $chapters = []; protected array $chapters = [];
/** @var ZipExportBook[] */ /** @var array<int, ZipExportBook> */
protected array $books = []; protected array $books = [];
/** @var ZipExportAttachment[] */ /** @var array<int, ZipExportAttachment> */
protected array $attachments = []; protected array $attachments = [];
/** @var ZipExportImage[] */ /** @var array<int, ZipExportImage> */
protected array $images = []; protected array $images = [];
public function __construct( public function __construct(
@@ -134,11 +134,12 @@ class ZipExportReferences
// Find and include images if in visibility // Find and include images if in visibility
$page = $model->getPage(); $page = $model->getPage();
if ($page && userCan('view', $page)) { $pageExportModel = $this->pages[$page->id] ?? ($exportModel instanceof ZipExportPage ? $exportModel : null);
if (isset($this->images[$model->id]) || ($page && $pageExportModel && userCan('view', $page))) {
if (!isset($this->images[$model->id])) { if (!isset($this->images[$model->id])) {
$exportImage = ZipExportImage::fromModel($model, $files); $exportImage = ZipExportImage::fromModel($model, $files);
$this->images[$model->id] = $exportImage; $this->images[$model->id] = $exportImage;
$exportModel->images[] = $exportImage; $pageExportModel->images[] = $exportImage;
} }
return "[[bsexport:image:{$model->id}]]"; return "[[bsexport:image:{$model->id}]]";
} }

View File

@@ -7,6 +7,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
/** /**
* @property int $created_by * @property int $created_by
* @property int $updated_by * @property int $updated_by
* @property ?User $createdBy
* @property ?User $updatedBy
*/ */
trait HasCreatorAndUpdater trait HasCreatorAndUpdater
{ {

386
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -467,7 +467,7 @@ License: MIT
License File: vendor/psy/psysh/LICENSE License File: vendor/psy/psysh/LICENSE
Copyright: Copyright (c) 2012-2023 Justin Hileman Copyright: Copyright (c) 2012-2023 Justin Hileman
Source: https://github.com/bobthecow/psysh.git Source: https://github.com/bobthecow/psysh.git
Link: http://psysh.org Link: https://psysh.org
----------- -----------
ralouphie/getallheaders ralouphie/getallheaders
License: MIT License: MIT

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'سيؤدي هذا إلى حذف مِلَفّ الاستيراد المضغوط ZIP، ولا يمكن التراجع عنه.', 'import_delete_desc' => 'سيؤدي هذا إلى حذف مِلَفّ الاستيراد المضغوط ZIP، ولا يمكن التراجع عنه.',
'import_errors' => 'أخطاء الاستيراد', 'import_errors' => 'أخطاء الاستيراد',
'import_errors_desc' => 'حدثت الأخطاء التالية خلال محاولة الاستيراد:', 'import_errors_desc' => 'حدثت الأخطاء التالية خلال محاولة الاستيراد:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'الأذونات', 'permissions' => 'الأذونات',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Права', 'permissions' => 'Права',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissions', 'permissions' => 'Permissions',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Dozvole', 'permissions' => 'Dozvole',

View File

@@ -13,7 +13,7 @@ return [
'cancel' => 'Cancel·la', 'cancel' => 'Cancel·la',
'save' => 'Desa', 'save' => 'Desa',
'close' => 'Tanca', 'close' => 'Tanca',
'apply' => 'Apply', 'apply' => 'Aplicar',
'undo' => 'Desfés', 'undo' => 'Desfés',
'redo' => 'Refés', 'redo' => 'Refés',
'left' => 'Esquerra', 'left' => 'Esquerra',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permisos', 'permissions' => 'Permisos',

View File

@@ -47,8 +47,8 @@ return [
'strikethrough' => 'Proškrtnuté', 'strikethrough' => 'Proškrtnuté',
'superscript' => 'horní index', 'superscript' => 'horní index',
'subscript' => 'Dolní index', 'subscript' => 'Dolní index',
'text_color' => 'Barva textu:', 'text_color' => 'Barva textu',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Barva zvýraznění',
'custom_color' => 'Vlastní barva', 'custom_color' => 'Vlastní barva',
'remove_color' => 'Odstranit barvu', 'remove_color' => 'Odstranit barvu',
'background_color' => 'Barva pozadí', 'background_color' => 'Barva pozadí',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Potvrzením odstraníte nahraný ZIP soubor. Tento krok nelze vrátit zpět.', 'import_delete_desc' => 'Potvrzením odstraníte nahraný ZIP soubor. Tento krok nelze vrátit zpět.',
'import_errors' => 'Chyby importu', 'import_errors' => 'Chyby importu',
'import_errors_desc' => 'Při pokusu o import došlo k následujícím chybám:', 'import_errors_desc' => 'Při pokusu o import došlo k následujícím chybám:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Oprávnění', 'permissions' => 'Oprávnění',
@@ -244,8 +248,8 @@ return [
'pages_edit_delete_draft_confirm' => 'Jste si jisti, že chcete odstranit změny vašich konceptů? Všechny vaše změny, od posledního úplného uložení, budou ztraceny a editor bude aktualizován s nejnovějším stavem nekonceptu stránky.', 'pages_edit_delete_draft_confirm' => 'Jste si jisti, že chcete odstranit změny vašich konceptů? Všechny vaše změny, od posledního úplného uložení, budou ztraceny a editor bude aktualizován s nejnovějším stavem nekonceptu stránky.',
'pages_edit_discard_draft' => 'Zahodit koncept', 'pages_edit_discard_draft' => 'Zahodit koncept',
'pages_edit_switch_to_markdown' => 'Přepnout na Markdown Editor', 'pages_edit_switch_to_markdown' => 'Přepnout na Markdown Editor',
'pages_edit_switch_to_markdown_clean' => '(Vytvořený obsah)', 'pages_edit_switch_to_markdown_clean' => '(Prostý zápis)',
'pages_edit_switch_to_markdown_stable' => '(Stabilní obsah)', 'pages_edit_switch_to_markdown_stable' => '(Formátovaný zápis)',
'pages_edit_switch_to_wysiwyg' => 'Přepnout na WYSIWYG Editor', 'pages_edit_switch_to_wysiwyg' => 'Přepnout na WYSIWYG Editor',
'pages_edit_switch_to_new_wysiwyg' => 'Přepnout na nový WYSIWYG', 'pages_edit_switch_to_new_wysiwyg' => 'Přepnout na nový WYSIWYG',
'pages_edit_switch_to_new_wysiwyg_desc' => '(V beta testování)', 'pages_edit_switch_to_new_wysiwyg_desc' => '(V beta testování)',
@@ -268,7 +272,7 @@ return [
'pages_md_insert_drawing' => 'Vložit kresbu', 'pages_md_insert_drawing' => 'Vložit kresbu',
'pages_md_show_preview' => 'Zobrazit náhled', 'pages_md_show_preview' => 'Zobrazit náhled',
'pages_md_sync_scroll' => 'Synchronizovat náhled', 'pages_md_sync_scroll' => 'Synchronizovat náhled',
'pages_md_plain_editor' => 'Plaintext editor', 'pages_md_plain_editor' => 'Upravovat prostý text',
'pages_drawing_unsaved' => 'Nalezen neuložený výkres', 'pages_drawing_unsaved' => 'Nalezen neuložený výkres',
'pages_drawing_unsaved_confirm' => 'Byly nalezeny neuložené kresby z předchozí neúspěšné pokusu o uložení kresby. Chcete je obnovit a pokračovat v úpravě této neuložené kresby?', 'pages_drawing_unsaved_confirm' => 'Byly nalezeny neuložené kresby z předchozí neúspěšné pokusu o uložení kresby. Chcete je obnovit a pokračovat v úpravě této neuložené kresby?',
'pages_not_in_chapter' => 'Stránka není v kapitole', 'pages_not_in_chapter' => 'Stránka není v kapitole',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Bydd hwn yn dileu\'r mewnforyn ffeil ZIP sy wedi\'i lwytho i fyny, a fydd e ddim gallu cael ei ddadwneud.', 'import_delete_desc' => 'Bydd hwn yn dileu\'r mewnforyn ffeil ZIP sy wedi\'i lwytho i fyny, a fydd e ddim gallu cael ei ddadwneud.',
'import_errors' => 'Gwallau Mewnforyn', 'import_errors' => 'Gwallau Mewnforyn',
'import_errors_desc' => 'Digwyddodd y gwallau canlynol yn ystod cynnig y mewnforyn:', 'import_errors_desc' => 'Digwyddodd y gwallau canlynol yn ystod cynnig y mewnforyn:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Caniatâd', 'permissions' => 'Caniatâd',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Dette vil slette den uploadede ZIP-fil og kan ikke fortrydes.', 'import_delete_desc' => 'Dette vil slette den uploadede ZIP-fil og kan ikke fortrydes.',
'import_errors' => 'Importfejl', 'import_errors' => 'Importfejl',
'import_errors_desc' => 'Følgende fejl opstod under importforsøget:', 'import_errors_desc' => 'Følgende fejl opstod under importforsøget:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Rettigheder', 'permissions' => 'Rettigheder',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Hochgestellt', 'superscript' => 'Hochgestellt',
'subscript' => 'Tiefgestellt', 'subscript' => 'Tiefgestellt',
'text_color' => 'Schriftfarbe', 'text_color' => 'Schriftfarbe',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Markierungsfarbe',
'custom_color' => 'Benutzerdefinierte Farbe', 'custom_color' => 'Benutzerdefinierte Farbe',
'remove_color' => 'Farbe entfernen', 'remove_color' => 'Farbe entfernen',
'background_color' => 'Hintergrundfarbe', 'background_color' => 'Hintergrundfarbe',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Dies löscht die hochgeladene ZIP-Datei und kann nicht rückgängig gemacht werden.', 'import_delete_desc' => 'Dies löscht die hochgeladene ZIP-Datei und kann nicht rückgängig gemacht werden.',
'import_errors' => 'Importfehler', 'import_errors' => 'Importfehler',
'import_errors_desc' => 'Die folgenden Fehler sind während des Importversuchs aufgetreten:', 'import_errors_desc' => 'Die folgenden Fehler sind während des Importversuchs aufgetreten:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Berechtigungen', 'permissions' => 'Berechtigungen',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Hochgestellt', 'superscript' => 'Hochgestellt',
'subscript' => 'Tiefgestellt', 'subscript' => 'Tiefgestellt',
'text_color' => 'Textfarbe', 'text_color' => 'Textfarbe',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Markierungsfarbe',
'custom_color' => 'Benutzerdefinierte Farbe', 'custom_color' => 'Benutzerdefinierte Farbe',
'remove_color' => 'Farbe entfernen', 'remove_color' => 'Farbe entfernen',
'background_color' => 'Hintergrundfarbe', 'background_color' => 'Hintergrundfarbe',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Dies löscht die hochgeladene ZIP-Datei und kann nicht rückgängig gemacht werden.', 'import_delete_desc' => 'Dies löscht die hochgeladene ZIP-Datei und kann nicht rückgängig gemacht werden.',
'import_errors' => 'Importfehler', 'import_errors' => 'Importfehler',
'import_errors_desc' => 'Die folgenden Fehler sind während des Importversuchs aufgetreten:', 'import_errors_desc' => 'Die folgenden Fehler sind während des Importversuchs aufgetreten:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Berechtigungen', 'permissions' => 'Berechtigungen',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Δικαιώματα', 'permissions' => 'Δικαιώματα',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissions', 'permissions' => 'Permissions',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Superíndice', 'superscript' => 'Superíndice',
'subscript' => 'Subíndice', 'subscript' => 'Subíndice',
'text_color' => 'Color de texto', 'text_color' => 'Color de texto',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Color de resaltado',
'custom_color' => 'Color personalizado', 'custom_color' => 'Color personalizado',
'remove_color' => 'Eliminar color', 'remove_color' => 'Eliminar color',
'background_color' => 'Color de fondo', 'background_color' => 'Color de fondo',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Esto eliminará el archivo ZIP de importación subido y no se puede deshacer.', 'import_delete_desc' => 'Esto eliminará el archivo ZIP de importación subido y no se puede deshacer.',
'import_errors' => 'Errores de Importación', 'import_errors' => 'Errores de Importación',
'import_errors_desc' => 'Se han producido los siguientes errores durante el intento de importación:', 'import_errors_desc' => 'Se han producido los siguientes errores durante el intento de importación:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permisos', 'permissions' => 'Permisos',
@@ -268,7 +272,7 @@ return [
'pages_md_insert_drawing' => 'Insertar Dibujo', 'pages_md_insert_drawing' => 'Insertar Dibujo',
'pages_md_show_preview' => 'Mostrar vista previa', 'pages_md_show_preview' => 'Mostrar vista previa',
'pages_md_sync_scroll' => 'Sincronizar desplazamiento de vista previa', 'pages_md_sync_scroll' => 'Sincronizar desplazamiento de vista previa',
'pages_md_plain_editor' => 'Plaintext editor', 'pages_md_plain_editor' => 'Editor de texto plano',
'pages_drawing_unsaved' => 'Encontrado dibujo sin guardar', 'pages_drawing_unsaved' => 'Encontrado dibujo sin guardar',
'pages_drawing_unsaved_confirm' => 'Se encontraron datos no guardados del dibujo de un intento de guardado fallido. ¿Desea restaurar y continuar editando el dibujo no guardado?', 'pages_drawing_unsaved_confirm' => 'Se encontraron datos no guardados del dibujo de un intento de guardado fallido. ¿Desea restaurar y continuar editando el dibujo no guardado?',
'pages_not_in_chapter' => 'La página no está en un capítulo', 'pages_not_in_chapter' => 'La página no está en un capítulo',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Superíndice', 'superscript' => 'Superíndice',
'subscript' => 'Subíndice', 'subscript' => 'Subíndice',
'text_color' => 'Color del texto', 'text_color' => 'Color del texto',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Color de resaltado',
'custom_color' => 'Color personalizado', 'custom_color' => 'Color personalizado',
'remove_color' => 'Eliminar color', 'remove_color' => 'Eliminar color',
'background_color' => 'Color de fondo', 'background_color' => 'Color de fondo',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Esto eliminará el archivo ZIP de importación subido y no se puede deshacer.', 'import_delete_desc' => 'Esto eliminará el archivo ZIP de importación subido y no se puede deshacer.',
'import_errors' => 'Errores de Importación', 'import_errors' => 'Errores de Importación',
'import_errors_desc' => 'Se produjeron los siguientes errores durante el intento de importación:', 'import_errors_desc' => 'Se produjeron los siguientes errores durante el intento de importación:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permisos', 'permissions' => 'Permisos',
@@ -268,7 +272,7 @@ return [
'pages_md_insert_drawing' => 'Insertar Dibujo', 'pages_md_insert_drawing' => 'Insertar Dibujo',
'pages_md_show_preview' => 'Mostrar vista previa', 'pages_md_show_preview' => 'Mostrar vista previa',
'pages_md_sync_scroll' => 'Sincronizar desplazamiento de vista previa', 'pages_md_sync_scroll' => 'Sincronizar desplazamiento de vista previa',
'pages_md_plain_editor' => 'Plaintext editor', 'pages_md_plain_editor' => 'Editor de texto plano',
'pages_drawing_unsaved' => 'Encontrado dibujo sin guardar', 'pages_drawing_unsaved' => 'Encontrado dibujo sin guardar',
'pages_drawing_unsaved_confirm' => 'Se encontraron datos del dibujo no guardados durante un intento de guardado fallido anterior. ¿Desea restaurar y continuar editando el dibujo no guardado?', 'pages_drawing_unsaved_confirm' => 'Se encontraron datos del dibujo no guardados durante un intento de guardado fallido anterior. ¿Desea restaurar y continuar editando el dibujo no guardado?',
'pages_not_in_chapter' => 'La página no esá en el capítulo', 'pages_not_in_chapter' => 'La página no esá en el capítulo',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Ülaindeks', 'superscript' => 'Ülaindeks',
'subscript' => 'Alaindeks', 'subscript' => 'Alaindeks',
'text_color' => 'Teksti värv', 'text_color' => 'Teksti värv',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Esiletõstuvärv',
'custom_color' => 'Kohandatud värv', 'custom_color' => 'Kohandatud värv',
'remove_color' => 'Eemalda värv', 'remove_color' => 'Eemalda värv',
'background_color' => 'Taustavärv', 'background_color' => 'Taustavärv',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'See kustutab üleslaaditud ZIP-faili, ja seda ei saa tagasi võtta.', 'import_delete_desc' => 'See kustutab üleslaaditud ZIP-faili, ja seda ei saa tagasi võtta.',
'import_errors' => 'Importimise vead', 'import_errors' => 'Importimise vead',
'import_errors_desc' => 'Importimisel esinesid järgmised vead:', 'import_errors_desc' => 'Importimisel esinesid järgmised vead:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Õigused', 'permissions' => 'Õigused',
@@ -268,7 +272,7 @@ return [
'pages_md_insert_drawing' => 'Lisa joonis', 'pages_md_insert_drawing' => 'Lisa joonis',
'pages_md_show_preview' => 'Näita eelvaadet', 'pages_md_show_preview' => 'Näita eelvaadet',
'pages_md_sync_scroll' => 'Sünkrooni eelvaate kerimine', 'pages_md_sync_scroll' => 'Sünkrooni eelvaate kerimine',
'pages_md_plain_editor' => 'Plaintext editor', 'pages_md_plain_editor' => 'Lihttekstiredaktor',
'pages_drawing_unsaved' => 'Leiti salvestamata joonis', 'pages_drawing_unsaved' => 'Leiti salvestamata joonis',
'pages_drawing_unsaved_confirm' => 'Varasemast ebaõnnestunud salvestuskatsest leiti salvestamata joonis. Kas soovid salvestamata joonise taastada ja selle muutmist jätkata?', 'pages_drawing_unsaved_confirm' => 'Varasemast ebaõnnestunud salvestuskatsest leiti salvestamata joonis. Kas soovid salvestamata joonise taastada ja selle muutmist jätkata?',
'pages_not_in_chapter' => 'Leht ei kuulu peatüki alla', 'pages_not_in_chapter' => 'Leht ei kuulu peatüki alla',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Baimenak', 'permissions' => 'Baimenak',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'با انجام این کار، فایل ZIP واردشده حذف می‌شود و این عمل بازگشت‌ناپذیر است.', 'import_delete_desc' => 'با انجام این کار، فایل ZIP واردشده حذف می‌شود و این عمل بازگشت‌ناپذیر است.',
'import_errors' => 'خطای انتقال ورودی', 'import_errors' => 'خطای انتقال ورودی',
'import_errors_desc' => 'در جریان تلاش برای انتقال ورودی، خطاهای زیر رخ داد:', 'import_errors_desc' => 'در جریان تلاش برای انتقال ورودی، خطاهای زیر رخ داد:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'مجوزها', 'permissions' => 'مجوزها',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Käyttöoikeudet', 'permissions' => 'Käyttöoikeudet',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Exposant', 'superscript' => 'Exposant',
'subscript' => 'Indice', 'subscript' => 'Indice',
'text_color' => 'Couleur Texte', 'text_color' => 'Couleur Texte',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Couleur de surlignage',
'custom_color' => 'Couleur personnalisée', 'custom_color' => 'Couleur personnalisée',
'remove_color' => 'Supprimer la couleur', 'remove_color' => 'Supprimer la couleur',
'background_color' => 'Couleur d\'arrière-plan', 'background_color' => 'Couleur d\'arrière-plan',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Ceci supprimera le fichier ZIP importé et ne pourra pas être annulé.', 'import_delete_desc' => 'Ceci supprimera le fichier ZIP importé et ne pourra pas être annulé.',
'import_errors' => 'Erreurs d\'importation', 'import_errors' => 'Erreurs d\'importation',
'import_errors_desc' => 'Les erreurs suivantes se sont produites lors de la tentative d\'importation :', 'import_errors_desc' => 'Les erreurs suivantes se sont produites lors de la tentative d\'importation :',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Autorisations', 'permissions' => 'Autorisations',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'תקלות יבוא', 'import_errors' => 'תקלות יבוא',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'הרשאות', 'permissions' => 'הרשאות',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Dopuštenja', 'permissions' => 'Dopuštenja',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Jogosultságok', 'permissions' => 'Jogosultságok',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Izin', 'permissions' => 'Izin',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Þetta mun eyða innsendri ZIP skrá, þessa aðgerð er ekki hægt að afturkalla.', 'import_delete_desc' => 'Þetta mun eyða innsendri ZIP skrá, þessa aðgerð er ekki hægt að afturkalla.',
'import_errors' => 'Villur í innflutningi', 'import_errors' => 'Villur í innflutningi',
'import_errors_desc' => 'Eftirfarandi villur komu upp við innflutning:', 'import_errors_desc' => 'Eftirfarandi villur komu upp við innflutning:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Réttindi', 'permissions' => 'Réttindi',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Apice', 'superscript' => 'Apice',
'subscript' => 'Pedice', 'subscript' => 'Pedice',
'text_color' => 'Colore del testo', 'text_color' => 'Colore del testo',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Colore evidenziazione',
'custom_color' => 'Colore personalizzato', 'custom_color' => 'Colore personalizzato',
'remove_color' => 'Rimuovi colore', 'remove_color' => 'Rimuovi colore',
'background_color' => 'Colore di sfondo', 'background_color' => 'Colore di sfondo',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Questa operazione cancella il file ZIP di importazione caricato e non può essere annullata.', 'import_delete_desc' => 'Questa operazione cancella il file ZIP di importazione caricato e non può essere annullata.',
'import_errors' => 'Errori di importazione', 'import_errors' => 'Errori di importazione',
'import_errors_desc' => 'Gli seguenti errori si sono verificati durante il tentativo di importazione:', 'import_errors_desc' => 'Gli seguenti errori si sono verificati durante il tentativo di importazione:',
'breadcrumb_siblings_for_page' => 'Naviga tra le pagine correlate',
'breadcrumb_siblings_for_chapter' => 'Naviga tra i capitoli correlati',
'breadcrumb_siblings_for_book' => 'Naviga tra i libri correlati',
'breadcrumb_siblings_for_bookshelf' => 'Naviga tra le librerie correlate',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permessi', 'permissions' => 'Permessi',

View File

@@ -47,8 +47,8 @@ return [
'strikethrough' => '取消線', 'strikethrough' => '取消線',
'superscript' => '上付き', 'superscript' => '上付き',
'subscript' => '下付き', 'subscript' => '下付き',
'text_color' => 'テキスト色', 'text_color' => 'テキスト色',
'highlight_color' => 'Highlight color', 'highlight_color' => 'テキスト背景色',
'custom_color' => 'カスタムカラー', 'custom_color' => 'カスタムカラー',
'remove_color' => '色設定を解除', 'remove_color' => '色設定を解除',
'background_color' => '背景色', 'background_color' => '背景色',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'アップロードされたインポートZIPファイルは削除され、元に戻すことはできません。', 'import_delete_desc' => 'アップロードされたインポートZIPファイルは削除され、元に戻すことはできません。',
'import_errors' => 'インポートエラー', 'import_errors' => 'インポートエラー',
'import_errors_desc' => 'インポート中に次のエラーが発生しました:', 'import_errors_desc' => 'インポート中に次のエラーが発生しました:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => '権限', 'permissions' => '権限',
@@ -261,14 +265,14 @@ return [
'pages_save' => 'ページを保存', 'pages_save' => 'ページを保存',
'pages_title' => 'ページタイトル', 'pages_title' => 'ページタイトル',
'pages_name' => 'ページ名', 'pages_name' => 'ページ名',
'pages_md_editor' => 'エディタ', 'pages_md_editor' => 'エディタ',
'pages_md_preview' => 'プレビュー', 'pages_md_preview' => 'プレビュー',
'pages_md_insert_image' => '画像を挿入', 'pages_md_insert_image' => '画像を挿入',
'pages_md_insert_link' => 'エンティティへのリンクを挿入', 'pages_md_insert_link' => 'エンティティへのリンクを挿入',
'pages_md_insert_drawing' => '図を追加', 'pages_md_insert_drawing' => '図を追加',
'pages_md_show_preview' => 'プレビューを表示', 'pages_md_show_preview' => 'プレビューを表示',
'pages_md_sync_scroll' => 'プレビューとスクロールを同期', 'pages_md_sync_scroll' => 'プレビューとスクロールを同期',
'pages_md_plain_editor' => 'Plaintext editor', 'pages_md_plain_editor' => 'プレーンテキスト エディタ',
'pages_drawing_unsaved' => '未保存の図が見つかりました', 'pages_drawing_unsaved' => '未保存の図が見つかりました',
'pages_drawing_unsaved_confirm' => '以前に保存操作が失敗した、未保存の図が見つかりました。 'pages_drawing_unsaved_confirm' => '以前に保存操作が失敗した、未保存の図が見つかりました。
未保存の図面を復元して編集を続けますか?', 未保存の図面を復元して編集を続けますか?',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissions', 'permissions' => 'Permissions',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => '업로드된 ZIP 파일이 삭제되며, 실행 취소할 수 없습니다.', 'import_delete_desc' => '업로드된 ZIP 파일이 삭제되며, 실행 취소할 수 없습니다.',
'import_errors' => '가져오기 오류', 'import_errors' => '가져오기 오류',
'import_errors_desc' => '가져오기 중 에러가 발생했습니다.', 'import_errors_desc' => '가져오기 중 에러가 발생했습니다.',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => '권한', 'permissions' => '권한',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissions', 'permissions' => 'Permissions',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Leidimai', 'permissions' => 'Leidimai',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Šis izdzēsīs augšupielādēto importa ZIP failu, un šo darbību nevarēs atcelt.', 'import_delete_desc' => 'Šis izdzēsīs augšupielādēto importa ZIP failu, un šo darbību nevarēs atcelt.',
'import_errors' => 'Importa kļūdas', 'import_errors' => 'Importa kļūdas',
'import_errors_desc' => 'Importa mēģinājumā atgadījās šīs kļūdas:', 'import_errors_desc' => 'Importa mēģinājumā atgadījās šīs kļūdas:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Atļaujas', 'permissions' => 'Atļaujas',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Dette vil slette den opplastede importen av ZIP-filen og kan ikke angres.', 'import_delete_desc' => 'Dette vil slette den opplastede importen av ZIP-filen og kan ikke angres.',
'import_errors' => 'Import feil', 'import_errors' => 'Import feil',
'import_errors_desc' => 'Feil oppstod under importforsøket:', 'import_errors_desc' => 'Feil oppstod under importforsøket:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Tilganger', 'permissions' => 'Tilganger',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'यो अपलोड गरिएको आयात ZIP फाइल मेट्नेछ, र यो कार्य नकारात्मक हुन सक्दैन।', 'import_delete_desc' => 'यो अपलोड गरिएको आयात ZIP फाइल मेट्नेछ, र यो कार्य नकारात्मक हुन सक्दैन।',
'import_errors' => 'आयात त्रुटिहरू', 'import_errors' => 'आयात त्रुटिहरू',
'import_errors_desc' => 'आयात प्रयासको क्रममा निम्न त्रुटिहरू उत्पन्न भएका छन्:', 'import_errors_desc' => 'आयात प्रयासको क्रममा निम्न त्रुटिहरू उत्पन्न भएका छन्:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'अनुमतिहरू', 'permissions' => 'अनुमतिहरू',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Dit zal het Zip-bestand van de import permanent verwijderen.', 'import_delete_desc' => 'Dit zal het Zip-bestand van de import permanent verwijderen.',
'import_errors' => 'Importeerfouten', 'import_errors' => 'Importeerfouten',
'import_errors_desc' => 'De volgende fouten deden zich voor tijdens het importeren:', 'import_errors_desc' => 'De volgende fouten deden zich voor tijdens het importeren:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Machtigingen', 'permissions' => 'Machtigingen',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Tilgongar', 'permissions' => 'Tilgongar',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Uprawnienia', 'permissions' => 'Uprawnienia',

View File

@@ -30,7 +30,7 @@ return [
// Books // Books
'book_create' => 'livro criado', 'book_create' => 'livro criado',
'book_create_notification' => 'Livro criado com sucesso', 'book_create_notification' => 'Livro criado com sucesso',
'book_create_from_chapter' => 'capítulo convertido para lívro', 'book_create_from_chapter' => 'capítulo convertido para livro',
'book_create_from_chapter_notification' => 'Capítulo convertido em livro com sucesso', 'book_create_from_chapter_notification' => 'Capítulo convertido em livro com sucesso',
'book_update' => 'livro atualizado', 'book_update' => 'livro atualizado',
'book_update_notification' => 'Livro atualizado com sucesso', 'book_update_notification' => 'Livro atualizado com sucesso',
@@ -46,12 +46,12 @@ return [
'bookshelf_create_from_book_notification' => 'Livro convertido em prateleira com sucesso', 'bookshelf_create_from_book_notification' => 'Livro convertido em prateleira com sucesso',
'bookshelf_update' => 'estante atualizada', 'bookshelf_update' => 'estante atualizada',
'bookshelf_update_notification' => 'Estante atualizada com sucesso', 'bookshelf_update_notification' => 'Estante atualizada com sucesso',
'bookshelf_delete' => 'prateleira excluída', 'bookshelf_delete' => 'excluiu a estante',
'bookshelf_delete_notification' => 'Estante eliminada com sucesso', 'bookshelf_delete_notification' => 'Estante eliminada com sucesso',
// Revisions // Revisions
'revision_restore' => 'revisão restaurada', 'revision_restore' => 'restaurou a revisão',
'revision_delete' => 'revisão eliminada', 'revision_delete' => 'eliminou a revisão',
'revision_delete_notification' => 'Revisão eliminada com sucesso', 'revision_delete_notification' => 'Revisão eliminada com sucesso',
// Favourites // Favourites
@@ -62,7 +62,7 @@ return [
'watch_update_level_notification' => 'Ver preferências atualizadas com sucesso', 'watch_update_level_notification' => 'Ver preferências atualizadas com sucesso',
// Auth // Auth
'auth_login' => 'sessão iniciada', 'auth_login' => 'iniciou sessão',
'auth_register' => 'registado como novo utilizador', 'auth_register' => 'registado como novo utilizador',
'auth_password_reset_request' => 'pedido a redefinição da palavra-passe', 'auth_password_reset_request' => 'pedido a redefinição da palavra-passe',
'auth_password_reset_update' => 'redifinir palavra-passe do utilizador', 'auth_password_reset_update' => 'redifinir palavra-passe do utilizador',
@@ -85,12 +85,12 @@ return [
'webhook_delete_notification' => 'Webhook criado com sucesso', 'webhook_delete_notification' => 'Webhook criado com sucesso',
// Imports // Imports
'import_create' => 'created import', 'import_create' => 'importação criada',
'import_create_notification' => 'Import successfully uploaded', 'import_create_notification' => 'Importação carregada com sucesso',
'import_run' => 'updated import', 'import_run' => 'importação atualizada',
'import_run_notification' => 'Content successfully imported', 'import_run_notification' => 'Conteúdo importado com sucesso',
'import_delete' => 'deleted import', 'import_delete' => 'importação apagada',
'import_delete_notification' => 'Import successfully deleted', 'import_delete_notification' => 'Importação eliminada com sucesso',
// Users // Users
'user_create' => 'utilizador criado', 'user_create' => 'utilizador criado',
@@ -101,11 +101,11 @@ return [
'user_delete_notification' => 'Utilizador removido com sucesso', 'user_delete_notification' => 'Utilizador removido com sucesso',
// API Tokens // API Tokens
'api_token_create' => 'created API token', 'api_token_create' => 'token API criado',
'api_token_create_notification' => 'API token criado com sucesso', 'api_token_create_notification' => 'API token criado com sucesso',
'api_token_update' => 'updated API token', 'api_token_update' => 'token API atualizado',
'api_token_update_notification' => 'API token atualizado com sucesso', 'api_token_update_notification' => 'API token atualizado com sucesso',
'api_token_delete' => 'deleted API token', 'api_token_delete' => 'token API apagado',
'api_token_delete_notification' => 'API token atualizado com sucesso', 'api_token_delete_notification' => 'API token atualizado com sucesso',
// Roles // Roles
@@ -128,12 +128,12 @@ return [
'comment_delete' => 'comentário eliminado', 'comment_delete' => 'comentário eliminado',
// Sort Rules // Sort Rules
'sort_rule_create' => 'created sort rule', 'sort_rule_create' => 'regra de ordenação criada',
'sort_rule_create_notification' => 'Sort rule successfully created', 'sort_rule_create_notification' => 'Regra de ordenação criada com sucesso',
'sort_rule_update' => 'updated sort rule', 'sort_rule_update' => 'regra de ordenação atualizada',
'sort_rule_update_notification' => 'Sort rule successfully updated', 'sort_rule_update_notification' => 'Regra de ordenação atualizada com sucesso',
'sort_rule_delete' => 'deleted sort rule', 'sort_rule_delete' => 'regra de ordenação apagada',
'sort_rule_delete_notification' => 'Sort rule successfully deleted', 'sort_rule_delete_notification' => 'Regra de ordenação apagada com sucesso',
// Other // Other
'permissions_update' => 'permissões atualizadas', 'permissions_update' => 'permissões atualizadas',

View File

@@ -91,7 +91,7 @@ return [
'mfa_option_totp_title' => 'Aplicação móvel', 'mfa_option_totp_title' => 'Aplicação móvel',
'mfa_option_totp_desc' => 'Para usar a autenticação multi-fator, você precisa de uma aplicação móvel que suporte TOTP como o Autenticador do Google, Authy ou o autenticador Microsoft.', 'mfa_option_totp_desc' => 'Para usar a autenticação multi-fator, você precisa de uma aplicação móvel que suporte TOTP como o Autenticador do Google, Authy ou o autenticador Microsoft.',
'mfa_option_backup_codes_title' => 'Códigos de Backup', 'mfa_option_backup_codes_title' => 'Códigos de Backup',
'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.', 'mfa_option_backup_codes_desc' => 'Gera um conjunto de códigos de reserva de utilização única, que deverá usar no início de sessão para verificar a sua identidade. Certifique-se de que os guarda num local seguro.',
'mfa_gen_confirm_and_enable' => 'Confirmar e ativar', 'mfa_gen_confirm_and_enable' => 'Confirmar e ativar',
'mfa_gen_backup_codes_title' => 'Configuração dos Códigos de Backup', 'mfa_gen_backup_codes_title' => 'Configuração dos Códigos de Backup',
'mfa_gen_backup_codes_desc' => 'Armazene a lista de códigos abaixo em um lugar seguro. Ao acessar o sistema você poderá usar um dos códigos como um segundo mecanismo de autenticação.', 'mfa_gen_backup_codes_desc' => 'Armazene a lista de códigos abaixo em um lugar seguro. Ao acessar o sistema você poderá usar um dos códigos como um segundo mecanismo de autenticação.',

View File

@@ -111,5 +111,5 @@ return [
'terms_of_service' => 'Termos de Utilização', 'terms_of_service' => 'Termos de Utilização',
// OpenSearch // OpenSearch
'opensearch_description' => 'Search :appName', 'opensearch_description' => 'Procurar :appName',
]; ];

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissões', 'permissions' => 'Permissões',

View File

@@ -48,7 +48,7 @@ return [
'superscript' => 'Sobrescrito', 'superscript' => 'Sobrescrito',
'subscript' => 'Subscrito', 'subscript' => 'Subscrito',
'text_color' => 'Cor do texto', 'text_color' => 'Cor do texto',
'highlight_color' => 'Highlight color', 'highlight_color' => 'Cor de destaque',
'custom_color' => 'Cor personalizada', 'custom_color' => 'Cor personalizada',
'remove_color' => 'Remover cor', 'remove_color' => 'Remover cor',
'background_color' => 'Cor de fundo', 'background_color' => 'Cor de fundo',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Isto irá excluir o arquivo ZIP de importação carregado e não poderá ser desfeito.', 'import_delete_desc' => 'Isto irá excluir o arquivo ZIP de importação carregado e não poderá ser desfeito.',
'import_errors' => 'Erros de importação', 'import_errors' => 'Erros de importação',
'import_errors_desc' => 'Os seguintes erros ocorreram durante a tentativa de importação:', 'import_errors_desc' => 'Os seguintes erros ocorreram durante a tentativa de importação:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissões', 'permissions' => 'Permissões',
@@ -268,7 +272,7 @@ return [
'pages_md_insert_drawing' => 'Inserir Diagrama', 'pages_md_insert_drawing' => 'Inserir Diagrama',
'pages_md_show_preview' => 'Mostrar pré-visualização', 'pages_md_show_preview' => 'Mostrar pré-visualização',
'pages_md_sync_scroll' => 'Sincronizar pré-visualização', 'pages_md_sync_scroll' => 'Sincronizar pré-visualização',
'pages_md_plain_editor' => 'Plaintext editor', 'pages_md_plain_editor' => 'Editor de texto simples',
'pages_drawing_unsaved' => 'Diagrama não-salvo encontrado', 'pages_drawing_unsaved' => 'Diagrama não-salvo encontrado',
'pages_drawing_unsaved_confirm' => 'Foram encontrados dados não-salvos de uma tentativa anterior de salvar o diagrama. Você gostaria de restaurá-los e continuar editando este diagrama?', 'pages_drawing_unsaved_confirm' => 'Foram encontrados dados não-salvos de uma tentativa anterior de salvar o diagrama. Você gostaria de restaurá-los e continuar editando este diagrama?',
'pages_not_in_chapter' => 'Página não está dentro de um capítulo', 'pages_not_in_chapter' => 'Página não está dentro de um capítulo',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permisiuni', 'permissions' => 'Permisiuni',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Разрешения', 'permissions' => 'Разрешения',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Oprávnenia', 'permissions' => 'Oprávnenia',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Dovoljenja', 'permissions' => 'Dovoljenja',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissions', 'permissions' => 'Permissions',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Дозволе', 'permissions' => 'Дозволе',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Detta kommer att ta bort den uppladdade ZIP-baserade importfilen och kan inte ångras.', 'import_delete_desc' => 'Detta kommer att ta bort den uppladdade ZIP-baserade importfilen och kan inte ångras.',
'import_errors' => 'Importfel', 'import_errors' => 'Importfel',
'import_errors_desc' => 'Följande fel inträffade under importförsöket:', 'import_errors_desc' => 'Följande fel inträffade under importförsöket:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Rättigheter', 'permissions' => 'Rättigheter',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Permissions', 'permissions' => 'Permissions',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'İzinler', 'permissions' => 'İzinler',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Це видалить завантажений імпорт файлу ZIP, і його не можна буде скасувати.', 'import_delete_desc' => 'Це видалить завантажений імпорт файлу ZIP, і його не можна буде скасувати.',
'import_errors' => 'Помилки імпорту', 'import_errors' => 'Помилки імпорту',
'import_errors_desc' => 'Під час спроби імпорту відбулися наступні помилки:', 'import_errors_desc' => 'Під час спроби імпорту відбулися наступні помилки:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Дозволи', 'permissions' => 'Дозволи',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.', 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
'import_errors' => 'Import Errors', 'import_errors' => 'Import Errors',
'import_errors_desc' => 'The follow errors occurred during the import attempt:', 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Huquqlar', 'permissions' => 'Huquqlar',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => 'Thao tác này sẽ xóa tệp ZIP nhập đã tải lên và không thể hoàn tác.', 'import_delete_desc' => 'Thao tác này sẽ xóa tệp ZIP nhập đã tải lên và không thể hoàn tác.',
'import_errors' => 'Lỗi nhập', 'import_errors' => 'Lỗi nhập',
'import_errors_desc' => 'Các lỗi sau đã xảy ra trong quá trình nhập:', 'import_errors_desc' => 'Các lỗi sau đã xảy ra trong quá trình nhập:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Quyền', 'permissions' => 'Quyền',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => '这将删除上传的ZIP文件不能撤消。', 'import_delete_desc' => '这将删除上传的ZIP文件不能撤消。',
'import_errors' => '导入错误', 'import_errors' => '导入错误',
'import_errors_desc' => '在尝试导入过程中出现了以下错误:', 'import_errors_desc' => '在尝试导入过程中出现了以下错误:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => '权限', 'permissions' => '权限',
@@ -166,7 +170,7 @@ return [
'books_search_this' => '搜索这本书', 'books_search_this' => '搜索这本书',
'books_navigation' => '图书导航', 'books_navigation' => '图书导航',
'books_sort' => '排序图书内容', 'books_sort' => '排序图书内容',
'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.', 'books_sort_desc' => '在书籍内部移动章节与页面以重组内容;支持添加其他书籍,实现跨书籍便捷移动章节与页面;还可设置自动排序规则,在内容发生变更时自动对本书内容进行排序。',
'books_sort_auto_sort' => '自动排序选项', 'books_sort_auto_sort' => '自动排序选项',
'books_sort_auto_sort_active' => '自动排序已激活:::sortName', 'books_sort_auto_sort_active' => '自动排序已激活:::sortName',
'books_sort_named' => '排序图书「:bookName」', 'books_sort_named' => '排序图书「:bookName」',

View File

@@ -63,6 +63,10 @@ return [
'import_delete_desc' => '這將會刪除已上傳的匯入 ZIP 檔案,且無法還原。', 'import_delete_desc' => '這將會刪除已上傳的匯入 ZIP 檔案,且無法還原。',
'import_errors' => '匯入錯誤', 'import_errors' => '匯入錯誤',
'import_errors_desc' => '嘗試匯入時發生以下錯誤:', 'import_errors_desc' => '嘗試匯入時發生以下錯誤:',
'breadcrumb_siblings_for_page' => 'Navigate siblings for page',
'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter',
'breadcrumb_siblings_for_book' => 'Navigate siblings for book',
'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
// Permissions and restrictions // Permissions and restrictions
'permissions' => '權限', 'permissions' => '權限',

View File

@@ -21,6 +21,7 @@
<server name="DB_CONNECTION" value="mysql_testing"/> <server name="DB_CONNECTION" value="mysql_testing"/>
<server name="BCRYPT_ROUNDS" value="4"/> <server name="BCRYPT_ROUNDS" value="4"/>
<server name="MAIL_DRIVER" value="array"/> <server name="MAIL_DRIVER" value="array"/>
<server name="MAIL_PORT" value="587"/>
<server name="MAIL_VERIFY_SSL" value="true"/> <server name="MAIL_VERIFY_SSL" value="true"/>
<server name="LOG_CHANNEL" value="single"/> <server name="LOG_CHANNEL" value="single"/>
<server name="AUTH_METHOD" value="standard"/> <server name="AUTH_METHOD" value="standard"/>

View File

@@ -5,7 +5,7 @@
[![Crowdin](https://badges.crowdin.net/bookstack/localized.svg)](https://crowdin.com/project/bookstack) [![Crowdin](https://badges.crowdin.net/bookstack/localized.svg)](https://crowdin.com/project/bookstack)
[![Build Status](https://github.com/BookStackApp/BookStack/workflows/test-php/badge.svg)](https://github.com/BookStackApp/BookStack/actions) [![Build Status](https://github.com/BookStackApp/BookStack/workflows/test-php/badge.svg)](https://github.com/BookStackApp/BookStack/actions)
[![Lint Status](https://github.com/BookStackApp/BookStack/workflows/lint-php/badge.svg)](https://github.com/BookStackApp/BookStack/actions) [![Lint Status](https://github.com/BookStackApp/BookStack/workflows/lint-php/badge.svg)](https://github.com/BookStackApp/BookStack/actions)
[![Maintainability](https://api.codeclimate.com/v1/badges/5551731994dd22fa1f4f/maintainability)](https://codeclimate.com/github/BookStackApp/BookStack/maintainability) [![php-metrics](https://img.shields.io/static/v1?label=Metrics&message=php&color=4F5B93)](https://source.bookstackapp.com/php-stats/index.html)
<br> <br>
[![Alternate Source](https://img.shields.io/static/v1?label=Alt+Source&message=Git&color=ef391a&logo=git)](https://source.bookstackapp.com/) [![Alternate Source](https://img.shields.io/static/v1?label=Alt+Source&message=Git&color=ef391a&logo=git)](https://source.bookstackapp.com/)
[![Repo Stats](https://img.shields.io/static/v1?label=GitHub+project&message=stats&color=f27e3f)](https://gh-stats.bookstackapp.com/) [![Repo Stats](https://img.shields.io/static/v1?label=GitHub+project&message=stats&color=f27e3f)](https://gh-stats.bookstackapp.com/)

View File

@@ -904,8 +904,11 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group {
border-radius: 4px; border-radius: 4px;
line-height: normal; line-height: normal;
padding: vars.$xs; padding: vars.$xs;
opacity: 0.6;
cursor: pointer;
&:hover { &:hover {
border-color: #DDD; opacity: 1;
@include mixins.lightDark(border-color, #DDD, #444);
} }
.svg-icon { .svg-icon {
margin-inline-end: 0; margin-inline-end: 0;

View File

@@ -65,6 +65,7 @@ header {
margin: 0 (-(vars.$s)); margin: 0 (-(vars.$s));
border-radius: 3px; border-radius: 3px;
gap: vars.$xs; gap: vars.$xs;
color: #FFF;
> span { > span {
padding-inline-start: vars.$xs; padding-inline-start: vars.$xs;
display: inline-block; display: inline-block;

View File

@@ -232,13 +232,15 @@ $loadingSize: 10px;
.list-sort-label { .list-sort-label {
font-weight: bold; font-weight: bold;
display: inline-block; display: inline-block;
}
.list-sort-label, .list-sort-toggle {
@include mixins.lightDark(color, #555, #888); @include mixins.lightDark(color, #555, #888);
} }
.list-sort-type { .list-sort-type {
text-align: start; text-align: start;
} }
.list-sort-type, .list-sort-dir { .list-sort-toggle, .list-sort-dir {
padding: vars.$xs vars.$s; padding: (vars.$xs + 2) vars.$s;
cursor: pointer; cursor: pointer;
} }
.list-sort-dir { .list-sort-dir {
@@ -252,6 +254,11 @@ $loadingSize: 10px;
transform: rotate(180deg); transform: rotate(180deg);
} }
} }
.list-sort-toggle {
display: block;
width: 100%;
text-align: start;
}
} }
.import-item { .import-item {

View File

@@ -3,8 +3,8 @@
{{ method_field('patch') }} {{ method_field('patch') }}
<input type="hidden" name="_return" value="{{ url()->current() }}"> <input type="hidden" name="_return" value="{{ url()->current() }}">
@if(setting()->getForCurrentUser('dark-mode-enabled')) @if(setting()->getForCurrentUser('dark-mode-enabled'))
<button class="{{ $classes ?? '' }}"><span>@icon('light-mode')</span><span>{{ trans('common.light_mode') }}</span></button> <button class="{{ $classes ?? '' }}" role="{{ $butonRole ?? '' }}"><span>@icon('light-mode')</span><span>{{ trans('common.light_mode') }}</span></button>
@else @else
<button class="{{ $classes ?? '' }}"><span>@icon('dark-mode')</span><span>{{ trans('common.dark_mode') }}</span></button> <button class="{{ $classes ?? '' }}" role="{{ $butonRole ?? '' }}"><span>@icon('dark-mode')</span><span>{{ trans('common.dark_mode') }}</span></button>
@endif @endif
</form> </form>

View File

@@ -29,10 +29,14 @@
<div class="list-sort"> <div class="list-sort">
<div component="dropdown" class="list-sort-type dropdown-container"> <div component="dropdown" class="list-sort-type dropdown-container">
<div refs="dropdown@toggle" aria-haspopup="true" aria-expanded="false" aria-label="{{ trans('common.sort_options') }}" tabindex="0">{{ $options[$selectedSort] }}</div> <button refs="dropdown@toggle"
<ul refs="dropdown@menu list-sort-control@menu" class="dropdown-menu"> aria-haspopup="true"
aria-expanded="false"
aria-label="{{ trans('common.sort_options') }}"
class="list-sort-toggle">{{ $options[$selectedSort] }}</button>
<ul refs="dropdown@menu list-sort-control@menu" class="dropdown-menu" role="menu">
@foreach($options as $key => $label) @foreach($options as $key => $label)
<li @if($key === $selectedSort) class="active" @endif><a href="#" data-sort-value="{{$key}}" class="text-item">{{ $label }}</a></li> <li @if($key === $selectedSort) class="active" @endif><a href="#" data-sort-value="{{$key}}" role="menuitem" class="text-item">{{ $label }}</a></li>
@endforeach @endforeach
</ul> </ul>
</div> </div>

View File

@@ -2,11 +2,14 @@
option:dropdown-search:url="/search/entity/siblings?entity_type={{$entity->getType()}}&entity_id={{ $entity->id }}" option:dropdown-search:url="/search/entity/siblings?entity_type={{$entity->getType()}}&entity_id={{ $entity->id }}"
option:dropdown-search:local-search-selector=".entity-list-item" option:dropdown-search:local-search-selector=".entity-list-item"
class="dropdown-search"> class="dropdown-search">
<div class="dropdown-search-toggle-breadcrumb" refs="dropdown@toggle" <button class="dropdown-search-toggle-breadcrumb"
aria-haspopup="true" aria-expanded="false" tabindex="0"> refs="dropdown@toggle"
<div class="separator">@icon('chevron-right')</div> aria-haspopup="true"
</div> aria-expanded="false"
<div refs="dropdown@menu" class="dropdown-search-dropdown card" role="menu"> title="{{ trans('entities.breadcrumb_siblings_for_' . $entity->getType()) }}">
<div role="presentation" class="separator">@icon('chevron-right')</div>
</button>
<div refs="dropdown@menu" class="dropdown-search-dropdown card">
<div class="dropdown-search-search"> <div class="dropdown-search-search">
@icon('search') @icon('search')
<input refs="dropdown-search@searchInput" <input refs="dropdown-search@searchInput"
@@ -18,6 +21,6 @@
<div refs="dropdown-search@loading"> <div refs="dropdown-search@loading">
@include('common.loading-icon') @include('common.loading-icon')
</div> </div>
<div refs="dropdown-search@listContainer" class="dropdown-search-list px-m" tabindex="-1"></div> <div refs="dropdown-search@listContainer" class="dropdown-search-list px-m" tabindex="-1" role="list"></div>
</div> </div>
</div> </div>

View File

@@ -2,23 +2,22 @@
class="dropdown-container" class="dropdown-container"
id="export-menu"> id="export-menu">
<div refs="dropdown@toggle" <button refs="dropdown@toggle"
class="icon-list-item" class="icon-list-item text-link"
aria-haspopup="true" aria-haspopup="true"
aria-expanded="false" aria-expanded="false"
aria-label="{{ trans('entities.export') }}" aria-label="{{ trans('entities.export') }}"
data-shortcut="export" data-shortcut="export">
tabindex="0">
<span>@icon('export')</span> <span>@icon('export')</span>
<span>{{ trans('entities.export') }}</span> <span>{{ trans('entities.export') }}</span>
</div> </button>
<ul refs="dropdown@menu" class="wide dropdown-menu" role="menu"> <ul refs="dropdown@menu" class="wide dropdown-menu" role="menu">
<li><a href="{{ $entity->getUrl('/export/html') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_html') }}</span><span>.html</span></a></li> <li><a href="{{ $entity->getUrl('/export/html') }}" target="_blank" role="menuitem" class="label-item"><span>{{ trans('entities.export_html') }}</span><span>.html</span></a></li>
<li><a href="{{ $entity->getUrl('/export/pdf') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_pdf') }}</span><span>.pdf</span></a></li> <li><a href="{{ $entity->getUrl('/export/pdf') }}" target="_blank" role="menuitem" class="label-item"><span>{{ trans('entities.export_pdf') }}</span><span>.pdf</span></a></li>
<li><a href="{{ $entity->getUrl('/export/plaintext') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_text') }}</span><span>.txt</span></a></li> <li><a href="{{ $entity->getUrl('/export/plaintext') }}" target="_blank" role="menuitem" class="label-item"><span>{{ trans('entities.export_text') }}</span><span>.txt</span></a></li>
<li><a href="{{ $entity->getUrl('/export/markdown') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_md') }}</span><span>.md</span></a></li> <li><a href="{{ $entity->getUrl('/export/markdown') }}" target="_blank" role="menuitem" class="label-item"><span>{{ trans('entities.export_md') }}</span><span>.md</span></a></li>
<li><a href="{{ $entity->getUrl('/export/zip') }}" target="_blank" class="label-item"><span>{{ trans('entities.export_zip') }}</span><span>.zip</span></a></li> <li><a href="{{ $entity->getUrl('/export/zip') }}" target="_blank" role="menuitem" class="label-item"><span>{{ trans('entities.export_zip') }}</span><span>.zip</span></a></li>
</ul> </ul>
</div> </div>

View File

@@ -1,5 +1,8 @@
<?php $type = $entity->getType(); ?> <?php $type = $entity->getType(); ?>
<a href="{{ $entity->getUrl() }}" class="{{$type}} {{$type === 'page' && $entity->draft ? 'draft' : ''}} {{$classes ?? ''}} entity-list-item" data-entity-type="{{$type}}" data-entity-id="{{$entity->id}}"> <a href="{{ $entity->getUrl() }}"
class="{{$type}} {{$type === 'page' && $entity->draft ? 'draft' : ''}} {{$classes ?? ''}} entity-list-item"
data-entity-type="{{$type}}"
data-entity-id="{{$entity->id}}">
<span role="presentation" class="icon text-{{$type}}">@icon($type)</span> <span role="presentation" class="icon text-{{$type}}">@icon($type)</span>
<div class="content"> <div class="content">
<h4 class="entity-list-item-name break-text">{{ $entity->preview_name ?? $entity->name }}</h4> <h4 class="entity-list-item-name break-text">{{ $entity->preview_name ?? $entity->name }}</h4>

View File

@@ -1,6 +1,11 @@
<div component="dropdown" <div component="dropdown"
class="dropdown-container block my-xxs"> class="dropdown-container block my-xxs">
<a refs="dropdown@toggle" href="#" class="entity-meta-item my-none"> <a refs="dropdown@toggle"
aria-haspopup="menu"
aria-expanded="false"
role="button"
href="#"
class="entity-meta-item my-none">
@icon(($ignoring ? 'watch-ignore' : 'watch')) @icon(($ignoring ? 'watch-ignore' : 'watch'))
<span>{{ $label }}</span> <span>{{ $label }}</span>
</a> </a>
@@ -10,10 +15,10 @@
<input type="hidden" name="type" value="{{ $entity->getMorphClass() }}"> <input type="hidden" name="type" value="{{ $entity->getMorphClass() }}">
<input type="hidden" name="id" value="{{ $entity->id }}"> <input type="hidden" name="id" value="{{ $entity->id }}">
<ul refs="dropdown@menu" class="dropdown-menu xl-limited anchor-left pb-none"> <ul refs="dropdown@menu" class="dropdown-menu xl-limited anchor-left pb-none" role="menu">
@foreach(\BookStack\Activity\WatchLevels::allSuitedFor($entity) as $option => $value) @foreach(\BookStack\Activity\WatchLevels::allSuitedFor($entity) as $option => $value)
<li> <li>
<button name="level" value="{{ $option }}" class="icon-item"> <button name="level" value="{{ $option }}" class="icon-item" role="menuitem">
@if($watchLevel === $option) @if($watchLevel === $option)
<span class="text-pos pt-m" <span class="text-pos pt-m"
title="{{ trans('common.status_active') }}">@icon('check-circle')</span> title="{{ trans('common.status_active') }}">@icon('check-circle')</span>
@@ -32,12 +37,13 @@
</div> </div>
</button> </button>
</li> </li>
<li> <li role="presentation">
<hr class="my-none"> <hr class="my-none">
</li> </li>
@endforeach @endforeach
<li> <li>
<a href="{{ url('/my-account/notifications') }}" <a href="{{ url('/my-account/notifications') }}"
role="menuitem"
target="_blank" target="_blank"
class="text-item text-muted text-small break-text">{{ trans('entities.watch_change_default') }}</a> class="text-item text-muted text-small break-text">{{ trans('entities.watch_change_default') }}</a>
</li> </li>

View File

@@ -1,33 +1,43 @@
<div class="dropdown-container" component="dropdown" option:dropdown:bubble-escapes="true"> <div class="dropdown-container" component="dropdown" option:dropdown:bubble-escapes="true">
<span class="user-name py-s hide-under-l" refs="dropdown@toggle" <button class="user-name py-s hide-under-l" refs="dropdown@toggle"
aria-haspopup="true" aria-expanded="false" aria-label="{{ trans('common.profile_menu') }}" tabindex="0"> aria-haspopup="menu"
aria-expanded="false"
aria-label="{{ trans('common.profile_menu') }}">
<img class="avatar" src="{{$user->getAvatar(30)}}" alt="{{ $user->name }}"> <img class="avatar" src="{{$user->getAvatar(30)}}" alt="{{ $user->name }}">
<span class="name">{{ $user->getShortName(9) }}</span> @icon('caret-down') <span class="name">{{ $user->getShortName(9) }}</span> @icon('caret-down')
</span> </button>
<ul refs="dropdown@menu" class="dropdown-menu" role="menu"> <ul refs="dropdown@menu" class="dropdown-menu" role="menu" aria-label="{{ trans('common.profile_menu') }}">
<li> <li>
<a href="{{ url('/favourites') }}" data-shortcut="favourites_view" class="icon-item"> <a href="{{ url('/favourites') }}"
role="menuitem"
data-shortcut="favourites_view"
class="icon-item">
@icon('star') @icon('star')
<div>{{ trans('entities.my_favourites') }}</div> <div>{{ trans('entities.my_favourites') }}</div>
</a> </a>
</li> </li>
<li> <li>
<a href="{{ $user->getProfileUrl() }}" data-shortcut="profile_view" class="icon-item"> <a href="{{ $user->getProfileUrl() }}"
role="menuitem"
data-shortcut="profile_view"
class="icon-item">
@icon('user') @icon('user')
<div>{{ trans('common.view_profile') }}</div> <div>{{ trans('common.view_profile') }}</div>
</a> </a>
</li> </li>
<li> <li>
<a href="{{ url('/my-account') }}" class="icon-item"> <a href="{{ url('/my-account') }}"
role="menuitem"
class="icon-item">
@icon('user-preferences') @icon('user-preferences')
<div>{{ trans('preferences.my_account') }}</div> <div>{{ trans('preferences.my_account') }}</div>
</a> </a>
</li> </li>
<li><hr></li> <li role="presentation"><hr></li>
<li> <li>
@include('common.dark-mode-toggle', ['classes' => 'icon-item']) @include('common.dark-mode-toggle', ['classes' => 'icon-item', 'buttonRole' => 'menuitem'])
</li> </li>
<li><hr></li> <li role="presentation"><hr></li>
<li> <li>
@php @php
$logoutPath = match (config('auth.method')) { $logoutPath = match (config('auth.method')) {
@@ -38,7 +48,7 @@
@endphp @endphp
<form action="{{ url($logoutPath) }}" method="post"> <form action="{{ url($logoutPath) }}" method="post">
{{ csrf_field() }} {{ csrf_field() }}
<button class="icon-item" data-shortcut="logout"> <button class="icon-item" role="menuitem" data-shortcut="logout">
@icon('logout') @icon('logout')
<div>{{ trans('auth.logout') }}</div> <div>{{ trans('auth.logout') }}</div>
</button> </button>

View File

@@ -13,7 +13,7 @@
</button> </button>
<ul refs="dropdown@menu code-editor@historyList" class="dropdown-menu"></ul> <ul refs="dropdown@menu code-editor@historyList" class="dropdown-menu"></ul>
</div> </div>
<button class="popup-header-close" refs="popup@hide">@icon('close')</button> <button class="popup-header-close" refs="popup@hide" title="{{ trans('common.close') }}">@icon('close')</button>
</div> </div>
<div class="code-editor-body-wrap flex-container-row flex-fill"> <div class="code-editor-body-wrap flex-container-row flex-fill">
@@ -34,8 +34,8 @@
@foreach($languages as $language) @foreach($languages as $language)
<div class="relative"> <div class="relative">
<button type="button" refs="code-editor@language-button" data-favourite="false" data-lang="{{ strtolower($language) }}">{{ $language }}</button> <button type="button" refs="code-editor@language-button" data-favourite="false" data-lang="{{ strtolower($language) }}">{{ $language }}</button>
<button class="lang-option-favorite-toggle action-favourite" data-title="{{ trans('common.favourite') }}">@icon('star-outline')</button> <button class="lang-option-favorite-toggle action-favourite" title="{{ trans('common.favourite') }}">@icon('star-outline')</button>
<button class="lang-option-favorite-toggle action-unfavourite" data-title="{{ trans('common.unfavourite') }}">@icon('star')</button> <button class="lang-option-favorite-toggle action-unfavourite" title="{{ trans('common.unfavourite') }}">@icon('star')</button>
</div> </div>
@endforeach @endforeach
</div> </div>

View File

@@ -14,7 +14,7 @@
<div class="flex-container-row items-center justify-center"> <div class="flex-container-row items-center justify-center">
<button type="button" <button type="button"
refs="dropdown@toggle" refs="dropdown@toggle"
aria-haspopup="true" aria-haspopup="menu"
aria-expanded="false" aria-expanded="false"
title="{{ trans('entities.pages_edit_draft_options') }}" title="{{ trans('entities.pages_edit_draft_options') }}"
class="text-link icon-list-item"> class="text-link icon-list-item">
@@ -25,38 +25,38 @@
</div> </div>
<ul refs="dropdown@menu" class="dropdown-menu" role="menu"> <ul refs="dropdown@menu" class="dropdown-menu" role="menu">
<li> <li>
<button refs="page-editor@saveDraft" type="button" class="text-pos icon-item"> <button refs="page-editor@saveDraft" type="button" role="menuitem" class="text-pos icon-item">
@icon('save') @icon('save')
<div>{{ trans('entities.pages_edit_save_draft') }}</div> <div>{{ trans('entities.pages_edit_save_draft') }}</div>
</button> </button>
</li> </li>
@if($isDraft) @if($isDraft)
<li> <li>
<a href="{{ $model->getUrl('/delete') }}" class="text-neg icon-item"> <a href="{{ $model->getUrl('/delete') }}" role="menuitem" class="text-neg icon-item">
@icon('delete') @icon('delete')
{{ trans('entities.pages_edit_delete_draft') }} {{ trans('entities.pages_edit_delete_draft') }}
</a> </a>
</li> </li>
@endif @endif
<li refs="page-editor@discard-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}> <li refs="page-editor@discard-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}>
<button refs="page-editor@discard-draft" type="button" class="text-warn icon-item"> <button refs="page-editor@discard-draft" type="button" role="menuitem" class="text-warn icon-item">
@icon('cancel') @icon('cancel')
<div>{{ trans('entities.pages_edit_discard_draft') }}</div> <div>{{ trans('entities.pages_edit_discard_draft') }}</div>
</button> </button>
</li> </li>
<li refs="page-editor@delete-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}> <li refs="page-editor@delete-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}>
<button refs="page-editor@delete-draft" type="button" class="text-neg icon-item"> <button refs="page-editor@delete-draft" type="button" role="menuitem" class="text-neg icon-item">
@icon('delete') @icon('delete')
<div>{{ trans('entities.pages_edit_delete_draft') }}</div> <div>{{ trans('entities.pages_edit_delete_draft') }}</div>
</button> </button>
</li> </li>
@if(userCan('editor-change')) @if(userCan('editor-change'))
<li> <li role="presentation">
<hr> <hr>
</li> </li>
<li> <li>
@if($editor !== \BookStack\Entities\Tools\PageEditorType::Markdown) @if($editor !== \BookStack\Entities\Tools\PageEditorType::Markdown)
<a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-clean" refs="page-editor@changeEditor" class="icon-item"> <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-clean" refs="page-editor@changeEditor" role="menuitem" class="icon-item">
@icon('swap-horizontal') @icon('swap-horizontal')
<div> <div>
{{ trans('entities.pages_edit_switch_to_markdown') }} {{ trans('entities.pages_edit_switch_to_markdown') }}
@@ -64,7 +64,7 @@
<small>{{ trans('entities.pages_edit_switch_to_markdown_clean') }}</small> <small>{{ trans('entities.pages_edit_switch_to_markdown_clean') }}</small>
</div> </div>
</a> </a>
<a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-stable" refs="page-editor@changeEditor" class="icon-item"> <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-stable" refs="page-editor@changeEditor" role="menuitem" class="icon-item">
@icon('swap-horizontal') @icon('swap-horizontal')
<div> <div>
{{ trans('entities.pages_edit_switch_to_markdown') }} {{ trans('entities.pages_edit_switch_to_markdown') }}
@@ -74,13 +74,13 @@
</a> </a>
@endif @endif
@if($editor !== \BookStack\Entities\Tools\PageEditorType::WysiwygTinymce) @if($editor !== \BookStack\Entities\Tools\PageEditorType::WysiwygTinymce)
<a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=wysiwyg" refs="page-editor@changeEditor" class="icon-item"> <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=wysiwyg" refs="page-editor@changeEditor" role="menuitem" class="icon-item">
@icon('swap-horizontal') @icon('swap-horizontal')
<div>{{ trans('entities.pages_edit_switch_to_wysiwyg') }}</div> <div>{{ trans('entities.pages_edit_switch_to_wysiwyg') }}</div>
</a> </a>
@endif @endif
@if($editor !== \BookStack\Entities\Tools\PageEditorType::WysiwygLexical) @if($editor !== \BookStack\Entities\Tools\PageEditorType::WysiwygLexical)
<a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=wysiwyg2024" refs="page-editor@changeEditor" class="icon-item"> <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=wysiwyg2024" refs="page-editor@changeEditor" role="menuitem" class="icon-item">
@icon('swap-horizontal') @icon('swap-horizontal')
<div> <div>
{{ trans('entities.pages_edit_switch_to_new_wysiwyg') }} {{ trans('entities.pages_edit_switch_to_new_wysiwyg') }}
@@ -112,6 +112,7 @@
id="summary-input" id="summary-input"
rows="2" rows="2"
maxlength="180" maxlength="180"
title="{{ trans('entities.pages_edit_enter_changelog') }}"
placeholder="{{ trans('entities.pages_edit_enter_changelog') }}" placeholder="{{ trans('entities.pages_edit_enter_changelog') }}"
></textarea> ></textarea>
<small refs="page-editor@changelogCounter" class="text-muted mt-xs">0 / 180</small> <small refs="page-editor@changelogCounter" class="text-muted mt-xs">0 / 180</small>

View File

@@ -38,10 +38,14 @@
<div class="flex px-m py-xs min-width-s"><strong class="hide-over-l">{{ trans('settings.recycle_bin_deleted_at') }}:<br></strong>{{ $deletion->created_at }}</div> <div class="flex px-m py-xs min-width-s"><strong class="hide-over-l">{{ trans('settings.recycle_bin_deleted_at') }}:<br></strong>{{ $deletion->created_at }}</div>
<div class="flex px-m py-xs text-m-right min-width-s"> <div class="flex px-m py-xs text-m-right min-width-s">
<div component="dropdown" class="dropdown-container"> <div component="dropdown" class="dropdown-container">
<button type="button" refs="dropdown@toggle" class="button outline">{{ trans('common.actions') }}</button> <button type="button"
<ul refs="dropdown@menu" class="dropdown-menu"> refs="dropdown@toggle"
<li><a class="text-item" href="{{ $deletion->getUrl('/restore') }}">{{ trans('settings.recycle_bin_restore') }}</a></li> aria-haspopup="menu"
<li><a class="text-item" href="{{ $deletion->getUrl('/destroy') }}">{{ trans('settings.recycle_bin_permanently_delete') }}</a></li> aria-expanded="false"
class="button outline">{{ trans('common.actions') }}</button>
<ul refs="dropdown@menu" class="dropdown-menu" role="menu">
<li><a class="text-item" href="{{ $deletion->getUrl('/restore') }}" role="menuitem">{{ trans('settings.recycle_bin_restore') }}</a></li>
<li><a class="text-item" href="{{ $deletion->getUrl('/destroy') }}" role="menuitem">{{ trans('settings.recycle_bin_permanently_delete') }}</a></li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -24,6 +24,7 @@
<form method="get" action="{{ url("/settings/roles") }}"> <form method="get" action="{{ url("/settings/roles") }}">
<input type="text" <input type="text"
name="search" name="search"
title="{{ trans('common.search') }}"
placeholder="{{ trans('common.search') }}" placeholder="{{ trans('common.search') }}"
value="{{ $listOptions->getSearch() }}"> value="{{ $listOptions->getSearch() }}">
</form> </form>

View File

@@ -22,6 +22,7 @@
<form method="get" action="{{ url("/settings/users") }}"> <form method="get" action="{{ url("/settings/users") }}">
<input type="text" <input type="text"
name="search" name="search"
title="{{ trans('settings.users_search') }}"
placeholder="{{ trans('settings.users_search') }}" placeholder="{{ trans('settings.users_search') }}"
value="{{ $listOptions->getSearch() }}"> value="{{ $listOptions->getSearch() }}">
</form> </form>