Bläddra i källkod

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

IceToast 2 år sedan
förälder
incheckning
e9fec445ff

+ 11 - 20
app/Http/Controllers/Admin/SettingsController.php

@@ -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(),
         ]);

+ 31 - 95
themes/default/views/admin/settings/index.blade.php

@@ -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