1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-30 04:23:11 +03:00

Add default_template as Book setting

This commit is contained in:
Lennert Daniels
2022-12-02 18:41:59 +01:00
parent 3599a962a3
commit 1dbc3588cf
8 changed files with 86 additions and 4 deletions

View File

@ -27,7 +27,7 @@ class Book extends Entity implements HasCoverImage
public $searchFactor = 1.2;
protected $fillable = ['name', 'description'];
protected $fillable = ['name', 'description', 'default_template'];
protected $hidden = ['pivot', 'image_id', 'deleted_at'];
/**
@ -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.
*/

View File

@ -6,6 +6,7 @@ use BookStack\Actions\ActivityQueries;
use BookStack\Actions\ActivityType;
use BookStack\Actions\View;
use BookStack\Entities\Models\Bookshelf;
use BookStack\Entities\Models\Page;
use BookStack\Entities\Repos\BookRepo;
use BookStack\Entities\Tools\BookContents;
use BookStack\Entities\Tools\Cloner;
@ -79,8 +80,14 @@ class BookController extends Controller
$this->setPageTitle(trans('entities.books_create'));
$templates = Page::visible()
->where('template', '=', true)
->orderBy('name', 'asc')
->get();
return view('books.create', [
'bookshelf' => $bookshelf,
'templates' => $templates,
]);
}
@ -98,6 +105,7 @@ class BookController extends Controller
'description' => ['string', 'max:1000'],
'image' => array_merge(['nullable'], $this->getImageValidationRules()),
'tags' => ['array'],
'default_template' => ['nullable', 'exists:pages,id'],
]);
$bookshelf = null;
@ -151,7 +159,12 @@ class BookController extends Controller
$this->checkOwnablePermission('book-update', $book);
$this->setPageTitle(trans('entities.books_edit_named', ['bookName' => $book->getShortName()]));
return view('books.edit', ['book' => $book, 'current' => $book]);
$templates = Page::visible()
->where('template', '=', true)
->orderBy('name', 'asc')
->get();
return view('books.edit', ['book' => $book, 'current' => $book, 'templates' => $templates]);
}
/**
@ -171,6 +184,7 @@ class BookController extends Controller
'description' => ['string', 'max:1000'],
'image' => array_merge(['nullable'], $this->getImageValidationRules()),
'tags' => ['array'],
'default_template' => ['nullable', 'exists:pages,id'],
]);
if ($request->has('image_reset')) {