Include libraries based on block configuration

This commit is contained in:
Julian Prieber 2024-09-23 12:53:08 +02:00
parent 39ac5bc80e
commit 9806afe60f
4 changed files with 62 additions and 1 deletions

View File

@ -249,6 +249,12 @@ class UserController extends Controller
// Add $linkType->ignore_container to the $customParams array
$customParams['ignore_container'] = $linkType->ignore_container;
}
// Check if $linkType->include_libraries is defined and not null
if (isset($linkType->include_libraries)) {
// Add $linkType->include_libraries to the $customParams array
$customParams['include_libraries'] = $linkType->include_libraries;
}
$filteredLinkData['type_params'] = json_encode($customParams);

View File

@ -8,7 +8,7 @@ use Illuminate\Filesystem\Filesystem;
class LinkType extends Model
{
protected $fillable = ['id', 'typename', 'title', 'description', 'icon', 'custom_html', 'ignore_container'];
protected $fillable = ['id', 'typename', 'title', 'description', 'icon', 'custom_html', 'ignore_container', 'include_libraries'];
// Assuming no database interaction, we can disable timestamps
public $timestamps = false;
@ -33,6 +33,7 @@ class LinkType extends Model
'icon' => 'bi bi-boxes',
'custom_html' => false,
'ignore_container' => false,
'include_libraries' => [],
]);
$linkTypes->prepend($predefinedLinkType);
@ -51,6 +52,7 @@ class LinkType extends Model
'icon' => $configData['icon'] ?? null,
'custom_html' => $configData['custom_html'] ?? false,
'ignore_container' => $configData['ignore_container'] ?? false,
'include_libraries' => $configData['include_libraries'] ?? [],
]);
$linkTypes->push($linkType);
}

View File

@ -4,6 +4,8 @@
$initial = 1;
@endphp
@include('linkstack.modules.block-libraries', ['links' => $links])
@foreach($links as $link)
@if(isset($link->custom_html) && $link->custom_html)
@if(isset($link->ignore_container) && $link->ignore_container)

View File

@ -0,0 +1,51 @@
@php
$librariesToInclude = [];
@endphp
@foreach($links as $link)
@if(isset($link->custom_html) && isset($link->include_libraries) && $link->custom_html && is_array($link->include_libraries))
@foreach($link->include_libraries as $library => $include)
@if($include)
@php
$librariesToInclude[$library] = true;
@endphp
@endif
@endforeach
@endif
@endforeach
@foreach($librariesToInclude as $library => $include)
@switch($library)
@case('jquery')
@once
@push('linkstack-head')
<script src="{{ asset('assets/external-dependencies/jquery-3.4.1.min.js') }}"></script>
@endpush
@endonce
@break
@case('sweetalert')
@once
@push('linkstack-head')
<script src="{{ asset('assets/external-dependencies/sweetalert2.min.js') }}"></script>
@endpush
@endonce
@break
@endswitch
@endforeach
@php /* For debugging purposes, you can add a script to the end of the body that logs the inclusion of each library: */ @endphp
{{-- @push('linkstack-body-end')
<script>
function logAssetInclusion(library) {
console.log(library + ' has been included.');
}
@foreach($librariesToInclude as $library => $include)
logAssetInclusion('{{ ucfirst($library) }}');
@endforeach
</script>
@endpush --}}