X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/60171b3522220e874436f52cc8936f6879e7e60f..refs/pull/3918/head:/app/Entities/Models/Book.php diff --git a/app/Entities/Models/Book.php b/app/Entities/Models/Book.php index bf42f2008..b84a351f8 100644 --- a/app/Entities/Models/Book.php +++ b/app/Entities/Models/Book.php @@ -27,8 +27,8 @@ class Book extends Entity implements HasCoverImage public $searchFactor = 1.2; - protected $fillable = ['name', 'description']; - protected $hidden = ['restricted', 'pivot', 'image_id', 'deleted_at']; + protected $fillable = ['name', 'description', 'default_template']; + protected $hidden = ['pivot', 'image_id', 'deleted_at']; /** * Get the url for this book. @@ -78,6 +78,14 @@ class Book extends Entity implements HasCoverImage return 'cover_book'; } + /** + * Get the Page that is used as default template for newly created pages within this Book. + */ + public function defaultTemplate(): BelongsTo + { + return $this->belongsTo(Page::class, 'default_template'); + } + /** * Get all pages within this book. */ @@ -120,4 +128,13 @@ class Book extends Entity implements HasCoverImage return $pages->concat($chapters)->sortBy('priority')->sortByDesc('draft'); } + + /** + * Get a visible book by its slug. + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + */ + public static function getBySlug(string $slug): self + { + return static::visible()->where('slug', '=', $slug)->firstOrFail(); + } }