feat: ✨ Send all settings in their groups to frontend -> show tabs
This commit is contained in:
parent
a9619be8d0
commit
e9fec445ff
|
@ -18,33 +18,24 @@ class SettingsController extends Controller
|
||||||
*/
|
*/
|
||||||
public function index()
|
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) {
|
// get all other settings in app/Settings directory
|
||||||
$tabs[] = 'admin.settings.tabs.'.basename($filename, '.blade.php');
|
// 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('..', '.'));
|
$themes = array_diff(scandir(base_path('themes')), array('..', '.'));
|
||||||
|
|
||||||
return view('admin.settings.index', [
|
return view('admin.settings.index', [
|
||||||
'tabs' => $tabs,
|
'settings' => $settings->all(),
|
||||||
'tabListItems' => $tabListItems,
|
|
||||||
'themes' => $themes,
|
'themes' => $themes,
|
||||||
'active_theme' => Theme::active(),
|
'active_theme' => Theme::active(),
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -19,11 +19,12 @@
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<!-- END CONTENT HEADER -->
|
<!-- END CONTENT HEADER -->
|
||||||
@if(!file_exists(base_path()."/install.lock"))
|
@if (!file_exists(base_path() . '/install.lock'))
|
||||||
<div class="callout callout-danger">
|
<div class="callout callout-danger">
|
||||||
<h4>{{ __('The installer is not locked!') }}</h4>
|
<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>
|
<p>{{ __('please create a file called "install.lock" in your dashboard Root directory. Otherwise no settings will be loaded!') }}
|
||||||
<a href="/install?step=7"><button class="btn btn-outline-danger">{{__('or click here')}}</button></a>
|
</p>
|
||||||
|
<a href="/install?step=7"><button class="btn btn-outline-danger">{{ __('or click here') }}</button></a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
|
@ -37,98 +38,35 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<aside class="d-flex" style="">
|
<!-- Sidebar Menu -->
|
||||||
<div class="sidebar d-flex flex-column" style="height: fit-content">
|
<nav class="mt-2 max-w-30">
|
||||||
<nav class="container">
|
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
|
||||||
<ul class="row nav nav-pills nav-sidebar flex-column" style="width: fit-content" data-widget="treeview" role="menu" data-accordion="false">
|
data-accordion="false">
|
||||||
<li class="nav-item col">
|
@foreach ($settings as $key => $setting)
|
||||||
<a href="#general"
|
<li class="nav-item border-bottom-0">
|
||||||
class="nav-link @if (Request::routeIs('home')) active @endif">
|
<a href="#{{ $key }}" class="nav-link {{ $loop->first ? 'active' : '' }}"
|
||||||
<p>{{ __('General') }}</p>
|
data-toggle="tab">
|
||||||
</a>
|
<i class="nav-icon fas fa-cog"></i>
|
||||||
</li>
|
<p>
|
||||||
<li class="nav-item col">
|
{{ $key }}
|
||||||
<a href="#system"
|
</p>
|
||||||
class="nav-link @if (Request::routeIs('home')) active @endif">
|
</a>
|
||||||
<p>{{ __('System') }}</p>
|
</li>
|
||||||
</a>
|
@endforeach
|
||||||
</li>
|
</ul>
|
||||||
<li class="nav-item col">
|
</nav>
|
||||||
<a href="#mail"
|
<!-- /.sidebar-menu -->
|
||||||
class="nav-link @if (Request::routeIs('home')) active @endif">
|
<!-- Content in $settings -->
|
||||||
<p>{{ __('Mail') }}</p>
|
<div class="tab-content">
|
||||||
</a>
|
|
||||||
</li>
|
@foreach ($settings as $key => $value)
|
||||||
<li class="nav-item col">
|
<
|
||||||
<a href="#discord"
|
|
||||||
class="nav-link @if (Request::routeIs('home')) active @endif">
|
@endforeach
|
||||||
<p>{{ __('Discord') }}</p>
|
|
||||||
</a>
|
</div>
|
||||||
</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>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -159,6 +97,4 @@
|
||||||
$('html,body').scrollTop(scrollmem);
|
$('html,body').scrollTop(scrollmem);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
|
Loading…
Reference in a new issue