Added base template convenience partials for theme system users

Included test to cover usage and paths.
Closes #894
This commit is contained in:
Dan Brown 2022-06-22 12:47:31 +01:00
parent 0d9b5a9d90
commit 8d8da31fdd
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
4 changed files with 28 additions and 1 deletions

View File

@ -33,6 +33,7 @@
</head> </head>
<body class="@yield('body-class')"> <body class="@yield('body-class')">
@include('layouts.parts.base-body-start')
@include('common.skip-to-content') @include('common.skip-to-content')
@include('common.notifications') @include('common.notifications')
@include('common.header') @include('common.header')
@ -53,5 +54,6 @@
<script src="{{ versioned_asset('dist/app.js') }}" nonce="{{ $cspNonce }}"></script> <script src="{{ versioned_asset('dist/app.js') }}" nonce="{{ $cspNonce }}"></script>
@yield('scripts') @yield('scripts')
@include('layouts.parts.base-body-end')
</body> </body>
</html> </html>

View File

@ -0,0 +1,2 @@
{{-- This is a placeholder template file provided as a --}}
{{-- convenience to users of the visual theme system. --}}

View File

@ -0,0 +1,2 @@
{{-- This is a placeholder template file provided as a --}}
{{-- convenience to users of the visual theme system. --}}

View File

@ -17,6 +17,7 @@ use Illuminate\Http\Response;
use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Str;
use League\CommonMark\ConfigurableEnvironmentInterface; use League\CommonMark\ConfigurableEnvironmentInterface;
class ThemeTest extends TestCase class ThemeTest extends TestCase
@ -254,6 +255,23 @@ class ThemeTest extends TestCase
$this->assertStringContainsString('Command ran!', $output); $this->assertStringContainsString('Command ran!', $output);
} }
public function test_body_start_and_end_template_files_can_be_used()
{
$bodyStartStr = 'barry-fought-against-the-panther';
$bodyEndStr = 'barry-lost-his-fight-with-grace';
$this->usingThemeFolder(function(string $folder) use ($bodyStartStr, $bodyEndStr) {
$viewDir = theme_path('layouts/parts');
mkdir($viewDir, 0777, true);
file_put_contents($viewDir . '/base-body-start.blade.php', $bodyStartStr);
file_put_contents($viewDir . '/base-body-end.blade.php', $bodyEndStr);
$resp = $this->asEditor()->get('/');
$resp->assertSee($bodyStartStr);
$resp->assertSee($bodyEndStr);
});
}
protected function usingThemeFolder(callable $callback) protected function usingThemeFolder(callable $callback)
{ {
// Create a folder and configure a theme // Create a folder and configure a theme
@ -262,7 +280,10 @@ class ThemeTest extends TestCase
$themeFolderPath = theme_path(''); $themeFolderPath = theme_path('');
File::makeDirectory($themeFolderPath); File::makeDirectory($themeFolderPath);
call_user_func($callback, $themeFolderName); // Run provided callback with theme env option set
$this->runWithEnv('APP_THEME', $themeFolderName, function() use ($callback, $themeFolderName) {
call_user_func($callback, $themeFolderName);
});
// Cleanup the custom theme folder we created // Cleanup the custom theme folder we created
File::deleteDirectory($themeFolderPath); File::deleteDirectory($themeFolderPath);