Skip to content

Commit 9806afe

Browse files
committed
Include libraries based on block configuration
1 parent 39ac5bc commit 9806afe

File tree

4 files changed

+62
-1
lines changed

4 files changed

+62
-1
lines changed

app/Http/Controllers/UserController.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,12 @@ public function saveLink(Request $request)
249249
// Add $linkType->ignore_container to the $customParams array
250250
$customParams['ignore_container'] = $linkType->ignore_container;
251251
}
252+
253+
// Check if $linkType->include_libraries is defined and not null
254+
if (isset($linkType->include_libraries)) {
255+
// Add $linkType->include_libraries to the $customParams array
256+
$customParams['include_libraries'] = $linkType->include_libraries;
257+
}
252258

253259
$filteredLinkData['type_params'] = json_encode($customParams);
254260

app/Models/LinkType.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
class LinkType extends Model
1010
{
11-
protected $fillable = ['id', 'typename', 'title', 'description', 'icon', 'custom_html', 'ignore_container'];
11+
protected $fillable = ['id', 'typename', 'title', 'description', 'icon', 'custom_html', 'ignore_container', 'include_libraries'];
1212

1313
// Assuming no database interaction, we can disable timestamps
1414
public $timestamps = false;
@@ -33,6 +33,7 @@ public static function get()
3333
'icon' => 'bi bi-boxes',
3434
'custom_html' => false,
3535
'ignore_container' => false,
36+
'include_libraries' => [],
3637
]);
3738

3839
$linkTypes->prepend($predefinedLinkType);
@@ -51,6 +52,7 @@ public static function get()
5152
'icon' => $configData['icon'] ?? null,
5253
'custom_html' => $configData['custom_html'] ?? false,
5354
'ignore_container' => $configData['ignore_container'] ?? false,
55+
'include_libraries' => $configData['include_libraries'] ?? [],
5456
]);
5557
$linkTypes->push($linkType);
5658
}

resources/views/linkstack/elements/buttons.blade.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
$initial = 1;
55
@endphp
66

7+
@include('linkstack.modules.block-libraries', ['links' => $links])
8+
79
@foreach($links as $link)
810
@if(isset($link->custom_html) && $link->custom_html)
911
@if(isset($link->ignore_container) && $link->ignore_container)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
@php
2+
$librariesToInclude = [];
3+
@endphp
4+
5+
@foreach($links as $link)
6+
@if(isset($link->custom_html) && isset($link->include_libraries) && $link->custom_html && is_array($link->include_libraries))
7+
@foreach($link->include_libraries as $library => $include)
8+
@if($include)
9+
@php
10+
$librariesToInclude[$library] = true;
11+
@endphp
12+
@endif
13+
@endforeach
14+
@endif
15+
@endforeach
16+
17+
@foreach($librariesToInclude as $library => $include)
18+
@switch($library)
19+
20+
@case('jquery')
21+
@once
22+
@push('linkstack-head')
23+
<script src="{{ asset('assets/external-dependencies/jquery-3.4.1.min.js') }}"></script>
24+
@endpush
25+
@endonce
26+
@break
27+
28+
@case('sweetalert')
29+
@once
30+
@push('linkstack-head')
31+
<script src="{{ asset('assets/external-dependencies/sweetalert2.min.js') }}"></script>
32+
@endpush
33+
@endonce
34+
@break
35+
36+
@endswitch
37+
@endforeach
38+
39+
40+
@php /* For debugging purposes, you can add a script to the end of the body that logs the inclusion of each library: */ @endphp
41+
{{-- @push('linkstack-body-end')
42+
<script>
43+
function logAssetInclusion(library) {
44+
console.log(library + ' has been included.');
45+
}
46+
47+
@foreach($librariesToInclude as $library => $include)
48+
logAssetInclusion('{{ ucfirst($library) }}');
49+
@endforeach
50+
</script>
51+
@endpush --}}

0 commit comments

Comments
 (0)