diff --git a/app/Entities/Models/BookChild.php b/app/Entities/Models/BookChild.php index 91f62dc40..8b968cc8b 100644 --- a/app/Entities/Models/BookChild.php +++ b/app/Entities/Models/BookChild.php @@ -31,11 +31,10 @@ abstract class BookChild extends Entity /** * Get the book this page sits in. - * @return BelongsTo */ public function book(): BelongsTo { - return $this->belongsTo(Book::class); + return $this->belongsTo(Book::class)->withTrashed(); } /** diff --git a/app/Entities/Models/Page.php b/app/Entities/Models/Page.php index 52c64f048..739927aff 100644 --- a/app/Entities/Models/Page.php +++ b/app/Entities/Models/Page.php @@ -121,7 +121,7 @@ class Page extends BookChild */ public function forJsonDisplay(): Page { - $refreshed = $this->refresh()->unsetRelations()->load(['tags', 'createdBy', 'updatedBy']); + $refreshed = $this->refresh()->unsetRelations()->load(['tags', 'createdBy', 'updatedBy', 'ownedBy']); $refreshed->setHidden(array_diff($refreshed->getHidden(), ['html', 'markdown'])); $refreshed->html = (new PageContent($refreshed))->render(); return $refreshed; diff --git a/app/Http/Controllers/Api/BookApiController.php b/app/Http/Controllers/Api/BookApiController.php index 1b25b9645..1b9bddbb1 100644 --- a/app/Http/Controllers/Api/BookApiController.php +++ b/app/Http/Controllers/Api/BookApiController.php @@ -37,7 +37,7 @@ class BookApiController extends ApiController { $books = Book::visible(); return $this->apiListingResponse($books, [ - 'id', 'name', 'slug', 'description', 'created_at', 'updated_at', 'created_by', 'updated_by', 'image_id', + 'id', 'name', 'slug', 'description', 'created_at', 'updated_at', 'created_by', 'updated_by', 'owned_by', 'image_id', ]); } @@ -59,7 +59,7 @@ class BookApiController extends ApiController */ public function read(string $id) { - $book = Book::visible()->with(['tags', 'cover', 'createdBy', 'updatedBy'])->findOrFail($id); + $book = Book::visible()->with(['tags', 'cover', 'createdBy', 'updatedBy', 'ownedBy'])->findOrFail($id); return response()->json($book); } diff --git a/app/Http/Controllers/Api/BookshelfApiController.php b/app/Http/Controllers/Api/BookshelfApiController.php index c4851b003..57461fce5 100644 --- a/app/Http/Controllers/Api/BookshelfApiController.php +++ b/app/Http/Controllers/Api/BookshelfApiController.php @@ -43,7 +43,7 @@ class BookshelfApiController extends ApiController { $shelves = Bookshelf::visible(); return $this->apiListingResponse($shelves, [ - 'id', 'name', 'slug', 'description', 'created_at', 'updated_at', 'created_by', 'updated_by', 'image_id', + 'id', 'name', 'slug', 'description', 'created_at', 'updated_at', 'created_by', 'updated_by', 'owned_by', 'image_id', ]); } @@ -70,7 +70,7 @@ class BookshelfApiController extends ApiController public function read(string $id) { $shelf = Bookshelf::visible()->with([ - 'tags', 'cover', 'createdBy', 'updatedBy', + 'tags', 'cover', 'createdBy', 'updatedBy', 'ownedBy', 'books' => function (BelongsToMany $query) { $query->visible()->get(['id', 'name', 'slug']); } diff --git a/app/Http/Controllers/Api/ChapterApiController.php b/app/Http/Controllers/Api/ChapterApiController.php index e69aecc2d..e58c1c8e1 100644 --- a/app/Http/Controllers/Api/ChapterApiController.php +++ b/app/Http/Controllers/Api/ChapterApiController.php @@ -43,7 +43,7 @@ class ChapterApiController extends ApiController $chapters = Chapter::visible(); return $this->apiListingResponse($chapters, [ 'id', 'book_id', 'name', 'slug', 'description', 'priority', - 'created_at', 'updated_at', 'created_by', 'updated_by', + 'created_at', 'updated_at', 'created_by', 'updated_by', 'owned_by', ]); } @@ -67,7 +67,7 @@ class ChapterApiController extends ApiController */ public function read(string $id) { - $chapter = Chapter::visible()->with(['tags', 'createdBy', 'updatedBy', 'pages' => function (HasMany $query) { + $chapter = Chapter::visible()->with(['tags', 'createdBy', 'updatedBy', 'ownedBy', 'pages' => function (HasMany $query) { $query->visible()->get(['id', 'name', 'slug']); }])->findOrFail($id); return response()->json($chapter); diff --git a/app/Http/Controllers/Api/PageApiController.php b/app/Http/Controllers/Api/PageApiController.php index 0b3323ccd..a6db05833 100644 --- a/app/Http/Controllers/Api/PageApiController.php +++ b/app/Http/Controllers/Api/PageApiController.php @@ -47,7 +47,8 @@ class PageApiController extends ApiController return $this->apiListingResponse($pages, [ 'id', 'book_id', 'chapter_id', 'name', 'slug', 'priority', 'draft', 'template', - 'created_at', 'updated_at', 'created_by', 'updated_by', + 'created_at', 'updated_at', + 'created_by', 'updated_by', 'owned_by', ]); } diff --git a/dev/api/responses/books-create.json b/dev/api/responses/books-create.json index 0b4336ab2..124305c8c 100644 --- a/dev/api/responses/books-create.json +++ b/dev/api/responses/books-create.json @@ -3,6 +3,7 @@ "description": "This is a book created via the API", "created_by": 1, "updated_by": 1, + "owned_by": 1, "slug": "my-new-book", "updated_at": "2020-01-12 14:05:11", "created_at": "2020-01-12 14:05:11", diff --git a/dev/api/responses/books-list.json b/dev/api/responses/books-list.json index 29e83b1c0..9900b5b04 100644 --- a/dev/api/responses/books-list.json +++ b/dev/api/responses/books-list.json @@ -9,6 +9,7 @@ "updated_at": "2019-12-11 20:57:31", "created_by": 1, "updated_by": 1, + "owned_by": 1, "image_id": 3 }, { @@ -20,6 +21,7 @@ "updated_at": "2019-12-11 20:57:23", "created_by": 4, "updated_by": 3, + "owned_by": 3, "image_id": 34 } ], diff --git a/dev/api/responses/books-read.json b/dev/api/responses/books-read.json index 815a71c35..0b0bce4e8 100644 --- a/dev/api/responses/books-read.json +++ b/dev/api/responses/books-read.json @@ -13,6 +13,10 @@ "id": 1, "name": "Admin" }, + "owned_by": { + "id": 1, + "name": "Admin" + }, "tags": [ { "id": 13, diff --git a/dev/api/responses/books-update.json b/dev/api/responses/books-update.json index 8f20b5b9f..fd93dc9ae 100644 --- a/dev/api/responses/books-update.json +++ b/dev/api/responses/books-update.json @@ -7,5 +7,6 @@ "updated_at": "2020-01-12 14:16:10", "created_by": 1, "updated_by": 1, + "owned_by": 1, "image_id": 452 } \ No newline at end of file diff --git a/dev/api/responses/chapters-create.json b/dev/api/responses/chapters-create.json index 7aac27687..a990f278b 100644 --- a/dev/api/responses/chapters-create.json +++ b/dev/api/responses/chapters-create.json @@ -5,6 +5,7 @@ "description": "This is a great new chapter that I've created via the API", "created_by": 1, "updated_by": 1, + "owned_by": 1, "slug": "my-fantastic-new-chapter", "updated_at": "2020-05-22 22:59:55", "created_at": "2020-05-22 22:59:55", diff --git a/dev/api/responses/chapters-list.json b/dev/api/responses/chapters-list.json index 0c1fc5fc2..72ed7534d 100644 --- a/dev/api/responses/chapters-list.json +++ b/dev/api/responses/chapters-list.json @@ -10,7 +10,8 @@ "created_at": "2019-05-05 21:49:56", "updated_at": "2019-09-28 11:24:23", "created_by": 1, - "updated_by": 1 + "updated_by": 1, + "owned_by": 1 }, { "id": 2, @@ -22,7 +23,8 @@ "created_at": "2019-05-05 21:58:07", "updated_at": "2019-10-17 15:05:34", "created_by": 3, - "updated_by": 3 + "updated_by": 3, + "owned_by": 3 } ], "total": 40 diff --git a/dev/api/responses/chapters-read.json b/dev/api/responses/chapters-read.json index 0d16f4b6a..41fed80ef 100644 --- a/dev/api/responses/chapters-read.json +++ b/dev/api/responses/chapters-read.json @@ -15,6 +15,10 @@ "id": 1, "name": "Admin" }, + "owned_by": { + "id": 1, + "name": "Admin" + }, "tags": [ { "name": "Category", diff --git a/dev/api/responses/chapters-update.json b/dev/api/responses/chapters-update.json index a7edb15b0..11dedd0ca 100644 --- a/dev/api/responses/chapters-update.json +++ b/dev/api/responses/chapters-update.json @@ -9,6 +9,7 @@ "updated_at": "2020-05-22 23:07:20", "created_by": 1, "updated_by": 1, + "owned_by": 1, "book": { "id": 1, "name": "BookStack User Guide", diff --git a/dev/api/responses/pages-create.json b/dev/api/responses/pages-create.json index 1f6c970fb..0b19fb473 100644 --- a/dev/api/responses/pages-create.json +++ b/dev/api/responses/pages-create.json @@ -16,6 +16,10 @@ "id": 1, "name": "Admin" }, + "owned_by": { + "id": 1, + "name": "Admin" + }, "draft": false, "markdown": "", "revision_count": 1, diff --git a/dev/api/responses/pages-list.json b/dev/api/responses/pages-list.json index 973934516..9c162c6b6 100644 --- a/dev/api/responses/pages-list.json +++ b/dev/api/responses/pages-list.json @@ -12,7 +12,8 @@ "created_at": "2019-05-05 21:49:58", "updated_at": "2020-07-04 15:50:58", "created_by": 1, - "updated_by": 1 + "updated_by": 1, + "owned_by": 1 }, { "id": 2, @@ -26,7 +27,8 @@ "created_at": "2019-05-05 21:53:30", "updated_at": "2019-06-06 12:03:04", "created_by": 1, - "updated_by": 1 + "updated_by": 1, + "owned_by": 1 }, { "id": 3, @@ -40,7 +42,8 @@ "created_at": "2019-05-05 21:53:49", "updated_at": "2019-12-18 21:56:52", "created_by": 1, - "updated_by": 1 + "updated_by": 1, + "owned_by": 1 } ], "total": 322 diff --git a/dev/api/responses/pages-read.json b/dev/api/responses/pages-read.json index c8acb520a..93f7770ac 100644 --- a/dev/api/responses/pages-read.json +++ b/dev/api/responses/pages-read.json @@ -16,6 +16,10 @@ "id": 1, "name": "Admin" }, + "owned_by": { + "id": 1, + "name": "Admin" + }, "draft": false, "markdown": "# How this is built\r\n\r\nThis page is written in markdown. BookStack stores the page data in HTML.\r\n\r\nHere's a cute picture of my cat:\r\n\r\n[![yXSrubes.jpg](http://example.com/uploads/images/gallery/2020-04/scaled-1680-/yXSrubes.jpg)](http://example.com/uploads/images/gallery/2020-04/yXSrubes.jpg)", "revision_count": 5, diff --git a/dev/api/responses/pages-update.json b/dev/api/responses/pages-update.json index 23f8d221c..ae5c0ea3f 100644 --- a/dev/api/responses/pages-update.json +++ b/dev/api/responses/pages-update.json @@ -16,6 +16,10 @@ "id": 1, "name": "Admin" }, + "owned_by": { + "id": 1, + "name": "Admin" + }, "draft": false, "markdown": "", "revision_count": 5, diff --git a/dev/api/responses/shelves-create.json b/dev/api/responses/shelves-create.json index 64f3c7f53..fafa4c9cd 100644 --- a/dev/api/responses/shelves-create.json +++ b/dev/api/responses/shelves-create.json @@ -3,6 +3,7 @@ "description": "This is my shelf with some books", "created_by": 1, "updated_by": 1, + "owned_by": 1, "slug": "my-shelf", "updated_at": "2020-04-10 13:24:09", "created_at": "2020-04-10 13:24:09", diff --git a/dev/api/responses/shelves-list.json b/dev/api/responses/shelves-list.json index bccd08626..f5e9d03bb 100644 --- a/dev/api/responses/shelves-list.json +++ b/dev/api/responses/shelves-list.json @@ -9,6 +9,7 @@ "updated_at": "2020-04-10 13:00:45", "created_by": 4, "updated_by": 1, + "owned_by": 1, "image_id": 31 }, { @@ -20,6 +21,7 @@ "updated_at": "2020-04-10 13:00:58", "created_by": 4, "updated_by": 1, + "owned_by": 1, "image_id": 28 }, { @@ -31,6 +33,7 @@ "updated_at": "2020-04-10 13:00:53", "created_by": 4, "updated_by": 1, + "owned_by": 4, "image_id": 30 } ], diff --git a/dev/api/responses/shelves-read.json b/dev/api/responses/shelves-read.json index b0487debe..d663e82c5 100644 --- a/dev/api/responses/shelves-read.json +++ b/dev/api/responses/shelves-read.json @@ -11,6 +11,10 @@ "id": 1, "name": "Admin" }, + "owned_by": { + "id": 1, + "name": "Admin" + }, "created_at": "2020-04-10 13:24:09", "updated_at": "2020-04-10 13:31:04", "tags": [ diff --git a/dev/api/responses/shelves-update.json b/dev/api/responses/shelves-update.json index 4820150eb..4bde44b54 100644 --- a/dev/api/responses/shelves-update.json +++ b/dev/api/responses/shelves-update.json @@ -5,6 +5,7 @@ "description": "This is my update shelf with some books", "created_by": 1, "updated_by": 1, + "owned_by": 1, "image_id": 501, "created_at": "2020-04-10 13:24:09", "updated_at": "2020-04-10 13:48:22" diff --git a/resources/js/components/page-editor.js b/resources/js/components/page-editor.js index 266e19182..a0d8d38b1 100644 --- a/resources/js/components/page-editor.js +++ b/resources/js/components/page-editor.js @@ -12,7 +12,7 @@ class PageEditor { this.editorType = this.$opts.editorType; this.pageId = Number(this.$opts.pageId); this.isNewDraft = this.$opts.pageNewDraft === 'true'; - this.hasDefaultTitle = this.$opts.isDefaultTitle || false; + this.hasDefaultTitle = this.$opts.hasDefaultTitle || false; // Elements this.container = this.$el; @@ -74,6 +74,7 @@ class PageEditor { } setInitialFocus() { + console.log({'HAS': this.hasDefaultTitle}); if (this.hasDefaultTitle) { return this.titleElem.select(); } diff --git a/tests/Api/BooksApiTest.php b/tests/Api/BooksApiTest.php index de4db1469..a36acdd02 100644 --- a/tests/Api/BooksApiTest.php +++ b/tests/Api/BooksApiTest.php @@ -75,7 +75,10 @@ class BooksApiTest extends TestCase ], 'updated_by' => [ 'name' => $book->createdBy->name, - ] + ], + 'owned_by' => [ + 'name' => $book->ownedBy->name + ], ]); } diff --git a/tests/Api/ChaptersApiTest.php b/tests/Api/ChaptersApiTest.php index 422631c3a..c7368eaee 100644 --- a/tests/Api/ChaptersApiTest.php +++ b/tests/Api/ChaptersApiTest.php @@ -106,6 +106,9 @@ class ChaptersApiTest extends TestCase 'updated_by' => [ 'name' => $chapter->createdBy->name, ], + 'owned_by' => [ + 'name' => $chapter->ownedBy->name + ], 'pages' => [ [ 'id' => $page->id, diff --git a/tests/Api/PagesApiTest.php b/tests/Api/PagesApiTest.php index 44fbf5e79..e08e9b1b7 100644 --- a/tests/Api/PagesApiTest.php +++ b/tests/Api/PagesApiTest.php @@ -136,6 +136,9 @@ class PagesApiTest extends TestCase 'updated_by' => [ 'name' => $page->createdBy->name, ], + 'owned_by' => [ + 'name' => $page->ownedBy->name + ], ]); } diff --git a/tests/Api/ShelvesApiTest.php b/tests/Api/ShelvesApiTest.php index 4c5600d15..32715dd0a 100644 --- a/tests/Api/ShelvesApiTest.php +++ b/tests/Api/ShelvesApiTest.php @@ -85,7 +85,10 @@ class ShelvesApiTest extends TestCase ], 'updated_by' => [ 'name' => $shelf->createdBy->name, - ] + ], + 'owned_by' => [ + 'name' => $shelf->ownedBy->name + ], ]); }