feat: Send all settings in their groups to frontend -> show tabs

This commit is contained in:
IceToast 2023-02-09 18:29:03 +01:00 committed by IceToast
parent a9619be8d0
commit e9fec445ff
2 changed files with 42 additions and 115 deletions

View file

@ -18,33 +18,24 @@ class SettingsController extends Controller
*/
public function index()
{
//Get all tabs as laravel view paths
$tabs = [];
if(file_exists(Theme::getViewPaths()[0] . '/admin/settings/tabs/')){
$tabspath = glob(Theme::getViewPaths()[0] . '/admin/settings/tabs/*.blade.php');
}else{
$tabspath = glob(Theme::path('views', 'default').'/admin/settings/tabs/*.blade.php');
}
foreach ($tabspath as $filename) {
$tabs[] = 'admin.settings.tabs.'.basename($filename, '.blade.php');
// get all other settings in app/Settings directory
// group items by file name like $categories
$settings = collect();
foreach (scandir(app_path('Settings')) as $file) {
if (in_array($file, ['.', '..'])) {
continue;
}
$className = 'App\\Settings\\' . str_replace('.php', '', $file);
$settings[str_replace('Settings.php', '', $file)] = (new $className())->toCollection()->all();
}
$settings->sort();
//Generate a html list item for each tab based on tabs file basename, set first tab as active
$tabListItems = [];
foreach ($tabs as $tab) {
$tabName = str_replace('admin.settings.tabs.', '', $tab);
$tabListItems[] = '<li class="nav-item">
<a class="nav-link '.(empty($tabListItems) ? 'active' : '').'" data-toggle="pill" href="#'.$tabName.'">
'.__(ucfirst($tabName)).'
</a></li>';
}
$themes = array_diff(scandir(base_path('themes')), array('..', '.'));
return view('admin.settings.index', [
'tabs' => $tabs,
'tabListItems' => $tabListItems,
'settings' => $settings->all(),
'themes' => $themes,
'active_theme' => Theme::active(),
]);

View file

@ -19,11 +19,12 @@
</div>
</section>
<!-- END CONTENT HEADER -->
@if(!file_exists(base_path()."/install.lock"))
@if (!file_exists(base_path() . '/install.lock'))
<div class="callout callout-danger">
<h4>{{ __('The installer is not locked!') }}</h4>
<p>{{ __('please create a file called "install.lock" in your dashboard Root directory. Otherwise no settings will be loaded!') }}</p>
<a href="/install?step=7"><button class="btn btn-outline-danger">{{__('or click here')}}</button></a>
<p>{{ __('please create a file called "install.lock" in your dashboard Root directory. Otherwise no settings will be loaded!') }}
</p>
<a href="/install?step=7"><button class="btn btn-outline-danger">{{ __('or click here') }}</button></a>
</div>
@endif
@ -37,98 +38,35 @@
</div>
</div>
<div class="card-body">
<aside class="d-flex" style="">
<div class="sidebar d-flex flex-column" style="height: fit-content">
<nav class="container">
<ul class="row nav nav-pills nav-sidebar flex-column" style="width: fit-content" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item col">
<a href="#general"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('General') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#system"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('System') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#mail"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Mail') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#discord"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Discord') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#invoices"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Invoices') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#locales"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Locales') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#pterodactyl"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Pterodactyl') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#referral"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Referral') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#servers"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Servers') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#tickets"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Tickets') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#users"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Users') }}</p>
</a>
</li>
<li class="nav-item col">
<a href="#website"
class="nav-link @if (Request::routeIs('home')) active @endif">
<p>{{ __('Website') }}</p>
</a>
</li>
</ul>
</nav>
</div>
<div class="d-flex justify-content-around w-100">
<div class="d-flex" style="height: fit-content;">
Ptero API
</div>
<div class="d-flex" style="height: fit-content;">
<input type="text" name="text" id="#general">
</div>
</div>
</aside>
<!-- Sidebar Menu -->
<nav class="mt-2 max-w-30">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
data-accordion="false">
@foreach ($settings as $key => $setting)
<li class="nav-item border-bottom-0">
<a href="#{{ $key }}" class="nav-link {{ $loop->first ? 'active' : '' }}"
data-toggle="tab">
<i class="nav-icon fas fa-cog"></i>
<p>
{{ $key }}
</p>
</a>
</li>
@endforeach
</ul>
</nav>
<!-- /.sidebar-menu -->
<!-- Content in $settings -->
<div class="tab-content">
@foreach ($settings as $key => $value)
<
@endforeach
</div>
</div>
</div>
</div>
</div>
@ -159,6 +97,4 @@
$('html,body').scrollTop(scrollmem);
});
</script>
@endsection