diff --git a/.env.example.complete b/.env.example.complete index 71fe66bca..26df8f3cb 100644 --- a/.env.example.complete +++ b/.env.example.complete @@ -200,6 +200,7 @@ LDAP_TLS_INSECURE=false LDAP_ID_ATTRIBUTE=uid LDAP_EMAIL_ATTRIBUTE=mail LDAP_DISPLAY_NAME_ATTRIBUTE=cn +LDAP_THUMBNAIL_ATTRIBUTE=null LDAP_FOLLOW_REFERRALS=true LDAP_DUMP_USER_DETAILS=false diff --git a/.github/translators.txt b/.github/translators.txt index d789a43aa..ca22f0502 100644 --- a/.github/translators.txt +++ b/.github/translators.txt @@ -158,7 +158,7 @@ HenrijsS :: Latvian Pascal R-B (pborgner) :: German Boris (Ginfred) :: Russian Jonas Anker Rasmussen (jonasanker) :: Danish -Gerwin de Keijzer (gdekeijzer) :: Dutch; German Informal; German +Gerwin de Keijzer (gdekeijzer) :: Dutch; German; German Informal kometchtech :: Japanese Auri (Atalonica) :: Catalan Francesco Franchina (ffranchina) :: Italian diff --git a/app/Actions/Favourite.php b/app/Actions/Favourite.php new file mode 100644 index 000000000..107a76578 --- /dev/null +++ b/app/Actions/Favourite.php @@ -0,0 +1,17 @@ +morphTo(); + } +} diff --git a/app/Actions/Tag.php b/app/Actions/Tag.php index 5968ffe6d..f73b2ed2d 100644 --- a/app/Actions/Tag.php +++ b/app/Actions/Tag.php @@ -1,6 +1,7 @@ morphTo('entity'); } + + /** + * Get a full URL to start a tag name search for this tag name. + */ + public function nameUrl(): string + { + return url('/search?term=%5B' . urlencode($this->name) .'%5D'); + } + + /** + * Get a full URL to start a tag name and value search for this tag's values. + */ + public function valueUrl(): string + { + return url('/search?term=%5B' . urlencode($this->name) .'%3D' . urlencode($this->value) . '%5D'); + } } diff --git a/app/Actions/View.php b/app/Actions/View.php index e9841293b..de30900c7 100644 --- a/app/Actions/View.php +++ b/app/Actions/View.php @@ -1,7 +1,19 @@ morphTo(); } + + /** + * Increment the current user's view count for the given viewable model. + */ + public static function incrementFor(Viewable $viewable): int + { + $user = user(); + if (is_null($user) || $user->isDefault()) { + return 0; + } + + /** @var View $view */ + $view = $viewable->views()->firstOrNew([ + 'user_id' => $user->id, + ], ['views' => 0]); + + $view->forceFill(['views' => $view->views + 1])->save(); + + return $view->views; + } + + /** + * Clear all views from the system. + */ + public static function clearAll() + { + static::query()->truncate(); + } } diff --git a/app/Actions/ViewService.php b/app/Actions/ViewService.php deleted file mode 100644 index a4e620d4b..000000000 --- a/app/Actions/ViewService.php +++ /dev/null @@ -1,117 +0,0 @@ -view = $view; - $this->permissionService = $permissionService; - $this->entityProvider = $entityProvider; - } - - /** - * Add a view to the given entity. - * @param \BookStack\Entities\Models\Entity $entity - * @return int - */ - public function add(Entity $entity) - { - $user = user(); - if ($user === null || $user->isDefault()) { - return 0; - } - $view = $entity->views()->where('user_id', '=', $user->id)->first(); - // Add view if model exists - if ($view) { - $view->increment('views'); - return $view->views; - } - - // Otherwise create new view count - $entity->views()->save($this->view->newInstance([ - 'user_id' => $user->id, - 'views' => 1 - ])); - - return 1; - } - - /** - * Get the entities with the most views. - * @param int $count - * @param int $page - * @param string|array $filterModels - * @param string $action - used for permission checking - * @return Collection - */ - public function getPopular(int $count = 10, int $page = 0, array $filterModels = null, string $action = 'view') - { - $skipCount = $count * $page; - $query = $this->permissionService - ->filterRestrictedEntityRelations($this->view->newQuery(), 'views', 'viewable_id', 'viewable_type', $action) - ->select('*', 'viewable_id', 'viewable_type', DB::raw('SUM(views) as view_count')) - ->groupBy('viewable_id', 'viewable_type') - ->orderBy('view_count', 'desc'); - - if ($filterModels) { - $query->whereIn('viewable_type', $this->entityProvider->getMorphClasses($filterModels)); - } - - return $query->with('viewable') - ->skip($skipCount) - ->take($count) - ->get() - ->pluck('viewable') - ->filter(); - } - - /** - * Get all recently viewed entities for the current user. - */ - public function getUserRecentlyViewed(int $count = 10, int $page = 1) - { - $user = user(); - if ($user === null || $user->isDefault()) { - return collect(); - } - - $all = collect(); - /** @var Entity $instance */ - foreach ($this->entityProvider->all() as $name => $instance) { - $items = $instance::visible()->withLastView() - ->having('last_viewed_at', '>', 0) - ->orderBy('last_viewed_at', 'desc') - ->skip($count * ($page - 1)) - ->take($count) - ->get(); - $all = $all->concat($items); - } - - return $all->sortByDesc('last_viewed_at')->slice(0, $count); - } - - /** - * Reset all view counts by deleting all views. - */ - public function resetAll() - { - $this->view->truncate(); - } -} diff --git a/app/Auth/Access/Guards/LdapSessionGuard.php b/app/Auth/Access/Guards/LdapSessionGuard.php index cabbfbbcb..71417aed2 100644 --- a/app/Auth/Access/Guards/LdapSessionGuard.php +++ b/app/Auth/Access/Guards/LdapSessionGuard.php @@ -90,6 +90,11 @@ class LdapSessionGuard extends ExternalBaseSessionGuard $this->ldapService->syncGroups($user, $username); } + // Attach avatar if non-existent + if (is_null($user->avatar)) { + $this->ldapService->saveAndAttachAvatar($user, $userDetails); + } + $this->login($user, $remember); return true; } @@ -115,6 +120,8 @@ class LdapSessionGuard extends ExternalBaseSessionGuard 'password' => Str::random(32), ]; - return $this->registrationService->registerUser($details, null, false); + $user = $this->registrationService->registerUser($details, null, false); + $this->ldapService->saveAndAttachAvatar($user, $ldapUserDetails); + return $user; } } diff --git a/app/Auth/Access/LdapService.php b/app/Auth/Access/LdapService.php index a438c0984..2f632b0b5 100644 --- a/app/Auth/Access/LdapService.php +++ b/app/Auth/Access/LdapService.php @@ -3,7 +3,9 @@ use BookStack\Auth\User; use BookStack\Exceptions\JsonDebugException; use BookStack\Exceptions\LdapException; +use BookStack\Uploads\UserAvatars; use ErrorException; +use Illuminate\Support\Facades\Log; /** * Class LdapService @@ -14,15 +16,17 @@ class LdapService extends ExternalAuthService protected $ldap; protected $ldapConnection; + protected $userAvatars; protected $config; protected $enabled; /** * LdapService constructor. */ - public function __construct(Ldap $ldap) + public function __construct(Ldap $ldap, UserAvatars $userAvatars) { $this->ldap = $ldap; + $this->userAvatars = $userAvatars; $this->config = config('services.ldap'); $this->enabled = config('auth.method') === 'ldap'; } @@ -76,10 +80,13 @@ class LdapService extends ExternalAuthService $idAttr = $this->config['id_attribute']; $emailAttr = $this->config['email_attribute']; $displayNameAttr = $this->config['display_name_attribute']; + $thumbnailAttr = $this->config['thumbnail_attribute']; - $user = $this->getUserWithAttributes($userName, ['cn', 'dn', $idAttr, $emailAttr, $displayNameAttr]); + $user = $this->getUserWithAttributes($userName, array_filter([ + 'cn', 'dn', $idAttr, $emailAttr, $displayNameAttr, $thumbnailAttr, + ])); - if ($user === null) { + if (is_null($user)) { return null; } @@ -89,6 +96,7 @@ class LdapService extends ExternalAuthService 'name' => $this->getUserResponseProperty($user, $displayNameAttr, $userCn), 'dn' => $user['dn'], 'email' => $this->getUserResponseProperty($user, $emailAttr, null), + 'avatar'=> $thumbnailAttr ? $this->getUserResponseProperty($user, $thumbnailAttr, null) : null, ]; if ($this->config['dump_user_details']) { @@ -350,4 +358,22 @@ class LdapService extends ExternalAuthService $userLdapGroups = $this->getUserGroups($username); $this->syncWithGroups($user, $userLdapGroups); } + + /** + * Save and attach an avatar image, if found in the ldap details, and attach + * to the given user model. + */ + public function saveAndAttachAvatar(User $user, array $ldapUserDetails): void + { + if (is_null(config('services.ldap.thumbnail_attribute')) || is_null($ldapUserDetails['avatar'])) { + return; + } + + try { + $imageData = $ldapUserDetails['avatar']; + $this->userAvatars->assignToUserFromExistingData($user, $imageData, 'jpg'); + } catch (\Exception $exception) { + Log::info("Failed to use avatar image from LDAP data for user id {$user->id}"); + } + } } diff --git a/app/Auth/Permissions/PermissionService.php b/app/Auth/Permissions/PermissionService.php index c5bdc8070..456598653 100644 --- a/app/Auth/Permissions/PermissionService.php +++ b/app/Auth/Permissions/PermissionService.php @@ -580,14 +580,15 @@ class PermissionService /** * Filter items that have entities set as a polymorphic relation. + * @param Builder|\Illuminate\Database\Query\Builder $query */ - public function filterRestrictedEntityRelations(Builder $query, string $tableName, string $entityIdColumn, string $entityTypeColumn, string $action = 'view'): Builder + public function filterRestrictedEntityRelations($query, string $tableName, string $entityIdColumn, string $entityTypeColumn, string $action = 'view') { $tableDetails = ['tableName' => $tableName, 'entityIdColumn' => $entityIdColumn, 'entityTypeColumn' => $entityTypeColumn]; $q = $query->where(function ($query) use ($tableDetails, $action) { $query->whereExists(function ($permissionQuery) use (&$tableDetails, $action) { - $permissionQuery->select('id')->from('joint_permissions') + $permissionQuery->select(['role_id'])->from('joint_permissions') ->whereRaw('joint_permissions.entity_id=' . $tableDetails['tableName'] . '.' . $tableDetails['entityIdColumn']) ->whereRaw('joint_permissions.entity_type=' . $tableDetails['tableName'] . '.' . $tableDetails['entityTypeColumn']) ->where('action', '=', $action) diff --git a/app/Auth/User.php b/app/Auth/User.php index 9855ab4e7..2f3c00a4b 100644 --- a/app/Auth/User.php +++ b/app/Auth/User.php @@ -1,5 +1,6 @@ hasMany(ApiToken::class); } + /** + * Get the favourite instances for this user. + */ + public function favourites(): HasMany + { + return $this->hasMany(Favourite::class); + } + /** * Get the last activity time for this user. */ diff --git a/app/Auth/UserRepo.php b/app/Auth/UserRepo.php index e437ff1e3..15ce2cbc9 100644 --- a/app/Auth/UserRepo.php +++ b/app/Auth/UserRepo.php @@ -8,13 +8,11 @@ use BookStack\Entities\Models\Chapter; use BookStack\Entities\Models\Page; use BookStack\Exceptions\NotFoundException; use BookStack\Exceptions\UserUpdateException; -use BookStack\Uploads\Image; use BookStack\Uploads\UserAvatars; use Exception; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Pagination\LengthAwarePaginator; -use Images; use Log; class UserRepo @@ -184,16 +182,11 @@ class UserRepo { $user->socialAccounts()->delete(); $user->apiTokens()->delete(); + $user->favourites()->delete(); $user->delete(); // Delete user profile images - $profileImages = Image::query()->where('type', '=', 'user') - ->where('uploaded_to', '=', $user->id) - ->get(); - - foreach ($profileImages as $image) { - Images::destroy($image); - } + $this->userAvatar->destroyAllForUser($user); if (!empty($newOwnerId)) { $newOwner = User::query()->find($newOwnerId); diff --git a/app/Config/app.php b/app/Config/app.php index 065845f96..ea5252f4f 100755 --- a/app/Config/app.php +++ b/app/Config/app.php @@ -184,11 +184,8 @@ return [ // Custom BookStack 'Activity' => BookStack\Facades\Activity::class, - 'Views' => BookStack\Facades\Views::class, - 'Images' => BookStack\Facades\Images::class, 'Permissions' => BookStack\Facades\Permissions::class, 'Theme' => BookStack\Facades\Theme::class, - ], // Proxy configuration diff --git a/app/Config/services.php b/app/Config/services.php index 699339614..0f9f78d1e 100644 --- a/app/Config/services.php +++ b/app/Config/services.php @@ -133,6 +133,7 @@ return [ 'remove_from_groups' => env('LDAP_REMOVE_FROM_GROUPS', false), 'tls_insecure' => env('LDAP_TLS_INSECURE', false), 'start_tls' => env('LDAP_START_TLS', false), + 'thumbnail_attribute' => env('LDAP_THUMBNAIL_ATTRIBUTE', null), ], ]; diff --git a/app/Console/Commands/ClearViews.php b/app/Console/Commands/ClearViews.php index 35356210b..693d93639 100644 --- a/app/Console/Commands/ClearViews.php +++ b/app/Console/Commands/ClearViews.php @@ -2,6 +2,7 @@ namespace BookStack\Console\Commands; +use BookStack\Actions\View; use Illuminate\Console\Command; class ClearViews extends Command @@ -36,7 +37,7 @@ class ClearViews extends Command */ public function handle() { - \Views::resetAll(); + View::clearAll(); $this->comment('Views cleared'); } } diff --git a/app/Entities/Models/Entity.php b/app/Entities/Models/Entity.php index d4b477304..561876769 100644 --- a/app/Entities/Models/Entity.php +++ b/app/Entities/Models/Entity.php @@ -2,6 +2,7 @@ use BookStack\Actions\Activity; use BookStack\Actions\Comment; +use BookStack\Actions\Favourite; use BookStack\Actions\Tag; use BookStack\Actions\View; use BookStack\Auth\Permissions\EntityPermission; @@ -9,7 +10,9 @@ use BookStack\Auth\Permissions\JointPermission; use BookStack\Entities\Tools\SearchIndex; use BookStack\Entities\Tools\SlugGenerator; use BookStack\Facades\Permissions; +use BookStack\Interfaces\Favouritable; use BookStack\Interfaces\Sluggable; +use BookStack\Interfaces\Viewable; use BookStack\Model; use BookStack\Traits\HasCreatorAndUpdater; use BookStack\Traits\HasOwner; @@ -38,7 +41,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static Builder withLastView() * @method static Builder withViewCount() */ -abstract class Entity extends Model implements Sluggable +abstract class Entity extends Model implements Sluggable, Favouritable, Viewable { use SoftDeletes; use HasCreatorAndUpdater; @@ -297,4 +300,22 @@ abstract class Entity extends Model implements Sluggable $this->slug = app(SlugGenerator::class)->generate($this); return $this->slug; } + + /** + * @inheritdoc + */ + public function favourites(): MorphMany + { + return $this->morphMany(Favourite::class, 'favouritable'); + } + + /** + * Check if the entity is a favourite of the current user. + */ + public function isFavourite(): bool + { + return $this->favourites() + ->where('user_id', '=', user()->id) + ->exists(); + } } diff --git a/app/Entities/Models/Page.php b/app/Entities/Models/Page.php index 7e397894d..93fb21893 100644 --- a/app/Entities/Models/Page.php +++ b/app/Entities/Models/Page.php @@ -75,11 +75,23 @@ class Page extends BookChild /** * Get the associated page revisions, ordered by created date. - * @return mixed + * Only provides actual saved page revision instances, Not drafts. */ - public function revisions() + public function revisions(): HasMany { - return $this->hasMany(PageRevision::class)->where('type', '=', 'version')->orderBy('created_at', 'desc')->orderBy('id', 'desc'); + return $this->allRevisions() + ->where('type', '=', 'version') + ->orderBy('created_at', 'desc') + ->orderBy('id', 'desc'); + } + + /** + * Get all revision instances assigned to this page. + * Includes all types of revisions. + */ + public function allRevisions(): HasMany + { + return $this->hasMany(PageRevision::class); } /** diff --git a/app/Entities/Queries/EntityQuery.php b/app/Entities/Queries/EntityQuery.php new file mode 100644 index 000000000..bd920c3a5 --- /dev/null +++ b/app/Entities/Queries/EntityQuery.php @@ -0,0 +1,17 @@ +make(PermissionService::class); + } + + protected function entityProvider(): EntityProvider + { + return app()->make(EntityProvider::class); + } +} \ No newline at end of file diff --git a/app/Entities/Queries/Popular.php b/app/Entities/Queries/Popular.php new file mode 100644 index 000000000..98db2fe62 --- /dev/null +++ b/app/Entities/Queries/Popular.php @@ -0,0 +1,29 @@ +permissionService() + ->filterRestrictedEntityRelations(View::query(), 'views', 'viewable_id', 'viewable_type', $action) + ->select('*', 'viewable_id', 'viewable_type', DB::raw('SUM(views) as view_count')) + ->groupBy('viewable_id', 'viewable_type') + ->orderBy('view_count', 'desc'); + + if ($filterModels) { + $query->whereIn('viewable_type', $this->entityProvider()->getMorphClasses($filterModels)); + } + + return $query->with('viewable') + ->skip($count * ($page - 1)) + ->take($count) + ->get() + ->pluck('viewable') + ->filter(); + } + +} \ No newline at end of file diff --git a/app/Entities/Queries/RecentlyViewed.php b/app/Entities/Queries/RecentlyViewed.php new file mode 100644 index 000000000..d528fea44 --- /dev/null +++ b/app/Entities/Queries/RecentlyViewed.php @@ -0,0 +1,32 @@ +isDefault()) { + return collect(); + } + + $query = $this->permissionService()->filterRestrictedEntityRelations( + View::query(), + 'views', + 'viewable_id', + 'viewable_type', + 'view' + ) + ->orderBy('views.updated_at', 'desc') + ->where('user_id', '=', user()->id); + + return $query->with('viewable') + ->skip(($page - 1) * $count) + ->take($count) + ->get() + ->pluck('viewable') + ->filter(); + } +} diff --git a/app/Entities/Queries/TopFavourites.php b/app/Entities/Queries/TopFavourites.php new file mode 100644 index 000000000..1434180d3 --- /dev/null +++ b/app/Entities/Queries/TopFavourites.php @@ -0,0 +1,33 @@ +isDefault()) { + return collect(); + } + + $query = $this->permissionService() + ->filterRestrictedEntityRelations(Favourite::query(), 'favourites', 'favouritable_id', 'favouritable_type', 'view') + ->select('favourites.*') + ->leftJoin('views', function (JoinClause $join) { + $join->on('favourites.favouritable_id', '=', 'views.viewable_id'); + $join->on('favourites.favouritable_type', '=', 'views.viewable_type'); + $join->where('views.user_id', '=', user()->id); + }) + ->orderBy('views.views', 'desc') + ->where('favourites.user_id', '=', user()->id); + + return $query->with('favouritable') + ->skip($skip) + ->take($count) + ->get() + ->pluck('favouritable') + ->filter(); + } +} diff --git a/app/Entities/Tools/NextPreviousContentLocator.php b/app/Entities/Tools/NextPreviousContentLocator.php new file mode 100644 index 000000000..bfb0f4a9d --- /dev/null +++ b/app/Entities/Tools/NextPreviousContentLocator.php @@ -0,0 +1,69 @@ +relativeBookItem = $relativeBookItem; + $this->flatTree = $this->treeToFlatOrderedCollection($bookTree); + $this->currentIndex = $this->getCurrentIndex(); + } + + /** + * Get the next logical entity within the book hierarchy. + */ + public function getNext(): ?Entity + { + return $this->flatTree->get($this->currentIndex + 1); + } + + /** + * Get the next logical entity within the book hierarchy. + */ + public function getPrevious(): ?Entity + { + return $this->flatTree->get($this->currentIndex - 1); + } + + /** + * Get the index of the current relative item. + */ + protected function getCurrentIndex(): ?int + { + $index = $this->flatTree->search(function (Entity $entity) { + return get_class($entity) === get_class($this->relativeBookItem) + && $entity->id === $this->relativeBookItem->id; + }); + return $index === false ? null : $index; + } + + /** + * Convert a book tree collection to a flattened version + * where all items follow the expected order of user flow. + */ + protected function treeToFlatOrderedCollection(Collection $bookTree): Collection + { + $flatOrdered = collect(); + /** @var Entity $item */ + foreach ($bookTree->all() as $item) { + $flatOrdered->push($item); + $childPages = $item->visible_pages ?? []; + $flatOrdered = $flatOrdered->concat($childPages); + } + return $flatOrdered; + } +} diff --git a/app/Entities/Tools/TrashCan.php b/app/Entities/Tools/TrashCan.php index df98fd318..0b6081ae4 100644 --- a/app/Entities/Tools/TrashCan.php +++ b/app/Entities/Tools/TrashCan.php @@ -151,6 +151,7 @@ class TrashCan protected function destroyPage(Page $page): int { $this->destroyCommonRelations($page); + $page->allRevisions()->delete(); // Delete Attached Files $attachmentService = app(AttachmentService::class); @@ -317,6 +318,7 @@ class TrashCan $entity->jointPermissions()->delete(); $entity->searchTerms()->delete(); $entity->deletions()->delete(); + $entity->favourites()->delete(); if ($entity instanceof HasCoverImage && $entity->cover) { $imageService = app()->make(ImageService::class); diff --git a/app/Facades/Images.php b/app/Facades/Images.php deleted file mode 100644 index fdbd35a99..000000000 --- a/app/Facades/Images.php +++ /dev/null @@ -1,16 +0,0 @@ -username() => [trans('auth.failed')], + ])->redirectTo('/login'); + } } diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index 59c205d0a..64ae982d5 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -2,6 +2,7 @@ use Activity; use BookStack\Actions\ActivityType; +use BookStack\Actions\View; use BookStack\Entities\Tools\BookContents; use BookStack\Entities\Models\Bookshelf; use BookStack\Entities\Tools\PermissionsUpdater; @@ -11,7 +12,6 @@ use BookStack\Exceptions\ImageUploadException; use Illuminate\Http\Request; use Illuminate\Validation\ValidationException; use Throwable; -use Views; class BookController extends Controller { @@ -112,7 +112,7 @@ class BookController extends Controller $bookChildren = (new BookContents($book))->getTree(true); $bookParentShelves = $book->shelves()->visible()->get(); - Views::add($book); + View::incrementFor($book); if ($request->has('shelf')) { $this->entityContextManager->setShelfContext(intval($request->get('shelf'))); } diff --git a/app/Http/Controllers/BookshelfController.php b/app/Http/Controllers/BookshelfController.php index 03b3cad54..b4795db09 100644 --- a/app/Http/Controllers/BookshelfController.php +++ b/app/Http/Controllers/BookshelfController.php @@ -1,6 +1,7 @@ values() ->all(); - Views::add($shelf); + View::incrementFor($shelf); $this->entityContextManager->setShelfContext($shelf->id); $view = setting()->getForCurrentUser('bookshelf_view_type'); diff --git a/app/Http/Controllers/ChapterController.php b/app/Http/Controllers/ChapterController.php index 1d69df2a2..d65b43cc1 100644 --- a/app/Http/Controllers/ChapterController.php +++ b/app/Http/Controllers/ChapterController.php @@ -1,15 +1,16 @@ book))->getTree(); $pages = $chapter->getVisiblePages(); - Views::add($chapter); + $nextPreviousLocator = new NextPreviousContentLocator($chapter, $sidebarTree); + View::incrementFor($chapter); $this->setPageTitle($chapter->getShortName()); return view('chapters.show', [ @@ -72,7 +74,9 @@ class ChapterController extends Controller 'chapter' => $chapter, 'current' => $chapter, 'sidebarTree' => $sidebarTree, - 'pages' => $pages + 'pages' => $pages, + 'next' => $nextPreviousLocator->getNext(), + 'previous' => $nextPreviousLocator->getPrevious(), ]); } diff --git a/app/Http/Controllers/FavouriteController.php b/app/Http/Controllers/FavouriteController.php new file mode 100644 index 000000000..f4aeb4faa --- /dev/null +++ b/app/Http/Controllers/FavouriteController.php @@ -0,0 +1,95 @@ +get('page', 1)); + $favourites = (new TopFavourites)->run($viewCount + 1, (($page - 1) * $viewCount)); + + $hasMoreLink = ($favourites->count() > $viewCount) ? url("/favourites?page=" . ($page+1)) : null; + + return view('common.detailed-listing-with-more', [ + 'title' => trans('entities.my_favourites'), + 'entities' => $favourites->slice(0, $viewCount), + 'hasMoreLink' => $hasMoreLink, + ]); + } + + /** + * Add a new item as a favourite. + */ + public function add(Request $request) + { + $favouritable = $this->getValidatedModelFromRequest($request); + $favouritable->favourites()->firstOrCreate([ + 'user_id' => user()->id, + ]); + + $this->showSuccessNotification(trans('activities.favourite_add_notification', [ + 'name' => $favouritable->name, + ])); + return redirect()->back(); + } + + /** + * Remove an item as a favourite. + */ + public function remove(Request $request) + { + $favouritable = $this->getValidatedModelFromRequest($request); + $favouritable->favourites()->where([ + 'user_id' => user()->id, + ])->delete(); + + $this->showSuccessNotification(trans('activities.favourite_remove_notification', [ + 'name' => $favouritable->name, + ])); + return redirect()->back(); + } + + /** + * @throws \Illuminate\Validation\ValidationException + * @throws \Exception + */ + protected function getValidatedModelFromRequest(Request $request): Favouritable + { + $modelInfo = $this->validate($request, [ + 'type' => 'required|string', + 'id' => 'required|integer', + ]); + + if (!class_exists($modelInfo['type'])) { + throw new \Exception('Model not found'); + } + + /** @var Model $model */ + $model = new $modelInfo['type']; + if (! $model instanceof Favouritable) { + throw new \Exception('Model not favouritable'); + } + + $modelInstance = $model->newQuery() + ->where('id', '=', $modelInfo['id']) + ->first(['id', 'name']); + + $inaccessibleEntity = ($modelInstance instanceof Entity && !userCan('view', $modelInstance)); + if (is_null($modelInstance) || $inaccessibleEntity) { + throw new \Exception('Model instance not found'); + } + + return $modelInstance; + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 1ffb99f8d..7bc170526 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,11 +2,12 @@ use Activity; use BookStack\Entities\Models\Book; +use BookStack\Entities\Queries\RecentlyViewed; +use BookStack\Entities\Queries\TopFavourites; use BookStack\Entities\Tools\PageContent; use BookStack\Entities\Models\Page; use BookStack\Entities\Repos\BookRepo; use BookStack\Entities\Repos\BookshelfRepo; -use Illuminate\Http\Response; use Views; class HomeController extends Controller @@ -32,12 +33,13 @@ class HomeController extends Controller $recentFactor = count($draftPages) > 0 ? 0.5 : 1; $recents = $this->isSignedIn() ? - Views::getUserRecentlyViewed(12*$recentFactor, 1) + (new RecentlyViewed)->run(12*$recentFactor, 1) : Book::visible()->orderBy('created_at', 'desc')->take(12 * $recentFactor)->get(); + $favourites = (new TopFavourites)->run(6); $recentlyUpdatedPages = Page::visible()->with('book') ->where('draft', false) ->orderBy('updated_at', 'desc') - ->take(12) + ->take($favourites->count() > 0 ? 6 : 12) ->get(); $homepageOptions = ['default', 'books', 'bookshelves', 'page']; @@ -51,6 +53,7 @@ class HomeController extends Controller 'recents' => $recents, 'recentlyUpdatedPages' => $recentlyUpdatedPages, 'draftPages' => $draftPages, + 'favourites' => $favourites, ]; // Add required list ordering & sorting for books & shelves views. diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index 30d33ad48..31ee4e970 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -1,6 +1,8 @@ load(['comments.createdBy']); } - Views::add($page); + $nextPreviousLocator = new NextPreviousContentLocator($page, $sidebarTree); + + View::incrementFor($page); $this->setPageTitle($page->getShortName()); return view('pages.show', [ 'page' => $page, @@ -149,7 +152,9 @@ class PageController extends Controller 'current' => $page, 'sidebarTree' => $sidebarTree, 'commentsEnabled' => $commentsEnabled, - 'pageNav' => $pageNav + 'pageNav' => $pageNav, + 'next' => $nextPreviousLocator->getNext(), + 'previous' => $nextPreviousLocator->getPrevious(), ]); } @@ -242,8 +247,8 @@ class PageController extends Controller $updateTime = $draft->updated_at->timestamp; return response()->json([ - 'status' => 'success', - 'message' => trans('entities.pages_edit_draft_save_at'), + 'status' => 'success', + 'message' => trans('entities.pages_edit_draft_save_at'), 'timestamp' => $updateTime ]); } @@ -266,7 +271,7 @@ class PageController extends Controller { $page = $this->pageRepo->getBySlug($bookSlug, $pageSlug); $this->checkOwnablePermission('page-delete', $page); - $this->setPageTitle(trans('entities.pages_delete_named', ['pageName'=>$page->getShortName()])); + $this->setPageTitle(trans('entities.pages_delete_named', ['pageName' => $page->getShortName()])); return view('pages.delete', [ 'book' => $page->book, 'page' => $page, @@ -282,7 +287,7 @@ class PageController extends Controller { $page = $this->pageRepo->getById($pageId); $this->checkOwnablePermission('page-update', $page); - $this->setPageTitle(trans('entities.pages_delete_draft_named', ['pageName'=>$page->getShortName()])); + $this->setPageTitle(trans('entities.pages_delete_draft_named', ['pageName' => $page->getShortName()])); return view('pages.delete', [ 'book' => $page->book, 'page' => $page, @@ -337,9 +342,9 @@ class PageController extends Controller ->paginate(20) ->setPath(url('/pages/recently-updated')); - return view('pages.detailed-listing', [ + return view('common.detailed-listing-paginated', [ 'title' => trans('entities.recently_updated_pages'), - 'pages' => $pages + 'entities' => $pages ]); } @@ -377,7 +382,7 @@ class PageController extends Controller try { $parent = $this->pageRepo->move($page, $entitySelection); } catch (Exception $exception) { - if ($exception instanceof PermissionsException) { + if ($exception instanceof PermissionsException) { $this->showPermissionError(); } @@ -421,7 +426,7 @@ class PageController extends Controller try { $pageCopy = $this->pageRepo->copy($page, $entitySelection, $newName); } catch (Exception $exception) { - if ($exception instanceof PermissionsException) { + if ($exception instanceof PermissionsException) { $this->showPermissionError(); } @@ -442,7 +447,7 @@ class PageController extends Controller $page = $this->pageRepo->getBySlug($bookSlug, $pageSlug); $this->checkOwnablePermission('restrictions-manage', $page); return view('pages.permissions', [ - 'page' => $page, + 'page' => $page, ]); } diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index bb824fd9b..859857500 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -1,6 +1,6 @@ viewService = $viewService; $this->searchRunner = $searchRunner; $this->entityContextManager = $entityContextManager; } @@ -82,7 +79,7 @@ class SearchController extends Controller $searchTerm .= ' {type:'. implode('|', $entityTypes) .'}'; $entities = $this->searchRunner->searchEntities(SearchOptions::fromString($searchTerm), 'all', 1, 20, $permission)['results']; } else { - $entities = $this->viewService->getPopular(20, 0, $entityTypes, $permission); + $entities = (new Popular)->run(20, 0, $entityTypes, $permission); } return view('search.entity-ajax-list', ['entities' => $entities]); diff --git a/app/Interfaces/Favouritable.php b/app/Interfaces/Favouritable.php new file mode 100644 index 000000000..dd335feed --- /dev/null +++ b/app/Interfaces/Favouritable.php @@ -0,0 +1,11 @@ +app->make(ActivityService::class); }); - $this->app->singleton('views', function () { - return $this->app->make(ViewService::class); - }); - $this->app->singleton('images', function () { return $this->app->make(ImageService::class); }); diff --git a/app/Uploads/Image.php b/app/Uploads/Image.php index dc26af002..ca1df3c6c 100644 --- a/app/Uploads/Image.php +++ b/app/Uploads/Image.php @@ -3,7 +3,6 @@ use BookStack\Entities\Models\Page; use BookStack\Model; use BookStack\Traits\HasCreatorAndUpdater; -use Images; class Image extends Model { @@ -14,23 +13,18 @@ class Image extends Model /** * Get a thumbnail for this image. - * @param int $width - * @param int $height - * @param bool|false $keepRatio - * @return string * @throws \Exception */ - public function getThumb($width, $height, $keepRatio = false) + public function getThumb(int $width, int $height, bool $keepRatio = false): string { - return Images::getThumbnail($this, $width, $height, $keepRatio); + return app()->make(ImageService::class)->getThumbnail($this, $width, $height, $keepRatio); } /** * Get the page this image has been uploaded to. * Only applicable to gallery or drawio image types. - * @return Page|null */ - public function getPage() + public function getPage(): ?Page { return $this->belongsTo(Page::class, 'uploaded_to')->first(); } diff --git a/app/Uploads/UserAvatars.php b/app/Uploads/UserAvatars.php index f1509bbb8..e98c1cfca 100644 --- a/app/Uploads/UserAvatars.php +++ b/app/Uploads/UserAvatars.php @@ -26,6 +26,7 @@ class UserAvatars } try { + $this->destroyAllForUser($user); $avatar = $this->saveAvatarImage($user); $user->avatar()->associate($avatar); $user->save(); @@ -34,6 +35,35 @@ class UserAvatars } } + /** + * Assign a new avatar image to the given user using the given image data. + */ + public function assignToUserFromExistingData(User $user, string $imageData, string $extension): void + { + try { + $this->destroyAllForUser($user); + $avatar = $this->createAvatarImageFromData($user, $imageData, $extension); + $user->avatar()->associate($avatar); + $user->save(); + } catch (Exception $e) { + Log::error('Failed to save user avatar image'); + } + } + + /** + * Destroy all user avatars uploaded to the given user. + */ + public function destroyAllForUser(User $user) + { + $profileImages = Image::query()->where('type', '=', 'user') + ->where('uploaded_to', '=', $user->id) + ->get(); + + foreach ($profileImages as $image) { + $this->imageService->destroy($image); + } + } + /** * Save an avatar image from an external service. * @throws Exception @@ -50,8 +80,16 @@ class UserAvatars ]; $userAvatarUrl = strtr($avatarUrl, $replacements); - $imageName = str_replace(' ', '-', $user->id . '-avatar.png'); $imageData = $this->getAvatarImageData($userAvatarUrl); + return $this->createAvatarImageFromData($user, $imageData, 'png'); + } + + /** + * Creates a new image instance and saves it in the system as a new user avatar image. + */ + protected function createAvatarImageFromData(User $user, string $imageData, string $extension): Image + { + $imageName = str_replace(' ', '-', $user->id . '-avatar.' . $extension); $image = $this->imageService->saveNew($imageName, $imageData, 'user', $user->id); $image->created_by = $user->id; diff --git a/composer.lock b/composer.lock index b458a1b59..35fa1e703 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "aws/aws-sdk-php", - "version": "3.180.5", + "version": "3.183.9", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "948a4defbe2a571cc4460725015b8e98b7060f2d" + "reference": "3b3aafdceac4cb820e2ae65a8785e4d07db471a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/948a4defbe2a571cc4460725015b8e98b7060f2d", - "reference": "948a4defbe2a571cc4460725015b8e98b7060f2d", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3b3aafdceac4cb820e2ae65a8785e4d07db471a7", + "reference": "3b3aafdceac4cb820e2ae65a8785e4d07db471a7", "shasum": "" }, "require": { @@ -92,9 +92,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.180.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.183.9" }, - "time": "2021-05-07T18:12:43+00:00" + "time": "2021-05-28T18:28:19+00:00" }, { "name": "barryvdh/laravel-dompdf", @@ -229,16 +229,16 @@ }, { "name": "doctrine/cache", - "version": "1.11.0", + "version": "1.11.3", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "a9c1b59eba5a08ca2770a76eddb88922f504e8e0" + "reference": "3bb5588cec00a0268829cc4a518490df6741af9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/a9c1b59eba5a08ca2770a76eddb88922f504e8e0", - "reference": "a9c1b59eba5a08ca2770a76eddb88922f504e8e0", + "url": "https://api.github.com/repos/doctrine/cache/zipball/3bb5588cec00a0268829cc4a518490df6741af9d", + "reference": "3bb5588cec00a0268829cc4a518490df6741af9d", "shasum": "" }, "require": { @@ -308,7 +308,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.11.0" + "source": "https://github.com/doctrine/cache/tree/1.11.3" }, "funding": [ { @@ -324,7 +324,7 @@ "type": "tidelift" } ], - "time": "2021-04-13T14:46:17+00:00" + "time": "2021-05-25T09:01:55+00:00" }, { "name": "doctrine/dbal", @@ -1016,16 +1016,16 @@ }, { "name": "facade/ignition", - "version": "1.16.15", + "version": "1.17.0", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "b6aea4a99303d9d32afd486a285162a89af8a8a3" + "reference": "dc49305538aeb77e4c89eba57cee4ceff9e42f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/b6aea4a99303d9d32afd486a285162a89af8a8a3", - "reference": "b6aea4a99303d9d32afd486a285162a89af8a8a3", + "url": "https://api.github.com/repos/facade/ignition/zipball/dc49305538aeb77e4c89eba57cee4ceff9e42f33", + "reference": "dc49305538aeb77e4c89eba57cee4ceff9e42f33", "shasum": "" }, "require": { @@ -1088,7 +1088,7 @@ "issues": "https://github.com/facade/ignition/issues", "source": "https://github.com/facade/ignition" }, - "time": "2021-02-15T10:21:49+00:00" + "time": "2021-05-25T07:15:52+00:00" }, { "name": "facade/ignition-contracts", @@ -1651,16 +1651,16 @@ }, { "name": "laravel/framework", - "version": "v6.20.26", + "version": "v6.20.27", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "0117d797dc1ab64b1f88d4f6b966380ea7def091" + "reference": "92c0417e60efc39bc556ba5dfc9b20a56f7848fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/0117d797dc1ab64b1f88d4f6b966380ea7def091", - "reference": "0117d797dc1ab64b1f88d4f6b966380ea7def091", + "url": "https://api.github.com/repos/laravel/framework/zipball/92c0417e60efc39bc556ba5dfc9b20a56f7848fb", + "reference": "92c0417e60efc39bc556ba5dfc9b20a56f7848fb", "shasum": "" }, "require": { @@ -1800,7 +1800,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-04-28T14:38:32+00:00" + "time": "2021-05-11T14:00:28+00:00" }, { "name": "laravel/socialite", @@ -1873,16 +1873,16 @@ }, { "name": "league/commonmark", - "version": "1.6.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "2651c497f005de305c7ba3f232cbd87b8c00ee8c" + "reference": "7d70d2f19c84bcc16275ea47edabee24747352eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/2651c497f005de305c7ba3f232cbd87b8c00ee8c", - "reference": "2651c497f005de305c7ba3f232cbd87b8c00ee8c", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/7d70d2f19c84bcc16275ea47edabee24747352eb", + "reference": "7d70d2f19c84bcc16275ea47edabee24747352eb", "shasum": "" }, "require": { @@ -1970,7 +1970,7 @@ "type": "tidelift" } ], - "time": "2021-05-08T16:08:00+00:00" + "time": "2021-05-12T11:39:41+00:00" }, { "name": "league/flysystem", @@ -2408,16 +2408,16 @@ }, { "name": "nesbot/carbon", - "version": "2.47.0", + "version": "2.48.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "606262fd8888b75317ba9461825a24fc34001e1e" + "reference": "8d1f50f1436fb4b05e7127360483dd9c6e73da16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/606262fd8888b75317ba9461825a24fc34001e1e", - "reference": "606262fd8888b75317ba9461825a24fc34001e1e", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8d1f50f1436fb4b05e7127360483dd9c6e73da16", + "reference": "8d1f50f1436fb4b05e7127360483dd9c6e73da16", "shasum": "" }, "require": { @@ -2497,7 +2497,7 @@ "type": "tidelift" } ], - "time": "2021-04-13T21:54:02+00:00" + "time": "2021-05-26T22:08:38+00:00" }, { "name": "nunomaduro/collision", @@ -4072,16 +4072,16 @@ }, { "name": "symfony/console", - "version": "v4.4.22", + "version": "v4.4.24", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "36bbd079b69b94bcc9c9c9e1e37ca3b1e7971625" + "reference": "1b15ca1b1bedda86f98064da9ff5d800560d4c6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/36bbd079b69b94bcc9c9c9e1e37ca3b1e7971625", - "reference": "36bbd079b69b94bcc9c9c9e1e37ca3b1e7971625", + "url": "https://api.github.com/repos/symfony/console/zipball/1b15ca1b1bedda86f98064da9ff5d800560d4c6d", + "reference": "1b15ca1b1bedda86f98064da9ff5d800560d4c6d", "shasum": "" }, "require": { @@ -4141,7 +4141,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.22" + "source": "https://github.com/symfony/console/tree/v4.4.24" }, "funding": [ { @@ -4157,20 +4157,20 @@ "type": "tidelift" } ], - "time": "2021-04-16T17:32:19+00:00" + "time": "2021-05-13T06:28:07+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.22", + "version": "v4.4.24", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "01c77324d1d47efbfd7891f62a7c256c69330115" + "reference": "947cacaf1b3a2af6f13a435392873d5ddaba5f70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/01c77324d1d47efbfd7891f62a7c256c69330115", - "reference": "01c77324d1d47efbfd7891f62a7c256c69330115", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/947cacaf1b3a2af6f13a435392873d5ddaba5f70", + "reference": "947cacaf1b3a2af6f13a435392873d5ddaba5f70", "shasum": "" }, "require": { @@ -4206,7 +4206,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.22" + "source": "https://github.com/symfony/css-selector/tree/v4.4.24" }, "funding": [ { @@ -4222,7 +4222,7 @@ "type": "tidelift" } ], - "time": "2021-04-07T15:47:03+00:00" + "time": "2021-05-16T09:52:47+00:00" }, { "name": "symfony/debug", @@ -4362,16 +4362,16 @@ }, { "name": "symfony/error-handler", - "version": "v4.4.22", + "version": "v4.4.23", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "76603a8df8e001436df80758eb03a8baa5324175" + "reference": "21d75bfbdfdd3581a7f97080deb98926987f14a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/76603a8df8e001436df80758eb03a8baa5324175", - "reference": "76603a8df8e001436df80758eb03a8baa5324175", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/21d75bfbdfdd3581a7f97080deb98926987f14a7", + "reference": "21d75bfbdfdd3581a7f97080deb98926987f14a7", "shasum": "" }, "require": { @@ -4411,7 +4411,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.22" + "source": "https://github.com/symfony/error-handler/tree/v4.4.23" }, "funding": [ { @@ -4427,7 +4427,7 @@ "type": "tidelift" } ], - "time": "2021-04-02T07:50:12+00:00" + "time": "2021-05-02T20:47:26+00:00" }, { "name": "symfony/event-dispatcher", @@ -4593,16 +4593,16 @@ }, { "name": "symfony/finder", - "version": "v4.4.20", + "version": "v4.4.24", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2543795ab1570df588b9bbd31e1a2bd7037b94f6" + "reference": "a96bc19ed87c88eec78e1a4c803bdc1446952983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2543795ab1570df588b9bbd31e1a2bd7037b94f6", - "reference": "2543795ab1570df588b9bbd31e1a2bd7037b94f6", + "url": "https://api.github.com/repos/symfony/finder/zipball/a96bc19ed87c88eec78e1a4c803bdc1446952983", + "reference": "a96bc19ed87c88eec78e1a4c803bdc1446952983", "shasum": "" }, "require": { @@ -4634,7 +4634,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.20" + "source": "https://github.com/symfony/finder/tree/v4.4.24" }, "funding": [ { @@ -4650,7 +4650,7 @@ "type": "tidelift" } ], - "time": "2021-02-12T10:48:09+00:00" + "time": "2021-05-16T12:27:45+00:00" }, { "name": "symfony/http-client-contracts", @@ -4732,16 +4732,16 @@ }, { "name": "symfony/http-foundation", - "version": "v4.4.22", + "version": "v4.4.23", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "1a6f87ef99d05b1bf5c865b4ef7992263e1cb081" + "reference": "2ffb43bd6c589a274ee1e93a5fd6b7ef1577b9c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1a6f87ef99d05b1bf5c865b4ef7992263e1cb081", - "reference": "1a6f87ef99d05b1bf5c865b4ef7992263e1cb081", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/2ffb43bd6c589a274ee1e93a5fd6b7ef1577b9c5", + "reference": "2ffb43bd6c589a274ee1e93a5fd6b7ef1577b9c5", "shasum": "" }, "require": { @@ -4780,7 +4780,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.22" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.23" }, "funding": [ { @@ -4796,20 +4796,20 @@ "type": "tidelift" } ], - "time": "2021-04-30T12:05:50+00:00" + "time": "2021-05-05T07:40:41+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.22", + "version": "v4.4.24", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "cd2e325fc34a4a5bbec91eecf69dda8ee8c5ea4f" + "reference": "59925ee79f2541b4c6e990843e1a42768e898254" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/cd2e325fc34a4a5bbec91eecf69dda8ee8c5ea4f", - "reference": "cd2e325fc34a4a5bbec91eecf69dda8ee8c5ea4f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/59925ee79f2541b4c6e990843e1a42768e898254", + "reference": "59925ee79f2541b4c6e990843e1a42768e898254", "shasum": "" }, "require": { @@ -4884,7 +4884,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.22" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.24" }, "funding": [ { @@ -4900,20 +4900,20 @@ "type": "tidelift" } ], - "time": "2021-05-01T14:38:48+00:00" + "time": "2021-05-19T12:12:19+00:00" }, { "name": "symfony/mime", - "version": "v5.2.7", + "version": "v5.2.9", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7af452bf51c46f18da00feb32e1ad36db9426515" + "reference": "64258e870f8cc75c3dae986201ea2df58c210b52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7af452bf51c46f18da00feb32e1ad36db9426515", - "reference": "7af452bf51c46f18da00feb32e1ad36db9426515", + "url": "https://api.github.com/repos/symfony/mime/zipball/64258e870f8cc75c3dae986201ea2df58c210b52", + "reference": "64258e870f8cc75c3dae986201ea2df58c210b52", "shasum": "" }, "require": { @@ -4967,7 +4967,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.2.7" + "source": "https://github.com/symfony/mime/tree/v5.2.9" }, "funding": [ { @@ -4983,20 +4983,20 @@ "type": "tidelift" } ], - "time": "2021-04-29T20:47:09+00:00" + "time": "2021-05-16T13:07:46+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", "shasum": "" }, "require": { @@ -5008,7 +5008,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5046,7 +5046,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" }, "funding": [ { @@ -5062,20 +5062,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "06fb361659649bcfd6a208a0f1fcaf4e827ad342" + "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/06fb361659649bcfd6a208a0f1fcaf4e827ad342", - "reference": "06fb361659649bcfd6a208a0f1fcaf4e827ad342", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", "shasum": "" }, "require": { @@ -5087,7 +5087,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5126,7 +5126,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" }, "funding": [ { @@ -5142,20 +5142,20 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-05-27T09:27:20+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "2d63434d922daf7da8dd863e7907e67ee3031483" + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483", - "reference": "2d63434d922daf7da8dd863e7907e67ee3031483", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", + "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", "shasum": "" }, "require": { @@ -5169,7 +5169,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5213,7 +5213,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" }, "funding": [ { @@ -5229,20 +5229,20 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-05-27T09:27:20+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", - "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "shasum": "" }, "require": { @@ -5254,7 +5254,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5297,7 +5297,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" }, "funding": [ { @@ -5313,20 +5313,20 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" + "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", - "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", + "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", "shasum": "" }, "require": { @@ -5338,7 +5338,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5377,7 +5377,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" }, "funding": [ { @@ -5393,20 +5393,20 @@ "type": "tidelift" } ], - "time": "2021-01-22T09:19:47+00:00" + "time": "2021-05-27T09:27:20+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9" + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", - "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", + "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", "shasum": "" }, "require": { @@ -5415,7 +5415,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5453,7 +5453,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" }, "funding": [ { @@ -5469,20 +5469,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-05-27T09:17:38+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", - "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", "shasum": "" }, "require": { @@ -5491,7 +5491,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5532,7 +5532,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" }, "funding": [ { @@ -5548,20 +5548,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.22.1", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", "shasum": "" }, "require": { @@ -5570,7 +5570,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5615,7 +5615,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" }, "funding": [ { @@ -5631,7 +5631,7 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/process", @@ -5696,16 +5696,16 @@ }, { "name": "symfony/routing", - "version": "v4.4.22", + "version": "v4.4.24", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "049e7c5c41f98511959668791b4adc0898a821b3" + "reference": "b42c3631fd9e3511610afb2ba081ea7e38d9fa38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/049e7c5c41f98511959668791b4adc0898a821b3", - "reference": "049e7c5c41f98511959668791b4adc0898a821b3", + "url": "https://api.github.com/repos/symfony/routing/zipball/b42c3631fd9e3511610afb2ba081ea7e38d9fa38", + "reference": "b42c3631fd9e3511610afb2ba081ea7e38d9fa38", "shasum": "" }, "require": { @@ -5764,7 +5764,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.22" + "source": "https://github.com/symfony/routing/tree/v4.4.24" }, "funding": [ { @@ -5780,7 +5780,7 @@ "type": "tidelift" } ], - "time": "2021-04-11T12:59:39+00:00" + "time": "2021-05-16T09:52:47+00:00" }, { "name": "symfony/service-contracts", @@ -5863,16 +5863,16 @@ }, { "name": "symfony/translation", - "version": "v4.4.21", + "version": "v4.4.24", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "eb8f5428cc3b40d6dffe303b195b084f1c5fbd14" + "reference": "424d29dfcc15575af05196de0100d7b52f650602" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/eb8f5428cc3b40d6dffe303b195b084f1c5fbd14", - "reference": "eb8f5428cc3b40d6dffe303b195b084f1c5fbd14", + "url": "https://api.github.com/repos/symfony/translation/zipball/424d29dfcc15575af05196de0100d7b52f650602", + "reference": "424d29dfcc15575af05196de0100d7b52f650602", "shasum": "" }, "require": { @@ -5931,7 +5931,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.21" + "source": "https://github.com/symfony/translation/tree/v4.4.24" }, "funding": [ { @@ -5947,7 +5947,7 @@ "type": "tidelift" } ], - "time": "2021-03-23T16:25:01+00:00" + "time": "2021-05-16T09:52:47+00:00" }, { "name": "symfony/translation-contracts", @@ -6250,16 +6250,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.5.5", + "version": "v3.5.7", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "6420113d90bb746423fa70b9940e9e7c26ebc121" + "reference": "88fd9cfa144b06b2549e9d487fdaec68265e791e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/6420113d90bb746423fa70b9940e9e7c26ebc121", - "reference": "6420113d90bb746423fa70b9940e9e7c26ebc121", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/88fd9cfa144b06b2549e9d487fdaec68265e791e", + "reference": "88fd9cfa144b06b2549e9d487fdaec68265e791e", "shasum": "" }, "require": { @@ -6319,7 +6319,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.5.5" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.5.7" }, "funding": [ { @@ -6327,7 +6327,7 @@ "type": "github" } ], - "time": "2021-04-07T11:19:20+00:00" + "time": "2021-05-13T20:18:35+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -6545,16 +6545,16 @@ }, { "name": "composer/composer", - "version": "2.0.13", + "version": "2.0.14", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "986e8b86b7b570632ad0a905c3726c33dd4c0efb" + "reference": "92b2ccbef65292ba9f2004271ef47c7231e2eed5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/986e8b86b7b570632ad0a905c3726c33dd4c0efb", - "reference": "986e8b86b7b570632ad0a905c3726c33dd4c0efb", + "url": "https://api.github.com/repos/composer/composer/zipball/92b2ccbef65292ba9f2004271ef47c7231e2eed5", + "reference": "92b2ccbef65292ba9f2004271ef47c7231e2eed5", "shasum": "" }, "require": { @@ -6562,21 +6562,21 @@ "composer/metadata-minifier": "^1.0", "composer/semver": "^3.0", "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", + "composer/xdebug-handler": "^2.0", "justinrainbow/json-schema": "^5.2.10", "php": "^5.3.2 || ^7.0 || ^8.0", "psr/log": "^1.0", "react/promise": "^1.2 || ^2.7", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", - "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", - "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", - "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", - "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0" + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" }, "require-dev": { "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^4.2 || ^5.0" + "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -6623,7 +6623,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.0.13" + "source": "https://github.com/composer/composer/tree/2.0.14" }, "funding": [ { @@ -6639,7 +6639,7 @@ "type": "tidelift" } ], - "time": "2021-04-27T11:11:08+00:00" + "time": "2021-05-21T15:03:37+00:00" }, { "name": "composer/metadata-minifier", @@ -6712,16 +6712,16 @@ }, { "name": "composer/semver", - "version": "3.2.4", + "version": "3.2.5", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464" + "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", - "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", + "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", "shasum": "" }, "require": { @@ -6773,7 +6773,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.4" + "source": "https://github.com/composer/semver/tree/3.2.5" }, "funding": [ { @@ -6789,7 +6789,7 @@ "type": "tidelift" } ], - "time": "2020-11-13T08:59:24+00:00" + "time": "2021-05-24T12:41:47+00:00" }, { "name": "composer/spdx-licenses", @@ -6872,16 +6872,16 @@ }, { "name": "composer/xdebug-handler", - "version": "1.4.6", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c" + "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", + "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", "shasum": "" }, "require": { @@ -6916,7 +6916,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/1.4.6" + "source": "https://github.com/composer/xdebug-handler/tree/2.0.1" }, "funding": [ { @@ -6932,7 +6932,7 @@ "type": "tidelift" } ], - "time": "2021-03-25T17:01:18+00:00" + "time": "2021-05-05T19:37:51+00:00" }, { "name": "doctrine/instantiator", @@ -9445,16 +9445,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v4.4.20", + "version": "v4.4.24", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "be133557f1b0e6672367325b508e65da5513a311" + "reference": "fc0bd1f215b0cd9f4efdc63bb66808f3417331bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/be133557f1b0e6672367325b508e65da5513a311", - "reference": "be133557f1b0e6672367325b508e65da5513a311", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/fc0bd1f215b0cd9f4efdc63bb66808f3417331bc", + "reference": "fc0bd1f215b0cd9f4efdc63bb66808f3417331bc", "shasum": "" }, "require": { @@ -9498,7 +9498,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.20" + "source": "https://github.com/symfony/dom-crawler/tree/v4.4.24" }, "funding": [ { @@ -9514,7 +9514,7 @@ "type": "tidelift" } ], - "time": "2021-02-14T12:29:41+00:00" + "time": "2021-05-16T09:52:47+00:00" }, { "name": "symfony/filesystem", diff --git a/database/migrations/2021_05_15_173110_create_favourites_table.php b/database/migrations/2021_05_15_173110_create_favourites_table.php new file mode 100644 index 000000000..783bf5825 --- /dev/null +++ b/database/migrations/2021_05_15_173110_create_favourites_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->integer('user_id')->index(); + $table->integer('favouritable_id'); + $table->string('favouritable_type', 100); + $table->timestamps(); + + $table->index(['favouritable_id', 'favouritable_type'], 'favouritable_index'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('favourites'); + } +} diff --git a/package-lock.json b/package-lock.json index d25aae4da..64b375128 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,19 +6,19 @@ "": { "dependencies": { "clipboard": "^2.0.8", - "codemirror": "^5.60.0", + "codemirror": "^5.61.1", "dropzone": "^5.9.2", - "markdown-it": "^11.0.1", + "markdown-it": "^12.0.6", "markdown-it-task-lists": "^2.1.1", "sortablejs": "^1.13.0" }, "devDependencies": { "chokidar-cli": "^2.1.0", - "esbuild": "0.7.8", + "esbuild": "0.12.5", "livereload": "^0.9.3", "npm-run-all": "^4.1.5", "punycode": "^2.1.1", - "sass": "^1.32.8" + "sass": "^1.34.0" } }, "node_modules/ansi-regex": { @@ -56,12 +56,9 @@ } }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/balanced-match": { "version": "1.0.0", @@ -184,9 +181,9 @@ } }, "node_modules/codemirror": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.60.0.tgz", - "integrity": "sha512-AEL7LhFOlxPlCL8IdTcJDblJm8yrAGib7I+DErJPdZd4l6imx8IMgKK3RblVgBQqz3TZJR4oknQ03bz+uNjBYA==" + "version": "5.61.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.1.tgz", + "integrity": "sha512-+D1NZjAucuzE93vJGbAaXzvoBHwp9nJZWWWF9utjv25+5AZUiah6CIlfb4ikG4MoDsFsCG8niiJH5++OO2LgIQ==" }, "node_modules/color-convert": { "version": "1.9.3", @@ -263,9 +260,12 @@ "dev": true }, "node_modules/entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/error-ex": { "version": "1.3.2", @@ -313,10 +313,11 @@ } }, "node_modules/esbuild": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.7.8.tgz", - "integrity": "sha512-6UT1nZB+8ja5avctUC6d3kGOUAhy6/ZYHljL4nk3++1ipadghBhUCAcwsTHsmUvdu04CcGKzo13mE+ZQ2O3zrA==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.5.tgz", + "integrity": "sha512-vcuP53pA5XiwUU4FnlXM+2PnVjTfHGthM7uP1gtp+9yfheGvFFbq/KyuESThmtoHPUrfZH5JpxGVJIFDVD1Egw==", "dev": true, + "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" } @@ -674,12 +675,12 @@ "dev": true }, "node_modules/markdown-it": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.1.tgz", - "integrity": "sha512-aU1TzmBKcWNNYvH9pjq6u92BML+Hz3h5S/QpfTFwiQF852pLT+9qHsrhM9JYipkOXZxGn+sGH8oyJE9FD9WezQ==", + "version": "12.0.6", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.6.tgz", + "integrity": "sha512-qv3sVLl4lMT96LLtR7xeRJX11OUFjsaD5oVat2/SNBIb21bJXwal2+SklcRbTwGwqWpWH/HRtYavOoJE+seL8w==", "dependencies": { - "argparse": "^1.0.7", - "entities": "~2.0.0", + "argparse": "^2.0.1", + "entities": "~2.1.0", "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" @@ -979,12 +980,12 @@ } }, "node_modules/sass": { - "version": "1.32.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", - "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.0.tgz", + "integrity": "sha512-rHEN0BscqjUYuomUEaqq3BMgsXqQfkcMVR7UhscsAVub0/spUrZGBMxQXFS2kfiDsPLZw5yuU9iJEFNC2x38Qw==", "dev": true, "dependencies": { - "chokidar": ">=2.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0" }, "bin": { "sass": "sass.js" @@ -1077,11 +1078,6 @@ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, "node_modules/string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -1227,12 +1223,24 @@ } }, "node_modules/ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "dev": true, "engines": { "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/y18n": { @@ -1297,12 +1305,9 @@ } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "balanced-match": { "version": "1.0.0", @@ -1402,9 +1407,9 @@ } }, "codemirror": { - "version": "5.60.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.60.0.tgz", - "integrity": "sha512-AEL7LhFOlxPlCL8IdTcJDblJm8yrAGib7I+DErJPdZd4l6imx8IMgKK3RblVgBQqz3TZJR4oknQ03bz+uNjBYA==" + "version": "5.61.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.1.tgz", + "integrity": "sha512-+D1NZjAucuzE93vJGbAaXzvoBHwp9nJZWWWF9utjv25+5AZUiah6CIlfb4ikG4MoDsFsCG8niiJH5++OO2LgIQ==" }, "color-convert": { "version": "1.9.3", @@ -1472,9 +1477,9 @@ "dev": true }, "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, "error-ex": { "version": "1.3.2", @@ -1516,9 +1521,9 @@ } }, "esbuild": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.7.8.tgz", - "integrity": "sha512-6UT1nZB+8ja5avctUC6d3kGOUAhy6/ZYHljL4nk3++1ipadghBhUCAcwsTHsmUvdu04CcGKzo13mE+ZQ2O3zrA==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.5.tgz", + "integrity": "sha512-vcuP53pA5XiwUU4FnlXM+2PnVjTfHGthM7uP1gtp+9yfheGvFFbq/KyuESThmtoHPUrfZH5JpxGVJIFDVD1Egw==", "dev": true }, "escape-string-regexp": { @@ -1793,12 +1798,12 @@ "dev": true }, "markdown-it": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.1.tgz", - "integrity": "sha512-aU1TzmBKcWNNYvH9pjq6u92BML+Hz3h5S/QpfTFwiQF852pLT+9qHsrhM9JYipkOXZxGn+sGH8oyJE9FD9WezQ==", + "version": "12.0.6", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.6.tgz", + "integrity": "sha512-qv3sVLl4lMT96LLtR7xeRJX11OUFjsaD5oVat2/SNBIb21bJXwal2+SklcRbTwGwqWpWH/HRtYavOoJE+seL8w==", "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", + "argparse": "^2.0.1", + "entities": "~2.1.0", "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" @@ -2027,12 +2032,12 @@ } }, "sass": { - "version": "1.32.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", - "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.0.tgz", + "integrity": "sha512-rHEN0BscqjUYuomUEaqq3BMgsXqQfkcMVR7UhscsAVub0/spUrZGBMxQXFS2kfiDsPLZw5yuU9iJEFNC2x38Qw==", "dev": true, "requires": { - "chokidar": ">=2.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0" } }, "select": { @@ -2110,11 +2115,6 @@ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -2236,10 +2236,11 @@ } }, "ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", - "dev": true + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "requires": {} }, "y18n": { "version": "4.0.1", diff --git a/package.json b/package.json index 503abd44f..9c800616e 100644 --- a/package.json +++ b/package.json @@ -16,17 +16,17 @@ }, "devDependencies": { "chokidar-cli": "^2.1.0", - "esbuild": "0.7.8", + "esbuild": "0.12.5", "livereload": "^0.9.3", "npm-run-all": "^4.1.5", "punycode": "^2.1.1", - "sass": "^1.32.8" + "sass": "^1.34.0" }, "dependencies": { "clipboard": "^2.0.8", - "codemirror": "^5.60.0", + "codemirror": "^5.61.1", "dropzone": "^5.9.2", - "markdown-it": "^11.0.1", + "markdown-it": "^12.0.6", "markdown-it-task-lists": "^2.1.1", "sortablejs": "^1.13.0" } diff --git a/resources/icons/star-circle.svg b/resources/icons/star-circle.svg index 0e3f16879..a7667e48f 100644 --- a/resources/icons/star-circle.svg +++ b/resources/icons/star-circle.svg @@ -1,4 +1,3 @@ \ No newline at end of file diff --git a/resources/icons/star-outline.svg b/resources/icons/star-outline.svg new file mode 100644 index 000000000..4e83ab42b --- /dev/null +++ b/resources/icons/star-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/tag.svg b/resources/icons/tag.svg index 73e328cee..1d92d2b18 100644 --- a/resources/icons/tag.svg +++ b/resources/icons/tag.svg @@ -1,4 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/js/components/markdown-editor.js b/resources/js/components/markdown-editor.js index 78581ec44..a90f74e27 100644 --- a/resources/js/components/markdown-editor.js +++ b/resources/js/components/markdown-editor.js @@ -14,6 +14,7 @@ class MarkdownEditor { this.pageId = this.$opts.pageId; this.textDirection = this.$opts.textDirection; this.imageUploadErrorText = this.$opts.imageUploadErrorText; + this.serverUploadLimitText = this.$opts.serverUploadLimitText; this.markdown = new MarkdownIt({html: true}); this.markdown.use(mdTasksLists, {label: true}); @@ -446,8 +447,7 @@ class MarkdownEditor { this.insertDrawing(resp.data, cursorPos); DrawIO.close(); }).catch(err => { - window.$events.emit('error', trans('errors.image_upload_error')); - console.log(err); + this.handleDrawingUploadError(err); }); }); } @@ -491,12 +491,20 @@ class MarkdownEditor { this.cm.focus(); DrawIO.close(); }).catch(err => { - window.$events.emit('error', this.imageUploadErrorText); - console.log(err); + this.handleDrawingUploadError(err); }); }); } + handleDrawingUploadError(error) { + if (error.status === 413) { + window.$events.emit('error', this.serverUploadLimitText); + } else { + window.$events.emit('error', this.imageUploadErrorText); + } + console.log(error); + } + // Make the editor full screen actionFullScreen() { const alreadyFullscreen = this.elem.classList.contains('fullscreen'); diff --git a/resources/js/components/wysiwyg-editor.js b/resources/js/components/wysiwyg-editor.js index a44ab1c62..bde73f4bf 100644 --- a/resources/js/components/wysiwyg-editor.js +++ b/resources/js/components/wysiwyg-editor.js @@ -283,6 +283,15 @@ function drawIoPlugin(drawioUrl, isDarkMode, pageId, wysiwygComponent) { const id = "image-" + Math.random().toString(16).slice(2); const loadingImage = window.baseUrl('/loading.gif'); + const handleUploadError = (error) => { + if (error.status === 413) { + window.$events.emit('error', wysiwygComponent.serverUploadLimitText); + } else { + window.$events.emit('error', wysiwygComponent.imageUploadErrorText); + } + console.log(error); + }; + // Handle updating an existing image if (currentNode) { DrawIO.close(); @@ -292,8 +301,7 @@ function drawIoPlugin(drawioUrl, isDarkMode, pageId, wysiwygComponent) { pageEditor.dom.setAttrib(imgElem, 'src', img.url); pageEditor.dom.setAttrib(currentNode, 'drawio-diagram', img.id); } catch (err) { - window.$events.emit('error', wysiwygComponent.imageUploadErrorText); - console.log(err); + handleUploadError(err); } return; } @@ -307,8 +315,7 @@ function drawIoPlugin(drawioUrl, isDarkMode, pageId, wysiwygComponent) { pageEditor.dom.get(id).parentNode.setAttribute('drawio-diagram', img.id); } catch (err) { pageEditor.dom.remove(id); - window.$events.emit('error', wysiwygComponent.imageUploadErrorText); - console.log(err); + handleUploadError(err); } }, 5); } @@ -432,6 +439,7 @@ class WysiwygEditor { this.pageId = this.$opts.pageId; this.textDirection = this.$opts.textDirection; this.imageUploadErrorText = this.$opts.imageUploadErrorText; + this.serverUploadLimitText = this.$opts.serverUploadLimitText; this.isDarkMode = document.documentElement.classList.contains('dark-mode'); this.plugins = "image imagetools table textcolor paste link autolink fullscreen code customhr autosave lists codeeditor media"; diff --git a/resources/js/services/drawio.js b/resources/js/services/drawio.js index 17e57cd6b..6e22919fb 100644 --- a/resources/js/services/drawio.js +++ b/resources/js/services/drawio.js @@ -1,5 +1,5 @@ let iFrame = null; - +let lastApprovedOrigin; let onInit, onSave; /** @@ -19,15 +19,22 @@ function show(drawioUrl, onInitCallback, onSaveCallback) { iFrame.setAttribute('class', 'fullscreen'); iFrame.style.backgroundColor = '#FFFFFF'; document.body.appendChild(iFrame); + lastApprovedOrigin = (new URL(drawioUrl)).origin; } function close() { drawEventClose(); } +/** + * Receive and handle a message event from the draw.io window. + * @param {MessageEvent} event + */ function drawReceive(event) { if (!event.data || event.data.length < 1) return; - let message = JSON.parse(event.data); + if (event.origin !== lastApprovedOrigin) return; + + const message = JSON.parse(event.data); if (message.event === 'init') { drawEventInit(); } else if (message.event === 'exit') { @@ -62,7 +69,7 @@ function drawEventClose() { } function drawPostMessage(data) { - iFrame.contentWindow.postMessage(JSON.stringify(data), '*'); + iFrame.contentWindow.postMessage(JSON.stringify(data), lastApprovedOrigin); } async function upload(imageData, pageUploadedToId) { diff --git a/resources/lang/ar/activities.php b/resources/lang/ar/activities.php index c3422b8f5..05055d1bc 100644 --- a/resources/lang/ar/activities.php +++ b/resources/lang/ar/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'تم تحديث الرف', 'bookshelf_delete_notification' => 'تم حذف الرف بنجاح', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'تم التعليق', 'permissions_update' => 'تحديث الأذونات', diff --git a/resources/lang/ar/common.php b/resources/lang/ar/common.php index 485326f14..b9b203234 100644 --- a/resources/lang/ar/common.php +++ b/resources/lang/ar/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'إزالة', 'add' => 'إضافة', 'fullscreen' => 'شاشة كاملة', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'خيارات الفرز', diff --git a/resources/lang/ar/entities.php b/resources/lang/ar/entities.php index 294343e22..dec4522f4 100644 --- a/resources/lang/ar/entities.php +++ b/resources/lang/ar/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'صور', 'my_recent_drafts' => 'مسوداتي الحديثة', 'my_recently_viewed' => 'ما عرضته مؤخراً', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'لم تستعرض أي صفحات', 'no_pages_recently_created' => 'لم تنشأ أي صفحات مؤخراً', 'no_pages_recently_updated' => 'لم تُحدّث أي صفحات مؤخراً', diff --git a/resources/lang/bg/activities.php b/resources/lang/bg/activities.php index a49573354..90218a30a 100644 --- a/resources/lang/bg/activities.php +++ b/resources/lang/bg/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'изтрит рафт', 'bookshelf_delete_notification' => 'Рафтът беше успешно изтрит', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'коментирано на', 'permissions_update' => 'updated permissions', diff --git a/resources/lang/bg/common.php b/resources/lang/bg/common.php index f3a15563c..600d8df3d 100644 --- a/resources/lang/bg/common.php +++ b/resources/lang/bg/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Премахване', 'add' => 'Добави', 'fullscreen' => 'Пълен екран', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Опции за сортиране', diff --git a/resources/lang/bg/entities.php b/resources/lang/bg/entities.php index 2e35b5afa..f5ca1850c 100644 --- a/resources/lang/bg/entities.php +++ b/resources/lang/bg/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Изображения', 'my_recent_drafts' => 'Моите скорошни драфтове', 'my_recently_viewed' => 'Моите скорошни преглеждания', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Не сте прегледали никакви страници', 'no_pages_recently_created' => 'Не са били създавани страници скоро', 'no_pages_recently_updated' => 'Не са били актуализирани страници скоро', diff --git a/resources/lang/bs/activities.php b/resources/lang/bs/activities.php index a9c7bfb52..c4bb5a27e 100644 --- a/resources/lang/bs/activities.php +++ b/resources/lang/bs/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'je izbrisao/la policu za knjige', 'bookshelf_delete_notification' => 'Polica za knjige Uspješno Izbrisana', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'je komentarisao/la na', 'permissions_update' => 'je ažurirao/la dozvole', diff --git a/resources/lang/bs/common.php b/resources/lang/bs/common.php index 41d53f848..4a1af9de0 100644 --- a/resources/lang/bs/common.php +++ b/resources/lang/bs/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Ukloni', 'add' => 'Dodaj', 'fullscreen' => 'Prikaz preko čitavog ekrana', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Opcije sortiranja', diff --git a/resources/lang/bs/entities.php b/resources/lang/bs/entities.php index 1e5350fe5..14f4e351c 100644 --- a/resources/lang/bs/entities.php +++ b/resources/lang/bs/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Slike', 'my_recent_drafts' => 'Moje nedavne skice', 'my_recently_viewed' => 'Moji nedavni pregledi', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Niste pogledali nijednu stranicu', 'no_pages_recently_created' => 'Nijedna stranica nije napravljena nedavno', 'no_pages_recently_updated' => 'Niijedna stranica nije ažurirana nedavno', diff --git a/resources/lang/ca/activities.php b/resources/lang/ca/activities.php index 38e4d4eb5..604eaeda4 100644 --- a/resources/lang/ca/activities.php +++ b/resources/lang/ca/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'ha suprimit un prestatge', 'bookshelf_delete_notification' => 'Prestatge suprimit correctament', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'ha comentat a', 'permissions_update' => 'ha actualitzat els permisos', diff --git a/resources/lang/ca/common.php b/resources/lang/ca/common.php index 22b33de4d..03d38a2d3 100644 --- a/resources/lang/ca/common.php +++ b/resources/lang/ca/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Elimina', 'add' => 'Afegeix', 'fullscreen' => 'Pantalla completa', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Opcions d\'ordenació', diff --git a/resources/lang/ca/entities.php b/resources/lang/ca/entities.php index 1426168f4..55921f3b6 100644 --- a/resources/lang/ca/entities.php +++ b/resources/lang/ca/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Imatges', 'my_recent_drafts' => 'Els vostres esborranys recents', 'my_recently_viewed' => 'Les vostres visualitzacions recents', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'No heu vist cap pàgina', 'no_pages_recently_created' => 'No s\'ha creat cap pàgina fa poc', 'no_pages_recently_updated' => 'No s\'ha actualitzat cap pàgina fa poc', diff --git a/resources/lang/cs/activities.php b/resources/lang/cs/activities.php index 818369331..e444399cc 100644 --- a/resources/lang/cs/activities.php +++ b/resources/lang/cs/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'odstranil/a knihovnu', 'bookshelf_delete_notification' => 'Knihovna byla úspěšně odstraněna', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'okomentoval/a', 'permissions_update' => 'updated permissions', diff --git a/resources/lang/cs/common.php b/resources/lang/cs/common.php index e8a75d612..b76fa32e4 100644 --- a/resources/lang/cs/common.php +++ b/resources/lang/cs/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Odebrat', 'add' => 'Přidat', 'fullscreen' => 'Celá obrazovka', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Možnosti řazení', diff --git a/resources/lang/cs/entities.php b/resources/lang/cs/entities.php index 210aca563..1a843c93d 100644 --- a/resources/lang/cs/entities.php +++ b/resources/lang/cs/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Obrázky', 'my_recent_drafts' => 'Mé nedávné koncepty', 'my_recently_viewed' => 'Mé nedávno zobrazené', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Nezobrazili jste žádné stránky', 'no_pages_recently_created' => 'Nedávno nebyly vytvořeny žádné stránky', 'no_pages_recently_updated' => 'Nedávno nebyly aktualizovány žádné stránky', diff --git a/resources/lang/da/activities.php b/resources/lang/da/activities.php index 16898bd2b..614d1a8ac 100644 --- a/resources/lang/da/activities.php +++ b/resources/lang/da/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'slettede bogreol', 'bookshelf_delete_notification' => 'Bogreolen blev opdateret', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'kommenterede til', 'permissions_update' => 'Tilladelser opdateret', diff --git a/resources/lang/da/common.php b/resources/lang/da/common.php index 8613cc045..0504f5a10 100644 --- a/resources/lang/da/common.php +++ b/resources/lang/da/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Fjern', 'add' => 'Tilføj', 'fullscreen' => 'Fuld skærm', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sorteringsindstillinger', diff --git a/resources/lang/da/entities.php b/resources/lang/da/entities.php index adc723dad..36e290d86 100644 --- a/resources/lang/da/entities.php +++ b/resources/lang/da/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Billeder', 'my_recent_drafts' => 'Mine seneste kladder', 'my_recently_viewed' => 'Mine senest viste', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Du har ikke besøgt nogle sider', 'no_pages_recently_created' => 'Ingen sider er blevet oprettet for nyligt', 'no_pages_recently_updated' => 'Ingen sider er blevet opdateret for nyligt', diff --git a/resources/lang/de/activities.php b/resources/lang/de/activities.php index 562a9add3..52c99168f 100644 --- a/resources/lang/de/activities.php +++ b/resources/lang/de/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'hat das Bücherregal gelöscht', 'bookshelf_delete_notification' => 'Das Bücherregal wurde erfolgreich gelöscht', + // Favourites + 'favourite_add_notification' => '":name" wurde zu deinen Favoriten hinzugefügt', + 'favourite_remove_notification' => '":name" wurde aus Ihren Favoriten entfernt', + // Other 'commented_on' => 'hat einen Kommentar hinzugefügt', 'permissions_update' => 'hat die Berechtigungen aktualisiert', diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php index fb9e91e43..44a10ebc2 100644 --- a/resources/lang/de/common.php +++ b/resources/lang/de/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Entfernen', 'add' => 'Hinzufügen', 'fullscreen' => 'Vollbild', + 'favourite' => 'Favorit', + 'unfavourite' => 'Kein Favorit', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sortieroptionen', diff --git a/resources/lang/de/entities.php b/resources/lang/de/entities.php index 22319d30d..d11c8dbaf 100644 --- a/resources/lang/de/entities.php +++ b/resources/lang/de/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Bilder', 'my_recent_drafts' => 'Meine kürzlichen Entwürfe', 'my_recently_viewed' => 'Kürzlich von mir angesehen', + 'my_most_viewed_favourites' => 'Meine meistgesehenen Favoriten', + 'my_favourites' => 'Meine Favoriten', 'no_pages_viewed' => 'Sie haben bisher keine Seiten angesehen', 'no_pages_recently_created' => 'Sie haben bisher keine Seiten angelegt', 'no_pages_recently_updated' => 'Sie haben bisher keine Seiten aktualisiert', diff --git a/resources/lang/de/errors.php b/resources/lang/de/errors.php index c1da9639f..0a21857df 100644 --- a/resources/lang/de/errors.php +++ b/resources/lang/de/errors.php @@ -83,9 +83,9 @@ return [ '404_page_not_found' => 'Seite nicht gefunden', 'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben, wurde nicht gefunden.', 'sorry_page_not_found_permission_warning' => 'Wenn Sie erwartet haben, dass diese Seite existiert, haben Sie möglicherweise nicht die Berechtigung, sie anzuzeigen.', - 'image_not_found' => 'Image Not Found', - 'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.', - 'image_not_found_details' => 'If you expected this image to exist it might have been deleted.', + 'image_not_found' => 'Bild nicht gefunden', + 'image_not_found_subtitle' => 'Entschuldigung. Das Bild, die Sie angefordert haben, wurde nicht gefunden.', + 'image_not_found_details' => 'Wenn Sie erwartet haben, dass dieses Bild existiert, könnte es gelöscht worden sein.', 'return_home' => 'Zurück zur Startseite', 'error_occurred' => 'Es ist ein Fehler aufgetreten', 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.', diff --git a/resources/lang/de_informal/activities.php b/resources/lang/de_informal/activities.php index 50bc29646..abc1971f0 100644 --- a/resources/lang/de_informal/activities.php +++ b/resources/lang/de_informal/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'löscht Bücherregal', 'bookshelf_delete_notification' => 'Das Bücherregal wurde erfolgreich gelöscht', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'kommentiert', 'permissions_update' => 'aktualisierte Berechtigungen', diff --git a/resources/lang/de_informal/common.php b/resources/lang/de_informal/common.php index 84733659e..993d3e70c 100644 --- a/resources/lang/de_informal/common.php +++ b/resources/lang/de_informal/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Entfernen', 'add' => 'Hinzufügen', 'fullscreen' => 'Vollbild', + 'favourite' => 'Favorit', + 'unfavourite' => 'Kein Favorit', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sortieroptionen', diff --git a/resources/lang/de_informal/entities.php b/resources/lang/de_informal/entities.php index 50dea6cf3..f0ab52f20 100644 --- a/resources/lang/de_informal/entities.php +++ b/resources/lang/de_informal/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Bilder', 'my_recent_drafts' => 'Meine kürzlichen Entwürfe', 'my_recently_viewed' => 'Kürzlich von mir angesehen', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Du hast bisher keine Seiten angesehen.', 'no_pages_recently_created' => 'Du hast bisher keine Seiten angelegt.', 'no_pages_recently_updated' => 'Du hast bisher keine Seiten aktualisiert.', diff --git a/resources/lang/en/activities.php b/resources/lang/en/activities.php index fe937b061..5917de2cf 100644 --- a/resources/lang/en/activities.php +++ b/resources/lang/en/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'deleted bookshelf', 'bookshelf_delete_notification' => 'Bookshelf Successfully Deleted', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'commented on', 'permissions_update' => 'updated permissions', diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index 855c1c807..d4508c3c7 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Remove', 'add' => 'Add', 'fullscreen' => 'Fullscreen', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sort Options', diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php index 1661bae57..462402f33 100644 --- a/resources/lang/en/entities.php +++ b/resources/lang/en/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Images', 'my_recent_drafts' => 'My Recent Drafts', 'my_recently_viewed' => 'My Recently Viewed', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'You have not viewed any pages', 'no_pages_recently_created' => 'No pages have been recently created', 'no_pages_recently_updated' => 'No pages have been recently updated', diff --git a/resources/lang/es/activities.php b/resources/lang/es/activities.php index b67781e18..b64ada3a4 100644 --- a/resources/lang/es/activities.php +++ b/resources/lang/es/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'estante eliminado', 'bookshelf_delete_notification' => 'Estante eliminado correctamente', + // Favourites + 'favourite_add_notification' => '".name" ha sido añadido a sus favoritos', + 'favourite_remove_notification' => '".name" ha sido eliminado de sus favoritos', + // Other 'commented_on' => 'comentada el', 'permissions_update' => 'permisos actualizados', diff --git a/resources/lang/es/common.php b/resources/lang/es/common.php index 81cec2b81..d19277402 100644 --- a/resources/lang/es/common.php +++ b/resources/lang/es/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Remover', 'add' => 'Añadir', 'fullscreen' => 'Pantalla completa', + 'favourite' => 'Añadir a favoritos', + 'unfavourite' => 'Eliminar de favoritos', + 'next' => 'Siguiente', + 'previous' => 'Anterior', // Sort Options 'sort_options' => 'Opciones de ordenación', diff --git a/resources/lang/es/entities.php b/resources/lang/es/entities.php index 714f5b928..2478d8689 100644 --- a/resources/lang/es/entities.php +++ b/resources/lang/es/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Imágenes', 'my_recent_drafts' => 'Mis borradores recientes', 'my_recently_viewed' => 'Mis visualizaciones recientes', + 'my_most_viewed_favourites' => 'Mis favoritos más vistos', + 'my_favourites' => 'Mis favoritos', 'no_pages_viewed' => 'No ha visto ninguna página', 'no_pages_recently_created' => 'Ninguna página ha sido creada recientemente', 'no_pages_recently_updated' => 'Ninguna página ha sido actualizada recientemente', diff --git a/resources/lang/es/errors.php b/resources/lang/es/errors.php index 59ad7323b..03e712526 100644 --- a/resources/lang/es/errors.php +++ b/resources/lang/es/errors.php @@ -83,9 +83,9 @@ return [ '404_page_not_found' => 'Página no encontrada', 'sorry_page_not_found' => 'Lo sentimos, la página a la que intenta acceder no pudo ser encontrada.', 'sorry_page_not_found_permission_warning' => 'Si esperaba que esta página existiera, puede que no tenga permiso para verla.', - 'image_not_found' => 'Image Not Found', - 'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.', - 'image_not_found_details' => 'If you expected this image to exist it might have been deleted.', + 'image_not_found' => 'Imagen no encontrada', + 'image_not_found_subtitle' => 'Lo sentimos, no se pudo encontrar el archivo de imagen que estaba buscando.', + 'image_not_found_details' => 'Si esperaba que esta imagen existiera, podría haber sido eliminada.', 'return_home' => 'Volver a la página de inicio', 'error_occurred' => 'Ha ocurrido un error', 'app_down' => 'La aplicación :appName se encuentra caída en este momento', diff --git a/resources/lang/es_AR/activities.php b/resources/lang/es_AR/activities.php index 7c9e22450..0d0cbf7ed 100644 --- a/resources/lang/es_AR/activities.php +++ b/resources/lang/es_AR/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'Estante borrado', 'bookshelf_delete_notification' => 'Estante borrado exitosamente', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'comentado', 'permissions_update' => 'permisos actualizados', diff --git a/resources/lang/es_AR/common.php b/resources/lang/es_AR/common.php index f2d54bea7..dd4c0be4c 100644 --- a/resources/lang/es_AR/common.php +++ b/resources/lang/es_AR/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Remover', 'add' => 'Agregar', 'fullscreen' => 'Pantalla completa', + 'favourite' => 'Añadir a favoritos', + 'unfavourite' => 'Eliminar de favoritos', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Opciones de Orden', diff --git a/resources/lang/es_AR/entities.php b/resources/lang/es_AR/entities.php index ef7e6d25a..e1252b0e2 100644 --- a/resources/lang/es_AR/entities.php +++ b/resources/lang/es_AR/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Imágenes', 'my_recent_drafts' => 'Mis borradores recientes', 'my_recently_viewed' => 'Mis visualizaciones recientes', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Ud. no ha visto ninguna página', 'no_pages_recently_created' => 'Ninguna página ha sido creada recientemente', 'no_pages_recently_updated' => 'Ninguna página ha sido actualizada recientemente', diff --git a/resources/lang/fa/activities.php b/resources/lang/fa/activities.php index fe937b061..5917de2cf 100644 --- a/resources/lang/fa/activities.php +++ b/resources/lang/fa/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'deleted bookshelf', 'bookshelf_delete_notification' => 'Bookshelf Successfully Deleted', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'commented on', 'permissions_update' => 'updated permissions', diff --git a/resources/lang/fa/common.php b/resources/lang/fa/common.php index 855c1c807..d4508c3c7 100644 --- a/resources/lang/fa/common.php +++ b/resources/lang/fa/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Remove', 'add' => 'Add', 'fullscreen' => 'Fullscreen', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sort Options', diff --git a/resources/lang/fa/entities.php b/resources/lang/fa/entities.php index 1661bae57..462402f33 100644 --- a/resources/lang/fa/entities.php +++ b/resources/lang/fa/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Images', 'my_recent_drafts' => 'My Recent Drafts', 'my_recently_viewed' => 'My Recently Viewed', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'You have not viewed any pages', 'no_pages_recently_created' => 'No pages have been recently created', 'no_pages_recently_updated' => 'No pages have been recently updated', diff --git a/resources/lang/fr/activities.php b/resources/lang/fr/activities.php index 8b62bd052..05f741009 100644 --- a/resources/lang/fr/activities.php +++ b/resources/lang/fr/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'a supprimé l\'étagère', 'bookshelf_delete_notification' => 'Étagère supprimée avec succès', + // Favourites + 'favourite_add_notification' => '":name" a été ajouté dans vos favoris', + 'favourite_remove_notification' => '":name" a été supprimé de vos favoris', + // Other 'commented_on' => 'a commenté', 'permissions_update' => 'mettre à jour les autorisations', diff --git a/resources/lang/fr/common.php b/resources/lang/fr/common.php index 5142cdff1..7d3ea6da0 100644 --- a/resources/lang/fr/common.php +++ b/resources/lang/fr/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Enlever', 'add' => 'Ajouter', 'fullscreen' => 'Plein écran', + 'favourite' => 'Favoris', + 'unfavourite' => 'Supprimer des favoris', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Options de tri', diff --git a/resources/lang/fr/entities.php b/resources/lang/fr/entities.php index 56cf6065b..507d630e1 100644 --- a/resources/lang/fr/entities.php +++ b/resources/lang/fr/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Images', 'my_recent_drafts' => 'Mes brouillons récents', 'my_recently_viewed' => 'Vus récemment', + 'my_most_viewed_favourites' => 'Mes Favoris les plus vus', + 'my_favourites' => 'Mes favoris', 'no_pages_viewed' => 'Vous n\'avez rien visité récemment', 'no_pages_recently_created' => 'Aucune page créée récemment', 'no_pages_recently_updated' => 'Aucune page mise à jour récemment', diff --git a/resources/lang/he/activities.php b/resources/lang/he/activities.php index 0babc38d1..dfa543442 100644 --- a/resources/lang/he/activities.php +++ b/resources/lang/he/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'deleted bookshelf', 'bookshelf_delete_notification' => 'מדף הספרים הוסר בהצלחה', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'commented on', 'permissions_update' => 'updated permissions', diff --git a/resources/lang/he/common.php b/resources/lang/he/common.php index 9cbd047fb..3ab175bae 100644 --- a/resources/lang/he/common.php +++ b/resources/lang/he/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'הסר', 'add' => 'הוסף', 'fullscreen' => 'Fullscreen', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sort Options', diff --git a/resources/lang/he/entities.php b/resources/lang/he/entities.php index c8d239bca..a0b4918ae 100644 --- a/resources/lang/he/entities.php +++ b/resources/lang/he/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'תמונות', 'my_recent_drafts' => 'הטיוטות האחרונות שלי', 'my_recently_viewed' => 'הנצפים לאחרונה שלי', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'לא צפית בדפים כלשהם', 'no_pages_recently_created' => 'לא נוצרו דפים לאחרונה', 'no_pages_recently_updated' => 'לא עודכנו דפים לאחרונה', diff --git a/resources/lang/hu/activities.php b/resources/lang/hu/activities.php index 8d22605e3..ff2ddb490 100644 --- a/resources/lang/hu/activities.php +++ b/resources/lang/hu/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'törölte a könyvespolcot:', 'bookshelf_delete_notification' => 'Könyvespolc sikeresen törölve', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'megjegyzést fűzött hozzá:', 'permissions_update' => 'updated permissions', diff --git a/resources/lang/hu/common.php b/resources/lang/hu/common.php index 116f57527..948bbaefd 100644 --- a/resources/lang/hu/common.php +++ b/resources/lang/hu/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Eltávolítás', 'add' => 'Hozzáadás', 'fullscreen' => 'Teljes képernyő', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Rendezési beállítások', diff --git a/resources/lang/hu/entities.php b/resources/lang/hu/entities.php index 293e4ebc4..4d789bfd0 100644 --- a/resources/lang/hu/entities.php +++ b/resources/lang/hu/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Képek', 'my_recent_drafts' => 'Legutóbbi vázlataim', 'my_recently_viewed' => 'Általam legutóbb megtekintett', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Még nincsenek általam megtekintett oldalak', 'no_pages_recently_created' => 'Nincsenek legutóbb létrehozott oldalak', 'no_pages_recently_updated' => 'Nincsenek legutóbb frissített oldalak', diff --git a/resources/lang/id/activities.php b/resources/lang/id/activities.php index 2269cb225..ac3293c1b 100644 --- a/resources/lang/id/activities.php +++ b/resources/lang/id/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'hapus rak buku', 'bookshelf_delete_notification' => 'Rak berhasil dihapus', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'berkomentar pada', 'permissions_update' => 'perbaharui izin', diff --git a/resources/lang/id/common.php b/resources/lang/id/common.php index da8138176..81424b920 100644 --- a/resources/lang/id/common.php +++ b/resources/lang/id/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Hapus', 'add' => 'Tambah', 'fullscreen' => 'Layar Penuh', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sortir Pilihan', diff --git a/resources/lang/id/entities.php b/resources/lang/id/entities.php index 7764c1a3e..4bfc20b6c 100644 --- a/resources/lang/id/entities.php +++ b/resources/lang/id/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Gambar-gambar', 'my_recent_drafts' => 'Draf Terbaru Saya', 'my_recently_viewed' => 'Baru saja saya lihat', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Anda belum melihat halaman apa pun', 'no_pages_recently_created' => 'Tidak ada halaman yang baru saja dibuat', 'no_pages_recently_updated' => 'Tidak ada halaman yang baru-baru ini diperbarui', diff --git a/resources/lang/it/activities.php b/resources/lang/it/activities.php index adf2888fc..7b9561561 100755 --- a/resources/lang/it/activities.php +++ b/resources/lang/it/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'ha eliminato la libreria', 'bookshelf_delete_notification' => 'Libreria Eliminata Correttamente', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'ha commentato in', 'permissions_update' => 'autorizzazioni aggiornate', diff --git a/resources/lang/it/common.php b/resources/lang/it/common.php index f24df1db9..635bf7de5 100755 --- a/resources/lang/it/common.php +++ b/resources/lang/it/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Rimuovi', 'add' => 'Aggiungi', 'fullscreen' => 'Schermo intero', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Opzioni Ordinamento', diff --git a/resources/lang/it/entities.php b/resources/lang/it/entities.php index bf954c950..30bc5768d 100755 --- a/resources/lang/it/entities.php +++ b/resources/lang/it/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Immagini', 'my_recent_drafts' => 'Bozze Recenti', 'my_recently_viewed' => 'Visti di recente', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Non hai visto nessuna pagina', 'no_pages_recently_created' => 'Nessuna pagina è stata creata di recente', 'no_pages_recently_updated' => 'Nessuna pagina è stata aggiornata di recente', diff --git a/resources/lang/ja/activities.php b/resources/lang/ja/activities.php index b1995a654..fd119a304 100644 --- a/resources/lang/ja/activities.php +++ b/resources/lang/ja/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'ブックが削除されました。', 'bookshelf_delete_notification' => '本棚を削除しました', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'コメントする', 'permissions_update' => 'updated permissions', diff --git a/resources/lang/ja/common.php b/resources/lang/ja/common.php index 836b96301..e52da90a1 100644 --- a/resources/lang/ja/common.php +++ b/resources/lang/ja/common.php @@ -40,6 +40,10 @@ return [ 'remove' => '削除', 'add' => '追加', 'fullscreen' => 'Fullscreen', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sort Options', diff --git a/resources/lang/ja/entities.php b/resources/lang/ja/entities.php index 8760b25a3..6515305e4 100644 --- a/resources/lang/ja/entities.php +++ b/resources/lang/ja/entities.php @@ -27,6 +27,8 @@ return [ 'images' => '画像', 'my_recent_drafts' => '最近の下書き', 'my_recently_viewed' => '閲覧履歴', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'なにもページを閲覧していません', 'no_pages_recently_created' => '最近作成されたページはありません', 'no_pages_recently_updated' => '最近更新されたページはありません。', diff --git a/resources/lang/ko/activities.php b/resources/lang/ko/activities.php index 2762c7eb4..ed0b66112 100644 --- a/resources/lang/ko/activities.php +++ b/resources/lang/ko/activities.php @@ -43,7 +43,11 @@ return [ 'bookshelf_delete' => '삭제된 서가', 'bookshelf_delete_notification' => '서가 지움', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => '댓글 쓰기', - 'permissions_update' => '업데이트된 권한', + 'permissions_update' => 'updated permissions', ]; diff --git a/resources/lang/ko/common.php b/resources/lang/ko/common.php index 3c40f12e2..3cc46ab49 100644 --- a/resources/lang/ko/common.php +++ b/resources/lang/ko/common.php @@ -40,6 +40,10 @@ return [ 'remove' => '제거', 'add' => '추가', 'fullscreen' => '전체화면', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => '정렬 기준', @@ -74,9 +78,9 @@ return [ // Layout tabs 'tab_info' => '정보', - 'tab_info_label' => '탭: 보조 정보 표시', + 'tab_info_label' => 'Tab: Show Secondary Information', 'tab_content' => '내용', - 'tab_content_label' => '탭: 주요 내용 표시', + 'tab_content_label' => 'Tab: Show Primary Content', // Email Content 'email_action_help' => ':actionText를 클릭할 수 없을 때는 웹 브라우저에서 다음 링크로 접속할 수 있습니다.', @@ -84,6 +88,6 @@ return [ // Footer Link Options // Not directly used but available for convenience to users. - 'privacy_policy' => '개인정보처리방침', - 'terms_of_service' => '이용약관', + 'privacy_policy' => 'Privacy Policy', + 'terms_of_service' => 'Terms of Service', ]; diff --git a/resources/lang/ko/entities.php b/resources/lang/ko/entities.php index 94a62c67a..e286fee8c 100644 --- a/resources/lang/ko/entities.php +++ b/resources/lang/ko/entities.php @@ -27,6 +27,8 @@ return [ 'images' => '이미지', 'my_recent_drafts' => '내 최근의 초안 문서', 'my_recently_viewed' => '내가 읽은 문서', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => '문서 없음', 'no_pages_recently_created' => '문서 없음', 'no_pages_recently_updated' => '문서 없음', @@ -149,7 +151,7 @@ return [ 'chapters_create' => '챕터 만들기', 'chapters_delete' => '챕터 삭제하기', 'chapters_delete_named' => ':chapterName(을)를 지웁니다.', - 'chapters_delete_explain' => '\':chapterName\'(을)를 지웁니다. 해당 챕터에 있는 모든 문서도 삭제됩니다.', + 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.', 'chapters_delete_confirm' => '이 챕터를 지울 건가요?', 'chapters_edit' => '챕터 바꾸기', 'chapters_edit_named' => ':chapterName 바꾸기', @@ -211,7 +213,7 @@ return [ 'pages_revisions' => '문서 수정본', 'pages_revisions_named' => ':pageName 수정본', 'pages_revision_named' => ':pageName 수정본', - 'pages_revision_restored_from' => '#:id 에서; :summary 복원', + 'pages_revision_restored_from' => 'Restored from #:id; :summary', 'pages_revisions_created_by' => '만든 사용자', 'pages_revisions_date' => '수정한 날짜', 'pages_revisions_number' => 'No.', diff --git a/resources/lang/lv/activities.php b/resources/lang/lv/activities.php index 8f99e0ff6..e424efa1d 100644 --- a/resources/lang/lv/activities.php +++ b/resources/lang/lv/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'izdzēsa plauktu', 'bookshelf_delete_notification' => 'Plaukts Veiksmīgi Dzēsts', + // Favourites + 'favourite_add_notification' => '":name" ir pievienots jūsu favorītiem', + 'favourite_remove_notification' => '":name" ir izņemts no jūsu favorītiem', + // Other 'commented_on' => 'komentēts', 'permissions_update' => 'atjaunoja atļaujas', diff --git a/resources/lang/lv/common.php b/resources/lang/lv/common.php index 00664318e..2c94f8c41 100644 --- a/resources/lang/lv/common.php +++ b/resources/lang/lv/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Noņemt', 'add' => 'Pievienot', 'fullscreen' => 'Pilnekrāns', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Kārtošanas Opcijas', diff --git a/resources/lang/lv/entities.php b/resources/lang/lv/entities.php index 2639e225f..74643da0e 100644 --- a/resources/lang/lv/entities.php +++ b/resources/lang/lv/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Attēli', 'my_recent_drafts' => 'Mani melnraksti', 'my_recently_viewed' => 'Mani nesen skatītie', + 'my_most_viewed_favourites' => 'Mani visvairāk skatītie favorīti', + 'my_favourites' => 'Mani favorīti', 'no_pages_viewed' => 'Neviena lapa vēl nav skatīta', 'no_pages_recently_created' => 'Nav radīta neviena lapa', 'no_pages_recently_updated' => 'Nav atjaunināta neviena lapa', @@ -219,7 +221,7 @@ return [ 'pages_revisions_numbered_changes' => 'Revīzijas #:id izmaiņas', 'pages_revisions_changelog' => 'Izmaiņu žurnāls', 'pages_revisions_changes' => 'Izmaiņas', - 'pages_revisions_current' => 'Tekošā versija', + 'pages_revisions_current' => 'Pašreizējā versija', 'pages_revisions_preview' => 'Priekšskatījums', 'pages_revisions_restore' => 'Atjaunot', 'pages_revisions_none' => 'Šai lapai nav revīziju', @@ -314,7 +316,7 @@ return [ // Revision 'revision_delete_confirm' => 'Vai esat pārliecināts, ka vēlaties dzēst šo revīziju?', - 'revision_restore_confirm' => 'Vai esat pārliecināts, ka vēlaties atjaunot šo revīziju? Tekošais lapas saturs tiks aizstāts.', + 'revision_restore_confirm' => 'Vai tiešām vēlaties atjaunot šo revīziju? Pašreizējais lapas saturs tiks aizvietots.', 'revision_delete_success' => 'Revīzija dzēsta', - 'revision_cannot_delete_latest' => 'Nevar dzēst tekošo revīziju.' + 'revision_cannot_delete_latest' => 'Nevar dzēst pašreizējo revīziju.' ]; diff --git a/resources/lang/lv/errors.php b/resources/lang/lv/errors.php index 74c797d46..c1746d65a 100644 --- a/resources/lang/lv/errors.php +++ b/resources/lang/lv/errors.php @@ -83,9 +83,9 @@ return [ '404_page_not_found' => 'Lapa nav atrasta', 'sorry_page_not_found' => 'Atvainojiet, meklētā lapa nav atrasta.', 'sorry_page_not_found_permission_warning' => 'Ja šai lapai būtu bijis te jābūt, jums var nebūt pietiekamas piekļuves tiesības, lai to apskatītu.', - 'image_not_found' => 'Image Not Found', - 'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.', - 'image_not_found_details' => 'If you expected this image to exist it might have been deleted.', + 'image_not_found' => 'Attēls nav atrasts', + 'image_not_found_subtitle' => 'Atvainojiet, meklētais attēla fails nav atrasts.', + 'image_not_found_details' => 'Ja attēlam būtu jābūt pieejamam, iespējams, tas ir ticis izdzēsts.', 'return_home' => 'Atgriezties uz sākumu', 'error_occurred' => 'Radusies kļūda', 'app_down' => ':appName pagaidām nav pieejams', diff --git a/resources/lang/nb/activities.php b/resources/lang/nb/activities.php index bf23393ab..12d0dba62 100644 --- a/resources/lang/nb/activities.php +++ b/resources/lang/nb/activities.php @@ -44,6 +44,10 @@ return [ 'bookshelf_delete' => 'slettet bokhylle', 'bookshelf_delete_notification' => 'Bokhyllen ble slettet', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'kommenterte på', 'permissions_update' => 'oppdaterte tilganger', diff --git a/resources/lang/nb/common.php b/resources/lang/nb/common.php index 6d87e5439..3aadd805a 100644 --- a/resources/lang/nb/common.php +++ b/resources/lang/nb/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Fjern', 'add' => 'Legg til', 'fullscreen' => 'Fullskjerm', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sorteringsalternativer', diff --git a/resources/lang/nb/entities.php b/resources/lang/nb/entities.php index 9ce2d3cd1..0b3d1b416 100644 --- a/resources/lang/nb/entities.php +++ b/resources/lang/nb/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Bilder', 'my_recent_drafts' => 'Mine nylige utkast', 'my_recently_viewed' => 'Mine nylige visninger', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Du har ikke sett på noen sider', 'no_pages_recently_created' => 'Ingen sider har nylig blitt opprettet', 'no_pages_recently_updated' => 'Ingen sider har nylig blitt oppdatert', diff --git a/resources/lang/nl/activities.php b/resources/lang/nl/activities.php index f8fb2c345..fcbad2400 100644 --- a/resources/lang/nl/activities.php +++ b/resources/lang/nl/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'verwijderde boekenplank', 'bookshelf_delete_notification' => 'Boekenplank succesvol verwijderd', + // Favourites + 'favourite_add_notification' => '":name" is toegevoegd aan je favorieten', + 'favourite_remove_notification' => '":name" is verwijderd uit je favorieten', + // Other 'commented_on' => 'reageerde op', 'permissions_update' => 'wijzigde permissies', diff --git a/resources/lang/nl/common.php b/resources/lang/nl/common.php index cfdc1a1a5..7b0d4de3c 100644 --- a/resources/lang/nl/common.php +++ b/resources/lang/nl/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Verwijderen', 'add' => 'Toevoegen', 'fullscreen' => 'Volledig scherm', + 'favourite' => 'Favoriet', + 'unfavourite' => 'Verwijderen uit favoriet', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sorteeropties', diff --git a/resources/lang/nl/entities.php b/resources/lang/nl/entities.php index aac4863cb..eecdfd589 100644 --- a/resources/lang/nl/entities.php +++ b/resources/lang/nl/entities.php @@ -7,44 +7,46 @@ return [ // Shared 'recently_created' => 'Recent aangemaakt', - 'recently_created_pages' => 'Recent Aangemaakte Pagina\'s', - 'recently_updated_pages' => 'Recent Bijgewerkte Pagina\'s', - 'recently_created_chapters' => 'Recent Aangemaakte Hoofdstukken', - 'recently_created_books' => 'Recent Aangemaakte Boeken', - 'recently_created_shelves' => 'Recent Aangemaakte Boekenplanken', - 'recently_update' => 'Recent Bijgewerkt', - 'recently_viewed' => 'Recent Bekeken', - 'recent_activity' => 'Recente Activiteit', - 'create_now' => 'Maak er zelf één', + 'recently_created_pages' => 'Recent aangemaakte pagina\'s', + 'recently_updated_pages' => 'Recent bijgewerkte pagina\'s', + 'recently_created_chapters' => 'Recent aangemaakte hoofdstukken', + 'recently_created_books' => 'Recent aangemaakte boeken', + 'recently_created_shelves' => 'Recent aangemaakte boekenplanken', + 'recently_update' => 'Recent bijgewerkt', + 'recently_viewed' => 'Recent bekeken', + 'recent_activity' => 'Recente activiteit', + 'create_now' => 'Maak er nu één', 'revisions' => 'Revisies', 'meta_revision' => 'Revisie #:revisionCount', 'meta_created' => 'Aangemaakt :timeLength', 'meta_created_name' => 'Aangemaakt: :timeLength door :user', - 'meta_updated' => ':timeLength Aangepast', + 'meta_updated' => 'Aangepast: :timeLength', 'meta_updated_name' => 'Aangepast: :timeLength door :user', 'meta_owned_name' => 'Eigendom van :user', - 'entity_select' => 'Entiteit Selecteren', + 'entity_select' => 'Entiteit selecteren', 'images' => 'Afbeeldingen', - 'my_recent_drafts' => 'Mijn Concepten', - 'my_recently_viewed' => 'Mijn Recent Bekeken', + 'my_recent_drafts' => 'Mijn concepten', + 'my_recently_viewed' => 'Mijn recent bekeken', + 'my_most_viewed_favourites' => 'Mijn meest bekeken favorieten', + 'my_favourites' => 'Mijn favorieten', 'no_pages_viewed' => 'Je hebt nog niets bekeken', 'no_pages_recently_created' => 'Er zijn geen recent aangemaakte pagina\'s', 'no_pages_recently_updated' => 'Er zijn geen recente wijzigingen', 'export' => 'Exporteren', - 'export_html' => 'Ingesloten Webbestand', - 'export_pdf' => 'PDF Bestand', - 'export_text' => 'Normaal Tekstbestand', + 'export_html' => 'Ingesloten webbestand', + 'export_pdf' => 'PDF bestand', + 'export_text' => 'Normaal tekstbestand', // Permissions and restrictions 'permissions' => 'Permissies', 'permissions_intro' => 'Als je dit aanzet, dan gelden rol-permissies niet meer voor deze pagina.', - 'permissions_enable' => 'Custom Permissies Aanzetten', - 'permissions_save' => 'Permissies Opslaan', + 'permissions_enable' => 'Aangepaste permissies aanzetten', + 'permissions_save' => 'Permissies opslaan', 'permissions_owner' => 'Eigenaar', // Search 'search_results' => 'Zoekresultaten', - 'search_total_results_found' => ':count resultaten gevonden|:count resultaten gevonden', + 'search_total_results_found' => ':count resultaten gevonden|:count totaal aantal resultaten gevonden', 'search_clear' => 'Zoekopdracht wissen', 'search_no_pages' => 'Er zijn geen pagina\'s gevonden', 'search_for_term' => 'Zoeken op :term', @@ -52,16 +54,16 @@ return [ 'search_advanced' => 'Uitgebreid zoeken', 'search_terms' => 'Zoektermen', 'search_content_type' => 'Inhoudstype', - 'search_exact_matches' => 'Exacte Matches', + 'search_exact_matches' => 'Exacte matches', 'search_tags' => 'Zoek tags', 'search_options' => 'Opties', 'search_viewed_by_me' => 'Bekeken door mij', 'search_not_viewed_by_me' => 'Niet bekeken door mij', - 'search_permissions_set' => 'Permissies gezet', + 'search_permissions_set' => 'Permissies ingesteld', 'search_created_by_me' => 'Door mij gemaakt', 'search_updated_by_me' => 'Door mij geupdate', 'search_owned_by_me' => 'Eigendom van mij', - 'search_date_options' => 'Datum Opties', + 'search_date_options' => 'Datum opties', 'search_updated_before' => 'Geupdate voor', 'search_updated_after' => 'Geupdate na', 'search_created_before' => 'Gecreëerd voor', @@ -76,156 +78,156 @@ return [ 'shelves_long' => 'Boekenplanken', 'shelves_empty' => 'Er zijn geen boekenplanken aangemaakt', 'shelves_create' => 'Nieuwe boekenplank maken', - 'shelves_popular' => 'Populaire Boekenplanken', + 'shelves_popular' => 'Populaire boekenplanken', 'shelves_new' => 'Nieuwe boekenplanken', 'shelves_new_action' => 'Nieuwe boekenplank', 'shelves_popular_empty' => 'De meest populaire boekenplanken worden hier weergegeven.', 'shelves_new_empty' => 'De meest recent aangemaakt boekenplanken worden hier weergeven.', - 'shelves_save' => 'Boekenplanken Opslaan', + 'shelves_save' => 'Boekenplank opslaan', 'shelves_books' => 'Boeken op deze plank', - 'shelves_add_books' => 'Toevoegen boeken aan deze plank', - 'shelves_drag_books' => 'Sleep boeken hier naartoe om deze toe te voegen aan deze plank', + 'shelves_add_books' => 'Voeg boeken toe aan deze plank', + 'shelves_drag_books' => 'Sleep boeken hiernaartoe om deze toe te voegen aan deze plank', 'shelves_empty_contents' => 'Er zijn geen boeken aan deze plank toegekend', 'shelves_edit_and_assign' => 'Bewerk boekenplank om boeken toe te kennen.', - 'shelves_edit_named' => 'Bewerk Boekenplank :name', - 'shelves_edit' => 'Bewerk Boekenplank', - 'shelves_delete' => 'Verwijder Boekenplank', - 'shelves_delete_named' => 'Verwijder Boekenplank :name', + 'shelves_edit_named' => 'Bewerk boekenplank :name', + 'shelves_edit' => 'Bewerk boekenplank', + 'shelves_delete' => 'Verwijder boekenplank', + 'shelves_delete_named' => 'Verwijder boekenplank :name', 'shelves_delete_explain' => "Deze actie verwijdert de boekenplank met naam ':name'. De boeken op deze plank worden niet verwijderd.", 'shelves_delete_confirmation' => 'Weet je zeker dat je deze boekenplank wilt verwijderen?', - 'shelves_permissions' => 'Boekenplank Permissies', - 'shelves_permissions_updated' => 'Boekenplank Permissies Opgeslagen', - 'shelves_permissions_active' => 'Boekenplank Permissies Actief', - 'shelves_copy_permissions_to_books' => 'Kopieer Permissies naar Boeken', - 'shelves_copy_permissions' => 'Kopieer Permissies', - 'shelves_copy_permissions_explain' => 'Met deze actie worden de permissies van deze boekenplank gekopieerd naar alle boeken op de plank. Voordat deze actie wordt uitgevoerd, zorg dat de wijzigingen in de permissies van deze boekenplank zijn opgeslagen.', - 'shelves_copy_permission_success' => 'Boekenplank permissies gekopieerd naar :count boeken', + 'shelves_permissions' => 'Boekenplank permissies', + 'shelves_permissions_updated' => 'Boekenplank permissies opgeslagen', + 'shelves_permissions_active' => 'Boekenplank permissies actief', + 'shelves_copy_permissions_to_books' => 'Kopieer permissies naar boeken', + 'shelves_copy_permissions' => 'Kopieer permissies', + 'shelves_copy_permissions_explain' => 'Met deze actie worden de permissies van deze boekenplank gekopieërd naar alle boeken op de plank. Voordat deze actie wordt uitgevoerd, zorg dat de wijzigingen in de permissies van deze boekenplank zijn opgeslagen.', + 'shelves_copy_permission_success' => 'Boekenplank permissies gekopieërd naar :count boeken', // Books 'book' => 'Boek', 'books' => 'Boeken', 'x_books' => ':count Boek|:count Boeken', 'books_empty' => 'Er zijn geen boeken aangemaakt', - 'books_popular' => 'Populaire Boeken', - 'books_recent' => 'Recente Boeken', + 'books_popular' => 'Populaire boeken', + 'books_recent' => 'Recente boeken', 'books_new' => 'Nieuwe boeken', 'books_new_action' => 'Nieuw boek', 'books_popular_empty' => 'De meest populaire boeken worden hier weergegeven.', 'books_new_empty' => 'De meest recent aangemaakte boeken verschijnen hier.', 'books_create' => 'Nieuw boek maken', - 'books_delete' => 'Boek Verwijderen', - 'books_delete_named' => 'Verwijder Boek :bookName', + 'books_delete' => 'Boek verwijderen', + 'books_delete_named' => 'Verwijder boek :bookName', 'books_delete_explain' => 'Deze actie verwijdert het boek \':bookName\', Alle pagina\'s en hoofdstukken worden verwijderd.', 'books_delete_confirmation' => 'Weet je zeker dat je dit boek wilt verwijderen?', - 'books_edit' => 'Boek Bewerken', - 'books_edit_named' => 'Bewerkt Boek :bookName', - 'books_form_book_name' => 'Boek Naam', - 'books_save' => 'Boek Opslaan', - 'books_permissions' => 'Boek Permissies', - 'books_permissions_updated' => 'Boek Permissies Opgeslagen', - 'books_empty_contents' => 'Er zijn nog een hoofdstukken en pagina\'s voor dit boek gemaakt.', + 'books_edit' => 'Boek bewerken', + 'books_edit_named' => 'Bewerk boek :bookName', + 'books_form_book_name' => 'Boek naam', + 'books_save' => 'Boek opslaan', + 'books_permissions' => 'Boek permissies', + 'books_permissions_updated' => 'Boek permissies opgeslagen', + 'books_empty_contents' => 'Er zijn nog geen hoofdstukken en pagina\'s voor dit boek gemaakt.', 'books_empty_create_page' => 'Nieuwe pagina maken', 'books_empty_sort_current_book' => 'Boek sorteren', - 'books_empty_add_chapter' => 'Hoofdstuk Toevoegen', - 'books_permissions_active' => 'Boek Permissies Actief', + 'books_empty_add_chapter' => 'Hoofdstuk toevoegen', + 'books_permissions_active' => 'Boek permissies actief', 'books_search_this' => 'Zoeken in dit boek', - 'books_navigation' => 'Boek Navigatie', + 'books_navigation' => 'Boek navigatie', 'books_sort' => 'Inhoud van het boek sorteren', - 'books_sort_named' => 'Sorteer Boek :bookName', - 'books_sort_name' => 'Sorteren op Naam', + 'books_sort_named' => 'Sorteer boek :bookName', + 'books_sort_name' => 'Sorteren op naam', 'books_sort_created' => 'Sorteren op datum van aanmaken', 'books_sort_updated' => 'Sorteren op datum van bijgewerkt', 'books_sort_chapters_first' => 'Hoofdstukken eerst', - 'books_sort_chapters_last' => 'Hoofdstukken Laatst', - 'books_sort_show_other' => 'Bekijk Andere Boeken', + 'books_sort_chapters_last' => 'Hoofdstukken laatst', + 'books_sort_show_other' => 'Bekijk andere boeken', 'books_sort_save' => 'Nieuwe volgorde opslaan', // Chapters 'chapter' => 'Hoofdstuk', 'chapters' => 'Hoofdstukken', 'x_chapters' => ':count Hoofdstuk|:count Hoofdstukken', - 'chapters_popular' => 'Populaire Hoofdstukken', + 'chapters_popular' => 'Populaire hoofdstukken', 'chapters_new' => 'Nieuw hoofdstuk', 'chapters_create' => 'Nieuw hoofdstuk maken', - 'chapters_delete' => 'Hoofdstuk Verwijderen', - 'chapters_delete_named' => 'Verwijder Hoofdstuk :chapterName', + 'chapters_delete' => 'Hoofdstuk verwijderen', + 'chapters_delete_named' => 'Verwijder hoofdstuk :chapterName', 'chapters_delete_explain' => 'Dit verwijdert het hoofdstuk met de naam \':chapterName\'. Alle pagina\'s die binnen dit hoofdstuk staan, worden ook verwijderd.', 'chapters_delete_confirm' => 'Weet je zeker dat je dit boek wilt verwijderen?', - 'chapters_edit' => 'Hoofdstuk Aanpassen', - 'chapters_edit_named' => 'Hoofdstuk :chapterName Aanpassen', - 'chapters_save' => 'Hoofdstuk Opslaan', - 'chapters_move' => 'Hoofdstuk Verplaatsen', - 'chapters_move_named' => 'Verplaatst Hoofdstuk :chapterName', - 'chapter_move_success' => 'Hoofdstuk Verplaatst Naar :bookName', - 'chapters_permissions' => 'Hoofdstuk Permissies', + 'chapters_edit' => 'Hoofdstuk aanpassen', + 'chapters_edit_named' => 'Hoofdstuk :chapterName aanpassen', + 'chapters_save' => 'Hoofdstuk opslaan', + 'chapters_move' => 'Hoofdstuk verplaatsen', + 'chapters_move_named' => 'Verplaatst hoofdstuk :chapterName', + 'chapter_move_success' => 'Hoofdstuk verplaatst naar :bookName', + 'chapters_permissions' => 'Hoofdstuk permissies', 'chapters_empty' => 'Er zijn geen pagina\'s in dit hoofdstuk aangemaakt.', - 'chapters_permissions_active' => 'Hoofdstuk Permissies Actief', - 'chapters_permissions_success' => 'Hoofdstuk Permissies Bijgewerkt', + 'chapters_permissions_active' => 'Hoofdstuk permissies actief', + 'chapters_permissions_success' => 'Hoofdstuk permissies bijgewerkt', 'chapters_search_this' => 'Doorzoek dit hoofdstuk', // Pages 'page' => 'Pagina', 'pages' => 'Pagina\'s', 'x_pages' => ':count Pagina|:count Pagina\'s', - 'pages_popular' => 'Populaire Pagina\'s', + 'pages_popular' => 'Populaire pagina\'s', 'pages_new' => 'Nieuwe pagina', 'pages_attachments' => 'Bijlages', - 'pages_navigation' => 'Pagina Navigatie', - 'pages_delete' => 'Pagina Verwijderen', - 'pages_delete_named' => 'Verwijderde Pagina :pageName', - 'pages_delete_draft_named' => 'Verwijderde Conceptpagina :pageName', - 'pages_delete_draft' => 'Verwijder Conceptpagina', + 'pages_navigation' => 'Pagina navigatie', + 'pages_delete' => 'Pagina verwijderen', + 'pages_delete_named' => 'Verwijderd pagina :pageName', + 'pages_delete_draft_named' => 'Verwijder concept pagina :pageName', + 'pages_delete_draft' => 'Verwijder concept pagina', 'pages_delete_success' => 'Pagina verwijderd', 'pages_delete_draft_success' => 'Concept verwijderd', 'pages_delete_confirm' => 'Weet je zeker dat je deze pagina wilt verwijderen?', 'pages_delete_draft_confirm' => 'Weet je zeker dat je dit concept wilt verwijderen?', - 'pages_editing_named' => 'Pagina :pageName Bewerken', - 'pages_edit_draft_options' => 'Concept Opties', + 'pages_editing_named' => 'Pagina :pageName bewerken', + 'pages_edit_draft_options' => 'Concept opties', 'pages_edit_save_draft' => 'Concept opslaan', - 'pages_edit_draft' => 'Paginaconcept Bewerken', - 'pages_editing_draft' => 'Concept Bewerken', - 'pages_editing_page' => 'Concept Bewerken', + 'pages_edit_draft' => 'Paginaconcept bewerken', + 'pages_editing_draft' => 'Concept bewerken', + 'pages_editing_page' => 'Concept bewerken', 'pages_edit_draft_save_at' => 'Concept opgeslagen op ', - 'pages_edit_delete_draft' => 'Concept Verwijderen', - 'pages_edit_discard_draft' => 'Concept Verwijderen', + 'pages_edit_delete_draft' => 'Concept verwijderen', + 'pages_edit_discard_draft' => 'Concept verwijderen', 'pages_edit_set_changelog' => 'Changelog', 'pages_edit_enter_changelog_desc' => 'Geef een korte omschrijving van de wijzingen die je gemaakt hebt.', - 'pages_edit_enter_changelog' => 'Zie logboek', - 'pages_save' => 'Pagina Opslaan', - 'pages_title' => 'Pagina Titel', - 'pages_name' => 'Pagina Naam', - 'pages_md_editor' => 'Bewerker', + 'pages_edit_enter_changelog' => 'Zie changelog', + 'pages_save' => 'Pagina opslaan', + 'pages_title' => 'Pagina titel', + 'pages_name' => 'Pagina naam', + 'pages_md_editor' => 'Bewerken', 'pages_md_preview' => 'Voorbeeld', - 'pages_md_insert_image' => 'Afbeelding Invoegen', - 'pages_md_insert_link' => 'Entity Link Invoegen', - 'pages_md_insert_drawing' => 'Tekening Toevoegen', + 'pages_md_insert_image' => 'Afbeelding invoegen', + 'pages_md_insert_link' => 'Entity link invoegen', + 'pages_md_insert_drawing' => 'Tekening invoegen', 'pages_not_in_chapter' => 'Deze pagina staat niet in een hoofdstuk', - 'pages_move' => 'Pagina Verplaatsten', + 'pages_move' => 'Pagina verplaatsten', 'pages_move_success' => 'Pagina verplaatst naar ":parentName"', - 'pages_copy' => 'Pagina Kopiëren', - 'pages_copy_desination' => 'Kopieerbestemming', - 'pages_copy_success' => 'Pagina succesvol gekopieerd', - 'pages_permissions' => 'Pagina Permissies', - 'pages_permissions_success' => 'Pagina Permissies bijgwerkt', + 'pages_copy' => 'Pagina kopiëren', + 'pages_copy_desination' => 'Kopieër bestemming', + 'pages_copy_success' => 'Pagina succesvol gekopieërd', + 'pages_permissions' => 'Pagina permissies', + 'pages_permissions_success' => 'Pagina permissies bijgewerkt', 'pages_revision' => 'Revisie', - 'pages_revisions' => 'Pagina Revisies', - 'pages_revisions_named' => 'Pagina Revisies voor :pageName', - 'pages_revision_named' => 'Pagina Revisie voor :pageName', + 'pages_revisions' => 'Pagina revisies', + 'pages_revisions_named' => 'Pagina revisies voor :pageName', + 'pages_revision_named' => 'Pagina revisie voor :pageName', 'pages_revision_restored_from' => 'Hersteld van #:id; :samenvatting', 'pages_revisions_created_by' => 'Aangemaakt door', 'pages_revisions_date' => 'Revisiedatum', 'pages_revisions_number' => '#', 'pages_revisions_numbered' => 'Revisie #:id', - 'pages_revisions_numbered_changes' => 'Revisie #:id Wijzigingen', - 'pages_revisions_changelog' => 'Wijzigingslogboek', + 'pages_revisions_numbered_changes' => 'Revisie #:id wijzigingen', + 'pages_revisions_changelog' => 'Changelog', 'pages_revisions_changes' => 'Wijzigingen', - 'pages_revisions_current' => 'Huidige Versie', + 'pages_revisions_current' => 'Huidige versie', 'pages_revisions_preview' => 'Voorbeeld', 'pages_revisions_restore' => 'Herstellen', 'pages_revisions_none' => 'Deze pagina heeft geen revisies', - 'pages_copy_link' => 'Link Kopiëren', + 'pages_copy_link' => 'Link kopiëren', 'pages_edit_content_link' => 'Bewerk inhoud', - 'pages_permissions_active' => 'Pagina Permissies Actief', + 'pages_permissions_active' => 'Pagina permissies actief', 'pages_initial_revision' => 'Eerste publicatie', 'pages_initial_name' => 'Nieuwe pagina', 'pages_editing_draft_notification' => 'U bewerkt momenteel een concept dat voor het laatst is opgeslagen op :timeDiff.', @@ -237,40 +239,40 @@ return [ 'time_b' => 'in de laatste :minCount minuten', 'message' => ':start :time. Let op om elkaars updates niet te overschrijven!', ], - 'pages_draft_discarded' => 'Concept verwijderd, de editor is bijgewerkt met de huidige pagina-inhoud', - 'pages_specific' => 'Specifieke Pagina', + 'pages_draft_discarded' => 'Concept verwijderd, de editor is bijgewerkt met de huidige paginainhoud', + 'pages_specific' => 'Specifieke pagina', 'pages_is_template' => 'Paginasjabloon', // Editor Sidebar 'page_tags' => 'Pagina Labels', - 'chapter_tags' => 'Tags van Hoofdstuk', - 'book_tags' => 'Tags van Boeken', - 'shelf_tags' => 'Tags van Boekplanken', + 'chapter_tags' => 'Labels van hoofdstuk', + 'book_tags' => 'Labels van boeken', + 'shelf_tags' => 'Labels van boekenplanken', 'tag' => 'Label', - 'tags' => 'Tags', - 'tag_name' => 'Naam Tag', - 'tag_value' => 'Label Waarde (Optioneel)', + 'tags' => 'Labels', + 'tag_name' => 'Naam label', + 'tag_value' => 'Labelwaarde (Optioneel)', 'tags_explain' => "Voeg labels toe om de inhoud te categoriseren. \n Je kunt meerdere labels toevoegen.", 'tags_add' => 'Voeg een extra label toe', - 'tags_remove' => 'Deze tag verwijderen', + 'tags_remove' => 'Dit label verwijderen', 'attachments' => 'Bijlages', 'attachments_explain' => 'Upload bijlages of voeg een link toe. Deze worden zichtbaar in het navigatiepaneel.', 'attachments_explain_instant_save' => 'Wijzigingen worden meteen opgeslagen.', 'attachments_items' => 'Bijlages', - 'attachments_upload' => 'Bestand Uploaden', - 'attachments_link' => 'Link Toevoegen', - 'attachments_set_link' => 'Zet Link', + 'attachments_upload' => 'Bestand uploaden', + 'attachments_link' => 'Link toevoegen', + 'attachments_set_link' => 'Zet link', 'attachments_delete' => 'Weet u zeker dat u deze bijlage wilt verwijderen?', 'attachments_dropzone' => 'Sleep hier een bestand of klik hier om een bestand toe te voegen', 'attachments_no_files' => 'Er zijn geen bestanden geüpload', 'attachments_explain_link' => 'Je kunt een link toevoegen als je geen bestanden wilt uploaden. Dit kan een link naar een andere pagina op deze website zijn, maar ook een link naar een andere website.', - 'attachments_link_name' => 'Link Naam', + 'attachments_link_name' => 'Link naam', 'attachment_link' => 'Bijlage link', 'attachments_link_url' => 'Link naar bestand', - 'attachments_link_url_hint' => 'Url, site of bestand', + 'attachments_link_url_hint' => 'URL van site of bestand', 'attach' => 'Koppelen', 'attachments_insert_link' => 'Bijlage link toevoegen aan pagina', - 'attachments_edit_file' => 'Bestand Bewerken', + 'attachments_edit_file' => 'Bestand bewerken', 'attachments_edit_file_name' => 'Bestandsnaam', 'attachments_edit_drop_upload' => 'Sleep een bestand of klik hier om te uploaden en te overschrijven', 'attachments_order_updated' => 'De volgorde van de bijlages is bijgewerkt', @@ -297,7 +299,7 @@ return [ // Comments 'comment' => 'Reactie', 'comments' => 'Reacties', - 'comment_add' => 'Reactie Toevoegen', + 'comment_add' => 'Reactie toevoegen', 'comment_placeholder' => 'Laat hier een reactie achter', 'comment_count' => '{0} Geen reacties|{1} 1 Reactie|[2,*] :count Reacties', 'comment_save' => 'Sla reactie op', @@ -309,7 +311,7 @@ return [ 'comment_deleted_success' => 'Reactie verwijderd', 'comment_created_success' => 'Reactie toegevoegd', 'comment_updated_success' => 'Reactie bijgewerkt', - 'comment_delete_confirm' => 'Zeker reactie verwijderen?', + 'comment_delete_confirm' => 'Weet je zeker dat je deze reactie wilt verwijderen?', 'comment_in_reply_to' => 'Antwoord op :commentId', // Revision diff --git a/resources/lang/nl/errors.php b/resources/lang/nl/errors.php index 323115b52..751831473 100644 --- a/resources/lang/nl/errors.php +++ b/resources/lang/nl/errors.php @@ -23,7 +23,7 @@ return [ 'saml_no_email_address' => 'Kan geen e-mailadres voor deze gebruiker vinden in de gegevens die door het externe verificatiesysteem worden verstrekt', 'saml_invalid_response_id' => 'Het verzoek van het externe verificatiesysteem is niet herkend door een door deze applicatie gestart proces. Het terug navigeren na een login kan dit probleem veroorzaken.', 'saml_fail_authed' => 'Inloggen met :system mislukt, het systeem gaf geen succesvolle autorisatie', - 'social_no_action_defined' => 'Geen actie gedefineerd', + 'social_no_action_defined' => 'Geen actie gedefineërd', 'social_login_bad_response' => "Fout ontvangen tijdens :socialAccount login: \n:error", 'social_account_in_use' => 'Dit :socialAccount account is al in gebruik, Probeer in te loggen met de :socialAccount optie.', 'social_account_email_in_use' => 'Het e-mailadres :email is al in gebruik. Als je al een account hebt kun je een :socialAccount account verbinden met je profielinstellingen.', @@ -83,9 +83,9 @@ return [ '404_page_not_found' => 'Pagina Niet Gevonden', 'sorry_page_not_found' => 'Sorry, de pagina die je zocht is niet beschikbaar.', 'sorry_page_not_found_permission_warning' => 'Als u verwacht dat deze pagina bestaat heeft u misschien geen rechten om het te bekijken.', - 'image_not_found' => 'Image Not Found', - 'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.', - 'image_not_found_details' => 'If you expected this image to exist it might have been deleted.', + 'image_not_found' => 'Afbeelding niet gevonden', + 'image_not_found_subtitle' => 'Sorry, de afbeelding die je zocht is niet beschikbaar.', + 'image_not_found_details' => 'Als u verwachtte dat deze afbeelding zou bestaan, dan is deze misschien verwijderd.', 'return_home' => 'Terug naar home', 'error_occurred' => 'Er Ging Iets Fout', 'app_down' => ':appName is nu niet beschikbaar', diff --git a/resources/lang/pl/activities.php b/resources/lang/pl/activities.php index 53f8486da..13e35e206 100644 --- a/resources/lang/pl/activities.php +++ b/resources/lang/pl/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'usunięto półkę', 'bookshelf_delete_notification' => 'Półka usunięta pomyślnie', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'skomentował', 'permissions_update' => 'zaktualizowane uprawnienia', diff --git a/resources/lang/pl/common.php b/resources/lang/pl/common.php index 35d6b6b82..716ee7ae5 100644 --- a/resources/lang/pl/common.php +++ b/resources/lang/pl/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Usuń', 'add' => 'Dodaj', 'fullscreen' => 'Pełny ekran', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Opcje sortowania', diff --git a/resources/lang/pl/entities.php b/resources/lang/pl/entities.php index 4fab04321..9d172a873 100644 --- a/resources/lang/pl/entities.php +++ b/resources/lang/pl/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Obrazki', 'my_recent_drafts' => 'Moje ostatnie wersje robocze', 'my_recently_viewed' => 'Moje ostatnio wyświetlane', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Nie przeglądałeś jeszcze żadnych stron', 'no_pages_recently_created' => 'Nie utworzono ostatnio żadnych stron', 'no_pages_recently_updated' => 'Nie zaktualizowano ostatnio żadnych stron', diff --git a/resources/lang/pt/activities.php b/resources/lang/pt/activities.php index 8a5d15e8f..20194394f 100644 --- a/resources/lang/pt/activities.php +++ b/resources/lang/pt/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'excluiu a prateleira', 'bookshelf_delete_notification' => 'Estante eliminada com sucesso', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'comentado a', 'permissions_update' => 'permissões atualizadas', diff --git a/resources/lang/pt/common.php b/resources/lang/pt/common.php index e42e34af8..7dd2c9c63 100644 --- a/resources/lang/pt/common.php +++ b/resources/lang/pt/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Remover', 'add' => 'Adicionar', 'fullscreen' => 'Ecrã completo', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Opções de Ordenação', diff --git a/resources/lang/pt/entities.php b/resources/lang/pt/entities.php index 82ac03aa5..0b258f144 100644 --- a/resources/lang/pt/entities.php +++ b/resources/lang/pt/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Imagens', 'my_recent_drafts' => 'Os Meus Rascunhos Recentes', 'my_recently_viewed' => 'Visualizados Recentemente Por Mim', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Você não viu nenhuma página', 'no_pages_recently_created' => 'Nenhuma página foi recentemente criada', 'no_pages_recently_updated' => 'Nenhuma página foi recentemente atualizada', diff --git a/resources/lang/pt_BR/activities.php b/resources/lang/pt_BR/activities.php index 33781417f..ad5a34398 100644 --- a/resources/lang/pt_BR/activities.php +++ b/resources/lang/pt_BR/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'excluiu a prateleira', 'bookshelf_delete_notification' => 'Prateleira excluída com sucesso', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'comentou em', 'permissions_update' => 'atualizou permissões', diff --git a/resources/lang/pt_BR/common.php b/resources/lang/pt_BR/common.php index d2d544901..1757d955a 100644 --- a/resources/lang/pt_BR/common.php +++ b/resources/lang/pt_BR/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Remover', 'add' => 'Adicionar', 'fullscreen' => 'Tela cheia', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Opções de Ordenação', diff --git a/resources/lang/pt_BR/entities.php b/resources/lang/pt_BR/entities.php index e67dfc8c3..a920bfd20 100644 --- a/resources/lang/pt_BR/entities.php +++ b/resources/lang/pt_BR/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Imagens', 'my_recent_drafts' => 'Meus Rascunhos Recentes', 'my_recently_viewed' => 'Visualizados por mim Recentemente', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Você não visualizou nenhuma página', 'no_pages_recently_created' => 'Nenhuma página criada recentemente', 'no_pages_recently_updated' => 'Nenhuma página atualizada recentemente', diff --git a/resources/lang/ru/activities.php b/resources/lang/ru/activities.php index af5a7af1d..94dbd0b07 100644 --- a/resources/lang/ru/activities.php +++ b/resources/lang/ru/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'удалил полку', 'bookshelf_delete_notification' => 'Полка успешно удалена', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'прокомментировал', 'permissions_update' => 'обновил разрешения', diff --git a/resources/lang/ru/common.php b/resources/lang/ru/common.php index a0feccf91..f4035c0f3 100644 --- a/resources/lang/ru/common.php +++ b/resources/lang/ru/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Удалить', 'add' => 'Добавить', 'fullscreen' => 'На весь экран', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Параметры сортировки', diff --git a/resources/lang/ru/entities.php b/resources/lang/ru/entities.php index 4e1cca6ee..bd3702d4b 100644 --- a/resources/lang/ru/entities.php +++ b/resources/lang/ru/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Изображения', 'my_recent_drafts' => 'Мои последние черновики', 'my_recently_viewed' => 'Мои недавние просмотры', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Вы не просматривали ни одной страницы', 'no_pages_recently_created' => 'Нет недавно созданных страниц', 'no_pages_recently_updated' => 'Нет недавно обновленных страниц', diff --git a/resources/lang/sk/activities.php b/resources/lang/sk/activities.php index bbdec3cf7..15897e791 100644 --- a/resources/lang/sk/activities.php +++ b/resources/lang/sk/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'odstránil(a) knižnicu', 'bookshelf_delete_notification' => 'Knižnica úspešne odstránená', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'komentoval(a)', 'permissions_update' => 'aktualizované oprávnenia', diff --git a/resources/lang/sk/common.php b/resources/lang/sk/common.php index 0d8eb2b6d..7a2051688 100644 --- a/resources/lang/sk/common.php +++ b/resources/lang/sk/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Odstrániť', 'add' => 'Pridať', 'fullscreen' => 'Celá obrazovka', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Možnosti triedenia', diff --git a/resources/lang/sk/entities.php b/resources/lang/sk/entities.php index 058d7f4c9..7550255a9 100644 --- a/resources/lang/sk/entities.php +++ b/resources/lang/sk/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Obrázky', 'my_recent_drafts' => 'Moje nedávne koncepty', 'my_recently_viewed' => 'Nedávno mnou zobrazené', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Nepozreli ste si žiadne stránky', 'no_pages_recently_created' => 'Žiadne stránky neboli nedávno vytvorené', 'no_pages_recently_updated' => 'Žiadne stránky neboli nedávno aktualizované', diff --git a/resources/lang/sl/activities.php b/resources/lang/sl/activities.php index 4ed1185de..91ec575e8 100644 --- a/resources/lang/sl/activities.php +++ b/resources/lang/sl/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'knjižna polica izbrisana', 'bookshelf_delete_notification' => 'Knjižna polica uspešno Izbrisana', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'komentar na', 'permissions_update' => 'pravice so posodobljene', diff --git a/resources/lang/sl/common.php b/resources/lang/sl/common.php index cadd2ba88..a34d91b33 100644 --- a/resources/lang/sl/common.php +++ b/resources/lang/sl/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Odstrani', 'add' => 'Dodaj', 'fullscreen' => 'Celozaslonski način', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Možnosti razvrščanja', diff --git a/resources/lang/sl/entities.php b/resources/lang/sl/entities.php index c5ade055f..699b7c470 100644 --- a/resources/lang/sl/entities.php +++ b/resources/lang/sl/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Slike', 'my_recent_drafts' => 'Moji nedavni osnutki', 'my_recently_viewed' => 'Nedavno prikazano', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Niste si ogledali še nobene strani', 'no_pages_recently_created' => 'Nedavno ni bila ustvarjena nobena stran', 'no_pages_recently_updated' => 'Nedavno ni bila posodobljena nobena stran', diff --git a/resources/lang/sv/activities.php b/resources/lang/sv/activities.php index e3fa05155..dbbdb3e7c 100644 --- a/resources/lang/sv/activities.php +++ b/resources/lang/sv/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'tog bort hyllan', 'bookshelf_delete_notification' => 'Hyllan har tagits bort', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'kommenterade', 'permissions_update' => 'uppdaterade behörigheter', diff --git a/resources/lang/sv/common.php b/resources/lang/sv/common.php index f820fbdb3..dab22f0c5 100644 --- a/resources/lang/sv/common.php +++ b/resources/lang/sv/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Radera', 'add' => 'Lägg till', 'fullscreen' => 'Helskärm', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sorteringsalternativ', diff --git a/resources/lang/sv/entities.php b/resources/lang/sv/entities.php index a0df3b608..f635943ae 100644 --- a/resources/lang/sv/entities.php +++ b/resources/lang/sv/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Bilder', 'my_recent_drafts' => 'Mina nyaste utkast', 'my_recently_viewed' => 'Mina senast visade sidor', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Du har inte visat några sidor', 'no_pages_recently_created' => 'Inga sidor har skapats nyligen', 'no_pages_recently_updated' => 'Inga sidor har uppdaterats nyligen', diff --git a/resources/lang/tr/activities.php b/resources/lang/tr/activities.php index 67f9653f4..0c5e11d7c 100644 --- a/resources/lang/tr/activities.php +++ b/resources/lang/tr/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'kitaplığı sildi', 'bookshelf_delete_notification' => 'Kitaplık Başarıyla Silindi', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'yorum yaptı', 'permissions_update' => 'güncellenmiş izinler', diff --git a/resources/lang/tr/common.php b/resources/lang/tr/common.php index ff253493a..50ce70e61 100644 --- a/resources/lang/tr/common.php +++ b/resources/lang/tr/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Kaldır', 'add' => 'Ekle', 'fullscreen' => 'Tam Ekran', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Sıralama Seçenekleri', diff --git a/resources/lang/tr/entities.php b/resources/lang/tr/entities.php index 64a0ee352..e48277a4b 100644 --- a/resources/lang/tr/entities.php +++ b/resources/lang/tr/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Görseller', 'my_recent_drafts' => 'Son Taslaklarım', 'my_recently_viewed' => 'Son Görüntülediklerim', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Herhangi bir sayfa görüntülemediniz', 'no_pages_recently_created' => 'Yakın zamanda bir sayfa oluşturulmadı', 'no_pages_recently_updated' => 'Yakın zamanda bir sayfa güncellenmedi', diff --git a/resources/lang/uk/activities.php b/resources/lang/uk/activities.php index f16f6fe3e..918eb1a41 100644 --- a/resources/lang/uk/activities.php +++ b/resources/lang/uk/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'видалив книжкову полицю', 'bookshelf_delete_notification' => 'Книжкову полицю успішно видалено', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'прокоментував', 'permissions_update' => 'оновив дозволи', diff --git a/resources/lang/uk/common.php b/resources/lang/uk/common.php index 1920f125a..62342a723 100644 --- a/resources/lang/uk/common.php +++ b/resources/lang/uk/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Видалити', 'add' => 'Додати', 'fullscreen' => 'На весь екран', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Параметри сортування', diff --git a/resources/lang/uk/entities.php b/resources/lang/uk/entities.php index 86f044102..f41d97bb0 100644 --- a/resources/lang/uk/entities.php +++ b/resources/lang/uk/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Зображення', 'my_recent_drafts' => 'Мої останні чернетки', 'my_recently_viewed' => 'Мої недавні перегляди', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Ви не переглядали жодної сторінки', 'no_pages_recently_created' => 'Не було створено жодної сторінки', 'no_pages_recently_updated' => 'Немає недавно оновлених сторінок', diff --git a/resources/lang/vi/activities.php b/resources/lang/vi/activities.php index 85a850e27..10d24a16b 100644 --- a/resources/lang/vi/activities.php +++ b/resources/lang/vi/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => 'đã xóa giá sách', 'bookshelf_delete_notification' => 'Giá sách đã được xóa thành công', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => 'đã bình luận về', 'permissions_update' => 'các quyền đã được cập nhật', diff --git a/resources/lang/vi/common.php b/resources/lang/vi/common.php index b48c65676..6e779da24 100644 --- a/resources/lang/vi/common.php +++ b/resources/lang/vi/common.php @@ -40,6 +40,10 @@ return [ 'remove' => 'Xóa bỏ', 'add' => 'Thêm', 'fullscreen' => 'Toàn màn hình', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => 'Tùy Chọn Sắp Xếp', diff --git a/resources/lang/vi/entities.php b/resources/lang/vi/entities.php index e72f69648..cfea0956e 100644 --- a/resources/lang/vi/entities.php +++ b/resources/lang/vi/entities.php @@ -27,6 +27,8 @@ return [ 'images' => 'Ảnh', 'my_recent_drafts' => 'Bản nháp gần đây của tôi', 'my_recently_viewed' => 'Xem gần đây', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'Bạn chưa xem bất cứ trang nào', 'no_pages_recently_created' => 'Không có trang nào được tạo gần đây', 'no_pages_recently_updated' => 'Không có trang nào được cập nhật gần đây', diff --git a/resources/lang/zh_CN/activities.php b/resources/lang/zh_CN/activities.php index 717c7dfdf..cc453abf6 100644 --- a/resources/lang/zh_CN/activities.php +++ b/resources/lang/zh_CN/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => '删除了书架', 'bookshelf_delete_notification' => '书架已成功删除', + // Favourites + 'favourite_add_notification' => '":name" 已添加到你的收藏', + 'favourite_remove_notification' => '":name" 已从你的收藏中删除', + // Other 'commented_on' => '评论', 'permissions_update' => '权限已更新', diff --git a/resources/lang/zh_CN/common.php b/resources/lang/zh_CN/common.php index 72f0bd44a..c8a0eef07 100644 --- a/resources/lang/zh_CN/common.php +++ b/resources/lang/zh_CN/common.php @@ -40,6 +40,10 @@ return [ 'remove' => '删除', 'add' => '添加', 'fullscreen' => '全屏', + 'favourite' => '收藏', + 'unfavourite' => '不喜欢', + 'next' => '下一页', + 'previous' => '上一页', // Sort Options 'sort_options' => '排序选项', diff --git a/resources/lang/zh_CN/entities.php b/resources/lang/zh_CN/entities.php index 09564a70a..494ac717f 100644 --- a/resources/lang/zh_CN/entities.php +++ b/resources/lang/zh_CN/entities.php @@ -27,6 +27,8 @@ return [ 'images' => '图片', 'my_recent_drafts' => '我最近的草稿', 'my_recently_viewed' => '我最近看过', + 'my_most_viewed_favourites' => '我浏览最多的收藏', + 'my_favourites' => '我的收藏', 'no_pages_viewed' => '您尚未查看任何页面', 'no_pages_recently_created' => '最近没有页面被创建', 'no_pages_recently_updated' => '最近没有页面被更新', diff --git a/resources/lang/zh_TW/activities.php b/resources/lang/zh_TW/activities.php index 0c86665b0..6d07a176a 100644 --- a/resources/lang/zh_TW/activities.php +++ b/resources/lang/zh_TW/activities.php @@ -43,6 +43,10 @@ return [ 'bookshelf_delete' => '已刪除書架', 'bookshelf_delete_notification' => '書架已刪除成功', + // Favourites + 'favourite_add_notification' => '":name" has been added to your favourites', + 'favourite_remove_notification' => '":name" has been removed from your favourites', + // Other 'commented_on' => '評論', 'permissions_update' => '更新權限', diff --git a/resources/lang/zh_TW/common.php b/resources/lang/zh_TW/common.php index ac2a49dcc..6d1d15f3e 100644 --- a/resources/lang/zh_TW/common.php +++ b/resources/lang/zh_TW/common.php @@ -40,6 +40,10 @@ return [ 'remove' => '移除', 'add' => '新增', 'fullscreen' => '全螢幕', + 'favourite' => 'Favourite', + 'unfavourite' => 'Unfavourite', + 'next' => 'Next', + 'previous' => 'Previous', // Sort Options 'sort_options' => '排序選項', diff --git a/resources/lang/zh_TW/entities.php b/resources/lang/zh_TW/entities.php index 564cd3891..32e3792be 100644 --- a/resources/lang/zh_TW/entities.php +++ b/resources/lang/zh_TW/entities.php @@ -27,6 +27,8 @@ return [ 'images' => '圖片', 'my_recent_drafts' => '我最近的草稿', 'my_recently_viewed' => '我最近檢視', + 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => '您尚未看過任何頁面', 'no_pages_recently_created' => '最近未建立任何頁面', 'no_pages_recently_updated' => '最近沒有頁面被更新', diff --git a/resources/sass/_blocks.scss b/resources/sass/_blocks.scss index 75adf12aa..f9c206154 100644 --- a/resources/sass/_blocks.scss +++ b/resources/sass/_blocks.scss @@ -190,7 +190,7 @@ padding: $-m $-xxl; margin-inline-start: auto; margin-inline-end: auto; - margin-bottom: $-xl; + margin-bottom: $-l; overflow: initial; min-height: 60vh; &.auto-height { @@ -216,6 +216,21 @@ } } +.outline-hover { + border: 1px solid transparent !important; + &:hover { + border: 1px solid rgba(0, 0, 0, 0.1) !important; + } +} + +.fade-in-when-active { + opacity: 0.6; + transition: opacity ease-in-out 120ms; + &:hover, &:focus-within { + opacity: 1; + } +} + /** * Tags */ @@ -224,12 +239,13 @@ margin-bottom: $-xs; margin-inline-end: $-xs; border-radius: 4px; - border: 1px solid #CCC; + border: 1px solid; overflow: hidden; font-size: 0.85em; - a, a:hover, a:active { + @include lightDark(border-color, #CCC, #666); + a, span, a:hover, a:active { padding: 4px 8px; - @include lightDark(color, #777, #999); + @include lightDark(color, rgba(0, 0, 0, 0.6), rgba(255, 255, 255, 0.8)); transition: background-color ease-in-out 80ms; text-decoration: none; } @@ -237,10 +253,11 @@ @include lightDark(background-color, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.3)); } svg { - fill: #888; + @include lightDark(fill, rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.5)); } .tag-value { - border-inline-start: 1px solid #DDD; + border-inline-start: 1px solid; + @include lightDark(border-color, #DDD, #666); @include lightDark(background-color, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.2)) } } diff --git a/resources/sass/_components.scss b/resources/sass/_components.scss index ad6304694..ab562006f 100644 --- a/resources/sass/_components.scss +++ b/resources/sass/_components.scss @@ -190,7 +190,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { float: left; margin: 0; cursor: pointer; - width: (100%/6); + width: math.div(100%, 6); height: auto; @include lightDark(border-color, #ddd, #000); box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); @@ -219,7 +219,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { } } @include smaller-than($xl) { - width: (100%/4); + width: math.div(100%, 4); } @include smaller-than($m) { .image-meta { diff --git a/resources/sass/_forms.scss b/resources/sass/_forms.scss index c42399de1..953d1d060 100644 --- a/resources/sass/_forms.scss +++ b/resources/sass/_forms.scss @@ -187,7 +187,7 @@ table.form-table { max-width: 100%; td { overflow: hidden; - padding: $-xxs/2 0; + padding: math.div($-xxs, 2) 0; } } diff --git a/resources/sass/_layout.scss b/resources/sass/_layout.scss index 60205eaaa..516d7d612 100644 --- a/resources/sass/_layout.scss +++ b/resources/sass/_layout.scss @@ -157,6 +157,9 @@ body.flexbox { .justify-center { justify-content: center; } +.justify-space-between { + justify-content: space-between; +} .items-center { align-items: center; } @@ -209,6 +212,13 @@ body.flexbox { } } +/** + * Border radiuses + */ +.rounded { + border-radius: 4px; +} + /** * Inline content columns */ @@ -363,4 +373,4 @@ body.flexbox { margin-inline-start: 0; margin-inline-end: 0; } -} +} \ No newline at end of file diff --git a/resources/sass/_lists.scss b/resources/sass/_lists.scss index d6ea66350..436c7e533 100644 --- a/resources/sass/_lists.scss +++ b/resources/sass/_lists.scss @@ -441,12 +441,8 @@ ul.pagination { background-color: rgba(0, 0, 0, 0.1); border-radius: 4px; } - &.outline-hover { - border: 1px solid transparent; - } &.outline-hover:hover { background-color: transparent; - border-color: rgba(0, 0, 0, 0.1); } &:focus { @include lightDark(background-color, #eee, #222); @@ -550,6 +546,17 @@ ul.pagination { } } +.entity-item-tags { + font-size: .75rem; + opacity: 1; + .primary-background-light { + background: transparent; + } + .tag-name { + background-color: rgba(0, 0, 0, 0.05); + } +} + .dropdown-container { display: inline-block; vertical-align: top; diff --git a/resources/sass/_text.scss b/resources/sass/_text.scss index 4322cb5a6..7a0987c66 100644 --- a/resources/sass/_text.scss +++ b/resources/sass/_text.scss @@ -112,6 +112,13 @@ a { } } +a.no-link-style { + color: inherit; + &:hover { + text-decoration: none; + } +} + .blended-links a { color: inherit; svg { @@ -135,6 +142,9 @@ hr { &.faded { background-image: linear-gradient(to right, #FFF, #e3e0e0 20%, #e3e0e0 80%, #FFF); } + &.darker { + @include lightDark(background, #DDD, #666); + } &.margin-top, &.even { margin-top: $-l; } diff --git a/resources/sass/export-styles.scss b/resources/sass/export-styles.scss index b8682ed05..1a8b34c5b 100644 --- a/resources/sass/export-styles.scss +++ b/resources/sass/export-styles.scss @@ -1,3 +1,4 @@ +@use "sass:math"; @import "variables"; @import "mixins"; @import "html"; diff --git a/resources/sass/print-styles.scss b/resources/sass/print-styles.scss index 5cbd7f9d5..2c51bd75c 100644 --- a/resources/sass/print-styles.scss +++ b/resources/sass/print-styles.scss @@ -1,3 +1,4 @@ +@use "sass:math"; @import "variables"; header { diff --git a/resources/sass/styles.scss b/resources/sass/styles.scss index 743db9888..37f39a4f7 100644 --- a/resources/sass/styles.scss +++ b/resources/sass/styles.scss @@ -1,3 +1,5 @@ +@use "sass:math"; + @import "reset"; @import "variables"; @import "mixins"; @@ -109,8 +111,8 @@ $btt-size: 40px; color: #FFF; fill: #FFF; svg { - width: $btt-size / 1.5; - height: $btt-size / 1.5; + width: math.div($btt-size, 1.5); + height: math.div($btt-size, 1.5); margin-inline-end: 4px; } width: $btt-size; diff --git a/resources/views/api-docs/index.blade.php b/resources/views/api-docs/index.blade.php index d9c3d6595..56f7135c3 100644 --- a/resources/views/api-docs/index.blade.php +++ b/resources/views/api-docs/index.blade.php @@ -190,7 +190,7 @@
+
- {{--Export--}} + @if(signedInUser()) + @include('partials.entity-favourite-action', ['entity' => $page]) + @endif @include('partials.entity-export-menu', ['entity' => $page])