Skip to content

Commit

Permalink
Add menu level 3
Browse files Browse the repository at this point in the history
  • Loading branch information
ajifatur committed Jan 16, 2024
1 parent ea5ebc0 commit 5df861e
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 14 deletions.
1 change: 1 addition & 0 deletions resources/views/admin/menu-item/create.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@
valueProp: "name",
nameProp: "name"
});
Spandiv.Select2("select[name=parent]");
// Change Bootstrap Icons
$(document).on("change", "select[name=icon]", function() {
Expand Down
1 change: 1 addition & 0 deletions resources/views/admin/menu-item/edit.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@
valueProp: "name",
nameProp: "name"
});
Spandiv.Select2("select[name=parent]");
// Change Bootstrap Icons
$(document).on("change", "select[name=icon]", function() {
Expand Down
35 changes: 28 additions & 7 deletions resources/views/admin/menu/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,36 @@
@if(count($submenu_items_level_2) > 0)
<div class="list-group sortable" data-url="{{ route('admin.menu.item.sort') }}">
@foreach($submenu_items_level_2 as $submenu_item_level_2)
<div class="list-group-item d-flex justify-content-between align-items-center p-2" data-id="{{ $submenu_item_level_2->id }}">
<div>
<i class="{{ $submenu_item_level_2->icon }} me-1" data-bs-toggle="tooltip" title="{{ $submenu_item_level_2->name }}"></i>
<a href="{{ $submenu_item_level_2->route != '' ? is_array(json_decode($submenu_item_level_2->routeparams, true)) ? route($submenu_item_level_2->route, json_decode($submenu_item_level_2->routeparams, true)) : route($submenu_item_level_2->route) : '#' }}">{{ $submenu_item_level_2->name }}</a>
@php
$submenu_items_level_3 = $menu_header->items()->where('parent','=',$submenu_item_level_2->id)->orderBy('num_order','asc')->get();
@endphp
<div class="list-group-item p-2" data-id="{{ $submenu_item_level_2->id }}">
<div class="d-flex w-100 justify-content-between align-items-center mb-2">
<div>
<i class="{{ $submenu_item_level_2->icon }} me-1" data-bs-toggle="tooltip" title="{{ $submenu_item_level_2->name }}"></i>
<a href="{{ $submenu_item_level_2->route != '' ? is_array(json_decode($submenu_item_level_2->routeparams, true)) ? route($submenu_item_level_2->route, json_decode($submenu_item_level_2->routeparams, true)) : route($submenu_item_level_2->route) : '#' }}">{{ $submenu_item_level_2->name }}</a>
</div>
<div class="btn-group">
<a href="{{ route('admin.menu.item.edit', ['header_id' => $menu_header->id, 'item_id' => $submenu_item_level_2->id]) }}" class="btn btn-sm btn-outline-secondary" data-bs-toggle="tooltip" title="Edit Item"><i class="bi-pencil"></i></a>
<a href="#" class="btn btn-sm btn-outline-secondary btn-delete-menu-item" data-id="{{ $submenu_item_level_2->id }}" data-bs-toggle="tooltip" title="Hapus Item"><i class="bi-trash"></i></a>
</div>
</div>
<div class="btn-group">
<a href="{{ route('admin.menu.item.edit', ['header_id' => $menu_header->id, 'item_id' => $submenu_item_level_2->id]) }}" class="btn btn-sm btn-outline-secondary" data-bs-toggle="tooltip" title="Edit Item"><i class="bi-pencil"></i></a>
<a href="#" class="btn btn-sm btn-outline-secondary btn-delete-menu-item" data-id="{{ $submenu_item_level_2->id }}" data-bs-toggle="tooltip" title="Hapus Item"><i class="bi-trash"></i></a>
@if(count($submenu_items_level_3) > 0)
<div class="list-group sortable" data-url="{{ route('admin.menu.item.sort') }}">
@foreach($submenu_items_level_3 as $submenu_item_level_3)
<div class="list-group-item d-flex w-100 justify-content-between align-items-center p-2" data-id="{{ $submenu_item_level_3->id }}">
<div>
<i class="{{ $submenu_item_level_3->icon }} me-1" data-bs-toggle="tooltip" title="{{ $submenu_item_level_3->name }}"></i>
<a href="{{ $submenu_item_level_3->route != '' ? is_array(json_decode($submenu_item_level_3->routeparams, true)) ? route($submenu_item_level_3->route, json_decode($submenu_item_level_3->routeparams, true)) : route($submenu_item_level_3->route) : '#' }}">{{ $submenu_item_level_3->name }}</a>
</div>
<div class="btn-group">
<a href="{{ route('admin.menu.item.edit', ['header_id' => $menu_header->id, 'item_id' => $submenu_item_level_3->id]) }}" class="btn btn-sm btn-outline-secondary" data-bs-toggle="tooltip" title="Edit Item"><i class="bi-pencil"></i></a>
<a href="#" class="btn btn-sm btn-outline-secondary btn-delete-menu-item" data-id="{{ $submenu_item_level_3->id }}" data-bs-toggle="tooltip" title="Hapus Item"><i class="bi-trash"></i></a>
</div>
</div>
@endforeach
</div>
@endif
</div>
@endforeach
</div>
Expand Down
29 changes: 23 additions & 6 deletions resources/views/layouts/admin/_sidebar.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,29 @@
<i class="align-middle {{ $subitem['icon'] }}" style="font-size: 1rem;"></i> <span class="align-middle">{{ $subitem['name'] }}</span>
</a>
<ul id="sidebar-subitem-2-{{ $key2 }}-{{ $key3 }}" class="sidebar-dropdown list-unstyled collapse {{ eval_sidebar($subitem['active_conditions'], 'show') }}">
@foreach($subitem['children'] as $subitem_level_2)
<li class="sidebar-item {{ eval_sidebar($subitem_level_2['active_conditions'], 'active') }}">
<a class="sidebar-link" href="{{ $subitem_level_2['route'] }}">
<i class="align-middle {{ $subitem_level_2['icon'] }}" style="font-size: 1rem;"></i> <span class="align-middle">{{ $subitem_level_2['name'] }}</span>
</a>
</li>
@foreach($subitem['children'] as $key4=>$subitem_level_2)
@if(count($subitem_level_2['children']) > 0)
<li class="sidebar-item {{ eval_sidebar($subitem_level_2['active_conditions'], 'active') }}">
<a data-bs-target="#sidebar-subitem-3-{{ $key3 }}-{{ $key4 }}" data-bs-toggle="collapse" class="sidebar-link {{ eval_sidebar($subitem_level_2['active_conditions'], '', 'collapsed') }}">
<i class="align-middle {{ $subitem_level_2['icon'] }}" style="font-size: 1rem;"></i> <span class="align-middle">{{ $subitem_level_2['name'] }}</span>
</a>
<ul id="sidebar-subitem-3-{{ $key3 }}-{{ $key4 }}" class="sidebar-dropdown list-unstyled collapse {{ eval_sidebar($subitem_level_2['active_conditions'], 'show') }}">
@foreach($subitem_level_2['children'] as $subitem_level_3)
<li class="sidebar-item {{ eval_sidebar($subitem_level_3['active_conditions'], 'active') }}">
<a class="sidebar-link" href="{{ $subitem_level_3['route'] }}">
<i class="align-middle {{ $subitem_level_3['icon'] }}" style="font-size: 1rem;"></i> <span class="align-middle">{{ $subitem_level_3['name'] }}</span>
</a>
</li>
@endforeach
</ul>
</li>
@else
<li class="sidebar-item {{ eval_sidebar($subitem_level_2['active_conditions'], 'active') }}">
<a class="sidebar-link" href="{{ $subitem_level_2['route'] }}">
<i class="align-middle {{ $subitem_level_2['icon'] }}" style="font-size: 1rem;"></i> <span class="align-middle">{{ $subitem_level_2['name'] }}</span>
</a>
</li>
@endif
@endforeach
</ul>
</li>
Expand Down
19 changes: 18 additions & 1 deletion src/Helpers/Helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -197,13 +197,30 @@ function menu() {
$subitems_level_2 = [];
if(count($menusubitems_level_2) > 0) {
foreach($menusubitems_level_2 as $menusubitem_level_2) {
// Get menu subitems level 3
$menusubitems_level_3 = $menuheader->items()->where('parent','=',$menusubitem_level_2->id)->orderBy('num_order','asc')->get();
$subitems_level_3 = [];
if(count($menusubitems_level_3) > 0) {
foreach($menusubitems_level_3 as $menusubitem_level_3) {
// Push to array
array_push($subitems_level_3, [
'name' => $menusubitem_level_3->name,
'route' => $menusubitem_level_3->route != '' ? $menusubitem_level_3->routeparams != '' ? route($menusubitem_level_3->route, json_decode($menusubitem_level_3->routeparams, true)) : route($menusubitem_level_3->route) : '',
'icon' => $menusubitem_level_3->icon,
'visible_conditions' => $menusubitem_level_3->visible_conditions,
'active_conditions' => $menusubitem_level_3->active_conditions
]);
}
}

// Push to array
array_push($subitems_level_2, [
'name' => $menusubitem_level_2->name,
'route' => $menusubitem_level_2->route != '' ? $menusubitem_level_2->routeparams != '' ? route($menusubitem_level_2->route, json_decode($menusubitem_level_2->routeparams, true)) : route($menusubitem_level_2->route) : '',
'icon' => $menusubitem_level_2->icon,
'visible_conditions' => $menusubitem_level_2->visible_conditions,
'active_conditions' => $menusubitem_level_2->active_conditions
'active_conditions' => $menusubitem_level_2->active_conditions,
'children' => $subitems_level_3
]);
}
}
Expand Down

0 comments on commit 5df861e

Please sign in to comment.