Merge branch 'master' into release
This commit is contained in:
commit
dc996adb20
|
@ -31,11 +31,10 @@ abstract class BookChild extends Entity
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the book this page sits in.
|
* Get the book this page sits in.
|
||||||
* @return BelongsTo
|
|
||||||
*/
|
*/
|
||||||
public function book(): BelongsTo
|
public function book(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Book::class);
|
return $this->belongsTo(Book::class)->withTrashed();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -121,7 +121,7 @@ class Page extends BookChild
|
||||||
*/
|
*/
|
||||||
public function forJsonDisplay(): Page
|
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->setHidden(array_diff($refreshed->getHidden(), ['html', 'markdown']));
|
||||||
$refreshed->html = (new PageContent($refreshed))->render();
|
$refreshed->html = (new PageContent($refreshed))->render();
|
||||||
return $refreshed;
|
return $refreshed;
|
||||||
|
|
|
@ -37,7 +37,7 @@ class BookApiController extends ApiController
|
||||||
{
|
{
|
||||||
$books = Book::visible();
|
$books = Book::visible();
|
||||||
return $this->apiListingResponse($books, [
|
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)
|
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);
|
return response()->json($book);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ class BookshelfApiController extends ApiController
|
||||||
{
|
{
|
||||||
$shelves = Bookshelf::visible();
|
$shelves = Bookshelf::visible();
|
||||||
return $this->apiListingResponse($shelves, [
|
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)
|
public function read(string $id)
|
||||||
{
|
{
|
||||||
$shelf = Bookshelf::visible()->with([
|
$shelf = Bookshelf::visible()->with([
|
||||||
'tags', 'cover', 'createdBy', 'updatedBy',
|
'tags', 'cover', 'createdBy', 'updatedBy', 'ownedBy',
|
||||||
'books' => function (BelongsToMany $query) {
|
'books' => function (BelongsToMany $query) {
|
||||||
$query->visible()->get(['id', 'name', 'slug']);
|
$query->visible()->get(['id', 'name', 'slug']);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ class ChapterApiController extends ApiController
|
||||||
$chapters = Chapter::visible();
|
$chapters = Chapter::visible();
|
||||||
return $this->apiListingResponse($chapters, [
|
return $this->apiListingResponse($chapters, [
|
||||||
'id', 'book_id', 'name', 'slug', 'description', 'priority',
|
'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)
|
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']);
|
$query->visible()->get(['id', 'name', 'slug']);
|
||||||
}])->findOrFail($id);
|
}])->findOrFail($id);
|
||||||
return response()->json($chapter);
|
return response()->json($chapter);
|
||||||
|
|
|
@ -47,7 +47,8 @@ class PageApiController extends ApiController
|
||||||
return $this->apiListingResponse($pages, [
|
return $this->apiListingResponse($pages, [
|
||||||
'id', 'book_id', 'chapter_id', 'name', 'slug', 'priority',
|
'id', 'book_id', 'chapter_id', 'name', 'slug', 'priority',
|
||||||
'draft', 'template',
|
'draft', 'template',
|
||||||
'created_at', 'updated_at', 'created_by', 'updated_by',
|
'created_at', 'updated_at',
|
||||||
|
'created_by', 'updated_by', 'owned_by',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
"description": "This is a book created via the API",
|
"description": "This is a book created via the API",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"slug": "my-new-book",
|
"slug": "my-new-book",
|
||||||
"updated_at": "2020-01-12 14:05:11",
|
"updated_at": "2020-01-12 14:05:11",
|
||||||
"created_at": "2020-01-12 14:05:11",
|
"created_at": "2020-01-12 14:05:11",
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"updated_at": "2019-12-11 20:57:31",
|
"updated_at": "2019-12-11 20:57:31",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"image_id": 3
|
"image_id": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -20,6 +21,7 @@
|
||||||
"updated_at": "2019-12-11 20:57:23",
|
"updated_at": "2019-12-11 20:57:23",
|
||||||
"created_by": 4,
|
"created_by": 4,
|
||||||
"updated_by": 3,
|
"updated_by": 3,
|
||||||
|
"owned_by": 3,
|
||||||
"image_id": 34
|
"image_id": 34
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -13,6 +13,10 @@
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Admin"
|
"name": "Admin"
|
||||||
},
|
},
|
||||||
|
"owned_by": {
|
||||||
|
"id": 1,
|
||||||
|
"name": "Admin"
|
||||||
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
{
|
{
|
||||||
"id": 13,
|
"id": 13,
|
||||||
|
|
|
@ -7,5 +7,6 @@
|
||||||
"updated_at": "2020-01-12 14:16:10",
|
"updated_at": "2020-01-12 14:16:10",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"image_id": 452
|
"image_id": 452
|
||||||
}
|
}
|
|
@ -5,6 +5,7 @@
|
||||||
"description": "This is a great new chapter that I've created via the API",
|
"description": "This is a great new chapter that I've created via the API",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"slug": "my-fantastic-new-chapter",
|
"slug": "my-fantastic-new-chapter",
|
||||||
"updated_at": "2020-05-22 22:59:55",
|
"updated_at": "2020-05-22 22:59:55",
|
||||||
"created_at": "2020-05-22 22:59:55",
|
"created_at": "2020-05-22 22:59:55",
|
||||||
|
|
|
@ -10,7 +10,8 @@
|
||||||
"created_at": "2019-05-05 21:49:56",
|
"created_at": "2019-05-05 21:49:56",
|
||||||
"updated_at": "2019-09-28 11:24:23",
|
"updated_at": "2019-09-28 11:24:23",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1
|
"updated_by": 1,
|
||||||
|
"owned_by": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
|
@ -22,7 +23,8 @@
|
||||||
"created_at": "2019-05-05 21:58:07",
|
"created_at": "2019-05-05 21:58:07",
|
||||||
"updated_at": "2019-10-17 15:05:34",
|
"updated_at": "2019-10-17 15:05:34",
|
||||||
"created_by": 3,
|
"created_by": 3,
|
||||||
"updated_by": 3
|
"updated_by": 3,
|
||||||
|
"owned_by": 3
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"total": 40
|
"total": 40
|
||||||
|
|
|
@ -15,6 +15,10 @@
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Admin"
|
"name": "Admin"
|
||||||
},
|
},
|
||||||
|
"owned_by": {
|
||||||
|
"id": 1,
|
||||||
|
"name": "Admin"
|
||||||
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
{
|
{
|
||||||
"name": "Category",
|
"name": "Category",
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"updated_at": "2020-05-22 23:07:20",
|
"updated_at": "2020-05-22 23:07:20",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"book": {
|
"book": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "BookStack User Guide",
|
"name": "BookStack User Guide",
|
||||||
|
|
|
@ -16,6 +16,10 @@
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Admin"
|
"name": "Admin"
|
||||||
},
|
},
|
||||||
|
"owned_by": {
|
||||||
|
"id": 1,
|
||||||
|
"name": "Admin"
|
||||||
|
},
|
||||||
"draft": false,
|
"draft": false,
|
||||||
"markdown": "",
|
"markdown": "",
|
||||||
"revision_count": 1,
|
"revision_count": 1,
|
||||||
|
|
|
@ -12,7 +12,8 @@
|
||||||
"created_at": "2019-05-05 21:49:58",
|
"created_at": "2019-05-05 21:49:58",
|
||||||
"updated_at": "2020-07-04 15:50:58",
|
"updated_at": "2020-07-04 15:50:58",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1
|
"updated_by": 1,
|
||||||
|
"owned_by": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
|
@ -26,7 +27,8 @@
|
||||||
"created_at": "2019-05-05 21:53:30",
|
"created_at": "2019-05-05 21:53:30",
|
||||||
"updated_at": "2019-06-06 12:03:04",
|
"updated_at": "2019-06-06 12:03:04",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1
|
"updated_by": 1,
|
||||||
|
"owned_by": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
|
@ -40,7 +42,8 @@
|
||||||
"created_at": "2019-05-05 21:53:49",
|
"created_at": "2019-05-05 21:53:49",
|
||||||
"updated_at": "2019-12-18 21:56:52",
|
"updated_at": "2019-12-18 21:56:52",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1
|
"updated_by": 1,
|
||||||
|
"owned_by": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"total": 322
|
"total": 322
|
||||||
|
|
|
@ -16,6 +16,10 @@
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Admin"
|
"name": "Admin"
|
||||||
},
|
},
|
||||||
|
"owned_by": {
|
||||||
|
"id": 1,
|
||||||
|
"name": "Admin"
|
||||||
|
},
|
||||||
"draft": false,
|
"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[](http://example.com/uploads/images/gallery/2020-04/yXSrubes.jpg)",
|
"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[](http://example.com/uploads/images/gallery/2020-04/yXSrubes.jpg)",
|
||||||
"revision_count": 5,
|
"revision_count": 5,
|
||||||
|
|
|
@ -16,6 +16,10 @@
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Admin"
|
"name": "Admin"
|
||||||
},
|
},
|
||||||
|
"owned_by": {
|
||||||
|
"id": 1,
|
||||||
|
"name": "Admin"
|
||||||
|
},
|
||||||
"draft": false,
|
"draft": false,
|
||||||
"markdown": "",
|
"markdown": "",
|
||||||
"revision_count": 5,
|
"revision_count": 5,
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
"description": "This is my shelf with some books",
|
"description": "This is my shelf with some books",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"slug": "my-shelf",
|
"slug": "my-shelf",
|
||||||
"updated_at": "2020-04-10 13:24:09",
|
"updated_at": "2020-04-10 13:24:09",
|
||||||
"created_at": "2020-04-10 13:24:09",
|
"created_at": "2020-04-10 13:24:09",
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
"updated_at": "2020-04-10 13:00:45",
|
"updated_at": "2020-04-10 13:00:45",
|
||||||
"created_by": 4,
|
"created_by": 4,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"image_id": 31
|
"image_id": 31
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -20,6 +21,7 @@
|
||||||
"updated_at": "2020-04-10 13:00:58",
|
"updated_at": "2020-04-10 13:00:58",
|
||||||
"created_by": 4,
|
"created_by": 4,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"image_id": 28
|
"image_id": 28
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -31,6 +33,7 @@
|
||||||
"updated_at": "2020-04-10 13:00:53",
|
"updated_at": "2020-04-10 13:00:53",
|
||||||
"created_by": 4,
|
"created_by": 4,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 4,
|
||||||
"image_id": 30
|
"image_id": 30
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Admin"
|
"name": "Admin"
|
||||||
},
|
},
|
||||||
|
"owned_by": {
|
||||||
|
"id": 1,
|
||||||
|
"name": "Admin"
|
||||||
|
},
|
||||||
"created_at": "2020-04-10 13:24:09",
|
"created_at": "2020-04-10 13:24:09",
|
||||||
"updated_at": "2020-04-10 13:31:04",
|
"updated_at": "2020-04-10 13:31:04",
|
||||||
"tags": [
|
"tags": [
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
"description": "This is my update shelf with some books",
|
"description": "This is my update shelf with some books",
|
||||||
"created_by": 1,
|
"created_by": 1,
|
||||||
"updated_by": 1,
|
"updated_by": 1,
|
||||||
|
"owned_by": 1,
|
||||||
"image_id": 501,
|
"image_id": 501,
|
||||||
"created_at": "2020-04-10 13:24:09",
|
"created_at": "2020-04-10 13:24:09",
|
||||||
"updated_at": "2020-04-10 13:48:22"
|
"updated_at": "2020-04-10 13:48:22"
|
||||||
|
|
|
@ -12,7 +12,7 @@ class PageEditor {
|
||||||
this.editorType = this.$opts.editorType;
|
this.editorType = this.$opts.editorType;
|
||||||
this.pageId = Number(this.$opts.pageId);
|
this.pageId = Number(this.$opts.pageId);
|
||||||
this.isNewDraft = this.$opts.pageNewDraft === 'true';
|
this.isNewDraft = this.$opts.pageNewDraft === 'true';
|
||||||
this.hasDefaultTitle = this.$opts.isDefaultTitle || false;
|
this.hasDefaultTitle = this.$opts.hasDefaultTitle || false;
|
||||||
|
|
||||||
// Elements
|
// Elements
|
||||||
this.container = this.$el;
|
this.container = this.$el;
|
||||||
|
@ -74,6 +74,7 @@ class PageEditor {
|
||||||
}
|
}
|
||||||
|
|
||||||
setInitialFocus() {
|
setInitialFocus() {
|
||||||
|
console.log({'HAS': this.hasDefaultTitle});
|
||||||
if (this.hasDefaultTitle) {
|
if (this.hasDefaultTitle) {
|
||||||
return this.titleElem.select();
|
return this.titleElem.select();
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,10 @@ class BooksApiTest extends TestCase
|
||||||
],
|
],
|
||||||
'updated_by' => [
|
'updated_by' => [
|
||||||
'name' => $book->createdBy->name,
|
'name' => $book->createdBy->name,
|
||||||
]
|
],
|
||||||
|
'owned_by' => [
|
||||||
|
'name' => $book->ownedBy->name
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,6 +106,9 @@ class ChaptersApiTest extends TestCase
|
||||||
'updated_by' => [
|
'updated_by' => [
|
||||||
'name' => $chapter->createdBy->name,
|
'name' => $chapter->createdBy->name,
|
||||||
],
|
],
|
||||||
|
'owned_by' => [
|
||||||
|
'name' => $chapter->ownedBy->name
|
||||||
|
],
|
||||||
'pages' => [
|
'pages' => [
|
||||||
[
|
[
|
||||||
'id' => $page->id,
|
'id' => $page->id,
|
||||||
|
|
|
@ -136,6 +136,9 @@ class PagesApiTest extends TestCase
|
||||||
'updated_by' => [
|
'updated_by' => [
|
||||||
'name' => $page->createdBy->name,
|
'name' => $page->createdBy->name,
|
||||||
],
|
],
|
||||||
|
'owned_by' => [
|
||||||
|
'name' => $page->ownedBy->name
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,10 @@ class ShelvesApiTest extends TestCase
|
||||||
],
|
],
|
||||||
'updated_by' => [
|
'updated_by' => [
|
||||||
'name' => $shelf->createdBy->name,
|
'name' => $shelf->createdBy->name,
|
||||||
]
|
],
|
||||||
|
'owned_by' => [
|
||||||
|
'name' => $shelf->ownedBy->name
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue