X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/58fa7679bccafd00f9a50bcd4a87e96876331b03..refs/pull/5280/head:/app/Entities/Models/Chapter.php diff --git a/app/Entities/Models/Chapter.php b/app/Entities/Models/Chapter.php index 181068533..c926aaa64 100644 --- a/app/Entities/Models/Chapter.php +++ b/app/Entities/Models/Chapter.php @@ -1,25 +1,35 @@ - $pages - * @property mixed description + * @property ?int $default_template_id + * @property ?Page $defaultTemplate */ class Chapter extends BookChild { - public $searchFactor = 1.3; + use HasFactory; + use HasHtmlDescription; + + public float $searchFactor = 1.2; - protected $fillable = ['name', 'description', 'priority', 'book_id']; - protected $hidden = ['restricted', 'pivot', 'deleted_at']; + protected $fillable = ['name', 'description', 'priority']; + protected $hidden = ['pivot', 'deleted_at', 'description_html']; /** * Get the pages that this chapter contains. - * @param string $dir - * @return mixed + * + * @return HasMany */ - public function pages($dir = 'ASC') + public function pages(string $dir = 'ASC'): HasMany { return $this->hasMany(Page::class)->orderBy('priority', $dir); } @@ -27,11 +37,11 @@ class Chapter extends BookChild /** * Get the url of this chapter. */ - public function getUrl($path = ''): string + public function getUrl(string $path = ''): string { $parts = [ 'books', - urlencode($this->getAttribute('bookSlug') ?? $this->book->slug), + urlencode($this->book_slug ?? $this->book->slug), 'chapter', urlencode($this->slug), trim($path, '/'), @@ -40,12 +50,21 @@ class Chapter extends BookChild return url('/' . implode('/', $parts)); } + /** + * Get the Page that is used as default template for newly created pages within this Chapter. + */ + public function defaultTemplate(): BelongsTo + { + return $this->belongsTo(Page::class, 'default_template_id'); + } + /** * Get the visible pages in this chapter. */ public function getVisiblePages(): Collection { - return $this->pages()->visible() + return $this->pages() + ->scopes('visible') ->orderBy('draft', 'desc') ->orderBy('priority', 'asc') ->get();