Default chapter templates: Updated api docs and tests

Also applied minor tweaks to some wording and logic.

During review of #4750
This commit is contained in:
Dan Brown 2024-02-01 12:22:16 +00:00
parent 4a8f70240f
commit 4137cf9c8f
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
10 changed files with 46 additions and 40 deletions

View File

@ -61,6 +61,8 @@ class ListingResponseBuilder
}
});
dd($data->first());
return response()->json([
'data' => $data,
'total' => $total,

View File

@ -136,13 +136,7 @@ class PageRepo
$page->book_id = $parent->id;
}
// check for chapter
if ($page->chapter_id) {
$defaultTemplate = $page->chapter->defaultTemplate;
} else {
$defaultTemplate = $page->book->defaultTemplate;
}
$defaultTemplate = $page->chapter->defaultTemplate ?? $page->book->defaultTemplate;
if ($defaultTemplate && userCan('view', $defaultTemplate)) {
$page->forceFill([
'html' => $defaultTemplate->html,

View File

@ -1,32 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddDefaultTemplateToChapters extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('chapters', function (Blueprint $table) {
$table->integer('default_template_id')->nullable()->default(null);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('chapters', function (Blueprint $table) {
$table->dropColumn('default_template_id');
});
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddDefaultTemplateToChapters extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('chapters', function (Blueprint $table) {
$table->integer('default_template_id')->nullable()->default(null);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('chapters', function (Blueprint $table) {
$table->dropColumn('default_template_id');
});
}
}

View File

@ -3,6 +3,7 @@
"name": "My fantastic new chapter",
"description_html": "<p>This is a <strong>great new chapter</strong> that I've created via the API</p>",
"priority": 15,
"default_template_id": 25,
"tags": [
{"name": "Category", "value": "Top Content"},
{"name": "Rating", "value": "Highest"}

View File

@ -3,6 +3,7 @@
"name": "My fantastic updated chapter",
"description_html": "<p>This is an <strong>updated chapter</strong> that I've altered via the API</p>",
"priority": 16,
"default_template_id": 2428,
"tags": [
{"name": "Category", "value": "Kinda Good Content"},
{"name": "Rating", "value": "Medium"}

View File

@ -11,6 +11,7 @@
"updated_by": 1,
"owned_by": 1,
"description_html": "<p>This is a <strong>great new chapter<\/strong> that I've created via the API<\/p>",
"default_template_id": 25,
"tags": [
{
"name": "Category",

View File

@ -5,6 +5,7 @@
"name": "Content Creation",
"description": "How to create documentation on whatever subject you need to write about.",
"description_html": "<p>How to create <strong>documentation</strong> on whatever subject you need to write about.</p>",
"default_template_id": 25,
"priority": 3,
"created_at": "2019-05-05T21:49:56.000000Z",
"updated_at": "2019-09-28T11:24:23.000000Z",

View File

@ -11,6 +11,7 @@
"updated_by": 1,
"owned_by": 1,
"description_html": "<p>This is an <strong>updated chapter<\/strong> that I've altered via the API<\/p>",
"default_template_id": 2428,
"tags": [
{
"name": "Category",

View File

@ -40,7 +40,7 @@ return [
'export_text' => 'Plain Text File',
'export_md' => 'Markdown File',
'default_template' => 'Default Page Template',
'default_template_explain' => 'Assign a page template that will be used as the default content for all new pages in this book/chapter. Keep in mind this will only be used if the page creator has view access to those chosen template page.',
'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
'default_template_select' => 'Select a template page',
// Permissions and restrictions

View File

@ -35,6 +35,7 @@ class ChaptersApiTest extends TestCase
{
$this->actingAsApiEditor();
$book = $this->entities->book();
$templatePage = $this->entities->templatePage();
$details = [
'name' => 'My API chapter',
'description' => 'A chapter created via the API',
@ -46,6 +47,7 @@ class ChaptersApiTest extends TestCase
],
],
'priority' => 15,
'default_template_id' => $templatePage->id,
];
$resp = $this->postJson($this->baseEndpoint, $details);
@ -147,6 +149,7 @@ class ChaptersApiTest extends TestCase
'name' => $page->name,
],
],
'default_template_id' => null,
]);
$resp->assertJsonCount($chapter->pages()->count(), 'pages');
}
@ -155,6 +158,7 @@ class ChaptersApiTest extends TestCase
{
$this->actingAsApiEditor();
$chapter = $this->entities->chapter();
$templatePage = $this->entities->templatePage();
$details = [
'name' => 'My updated API chapter',
'description' => 'A chapter updated via the API',
@ -165,6 +169,7 @@ class ChaptersApiTest extends TestCase
],
],
'priority' => 15,
'default_template_id' => $templatePage->id,
];
$resp = $this->putJson($this->baseEndpoint . "/{$chapter->id}", $details);